123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260 |
- ## Copyright (C) 2016 Jeremiah Orians
- ## This file is part of stage0.
- ##
- ## stage0 is free software: you can redistribute it and/or modify
- ## it under the terms of the GNU General Public License as published by
- ## the Free Software Foundation, either version 3 of the License, or
- ## (at your option) any later version.
- ##
- ## stage0 is distributed in the hope that it will be useful,
- ## but WITHOUT ANY WARRANTY; without even the implied warranty of
- ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- ## GNU General Public License for more details.
- ##
- ## You should have received a copy of the GNU General Public License
- ## along with stage0. If not, see <http://www.gnu.org/licenses/>.
- #Registers
- DEFINE R0 0
- DEFINE R1 1
- DEFINE R2 2
- DEFINE R3 3
- DEFINE R4 4
- DEFINE R5 5
- DEFINE R6 6
- DEFINE R7 7
- DEFINE R8 8
- DEFINE R9 9
- DEFINE R10 A
- DEFINE R11 B
- DEFINE R12 C
- DEFINE R13 D
- DEFINE R14 E
- DEFINE R15 F
- # 4OP Integer Group
- DEFINE ADD.CI 0100
- DEFINE ADD.CO 0101
- DEFINE ADD.CIO 0102
- DEFINE ADDU.CI 0103
- DEFINE ADDU.CO 0104
- DEFINE ADDU.CIO 0105
- DEFINE SUB.BI 0106
- DEFINE SUB.BO 0107
- DEFINE SUB.BIO 0108
- DEFINE SUBU.BI 0109
- DEFINE SUBU.BO 010A
- DEFINE SUBU.BIO 010B
- DEFINE MULTIPLY 010C
- DEFINE MULTIPLYU 010D
- DEFINE DIVIDE 010E
- DEFINE DIVIDEU 010F
- DEFINE MUX 0110
- DEFINE NMUX 0111
- DEFINE SORT 0112
- DEFINE SORTU 0113
- # 3OP Integer Group
- DEFINE ADD 05000
- DEFINE ADDU 05001
- DEFINE SUB 05002
- DEFINE SUBU 05003
- DEFINE CMP 05004
- DEFINE CMPU 05005
- DEFINE MUL 05006
- DEFINE MULH 05007
- DEFINE MULU 05008
- DEFINE MULUH 05009
- DEFINE DIV 0500A
- DEFINE MOD 0500B
- DEFINE DIVU 0500C
- DEFINE MODU 0500D
- DEFINE MAX 05010
- DEFINE MAXU 05011
- DEFINE MIN 05012
- DEFINE MINU 05013
- DEFINE AND 05020
- DEFINE OR 05021
- DEFINE XOR 05022
- DEFINE NAND 05023
- DEFINE NOR 05024
- DEFINE XNOR 05025
- DEFINE MPQ 05026
- DEFINE LPQ 05027
- DEFINE CPQ 05028
- DEFINE BPQ 05029
- DEFINE SAL 05030
- DEFINE SAR 05031
- DEFINE SL0 05032
- DEFINE SR0 05033
- DEFINE SL1 05034
- DEFINE SR1 05035
- DEFINE ROL 05036
- DEFINE ROR 05037
- DEFINE LOADX 05038
- DEFINE LOADX8 05039
- DEFINE LOADXU8 0503A
- DEFINE LOADX16 0503B
- DEFINE LOADXU16 0503C
- DEFINE LOADX32 0503D
- DEFINE LOADXU32 0503E
- DEFINE STOREX 05048
- DEFINE STOREX8 05049
- DEFINE STOREX16 0504A
- DEFINE STOREX32 0504B
- DEFINE CMPJUMP.G 05050
- DEFINE CMPJUMP.GE 05051
- DEFINE CMPJUMP.E 05052
- DEFINE CMPJUMP.NE 05053
- DEFINE CMPJUMP.LE 05054
- DEFINE CMPJUMP.L 05055
- DEFINE CMPJUMPU.G 05060
- DEFINE CMPJUMPU.GE 05061
- DEFINE CMPJUMPU.LE 05064
- DEFINE CMPJUMPU.L 05065
- # 2OP Integer Group
- DEFINE NEG 090000
- DEFINE ABS 090001
- DEFINE NABS 090002
- DEFINE SWAP 090003
- DEFINE COPY 090004
- DEFINE MOVE 090005
- DEFINE NOT 090006
- DEFINE BRANCH 090100
- DEFINE CALL 090101
- DEFINE PUSHR 090200
- DEFINE PUSH8 090201
- DEFINE PUSH16 090202
- DEFINE PUSH32 090203
- DEFINE POPR 090280
- DEFINE POP8 090281
- DEFINE POPU8 090282
- DEFINE POP16 090283
- DEFINE POPU16 090284
- DEFINE POP32 090285
- DEFINE POPU32 090286
- DEFINE CMPSKIP.G 090300
- DEFINE CMPSKIP.GE 090301
- DEFINE CMPSKIP.E 090302
- DEFINE CMPSKIP.NE 090303
- DEFINE CMPSKIP.LE 090304
- DEFINE CMPSKIP.L 090305
- DEFINE CMPSKIPU.G 090380
- DEFINE CMPSKIPU.GE 090381
- DEFINE CMPSKIPU.LE 090384
- DEFINE CMPSKIPU.L 090385
- # 1OP Group
- DEFINE READPC 0D00000
- DEFINE READSCID 0D00001
- DEFINE FALSE 0D00002
- DEFINE TRUE 0D00003
- DEFINE JSR_COROUTINE 0D01000
- DEFINE RET 0D01001
- DEFINE PUSHPC 0D02000
- DEFINE POPPC 0D02001
- # 2OPI Group
- DEFINE SET.G E10000
- DEFINE SET.GE E10001
- DEFINE SET.E E10002
- DEFINE SET.NE E10003
- DEFINE SET.LE E10004
- DEFINE SET.L E10005
- DEFINE ADDI E1000E
- DEFINE ADDUI E1000F
- DEFINE SUBI E10010
- DEFINE SUBUI E10011
- DEFINE CMPI E10012
- DEFINE LOAD E10013
- DEFINE LOAD8 E10014
- DEFINE LOADU8 E10015
- DEFINE LOAD16 E10016
- DEFINE LOADU16 E10017
- DEFINE LOAD32 E10018
- DEFINE LOADU32 E10019
- DEFINE CMPUI E1001F
- DEFINE STORE E10020
- DEFINE STORE8 E10021
- DEFINE STORE16 E10022
- DEFINE STORE32 E10023
- DEFINE ANDI E100B0
- DEFINE ORI E100B1
- DEFINE XORI E100B2
- DEFINE NANDI E100B3
- DEFINE NORI E100B4
- DEFINE XNORI E100B5
- DEFINE CMPJUMPI.G E100C0
- DEFINE CMPJUMPI.GE E100C1
- DEFINE CMPJUMPI.E E100C2
- DEFINE CMPJUMPI.NE E100C3
- DEFINE CMPJUMPI.LE E100C4
- DEFINE CMPJUMPI.L E100C5
- DEFINE CMPJUMPUI.G E100D0
- DEFINE CMPJUMPUI.GE E100D1
- DEFINE CMPJUMPUI.LE E100D4
- DEFINE CMPJUMPUI.L E100D5
- # 1OPI Group
- DEFINE JUMP.C E0002C0
- DEFINE JUMP.B E0002C1
- DEFINE JUMP.O E0002C2
- DEFINE JUMP.G E0002C3
- DEFINE JUMP.GE E0002C4
- DEFINE JUMP.E E0002C5
- DEFINE JUMP.NE E0002C6
- DEFINE JUMP.LE E0002C7
- DEFINE JUMP.L E0002C8
- DEFINE JUMP.Z E0002C9
- DEFINE JUMP.NZ E0002CA
- DEFINE JUMP.P E0002CB
- DEFINE JUMP.NP E0002CC
- DEFINE CALLI E0002D0
- DEFINE LOADI E0002D1
- DEFINE LOADUI E0002D2
- DEFINE SALI E0002D3
- DEFINE SARI E0002D4
- DEFINE SL0I E0002D5
- DEFINE SR0I E0002D6
- DEFINE SL1I E0002D7
- DEFINE SR1I E0002D8
- DEFINE LOADR E0002E0
- DEFINE LOADR8 E0002E1
- DEFINE LOADRU8 E0002E2
- DEFINE LOADR16 E0002E3
- DEFINE LOADRU16 E0002E4
- DEFINE LOADR32 E0002E5
- DEFINE LOADRU32 E0002E6
- DEFINE STORER E0002F0
- DEFINE STORER8 E0002F1
- DEFINE STORER16 E0002F2
- DEFINE STORER32 E0002F3
- DEFINE CMPSKIPI.G E000A00
- DEFINE CMPSKIPI.GE E000A01
- DEFINE CMPSKIPI.E E000A02
- DEFINE CMPSKIPI.NE E000A03
- DEFINE CMPSKIPI.LE E000A04
- DEFINE CMPSKIPI.L E000A05
- DEFINE CMPSKIPUI.G E000A10
- DEFINE CMPSKIPUI.GE E000A11
- DEFINE CMPSKIPUI.LE E000A14
- DEFINE CMPSKIPUI.L E000A15
- # 0OPI Group
- DEFINE JUMP 3C00
- # HALCODE Group
- DEFINE FOPEN_READ 42100000
- DEFINE FOPEN_WRITE 42100001
- DEFINE FCLOSE 42100002
- DEFINE REWIND 42100003
- DEFINE FSEEK 42100004
- DEFINE FGETC 42100100
- DEFINE FPUTC 42100200
- DEFINE HAL_MEM 42110000
- # 0OP Group
- DEFINE NULL 00000000
- DEFINE HALT FFFFFFFF
|