| 1 | 39 | Agner | /*************************    system_functions.h    ***************************
 | 
      
         | 2 |  |  | * Author:        Agner Fog
 | 
      
         | 3 |  |  | * Date created:  2018-03-20
 | 
      
         | 4 |  |  | * Last modified: 2020-11-25
 | 
      
         | 5 |  |  | * Version:       1.11
 | 
      
         | 6 |  |  | * Project:       Binary tools for ForwardCom instruction set
 | 
      
         | 7 |  |  | * Module:        system_functions.h
 | 
      
         | 8 |  |  | * Description:
 | 
      
         | 9 |  |  | * Header file for ForwardCom system function ID numbers
 | 
      
         | 10 |  |  | *
 | 
      
         | 11 |  |  | * Note: id values are preliminary, they may change
 | 
      
         | 12 |  |  | *
 | 
      
         | 13 |  |  | * Copyright 2018-2020 GNU General Public License http://www.gnu.org/licenses
 | 
      
         | 14 |  |  | ******************************************************************************/
 | 
      
         | 15 |  |  |  
 | 
      
         | 16 |  |  | // Event ID's. System-specific and user-defined ID numbers may be added
 | 
      
         | 17 |  |  | #define EVT_NONE                      0     // ignore
 | 
      
         | 18 |  |  | #define EVT_CONSTRUCT                 1     // call static constructors and initialization procedures before calling main
 | 
      
         | 19 |  |  | #define EVT_DESTRUCT                  2     // call static destructors and clean up after return from main
 | 
      
         | 20 |  |  | #define EVT_LOADLIB                   3     // a library has been loaded dynamically at runtime. initialize it
 | 
      
         | 21 |  |  | #define EVT_UNLOADLIB                 4     // a library is about to be unloaded dynamically
 | 
      
         | 22 |  |  | #define EVT_CLOSE                     5     // a request for closing the current process
 | 
      
         | 23 |  |  | #define EVT_PARENTNOTIFY              6     // notification from child process to parent process
 | 
      
         | 24 |  |  | #define EVT_ERROR                  0x10     // error handler
 | 
      
         | 25 |  |  | #define EVT_TIMER                  0x20     // timer event
 | 
      
         | 26 |  |  | #define EVT_COMMAND                0x30     // user command from keyboard, menu, or icon click
 | 
      
         | 27 |  |  | #define EVT_MESSAGE                0x31     // keyboard or mouse message or inter-process message
 | 
      
         | 28 |  |  | #define EVT_CALL                   0x32     // call to an add-on module
 | 
      
         | 29 |  |  |  
 | 
      
         | 30 |  |  | // Interrupt ID's. ID numbers for error interrupts
 | 
      
         | 31 |  |  | #define INT_BREAKPOINT             0x01     // debug breakpoint
 | 
      
         | 32 |  |  | #define INT_UNKNOWN_INST           0x80     // unknown instruction
 | 
      
         | 33 |  |  | #define INT_WRONG_PARAMETERS       0x81     // illegal or unsupported parameters for instruction
 | 
      
         | 34 |  |  | #define INT_ACCESS_READ            0x82     // memory access violation, read
 | 
      
         | 35 |  |  | #define INT_ACCESS_WRITE           0x83     // memory access violation, write
 | 
      
         | 36 |  |  | #define INT_ACCESS_EXE             0x84     // memory access violation, execute
 | 
      
         | 37 |  |  | #define INT_CALL_STACK             0x85     // call stack overflow or underflow
 | 
      
         | 38 |  |  | #define INT_ARRAY_BOUNDS           0x88     // array bounds overflow, unsigned
 | 
      
         | 39 |  |  | #define INT_MISALIGNED_MEM         0x89     // misaligned memory access
 | 
      
         | 40 |  |  | #define INT_MISALIGNED_JUMP        0x8A     // jump to an address not divisible by 4
 | 
      
         | 41 |  |  |  
 | 
      
         | 42 |  |  | // Interrupt ID's for software traps. Note that software traps are not necessarily supported
 | 
      
         | 43 |  |  | #define INT_OVERFL_UNSIGN          0x101     // integer overflow, unsigned
 | 
      
         | 44 |  |  | #define INT_OVERFL_SIGN            0x102     // integer overflow, signed
 | 
      
         | 45 |  |  | #define INT_OVERFL_FLOAT           0x103     // floating point overflow
 | 
      
         | 46 |  |  | #define INT_FLOAT_INVALID          0x104     // floating point invalid operation
 | 
      
         | 47 |  |  | #define INT_FLOAT_UNDERFL          0x105     // floating point underflow or precision loss
 | 
      
         | 48 |  |  | #define INT_FLOAT_NAN_LOSS         0x106     // floating point nan propagation loss (nan input to compare or conversion to integer)
 | 
      
         | 49 |  |  |  
 | 
      
         | 50 |  |  | // module ID
 | 
      
         | 51 |  |  | #define SYSM_SYSTEM               0x001  // system module id
 | 
      
         | 52 |  |  |  
 | 
      
         | 53 |  |  | // process function IDs
 | 
      
         | 54 |  |  | #define SYSF_EXIT                 0x010  // terminate program
 | 
      
         | 55 |  |  | #define SYSF_ABORT                0x011  // abort program
 | 
      
         | 56 |  |  | #define SYSF_TIME                 0x020  // time
 | 
      
         | 57 |  |  |  
 | 
      
         | 58 |  |  | // input/output functions
 | 
      
         | 59 |  |  | #define SYSF_PUTS                 0x101  // write string to stdout
 | 
      
         | 60 |  |  | #define SYSF_PUTCHAR              0x102  // write character to stdout
 | 
      
         | 61 |  |  | #define SYSF_PRINTF               0x103  // write formatted output to stdout
 | 
      
         | 62 |  |  | #define SYSF_FPRINTF              0x104  // write formatted output to file
 | 
      
         | 63 |  |  | #define SYSF_SNPRINTF             0x105  // write formatted output to string buffer 
 | 
      
         | 64 |  |  | #define SYSF_FOPEN                0x110  // open file
 | 
      
         | 65 |  |  | #define SYSF_FCLOSE               0x111  // close file
 | 
      
         | 66 |  |  | #define SYSF_FREAD                0x112  // read from file
 | 
      
         | 67 |  |  | #define SYSF_FWRITE               0x113  // write to file
 | 
      
         | 68 |  |  | #define SYSF_FFLUSH               0x114  // flush file
 | 
      
         | 69 |  |  | #define SYSF_FEOF                 0x115  // check if end of file
 | 
      
         | 70 |  |  | #define SYSF_FTELL                0x116  // get file position
 | 
      
         | 71 |  |  | #define SYSF_FSEEK                0x117  // set file position
 | 
      
         | 72 |  |  | #define SYSF_FERROR               0x118  // get file error
 | 
      
         | 73 |  |  | #define SYSF_GETCHAR              0x120  // read character from stdin
 | 
      
         | 74 |  |  | #define SYSF_FGETC                0x121  // read character from file
 | 
      
         | 75 |  |  | #define SYSF_FGETS                0x123  // read string from file
 | 
      
         | 76 |  |  | #define SYSF_GETS_S               0x124  // read string from stdin
 | 
      
         | 77 |  |  | #define SYSF_SCANF                0x130  // read formatted input from stdin
 | 
      
         | 78 |  |  | #define SYSF_FSCANF               0x131  // read formatted input from file
 | 
      
         | 79 |  |  | #define SYSF_SSCANF               0x132  // read formatted input from string buffer
 | 
      
         | 80 |  |  | #define SYSF_REMOVE               0x140  // delete file
 |