1 #ifndef REXX_STORAGE_H 2 #define REXX_STORAGE_H 3 4 /* 5 rexx storage defines 6 7 Copyright © 2002 The MorphOS Development Team, All Rights Reserved. 8 */ 9 10 #ifndef EXEC_TYPES_H 11 # include <exec/types.h> 12 #endif 13 14 #ifndef EXEC_NODES_H 15 # include <exec/nodes.h> 16 #endif 17 18 #ifndef EXEC_LISTS_H 19 # include <exec/lists.h> 20 #endif 21 22 #ifndef EXEC_PORTS_H 23 # include <exec/ports.h> 24 #endif 25 26 #ifndef EXEC_LIBRARIES_H 27 # include <exec/libraries.h> 28 #endif 29 30 #pragma pack(2) 31 32 33 struct NexxStr 34 { 35 LONG ns_Ivalue; 36 UWORD ns_Length; 37 UBYTE ns_Flags; 38 UBYTE ns_Hash; 39 BYTE ns_Buff[8]; 40 }; 41 42 43 #define NXADDLEN 9 44 #define IVALUE(nsPtr) (nsPtr->ns_Ivalue) 45 46 47 /* String attribute flag-bits */ 48 49 #define NSB_KEEP 0 50 #define NSB_STRING 1 51 #define NSB_NOTNUM 2 52 #define NSB_NUMBER 3 53 #define NSB_BINARY 4 54 #define NSB_FLOAT 5 55 #define NSB_EXT 6 56 #define NSB_SOURCE 7 57 58 #define NSF_KEEP (1 << NSB_KEEP) 59 #define NSF_STRING (1 << NSB_STRING) 60 #define NSF_NOTNUM (1 << NSB_NOTNUM) 61 #define NSF_NUMBER (1 << NSB_NUMBER) 62 #define NSF_BINARY (1 << NSB_BINARY) 63 #define NSF_FLOAT (1 << NSB_FLOAT) 64 #define NSF_EXT (1 << NSB_EXT) 65 #define NSF_SOURCE (1 << NSB_SOURCE) 66 67 68 /* Combinations of flags */ 69 70 #define NSF_INTNUM (NSF_NUMBER | NSF_BINARY | NSF_STRING) 71 #define NSF_DPNUM (NSF_NUMBER | NSF_FLOAT) 72 #define NSF_ALPHA (NSF_NOTNUM | NSF_STRING) 73 #define NSF_OWNED (NSF_SOURCE | NSF_EXT | NSF_KEEP) 74 #define KEEPSTR (NSF_STRING | NSF_SOURCE | NSF_NOTNUM) 75 #define KEEPNUM (NSF_STRING | NSF_SOURCE | NSF_NUMBER | NSF_BINARY) 76 77 78 struct RexxArg 79 { 80 LONG ra_Size; 81 UWORD ra_Length; 82 UBYTE ra_Flags; 83 UBYTE ra_Hash; 84 BYTE ra_Buff[8]; 85 }; 86 87 88 struct RexxMsg 89 { 90 struct Message rm_Node; 91 APTR rm_TaskBlock; 92 APTR rm_LibBase; 93 LONG rm_Action; 94 LONG rm_Result1; 95 LONG rm_Result2; 96 STRPTR rm_Args[16]; 97 98 struct MsgPort *rm_PassPort; 99 STRPTR rm_CommAddr; 100 STRPTR rm_FileExt; 101 LONG rm_Stdin; 102 LONG rm_Stdout; 103 LONG rm_avail; 104 }; 105 106 107 /* Field definitions */ 108 109 #define ARG0(rmp) (rmp->rm_Args[0]) 110 #define ARG1(rmp) (rmp->rm_Args[1]) 111 #define ARG2(rmp) (rmp->rm_Args[2]) 112 113 #define MAXRMARG 15 114 115 116 /* Message-packet commands */ 117 118 #define RXCOMM 0x01000000 119 #define RXFUNC 0x02000000 120 #define RXCLOSE 0x03000000 121 #define RXQUERY 0x04000000 122 #define RXADDFH 0x07000000 123 #define RXADDLIB 0x08000000 124 #define RXREMLIB 0x09000000 125 #define RXADDCON 0x0A000000 126 #define RXREMCON 0x0B000000 127 #define RXTCOPN 0x0C000000 128 #define RXTCCLS 0x0D000000 129 130 131 /* Command modifier flag-bits */ 132 133 #define RXFB_NOIO 16 134 #define RXFB_RESULT 17 135 #define RXFB_STRING 18 136 #define RXFB_TOKEN 19 137 #define RXFB_NONRET 20 138 139 #define RXFF_NOIO (1 << RXFB_NOIO) 140 #define RXFF_RESULT (1 << RXFB_RESULT) 141 #define RXFF_STRING (1 << RXFB_STRING) 142 #define RXFF_TOKEN (1 << RXFB_TOKEN) 143 #define RXFF_NONRET (1 << RXFB_NONRET) 144 145 #define RXCODEMASK 0xFF000000 146 #define RXARGMASK 0x0000000F 147 148 149 struct RexxRsrc 150 { 151 struct Node rr_Node; 152 WORD rr_Func; 153 APTR rr_Base; 154 LONG rr_Size; 155 LONG rr_Arg1; 156 LONG rr_Arg2; 157 }; 158 159 160 /* Resource node-types */ 161 162 #define RRT_ANY 0 163 #define RRT_LIB 1 164 #define RRT_PORT 2 165 #define RRT_FILE 3 166 #define RRT_HOST 4 167 #define RRT_CLIP 5 168 169 170 #define GLOBALSZ 200 171 172 173 struct RexxTask 174 { 175 BYTE rt_Global[GLOBALSZ]; 176 struct MsgPort rt_MsgPort; 177 UBYTE rt_Flags; 178 BYTE rt_SigBit; 179 180 APTR rt_ClientID; 181 APTR rt_MsgPkt; 182 APTR rt_TaskID; 183 APTR rt_RexxPort; 184 185 APTR rt_ErrTrap; 186 APTR rt_StackPtr; 187 188 struct List rt_Header1; 189 struct List rt_Header2; 190 struct List rt_Header3; 191 struct List rt_Header4; 192 struct List rt_Header5; 193 }; 194 195 196 /* RexxTask flag-bits */ 197 198 #define RTFB_TRACE 0 199 #define RTFB_HALT 1 200 #define RTFB_SUSP 2 201 #define RTFB_TCUSE 3 202 #define RTFB_WAIT 6 203 #define RTFB_CLOSE 7 204 205 206 /* Memory allocation constants */ 207 208 #define MEMQUANT 16L 209 #define MEMMASK 0xFFFFFFF0 210 211 #define MEMQUICK (1 << 0) 212 #define MEMCLEAR (1 << 16) 213 214 215 struct SrcNode 216 { 217 struct SrcNode *sn_Succ; 218 struct SrcNode *sn_Pred; 219 APTR sn_Ptr; 220 LONG sn_Size; 221 }; 222 223 224 #pragma pack() 225 226 #endif