diff options
| author | John Wilbert M. Villamor <lameguy64@gmail.com> | 2020-04-24 19:01:28 +0800 |
|---|---|---|
| committer | John Wilbert M. Villamor <lameguy64@gmail.com> | 2020-04-24 19:01:28 +0800 |
| commit | 1aa0e17df7c325a41de8cf8a57f52ed853f08bf3 (patch) | |
| tree | 5ec7f69ca0104f2b0a41e2ee7d3cb0cf0c9c54c5 /examples/cartrom/parse.inc | |
| parent | e82da2abe4c264d4b48a48d79cf9b8e4c4fb8ab6 (diff) | |
| download | psn00bsdk-1aa0e17df7c325a41de8cf8a57f52ed853f08bf3.tar.gz | |
Refined toolchain instructions, organized examples, added automatic retry for CdRead(), added FIOCSCAN ioctl in psxsio TTY driver, added tty and console examples.
Diffstat (limited to 'examples/cartrom/parse.inc')
| -rw-r--r-- | examples/cartrom/parse.inc | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/examples/cartrom/parse.inc b/examples/cartrom/parse.inc deleted file mode 100644 index b1190f7..0000000 --- a/examples/cartrom/parse.inc +++ /dev/null @@ -1,113 +0,0 @@ -# Skips spaces and equal signs (used by CNF parser) -skipspace: - # a0 - Input string - # Return: v0 - Address to first non-space character. - lbu $v1, 0($a0) - nop - beq $v1, ' ', .skip - nop - beq $v1, '=', .skip - nop - jr $ra - move $v0, $a0 -.skip: - b skipspace - addiu $a0, 1 - - -# Copies a string until a CR/LF or space is encountered -getline: - # a0 - Output address - # a1 - String to copy from - lbu $v0, 0($a1) - addiu $a1, 1 - beqz $v0, .end - nop - beq $v0, 0x0D, .end - nop - beq $v0, 0x0A, .end - nop - beq $v0, ' ', .end - nop - sb $v0, 0($a0) - b getline - addiu $a0, 1 -.end: - jr $ra - sb $0, 0($a0) - - -# strcasestr implementation -strcasestr: - # a0 - String to search - # a1 - String to find - addiu $sp, -24 - sw $ra, 0($sp) - sw $s0, 4($sp) - sw $s1, 8($sp) - sw $a1, 16($sp) - -.scan_start: - - sw $a0, 12($sp) - -.comp_loop: - - lbu $s0, 0($a0) # Load character from A and B - lbu $s1, 0($a1) - - beqz $s0, .end_strcasestr - nop - beqz $s1, .found - nop - - sw $a0, 20($sp) # Save a0 parameter - - jal toupper # tolower character A - move $a0, $s0 - move $s0, $v0 - - jal toupper # tolower character B - move $a0, $s1 - move $s1, $v0 - - lw $a0, 20($sp) # Restore a0 parameter - - addiu $a1, 1 - addiu $a0, 1 - - beq $s0, $s1, .comp_loop # If value matches continue compare - nop - -.end_strcasestr: - - lw $a0, 12($sp) # Rescan from next character of string A - lw $a1, 16($sp) - addiu $a0, 1 - - lbu $v0, 0($a0) - nop - beqz $v0, .not_found # If terminator is reached, string is not found - nop - - b .scan_start - nop - -.not_found: - - b .quit - move $v0, $0 - -.found: - - lw $v0, 12($sp) # Return address of string match - -.quit: - - lw $ra, 0($sp) - lw $s0, 4($sp) - lw $s1, 8($sp) - jr $ra - addiu $sp, 24 - - |
