mirror of
https://github.com/A2osX/A2osX.git
synced 2024-12-01 14:50:10 +00:00
200 lines
4.9 KiB
Plaintext
200 lines
4.9 KiB
Plaintext
NEW
|
||
AUTO 3,1
|
||
.LIST OFF
|
||
*--------------------------------------
|
||
CSH.Q.CONST .EQ %10000000
|
||
CSH.Q.POINTER .EQ %00100000
|
||
CSH.Q.PPOINTER .EQ %01000000
|
||
CSH.Q.PPPOINTER .EQ %01100000
|
||
CSH.Q.FUNC .EQ %00010000
|
||
CSH.T.VOID .EQ 0
|
||
CSH.T.CHAR .EQ 1
|
||
CSH.T.INT .EQ 2
|
||
CSH.T.LONG .EQ 3
|
||
CSH.T.UCHAR .EQ 4
|
||
CSH.T.UINT .EQ 5
|
||
CSH.T.ULONG .EQ 6
|
||
CSH.T.FLOAT .EQ 7
|
||
CSH.T.VARIADIC .EQ $F
|
||
*--------------------------------------
|
||
CSH.OPChars .AS "!~+-*/%=&|^<>"
|
||
CSH.OPChars.Cnt .EQ *-CSH.OPChars
|
||
*--------------------------------------
|
||
* Pre Operators: + - ! ~ ++ --
|
||
*--------------------------------------
|
||
CSH.PREOPS >PSTR "+"
|
||
>PSTR "-"
|
||
>PSTR "!"
|
||
>PSTR "~"
|
||
*--------------------------------------
|
||
* Post Operators: ++ --
|
||
*--------------------------------------
|
||
CSH.POSTOPS >PSTR "++"
|
||
>PSTR "--"
|
||
.HS 00
|
||
*--------------------------------------
|
||
* Assignment Operators: = += -= *= /= %= <<= >>= &= ^= |=
|
||
*--------------------------------------
|
||
CSH.AOPS >PSTR "="
|
||
>PSTR "+="
|
||
>PSTR "-="
|
||
>PSTR "*="
|
||
>PSTR "/="
|
||
>PSTR "%="
|
||
>PSTR "<<="
|
||
>PSTR ">>="
|
||
>PSTR "&="
|
||
>PSTR "^="
|
||
>PSTR "!="
|
||
.HS 00
|
||
*-- Binary ---- H to L precedence -----
|
||
* Arithmetic Operators: * / %
|
||
* Arithmetic Operators: + -
|
||
* Shift Operators: << >>
|
||
* Relational Operators: < > >= < >= == !=
|
||
* Bitwise Operators: & | ^ ~
|
||
* Logical Operators: && ||
|
||
*--------------------------------------
|
||
CSH.BOPS >PSTR "+"
|
||
>PSTR "-"
|
||
>PSTR "*"
|
||
>PSTR "/"
|
||
>PSTR "%"
|
||
>PSTR "<<"
|
||
>PSTR ">>"
|
||
>PSTR "<"
|
||
>PSTR ">"
|
||
>PSTR "<="
|
||
>PSTR ">="
|
||
>PSTR "=="
|
||
>PSTR "!="
|
||
>PSTR "&"
|
||
>PSTR "|"
|
||
>PSTR "^"
|
||
>PSTR "&&"
|
||
>PSTR "||"
|
||
.HS 00
|
||
*--------------------------------------
|
||
* Reserved Directives:
|
||
*--------------------------------------
|
||
CSH.DIRS >PSTR "define"
|
||
>PSTR "include"
|
||
.HS 00
|
||
*--------------------------------------
|
||
* Reserved Keywords:
|
||
*--------------------------------------
|
||
CSH.KW >PSTR "if"
|
||
>PSTR "while"
|
||
>PSTR "else"
|
||
>PSTR "do"
|
||
>PSTR "for"
|
||
>PSTR "switch"
|
||
>PSTR "case"
|
||
>PSTR "break"
|
||
>PSTR "continue"
|
||
>PSTR "typedef"
|
||
>PSTR "struct"
|
||
>PSTR "sizeof"
|
||
CSH.TYPES >PSTR "void"
|
||
>PSTR "float"
|
||
>PSTR "signed" char,int,long
|
||
>PSTR "unsigned" char,int,long
|
||
CSH.STYPES >PSTR "char"
|
||
>PSTR "int"
|
||
>PSTR "long"
|
||
* .HS 00
|
||
*--------------------------------------
|
||
CSH.TYPESIZE .HS 0001020401020405 VOID,CHAR,INT,LONG,UCHAR,UINT,ULONG,FLOAT....
|
||
*--------------------------------------
|
||
CSH.FN
|
||
* float cos ( float x );
|
||
>PSTR "log"
|
||
.DA #CSH.T.FLOAT returned value
|
||
.DA #CSH.T.FLOAT
|
||
.DA #0
|
||
>PSTR "sqr"
|
||
.DA #CSH.T.FLOAT returned value
|
||
.DA #CSH.T.FLOAT
|
||
.DA #0
|
||
>PSTR "exp"
|
||
.DA #CSH.T.FLOAT returned value
|
||
.DA #CSH.T.FLOAT
|
||
.DA #0
|
||
>PSTR "cos"
|
||
.DA #CSH.T.FLOAT returned value
|
||
.DA #CSH.T.FLOAT
|
||
.DA #0
|
||
>PSTR "sin"
|
||
.DA #CSH.T.FLOAT returned value
|
||
.DA #CSH.T.FLOAT
|
||
.DA #0
|
||
>PSTR "tan"
|
||
.DA #CSH.T.FLOAT returned value
|
||
.DA #CSH.T.FLOAT
|
||
.DA #0
|
||
>PSTR "atan"
|
||
.DA #CSH.T.FLOAT returned value
|
||
.DA #CSH.T.FLOAT
|
||
.DA #0
|
||
* char getchar ( void );
|
||
>PSTR "getchar"
|
||
.DA #CSH.T.CHAR returned value
|
||
.DA #0
|
||
* int puts ( const char * str );
|
||
>PSTR "puts"
|
||
.DA #CSH.T.INT returned value
|
||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||
.DA #0
|
||
* int execl(const char* cmdline, short int flags);
|
||
>PSTR "execl"
|
||
.DA #CSH.T.INT returned value
|
||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||
.DA #CSH.T.UCHAR
|
||
.DA #0
|
||
* int printf ( const char * format, ... );
|
||
>PSTR "printf"
|
||
.DA #CSH.T.INT returned value
|
||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||
.DA #CSH.T.VARIADIC
|
||
.DA #0
|
||
* int putenv(const char *string);
|
||
>PSTR "putenv"
|
||
.DA #CSH.T.INT returned value
|
||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||
.DA #0
|
||
* int setenv(const char *name, const char *value);
|
||
>PSTR "setenv"
|
||
.DA #CSH.T.INT returned value
|
||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||
.DA #0
|
||
* char *getenv(const char *name, char *value);
|
||
>PSTR "getenv"
|
||
.DA #CSH.Q.POINTER+CSH.T.CHAR
|
||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||
.DA #CSH.Q.POINTER+CSH.T.CHAR
|
||
.DA #0
|
||
* int unsetenv(const char *name);
|
||
>PSTR "unsetenv"
|
||
.DA #CSH.T.INT returned value
|
||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||
.DA #0
|
||
* void md5 (const char* str, char* digest);
|
||
>PSTR "md5"
|
||
.DA #CSH.T.VOID
|
||
.DA #CSH.Q.CONST+CSH.Q.POINTER+CSH.T.CHAR
|
||
.DA #CSH.Q.POINTER+CSH.T.CHAR
|
||
.DA #0
|
||
* void * malloc ( int size );
|
||
>PSTR "malloc"
|
||
.DA #CSH.Q.POINTER+CSH.T.VOID returned value
|
||
.DA #CSH.T.INT
|
||
.DA #0
|
||
*--------------------------------------
|
||
.DA #0
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE usr/src/bin/csh.i
|
||
LOAD usr/src/bin/csh.s
|
||
ASM
|