1 /* 2 * Abuse - dark 2D side-scrolling platform game 3 * Copyright (c) 2005-2011 Sam Hocevar <sam@hocevar.net> 4 * 5 * This software was released into the Public Domain. As with most public 6 * domain software, no warranty is made or implied by Sam Hocevar. 7 */ 8 9 struct func 10 { 11 char const *name; 12 short min_args, max_args; 13 }; 14 15 /* select, digistr, load-file are not common lisp functions! */ 16 17 struct func sys_funcs[] = 18 { 19 { "print", 1, -1 }, /* 0 */ 20 { "car", 1, 1 }, /* 1 */ 21 { "cdr", 1, 1 }, /* 2 */ 22 { "length", 0, -1 }, /* 3 */ 23 { "list", 0, -1 }, /* 4 */ 24 { "cons", 2, 2 }, /* 5 */ 25 { "quote", 1, 1 }, /* 6 */ 26 { "eq", 2, 2 }, /* 7 */ 27 { "+", 0, -1 }, /* 8 */ 28 { "-", 1, -1 }, /* 9 */ 29 { "if", 2, 3 }, /* 10 */ 30 { "setf", 2, 2 }, /* 11 */ 31 { "symbol-list", 0, 0 }, /* 12 */ 32 { "assoc", 2, 2 }, /* 13 */ 33 { "null", 1, 1 }, /* 14 */ 34 { "acons", 2, 2 }, /* 15 */ 35 { "pairlis", 2, 2 }, /* 16 */ 36 { "let", 1, -1 }, /* 17 */ 37 { "defun", 2, -1 }, /* 18 */ 38 { "atom", 1, 1 }, /* 19 */ 39 { "not", 1, 1 }, /* 20 */ 40 { "and", -1, -1 }, /* 21 */ 41 { "or", -1, -1 }, /* 22 */ 42 { "progn", -1, -1 }, /* 23 */ 43 { "equal", 2, 2 }, /* 24 */ 44 { "concatenate", 1, -1 }, /* 25 */ 45 { "char-code", 1, 1 }, /* 26 */ 46 { "code-char", 1, 1 }, /* 27 */ 47 { "*", -1, -1 }, /* 28 */ 48 { "/", 1, -1 }, /* 29 */ 49 { "cond", -1, -1 }, /* 30 */ 50 { "select", 1, -1 }, /* 31 */ 51 { "function", 1, 1 }, /* 32 */ 52 { "mapcar", 2, -1 }, /* 33 */ 53 { "funcall", 1, -1 }, /* 34 */ 54 { ">", 2, 2 }, /* 35 */ 55 { "<", 2, 2 }, /* 36 */ 56 { "tmp-space", 0, 0 }, /* 37 */ 57 { "perm-space", 0, 0 }, /* 38 */ 58 { "symbol-name", 1, 1 }, /* 39 */ 59 { "trace", 0, -1 }, /* 40 */ 60 { "untrace", 0, -1 }, /* 41 */ 61 { "digstr", 2, 2 }, /* 42 */ 62 { "compile-file", 1, 1 }, /* 43 */ 63 { "abs", 1, 1 }, /* 44 */ 64 { "min", 2, 2 }, /* 45 */ 65 { "max", 2, 2 }, /* 46 */ 66 { ">=", 2, 2 }, /* 47 */ 67 { "<=", 2, 2 }, /* 48 */ 68 { "backquote", 1, 1 }, /* 49 */ 69 { "comma", 1, 1 }, /* 50 */ 70 { "nth", 2, 2 }, /* 51 */ 71 { "resize-tmp", 1, 1 }, /* 52 */ 72 { "resize-perm", 1, 1 }, /* 53 */ 73 { "cos", 1, 1 }, /* 54 */ 74 { "sin", 1, 1 }, /* 55 */ 75 { "atan2", 2, 2 }, /* 56 */ 76 { "enum", 1, -1 }, /* 57 */ 77 { "quit", 0, 0 }, /* 58 */ 78 { "eval", 1, 1 }, /* 59 */ 79 { "break", 0, 0 }, /* 60 */ 80 { "mod", 2, 2 }, /* 61 */ 81 { "write_profile", 1, 1 }, /* 62 */ 82 { "setq", 2, 2 }, /* 63 */ 83 { "for", 4, -1 }, /* 64 */ 84 { "open_file", 2, -1 }, /* 65 */ 85 { "load", 1, 1 }, /* 66 */ 86 { "bit-and", 1, -1 }, /* 67 */ 87 { "bit-or", 1, -1 }, /* 68 */ 88 { "bit-xor", 1, -1 }, /* 69 */ 89 { "make-array", 1, -1 }, /* 70 */ 90 { "aref", 2, 2 }, /* 71 */ 91 { "if-1progn", 2, 3 }, /* 72 */ 92 { "if-2progn", 2, 3 }, /* 73 */ 93 { "if-12progn", 2, 3 }, /* 74 */ 94 { "eq0", 1, 1 }, /* 75 */ 95 { "preport", 1, 1 }, /* 76 */ 96 { "search", 2, 2 }, /* 77 */ 97 { "elt", 2, 2 }, /* 78 */ 98 { "listp", 1, 1 }, /* 79 */ 99 { "numberp", 1, 1 }, /* 80 */ 100 { "do", 2, 3 }, /* 81 */ 101 { "gc", 0, 0 }, /* 82 */ 102 { "schar", 2, 2 }, /* 83 */ 103 { "symbolp", 1, 1 }, /* 84 */ 104 { "num2str", 1, 1 }, /* 85 */ 105 { "nconc", 2, -1 }, /* 86 */ 106 { "first", 1, 1 }, /* 87 */ 107 { "second", 1, 1 }, /* 88 */ 108 { "third", 1, 1 }, /* 89 */ 109 { "fourth", 1, 1 }, /* 90 */ 110 { "fifth", 1, 1 }, /* 91 */ 111 { "sixth", 1, 1 }, /* 92 */ 112 { "seventh", 1, 1 }, /* 93 */ 113 { "eighth", 1, 1 }, /* 94 */ 114 { "ninth", 1, 1 }, /* 95 */ 115 { "tenth", 1, 1 }, /* 96 */ 116 { "substr", 3, 3 }, /* 97 */ 117 { "local_load", 1, 1 }, /* 98 */ 118 }; 119 120 enum sys_func_index 121 { 122 SYS_FUNC_PRINT = 0, 123 SYS_FUNC_CAR = 1, 124 SYS_FUNC_CDR = 2, 125 SYS_FUNC_LENGTH = 3, 126 SYS_FUNC_LIST = 4, 127 SYS_FUNC_CONS = 5, 128 SYS_FUNC_QUOTE = 6, 129 SYS_FUNC_EQ = 7, 130 SYS_FUNC_PLUS = 8, 131 SYS_FUNC_MINUS = 9, 132 SYS_FUNC_IF = 10, 133 SYS_FUNC_SETF = 11, 134 SYS_FUNC_SYMBOL_LIST = 12, 135 SYS_FUNC_ASSOC = 13, 136 SYS_FUNC_NULL = 14, 137 SYS_FUNC_ACONS = 15, 138 SYS_FUNC_PAIRLIS = 16, 139 SYS_FUNC_LET = 17, 140 SYS_FUNC_DEFUN = 18, 141 SYS_FUNC_ATOM = 19, 142 SYS_FUNC_NOT = 20, 143 SYS_FUNC_AND = 21, 144 SYS_FUNC_OR = 22, 145 SYS_FUNC_PROGN = 23, 146 SYS_FUNC_EQUAL = 24, 147 SYS_FUNC_CONCATENATE = 25, 148 SYS_FUNC_CHAR_CODE = 26, 149 SYS_FUNC_CODE_CHAR = 27, 150 SYS_FUNC_TIMES = 28, 151 SYS_FUNC_SLASH = 29, 152 SYS_FUNC_COND = 30, 153 SYS_FUNC_SELECT = 31, 154 SYS_FUNC_FUNCTION = 32, 155 SYS_FUNC_MAPCAR = 33, 156 SYS_FUNC_FUNCALL = 34, 157 SYS_FUNC_GT = 35, 158 SYS_FUNC_LT = 36, 159 SYS_FUNC_TMP_SPACE = 37, 160 SYS_FUNC_PERM_SPACE = 38, 161 SYS_FUNC_SYMBOL_NAME = 39, 162 SYS_FUNC_TRACE = 40, 163 SYS_FUNC_UNTRACE = 41, 164 SYS_FUNC_DIGSTR = 42, 165 SYS_FUNC_COMPILE_FILE = 43, 166 SYS_FUNC_ABS = 44, 167 SYS_FUNC_MIN = 45, 168 SYS_FUNC_MAX = 46, 169 SYS_FUNC_GE = 47, 170 SYS_FUNC_LE = 48, 171 SYS_FUNC_BACKQUOTE = 49, 172 SYS_FUNC_COMMA = 50, 173 SYS_FUNC_NTH = 51, 174 SYS_FUNC_RESIZE_TMP = 52, 175 SYS_FUNC_RESIZE_PERM = 53, 176 SYS_FUNC_COS = 54, 177 SYS_FUNC_SIN = 55, 178 SYS_FUNC_ATAN2 = 56, 179 SYS_FUNC_ENUM = 57, 180 SYS_FUNC_QUIT = 58, 181 SYS_FUNC_EVAL = 59, 182 SYS_FUNC_BREAK = 60, 183 SYS_FUNC_MOD = 61, 184 SYS_FUNC_WRITE_PROFILE = 62, 185 SYS_FUNC_SETQ = 63, 186 SYS_FUNC_FOR = 64, 187 SYS_FUNC_OPEN_FILE = 65, 188 SYS_FUNC_LOAD = 66, 189 SYS_FUNC_BIT_AND = 67, 190 SYS_FUNC_BIT_OR = 68, 191 SYS_FUNC_BIT_XOR = 69, 192 SYS_FUNC_MAKE_ARRAY = 70, 193 SYS_FUNC_AREF = 71, 194 SYS_FUNC_IF_1PROGN = 72, 195 SYS_FUNC_IF_2PROGN = 73, 196 SYS_FUNC_IF_12PROGN = 74, 197 SYS_FUNC_EQ0 = 75, 198 SYS_FUNC_PREPORT = 76, 199 SYS_FUNC_SEARCH = 77, 200 SYS_FUNC_ELT = 78, 201 SYS_FUNC_LISTP = 79, 202 SYS_FUNC_NUMBERP = 80, 203 SYS_FUNC_DO = 81, 204 SYS_FUNC_GC = 82, 205 SYS_FUNC_SCHAR = 83, 206 SYS_FUNC_SYMBOLP = 84, 207 SYS_FUNC_NUM2STR = 85, 208 SYS_FUNC_NCONC = 86, 209 SYS_FUNC_FIRST = 87, 210 SYS_FUNC_SECOND = 88, 211 SYS_FUNC_THIRD = 89, 212 SYS_FUNC_FOURTH = 90, 213 SYS_FUNC_FIFTH = 91, 214 SYS_FUNC_SIXTH = 92, 215 SYS_FUNC_SEVENTH = 93, 216 SYS_FUNC_EIGHTH = 94, 217 SYS_FUNC_NINTH = 95, 218 SYS_FUNC_TENTH = 96, 219 SYS_FUNC_SUBSTR = 97, 220 SYS_FUNC_LOCAL_LOAD = 98, 221 }; 222 223