#ifndef __KERNEL_H__
#define __KERNEL_H__

#if defined(NOSTUB) || defined(KERNEL) || defined(DOORS)
# error "kernel.h" must not be included with tigcclib.h
#endif

/* If someone uses the main function */
#define main _main

/* Select target */
#ifdef USE_TI89
	short	_ti89;
#endif
#if defined(USE_TI92PLUS) || defined(USE_TI92P)
	short	_ti92plus;
#endif
#ifdef USE_V200
	short	_v200;
#endif
#if !defined(USE_TI92PLUS) && !defined(USE_TI92P) && !defined(USE_TI89) && !defined(USE_V200)
	short	_ti92plus,_ti89,_v200;
#endif

/* Define default value */
#define asm __asm__ 
#define __ATTR_STD__ __attribute__((__stkparm__))
#define __ATTR_STD_NORETURN__ __attribute__((__stkparm__,__noreturn__))
#define CALLBACK __ATTR_STD__
#define __ATTR_TIOS__ __ATTR_STD__
#define __ATTR_TIOS_NORETURN__ __ATTR_STD_NORETURN__
#define __ATTR_TIOS_CALLBACK__ CALLBACK
#define __ATTR_GCC__ 
#define __ATTR_LIB_C__ __attribute__((__regparm__(4)))
#define __ATTR_LIB_ASM__ __ATTR_STD__
#define __ATTR_LIB_ASM_NORETURN__ __ATTR_STD_NORETURN__
#define __ATTR_LIB_CALLBACK_C__ CALLBACK
#define __ATTR_LIB_CALLBACK_ASM__ CALLBACK

/* Float definition */
#define _tios_float_1(f,x,t) ({typedef float(*__temp__type__)(short,t)__ATTR_LIB_ASM__;((__temp__type__)__BC)(4*0x##f,x);})
#define _tios_float_2(f,x,y,t1,t2) ({typedef float(*__temp__type__)(short,t1,t2)__ATTR_LIB_ASM__;((__temp__type__)__BC)(4*0x##f,x,y);})

/* Romcalls first definition */
extern void __attribute__((__may_alias__))
  _ROM_CALL_0,_ROM_CALL_1,_ROM_CALL_2,_ROM_CALL_3,_ROM_CALL_4,_ROM_CALL_5,_ROM_CALL_6,_ROM_CALL_7,_ROM_CALL_8,_ROM_CALL_9,_ROM_CALL_A,_ROM_CALL_B,_ROM_CALL_C,_ROM_CALL_D,_ROM_CALL_E,_ROM_CALL_F,
  _ROM_CALL_10,_ROM_CALL_11,_ROM_CALL_12,_ROM_CALL_13,_ROM_CALL_14,_ROM_CALL_15,_ROM_CALL_16,_ROM_CALL_17,_ROM_CALL_18,_ROM_CALL_19,_ROM_CALL_1A,_ROM_CALL_1B,_ROM_CALL_1C,_ROM_CALL_1D,_ROM_CALL_1E,_ROM_CALL_1F,
  _ROM_CALL_20,_ROM_CALL_21,_ROM_CALL_22,_ROM_CALL_23,_ROM_CALL_24,_ROM_CALL_25,_ROM_CALL_26,_ROM_CALL_27,_ROM_CALL_28,_ROM_CALL_29,_ROM_CALL_2A,_ROM_CALL_2B,_ROM_CALL_2C,_ROM_CALL_2D,_ROM_CALL_2E,_ROM_CALL_2F,
  _ROM_CALL_30,_ROM_CALL_31,_ROM_CALL_32,_ROM_CALL_33,_ROM_CALL_34,_ROM_CALL_35,_ROM_CALL_36,_ROM_CALL_37,_ROM_CALL_38,_ROM_CALL_39,_ROM_CALL_3A,_ROM_CALL_3B,_ROM_CALL_3C,_ROM_CALL_3D,_ROM_CALL_3E,_ROM_CALL_3F,
  _ROM_CALL_40,_ROM_CALL_41,_ROM_CALL_42,_ROM_CALL_43,_ROM_CALL_44,_ROM_CALL_45,_ROM_CALL_46,_ROM_CALL_47,_ROM_CALL_48,_ROM_CALL_49,_ROM_CALL_4A,_ROM_CALL_4B,_ROM_CALL_4C,_ROM_CALL_4D,_ROM_CALL_4E,_ROM_CALL_4F,
  _ROM_CALL_50,_ROM_CALL_51,_ROM_CALL_52,_ROM_CALL_53,_ROM_CALL_54,_ROM_CALL_55,_ROM_CALL_56,_ROM_CALL_57,_ROM_CALL_58,_ROM_CALL_59,_ROM_CALL_5A,_ROM_CALL_5B,_ROM_CALL_5C,_ROM_CALL_5D,_ROM_CALL_5E,_ROM_CALL_5F,
  _ROM_CALL_60,_ROM_CALL_61,_ROM_CALL_62,_ROM_CALL_63,_ROM_CALL_64,_ROM_CALL_65,_ROM_CALL_66,_ROM_CALL_67,_ROM_CALL_68,_ROM_CALL_69,_ROM_CALL_6A,_ROM_CALL_6B,_ROM_CALL_6C,_ROM_CALL_6D,_ROM_CALL_6E,_ROM_CALL_6F,
  _ROM_CALL_70,_ROM_CALL_71,_ROM_CALL_72,_ROM_CALL_73,_ROM_CALL_74,_ROM_CALL_75,_ROM_CALL_76,_ROM_CALL_77,_ROM_CALL_78,_ROM_CALL_79,_ROM_CALL_7A,_ROM_CALL_7B,_ROM_CALL_7C,_ROM_CALL_7D,_ROM_CALL_7E,_ROM_CALL_7F,
  _ROM_CALL_80,_ROM_CALL_81,_ROM_CALL_82,_ROM_CALL_83,_ROM_CALL_84,_ROM_CALL_85,_ROM_CALL_86,_ROM_CALL_87,_ROM_CALL_88,_ROM_CALL_89,_ROM_CALL_8A,_ROM_CALL_8B,_ROM_CALL_8C,_ROM_CALL_8D,_ROM_CALL_8E,_ROM_CALL_8F,
  _ROM_CALL_90,_ROM_CALL_91,_ROM_CALL_92,_ROM_CALL_93,_ROM_CALL_94,_ROM_CALL_95,_ROM_CALL_96,_ROM_CALL_97,_ROM_CALL_98,_ROM_CALL_99,_ROM_CALL_9A,_ROM_CALL_9B,_ROM_CALL_9C,_ROM_CALL_9D,_ROM_CALL_9E,_ROM_CALL_9F,
  _ROM_CALL_A0,_ROM_CALL_A1,_ROM_CALL_A2,_ROM_CALL_A3,_ROM_CALL_A4,_ROM_CALL_A5,_ROM_CALL_A6,_ROM_CALL_A7,_ROM_CALL_A8,_ROM_CALL_A9,_ROM_CALL_AA,_ROM_CALL_AB,_ROM_CALL_AC,_ROM_CALL_AD,_ROM_CALL_AE,_ROM_CALL_AF,
  _ROM_CALL_B0,_ROM_CALL_B1,_ROM_CALL_B2,_ROM_CALL_B3,_ROM_CALL_B4,_ROM_CALL_B5,_ROM_CALL_B6,_ROM_CALL_B7,_ROM_CALL_B8,_ROM_CALL_B9,_ROM_CALL_BA,_ROM_CALL_BB,_ROM_CALL_BC,_ROM_CALL_BD,_ROM_CALL_BE,_ROM_CALL_BF,
  _ROM_CALL_C0,_ROM_CALL_C1,_ROM_CALL_C2,_ROM_CALL_C3,_ROM_CALL_C4,_ROM_CALL_C5,_ROM_CALL_C6,_ROM_CALL_C7,_ROM_CALL_C8,_ROM_CALL_C9,_ROM_CALL_CA,_ROM_CALL_CB,_ROM_CALL_CC,_ROM_CALL_CD,_ROM_CALL_CE,_ROM_CALL_CF,
  _ROM_CALL_D0,_ROM_CALL_D1,_ROM_CALL_D2,_ROM_CALL_D3,_ROM_CALL_D4,_ROM_CALL_D5,_ROM_CALL_D6,_ROM_CALL_D7,_ROM_CALL_D8,_ROM_CALL_D9,_ROM_CALL_DA,_ROM_CALL_DB,_ROM_CALL_DC,_ROM_CALL_DD,_ROM_CALL_DE,_ROM_CALL_DF,
  _ROM_CALL_E0,_ROM_CALL_E1,_ROM_CALL_E2,_ROM_CALL_E3,_ROM_CALL_E4,_ROM_CALL_E5,_ROM_CALL_E6,_ROM_CALL_E7,_ROM_CALL_E8,_ROM_CALL_E9,_ROM_CALL_EA,_ROM_CALL_EB,_ROM_CALL_EC,_ROM_CALL_ED,_ROM_CALL_EE,_ROM_CALL_EF,
  _ROM_CALL_F0,_ROM_CALL_F1,_ROM_CALL_F2,_ROM_CALL_F3,_ROM_CALL_F4,_ROM_CALL_F5,_ROM_CALL_F6,_ROM_CALL_F7,_ROM_CALL_F8,_ROM_CALL_F9,_ROM_CALL_FA,_ROM_CALL_FB,_ROM_CALL_FC,_ROM_CALL_FD,_ROM_CALL_FE,_ROM_CALL_FF,
  _ROM_CALL_100,_ROM_CALL_101,_ROM_CALL_102,_ROM_CALL_103,_ROM_CALL_104,_ROM_CALL_105,_ROM_CALL_106,_ROM_CALL_107,_ROM_CALL_108,_ROM_CALL_109,_ROM_CALL_10A,_ROM_CALL_10B,_ROM_CALL_10C,_ROM_CALL_10D,_ROM_CALL_10E,_ROM_CALL_10F,
  _ROM_CALL_110,_ROM_CALL_111,_ROM_CALL_112,_ROM_CALL_113,_ROM_CALL_114,_ROM_CALL_115,_ROM_CALL_116,_ROM_CALL_117,_ROM_CALL_118,_ROM_CALL_119,_ROM_CALL_11A,_ROM_CALL_11B,_ROM_CALL_11C,_ROM_CALL_11D,_ROM_CALL_11E,_ROM_CALL_11F,
  _ROM_CALL_120,_ROM_CALL_121,_ROM_CALL_122,_ROM_CALL_123,_ROM_CALL_124,_ROM_CALL_125,_ROM_CALL_126,_ROM_CALL_127,_ROM_CALL_128,_ROM_CALL_129,_ROM_CALL_12A,_ROM_CALL_12B,_ROM_CALL_12C,_ROM_CALL_12D,_ROM_CALL_12E,_ROM_CALL_12F,
  _ROM_CALL_130,_ROM_CALL_131,_ROM_CALL_132,_ROM_CALL_133,_ROM_CALL_134,_ROM_CALL_135,_ROM_CALL_136,_ROM_CALL_137,_ROM_CALL_138,_ROM_CALL_139,_ROM_CALL_13A,_ROM_CALL_13B,_ROM_CALL_13C,_ROM_CALL_13D,_ROM_CALL_13E,_ROM_CALL_13F,
  _ROM_CALL_140,_ROM_CALL_141,_ROM_CALL_142,_ROM_CALL_143,_ROM_CALL_144,_ROM_CALL_145,_ROM_CALL_146,_ROM_CALL_147,_ROM_CALL_148,_ROM_CALL_149,_ROM_CALL_14A,_ROM_CALL_14B,_ROM_CALL_14C,_ROM_CALL_14D,_ROM_CALL_14E,_ROM_CALL_14F,
  _ROM_CALL_150,_ROM_CALL_151,_ROM_CALL_152,_ROM_CALL_153,_ROM_CALL_154,_ROM_CALL_155,_ROM_CALL_156,_ROM_CALL_157,_ROM_CALL_158,_ROM_CALL_159,_ROM_CALL_15A,_ROM_CALL_15B,_ROM_CALL_15C,_ROM_CALL_15D,_ROM_CALL_15E,_ROM_CALL_15F,
  _ROM_CALL_160,_ROM_CALL_161,_ROM_CALL_162,_ROM_CALL_163,_ROM_CALL_164,_ROM_CALL_165,_ROM_CALL_166,_ROM_CALL_167,_ROM_CALL_168,_ROM_CALL_169,_ROM_CALL_16A,_ROM_CALL_16B,_ROM_CALL_16C,_ROM_CALL_16D,_ROM_CALL_16E,_ROM_CALL_16F,
  _ROM_CALL_170,_ROM_CALL_171,_ROM_CALL_172,_ROM_CALL_173,_ROM_CALL_174,_ROM_CALL_175,_ROM_CALL_176,_ROM_CALL_177,_ROM_CALL_178,_ROM_CALL_179,_ROM_CALL_17A,_ROM_CALL_17B,_ROM_CALL_17C,_ROM_CALL_17D,_ROM_CALL_17E,_ROM_CALL_17F,
  _ROM_CALL_180,_ROM_CALL_181,_ROM_CALL_182,_ROM_CALL_183,_ROM_CALL_184,_ROM_CALL_185,_ROM_CALL_186,_ROM_CALL_187,_ROM_CALL_188,_ROM_CALL_189,_ROM_CALL_18A,_ROM_CALL_18B,_ROM_CALL_18C,_ROM_CALL_18D,_ROM_CALL_18E,_ROM_CALL_18F,
  _ROM_CALL_190,_ROM_CALL_191,_ROM_CALL_192,_ROM_CALL_193,_ROM_CALL_194,_ROM_CALL_195,_ROM_CALL_196,_ROM_CALL_197,_ROM_CALL_198,_ROM_CALL_199,_ROM_CALL_19A,_ROM_CALL_19B,_ROM_CALL_19C,_ROM_CALL_19D,_ROM_CALL_19E,_ROM_CALL_19F,
  _ROM_CALL_1A0,_ROM_CALL_1A1,_ROM_CALL_1A2,_ROM_CALL_1A3,_ROM_CALL_1A4,_ROM_CALL_1A5,_ROM_CALL_1A6,_ROM_CALL_1A7,_ROM_CALL_1A8,_ROM_CALL_1A9,_ROM_CALL_1AA,_ROM_CALL_1AB,_ROM_CALL_1AC,_ROM_CALL_1AD,_ROM_CALL_1AE,_ROM_CALL_1AF,
  _ROM_CALL_1B0,_ROM_CALL_1B1,_ROM_CALL_1B2,_ROM_CALL_1B3,_ROM_CALL_1B4,_ROM_CALL_1B5,_ROM_CALL_1B6,_ROM_CALL_1B7,_ROM_CALL_1B8,_ROM_CALL_1B9,_ROM_CALL_1BA,_ROM_CALL_1BB,_ROM_CALL_1BC,_ROM_CALL_1BD,_ROM_CALL_1BE,_ROM_CALL_1BF,
  _ROM_CALL_1C0,_ROM_CALL_1C1,_ROM_CALL_1C2,_ROM_CALL_1C3,_ROM_CALL_1C4,_ROM_CALL_1C5,_ROM_CALL_1C6,_ROM_CALL_1C7,_ROM_CALL_1C8,_ROM_CALL_1C9,_ROM_CALL_1CA,_ROM_CALL_1CB,_ROM_CALL_1CC,_ROM_CALL_1CD,_ROM_CALL_1CE,_ROM_CALL_1CF,
  _ROM_CALL_1D0,_ROM_CALL_1D1,_ROM_CALL_1D2,_ROM_CALL_1D3,_ROM_CALL_1D4,_ROM_CALL_1D5,_ROM_CALL_1D6,_ROM_CALL_1D7,_ROM_CALL_1D8,_ROM_CALL_1D9,_ROM_CALL_1DA,_ROM_CALL_1DB,_ROM_CALL_1DC,_ROM_CALL_1DD,_ROM_CALL_1DE,_ROM_CALL_1DF,
  _ROM_CALL_1E0,_ROM_CALL_1E1,_ROM_CALL_1E2,_ROM_CALL_1E3,_ROM_CALL_1E4,_ROM_CALL_1E5,_ROM_CALL_1E6,_ROM_CALL_1E7,_ROM_CALL_1E8,_ROM_CALL_1E9,_ROM_CALL_1EA,_ROM_CALL_1EB,_ROM_CALL_1EC,_ROM_CALL_1ED,_ROM_CALL_1EE,_ROM_CALL_1EF,
  _ROM_CALL_1F0,_ROM_CALL_1F1,_ROM_CALL_1F2,_ROM_CALL_1F3,_ROM_CALL_1F4,_ROM_CALL_1F5,_ROM_CALL_1F6,_ROM_CALL_1F7,_ROM_CALL_1F8,_ROM_CALL_1F9,_ROM_CALL_1FA,_ROM_CALL_1FB,_ROM_CALL_1FC,_ROM_CALL_1FD,_ROM_CALL_1FE,_ROM_CALL_1FF,
  _ROM_CALL_200,_ROM_CALL_201,_ROM_CALL_202,_ROM_CALL_203,_ROM_CALL_204,_ROM_CALL_205,_ROM_CALL_206,_ROM_CALL_207,_ROM_CALL_208,_ROM_CALL_209,_ROM_CALL_20A,_ROM_CALL_20B,_ROM_CALL_20C,_ROM_CALL_20D,_ROM_CALL_20E,_ROM_CALL_20F,
  _ROM_CALL_210,_ROM_CALL_211,_ROM_CALL_212,_ROM_CALL_213,_ROM_CALL_214,_ROM_CALL_215,_ROM_CALL_216,_ROM_CALL_217,_ROM_CALL_218,_ROM_CALL_219,_ROM_CALL_21A,_ROM_CALL_21B,_ROM_CALL_21C,_ROM_CALL_21D,_ROM_CALL_21E,_ROM_CALL_21F,
  _ROM_CALL_220,_ROM_CALL_221,_ROM_CALL_222,_ROM_CALL_223,_ROM_CALL_224,_ROM_CALL_225,_ROM_CALL_226,_ROM_CALL_227,_ROM_CALL_228,_ROM_CALL_229,_ROM_CALL_22A,_ROM_CALL_22B,_ROM_CALL_22C,_ROM_CALL_22D,_ROM_CALL_22E,_ROM_CALL_22F,
  _ROM_CALL_230,_ROM_CALL_231,_ROM_CALL_232,_ROM_CALL_233,_ROM_CALL_234,_ROM_CALL_235,_ROM_CALL_236,_ROM_CALL_237,_ROM_CALL_238,_ROM_CALL_239,_ROM_CALL_23A,_ROM_CALL_23B,_ROM_CALL_23C,_ROM_CALL_23D,_ROM_CALL_23E,_ROM_CALL_23F,
  _ROM_CALL_240,_ROM_CALL_241,_ROM_CALL_242,_ROM_CALL_243,_ROM_CALL_244,_ROM_CALL_245,_ROM_CALL_246,_ROM_CALL_247,_ROM_CALL_248,_ROM_CALL_249,_ROM_CALL_24A,_ROM_CALL_24B,_ROM_CALL_24C,_ROM_CALL_24D,_ROM_CALL_24E,_ROM_CALL_24F,
  _ROM_CALL_250,_ROM_CALL_251,_ROM_CALL_252,_ROM_CALL_253,_ROM_CALL_254,_ROM_CALL_255,_ROM_CALL_256,_ROM_CALL_257,_ROM_CALL_258,_ROM_CALL_259,_ROM_CALL_25A,_ROM_CALL_25B,_ROM_CALL_25C,_ROM_CALL_25D,_ROM_CALL_25E,_ROM_CALL_25F,
  _ROM_CALL_260,_ROM_CALL_261,_ROM_CALL_262,_ROM_CALL_263,_ROM_CALL_264,_ROM_CALL_265,_ROM_CALL_266,_ROM_CALL_267,_ROM_CALL_268,_ROM_CALL_269,_ROM_CALL_26A,_ROM_CALL_26B,_ROM_CALL_26C,_ROM_CALL_26D,_ROM_CALL_26E,_ROM_CALL_26F,
  _ROM_CALL_270,_ROM_CALL_271,_ROM_CALL_272,_ROM_CALL_273,_ROM_CALL_274,_ROM_CALL_275,_ROM_CALL_276,_ROM_CALL_277,_ROM_CALL_278,_ROM_CALL_279,_ROM_CALL_27A,_ROM_CALL_27B,_ROM_CALL_27C,_ROM_CALL_27D,_ROM_CALL_27E,_ROM_CALL_27F,
  _ROM_CALL_280,_ROM_CALL_281,_ROM_CALL_282,_ROM_CALL_283,_ROM_CALL_284,_ROM_CALL_285,_ROM_CALL_286,_ROM_CALL_287,_ROM_CALL_288,_ROM_CALL_289,_ROM_CALL_28A,_ROM_CALL_28B,_ROM_CALL_28C,_ROM_CALL_28D,_ROM_CALL_28E,_ROM_CALL_28F,
  _ROM_CALL_290,_ROM_CALL_291,_ROM_CALL_292,_ROM_CALL_293,_ROM_CALL_294,_ROM_CALL_295,_ROM_CALL_296,_ROM_CALL_297,_ROM_CALL_298,_ROM_CALL_299,_ROM_CALL_29A,_ROM_CALL_29B,_ROM_CALL_29C,_ROM_CALL_29D,_ROM_CALL_29E,_ROM_CALL_29F,
  _ROM_CALL_2A0,_ROM_CALL_2A1,_ROM_CALL_2A2,_ROM_CALL_2A3,_ROM_CALL_2A4,_ROM_CALL_2A5,_ROM_CALL_2A6,_ROM_CALL_2A7,_ROM_CALL_2A8,_ROM_CALL_2A9,_ROM_CALL_2AA,_ROM_CALL_2AB,_ROM_CALL_2AC,_ROM_CALL_2AD,_ROM_CALL_2AE,_ROM_CALL_2AF,
  _ROM_CALL_2B0,_ROM_CALL_2B1,_ROM_CALL_2B2,_ROM_CALL_2B3,_ROM_CALL_2B4,_ROM_CALL_2B5,_ROM_CALL_2B6,_ROM_CALL_2B7,_ROM_CALL_2B8,_ROM_CALL_2B9,_ROM_CALL_2BA,_ROM_CALL_2BB,_ROM_CALL_2BC,_ROM_CALL_2BD,_ROM_CALL_2BE,_ROM_CALL_2BF,
  _ROM_CALL_2C0,_ROM_CALL_2C1,_ROM_CALL_2C2,_ROM_CALL_2C3,_ROM_CALL_2C4,_ROM_CALL_2C5,_ROM_CALL_2C6,_ROM_CALL_2C7,_ROM_CALL_2C8,_ROM_CALL_2C9,_ROM_CALL_2CA,_ROM_CALL_2CB,_ROM_CALL_2CC,_ROM_CALL_2CD,_ROM_CALL_2CE,_ROM_CALL_2CF,
  _ROM_CALL_2D0,_ROM_CALL_2D1,_ROM_CALL_2D2,_ROM_CALL_2D3,_ROM_CALL_2D4,_ROM_CALL_2D5,_ROM_CALL_2D6,_ROM_CALL_2D7,_ROM_CALL_2D8,_ROM_CALL_2D9,_ROM_CALL_2DA,_ROM_CALL_2DB,_ROM_CALL_2DC,_ROM_CALL_2DD,_ROM_CALL_2DE,_ROM_CALL_2DF,
  _ROM_CALL_2E0,_ROM_CALL_2E1,_ROM_CALL_2E2,_ROM_CALL_2E3,_ROM_CALL_2E4,_ROM_CALL_2E5,_ROM_CALL_2E6,_ROM_CALL_2E7,_ROM_CALL_2E8,_ROM_CALL_2E9,_ROM_CALL_2EA,_ROM_CALL_2EB,_ROM_CALL_2EC,_ROM_CALL_2ED,_ROM_CALL_2EE,_ROM_CALL_2EF,
  _ROM_CALL_2F0,_ROM_CALL_2F1,_ROM_CALL_2F2,_ROM_CALL_2F3,_ROM_CALL_2F4,_ROM_CALL_2F5,_ROM_CALL_2F6,_ROM_CALL_2F7,_ROM_CALL_2F8,_ROM_CALL_2F9,_ROM_CALL_2FA,_ROM_CALL_2FB,_ROM_CALL_2FC,_ROM_CALL_2FD,_ROM_CALL_2FE,_ROM_CALL_2FF,
  _ROM_CALL_300,_ROM_CALL_301,_ROM_CALL_302,_ROM_CALL_303,_ROM_CALL_304,_ROM_CALL_305,_ROM_CALL_306,_ROM_CALL_307,_ROM_CALL_308,_ROM_CALL_309,_ROM_CALL_30A,_ROM_CALL_30B,_ROM_CALL_30C,_ROM_CALL_30D,_ROM_CALL_30E,_ROM_CALL_30F,
  _ROM_CALL_310,_ROM_CALL_311,_ROM_CALL_312,_ROM_CALL_313,_ROM_CALL_314,_ROM_CALL_315,_ROM_CALL_316,_ROM_CALL_317,_ROM_CALL_318,_ROM_CALL_319,_ROM_CALL_31A,_ROM_CALL_31B,_ROM_CALL_31C,_ROM_CALL_31D,_ROM_CALL_31E,_ROM_CALL_31F,
  _ROM_CALL_320,_ROM_CALL_321,_ROM_CALL_322,_ROM_CALL_323,_ROM_CALL_324,_ROM_CALL_325,_ROM_CALL_326,_ROM_CALL_327,_ROM_CALL_328,_ROM_CALL_329,_ROM_CALL_32A,_ROM_CALL_32B,_ROM_CALL_32C,_ROM_CALL_32D,_ROM_CALL_32E,_ROM_CALL_32F,
  _ROM_CALL_330,_ROM_CALL_331,_ROM_CALL_332,_ROM_CALL_333,_ROM_CALL_334,_ROM_CALL_335,_ROM_CALL_336,_ROM_CALL_337,_ROM_CALL_338,_ROM_CALL_339,_ROM_CALL_33A,_ROM_CALL_33B,_ROM_CALL_33C,_ROM_CALL_33D,_ROM_CALL_33E,_ROM_CALL_33F,
  _ROM_CALL_340,_ROM_CALL_341,_ROM_CALL_342,_ROM_CALL_343,_ROM_CALL_344,_ROM_CALL_345,_ROM_CALL_346,_ROM_CALL_347,_ROM_CALL_348,_ROM_CALL_349,_ROM_CALL_34A,_ROM_CALL_34B,_ROM_CALL_34C,_ROM_CALL_34D,_ROM_CALL_34E,_ROM_CALL_34F,
  _ROM_CALL_350,_ROM_CALL_351,_ROM_CALL_352,_ROM_CALL_353,_ROM_CALL_354,_ROM_CALL_355,_ROM_CALL_356,_ROM_CALL_357,_ROM_CALL_358,_ROM_CALL_359,_ROM_CALL_35A,_ROM_CALL_35B,_ROM_CALL_35C,_ROM_CALL_35D,_ROM_CALL_35E,_ROM_CALL_35F,
  _ROM_CALL_360,_ROM_CALL_361,_ROM_CALL_362,_ROM_CALL_363,_ROM_CALL_364,_ROM_CALL_365,_ROM_CALL_366,_ROM_CALL_367,_ROM_CALL_368,_ROM_CALL_369,_ROM_CALL_36A,_ROM_CALL_36B,_ROM_CALL_36C,_ROM_CALL_36D,_ROM_CALL_36E,_ROM_CALL_36F,
  _ROM_CALL_370,_ROM_CALL_371,_ROM_CALL_372,_ROM_CALL_373,_ROM_CALL_374,_ROM_CALL_375,_ROM_CALL_376,_ROM_CALL_377,_ROM_CALL_378,_ROM_CALL_379,_ROM_CALL_37A,_ROM_CALL_37B,_ROM_CALL_37C,_ROM_CALL_37D,_ROM_CALL_37E,_ROM_CALL_37F,
  _ROM_CALL_380,_ROM_CALL_381,_ROM_CALL_382,_ROM_CALL_383,_ROM_CALL_384,_ROM_CALL_385,_ROM_CALL_386,_ROM_CALL_387,_ROM_CALL_388,_ROM_CALL_389,_ROM_CALL_38A,_ROM_CALL_38B,_ROM_CALL_38C,_ROM_CALL_38D,_ROM_CALL_38E,_ROM_CALL_38F,
  _ROM_CALL_390,_ROM_CALL_391,_ROM_CALL_392,_ROM_CALL_393,_ROM_CALL_394,_ROM_CALL_395,_ROM_CALL_396,_ROM_CALL_397,_ROM_CALL_398,_ROM_CALL_399,_ROM_CALL_39A,_ROM_CALL_39B,_ROM_CALL_39C,_ROM_CALL_39D,_ROM_CALL_39E,_ROM_CALL_39F,
  _ROM_CALL_3A0,_ROM_CALL_3A1,_ROM_CALL_3A2,_ROM_CALL_3A3,_ROM_CALL_3A4,_ROM_CALL_3A5,_ROM_CALL_3A6,_ROM_CALL_3A7,_ROM_CALL_3A8,_ROM_CALL_3A9,_ROM_CALL_3AA,_ROM_CALL_3AB,_ROM_CALL_3AC,_ROM_CALL_3AD,_ROM_CALL_3AE,_ROM_CALL_3AF,
  _ROM_CALL_3B0,_ROM_CALL_3B1,_ROM_CALL_3B2,_ROM_CALL_3B3,_ROM_CALL_3B4,_ROM_CALL_3B5,_ROM_CALL_3B6,_ROM_CALL_3B7,_ROM_CALL_3B8,_ROM_CALL_3B9,_ROM_CALL_3BA,_ROM_CALL_3BB,_ROM_CALL_3BC,_ROM_CALL_3BD,_ROM_CALL_3BE,_ROM_CALL_3BF,
  _ROM_CALL_3C0,_ROM_CALL_3C1,_ROM_CALL_3C2,_ROM_CALL_3C3,_ROM_CALL_3C4,_ROM_CALL_3C5,_ROM_CALL_3C6,_ROM_CALL_3C7,_ROM_CALL_3C8,_ROM_CALL_3C9,_ROM_CALL_3CA,_ROM_CALL_3CB,_ROM_CALL_3CC,_ROM_CALL_3CD,_ROM_CALL_3CE,_ROM_CALL_3CF,
  _ROM_CALL_3D0,_ROM_CALL_3D1,_ROM_CALL_3D2,_ROM_CALL_3D3,_ROM_CALL_3D4,_ROM_CALL_3D5,_ROM_CALL_3D6,_ROM_CALL_3D7,_ROM_CALL_3D8,_ROM_CALL_3D9,_ROM_CALL_3DA,_ROM_CALL_3DB,_ROM_CALL_3DC,_ROM_CALL_3DD,_ROM_CALL_3DE,_ROM_CALL_3DF,
  _ROM_CALL_3E0,_ROM_CALL_3E1,_ROM_CALL_3E2,_ROM_CALL_3E3,_ROM_CALL_3E4,_ROM_CALL_3E5,_ROM_CALL_3E6,_ROM_CALL_3E7,_ROM_CALL_3E8,_ROM_CALL_3E9,_ROM_CALL_3EA,_ROM_CALL_3EB,_ROM_CALL_3EC,_ROM_CALL_3ED,_ROM_CALL_3EE,_ROM_CALL_3EF,
  _ROM_CALL_3F0,_ROM_CALL_3F1,_ROM_CALL_3F2,_ROM_CALL_3F3,_ROM_CALL_3F4,_ROM_CALL_3F5,_ROM_CALL_3F6,_ROM_CALL_3F7,_ROM_CALL_3F8,_ROM_CALL_3F9,_ROM_CALL_3FA,_ROM_CALL_3FB,_ROM_CALL_3FC,_ROM_CALL_3FD,_ROM_CALL_3FE,_ROM_CALL_3FF,
  _ROM_CALL_400,_ROM_CALL_401,_ROM_CALL_402,_ROM_CALL_403,_ROM_CALL_404,_ROM_CALL_405,_ROM_CALL_406,_ROM_CALL_407,_ROM_CALL_408,_ROM_CALL_409,_ROM_CALL_40A,_ROM_CALL_40B,_ROM_CALL_40C,_ROM_CALL_40D,_ROM_CALL_40E,_ROM_CALL_40F,
  _ROM_CALL_410,_ROM_CALL_411,_ROM_CALL_412,_ROM_CALL_413,_ROM_CALL_414,_ROM_CALL_415,_ROM_CALL_416,_ROM_CALL_417,_ROM_CALL_418,_ROM_CALL_419,_ROM_CALL_41A,_ROM_CALL_41B,_ROM_CALL_41C,_ROM_CALL_41D,_ROM_CALL_41E,_ROM_CALL_41F,
  _ROM_CALL_420,_ROM_CALL_421,_ROM_CALL_422,_ROM_CALL_423,_ROM_CALL_424,_ROM_CALL_425,_ROM_CALL_426,_ROM_CALL_427,_ROM_CALL_428,_ROM_CALL_429,_ROM_CALL_42A,_ROM_CALL_42B,_ROM_CALL_42C,_ROM_CALL_42D,_ROM_CALL_42E,_ROM_CALL_42F,
  _ROM_CALL_430,_ROM_CALL_431,_ROM_CALL_432,_ROM_CALL_433,_ROM_CALL_434,_ROM_CALL_435,_ROM_CALL_436,_ROM_CALL_437,_ROM_CALL_438,_ROM_CALL_439,_ROM_CALL_43A,_ROM_CALL_43B,_ROM_CALL_43C,_ROM_CALL_43D,_ROM_CALL_43E,_ROM_CALL_43F,
  _ROM_CALL_440,_ROM_CALL_441,_ROM_CALL_442,_ROM_CALL_443,_ROM_CALL_444,_ROM_CALL_445,_ROM_CALL_446,_ROM_CALL_447,_ROM_CALL_448,_ROM_CALL_449,_ROM_CALL_44A,_ROM_CALL_44B,_ROM_CALL_44C,_ROM_CALL_44D,_ROM_CALL_44E,_ROM_CALL_44F,
  _ROM_CALL_450,_ROM_CALL_451,_ROM_CALL_452,_ROM_CALL_453,_ROM_CALL_454,_ROM_CALL_455,_ROM_CALL_456,_ROM_CALL_457,_ROM_CALL_458,_ROM_CALL_459,_ROM_CALL_45A,_ROM_CALL_45B,_ROM_CALL_45C,_ROM_CALL_45D,_ROM_CALL_45E,_ROM_CALL_45F,
  _ROM_CALL_460,_ROM_CALL_461,_ROM_CALL_462,_ROM_CALL_463,_ROM_CALL_464,_ROM_CALL_465,_ROM_CALL_466,_ROM_CALL_467,_ROM_CALL_468,_ROM_CALL_469,_ROM_CALL_46A,_ROM_CALL_46B,_ROM_CALL_46C,_ROM_CALL_46D,_ROM_CALL_46E,_ROM_CALL_46F,
  _ROM_CALL_470,_ROM_CALL_471,_ROM_CALL_472,_ROM_CALL_473,_ROM_CALL_474,_ROM_CALL_475,_ROM_CALL_476,_ROM_CALL_477,_ROM_CALL_478,_ROM_CALL_479,_ROM_CALL_47A,_ROM_CALL_47B,_ROM_CALL_47C,_ROM_CALL_47D,_ROM_CALL_47E,_ROM_CALL_47F,
  _ROM_CALL_480,_ROM_CALL_481,_ROM_CALL_482,_ROM_CALL_483,_ROM_CALL_484,_ROM_CALL_485,_ROM_CALL_486,_ROM_CALL_487,_ROM_CALL_488,_ROM_CALL_489,_ROM_CALL_48A,_ROM_CALL_48B,_ROM_CALL_48C,_ROM_CALL_48D,_ROM_CALL_48E,_ROM_CALL_48F,
  _ROM_CALL_490,_ROM_CALL_491,_ROM_CALL_492,_ROM_CALL_493,_ROM_CALL_494,_ROM_CALL_495,_ROM_CALL_496,_ROM_CALL_497,_ROM_CALL_498,_ROM_CALL_499,_ROM_CALL_49A,_ROM_CALL_49B,_ROM_CALL_49C,_ROM_CALL_49D,_ROM_CALL_49E,_ROM_CALL_49F,
  _ROM_CALL_4A0,_ROM_CALL_4A1,_ROM_CALL_4A2,_ROM_CALL_4A3,_ROM_CALL_4A4,_ROM_CALL_4A5,_ROM_CALL_4A6,_ROM_CALL_4A7,_ROM_CALL_4A8,_ROM_CALL_4A9,_ROM_CALL_4AA,_ROM_CALL_4AB,_ROM_CALL_4AC,_ROM_CALL_4AD,_ROM_CALL_4AE,_ROM_CALL_4AF,
  _ROM_CALL_4B0,_ROM_CALL_4B1,_ROM_CALL_4B2,_ROM_CALL_4B3,_ROM_CALL_4B4,_ROM_CALL_4B5,_ROM_CALL_4B6,_ROM_CALL_4B7,_ROM_CALL_4B8,_ROM_CALL_4B9,_ROM_CALL_4BA,_ROM_CALL_4BB,_ROM_CALL_4BC,_ROM_CALL_4BD,_ROM_CALL_4BE,_ROM_CALL_4BF,
  _ROM_CALL_4C0,_ROM_CALL_4C1,_ROM_CALL_4C2,_ROM_CALL_4C3,_ROM_CALL_4C4,_ROM_CALL_4C5,_ROM_CALL_4C6,_ROM_CALL_4C7,_ROM_CALL_4C8,_ROM_CALL_4C9,_ROM_CALL_4CA,_ROM_CALL_4CB,_ROM_CALL_4CC,_ROM_CALL_4CD,_ROM_CALL_4CE,_ROM_CALL_4CF,
  _ROM_CALL_4D0,_ROM_CALL_4D1,_ROM_CALL_4D2,_ROM_CALL_4D3,_ROM_CALL_4D4,_ROM_CALL_4D5,_ROM_CALL_4D6,_ROM_CALL_4D7,_ROM_CALL_4D8,_ROM_CALL_4D9,_ROM_CALL_4DA,_ROM_CALL_4DB,_ROM_CALL_4DC,_ROM_CALL_4DD,_ROM_CALL_4DE,_ROM_CALL_4DF,
  _ROM_CALL_4E0,_ROM_CALL_4E1,_ROM_CALL_4E2,_ROM_CALL_4E3,_ROM_CALL_4E4,_ROM_CALL_4E5,_ROM_CALL_4E6,_ROM_CALL_4E7,_ROM_CALL_4E8,_ROM_CALL_4E9,_ROM_CALL_4EA,_ROM_CALL_4EB,_ROM_CALL_4EC,_ROM_CALL_4ED,_ROM_CALL_4EE,_ROM_CALL_4EF,
  _ROM_CALL_4F0,_ROM_CALL_4F1,_ROM_CALL_4F2,_ROM_CALL_4F3,_ROM_CALL_4F4,_ROM_CALL_4F5,_ROM_CALL_4F6,_ROM_CALL_4F7,_ROM_CALL_4F8,_ROM_CALL_4F9,_ROM_CALL_4FA,_ROM_CALL_4FB,_ROM_CALL_4FC,_ROM_CALL_4FD,_ROM_CALL_4FE,_ROM_CALL_4FF,
  _ROM_CALL_500,_ROM_CALL_501,_ROM_CALL_502,_ROM_CALL_503,_ROM_CALL_504,_ROM_CALL_505,_ROM_CALL_506,_ROM_CALL_507,_ROM_CALL_508,_ROM_CALL_509,_ROM_CALL_50A,_ROM_CALL_50B,_ROM_CALL_50C,_ROM_CALL_50D,_ROM_CALL_50E,_ROM_CALL_50F,
  _ROM_CALL_510,_ROM_CALL_511,_ROM_CALL_512,_ROM_CALL_513,_ROM_CALL_514,_ROM_CALL_515,_ROM_CALL_516,_ROM_CALL_517,_ROM_CALL_518,_ROM_CALL_519,_ROM_CALL_51A,_ROM_CALL_51B,_ROM_CALL_51C,_ROM_CALL_51D,_ROM_CALL_51E,_ROM_CALL_51F,
  _ROM_CALL_520,_ROM_CALL_521,_ROM_CALL_522,_ROM_CALL_523,_ROM_CALL_524,_ROM_CALL_525,_ROM_CALL_526,_ROM_CALL_527,_ROM_CALL_528,_ROM_CALL_529,_ROM_CALL_52A,_ROM_CALL_52B,_ROM_CALL_52C,_ROM_CALL_52D,_ROM_CALL_52E,_ROM_CALL_52F,
  _ROM_CALL_530,_ROM_CALL_531,_ROM_CALL_532,_ROM_CALL_533,_ROM_CALL_534,_ROM_CALL_535,_ROM_CALL_536,_ROM_CALL_537,_ROM_CALL_538,_ROM_CALL_539,_ROM_CALL_53A,_ROM_CALL_53B,_ROM_CALL_53C,_ROM_CALL_53D,_ROM_CALL_53E,_ROM_CALL_53F,
  _ROM_CALL_540,_ROM_CALL_541,_ROM_CALL_542,_ROM_CALL_543,_ROM_CALL_544,_ROM_CALL_545,_ROM_CALL_546,_ROM_CALL_547,_ROM_CALL_548,_ROM_CALL_549,_ROM_CALL_54A,_ROM_CALL_54B,_ROM_CALL_54C,_ROM_CALL_54D,_ROM_CALL_54E,_ROM_CALL_54F,
  _ROM_CALL_550,_ROM_CALL_551,_ROM_CALL_552,_ROM_CALL_553,_ROM_CALL_554,_ROM_CALL_555,_ROM_CALL_556,_ROM_CALL_557,_ROM_CALL_558,_ROM_CALL_559,_ROM_CALL_55A,_ROM_CALL_55B,_ROM_CALL_55C,_ROM_CALL_55D,_ROM_CALL_55E,_ROM_CALL_55F,
  _ROM_CALL_560,_ROM_CALL_561,_ROM_CALL_562,_ROM_CALL_563,_ROM_CALL_564,_ROM_CALL_565,_ROM_CALL_566,_ROM_CALL_567,_ROM_CALL_568,_ROM_CALL_569,_ROM_CALL_56A,_ROM_CALL_56B,_ROM_CALL_56C,_ROM_CALL_56D,_ROM_CALL_56E,_ROM_CALL_56F,
  _ROM_CALL_570,_ROM_CALL_571,_ROM_CALL_572,_ROM_CALL_573,_ROM_CALL_574,_ROM_CALL_575,_ROM_CALL_576,_ROM_CALL_577,_ROM_CALL_578,_ROM_CALL_579,_ROM_CALL_57A,_ROM_CALL_57B,_ROM_CALL_57C,_ROM_CALL_57D,_ROM_CALL_57E,_ROM_CALL_57F,
  _ROM_CALL_580,_ROM_CALL_581,_ROM_CALL_582,_ROM_CALL_583,_ROM_CALL_584,_ROM_CALL_585,_ROM_CALL_586,_ROM_CALL_587,_ROM_CALL_588,_ROM_CALL_589,_ROM_CALL_58A,_ROM_CALL_58B,_ROM_CALL_58C,_ROM_CALL_58D,_ROM_CALL_58E,_ROM_CALL_58F,
  _ROM_CALL_590,_ROM_CALL_591,_ROM_CALL_592,_ROM_CALL_593,_ROM_CALL_594,_ROM_CALL_595,_ROM_CALL_596,_ROM_CALL_597,_ROM_CALL_598,_ROM_CALL_599,_ROM_CALL_59A,_ROM_CALL_59B,_ROM_CALL_59C,_ROM_CALL_59D,_ROM_CALL_59E,_ROM_CALL_59F,
  _ROM_CALL_5A0,_ROM_CALL_5A1,_ROM_CALL_5A2,_ROM_CALL_5A3,_ROM_CALL_5A4,_ROM_CALL_5A5,_ROM_CALL_5A6,_ROM_CALL_5A7,_ROM_CALL_5A8,_ROM_CALL_5A9,_ROM_CALL_5AA,_ROM_CALL_5AB,_ROM_CALL_5AC,_ROM_CALL_5AD,_ROM_CALL_5AE,_ROM_CALL_5AF,
  _ROM_CALL_5B0,_ROM_CALL_5B1,_ROM_CALL_5B2,_ROM_CALL_5B3,_ROM_CALL_5B4,_ROM_CALL_5B5,_ROM_CALL_5B6,_ROM_CALL_5B7,_ROM_CALL_5B8,_ROM_CALL_5B9,_ROM_CALL_5BA,_ROM_CALL_5BB,_ROM_CALL_5BC,_ROM_CALL_5BD,_ROM_CALL_5BE,_ROM_CALL_5BF,
  _ROM_CALL_5C0,_ROM_CALL_5C1,_ROM_CALL_5C2,_ROM_CALL_5C3,_ROM_CALL_5C4,_ROM_CALL_5C5,_ROM_CALL_5C6,_ROM_CALL_5C7,_ROM_CALL_5C8,_ROM_CALL_5C9,_ROM_CALL_5CA,_ROM_CALL_5CB,_ROM_CALL_5CC,_ROM_CALL_5CD,_ROM_CALL_5CE,_ROM_CALL_5CF,
  _ROM_CALL_5D0,_ROM_CALL_5D1,_ROM_CALL_5D2,_ROM_CALL_5D3,_ROM_CALL_5D4,_ROM_CALL_5D5,_ROM_CALL_5D6,_ROM_CALL_5D7,_ROM_CALL_5D8,_ROM_CALL_5D9,_ROM_CALL_5DA,_ROM_CALL_5DB,_ROM_CALL_5DC,_ROM_CALL_5DD,_ROM_CALL_5DE,_ROM_CALL_5DF,
  _ROM_CALL_5E0,_ROM_CALL_5E1,_ROM_CALL_5E2,_ROM_CALL_5E3,_ROM_CALL_5E4,_ROM_CALL_5E5,_ROM_CALL_5E6,_ROM_CALL_5E7,_ROM_CALL_5E8,_ROM_CALL_5E9,_ROM_CALL_5EA,_ROM_CALL_5EB,_ROM_CALL_5EC,_ROM_CALL_5ED,_ROM_CALL_5EE,_ROM_CALL_5EF,
  _ROM_CALL_5F0,_ROM_CALL_5F1,_ROM_CALL_5F2,_ROM_CALL_5F3,_ROM_CALL_5F4,_ROM_CALL_5F5,_ROM_CALL_5F6,_ROM_CALL_5F7,_ROM_CALL_5F8,_ROM_CALL_5F9,_ROM_CALL_5FA,_ROM_CALL_5FB,_ROM_CALL_5FC,_ROM_CALL_5FD,_ROM_CALL_5FE,_ROM_CALL_5FF,
  _ROM_CALL_600,_ROM_CALL_601,_ROM_CALL_602,_ROM_CALL_603,_ROM_CALL_604,_ROM_CALL_605,_ROM_CALL_606,_ROM_CALL_607,_ROM_CALL_608,_ROM_CALL_609,_ROM_CALL_60A,_ROM_CALL_60B,_ROM_CALL_60C,_ROM_CALL_60D,_ROM_CALL_60E,_ROM_CALL_60F,
  _ROM_CALL_610,_ROM_CALL_611,_ROM_CALL_612,_ROM_CALL_613,_ROM_CALL_614,_ROM_CALL_615,_ROM_CALL_616,_ROM_CALL_617,_ROM_CALL_618,_ROM_CALL_619,_ROM_CALL_61A,_ROM_CALL_61B,_ROM_CALL_61C,_ROM_CALL_61D,_ROM_CALL_61E,_ROM_CALL_61F,
  _ROM_CALL_620,_ROM_CALL_621,_ROM_CALL_622,_ROM_CALL_623,_ROM_CALL_624,_ROM_CALL_625,_ROM_CALL_626,_ROM_CALL_627,_ROM_CALL_628,_ROM_CALL_629,_ROM_CALL_62A,_ROM_CALL_62B,_ROM_CALL_62C,_ROM_CALL_62D,_ROM_CALL_62E,_ROM_CALL_62F,
  _ROM_CALL_630,_ROM_CALL_631,_ROM_CALL_632,_ROM_CALL_633,_ROM_CALL_634,_ROM_CALL_635,_ROM_CALL_636,_ROM_CALL_637,_ROM_CALL_638,_ROM_CALL_639,_ROM_CALL_63A,_ROM_CALL_63B,_ROM_CALL_63C,_ROM_CALL_63D,_ROM_CALL_63E,_ROM_CALL_63F,
  _ROM_CALL_640,_ROM_CALL_641,_ROM_CALL_642,_ROM_CALL_643,_ROM_CALL_644,_ROM_CALL_645,_ROM_CALL_646,_ROM_CALL_647,_ROM_CALL_648,_ROM_CALL_649,_ROM_CALL_64A,_ROM_CALL_64B,_ROM_CALL_64C,_ROM_CALL_64D,_ROM_CALL_64E,_ROM_CALL_64F,
  _ROM_CALL_650,_ROM_CALL_651,_ROM_CALL_652,_ROM_CALL_653,_ROM_CALL_654,_ROM_CALL_655,_ROM_CALL_656,_ROM_CALL_657,_ROM_CALL_658,_ROM_CALL_659,_ROM_CALL_65A,_ROM_CALL_65B,_ROM_CALL_65C,_ROM_CALL_65D,_ROM_CALL_65E,_ROM_CALL_65F,
  _ROM_CALL_660,_ROM_CALL_661,_ROM_CALL_662,_ROM_CALL_663,_ROM_CALL_664,_ROM_CALL_665,_ROM_CALL_666,_ROM_CALL_667,_ROM_CALL_668,_ROM_CALL_669,_ROM_CALL_66A,_ROM_CALL_66B,_ROM_CALL_66C,_ROM_CALL_66D,_ROM_CALL_66E,_ROM_CALL_66F,
  _ROM_CALL_670,_ROM_CALL_671,_ROM_CALL_672,_ROM_CALL_673,_ROM_CALL_674,_ROM_CALL_675,_ROM_CALL_676,_ROM_CALL_677,_ROM_CALL_678,_ROM_CALL_679,_ROM_CALL_67A,_ROM_CALL_67B,_ROM_CALL_67C,_ROM_CALL_67D,_ROM_CALL_67E,_ROM_CALL_67F,
  _ROM_CALL_680,_ROM_CALL_681,_ROM_CALL_682,_ROM_CALL_683,_ROM_CALL_684,_ROM_CALL_685,_ROM_CALL_686,_ROM_CALL_687,_ROM_CALL_688,_ROM_CALL_689,_ROM_CALL_68A,_ROM_CALL_68B,_ROM_CALL_68C,_ROM_CALL_68D,_ROM_CALL_68E,_ROM_CALL_68F,
  _ROM_CALL_690,_ROM_CALL_691,_ROM_CALL_692,_ROM_CALL_693,_ROM_CALL_694,_ROM_CALL_695,_ROM_CALL_696,_ROM_CALL_697,_ROM_CALL_698,_ROM_CALL_699,_ROM_CALL_69A,_ROM_CALL_69B,_ROM_CALL_69C,_ROM_CALL_69D,_ROM_CALL_69E,_ROM_CALL_69F,
  _ROM_CALL_6A0,_ROM_CALL_6A1,_ROM_CALL_6A2,_ROM_CALL_6A3,_ROM_CALL_6A4,_ROM_CALL_6A5,_ROM_CALL_6A6,_ROM_CALL_6A7,_ROM_CALL_6A8,_ROM_CALL_6A9,_ROM_CALL_6AA,_ROM_CALL_6AB,_ROM_CALL_6AC,_ROM_CALL_6AD,_ROM_CALL_6AE,_ROM_CALL_6AF,
  _ROM_CALL_6B0,_ROM_CALL_6B1,_ROM_CALL_6B2,_ROM_CALL_6B3,_ROM_CALL_6B4,_ROM_CALL_6B5,_ROM_CALL_6B6,_ROM_CALL_6B7,_ROM_CALL_6B8,_ROM_CALL_6B9,_ROM_CALL_6BA,_ROM_CALL_6BB,_ROM_CALL_6BC,_ROM_CALL_6BD,_ROM_CALL_6BE,_ROM_CALL_6BF,
  _ROM_CALL_6C0,_ROM_CALL_6C1,_ROM_CALL_6C2,_ROM_CALL_6C3,_ROM_CALL_6C4,_ROM_CALL_6C5,_ROM_CALL_6C6,_ROM_CALL_6C7,_ROM_CALL_6C8,_ROM_CALL_6C9,_ROM_CALL_6CA,_ROM_CALL_6CB,_ROM_CALL_6CC,_ROM_CALL_6CD,_ROM_CALL_6CE,_ROM_CALL_6CF,
  _ROM_CALL_6D0,_ROM_CALL_6D1,_ROM_CALL_6D2,_ROM_CALL_6D3,_ROM_CALL_6D4,_ROM_CALL_6D5,_ROM_CALL_6D6,_ROM_CALL_6D7,_ROM_CALL_6D8,_ROM_CALL_6D9,_ROM_CALL_6DA,_ROM_CALL_6DB,_ROM_CALL_6DC,_ROM_CALL_6DD,_ROM_CALL_6DE,_ROM_CALL_6DF,
  _ROM_CALL_6E0,_ROM_CALL_6E1,_ROM_CALL_6E2,_ROM_CALL_6E3,_ROM_CALL_6E4,_ROM_CALL_6E5,_ROM_CALL_6E6,_ROM_CALL_6E7,_ROM_CALL_6E8,_ROM_CALL_6E9,_ROM_CALL_6EA,_ROM_CALL_6EB,_ROM_CALL_6EC,_ROM_CALL_6ED,_ROM_CALL_6EE,_ROM_CALL_6EF,
  _ROM_CALL_6F0,_ROM_CALL_6F1,_ROM_CALL_6F2,_ROM_CALL_6F3,_ROM_CALL_6F4,_ROM_CALL_6F5,_ROM_CALL_6F6,_ROM_CALL_6F7,_ROM_CALL_6F8,_ROM_CALL_6F9,_ROM_CALL_6FA,_ROM_CALL_6FB,_ROM_CALL_6FC,_ROM_CALL_6FD,_ROM_CALL_6FE,_ROM_CALL_6FF,
  _ROM_CALL_700,_ROM_CALL_701,_ROM_CALL_702,_ROM_CALL_703,_ROM_CALL_704,_ROM_CALL_705,_ROM_CALL_706,_ROM_CALL_707,_ROM_CALL_708,_ROM_CALL_709,_ROM_CALL_70A,_ROM_CALL_70B,_ROM_CALL_70C,_ROM_CALL_70D,_ROM_CALL_70E,_ROM_CALL_70F,
  _ROM_CALL_710,_ROM_CALL_711,_ROM_CALL_712,_ROM_CALL_713,_ROM_CALL_714,_ROM_CALL_715,_ROM_CALL_716,_ROM_CALL_717,_ROM_CALL_718,_ROM_CALL_719,_ROM_CALL_71A,_ROM_CALL_71B,_ROM_CALL_71C,_ROM_CALL_71D,_ROM_CALL_71E,_ROM_CALL_71F,
  _ROM_CALL_720,_ROM_CALL_721,_ROM_CALL_722,_ROM_CALL_723,_ROM_CALL_724,_ROM_CALL_725,_ROM_CALL_726,_ROM_CALL_727,_ROM_CALL_728,_ROM_CALL_729,_ROM_CALL_72A,_ROM_CALL_72B,_ROM_CALL_72C,_ROM_CALL_72D,_ROM_CALL_72E,_ROM_CALL_72F,
  _ROM_CALL_730,_ROM_CALL_731,_ROM_CALL_732,_ROM_CALL_733,_ROM_CALL_734,_ROM_CALL_735,_ROM_CALL_736,_ROM_CALL_737,_ROM_CALL_738,_ROM_CALL_739,_ROM_CALL_73A,_ROM_CALL_73B,_ROM_CALL_73C,_ROM_CALL_73D,_ROM_CALL_73E,_ROM_CALL_73F,
  _ROM_CALL_740,_ROM_CALL_741,_ROM_CALL_742,_ROM_CALL_743,_ROM_CALL_744,_ROM_CALL_745,_ROM_CALL_746,_ROM_CALL_747,_ROM_CALL_748,_ROM_CALL_749,_ROM_CALL_74A,_ROM_CALL_74B,_ROM_CALL_74C,_ROM_CALL_74D,_ROM_CALL_74E,_ROM_CALL_74F,
  _ROM_CALL_750,_ROM_CALL_751,_ROM_CALL_752,_ROM_CALL_753,_ROM_CALL_754,_ROM_CALL_755,_ROM_CALL_756,_ROM_CALL_757,_ROM_CALL_758,_ROM_CALL_759,_ROM_CALL_75A,_ROM_CALL_75B,_ROM_CALL_75C,_ROM_CALL_75D,_ROM_CALL_75E,_ROM_CALL_75F,
  _ROM_CALL_760,_ROM_CALL_761,_ROM_CALL_762,_ROM_CALL_763,_ROM_CALL_764,_ROM_CALL_765,_ROM_CALL_766,_ROM_CALL_767,_ROM_CALL_768,_ROM_CALL_769,_ROM_CALL_76A,_ROM_CALL_76B,_ROM_CALL_76C,_ROM_CALL_76D,_ROM_CALL_76E,_ROM_CALL_76F,
  _ROM_CALL_770,_ROM_CALL_771,_ROM_CALL_772,_ROM_CALL_773,_ROM_CALL_774,_ROM_CALL_775,_ROM_CALL_776,_ROM_CALL_777,_ROM_CALL_778,_ROM_CALL_779,_ROM_CALL_77A,_ROM_CALL_77B,_ROM_CALL_77C,_ROM_CALL_77D,_ROM_CALL_77E,_ROM_CALL_77F,
  _ROM_CALL_780,_ROM_CALL_781,_ROM_CALL_782,_ROM_CALL_783,_ROM_CALL_784,_ROM_CALL_785,_ROM_CALL_786,_ROM_CALL_787,_ROM_CALL_788,_ROM_CALL_789,_ROM_CALL_78A,_ROM_CALL_78B,_ROM_CALL_78C,_ROM_CALL_78D,_ROM_CALL_78E,_ROM_CALL_78F,
  _ROM_CALL_790,_ROM_CALL_791,_ROM_CALL_792,_ROM_CALL_793,_ROM_CALL_794,_ROM_CALL_795,_ROM_CALL_796,_ROM_CALL_797,_ROM_CALL_798,_ROM_CALL_799,_ROM_CALL_79A,_ROM_CALL_79B,_ROM_CALL_79C,_ROM_CALL_79D,_ROM_CALL_79E,_ROM_CALL_79F,
  _ROM_CALL_7A0,_ROM_CALL_7A1,_ROM_CALL_7A2,_ROM_CALL_7A3,_ROM_CALL_7A4,_ROM_CALL_7A5,_ROM_CALL_7A6,_ROM_CALL_7A7,_ROM_CALL_7A8,_ROM_CALL_7A9,_ROM_CALL_7AA,_ROM_CALL_7AB,_ROM_CALL_7AC,_ROM_CALL_7AD,_ROM_CALL_7AE,_ROM_CALL_7AF,
  _ROM_CALL_7B0,_ROM_CALL_7B1,_ROM_CALL_7B2,_ROM_CALL_7B3,_ROM_CALL_7B4,_ROM_CALL_7B5,_ROM_CALL_7B6,_ROM_CALL_7B7,_ROM_CALL_7B8,_ROM_CALL_7B9,_ROM_CALL_7BA,_ROM_CALL_7BB,_ROM_CALL_7BC,_ROM_CALL_7BD,_ROM_CALL_7BE,_ROM_CALL_7BF,
  _ROM_CALL_7C0,_ROM_CALL_7C1,_ROM_CALL_7C2,_ROM_CALL_7C3,_ROM_CALL_7C4,_ROM_CALL_7C5,_ROM_CALL_7C6,_ROM_CALL_7C7,_ROM_CALL_7C8,_ROM_CALL_7C9,_ROM_CALL_7CA,_ROM_CALL_7CB,_ROM_CALL_7CC,_ROM_CALL_7CD,_ROM_CALL_7CE,_ROM_CALL_7CF,
  _ROM_CALL_7D0,_ROM_CALL_7D1,_ROM_CALL_7D2,_ROM_CALL_7D3,_ROM_CALL_7D4,_ROM_CALL_7D5,_ROM_CALL_7D6,_ROM_CALL_7D7,_ROM_CALL_7D8,_ROM_CALL_7D9,_ROM_CALL_7DA,_ROM_CALL_7DB,_ROM_CALL_7DC,_ROM_CALL_7DD,_ROM_CALL_7DE,_ROM_CALL_7DF,
  _ROM_CALL_7E0,_ROM_CALL_7E1,_ROM_CALL_7E2,_ROM_CALL_7E3,_ROM_CALL_7E4,_ROM_CALL_7E5,_ROM_CALL_7E6,_ROM_CALL_7E7,_ROM_CALL_7E8,_ROM_CALL_7E9,_ROM_CALL_7EA,_ROM_CALL_7EB,_ROM_CALL_7EC,_ROM_CALL_7ED,_ROM_CALL_7EE,_ROM_CALL_7EF,
  _ROM_CALL_7F0,_ROM_CALL_7F1,_ROM_CALL_7F2,_ROM_CALL_7F3,_ROM_CALL_7F4,_ROM_CALL_7F5,_ROM_CALL_7F6,_ROM_CALL_7F7,_ROM_CALL_7F8,_ROM_CALL_7F9,_ROM_CALL_7FA,_ROM_CALL_7FB,_ROM_CALL_7FC,_ROM_CALL_7FD,_ROM_CALL_7FE,_ROM_CALL_7FF;

#define _rom_call(type,args,index) (_rom_call_concat(type,args,0x##index,_ROM_CALL_##index))
#define _rom_call_addr(index) (_rom_call_addr_concat(0x##index,_ROM_CALL_##index))
#define _rom_call_addr_concat(intindex,romindex) (&romindex)
#define __rom_call_addr_concat(intindex,romindex) (&romindex)
#define _rom_call_attr(type,args,attr,index) (*({typedef __ATTR_TIOS__ attr type(*__temp__type__)args;(__temp__type__)(__rom_call_addr_concat(0x##index,_ROM_CALL_##index));}))
#define _rom_call_attr(type,args,attr,index) (*({typedef __ATTR_TIOS__ attr type(*__temp__type__)args;(__temp__type__)(__rom_call_addr_concat(0x##index,_ROM_CALL_##index));}))
#define _rom_call_concat(type,args,intindex,romindex) (*((type(*__ATTR_TIOS__)args)(__rom_call_addr_concat(intindex,romindex))))
#define import_binary(filename,symname) asm(".globl "#symname"\n"#symname":\n\t.incbin \""filename"\"")

/* Kernel RAM_CALLS */
extern void
	_RAM_CALL_0,_RAM_CALL_1,_RAM_CALL_2,_RAM_CALL_3,
	_RAM_CALL_4,_RAM_CALL_5,_RAM_CALL_6,_RAM_CALL_7,
	_RAM_CALL_8,_RAM_CALL_9,_RAM_CALL_A,_RAM_CALL_B,
	_RAM_CALL_C,_RAM_CALL_D,_RAM_CALL_E,_RAM_CALL_F,
	_RAM_CALL_10,_RAM_CALL_11,_RAM_CALL_12,_RAM_CALL_13,
	_RAM_CALL_14,_RAM_CALL_21,_RAM_CALL_22,_RAM_CALL_23,
	_RAM_CALL_24,_RAM_CALL_25,_RAM_CALL_26,_RAM_CALL_27,
	_RAM_CALL_28,_RAM_CALL_2D,_RAM_CALL_2E;
#define __RAM_CALL(n,type) ((type)&_RAM_CALL_##n)

/* Define Kernel values -- pass 2 */
#define __CALCULATOR    __RAM_CALL(0, const unsigned char*)
#define CALCULATOR	(__CALCULATOR[0])
#define HW_VERSION	(__CALCULATOR[1])
#define EMULATOR	(__CALCULATOR[3])
#define font_medium	__RAM_CALL(E, const void*)
#define font_small	__RAM_CALL(22, const void*)
#define font_large	__RAM_CALL(23, const void *)
#define	LCD_MEM		__RAM_CALL(21, void*)
#define LCD_WIDTH	__RAM_CALL (1, unsigned long)
#define LCD_HEIGHT	__RAM_CALL (2, unsigned long)
#define LCD_LINE_BYTES	__RAM_CALL (4, unsigned long)
#define LCD_SIZE	__RAM_CALL (C, unsigned long)
#define	ROM_BASE	__RAM_CALL(3, unsigned char *)
#define	RETURN_VALUE	(*(unsigned char **)_RAM_CALL_F = *(unsigned char **)_ROM_CALL_109)
#define Heap		__RAM_CALL(11, void***)
#define FOLDER_LIST_HANDLE __RAM_CALL (12, unsigned long)
#define MainHandle	__RAM_CALL (13, unsigned long)
#define ROM_VERSION	__RAM_CALL (14, unsigned long)
#define kb_globals	__RAM_CALL(10, void*)
#define KEY_PRESSED_FLAG (*(unsigned short*)(kb_globals+0x1C))
#define GETKEY_CODE	(*(unsigned short*)(kb_globals+0x1E))
#define KEY_LEFT	__RAM_CALL(5, unsigned long)
#define KEY_RIGHT	__RAM_CALL(6, unsigned long)
#define KEY_UP		__RAM_CALL(7, unsigned long)
#define KEY_DOWN	__RAM_CALL(8, unsigned long)
#define KEY_UPRIGHT	__RAM_CALL(9, unsigned long)
#define KEY_DOWNLEFT	__RAM_CALL(A, unsigned long)
#define KEY_DIAMOND	__RAM_CALL(B, unsigned long)
#define KEY_SHIFT	__RAM_CALL(D, unsigned long)
#define	ROM_BASE	__RAM_CALL(3, unsigned char *)
#define	GHOST_SPACE	__RAM_CALL(2D, unsigned char *)
#define	KERNEL_SPACE	__RAM_CALL(2E, unsigned char *)

typedef unsigned short *__pushort;	  
typedef short *__pshort;
typedef long *__plong;
typedef unsigned long *__pulong;

/* Define commun struct */
typedef unsigned char	ESQ;
typedef const ESQ	*CESI;
typedef ESQ		*ESI;
typedef struct{unsigned short Size;ESQ Expr[];}MULTI_EXPR;
typedef CESI 		SYM_STR;
typedef	unsigned short	HANDLE;
typedef struct{HANDLE folder;unsigned short offset;}HSym;
typedef struct{char name[8];unsigned short compat;union{unsigned short flags_n;struct{unsigned int busy:1,local:1,flag1_5:1,flag1_4:1,collapsed:1,twin:1,archived:1,in_view:1;unsigned int folder:1,overwritten:1,checked:1,hidden:1,locked:1,statvar:1,graph_ref_1:1,graph_ref_0:1;}bits;}flags;HANDLE handle;}SYM_ENTRY;
typedef unsigned long 	size_t;
typedef struct{unsigned short exponent;unsigned long long mantissa;}bcd __attribute__((__may_alias__));
typedef float ti_float;
typedef struct{unsigned short Field;unsigned short HdrLen;unsigned long Len;void*Data;}CERT_FIELD;
typedef struct{void*Start,*Pos,*End;short EOFVal;}CFILE;
typedef union{struct{unsigned char x0,y0,x1,y1;}xy;unsigned long l;}SCR_RECT;
typedef struct{short x0,y0,x1,y1;}WIN_RECT;
typedef struct{void*ScrAddr;unsigned char XMax,YMax;short CurFont,CurAttr,CurX,CurY;SCR_RECT CurClip;}SCR_STATE;
typedef struct WindowStruct{unsigned short Flags;unsigned char CurFont;unsigned char CurAttr;unsigned char Background;short TaskId;short CurX,CurY;short CursorX,CursorY;SCR_RECT Client;SCR_RECT Window;SCR_RECT Clip;SCR_RECT Port;unsigned short DupScr;struct WindowStruct*Next;char*Title;SCR_STATE savedScrState;unsigned char Reserved[16];}WINDOW;
typedef CALLBACK short(*DialogNew_t)(short x,long y);
typedef CALLBACK unsigned short(*CESI_Callback_t)(CESI);
typedef CALLBACK unsigned short(*ESI_Callback_Int_t)(ESI,unsigned short);
typedef CALLBACK void(*ESI_Callback_t)(ESI);
typedef struct ErrorFrameStruct{unsigned long A2,A3,A4,A5,A6,A7;unsigned long D3,D4,D5,D6,D7;unsigned long NG_control;char*RetIndex;unsigned long PC;struct ErrorFrameStruct*Link;}ERROR_FRAME[1];
typedef struct EventStruct{unsigned short Type;unsigned short RunningApp;unsigned short Side;unsigned short StatusFlags;union{WINDOW*w;WIN_RECT*r;char*pasteText;HANDLE hPasteText;struct{unsigned short Mod;unsigned short Code;}Key;}extra;unsigned char StartType;}EVENT;
typedef void(*EVENT_HANDLER)(EVENT*)CALLBACK;
typedef struct{unsigned short CurrentFolder;unsigned short SplitScreen;unsigned short NumGraphs;unsigned short Graph1;unsigned short Graph2;unsigned short Split1App;unsigned short Split2App;unsigned short SplitRatio;unsigned short Angle;unsigned short ExactApprox;unsigned short Fix;unsigned short Exp;unsigned short Vector;unsigned short Complex;unsigned short Pretty;unsigned short Base;unsigned short UnitSystem;unsigned short CustomUnits;}MO_OPTIONS;
typedef struct{unsigned short len;unsigned long hardwareID;unsigned long hardwareRevision;unsigned long bootMajor;unsigned long bootRevision;unsigned long bootBuild;unsigned long gateArray;unsigned long physDisplayBitsWide;unsigned long physDisplayBitsTall;unsigned long LCDBitsWide;unsigned long LCDBitsTall;}HARDWARE_PARM_BLOCK;
typedef unsigned char SCR_COORDS;
typedef short WIN_COORDS;
typedef struct{unsigned short NumRows,NumCols;unsigned char Data[];}BITMAP;
typedef struct{unsigned short i[16];}ICON;
typedef struct{unsigned char Count;struct{unsigned char Attr,x0,y0,x1,y1;}Data[];}MULTI_LINE;
typedef unsigned short*pICON;
typedef void(*__HS_pushEmptyFIFONode__type__)(short)__ATTR_TIOS__;
typedef struct{short ScreenLeft;long ScreenBottom;long XStart;unsigned short Width;unsigned short Height;short Top;HANDLE Expr;short TooLong;short PrettyPrint;unsigned short Exp;unsigned short Fix;}FIFO_ELEMENT;
typedef struct{FIFO_ELEMENT Entry;FIFO_ELEMENT Ans;HANDLE Prev;HANDLE Next;}FIFO_NODE;
typedef struct __attribute__((__may_alias__)){short foo;}_DEREF_INT_HANDLER,*INT_HANDLER;
typedef struct{unsigned short hVar;union{const void*pVar;struct{unsigned short FindFlags;unsigned short NameSym;}DirVars;}extra;const char*VarName;unsigned short VarSize;unsigned short Index;unsigned short Unknown;unsigned char VarType;unsigned char VarCompat;}LIO_CTX;
typedef struct{unsigned char Len;unsigned char Data[];}BN;
typedef struct{unsigned long state[4];unsigned long count[2];unsigned char buffer[64];}MD5_CTX;
typedef struct{unsigned long D2,D3,D4,D5,D6,D7;unsigned long A2,A3,A4,A5,A6,A7;unsigned long PC;}JMP_BUF[1];
typedef struct{WINDOW*w;WIN_RECT rect;long value;long low,high;long logwidth;short physwidth;}ST_PROGRESS_BAR;
typedef void*va_list;
typedef struct{char*fpos;void*base;unsigned short handle;short flags;short unget;unsigned long alloc;unsigned short buffincrement;}FILE;
typedef unsigned long fpos_t;
typedef CALLBACK void(*vcbprintf_Callback_t)(char c,void**param);
typedef CALLBACK short(*vcbscanf_get_Callback_t)(void*param);
typedef CALLBACK short(*vcbscanf_unget_Callback_t)(void*param);
typedef void(*__vcbprintf__type__)(vcbprintf_Callback_t,void**,const char*,void*)__ATTR_TIOS__;
typedef struct {char *buffer; unsigned short pos;} __sscanf_string;
typedef CALLBACK void(*atexit_t)(void);
typedef CALLBACK short(*compare_t)(const void*elem1,const void*elem2);
typedef struct{short quot,rem;}div_t;
typedef struct{long quot,rem;}ldiv_t;
typedef struct{unsigned short Head;unsigned short Tail;unsigned short Size;unsigned short Used;unsigned short Buffer[];}DEF_QUEUE;
typedef CALLBACK void(*Timer_Callback_t)(void);
typedef struct{unsigned short len;unsigned char releaseVersionMajor;unsigned char releaseVersionMinor;unsigned short releaseDateYear;unsigned char releaseDateMonth;unsigned char releaseDateDay;}BASECODE_PARM_BLOCK;
typedef struct TextEditStruct{WINDOW*Parent;unsigned short ReadOnly;WIN_RECT Rect;unsigned short BufSize;unsigned short CurSize;unsigned short CursorOffset;unsigned short StartOffset;unsigned short PreChars;unsigned short CharWidth;unsigned short CharHeight;unsigned short LineNum;unsigned short CursorX;unsigned short Flags;union{HANDLE h;const char*p;}Text;}TEXT_EDIT;

/* Define commun flags */
enum Bool{FALSE,TRUE};
enum CompatFlags{CF_NONE=0,CF_CONVERT=1,CF_ENHANCED=2,CF_NEW=3};
enum ExtendedSysTypes {SEQ_INITC=7,DE_INITC=8,DE_FLDPIC=9,SOLVER_SYS_VARS=10,UNIT_VAR=11,C_COL=12,R_REGEQ=13,R_SYSVAR=14};
enum FindOptions {FO_SINGLE_FOLDER=0x01,FO_RECURSE=0x02,FO_SKIP_TEMPS=0x04,FO_NOTEMPS=0x04,FO_RETURN_TWINS=0x08,FO_CKTWINS=0x08,FO_RETURN_FOLDER=0x10,FO_SKIP_COLLAPSE=0x20};
enum FolderOpFlags{FOP_UNLOCK=0,FOP_LOCK=1,FOP_ALL_FOLDERS=0x80};
enum FolderStats{MAIN_FOLDER=2,FOLDER_TABLE=3,NOT_FOUND=4,BAD_FOLDER=5};
enum SymFlags {SF_GREF1=0x0001,SF_GREF2=0x0002,SF_STATVAR=0x0004,SF_LOCKED=0x0008,SF_HIDDEN=0x0010,SF_OPEN=0x0010,SF_CHECKED=0x0020,SF_OVERWRITTEN=0x0040,SF_FOLDER=0x0080,SF_INVIEW=0x0100,SF_ARCHIVED=0x0200,SF_TWIN=0x0400,SF_COLLAPSED=0x0800,SF_LOCAL=0x4000,SF_BUSY=0x8000};
enum SystemDataTypes {SDT_EXPR=0,SDT_LIST=1,SDT_MAT=2,SDT_FUNC=3,SDT_PRGM=4,SDT_PIC=5,SDT_STR=6,SDT_TEXT=7,SDT_GDB=8,SDT_DATA=9,SDT_FIG=10,SDT_MAC=11,SDT_OTH=12,SDT_SYS=13,SDT_ALL=14,SDT_ASM=15};
enum VarRecallFlags{VR_NO_SYS_VARS=0x01,VR_FUNC_NAME=0x02,VR_LINK=0x04};
enum VarStoreFlags{STOF_ESI=0x4000,STOF_ELEMENT=0x4001,STOF_NONE=0x4002,STOF_HESI=0x4003};
enum Tags {VAR_NAME_TAG=0x00,_VAR_Q_TAG=0x01,VAR_R_TAG=0x02,VAR_S_TAG=0x03,VAR_T_TAG=0x04,VAR_U_TAG=0x05,VAR_V_TAG=0x06,VAR_W_TAG=0x07,VAR_X_TAG=0x08,VAR_Y_TAG=0x09,VAR_Z_TAG=0x0A,VAR_A_TAG=0x0B,VAR_B_TAG=0x0C,VAR_C_TAG=0x0D,VAR_D_TAG=0x0E,VAR_E_TAG=0x0F,VAR_F_TAG=0x10,VAR_G_TAG=0x11,VAR_H_TAG=0x12,VAR_I_TAG=0x13,VAR_J_TAG=0x14,VAR_K_TAG=0x15,VAR_L_TAG=0x16,VAR_M_TAG=0x17,VAR_N_TAG=0x18,VAR_O_TAG=0x19,VAR_P_TAG=0x1A,VAR_Q_TAG=0x1B,EXT_SYSTEM_TAG=0x1C,ARB_REAL_TAG=0x1D,ARB_INT_TAG=0x1E,POSINT_TAG=0x1F,NEGINT_TAG=0x20,POSFRAC_TAG=0x21,NEGFRAC_TAG=0x22,FLOAT_TAG=0x23,BCD_TAG=0x23,PI_TAG=0x24,EXP_TAG=0x25,IM_TAG=0x26,NEGINFINITY_TAG=0x27,INFINITY_TAG=0x28,PN_INFINITY_TAG=0x29,UNDEF_TAG=0x2A,FALSE_TAG=0x2B,TRUE_TAG=0x2C,STR_TAG=0x2D,NOTHING_TAG=0x2E,ACOSH_TAG=0x2F,ASINH_TAG=0x30,ATANH_TAG=0x31,ASECH_TAG=0x32,ACSCH_TAG=0x33,ACOTH_TAG=0x34,COSH_TAG=0x35,SINH_TAG=0x36,TANH_TAG=0x37,SECH_TAG=0x38,CSCH_TAG=0x39,COTH_TAG=0x3A,ACOS_TAG=0x3B,ASIN_TAG=0x3C,ATAN_TAG=0x3D,ASEC_TAG=0x3E,ACSC_TAG=0x3F,ACOT_TAG=0x40,RACOS_TAG=0x41,RASIN_TAG=0x42,RATAN_TAG=0x43,COS_TAG=0x44,SIN_TAG=0x45,TAN_TAG=0x46,SEC_TAG=0x47,CSC_TAG=0x48,COT_TAG=0x49,ITAN_TAG=0x4A,ABS_TAG=0x4B,ANGLE_TAG=0x4C,CEILING_TAG=0x4D,FLOOR_TAG=0x4E,INT_TAG=0x4F,SIGN_TAG=0x50,SQRT_TAG=0x51,EXPF_TAG=0x52,LN_TAG=0x53,LOG_TAG=0x54,FPART_TAG=0x55,IPART_TAG=0x56,CONJ_TAG=0x57,IMAG_TAG=0x58,REAL_TAG=0x59,APPROX_TAG=0x5A,TEXPAND_TAG=0x5B,TCOLLECT_TAG=0x5C,GETDENOM_TAG=0x5D,GETNUM_TAG=0x5E,ERROR_TAG=0x5F,CUMSUM_TAG=0x60,DET_TAG=0x61,COLNORM_TAG=0x62,ROWNORM_TAG=0x63,NORM_TAG=0x64,MEAN_TAG=0x65,MEDIAN_TAG=0x66,PRODUCT_TAG=0x67,STDDEV_TAG=0x68,SUM_TAG=0x69,VARIANCE_TAG=0x6A,UNITV_TAG=0x6B,DIM_TAG=0x6C,MAT2LIST_TAG=0x6D,NEWLIST_TAG=0x6E,RREF_TAG=0x6F,REF_TAG=0x70,IDENTITY_TAG=0x71,DIAG_TAG=0x72,COLDIM_TAG=0x73,ROWDIM_TAG=0x74,TRANSPOSE_TAG=0x75,FACTORIAL_TAG=0x76,PERCENT_TAG=0x77,RADIANS_TAG=0x78,NOT_TAG=0x79,MINUS_TAG=0x7A,VEC_POLAR_TAG=0x7B,VEC_CYLIND_TAG=0x7C,VEC_SPHERE_TAG=0x7D,START_TAG=0x7E,ISTORE_TAG=0x7F,STORE_TAG=0x80,WITH_TAG=0x81,XOR_TAG=0x82,OR_TAG=0x83,AND_TAG=0x84,LT_TAG=0x85,LE_TAG=0x86,EQ_TAG=0x87,GE_TAG=0x88,GT_TAG=0x89,NE_TAG=0x8A,ADD_TAG=0x8B,ADDELT_TAG=0x8C,SUB_TAG=0x8D,SUBELT_TAG=0x8E,MUL_TAG=0x8F,MULELT_TAG=0x90,DIV_TAG=0x91,DIVELT_TAG=0x92,POW_TAG=0x93,POWELT_TAG=0x94,SINCOS_TAG=0x95,SOLVE_TAG=0x96,CSOLVE_TAG=0x97,NSOLVE_TAG=0x98,ZEROS_TAG=0x99,CZEROS_TAG=0x9A,FMIN_TAG=0x9B,FMAX_TAG=0x9C,COMPLEX_TAG=0x9D,POLYEVAL_TAG=0x9E,RANDPOLY_TAG=0x9F,CROSSP_TAG=0xA0,DOTP_TAG=0xA1,GCD_TAG=0xA2,LCM_TAG=0xA3,MOD_TAG=0xA4,INTDIV_TAG=0xA5,REMAIN_TAG=0xA6,NCR_TAG=0xA7,NPR_TAG=0xA8,P2RX_TAG=0xA9,P2RY_TAG=0xAA,P2PTHETA_TAG=0xAB,P2PR_TAG=0xAC,AUGMENT_TAG=0xAD,NEWMAT_TAG=0xAE,RANDMAT_TAG=0xAF,SIMULT_TAG=0xB0,PART_TAG=0xB1,EXP2LIST_TAG=0xB2,RANDNORM_TAG=0xB3,MROW_TAG=0xB4,ROWADD_TAG=0xB5,ROWSWAP_TAG=0xB6,ARCLEN_TAG=0xB7,NINT_TAG=0xB8,PI_PRODUCT_TAG=0xB9,SIGMA_SUM_TAG=0xBA,MROWADD_TAG=0xBB,ANS_TAG=0xBC,ENTRY_TAG=0xBD,EXACT_TAG=0xBE,LOGB_TAG=0xBF,COMDENOM_TAG=0xC0,EXPAND_TAG=0xC1,FACTOR_TAG=0xC2,CFACTOR_TAG=0xC3,INTEGRATE_TAG=0xC4,DIFFERENTIATE_TAG=0xC5,AVGRC_TAG=0xC6,NDERIV_TAG=0xC7,TAYLOR_TAG=0xC8,LIMIT_TAG=0xC9,PROPFRAC_TAG=0xCA,WHEN_TAG=0xCB,ROUND_TAG=0xCC,DMS_TAG=0xCD,LEFT_TAG=0xCE,RIGHT_TAG=0xCF,MID_TAG=0xD0,SHIFT_TAG=0xD1,SEQ_TAG=0xD2,LIST2MAT_TAG=0xD3,SUBMAT_TAG=0xD4,SUBSCRIPT_TAG=0xD5,RAND_TAG=0xD6,MIN_TAG=0xD7,MAX_TAG=0xD8,LIST_TAG=0xD9,USERFUNC_TAG=0xDA,MATRIX_TAG=0xDB,FUNC_TAG=0xDC,DATA_TAG=0xDD,GDB_TAG=0xDE,PIC_TAG=0xDF,TEXT_TAG=0xE0,FIG_TAG=0xE1,MAC_TAG=0xE2,EXT_TAG=0xE3,EXT_INSTR_TAG=0xE4,END_TAG=0xE5,COMMENT_TAG=0xE6,NEXTEXPR_TAG=0xE7,NEWLINE_TAG=0xE8,ENDSTACK_TAG=0xE9,PN1_TAG=0xEA,PN2_TAG=0xEB,ERROR_MSG_TAG=0xEC,EIGVC_TAG=0xED,EIGVL_TAG=0xEE,DASH_TAG=0xEF,LOCALVAR_TAG=0xF0,DESOLVE_TAG=0xF1,FDASH_TAG=0xF2,ASM_TAG=0xF3,ISPRIME_TAG=0xF4,OTH_TAG=0xF8,ROTATE_TAG=0xF9};
enum HeapWalkCmds{H_WALK_VERIFY=0,H_WALK_STATUS=1,H_WALK_DUMP=2,H_WALK_SYM=3};
enum Buttons{BT_NONE,BT_OK,BT_SAVE,BT_YES,BT_CANCEL,BT_NO,BT_GOTO};
enum ExtTags{INDIR_TAG=0x01,GETKEY_TAG=0x02,GETFOLD_TAG=0x03,SWITCH_TAG=0x04,UNITCONV_TAG=0x05,ORD_TAG=0x06,EXPR_TAG=0x07,CHAR_TAG=0x08,STRING_TAG=0x09,GETTYPE_TAG=0x0A,GETMODE_TAG=0x0B,SETFOLD_TAG=0x0C,PTTEST_TAG=0x0D,PXLTEST_TAG=0x0E,SETGRAPH_TAG=0x0F,SETTABLE_TAG=0x10,SETMODE_TAG=0x11,FORMAT_TAG=0x12,INSTRING_TAG=0x13,APPEND_TAG=0x14,DD_TAG=0x15,EXPR2DMS_TAG=0x16,VEC2RECT_TAG=0x17,VEC2POLAR_TAG=0x18,VEC2CYLIND_TAG=0x19,VEC2SPHERE_TAG=0x1A,PARENTH_START_TAG=0x1B,PARENTH_END_TAG=0x1C,MAT_START_TAG=0x1D,MAT_END_TAG=0x1E,LIST_START_TAG=0x1F,LIST_END_TAG=0x20,COMMA_TAG=0x21,SEMICOLON_TAG=0x22,COMPLEX_ANGLE_TAG=0x23,SINGLE_QUOTE_TAG=0x24,QUOTE_TAG=0x25,POLCPLX_TAG=0x26,TMPCNV_TAG=0x27,DELTA_TMPCNV_TAG=0x28,GETUNITS_TAG=0x29,SETUNITS_TAG=0x2A,BIN_TAG=0x2B,HEX_TAG=0x2C,INT2BIN_TAG=0x2D,INT2DEC_TAG=0x2E,INT2HEX_TAG=0x2F,DET_TOL_TAG=0x30,REF_TOL_TAG=0x31,RREF_TOL_TAG=0x32,SIMULT_TOL_TAG=0x33,GETCONFG_TAG=0x34,V_AUGMENT_TAG=0x35,MEAN_TWOARG_TAG=0x36,PRODUCT_TWOARG_TAG=0x37,STDDEV_TWOARG_TAG=0x39,SUM_TWOARG_TAG=0x3A,VARIANCE_TWOARG_TAG=0x3A,DELTA_LIST_TAG=0x3B,ISCLKON_TAG=0x46,GETDATE_TAG=0x47,GETTIME_TAG=0x48,GETTMZN_TAG=0x49,SETDATE_TAG=0x4A,SETTIME_TAG=0x4B,SETTMZN_TAG=0x4C,DAYOFWK_TAG=0x4D,STARTTMR_TAG=0x4E,CHECKTMR_TAG=0x4F,TIMECNV_TAG=0x50,GETDTFMT_TAG=0x51,GETTMFMT_TAG=0x52,GETDTSTR_TAG=0x53,GETTMSTR_TAG=0x54,SETDTFMT_TAG=0x55,SETTMFMT_TAG=0x56};
enum InstructionTags{CLRDRAW_ITAG=1,CLRGRAPH_ITAG=2,CLRHOME_ITAG=3,CLRIO_ITAG=4,CLRTABLE_ITAG=5,CUSTOM_ITAG=6,CYCLE_ITAG=7,DIALOG_ITAG=8,DISPG_ITAG=9,DISPTBL_ITAG=0xA,ELSE_ITAG=0xB,ENDCUSTM_ITAG=0xC,ENDDLOG_ITAG=0xD,ENDFOR_ITAG=0xE,ENDFUNC_ITAG=0xF,ENDIF_ITAG=0x10,ENDLOOP_ITAG=0x11,ENDPRGM_ITAG=0x12,ENDTBAR_ITAG=0x13,ENDTRY_ITAG=0x14,ENDWHILE_ITAG=0x15,EXIT_ITAG=0x16,FUNC_ITAG=0x17,LOOP_ITAG=0x18,PRGM_ITAG=0x19,SHOWSTAT_ITAG=0x1A,STOP_ITAG=0x1B,THEN_ITAG=0x1C,TOOLBAR_ITAG=0x1D,TRACE_ITAG=0x1E,TRY_ITAG=0x1F,ZOOMBOX_ITAG=0x20,ZOOMDATA_ITAG=0x21,ZOOMDEC_ITAG=0x22,ZOOMFIT_ITAG=0x23,ZOOMIN_ITAG=0x24,ZOOMINT_ITAG=0x25,ZOOMOUT_ITAG=0x26,ZOOMPREV_ITAG=0x27,ZOOMRCL_ITAG=0x28,ZOOMSQR_ITAG=0x29,ZOOMSTD_ITAG=0x2A,ZOOMSTO_ITAG=0x2B,ZOOMTRIG_ITAG=0x2C,DRAWFUNC_ITAG=0x2D,DRAWINV_ITAG=0x2E,GOTO_ITAG=0x2F,LBL_ITAG=0x30,GET_ITAG=0x31,SEND_ITAG=0x32,GETCALC_ITAG=0x33,SENDCALC_ITAG=0x34,NEWFOLD_ITAG=0x35,PRINTOBJ_ITAG=0x36,RCLGDB_ITAG=0x37,STOGDB_ITAG=0x38,ELSEIF_ITAG=0x39,IF_ITAG=0x3A,IFTHEN_ITAG=0x3B,RANDSEED_ITAG=0x3C,WHILE_ITAG=0x3D,LINETAN_ITAG=0x3E,COPYVAR_ITAG=0x3F,RENAME_ITAG=0x40,STYLE_ITAG=0x41,FILL_ITAG=0x42,REQUEST_ITAG=0x43,POPUP_ITAG=0x44,PTCHG_ITAG=0x45,PTOFF_ITAG=0x46,PTON_ITAG=0x47,PXLCHG_ITAG=0x48,PXLOFF_ITAG=0x49,PXLON_ITAG=0x4A,MOVEVAR_ITAG=0x4B,DROPDOWN_ITAG=0x4C,OUTPUT_ITAG=0x4D,PTTEXT_ITAG=0x4E,PXLTEXT_ITAG=0x4F,DRAWSLP_ITAG=0x50,PAUSE_ITAG=0x51,RETURN_ITAG=0x52,INPUT_ITAG=0x53,PLOTSOFF_ITAG=0x54,PLOTSON_ITAG=0x55,TITLE_ITAG=0x56,ITEM_ITAG=0x57,INPUTSTR_ITAG=0x58,LINEHORZ_ITAG=0x59,LINEVERT_ITAG=0x5A,PXLHORZ_ITAG=0x5B,PXLVERT_ITAG=0x5C,ANDPIC_ITAG=0x5D,RCLPIC_ITAG=0x5E,RPLCPIC_ITAG=0x5F,XORPIC_ITAG=0x60,DRAWPOL_ITAG=0x61,TEXT_ITAG=0x62,ONEVAR_ITAG=0x63,STOPIC_ITAG=0x64,GRAPH_ITAG=0x65,TABLE_ITAG=0x66,NEWPIC_ITAG=0x67,DRAWPARM_ITAG=0x68,CYCLEPIC_ITAG=0x69,CUBICREG_ITAG=0x6A,EXPREG_ITAG=0x6B,LINREG_ITAG=0x6C,LNREG_ITAG=0x6D,MEDMED_ITAG=0x6E,POWERREG_ITAG=0x6F,QUADREG_ITAG=0x70,QUARTREG_ITAG=0x71,TWOVAR_ITAG=0x72,SHADE_ITAG=0x73,FOR_ITAG=0x74,CIRCLE_ITAG=0x75,PXLCRCL_ITAG=0x76,NEWPLOT_ITAG=0x77,LINE_ITAG=0x78,PXLLINE_ITAG=0x79,DISP_ITAG=0x7A,FNOFF_ITAG=0x7B,FNON_ITAG=0x7C,LOCAL_ITAG=0x7D,DELFOLD_ITAG=0x7E,DELVAR_ITAG=0x7F,LOCK_ITAG=0x80,PROMPT_ITAG=0x81,SORTA_ITAG=0x82,SORTD_ITAG=0x83,UNLOCK_ITAG=0x84,NEWDATA_ITAG=0x85,DEFINE_ITAG=0x86,ELSE_TRY_ITAG=0x87,CLRERR_ITAG=0x88,PASSERR_ITAG=0x89,DISPHOME_ITAG=0x8A,EXEC_ITAG=0x8B,ARCHIVE_ITAG=0x8C,UNARCHIV_ITAG=0x8D,LU_ITAG=0x8E,QR_ITAG=0x8F,BLDDATA_ITAG=0x90,DRWCTOUR_ITAG=0x91,NEWPROB_ITAG=0x92,SINREG_ITAG=0x93,LOGISTIC_ITAG=0x94,CUSTMON_ITAG=0x95,CUSTMOFF_ITAG=0x96,SENDCHAT_ITAG=0x97,REQUEST_THREEARG_TAG=0x99,CLOCKON_TAG=0x9A,CLOCKOFF_TAG=0x9B};
enum SysvarTags{X_BAR_TAG=1,Y_BAR_TAG=2,SIGMA_X_TAG=3,SIGMA_X2_TAG=4,SIGMA_Y_TAG=5,SIGMA_Y2_TAG=6,SIGMA_XY_TAG=7,SX_TAG=8,SY_TAG=9,SMLSIGMA_X_TAG=0xA,SMLSIGMA_Y_TAG=0xB,NSTAT_TAG=0xC,MINX_TAG=0xD,MINY_TAG=0xE,Q1_TAG=0xF,MEDSTAT_TAG=0x10,Q3_TAG=0x11,MAXX_TAG=0x12,MAXY_TAG=0x13,CORR_TAG=0x14,R2_TAG=0x15,MEDX1_TAG=0x16,MEDX2_TAG=0x17,MEDX3_TAG=0x18,MEDY1_TAG=0x19,MEDY2_TAG=0x1A,MEDY3_TAG=0x1B,XC_TAG=0x1C,YC_TAG=0x1D,ZC_TAG=0x1E,TC_TAG=0x1F,RC_TAG=0x20,THETA_C_TAG=0x21,NC_TAG=0x22,XFACT_TAG=0x23,YFACT_TAG=0x24,ZFACT_TAG=0x25,XMIN_TAG=0x26,XMAX_TAG=0x27,XSCL_TAG=0x28,YMIN_TAG=0x29,YMAX_TAG=0x2A,YSCL_TAG=0x2B,DELTA_X_TAG=0x2C,DELTA_Y_TAG=0x2D,XRES_TAG=0x2E,XGRID_TAG=0x2F,YGRID_TAG=0x30,ZMIN_TAG=0x31,ZMAX_TAG=0x32,ZSCL_TAG=0x33,EYE_THETA_TAG=0x34,EYE_PHI_TAG=0x35,THETA_MIN_TAG=0x36,THETA_MAX_TAG=0x37,THETA_STEP_TAG=0x38,TMIN_TAG=0x39,TMAX_TAG=0x3A,TSTEP_TAG=0x3B,NMIN_TAG=0x3C,NMAX_TAG=0x3D,PLOTSTRT_TAG=0x3E,PLOTSTEP_TAG=0x3F,ZXMIN_TAG=0x40,ZXMAX_TAG=0x41,ZXSCL_TAG=0x42,ZYMIN_TAG=0x43,ZYMAX_TAG=0x44,ZYSCL_TAG=0x45,ZXRES_TAG=0x46,Z_THETA_MIN_TAG=0x47,Z_THETA_MAX_TAG=0x48,Z_THETA_STEP_TAG=0x49,ZTMIN_TAG=0x4A,ZTMAX_TAG=0x4B,ZTSTEP_TAG=0x4C,ZXGRID_TAG=0x4D,ZYGRID_TAG=0x4E,ZZMIN_TAG=0x4F,ZZMAX_TAG=0x50,ZZSCL_TAG=0x51,ZEYE_THETA_TAG=0x52,ZEYE_PHI_TAG=0x53,ZNMIN_TAG=0x54,ZNMAX_TAG=0x55,ZPLTSTEP_TAG=0x56,ZPLTSTRT_TAG=0x57,SEED1_TAG=0x58,SEED2_TAG=0x59,OK_TAG=0x5A,ERRORNUM_TAG=0x5B,SYSMATH_TAG=0x5C,SYSDATA_TAG=0x5D,REGEQ_TAG=0x5E,REGCOEF_TAG=0x5F,TBLINPUT_TAG=0x60,TBLSTART_TAG=0x61,DELTA_TBL_TAG=0x62,FLDPIC_TAG=0x63,EYE_PSI_TAG=0x64,TPLOT_TAG=0x65,DIFTOL_TAG=0x66,ZEYE_PSI_TAG=0x67,T0_TAG=0x68,DTIME_TAG=0x69,NCURVES_TAG=0x6A,FLDRES_TAG=0x6B,ESTEP_TAG=0x6C,ZT0DE_TAG=0x6D,ZTMAXDE_TAG=0x6E,ZTSTEPDE_TAG=0x6F,ZTPLOTDE_TAG=0x70,NCONTOUR_TAG=0x71};
enum TokenizeSymNameFlags{TSF_FULLY_QUALIFIED=0x01,TSF_ALLOW_RESERVED=0x02,TSF_PASS_ERRORS=0x04};
enum ST_ACTIVITIES{ACTIVITY_IDLE,ACTIVITY_BUSY,ACTIVITY_PAUSED,ACTIVITY_NORMAL};
enum WinFlags{WF_SYS_ALLOC=0x0001,WF_STEAL_MEM=0x0002,WF_DONT_REALLOC=0x0004,WF_ROUNDEDBORDER=0x0008,WF_SAVE_SCR=0x0010,WF_DUP_SCR=0x0020,WF_TTY=0x0040,WF_ACTIVE=0x0080,WF_NOBORDER=0x0100,WF_NOBOLD=0x0200,WF_DUP_ON=0x0400,WF_VIRTUAL=0x0800,WF_TITLE=0x1000,WF_DIRTY=0x2000,WF_TRY_SAVE_SCR=0x4010,WF_VISIBLE=0x8000};
enum EventIDs{CM_NOTHING=0x0,CM_LAST_STRING_NUMBER=0x4ff,CM_FIRST_APP_ID=0x500,CM_FIRST_SYS_ID=0x700,CM_IDLE=0x700,CM_NULL=0x700,CM_INIT=0x701,CM_STARTTASK=0x702,CM_START=0x702,CM_ACTIVATE=0x703,CM_FOCUS=0x704,CM_UNFOCUS=0x705,CM_DEACTIVATE=0x706,CM_ENDTASK=0x707,CM_QUIT=0x707,CM_START_CURRENT=0x708,CM_RESTART=0x708,CM_APD=0x709,CM_OFF=0x70A,CM_ON=0x70B,CM_INSTALL=0x70C,CM_UNINSTALL=0x70D,CM_PACK=0x70E,CM_UNPACK=0x70F,CM_KEYPRESS=0x710,CM_KEY_PRESS=0x710,CM_MENU_CUT=0x720,CM_CUT=0x720,CM_MENU_COPY=0x721,CM_COPY=0x721,CM_MENU_PASTE=0x722,CM_PASTE=0x722,CM_STRING=0x723,CM_PASTE_STRING=0x723,CM_HSTRING=0x724,CM_PASTE_HANDLE=0x724,CM_DEL=0x725,CM_DELETE=0x725,CM_CLR=0x726,CM_CLEAR=0x726,CM_MENU_CLEAR=0x727,CM_CLEAR_ALL=0x727,CM_MENU_FIND=0x728,CM_FIND=0x728,CM_INSERT=0x730,CM_TOGGLE_INSERT=0x730,CM_BLINK=0x740,CM_CURSOR_FLASH=0x740,CM_STORE=0x750,CM_STO=0x750,CM_RECALL=0x751,CM_RCL=0x751,CM_WPAINT=0x760,CM_MENU_OPEN=0x770,CM_OPEN=0x770,CM_MENU_SAVE=0x771,CM_SAVE_AS=0x771,CM_MENU_NEW=0x772,CM_NEW=0x772,CM_MENU_FORMAT=0x773,CM_FORMAT=0x773,CM_MENU_ABOUT=0x774,CM_ABOUT=0x774,CM_MODE_CHANGE=0x780,CM_SWITCH_GRAPH=0x781,CM_DEFAULTS=0x782,CM_GEOMETRY=0x7C0,CM_OPEN_SYSDATA=0x7C0,CM_FIRST_APP_STRING=0x800};
enum PaintFlags{PAINTING_ENABLED=0,PAINTING_SUSPENDED=2};
enum StandardTaskIDs{AP_NULL=-3,AP_RUNNING=-2,AP_CURRENT=-1};
enum StartTypes{AP_START_CURRENT=0,__AP_START_NEW_2=1,__AP_START_OPEN_2=2,__AP_START_ERROR_2=3,__AP_START_NEW_1=0x10,__AP_START_OPEN_1=0x20,__AP_START_ERROR_1=0x30};
enum GraphModes{GR_FUNC=1,GR_PAR=2,GR_POL=3,GR_SEQ=4,GR_3D=5,GR_DE=6};
enum Attrs{A_REVERSE,A_NORMAL,A_XOR,A_SHADED,A_REPLACE,A_OR,A_AND,A_THICK1,A_SHADE_V,A_SHADE_H,A_SHADE_NS,A_SHADE_PS};
enum BoxAttrs{B_NORMAL=0x10,B_ROUNDED=0x20,B_DOUBLE=0x40,B_CUT=0x80};
enum Fonts{F_4x6,F_6x8,F_8x10};
enum IntVecs{AUTO_INT_1=0x64,AUTO_INT_2=0x68,AUTO_INT_3=0x6C,AUTO_INT_4=0x70,AUTO_INT_5=0x74,AUTO_INT_6=0x78,AUTO_INT_7=0x7C,TRAP_0=0x80,TRAP_1=0x84,TRAP_2=0x88,TRAP_3=0x8C,TRAP_4=0x90,TRAP_5=0x94,TRAP_6=0x98,TRAP_7=0x9C,TRAP_8=0xA0,TRAP_9=0xA4,TRAP_10=0xA8,TRAP_11=0xAC,TRAP_12=0xB0,TRAP_13=0xB4,TRAP_14=0xB8,TRAP_15=0xBC,INT_VEC_RESET=0x04,INT_VEC_BUS_ERROR=0x08,INT_VEC_ADDRESS_ERROR=0x0C,INT_VEC_ILLEGAL_INSTRUCTION=0x10,INT_VEC_ZERO_DIVIDE=0x14,INT_VEC_CHK_INS=0x18,INT_VEC_TRAPV_INS=0x1C,INT_VEC_PRIVILEGE_VIOLATION=0x20,INT_VEC_TRACE=0x24,INT_VEC_LINE_1010=0x28,INT_VEC_LINE_1111=0x2C,INT_VEC_UNINITIALIZED_INT=0x3C,INT_VEC_SPURIOUS_INT=0x60,INT_VEC_KEY_PRESS=0x68,INT_VEC_LINK=0x70,INT_VEC_ON_KEY_PRESS=0x78,INT_VEC_STACK_OVERFLOW=0x7C,INT_VEC_INT_MASK=0x84,INT_VEC_MANUAL_RESET=0x88,INT_VEC_OFF=0x90,INT_VEC_SELF_TEST=0xA8,INT_VEC_ARCHIVE=0xAC,INT_VEC_ER_THROW=0xBC};
enum Arrows{ARROW_UP=1,ARROW_LEFT=2,ARROW_DOWN=3,ARROW_RIGHT=4};
enum CommonKeys{KEY_F1=268,KEY_F2=269,KEY_F3=270,KEY_F4=271,KEY_F5=272,KEY_F6=273,KEY_F7=274,KEY_F8=275,KEY_ESC=264,KEY_QUIT=4360,KEY_APPS=265,KEY_SWITCH=4361,KEY_MODE=266,KEY_BACKSPACE=257,KEY_INS=4353,KEY_CLEAR=263,KEY_VARLNK=4141,KEY_CHAR=4139,KEY_ENTER=13,KEY_ENTRY=4109,KEY_STO=258,KEY_RCL=4354,KEY_SIGN=173,KEY_MATH=4149,KEY_MEM=4150,KEY_ON=267,KEY_OFF=4363};
enum StatKeys{STAT_2ND=1,STAT_DIAMOND=2,STAT_SHIFT=3,STAT_HAND=4};
enum DynMenuFlags{DMF_TEXT=0x0001,DMF_ICON=0x0002,DMF_BITMAP=0x0004,DMF_CHILD_SUB=0x1000,DMF_CHILD=0x2000,DMF_TOP_SUB=0x4000,DMF_TOP=0x8000};
enum ItemTypes{MT_TEXT=0x8000,MT_XREF=0x9000,MT_ICON=0xA000,MT_CASCADE=0x4000};
enum MenuBeginFlags{MBF_WITHICON=0x01,MBF_REDEF=0x02,MBF_SYS_ALLOC=0x04,MBF_MAX_MENU_WIDTH=0x08,MBF_STRIKEOUT=0x10,MBF_HMENU=0x20,MBF_NO_DRAWTOP=0x40};
enum MenuCheckCmds{MC_CHECK=0,MC_UNCHECK=1,MC_STATUS=2,MC_FLIP=3};
enum MenuFlagsEnum{MF_POPUP=0x0001,MF_TOOLBOX=0x0002,MF_NONSEQ=0x0004,MF_ICON_TITLE=0x0008,MF_TEXT_TITLE=0x0010,MF_NO_NUMS=0x0020,MF_NO_UNAMED=0x0040,MF_DYN_POPUP=0x0080,MF_ALT_ICONS=0x0100,MF_BITMAP_TITLE=0x0200,MF_ERROR=0x0800,MF_ICONS_OVERLAP=0x1000,MF_TITLE=0x0218};
enum MenuKeyValues{M_NOITEM=0,M_NOTMENUKEY=-2};
enum VCFPFlags{VCFP_ALL=0x01,VCFP_SKIP_CURDIR=0x02};
enum SprtModes{SPRT_XOR,SPRT_OR,SPRT_AND};
enum ST_FLAGS{ST_IDLE=0,ST_BUSY=1,ST_PAUSE=2,ST_CLEAR=3,ST_NORMAL=3,ST_NOTHING=0,ST_BATT=1,ST_BATT_DARK=2,ST_BATT_OK=0,ST_BATT_LOW=1,ST_BATT_REPLACE=2,ST_RAD=0,ST_DEG=1,ST_FUNC=0,ST_PAR=2,ST_POL=3,ST_SEQ=4,ST_3D=5,ST_DE=6,ST_NONE=0,ST_2ND=1,ST_SHIFT=2,ST_DIAMOND=4,ST_ALPHA=8,ST_SH_A_LOCK=16,ST_A_LOCK=32,ST_AUTO=0,ST_EXACT=1,ST_APPROX=2};
enum FileFlags{_F_READ=0x0001,_F_WRIT=0x0002,_F_RDWR=0x0003,_F_ERR=0x0010,_F_EOF=0x0020,_F_BIN=0x0040};
enum SeekModes{SEEK_SET,SEEK_CUR,SEEK_END};
enum Timers{BATT_TIMER=1,APD_TIMER=2,LIO_TIMER=3,CURSOR_TIMER=4,MISC_TIMER=5,USER_TIMER=6};

#define H_NULL 0
#define NULL ((void*)0)
#define CENTER (-1)

#define AMS_1xx ((_ram_call(14,unsigned short)&0x0F00)==0x100)
#define AMS_2xx ((_ram_call(14,unsigned short)&0x0F00)==0x200)
#define AMS_3xx ((_ram_call(14,unsigned short)&0x0F00)==0x300)

/* Define tigcc internal functions */
extern unsigned short _rowread(short asm("d0"))__ATTR_LIB_ASM__;
extern long labs(long)__ATTR_GCC__;
extern float atof(const char*)__ATTR_LIB_ASM__;
extern __HS_pushEmptyFIFONode__type__ __get_HS_pushEmptyFIFONode(void)__ATTR_LIB_C__;
extern void HomeStore(void)__ATTR_LIB_ASM__;
extern void HomeStorePair(HANDLE,HANDLE)__ATTR_LIB_C__;
extern void __attribute__((__may_alias__)) __dummy_handler__;
extern unsigned char PRG_getStart(void)__ATTR_LIB_C__;
extern void push_longint(long)__ATTR_LIB_ASM__;
extern void push_longlongint(long long)__ATTR_LIB_ASM__;
extern void *calloc(short asm("d0"),short asm("d1"))__ATTR_LIB_ASM__;
void *alloca(long)__ATTR_GCC__;
extern void *calloc_throw(short asm("d0"),short asm("d1"))__ATTR_LIB_ASM__;
extern void *HeapAllocPtrThrow(long asm("a0"))__ATTR_LIB_ASM__;
extern HANDLE HeapReallocThrow(HANDLE asm("d0"),long asm("a0"))__ATTR_LIB_ASM__;
extern void *malloc_throw(long asm("a0"))__ATTR_LIB_ASM__;
extern void *realloc(void* asm("a0"),long asm("d0"))__ATTR_LIB_ASM__;
extern void *realloc_throw(void* asm("a0"),long asm("d0"))__ATTR_LIB_ASM__;
extern void __assertion_failed(const char*,const char*,short)__ATTR_LIB_ASM_NORETURN__;
extern char _extalnum_list[];
extern char _extpunct_list[];
extern short NoCallBack(short,long)__ATTR_TIOS_CALLBACK__;
extern void push_shortint(short)__ATTR_LIB_ASM__;
extern short EV_getAppID(const char* asm("a0"))__ATTR_LIB_ASM__;
extern float __BC()__ATTR_LIB_ASM__;
extern void Sprite8(short,short,short,unsigned char*,void*,short)__ATTR_LIB_C__;
extern void Sprite16(short,short,short,unsigned short*,void*,short)__ATTR_LIB_C__;
extern void Sprite32(short,short,short,unsigned long*,void*,short)__ATTR_LIB_C__;
extern char *gets(char* asm("a2"))__ATTR_LIB_ASM__;
extern char *getsn(char* asm("a2"),long asm("d3"))__ATTR_LIB_ASM__;
extern void printf(const char*,...)__ATTR_TIOS__;
extern void puts(const char*)__ATTR_LIB_ASM__;
extern short rename(const char*,const char*)__ATTR_LIB_C__;
extern void cbprintf(vcbprintf_Callback_t,void**,const char*,...)__ATTR_TIOS__;
extern short cbscanf(vcbscanf_get_Callback_t asm("a0"),vcbscanf_unget_Callback_t asm("a1"),void* asm("a2"),const char* asm("a3"),...)__ATTR_LIB_ASM__;
extern void clrscr(void)__ATTR_LIB_ASM__;
extern short fclose(FILE*)__ATTR_LIB_C__;
extern short fgetc(FILE*)__ATTR_LIB_C__;
extern short fgetchar(void)__ATTR_LIB_ASM__;
extern char *fgets(char*,short,FILE*)__ATTR_LIB_C__;
extern FILE *fopen(const char*,const char*)__ATTR_LIB_C__;
extern short fprintf(FILE*,const char*,...)__ATTR_TIOS__;
extern short fputc(short,FILE*)__ATTR_TIOS_CALLBACK__;
extern short fputchar(short)__ATTR_TIOS_CALLBACK__;
extern short fputs(const char*,FILE*)__ATTR_LIB_ASM__;
extern unsigned short fread(void*,short,short,FILE*)__ATTR_LIB_C__;
extern short fseek(FILE*,long,short)__ATTR_LIB_C__;
extern void fsetbufsize(short,FILE*)__ATTR_LIB_C__;
extern long ftell(const FILE*)__ATTR_LIB_C__;
extern unsigned short fwrite(const void*,short,short,FILE*)__ATTR_LIB_C__;
extern void strputchar(char,void**)__ATTR_TIOS_CALLBACK__;
extern char *tmpnam(char*)__ATTR_LIB_C__;
extern short unlink(const char*)__ATTR_LIB_C__;
extern short vcbscanf(vcbscanf_get_Callback_t asm("a0"),vcbscanf_unget_Callback_t asm("a1"),void* asm("a2"),const char* asm("a3"),va_list asm("a4"))__ATTR_LIB_ASM__;
extern CALLBACK short __fscanf_get(FILE *param);
extern CALLBACK void __fscanf_unget(short c, FILE *param);
extern CALLBACK short __sscanf_get(__sscanf_string *param);
extern CALLBACK void __sscanf_unget(short c, __sscanf_string *param);
extern long __randseed;
extern short atoi(const char*)__ATTR_LIB_C__;
extern long atol(const char*)__ATTR_LIB_C__;
extern void *bsearch(const void*,const void*,short,short,compare_t)__ATTR_LIB_C__;
extern void qsort(void*,short,short,compare_t)__ATTR_LIB_C__;
extern short rand(void)__ATTR_LIB_ASM__;
extern long strtol(const char*,char**,short)__ATTR_LIB_C__;
extern unsigned long strtoul(const char*,char**,short)__ATTR_LIB_C__;
extern short OSVFreeTimer(short asm("d0"))__ATTR_LIB_ASM__;
extern short OSVRegisterTimer(short asm("d0"),long asm("d3"),Timer_Callback_t asm("d4"))__ATTR_LIB_ASM__;
extern void *kbd_queue(void)__ATTR_LIB_ASM__;

/* These constants are needed for use in "asm" statements */
asm(".set MT_TEXT,0x8000");
asm(".set MT_XREF,0x9000");
asm(".set MT_ICON,0xA000");
asm(".set MT_CASCADE,0x4000");

/* Define kernel functions */
#define	Idle		_RAM_CALL_15
#define kernel_Idle 	Idle
extern	void	Idle(void);
#define	kernel_Exec	_RAM_CALL_16
extern	short kernel_Exec(HANDLE hd asm("d0"));
#define	kernel_Ptr2Hd	_RAM_CALL_17
extern	HANDLE kernel_Ptr2Hd(void *ptr asm("a0"));
#define	kernel_Hd2Sym	_RAM_CALL_18
extern	SYM_ENTRY *kernel_Hd2Sym(HANDLE hd asm("d0"));
typedef	struct _LibRef LibRef;
#define	kernel_LibsBegin _RAM_CALL_19
LibRef *kernel_LibsBegin(char *libname asm("a0"), unsigned char version asm("d1"));
#define kernel_LibsEnd	_RAM_CALL_1A
void kernel_LibsEnd(LibRef *lib asm("a0"));
#define	kernel_LibsPtr	_RAM_CALL_1C
void *kernel_LibsPtr(LibRef *lib asm("a0"), short function asm("d0"));
#define	kernel_LibsCall	_RAM_CALL_1B
__attribute__((__stkparm__)) unsigned long kernel_LibsCall(LibRef *lib, short function, ...);
#define	kernel_LibsExec	_RAM_CALL_1D
__attribute__((__stkparm__)) void kernel_LibsExec(char *name, short function, char version, ...);
#define	kernel_HdKeep	_RAM_CALL_1E
void	kernel_HdKeep(HANDLE hd asm("d0"));
#define	kernel_ExtractFromPack	_RAM_CALL_1F
HANDLE	kernel_ExtractFromPack(void *pack asm("a5"), short index asm("d0"));
#define	kernel_ExtractFile	_RAM_CALL_20
HANDLE	kernel_ExtractFile(const char *name asm("a2"));
#define	kernel_ExtractFileFromPack	_RAM_CALL_29
HANDLE	kernel_ExtractFileFromPack(HANDLE hd asm("d0"), const char *name asm("a2"));
#define	exit	_RAM_CALL_2A
void	exit(int c asm("d0"));
#define	atexit	_RAM_CALL_2B
int	atexit(void (*func)(void) asm("a0"));
#define kernel_RegisterVector _RAM_CALL_2C
void	kernel_RegisterVector (unsigned short vect asm("d0"), const void *func asm("a0"));
#define kernel_SystemDir _RAM_CALL_2F
extern const char kernel_SystemDir[];

/* Define VAT functions */
#define SYMSTR_CONST(s) ((SYM_STR)(("\0"s)+sizeof(s)))
#define $(s) (SYMSTR_CONST(#s))
#define AddSymToFolder _rom_call(HSym,(SYM_STR,SYM_STR),70)
#define checkCurrent _rom_call(HSym,(SYM_STR,ESQ),121)
#define CheckLinkLockFlag _rom_call(void,(const SYM_ENTRY*),7F)
#define CheckReservedName _rom_call(short,(SYM_STR),8B)
#define CheckSysFunc _rom_call(short,(const char*,__pushort),89)
#define ClearUserDef _rom_call(void,(HANDLE),7E)
#define DerefSym _rom_call(SYM_ENTRY*,(HSym),79)
#define EM_moveSymFromExtMem _rom_call(short,(SYM_STR,HSym),161)
#define EM_moveSymToExtMem _rom_call(short,(SYM_STR,HSym),162)
#define EM_twinSymFromExtMem _rom_call(HSym,(SYM_STR,HSym),166)
#define EX_stoBCD _rom_call(void,(unsigned char*,float*),C0)
#define FindSymInFolder _rom_call(HSym,(SYM_STR,const char*),71)
#define FolderAdd _rom_call(HANDLE,(SYM_STR),64)
#define FolderAddTemp _rom_call(SYM_STR,(void),73)
#define FolderClear(c) __Folder_Del((c),1)
#define FolderCount _rom_call(unsigned short,(const SYM_ENTRY*),6B)
#define FolderCur _rom_call(short,(SYM_STR,short),65)
#define FolderCurTemp _rom_call(short,(SYM_STR),72)
#define FolderDel(c) __Folder_Del((c),0)
#define FolderDelAllTemp _rom_call(void,(short),75)
#define FolderDelTemp _rom_call(void,(void),74)
#define FolderFind _rom_call(short,(SYM_STR),67)
#define FolderGetCur _rom_call(void,(char*),68)
#define FolderOp _rom_call(short,(SYM_STR,short),69)
#define FolderRename _rom_call(short,(const char*,const char*),6A)
#define HSymDel _rom_call(short,(HSym),5F)
#define HSYMtoName _rom_call(short,(HSym,char*),7A)
#define IsMainFolderStr _rom_call(short,(const char*),77)
#define MakeHSym _rom_call(HSym,(HANDLE,const SYM_ENTRY*),282)
#define partial_len _rom_call(unsigned long,(const char*,unsigned char*),11C)
#define QSysProtected _rom_call(short,(ESQ),88)
#define ResetSymFlags _rom_call(void,(short),8E)
#define StrToTokN _rom_call(ESI,(const char*,unsigned char*),7B)
#define SymAdd _rom_call(HSym,(SYM_STR),5C)
#define SymAddMain _rom_call(HSym,(SYM_STR),5D)
#define SymAddTwin _rom_call(HSym,(SYM_STR),27F)
#define SymCmp _rom_call(short,(const char*,const char*),81)
#define SymCpy0 _rom_call(void,(char*,const char*),83)
#define SymCpy _rom_call(void,(char*,const char*),82)
#define SymDel _rom_call(short,(SYM_STR),5E)
#define SymDelTwin _rom_call(short,(SYM_ENTRY*),280)
#define SymFind _rom_call(HSym,(SYM_STR),60)
#define SymFindFirst _rom_call(SYM_ENTRY*,(SYM_STR,short),6C)
#define SymFindFolderName _rom_call(char*,(void),6F)
#define SymFindHome _rom_call(HSym,(SYM_STR),62)
#define SymFindMain _rom_call(HSym,(SYM_STR),61)
#define SymFindNext _rom_call(SYM_ENTRY*,(void),6D)
#define SymFindPrev _rom_call(SYM_ENTRY*,(void),6E)
#define SymFindPtr _rom_call(SYM_ENTRY*,(SYM_STR,short),283)
#define SymMove _rom_call(short,(SYM_STR,SYM_STR),63)
#define SYMSTR(s) ({register unsigned short __slen=_rom_call(unsigned long,(const char*),27E)(s);ESI __tempstr=alloca(__slen+2);__tempstr[0]=0;_rom_call(void*,(void*,const void*,long),26A)(__tempstr+1,(s),__slen+1);__tempstr+__slen+1;})
#define SymSysVar _rom_call(short,(const char*),8C)
#define TempFolderName _rom_call(SYM_STR,(short),76)
#define TokToStrN _rom_call(short,(unsigned char*,SYM_STR),7C)
#define ValidateSymName _rom_call(short,(const char*),84)
#define VarRecall _rom_call(HSym,(SYM_STR,short),85)
#define VarStore _rom_call(HSym,(SYM_STR,short,short,...),86)
#define GetDataType _rom_call(short,(CESI),435)
#define GetFuncPrgmBodyPtr _rom_call(ESI,(ESI),43A)
#define SetOK _rom_call(void,(short),456)
#define SmapTypeStrings _rom_call(const char*,(short),436)

/* Define Alloc functions */
#define free _rom_call(void,(void*),A3)
#define FreeHandles _rom_call(short,(void),23B)
#define HeapAlloc _rom_call(HANDLE,(long),90)
#define HeapAllocESTACK _rom_call(HANDLE,(long),91)
#define HeapAllocHigh _rom_call(HANDLE,(long),92)
#define HeapAllocHighThrow _rom_call(HANDLE,(long),94)
#define HeapAllocPtr _rom_call(void*,(long),A2)
#define HeapAllocThrow _rom_call(HANDLE,(long),93)
#define HeapAvail _rom_call(unsigned long,(void),8F)
#define HeapCompress _rom_call(void,(void),95)
#define HeapDeref _rom_call(void*,(HANDLE),96)
#define HeapEnd _rom_call(void*,(void),A1)
#define HeapFree _rom_call(void,(HANDLE),97)
#define HeapFreeIndir _rom_call(void,(HANDLE*),98)
#define HeapFreePtr _rom_call(void,(void*),A3)
#define HeapGetHandle _rom_call(HANDLE,(void),239)
#define HeapGetLock _rom_call(short,(HANDLE),9B)
#define HeapLock _rom_call(HANDLE,(HANDLE),9A)
#define HeapMax _rom_call(unsigned long,(void),9C)
#define HeapMoveHigh _rom_call(HANDLE,(HANDLE),A0)
#define HeapPtrToHandle _rom_call(HANDLE,(void*),23A)
#define HeapRealloc _rom_call(HANDLE,(HANDLE,long),9D)
#define HeapSize _rom_call(unsigned long,(HANDLE),9E)
#define HeapUnlock _rom_call(HANDLE,(HANDLE),9F)
#define HLock _rom_call(void*,(HANDLE),99)
#define malloc _rom_call(void*,(long),A2)
#define HeapShuffle _rom_call(void,(void),474)
#define HeapWalk _rom_call(short,(short),12C)

/* Define args functions */
#define top_estack (*((ESI*)(_rom_call_addr(109))))
#define ArgCount() (RemainingArgCnt(top_estack))
#define EX_getArg _rom_call(ESI,(short),BE)
#define EX_getBCD _rom_call(short,(short,float*),BF)
#define GetArgType(p) (*(CESI)(p))
#define GetFloatArg(p) ({float __f;(CESI)(p)-=10;_rom_call(void*,(),26A)(&__f,(CESI)(p)+1,9L);((char*)&__f)[9]=0;__f;})
#define GetIntArg(p) ({register unsigned short __n=*(--(ESI)(p));register unsigned long __s=0;while(__n--)__s=(__s<<8)+*(--(unsigned char*)(p));(ESI)(p)--;__s;})
#define GetLongLongArg(p) ({register unsigned short __n=*(--(ESI)(p));register unsigned long long __s=0;while(__n--)__s=(__s<<8)+*(--(unsigned char*)(p));(ESI)(p)--;__s;})
#define GetStrnArg(p) ({(ESI)(p)-=2;while(*(ESI)(p)--);(const char*)((ESI)(p)+2);})
#define GetSymstrArg(p) ({register ESI __t=(ESI)(p);(ESI)(p)-=2;while(*(ESI)(p)--);(const char*)(__t-1);})
#define InitArgPtr(p) ((void)((p)=top_estack))
#define SkipArg(p) ((void)((p)=_rom_call(ESI,(ESI),10A)(p)))
#define RemainingArgCnt _rom_call(unsigned short,(CESI),3C3)

/* Define assert conditions */
#ifndef NDEBUG
#define assert(p) ((p)?(void)0:__assertion_failed(#p,__FILE__,__LINE__))
#else
#define assert(p) ((void)0)
#endif

/* bascmd */
#define cmd_andpic  _rom_call(void,(SYM_STR,CESI,CESI),32A)
#define cmd_blddata  _rom_call(void,(ESI),32B )
#define cmd_circle  _rom_call(void,(CESI,CESI,CESI,CESI),32C )
#define cmd_clrdraw _rom_call(void,(void),32D)
#define cmd_clrerr  _rom_call(void,(void),32E )
#define cmd_clrgraph  _rom_call(void,(void),32F) 
#define cmd_clrhome _rom_call(void,(void),330)
#define cmd_clrio _rom_call(void,(void),331)
#define cmd_clrtable  _rom_call(void,(void),332 )
#define cmd_copyvar  _rom_call(void,(SYM_STR,SYM_STR),333 )
#define cmd_cubicreg  _rom_call(void,(ESI),334 )
#define cmd_custmoff _rom_call(void,(void),335)
#define cmd_custmon _rom_call(void,(void),336)
#define cmd_custom  _rom_call(void,(void),337 )
#define cmd_cycle _rom_call(void,(void),338)
#define cmd_cyclepic  _rom_call(void,(CESI,CESI,CESI,CESI,CESI),339 )
#define cmd_delfold  _rom_call(void,(CESI),33A )
#define cmd_delvar  _rom_call(void,(CESI),33B )
#define cmd_dialog  _rom_call(void,(void),33C )
#define cmd_disp  _rom_call(void,(CESI),33D )
#define cmd_dispg _rom_call(void,(void),33E)
#define cmd_disphome  _rom_call(void,(void),33F )
#define cmd_disptbl  _rom_call(void,(void),340 )
#define cmd_drawfunc  _rom_call(void,(CESI),341 )
#define cmd_drawinv  _rom_call(void,(CESI),342 )
#define cmd_drawparm  _rom_call(void,(CESI),343 )
#define cmd_drawpol  _rom_call(void,(CESI),344 )
#define cmd_else _rom_call(void,(void),345)
#define cmd_endfor  _rom_call(void,(void),346 )
#define cmd_endloop _rom_call(void,(void),347)
#define cmd_endtry  _rom_call(void,(void),348 )
#define cmd_endwhile  _rom_call(void,(void),349) 
#define cmd_exit _rom_call(void,(void),34A)
#define cmd_expreg  _rom_call(void,(ESI),34B )
#define cmd_fill  _rom_call(void,(CESI,SYM_STR),34C )
#define cmd_fnoff  _rom_call(void,(CESI),34D )
#define cmd_fnon  _rom_call(void,(CESI),34E )
#define cmd_for  _rom_call(void,(SYM_STR,CESI,CESI,CESI),34F )
#define cmd_get  _rom_call(void,(SYM_STR),350 )
#define cmd_getcalc  _rom_call(void,(SYM_STR),351 )
#define cmd_goto _rom_call(void,(SYM_STR),352)
#define cmd_graph  _rom_call(void,(CESI),353 )
#define cmd_if  _rom_call(void,(CESI),354 )
#define cmd_ifthen  _rom_call(void,(CESI),355 )
#define cmd_input  _rom_call(void,(CESI),356 )
#define cmd_inputstr  _rom_call(void,(ESI),357 )
#define cmd_line  _rom_call(void,(CESI,CESI,CESI,CESI,CESI),358 )
#define cmd_linehorz  _rom_call(void,(CESI,CESI),359 )
#define cmd_linetan  _rom_call(void,(CESI,CESI),35A )
#define cmd_linevert  _rom_call(void,(CESI,CESI),35B )
#define cmd_linreg  _rom_call(void,(ESI),35C )
#define cmd_lnreg  _rom_call(void,(ESI),35D )
#define cmd_local _rom_call(void,(CESI),35E)
#define cmd_lock  _rom_call(void,(CESI),35F )
#define cmd_logistic  _rom_call(void,(ESI),360 )
#define cmd_medmed  _rom_call(void,(ESI),361 )
#define cmd_movevar  _rom_call(void,(SYM_STR,SYM_STR,SYM_STR),362 )
#define cmd_newdata  _rom_call(void,(CESI),363 )
#define cmd_newfold  _rom_call(void,(SYM_STR),364 )
#define cmd_newpic  _rom_call(void,(ESI,SYM_STR,ESI,ESI),365 )
#define cmd_newplot  _rom_call(void,(ESI),366 )
#define cmd_newprob  _rom_call(void,(void),367 )
#define cmd_onevar  _rom_call(void,(ESI),368 )
#define cmd_output  _rom_call(void,(CESI,CESI,CESI),369 )
#define cmd_passerr  _rom_call(void,(void),36A )
#define cmd_pause  _rom_call(void,(CESI),36B )
#define cmd_plotsoff _rom_call(void,(CESI),36C)
#define cmd_plotson _rom_call(void,(CESI),36D)
#define cmd_popup  _rom_call(void,(ESI,ESI),36E) 
#define cmd_powerreg  _rom_call(void,(ESI),36F )
#define cmd_printobj _rom_call(void,(SYM_STR),370)
#define cmd_prompt  _rom_call(void,(CESI),371 )
#define cmd_ptchg  _rom_call(void,(CESI,CESI),372) 
#define cmd_ptoff  _rom_call(void,(CESI,CESI),373 )
#define cmd_pton  _rom_call(void,(CESI,CESI),374 )
#define cmd_pttext  _rom_call(void,(CESI,CESI,CESI),375) 
#define cmd_pxlchg  _rom_call(void,(CESI,CESI),376 )
#define cmd_pxlcircle _rom_call(void,(CESI,CESI,CESI,CESI),377)
#define cmd_pxlhorz _rom_call(void,(CESI,CESI),378)
#define cmd_pxlline _rom_call(void,(CESI,CESI,CESI,CESI,CESI),379)
#define cmd_pxloff  _rom_call(void,(CESI,CESI),37A )
#define cmd_pxlon  _rom_call(void,(CESI,CESI),37B )
#define cmd_pxltext  _rom_call(void,(CESI,CESI,CESI),37C) 
#define cmd_pxlvert _rom_call(void,(CESI,CESI),37D)
#define cmd_quadreg  _rom_call(void,(ESI),37E )
#define cmd_quartreg  _rom_call(void,(ESI),37F )
#define cmd_randseed  _rom_call(void,(CESI),380 )
#define cmd_rclgdb  _rom_call(void,(SYM_STR),381 )
#define cmd_rclpic  _rom_call(void,(SYM_STR,CESI,CESI),382 )
#define cmd_rename  _rom_call(void,(SYM_STR,SYM_STR),383 )
#define cmd_request  _rom_call(void,(CESI,SYM_STR),384 )
#define cmd_return  _rom_call(void,(CESI),385 )
#define cmd_rplcpic  _rom_call(void,(SYM_STR,CESI,CESI),386 )
#define cmd_send _rom_call(void,(CESI),387)
#define cmd_sendcalc  _rom_call(void,(SYM_STR),388 )
#define cmd_sendchat  _rom_call(void,(SYM_STR),389 )
#define cmd_shade  _rom_call(void,(ESI),38A )
#define cmd_showstat  _rom_call(void,(void),38B) 
#define cmd_sinreg  _rom_call(void,(ESI),38C )
#define cmd_slpline  _rom_call(void,(CESI,CESI,CESI),38D )
#define cmd_sorta  _rom_call(void,(ESI),38E )
#define cmd_sortd  _rom_call(void,(ESI),38F )
#define cmd_stogdb  _rom_call(void,(SYM_STR),390 )
#define cmd_stopic  _rom_call(void,(ESI),391 )
#define cmd_style  _rom_call(void,(CESI,CESI),392 )
#define cmd_table  _rom_call(void,(ESI),393 )
#define cmd_text  _rom_call(void,(CESI),394 )
#define cmd_toolbar  _rom_call(void,(void),395 )
#define cmd_trace _rom_call(void,(void),396)
#define cmd_try  _rom_call(void,(void),397 )
#define cmd_twovar  _rom_call(void,(ESI),398 )
#define cmd_unlock  _rom_call(void,(CESI),399 )
#define cmd_while  _rom_call(void,(CESI),39A )
#define cmd_xorpic  _rom_call(void,(SYM_STR,CESI,CESI),39B )
#define cmd_zoombox _rom_call(void,(void),39C)
#define cmd_zoomdata _rom_call(void,(void),39D)
#define cmd_zoomdec _rom_call(void,(void),39E)
#define cmd_zoomfit _rom_call(void,(void),39F)
#define cmd_zoomin _rom_call(void,(void),3A0)
#define cmd_zoomint _rom_call(void,(void),3A1)
#define cmd_zoomout _rom_call(void,(void),3A2)
#define cmd_zoomprev _rom_call(void,(void),3A3)
#define cmd_zoomrcl _rom_call(void,(void),3A4)
#define cmd_zoomsqr _rom_call(void,(void),3A5)
#define cmd_zoomstd _rom_call(void,(void),3A6)
#define cmd_zoomsto _rom_call(void,(void),3A7)
#define cmd_zoomtrig _rom_call(void,(void),3A8)
#define cmd_archive  _rom_call(void,(CESI),448 )
#define cmd_unarchiv  _rom_call(void,(CESI),449 )

/* basfunc.h */
#define push_getfold _rom_call(void,(void),317)
#define push_getkey  _rom_call(void,(void),316)
#define push_getmode _rom_call(void,(CESI),318)
#define push_gettype  _rom_call(void,(CESI),319)
#define push_instring _rom_call(void,(CESI,CESI,CESI),31A)
#define push_part  _rom_call(void,(),31C)
#define push_pttest  _rom_call(void,(CESI,CESI),31D)
#define push_pxltest  _rom_call(void,(CESI,CESI),31E)
#define push_rand _rom_call(void,(CESI),31F)
#define push_randpoly  _rom_call(void,(CESI,CESI),320)
#define push_setfold  _rom_call(void,(CESI),321)
#define push_setgraph _rom_call(void,(CESI,CESI),322)
#define push_setmode  _rom_call(void,(CESI,CESI),323)
#define push_settable _rom_call(void,(CESI,CESI),324)
#define push_str_to_expr  _rom_call(void,(CESI),325)
#define push_string _rom_call(void,(CESI),326)
#define push_switch  _rom_call(void,(CESI),327)
#define push_approx  _rom_call(void,(CESI),4F7)
#define push_augment _rom_call(void,(CESI,CESI),496)
#define push_char _rom_call(void,(CESI),497)
#define push_coldim _rom_call(void,(CESI),498)
#define push_colnorm  _rom_call(void,(CESI),499)
#define push_cross_product  _rom_call(void,(CESI,CESI),4CE)
#define push_cumsum  _rom_call(void,(CESI),49A)
#define push_determinant  _rom_call(void,(CESI,CESI),49D)
#define push_diag _rom_call(void,(CESI),49E)
#define push_dimension _rom_call(void,(CESI),49F)
#define push_dotproduct  _rom_call(void,(CESI,CESI),4A3)
#define push_eigvc  _rom_call(void,(CESI),4CF)
#define push_eigvl  _rom_call(void,(CESI),4D0)
#define push_identity_mat _rom_call(void,(CESI),4A4)
#define push_left _rom_call(void,(CESI,CESI),4A5)
#define push_list_to_mat _rom_call(void,(CESI,CESI),4A6)
#define push_mat_to_list _rom_call(void,(CESI),4A8)
#define push_matnorm  _rom_call(void,(CESI),4A7)
#define push_mean  _rom_call(void,(CESI),4A9)
#define push_median  _rom_call(void,(CESI),4AA)
#define push_mid _rom_call(void,(CESI,CESI,CESI),4AB)
#define push_mrow  _rom_call(void,(CESI,CESI,CESI),4AC)
#define push_mrowadd  _rom_call(void,(CESI,CESI,CESI,CESI),4AD)
#define push_newlist _rom_call(void,(CESI),4AE)
#define push_newmat _rom_call(void,(CESI,CESI),4AF)
#define push_ord _rom_call(void,(CESI),4B0)
#define push_prodlist  _rom_call(void,(CESI),4B2)
#define push_randmat _rom_call(void,(CESI,CESI),4B4)
#define push_randnorm  _rom_call(void,(CESI,CESI),4B5)
#define push_red_row_ech  _rom_call(void,(CESI,CESI),4B6)
#define push_right _rom_call(void,(CESI,CESI),4B7)
#define push_rotate  _rom_call(void,(CESI,CESI),4B8)
#define push_round  _rom_call(void,(CESI,CESI),4B9)
#define push_row_echelon  _rom_call(void,(CESI,CESI),4BE)
#define push_rowadd  _rom_call(void,(CESI,CESI,CESI),4BA)
#define push_rowdim  _rom_call(void,(CESI),4BB)
#define push_rownorm  _rom_call(void,(CESI),4BC)
#define push_rowswap _rom_call(void,(CESI,CESI,CESI),4BD)
#define push_sequence  _rom_call(void,(CESI,CESI,CESI,CESI,CESI),4BF)
#define push_shift  _rom_call(void,(CESI,CESI),4C0)
#define push_simult  _rom_call(void,(CESI,CESI,CESI),4C1)
#define push_stddev  _rom_call(void,(CESI),4C3)
#define push_submat _rom_call(void,(CESI,CESI,CESI,CESI,CESI),4C4)
#define push_sumlist  _rom_call(void,(CESI),4C5)
#define push_unitv  _rom_call(void,(CESI),4C8)
#define push_variance  _rom_call(void,(CESI),4C9)
#define did_push_anti_deriv  _rom_call(short,(CESI,CESI,short),5B1)
#define did_push_series  _rom_call(short,(CESI,CESI,CESI,CESI,short),588)
#define push_1st_derivative  _rom_call(void,(CESI,CESI),5AE)
#define push_abs  _rom_call(void,(CESI),543)
#define push_acos  _rom_call(void,(CESI),537)
#define push_acosh  _rom_call(void,(CESI),53E)
#define push_asin  _rom_call(void,(CESI),536)
#define push_asinh  _rom_call(void,(CESI),53D)
#define push_atan  _rom_call(void,(CESI),538)
#define push_atanh  _rom_call(void,(CESI),53F)
#define push_ceiling  _rom_call(void,(CESI),54B)
#define push_comb  _rom_call(void,(CESI,CESI),542)
#define push_comdenom  _rom_call(void,(CESI,CESI),59B)
#define push_conj  _rom_call(void,(CESI),547)
#define push_cos  _rom_call(void,(CESI),533)
#define push_cosh  _rom_call(void,(CESI),53B)
#define push_csolve  _rom_call(void,(CESI,CESI),585)
#define push_czeros  _rom_call(void,(CESI,CESI),587)
#define push_def_int  _rom_call(void,(CESI,CESI,CESI,CESI),5B2)
#define push_denominator  _rom_call(void,(CESI),55B)
#define push_desolve  _rom_call(void,(CESI),58B)
#define push_exp  _rom_call(void,(CESI),52E)
#define push_expand  _rom_call(void,(CESI,CESI,short),59A)
#define push_extended_prod  _rom_call(void,(CESI,CESI,CESI,CESI),5B5)
#define push_factor  _rom_call(void,(CESI,CESI,short),59C)
#define push_floor  _rom_call(void,(CESI),54A)
#define push_fractional_part  _rom_call(void,(CESI),54E)
#define push_gcd_numbers _rom_call(void,(CESI,CESI),514)
#define push_im  _rom_call(void,(CESI),546)
#define push_integer_gcd _rom_call(void,(CESI,CESI),551)
#define push_integer_lcm  _rom_call(void,(CESI,CESI),552)
#define push_integer_part  _rom_call(void,(CESI),54D)
#define push_integer_quotient  _rom_call(void,(CESI,CESI),54F)
#define push_integer_remainder  _rom_call(void,(CESI,CESI),550)
#define push_is_prime  _rom_call(void,(CESI),515)
#define push_lim  _rom_call(void,(CESI,CESI,CESI,CESI),5AD)
#define push_ln  _rom_call(void,(CESI),52F)
#define push_log10  _rom_call(void,(CESI),530)
#define push_max1  _rom_call(void,(CESI),554)
#define push_max2  _rom_call(void,(CESI,CESI),599)
#define push_max  _rom_call(void,(CESI,CESI),58A)
#define push_min1  _rom_call(void,(CESI),553)
#define push_min2  _rom_call(void,(CESI,CESI),598)
#define push_min  _rom_call(void,(CESI,CESI),589)
#define push_mod  _rom_call(void,(CESI,CESI),54C)
#define push_nint  _rom_call(void,(CESI,CESI,CESI,CESI),5B3)
#define push_nsolve  _rom_call(void,(CESI,CESI),583)
#define push_nth_derivative  _rom_call(void,(CESI,CESI,CESI),5AF)
#define push_numerator  _rom_call(void,(CESI),55A)
#define push_perm  _rom_call(void,(CESI,CESI),541)
#define push_phase  _rom_call(void,(CESI),548)
#define push_r_cis  _rom_call(void,(CESI,CESI),549)
#define push_re  _rom_call(void,(CESI),545)
#define push_rec_to_angle  _rom_call(void,(CESI,CESI),539)
#define push_sign  _rom_call(void,(CESI),544)
#define push_sin2  _rom_call(void,(CESI,CESI),531)
#define push_sin  _rom_call(void,(CESI),532)
#define push_sinh  _rom_call(void,(CESI),53A)
#define push_solve  _rom_call(void,(CESI,CESI),584)
#define push_sqrt  _rom_call(void,(CESI),52B)
#define push_summation  _rom_call(void,(CESI,CESI,CESI,CESI),5B4)
#define push_tan  _rom_call(void,(CESI),534)
#define push_tanh  _rom_call(void,(CESI),53C)
#define push_when  _rom_call(void,(CESI),57D)
#define push_zeros  _rom_call(void,(CESI,CESI),586)

/* ctype */
#define _tolower(c) ((c)+'a'-'A')
#define _toupper(c) ((c)+'A'-'a')
#define isalnum(c) ({register short __c=(c);(__c>='0'&&__c<='9')||(__c>='A'&&__c<='Z')||(__c>='a'&&__c<='z');})
#define isalpha(c) ({register short __c=(c);(__c>='A'&&__c<='Z')||(__c>='a'&&__c<='z');})
#define isascii(c) ((unsigned short)(c)<128)
#define iscntrl(c) ((unsigned short)(c)<14)
#define isdigit(c) ({register short __c=(c);__c>='0'&&__c<='9';})
#define isextalnum(c) ({register short __c=(c);(unsigned short)__c<256&&_extalnum_list[__c>>3]&(1<<(__c&7));})
#define isextlower(c) ({register short __c=(c);(__c>='a'&&__c<='z')||(__c>=224&&__c<=254&&__c!=247);})
#define isextpunct(c) ({register short __c=(c);(unsigned short)__c<256&&_extpunct_list[__c>>3]&(1<<(__c&7));})
#define isextupper(c) ({register short __c=(c);(__c>='A'&&__c<='Z')||(__c>=192&&__c<=222&&__c!=215);})
#define isfrgn(c) ({register short __c=(c);(__c>=128&&__c<148)||(__c==181||__c>=192)&&(__c<=255&&__c!=215&&__c!=247);)}
#define isfrgnalnum(c) ({register short __c=(c);(__c>=128&&__c<=148&&__c!=140)||__c==181||(__c>=192&&__c<=255&&__c!=215&&__c!=247);})
#define isfrgnlower(c) ({register short __c=(c);__c>=224&&__c<=254&&__c!=247;})
#define isfrgnupper(c) ({register short __c=(c);__c>=192&&__c<=222&&__c!=215;})
#define isgraph(c) ({register short __c=(c);__c==11||(__c>13&&__c<256&&__c!=32);})
#define isGreek(c) ({register short __c=(c);(__c>=128&&__c<=148)||__c==181;})
#define islower(c) ({register short __c=(c);__c>='a'&&__c<='z';})
#define isprint(c) ({register short __c=(c);__c==11||(__c>13&&__c<256);})
#define ispunct(c) ({register short __c=(c);__c>=33&&__c<=127&&!((__c>='0'&&__c<='9')||(__c>='A'&&__c<='Z')||(__c>='a'&&__c<='z'));})
#define isspace(c) ({register short __c=(c);(__c>=9&&__c<=13)||__c==32;})
#define isupper(c) ({register short __c=(c);__c>='A'&&__c<='Z';})
#define isxdigit(c) ({register short __c=(c);(__c>='0'&&__c<='9')||(__c>='A'&&__c<='F')||(__c>='a'&&__c<='f');})
#define toascii(c) ((c)&0x7F)
#define toextlower(c) ({register short __c=(c);((__c>='A'&&__c<='Z')||(__c>=192&&__c<=222&&__c!=215))?(__c+'a'-'A'):__c;})
#define toextupper(c) ({register short __c=(c);((__c>='a'&&__c<='z')||(__c>=224&&__c<=254&&__c!=247))?(__c+'A'-'a'):__c;})
#define tolower(c) ({register short __c=(c);(__c>='A'&&__c<='Z')?(__c+'a'-'A'):__c;})
#define toupper(c) ({register short __c=(c);(__c>='a'&&__c<='z')?(__c+'A'-'a'):__c;})

/* basop.h */
#define did_push_to_polar  _rom_call(short,(),313) 
#define push_degrees  _rom_call(void,(CESI,CESI,CESI),314) 
#define push_indir_name  _rom_call(void,(CESI),2B2) 
#define push_list_plus  _rom_call(void,(CESI,CESI),3BD) 
#define push_list_times  _rom_call(void,(CESI,CESI),3BE) 
#define push_matrix_product  _rom_call(void,(CESI,CESI),3C5) 
#define push_pow _rom_call(void,(CESI,CESI),30F)
#define push_to_cylin  _rom_call(void,(),328) 
#define push_to_sphere  _rom_call(void,(),329) 
#define push_assignment  _rom_call(void,(CESI),4DD) 
#define push_dot_add  _rom_call(void,(CESI,CESI),4A0) 
#define push_dot_div  _rom_call(void,(CESI,CESI),4CD) 
#define push_dot_mult  _rom_call(void,(CESI,CESI),4A1) 
#define push_dot_sub  _rom_call(void,(CESI,CESI),4A2) 
#define push_radians  _rom_call(void,(CESI),4B3) 
#define push_substitute_no_simplify _rom_call(void,(CESI,CESI,CESI),489)
#define push_and  _rom_call(void,(CESI,CESI),5AB) 
#define push_arg_minus_1  _rom_call(void,(CESI),520) 
#define push_arg_plus_1  _rom_call(void,(CESI),51F) 
#define push_difference  _rom_call(void,(CESI,CESI),51A) 
#define push_dot_exponentiate  _rom_call(void,(CESI,CESI),596) 
#define push_equals  _rom_call(void,(CESI,CESI),5A3) 
#define push_exponentiate  _rom_call(void,(CESI,CESI),595) 
#define push_factorial  _rom_call(void,(CESI),540) 
#define push_greater_than  _rom_call(void,(CESI,CESI),5A5) 
#define push_greater_than_or_equals  _rom_call(void,(CESI,CESI),5A7) 
#define push_less_than  _rom_call(void,(CESI,CESI),5A6) 
#define push_less_than_or_equals  _rom_call(void,(CESI,CESI),5A8) 
#define push_negate  _rom_call(void,(CESI),524) 
#define push_not  _rom_call(void,(CESI),5AA) 
#define push_not_equals  _rom_call(void,(CESI,CESI),5A4) 
#define push_or _rom_call(void,(CESI,CESI),5AC)
#define push_percent  _rom_call(void,(CESI),555) 
#define push_product  _rom_call(void,(CESI,CESI),521) 
#define push_ratio  _rom_call(void,(CESI,CESI),526) 
#define push_square  _rom_call(void,(CESI),52C) 
#define push_sum  _rom_call(void,(CESI,CESI),594) 
#define push_substitute_simplify  _rom_call(void,(CESI,CESI,CESI),5B9) 
#define push_substitute_using_such_that  _rom_call(void,(CESI,CESI,CESI),5BE) 

/* cert.h */
#define ceof _rom_call(short,(CFILE*),128)
#define cfindfield _rom_call(short,(CFILE*,short,CERT_FIELD*),12A)
#define cgetc _rom_call(unsigned char,(CFILE*),12B)
#define cgetcertrevno _rom_call(short,(__plong),2A0)
#define cgetflen _rom_call(unsigned long,(CFILE*,short),12D)
#define cgetfnl _rom_call(long,(CERT_FIELD*),12E)
#define cgetnl _rom_call(long,(CFILE*),12F)
#define cgetns _rom_call(short,(CFILE*),130)
#define cgetsn _rom_call(void,(char*),2A1)
#define copen _rom_call(void,(CFILE*,char*,long),132)
#define copensub _rom_call(void,(CFILE*,CERT_FIELD*),133)
#define cputhdr _rom_call(short,(CFILE*,short,short),134)
#define cputnl _rom_call(void,(CFILE*,long),135)
#define cputns _rom_call(void,(CFILE*,short),136)
#define cread _rom_call(short,(CFILE*,CERT_FIELD*),137)
#define ctell _rom_call(unsigned long,(CFILE*),138)
#define cwrite _rom_call(short,(CFILE*,CERT_FIELD*),139)
#define CertificateMemory ((unsigned char*const)(_rom_call_addr(43E)))

/* Dialog.h */
#define Dialog  _rom_call(short,(void*,short,short,char*,__pshort),30) 
#define DialogAdd _rom_call(HANDLE,(HANDLE,short,short,short,short,...),33)
#define DialogAddPulldown(h,x,y,t,p,i) DialogAdd(h,2,x,y,14,(const char*)(t),(short)(p),(short)(i))
#define DialogAddRequest(h,x,y,t,o,m,w) DialogAdd(h,0,x,y,2,(const char*)(t),(short)(o),(short)(m),(short)(w))
#define DialogAddText(h,x,y,t) DialogAdd(h,0,x,y,7,(const char*)(t))
#define DialogAddTitle(h,t,l,r) DialogAdd(h,0,0,0,8,(const char*)(t),(short)(l),(short)(r))
#define DialogAddScroll(h,x,y,w,g,f,t,p,u,m) DialogAdd(h,0,x,y,3,(short)w,(short)g,(short)f,(short)t,(short)p,(short)u,(short)m)
#define DialogDo  _rom_call(short,(HANDLE,short,short,char*,__pshort),32) 
#define DialogNew _rom_call(HANDLE,(short,short,DialogNew_t),34)
#define DialogNewSimple(w,h) DialogNew(w,h,NoCallBack)
#define DlgMessage  _rom_call(short,(const char*,const char*,short,short),1B4) 
#define VarNew  _rom_call(HSym,(const ESQ*,...),28E) 
#define VarOpen  _rom_call(HSym,(const ESQ*,...),28C) 
#define VarSaveAs  _rom_call(HSym,(const ESQ*,const char*,...),28D) 

/* error.h */
#define ER_OK 0
#define ER_OKAY 0
#define ER_EXIT 1
#define ER_STOP 2
#define ER_OFF 3
#define ER_PRGM_STOP 4
#define ER_NO_MSG 9
#define ER_FUNC_DID_NOT_RETURN_VALUE 10
#define ER_TEST_NOT_TRUE_OR_FALSE 20
#define ER_ARG_CANNOT_BE_FOLDER 30
#define ER_ARGUMENT 40
#define ER_ARG_MISMATCH 50
#define ER_EXPECTED_BOOL_OR_AGG 60
#define ER_ARG_MUST_BE_DECIMAL 70
#define ER_ARG_MUST_BE_LABEL 80
#define ER_ARGUMENT_MUST_BE_LIST 90
#define ER_ARG_MUST_BE_MATRIX 100
#define ER_ARG_MUST_BE_PIC 110
#define ER_ARG_MUST_BE_PIC_OR_STR 120
#define ER_ARG_MUST_BE_STRING 130
#define ER_EXPECTED_VAR 140
#define ER_ARG_MUST_BE_EMPTY_FOLDER 150
#define ER_EXPECTED_ALGEBRAIC 160
#define ER_ASAP_TOO_LONG 161
#define ER_ATTRIBUTE_NOT_FOUND 163
#define ER_BATT_LOW 165
#define ER_BOUND 170
#define ER_BREAK 180
#define ER_CHECKSUM 185
#define ER_CIRCULAR_DEFINITION 190
#define ER_INVALID_SUCH_THAT 200
#define ER_DATATYPE 210
#define ER_DEPENDENT_LIMIT 220
#define ER_DIFF_EQ_SETUP 225
#define ER_DIMENSION 230
#define ER_NOT_ENOUGH_ELEMENTS 230
#define ER_NON_CONFORMING_LISTS 240
#define ER_DIVBY0 250
#define ER_DOMAIN 260
#define ER_DUPLICATE_VAR_NAME 270
#define ER_ELSEIF_WITHOUT_IF 280
#define ER_ELSE_WITHOUT_IF 280
#define ER_ENDTRY_WITHOUT_ELSE 290
#define ER_EXCESSIVE_ITERATION 295
#define ER_EXPECTED_2OR3_ELEMENTS 300
#define ER_EXPIRED 305
#define ER_APP_EXT_NOT_FOUND 307
#define ER_APP_NOT_FOUND 308
#define ER_INVALID_NSOLVE_ARG1 310
#define ER_INVALID_SOLVE_ARG1 320
#define ER_FOLDER 330
#define ER_FUNCS_IN_DIFF_EQ 335
#define ER_INCONSISTENT_UNITS 345
#define ER_INVALID_SUBSCRIPT 350
#define ER_INVALID_INDIR_STRING 360
#define ER_INDIR_STRING_NOT_VARNAME 360
#define ER_INDIR_STRING_NOT_FUNNAME 360
#define ER_INVALID_ANS 380
#define ER_ILLEGAL_ASSIGNMENT 390
#define ER_ILLEGAL_ASSIGNMENT_VALUE 400
#define ER_INVALID_AXES 405
#define ER_ILLEGAL_COMMAND 410
#define ER_INVALID_FOLDER_NAME 420
#define ER_GRAPH_MODE 430
#define ER_INVALID_GUESS 435
#define ER_INVALID_IMPLIED_MULT 440
#define ER_ILLEGAL_IN_FUNC 450
#define ER_ILLEGAL_IN_CUSTOM 460
#define ER_ILLEGAL_IN_DIALOG 470
#define ER_ILLEGAL_IN_TOOLBAR 480
#define ER_CANNOT_EXIT_FROM_TRY 490
#define ER_CANNOT_CYCLE_FROM_TRY 490
#define ER_CANNOT_GOTO_FROM_TRY 490
#define ER_CANNOT_GOTO_INTO_TRY 490
#define ER_INVALID_LABEL 500
#define ER_INVALID_LIST_OR_MATRIX 510
#define ER_INVAL_OUTSIDE_TB_CM 520
#define ER_INVAL_OUTSIDE_DG_TB_CM 530
#define ER_INVALID_OUTSIDE_DIALOG 540
#define ER_MUST_BE_IN_PRGM_OR_FUNC 550
#define ER_CYCLE_NOT_IN_LOOP 560
#define ER_EXIT_NOT_IN_LOOP 560
#define ER_INVALID_PATHNAME 570
#define ER_INVALID_POLAR_COMPLEX 575
#define ER_ILLEGAL_PRGM_REF 580
#define ER_INVALID_SYNTAX_BLOCK 590
#define ER_INVALID_TABLE 600
#define ER_INVALID_USE_OF_UNITS 605
#define ER_INVALID_LOCAL_DECLARATION 610
#define ER_EXPECTED_VAR_OR_FUNC 620
#define ER_INVALID_VAR_REF 630
#define ER_INVALID_VECTOR_SYNTAX 640
#define ER_LINK_IO 650
#define ER_MAT_NOT_DIAGONALIZABLE 665
#define ER_MEMORY 670
#define ER_MEMORY_EXHAUSTION 670
#define ER_ESTACK_OVERFLOW 670
#define ER_STACK_VIO 673
#define ER_EXPECTED_LPAR 680
#define ER_EXPECTED_RPAR 690
#define ER_EXPECTED_DOUBLE_QUOTE 700
#define ER_EXPECTED_RIGHT_BRACKET 710
#define ER_EXPECTED_RIGHT_BRACE 720
#define ER_INVALID_BLOCK_STRUCTURE 730
#define ER_MISSING_THEN 740
#define ER_NOT_FUNC_OR_PRGM 750
#define ER_NO_FUNCS_SEL 765
#define ER_NO_SOLUTION 780
#define ER_NON_ALGEBRAIC_VARIABLE 790
#define ER_UNREAL_RESULT 800
#define ER_EXPECTED_REAL 800
#define ER_MEMORY_DML 810
#define ER_RATIONAL_NUMERIC_OVERFLOW 830
#define ER_OVERFLOW 830
#define ER_STAT_PLOT 840
#define ER_PRGM_NOT_FOUND 850
#define ER_RECURSION_TOO_DEEP 860
#define ER_RESERVED 870
#define ER_SYS_FUNC 870
#define ER_ROM_ROUTINE_NOT_AVAILABLE 875
#define ER_SEQUENCE_SETUP 880
#define ER_SIGNATURE_ERR 885
#define ER_SINGULARMAT 890
#define ER_SLOPE_FIELD_FUNCS 895
#define ER_WEIGHTS_SUM_NOT_POS 900
#define ER_LISTS_CONTAIN_NEG 900
#define ER_LISTS_NOT2DISCREET 900
#define ER_EMPTY_GROUP_NOT_VALID 900
#define ER_SYNTAX 910
#define ER_UNEXPECTED_CHARACTER 910
#define ER_EXPECTED_EQUAL 910
#define ER_EXPECTED_FACTOR 910
#define ER_TOO_FEW_ARGS 930
#define ER_TOO_MANY_ARGS 940
#define ER_TOO_MANY_SUBSCRIPTS 950
#define ER_TOO_MANY_UNDEFINED 955
#define ER_UNDEFINED_VAR 960
#define ER_UNLICENSED 965
#define ER_GRAPH_FUNC_IN_USE 970
#define ER_PROG_OR_FUNC_IN_USE 970
#define ER_VAR_IN_USE 970
#define ER_LOCKED 980
#define ER_PROTECTED 980
#define ER_NAME_TOO_LONG 990
#define ER_RANGE 1000
#define ER_ZOOM 1010
#define ER_ILLEGAL_TAG 1020
#define ER_UNKNOWN_TAG 1020
#define ER_DIVISION_BUG 1020
#define ER_MEM_VIO 1030
#define ER_FP_TEST_FAIL 4094
#define EXPECTED_BOOL_OR_AGG_ERROR 60
#define EXPECTED_VAR_ERROR 140
#define EXPECTED_ALGEBRAIC_ERROR 160
#define INVALID_SUCH_THAT_ERROR 200
#define NON_CONFORMING_LISTS_ERROR 240
#define EXPECTED_2OR3_ELEMENTS_ERROR 300
#define INVALID_NSOLVE_ARG1_ERROR 310
#define INVALID_SOLVE_ARG1_ERROR 320
#define INVALID_PATHNAME_ERROR 570
#define EXPECTED_VAR_OR_FUNC_ERROR 620
#define MEMORY_EXHAUSTION_ERROR 670
#define ESTACK_OVERFLOW_ERROR 670
#define EXPECTED_LPAR_ERROR 680
#define EXPECTED_RPAR_ERROR 690
#define EXPECTED_DOUBLE_QUOTE_ERROR 700
#define EXPECTED_RIGHT_BRACKET_ERROR 710
#define EXPECTED_RIGHT_BRACE_ERROR 720
#define UNREAL_RESULT_ERROR 800
#define EXPECTED_REAL_ERROR 800
#define RATIONAL_NUMERIC_OVERFLOW_ERROR 830
#define RECURSION_TOO_DEEP_ERROR 860
#define SYNTAX_ERROR 910
#define UNEXPECTED_CHARACTER_ERROR 910
#define EXPECTED_EQUAL_ERROR 910
#define EXPECTED_FACTOR_ERROR 910
#define TOO_FEW_ARGS_ERROR 930
#define TOO_MANY_ARGS_ERROR 940
#define TOO_MANY_SUBSCRIPTS_ERROR 950
#define TOO_MANY_UNDEFINED_ERROR 955
#define GRAPH_FUNC_IN_USE_ERROR 970
#define NAME_TOO_LONG_ERROR 990
#define ILLEGAL_TAG_ERROR 1020
#define UNKNOWN_TAG_ERROR 1020
#define DIVISION_BUG_ERROR 1020

#define ER_catch _rom_call(short,(void*),154)
#define ER_success _rom_call(void,(void),155)
#define ER_throwVar _rom_call_attr(void,(short),__attribute__((__noreturn__)),153)
#define ER_throw(err_no) ER_throwVar(err_no)
#define ER_THROW(n) ER_throwVar(n)
#define ERD_dialog  _rom_call(short,(short,short),151) 
#define ERD_process  _rom_call(void,(short),152) 
#define ENDFINAL }if(errCode)PASS;}
#define ENDTRY ;_ONERR_=0;}}
#define FINALLY ER_success();}{
#define ONERR ER_success();}else{register short _ONERR_=1;
#define PASS (ER_throwVar(errCode))
#define TRY {ERROR_FRAME __errFrame;unsigned short errCode;errCode=ER_catch(__errFrame);if(!errCode){
#define find_error_message _rom_call(const char*,(short),2C1)

/* estack */
#define push_zstr(s) ({register const char*__p=(s);register long __l=_rom_call(long,(const char*),27E)(__p);char __s[__l+2];__s[0]=0;push_expr_quantum(_rom_call(char*,(char*,const char*),26C)(__s+1,__p)+__l,STR_TAG) ;})
#define _push_zstr_const(s) (push_expr_quantum(SYMSTR(s),STR_TAG))
#define top_estack (*((ESI*)(_rom_call_addr(109))))
#define display_statements _rom_call(HANDLE,(CESI,short,short),4E)
#define ESTACK(idx) (*(idx))
#define HS_popEStack _rom_call(HANDLE,(void),244)
#define HToESI _rom_call(ESI,(HANDLE),247)
#define next_expression_index _rom_call(ESI,(CESI),10A)
#define NG_approxESI  _rom_call(void,(CESI),25C) 
#define NG_execute  _rom_call(void,(HANDLE,short),25D) 
#define NG_graphESI  _rom_call(void,(CESI,HANDLE),25E) 
#define NG_rationalESI  _rom_call(void,(CESI),25F) 
#define NG_RPNToText _rom_call(HANDLE,(HANDLE,short,short),25B)
#define NG_tokenize  _rom_call(short,(HANDLE,__pushort,__pushort),260) 
#define Parms2D _rom_call(void,(CESI,__pshort,__pshort,__pshort),4D)
#define Parse1DExpr _rom_call(HANDLE,(CESI,short,short),4F)
#define Parse2DExpr _rom_call(ESI,(CESI,short),4A)
#define Parse2DMultiExpr _rom_call(ESI,(HANDLE,short),4B)
#define Print2DExpr _rom_call(void,(CESI,WINDOW*,short,short),4C)
#define push_END_TAG _rom_call(void,(void),263)
#define push_LIST_TAG _rom_call(void,(void),264)
#define push_quantum(tag) (MIN_AMS<101?(void)(*(++top_estack)=tag):_rom_call(void,(ESQ),2EE)(tag))
#define TokenizeSymName  _rom_call(ESI,(const char*,short),80) 
#define all_tail _rom_call(short,(CESI_Callback_t,ESI),3B5)
#define any_tail _rom_call(short,(CESI_Callback_t,ESI),3B6)
#define are_expressions_identical _rom_call(short,(CESI,CESI),2BF)
#define can_be_approxed  _rom_call(short,(CESI,short),2F5) 
#define check_estack_size _rom_call(void,(short),2C2)
#define compare_complex_magnitudes  _rom_call(short,(CESI,CESI),2F6) 
#define compare_expressions _rom_call(short,(CESI,CESI),2C0)
#define compare_Floats _rom_call(long,(CESI,CESI),2F7)
#define delete_between _rom_call(void,(ESI,ESI),2C3)
#define delete_expression _rom_call(void,(ESI),2C5)
#define deleted_between _rom_call(unsigned short,(ESI,ESI),2C4)
#define deleted_expression _rom_call(unsigned short,(ESI),2C6)
#define did_push_cnvrt_Float_to_integer _rom_call(short,(CESI),2F8)
#define estack_number_to_Float(x) _tios_float_1(2F9,x,CESI)
#define estack_to_short _rom_call(short,(CESI,__pshort),2C7)
#define estack_to_ushort _rom_call(short,(CESI,__pushort),2C8)
#define factor_base_index _rom_call(ESI,(CESI),2C9)
#define factor_exponent_index _rom_call(ESI,(CESI),2CA)
#define gcd_exact_whole_Floats(x,y) _tios_float_2(2FC,x,y,CESI,CESI)
#define get_key_ptr _rom_call(char*,(ESQ,ESQ),2B7)
#define GetValue _rom_call(long,(CESI,long,long),2CB)
#define im_index _rom_call(ESI,(CESI),2CC)
#define index_below_display_expression_aux _rom_call(ESI,(CESI),2B6)
#define index_main_var _rom_call(ESI,(CESI),2CF)
#define index_numeric_term _rom_call(ESI,(CESI),2CD)
#define index_of_lead_base_of_lead_term _rom_call(ESI,(CESI),2CE)
#define is_advanced_tag _rom_call(short,(ESQ),2D0)
#define is_antisymmetric  _rom_call(short,(CESI,CESI),2D1) 
#define is_complex0 _rom_call(short,(CESI),2D3)
#define is_complex_number _rom_call(short,(CESI),2D2)
#define is_Float_exact_whole_number _rom_call(short,(CESI),2FE)
#define is_free_of_tag _rom_call(short,(CESI,ESQ),2D4)
#define is_independent_of _rom_call(short,(CESI,CESI),2D5)
#define is_independent_of_de_seq_vars _rom_call(short,(CESI),2D6)
#define is_independent_of_elements _rom_call(short,(CESI,CESI),2D8)
#define is_independent_of_tail _rom_call(short,(CESI,CESI),2D7)
#define is_matrix _rom_call(short,(CESI),3B7)
#define is_monomial _rom_call(short,(CESI),2D9)
#define is_monomial_in_kernel _rom_call(short,(CESI),2DA)
#define is_narrowly_independent_of _rom_call(short,(CESI,CESI),2DB)
#define is_square_matrix _rom_call(short,(CESI),3B8)
#define is_symmetric  _rom_call(short,(CESI,CESI),2DC) 
#define is_tail_independent_of _rom_call(short,(CESI,CESI),2DD)
#define is_valid_smap_aggregate _rom_call(short,(CESI),3B9)
#define last_element_index _rom_call(ESI,(CESI),3BA)
#define lead_base_index _rom_call(ESI,(CESI),2DE)
#define lead_exponent_index _rom_call(ESI,(CESI),2DF)
#define lead_factor_index _rom_call(ESI,(CESI),2E0)
#define lead_term_index _rom_call(ESI,(CESI),2E1)
#define likely_approx_to_complex_number _rom_call(short,(CESI),307)
#define likely_approx_to_number _rom_call(short,(CESI),308)
#define main_gen_var_index _rom_call(ESI,(CESI),2E2)
#define map_tail _rom_call(void,(ESI_Callback_t,ESI),3BB)
#define map_tail_Int _rom_call(short,(ESI_Callback_Int_t,ESI,short),3BC)
#define map_unary_over_comparison _rom_call(void,(ESI_Callback_t,ESI),2E3)
#define min_quantum _rom_call(ESQ,(ESQ,ESQ),2E4)
#define move_between_to_top _rom_call(void,(ESI,ESI),2E5)
#define moved_between_to_top _rom_call(unsigned short,(ESI,ESI),2E6)
#define norm1_complex_Float(x) _tios_float_1(309,x,CESI)
#define numeric_factor_index _rom_call(ESI,(CESI),2E7)
#define push_ANSI_string push_zstr
#define push_between _rom_call(void,(void*,void*),2E8)
#define push_cnvrt_integer_if_whole_nmb _rom_call(void,(CESI),30D)
#define push_expr_quantum _rom_call(void,(CESI,ESQ),2E9)
#define push_expr2_quantum _rom_call(void,(CESI,CESI,ESQ),2EA)
#define push_expression(ptr) ({push_expr_quantum(ptr,NOTHING_TAG);(void)(--top_estack);})
#define push_Float _rom_call(void,(float),30A)
#define push_Float_to_nonneg_int _rom_call(void,(float),30B)
#define push_Float_to_rat _rom_call(void,(CESI),30C)
#define push_next_arb_int _rom_call(void,(void),2EB)
#define push_next_arb_real _rom_call(void,(void),2EC)
#define push_next_internal_var _rom_call(void,(ESQ),2ED)
#define push_offset_array _rom_call(unsigned short,(CESI,__pushort*),3C4)
#define push_overflow_to_infinity _rom_call(void,(ESQ),30E)
#define push_parse_text  _rom_call(short,(const char*),3CA) 
#define push_quantum_pair _rom_call(void,(ESQ,ESQ),2EF)
#define push_reversed_tail _rom_call(void,(CESI),3BF)
#define push_round_Float _rom_call(void,(CESI),310)
#define push_transpose_aux  _rom_call(void,(CESI,short),3C1) 
#define re_index _rom_call(ESI,(CESI),2F2)
#define reductum_index _rom_call(ESI,(CESI),2F0)
#define remaining_element_count _rom_call(unsigned short,(CESI),3C3)
#define remaining_factors_index _rom_call(ESI,(CESI),2F1)
#define reset_control_flags _rom_call(void,(void),2F4)
#define reset_estack_size _rom_call(void,(short),2F3)
#define should_and_did_push_approx_arg2  _rom_call(short,(CESI,CESI),311) 
#define signum_Float _rom_call(long,(CESI),312)
#define is0 _rom_call(short,(CESI),269)
#define is1 _rom_call(short,(CESI),2FD)
#define is_variable _rom_call(short,(CESI),488)
#define push_long_to_integer _rom_call(void,(long),4E3)
#define push_simplify  _rom_call(void,(CESI),44E) 
#define push_ulong_to_integer _rom_call(void,(long),4E4)
#define push_ushort_to_integer _rom_call(void,(short),4E5)
#define add_to_top  _rom_call(void,(CESI),518) 
#define add1_to_top  _rom_call(void,(void),51D) 
#define and_onto_top  _rom_call(void,(CESI),579) 
#define integer_non_unknown  _rom_call(short,(CESI),50C) 
#define is_constant _rom_call(short,(CESI),593)
#define is_minus1 _rom_call(short,(CESI),508)
#define is_negative  _rom_call(short,(CESI),575) 
#define is_never0  _rom_call(short,(CESI),577) 
#define is_nonnegative  _rom_call(short,(CESI),574) 
#define is_nonpositive  _rom_call(short,(CESI),576) 
#define is_polynomial_in_var_or_kern _rom_call(short,(CESI,CESI),56B)
#define is_positive  _rom_call(short,(CESI),573) 
#define is_totally_polynomial _rom_call(short,(CESI),56C)
#define is_whole_number _rom_call(short,(CESI),50B)
#define negate_top  _rom_call(void,(void),525) 
#define subtract_from_top  _rom_call(void,(CESI),51B) 
#define subtract1_from_top  _rom_call(void,(void),51E) 
#define ARb_int_count (*((ESQ*)(_rom_call_addr(5C3))))
#define ARb_real_count (*((ESQ*)(_rom_call_addr(5C2))))

/* events */
#define ModeSettings ((MO_OPTIONS*const)(long)*(short*)((char*)MO_currentOptions+6))
#define EV_hook (*((EVENT_HANDLER*)(_rom_call_addr(2A3))))
#define ABT_dialog _rom_call(void,(void),10D)
#define CAT_dialog _rom_call(void,(void),125)
#define EV_captureEvents _rom_call(EVENT_HANDLER,(EVENT_HANDLER),C6)
#define EV_centralDispatcher  _rom_call(void,(void),156) 
#define EV_clearPasteString _rom_call(void,(void),C7)
#define EV_defaultHandler  _rom_call(void,(EVENT*),157) 
#define EV_eventLoop  _rom_call(void,(void),158) 
#define EV_getc  _rom_call(unsigned short,(short,EVENT*),C8) 
#define EV_getSplitRect _rom_call(WIN_RECT*,(short),C9)
#define EV_notifySwitchGraph _rom_call(void,(void),CA)
#define EV_paintOneWindow _rom_call(short,(void),CB)
#define EV_paintWindows _rom_call(void,(void),CC)
#define EV_registerMenu _rom_call(void,(void*),159)
#define EV_restorePainting _rom_call(short,(short),CD)
#define EV_sendEvent _rom_call(void,(short,EVENT*),CE)
#define EV_sendEventSide _rom_call(void,(short,EVENT*,short),CF)
#define EV_sendString _rom_call(void,(short),D0)
#define EV_setCmdCheck _rom_call(void,(short,short),D1)
#define EV_setCmdState _rom_call(void,(short,short),D2)
#define EV_setFKeyState _rom_call(void,(short,short,short),D3)
#define EV_startApp _rom_call(void,(short,short),D4)
#define EV_startSide _rom_call(void,(__pshort,short,short),D5)
#define EV_startTask _rom_call(void,(short),D6)
#define EV_suspendPainting _rom_call(short,(void),D7)
#define EV_switch _rom_call(void,(void),D8)
#define handleRclKey  _rom_call(void,(short),14F) 
#define MO_currentOptions _rom_call(void,(void),D9)
#define MO_defaults  _rom_call(void,(void),DA) 
#define MO_digestOptions  _rom_call(void,(short),DB) 
#define MO_isMultigraphTask _rom_call(short,(short),DC)
#define MO_modeDialog  _rom_call(void,(void),DD) 
#define MO_notifyModeChange _rom_call(void,(short),DE)
#define MO_sendQuit _rom_call(void,(short,short),DF)
#define handleVarLinkKey  _rom_call(void,(short),129) 

#define AP_START_NEW (AMS_1xx?__AP_START_NEW_1:__AP_START_NEW_2)
#define AP_START_OPEN (AMS_1xx?__AP_START_OPEN_1:__AP_START_OPEN_2)
#define AP_START_ERROR (AMS_1xx?__AP_START_ERROR_1:__AP_START_ERROR_2)

/* Flash */
#define EM_abandon _rom_call(void,(HANDLE),15B)
#define EM_blockVerifyErase _rom_call(short,(void*),15D)
#define EM_findEmptySlot(s) (__EM_findEmptySlot((s),0))
#define EM_GC _rom_call(short,(short),160)
#define EM_survey _rom_call(void,(__pulong,__pulong,__pulong,__pulong,__pulong,__pulong),165)
#define EM_write _rom_call(void,(const void*,void*,long),167)
#define FL_addCert _rom_call(unsigned short,(void*,long),169)
#define FL_download _rom_call(void,(long),16A)
#define FL_getCert _rom_call(void,(HANDLE*,__pulong,short),16C)
#define FL_getHardwareParmBlock() (((_ram_call(14,unsigned short)==0x1100)?(const void*)"\0\x6\0\0\0\x1":_rom_call(const void*,(void),16B)())
#define FL_getVerNum _rom_call(unsigned short,(void),16D)
#define FL_write _rom_call(void,(const void*,void*,long),171)
#define GetAMSSize() ((*((unsigned long*)(((char*)ROM_base)+0x12002)))+0x49)
#define FlashMemoryEnd ((unsigned char*const)(_rom_call_addr(43D)))
#define BatTooLowFlash _rom_call(short,(short),434)

/* Float */
#define DBL_DIG 16
#define DBL_EPSILON (1e-15)
#define DBL_MANT_BITS 64
#define DBL_MANT_DIG 16
#define DBL_MAX (9.999999999999999e999)
#define DBL_MAX_10_EXP 999
#define DBL_MAX_2_EXP 3321
#define DBL_MAX_EXP 999
#define DBL_MIN (1e-999)
#define DBL_MIN_10_EXP (-999)
#define DBL_MIN_2_EXP (-3318)
#define DBL_MIN_EXP (-999)
#define FLT_DIG 16
#define FLT_EPSILON (1e-15)
#define FLT_MANT_BITS 64
#define FLT_MANT_DIG 16
#define FLT_MAX (9.999999999999999e999)
#define FLT_MAX_10_EXP 999
#define FLT_MAX_2_EXP 3321
#define FLT_MAX_EXP 999
#define FLT_MIN (1e-999)
#define FLT_MIN_10_EXP (-999)
#define FLT_MIN_2_EXP (-3318)
#define FLT_MIN_EXP (-999)
#define FLT_NORMALIZE 1
#define FLT_RADIX 10
#define FLT_ROUNDS 1
#define LDBL_DIG 16
#define LDBL_EPSILON (1e-15)
#define LDBL_MANT_BITS 64
#define LDBL_MANT_DIG 16
#define LDBL_MAX (9.999999999999999e999)
#define LDBL_MAX_10_EXP 999
#define LDBL_MAX_2_EXP 3321
#define LDBL_MAX_EXP 999
#define LDBL_MIN (1e-999)
#define LDBL_MIN_10_EXP (-999)
#define LDBL_MIN_2_EXP (-3318)
#define LDBL_MIN_EXP (-999)
#define HALF_PI (1.570796326794897)
#define NAN (0./0.)
#define NEGATIVE_INF (1/NEGATIVE_ZERO)
#define NEGATIVE_ZERO (-POSITIVE_ZERO)
#define PI (3.141592653589793)
#define POSITIVE_INF (1/POSITIVE_ZERO)
#define POSITIVE_ZERO (1.e-8192*1.e-8192)
#define UNSIGNED_INF (1/UNSIGNED_ZERO)
#define UNSIGNED_ZERO (0.)
#define ZERO (0.)

#define abs(x) ({typeof(x) __x = (x); __x >= 0 ? __x : -__x ;})
#define acos(x) _tios_float_1(F5,x,float)
#define acosh(x) _tios_float_1(288,x,float)
#define asin(x) _tios_float_1(F6,x,float)
#define asinh(x) _tios_float_1(287,x,float)
#define atan2(x,y) _tios_float_2(F8,x,y,float,float)
#define atan(x) _tios_float_1(F7,x,float)
#define atanh(x) _tios_float_1(289,x,float)
#define cacos _rom_call(void,(float,float,float*,float*),13A)
#define cacosh _rom_call(void,(float,float,float*,float*),13D)
#define casin _rom_call(void,(float,float,float*,float*),13B)
#define casinh _rom_call(void,(float,float,float*,float*),13E)
#define catan _rom_call(void,(float,float,float*,float*),13C)
#define catanh _rom_call(void,(float,float,float*,float*),13F)
#define ccos _rom_call(void,(float,float,float*,float*),140)
#define ccosh _rom_call(void,(float,float,float*,float*),143)
#define ceil(x) _tios_float_1(105,x,float)
#define cexp _rom_call(void,(float,float,float*,float*),149)
#define cln _rom_call(void,(float,float,float*,float*),147)
#define clog10 _rom_call(void,(float,float,float*,float*),148)
#define cos(x) _tios_float_1(F9,x,float)
#define cosh(x) _tios_float_1(FC,x,float)
#define csin _rom_call(void,(float,float,float*,float*),141)
#define csinh _rom_call(void,(float,float,float*,float*),144)
#define csqrt _rom_call(void,(float,float,float*,float*),146)
#define ctan _rom_call(void,(float,float,float*,float*),142)
#define ctanh _rom_call(void,(float,float,float*,float*),145)
#define exp(x) _tios_float_1(FF,x,float)
#define fabs(x) _tios_float_1(106,x,float)
#define floor(x) _tios_float_1(107,x,float)
#define fmod(x,y) _tios_float_2(108,x,y,float,float)
#define hypot(x,y) ({float __x=(x),__y=(y);sqrt(fadd(fmul((__x),(__x)),fmul((__y),(__y)))) ;})
#define log(x) _tios_float_1(100,x,float)
#define log10(x) _tios_float_1(101,x,float)
#define modf(x,y) _tios_float_2(102,x,y,float,float*)
#define pow(x,y) _tios_float_2(103,x,y,float,float)
#define sin(x) _tios_float_1(FA,x,float)
#define sinh(x) _tios_float_1(FD,x,float)
#define sqrt(x) _tios_float_1(104,x,float)
#define tan(x) _tios_float_1(FB,x,float)
#define tanh(x) _tios_float_1(FE,x,float)
#define frexp10(x,y) _tios_float_2(2FB,x,y,float,__pshort)
#define is_inf _rom_call(short,(float),2FF)
#define is_nan _rom_call(short,(float),306)
#define is_nzero _rom_call(short,(float),300)
#define is_pzero _rom_call(short,(float),301)
#define is_sinf _rom_call(short,(float),302)
#define is_transfinite _rom_call(short,(float),303)
#define is_uinf_or_nan _rom_call(short,(float),304)
#define is_uzero _rom_call(short,(float),305)

/* Draw */
#define GD_Circle  _rom_call(void,(void),176)
#define GD_Contour  _rom_call(void,(void),17D)
#define GD_Eraser  _rom_call(void,(void),17A)
#define GD_HVLine  _rom_call(void,(short),178)
#define GD_Line  _rom_call(void,(void),177)
#define GD_Pen  _rom_call(void,(void),179)
#define GD_Select  _rom_call(void,(void),17C)
#define GD_Text  _rom_call(void,(void),17B)
#define GR3_paint3d  _rom_call(void,(void),1FF)
#define GR3_xyToWindow  _rom_call(void,(float,float,float*,__pshort,__pshort),200)
#define GZ_Box  _rom_call(void,(void),22B)
#define GZ_Center  _rom_call(void,(void),22C)

#define BITMAP_HDR_SIZE 4
#define ScrRect ((SCR_RECT*const)(_rom_call_addr(2F)))
#define BitmapGet _rom_call(void,(const SCR_RECT*,void*),185)
#define BitmapInit _rom_call(void,(const SCR_RECT*,void*),186)
#define BitmapPut _rom_call(void,(short,short,const void*,const SCR_RECT*,short),187)
#define BitmapSize _rom_call(unsigned short,(const SCR_RECT*),188)
#define ClrScr _rom_call(void,(void),19E)
#define ClearScreen ClrScr
#define DisplayOff() (pokeIO_bclr(0x600015,0))
#define DisplayOn() (pokeIO_bset(0x600015,0))
#define DrawChar _rom_call(void,(short,short,char,short),1A4)
#define DrawClipChar _rom_call(void,(short,short,short,const SCR_RECT*,short),191)
#define DrawClipEllipse _rom_call(void,(short,short,short,short,const SCR_RECT*,short),192)
#define DrawClipLine _rom_call(void,(const WIN_RECT*,const SCR_RECT*,short),193)
#define DrawClipPix _rom_call(void,(short,short),194)
#define DrawClipRect _rom_call(void,(const WIN_RECT*,const SCR_RECT*,short),195)
#define DrawFkey _rom_call(void,(short,short,short,short),1A5)
#define DrawIcon _rom_call(void,(short,short,const void*,short),1A6)
#define DrawLine _rom_call(void,(short,short,short,short,short),1A7)
#define DrawMultiLines _rom_call(void,(short,short,const void*),196)
#define DrawPix _rom_call(void,(short,short,short),1A8)
#define DrawStr _rom_call(void,(short,short,const char*,short),1A9)
#define DrawStrXY DrawStr
#define DrawStrWidth _rom_call(short,(const char*,short),197)
#define DrawTo _rom_call(void,(short,short),19C)
#define FillLines2 _rom_call(void,(const WIN_RECT*,const WIN_RECT*,const SCR_RECT*,short),199)
#define FillTriangle _rom_call(void,(short,short,short,short,short,short,const SCR_RECT*,short),198)
#define FontCharWidth _rom_call(short,(short),190)
#define FontGetSys _rom_call(unsigned char,(void),18E)
#define FontSetSys _rom_call(unsigned char,(short),18F)
#define GetPix _rom_call(short,(short,short),19F)
#define LCD_restore(b) ((void)(_rom_call(void,(),26A)(LCD_MEM,(const void*)(b),(long)LCD_SIZE)))
#define LCD_save(b) ((void)(_rom_call(void,(),26A)((void*)(b),LCD_MEM,(long)LCD_SIZE)))
#define LineTo _rom_call(void,(short,short),19C)
#define MakeWinRect _rom_call(WIN_RECT*,(short,short,short,short),2C)
#define MoveTo _rom_call(void,(short,short),19D)
#define PortRestore _rom_call(void,(void),1A3)
#define PortSet _rom_call(void,(void*,short,short),1A2)
#define QScrRectOverlap _rom_call(short,(const SCR_RECT*,const SCR_RECT*),18D)
#define RestoreScrState _rom_call(void,(const void*),1A1)
#define SaveScrState _rom_call(void,(void*),1A0)
#define ScrRectFill _rom_call(void,(const SCR_RECT*,const SCR_RECT*,short),189)
#define ScrRectOverlap _rom_call(short,(const SCR_RECT*,const SCR_RECT*,SCR_RECT*),18A)
#define ScrRectScroll _rom_call(void,(const SCR_RECT*,const SCR_RECT*,short,short),18B)
#define ScrRectShift _rom_call(void,(const SCR_RECT*,const SCR_RECT*,short,short),18C)
#define ScrToHome _rom_call(SCR_RECT*,(SCR_RECT*),2E)
#define ScrToWin _rom_call(WIN_RECT*,(const SCR_RECT*),2D)
#define SetCurAttr _rom_call(short,(short),19A)
#define SetCurClip _rom_call(void,(const SCR_RECT*),19B)
#define CalcBitmapSize _rom_call(unsigned short,(BITMAP*),3EF)
#define ClientToScr _rom_call(void,(const SCR_RECT*,const SCR_RECT*,SCR_RECT*),42C)
#define DrawStrWidthP _rom_call(unsigned short,(const char*,short,short),3EE)
#define MakeScrRect _rom_call(SCR_RECT*,(short,short,short,short,SCR_RECT*),42D)

/* Home screen */
#define HomeExecute  _rom_call(void,(const char*,short),10E)
#define HomePushEStack _rom_call(void,(void),10F)
#define HS_chopFIFO _rom_call(void,(void),23C)
#define HS_countFIFO _rom_call(unsigned short,(void),23D)
#define HS_deleteFIFONode _rom_call(HANDLE,(HANDLE),23E)
#define HS_freeAll _rom_call(void,(void),23F)
#define HS_freeFIFONode _rom_call(void,(HANDLE),240)
#define HS_getAns _rom_call(HANDLE,(short),241)
#define HS_getEntry _rom_call(HANDLE,(short),242)
#define HS_getFIFONode _rom_call(HANDLE,(short),243)
#define HS_newFIFONode _rom_call(HANDLE,(void),245)
#define HS_popEStack _rom_call(HANDLE,(void),244)
#define HS_pushEmptyFIFONode (*(__get_HS_pushEmptyFIFONode()))
#define HS_pushFIFONode _rom_call(void,(HANDLE),246)
#define HomeAlone _rom_call(unsigned short,(void),506)

/* Int */
#define AUTO_INT_COUNT (LAST_AUTO_INT-FIRST_AUTO_INT+1)
#define FIRST_AUTO_INT 1
#define FIRST_TRAP 0
#define LAST_AUTO_INT 7
#define LAST_TRAP 15
#define TRAP_COUNT (LAST_TRAP-FIRST_TRAP+1)
#define AutoInts IntVecs
#define AUTO_INT(IntNo) ((long)(IntNo)*4+0x60)
#define DisableAutoInt3() ({ asm volatile ("bclr #2,0x600015"); })
#define DisablePRG() ({ asm volatile ("bclr #3,0x600015"); })
#define DUMMY_HANDLER ((INT_HANDLER)(&__dummy_handler__))
#define EnableAutoInt3() ({ asm volatile ("bset #2,0x600015"); })
#define EnablePRG() ({ asm volatile ("bset #3,0x600015"); })
#define ExecuteHandler(h) ({ INT_HANDLER __addr=(h); asm("pea 0f;move %%sr,-(%%sp);jra (%0);0:"::"a"(__addr)); })
#define GetIntVec(i) (*(INT_HANDLER*)(i))
#define IsAutoInt3Enabled() (!!((*((volatile unsigned char*)0x600015))&0x4))
#define IsPRGEnabled() (!!((*((volatile unsigned char*)0x600015))&0x8))
#define PRG_getRate() (((*((unsigned char*)0x600015))&0x30)>>4)
#define PRG_getValue() (*((volatile unsigned char*)0x600017))
#define PRG_setRate(x) (*((unsigned char*)0x600015)=(*((unsigned char*)0x600015)&0xCF)|(((x)&0x3)<<4))
#define PRG_setStart(x) (*((volatile unsigned char*)0x600017)=(x))
#define SetIntVec(i,h) ({asm volatile ("bclr.b #2,0x600001");(void) (*(INT_HANDLER*)(i) = (h));asm volatile ("bset.b #2,0x600001");})
#define TRAP(TrapNo) ((long)(TrapNo)*4+0x80)
#define DEFINE_INT_HANDLER(name) extern _DEREF_INT_HANDLER name[]; asm(".text;.even;"#name":move.w #0x2700,%sr;movem.l %d0-%d7/%a0-%a6,-(%sp);jbsr __"#name"_body__;movem.l (%sp)+,%d0-%d7/%a0-%a6;rte"); void __##name##_body__(void)

/* Keyboard */
#define GKeyDown  _rom_call(short,(void),17F)
#define GKeyFlush  _rom_call(void,(void),180)
#define GKeyIn  _rom_call(short,(SCR_RECT*,short),17E)
#define kbhit  _rom_call(short,(void),52)
#define ngetchx  _rom_call(short,(void),51)
#define OSGetStatKeys _rom_call(short,(void),299)
#define _OSInitBetweenKeyDelay _rom_call(short,(short),249)
#define OSInitBetweenKeyDelay(rate) ({short __oldRate=_OSInitBetweenKeyDelay(48);(__oldRate*48-1)/_OSInitBetweenKeyDelay((rate))+1;})
#define OSInitKeyInitDelay _rom_call(short,(short),248)
#define pushkey  _rom_call(void,(short),50)
#define alphaLockOff _rom_call(void,(unsigned char*),482)
#define alphaLockOn _rom_call(void,(unsigned char*),481)
#define GetAlphaStatus _rom_call(unsigned char,(void),164)
#define KeyYesOrNo _rom_call(short,(short),3EB)
#define restoreAlphaLock _rom_call(void,(unsigned char*),483)
#define SetAlphaStatus _rom_call(void,(char),163)

/* Limits */
#ifdef __CHAR_UNSIGNED__
#define CHAR_MAX 255
#define CHAR_MIN 0
#else
#define CHAR_MAX 127
#define CHAR_MIN (-128)
#endif
#ifdef __INT_SHORT__
#define INT_MAX 0x7FFF
#define INT_MIN ((int)0x8000)
#define UINT_MAX 0xFFFFU
#else
#define INT_MAX 0x7FFFFFFFL
#define INT_MIN ((int)0x80000000L)
#define UINT_MAX 0xFFFFFFFFUL
#endif
#define CHAR_BIT 8
#define LONG_MAX 0x7FFFFFFFL
#define LONG_MIN ((long)0x80000000L)
#define SCHAR_MAX 127
#define SCHAR_MIN (-128)
#define SHRT_MAX 0x7FFF
#define SHRT_MIN ((short)0x8000)
#define UCHAR_MAX 255
#define ULONG_MAX 0xFFFFFFFFUL
#define USHRT_MAX 0xFFFFU

/* Link */
#define flush_link _rom_call(void,(void),24D)
#define getcalc  _rom_call(void,(SYM_STR),54)
#define LIO_Get _rom_call(unsigned short,(LIO_CTX*),57)
#define LIO_GetMultiple  _rom_call(short,(LIO_CTX*),59)
#define LIO_Receive  _rom_call(unsigned short,(LIO_CTX*,short,short),58)
#define LIO_RecvData _rom_call(unsigned short,(void*,long,long),5B)
#define LIO_Send _rom_call(unsigned short,(LIO_CTX*,short),56)
#define LIO_SendData _rom_call(unsigned short,(const void*,long),5A)
#define LIO_SendProduct _rom_call(unsigned short,(LIO_CTX*,short),253)
#define OSCheckSilentLink _rom_call(short,(void),24A)
#define OSLinkClose _rom_call(void,(void),24E)
#define OSLinkCmd  _rom_call(void,(short),24B)
#define OSLinkOpen _rom_call(void,(void),24D)
#define OSLinkReset _rom_call(void,(void),24C)
#define OSLinkTxQueueActive _rom_call(short,(void),252)
#define OSLinkTxQueueInquire _rom_call(unsigned short,(void),251)
#define OSReadLinkBlock _rom_call(unsigned short,(char*,short),24F)
#define OSWriteLinkBlock _rom_call(short,(const char*,short),250)
#define receive _rom_call(unsigned short,(char*,short),24F)
#define reset_link _rom_call(void,(void),24C)
#define sendcalc  _rom_call(unsigned short,(SYM_STR,short,short,unsigned char*),55)
#define transmit _rom_call(short,(const char*,short),250)
#define tx_free _rom_call(unsigned short,(void),252)

/* menus */
#define MenuAddIcon _rom_call(HANDLE,(HANDLE,short,const void*,short,short),42)
#define MenuAddText _rom_call(HANDLE,(HANDLE,short,const char*,short,short),41)
#define MenuBegin _rom_call(HANDLE,(const void*,short,short,short,...),36)
#define MenuCheck _rom_call(short,(HANDLE,short,short),37)
#define MenuEnd _rom_call(void,(HANDLE),38)
#define MenuGetTopRedef _rom_call(short,(HANDLE,short),40)
#define MenuKey  _rom_call(short,(HANDLE,short),39)
#define MenuNew _rom_call(HANDLE,(short,short,short),43)
#define MenuOn _rom_call(void,(HANDLE),3A)
#define MenuPopup  _rom_call(unsigned short,(const void*,short,short,short),3B)
#define MenuSubStat _rom_call(void,(HANDLE,short,short),3C)
#define MenuTopRedef _rom_call(void,(HANDLE,short,short),3F)
#define MenuTopSelect _rom_call(void,(HANDLE,short),3E)
#define MenuTopStat _rom_call(void,(HANDLE,short,short),3D)
#define MenuUpdate _rom_call(void,(void),49)
#define PopupAddText _rom_call(HANDLE,(HANDLE,short,const char*,short),44)
#define PopupClear _rom_call(HANDLE,(HANDLE),46)
#define PopupDo  _rom_call(short,(HANDLE,short,short,short),47)
#define PopupNew _rom_call(HANDLE,(const char*,short),45)
#define PopupText _rom_call(const char*,(HANDLE,short),48)
#define VarCreateFolderPopup _rom_call(HANDLE,(__pushort,short),28F)
#define DynMenuAdd _rom_call(HANDLE,(HANDLE,short,const void*,short,short),3F1)
#define DynMenuChange _rom_call(HANDLE,(HANDLE,short,const void*,short),3F0)
#define MenuFlags _rom_call(short,(HANDLE),3F4)
#define MenuItemDef _rom_call(void*,(HANDLE,short,__pushort),3F3)
#define MenuLoad _rom_call(HANDLE,(const void*,short),3F2)
#define MenuOff _rom_call(void,(HANDLE),419)
#define PopupBegin _rom_call(HANDLE,(HANDLE,short),3F5)
#define PopupBeginDo  _rom_call(short,(HANDLE,short,short,short),3F6)
#define QMenuTopSelect _rom_call(unsigned short,(HANDLE),41A)
#define FKeyI_H _rom_call(short,(HANDLE,short),592)

/* Peek poke */
#define peek(addr) (*((unsigned char*)(long)(addr)))
#define peek_bit(addr,bit) (!!(*((unsigned char*)(long)(addr))&(1<<(bit))))
#define peek_l(addr) (*((unsigned long*)(long)(addr)))
#define peek_w(addr) (*((unsigned short*)(long)(addr)))
#define peekIO(port) (*((volatile unsigned char*)(long)(port)))
#define peekIO_bit(port,bit) (!!(*((volatile unsigned char*)(long)(port))&(1<<(bit))))
#define peekIO_w(port) (*((volatile unsigned short*)(long)(port)))
#define poke(addr,val) (void)(*((unsigned char*)(long)(addr))=(val))
#define poke_bclr(__dest_addr__,__bit_nr__) ({register char *__addr_temp__=(char *)(__dest_addr__);asm("bclr.b %2,%0":"+dm"(*__addr_temp__):"0"(*__addr_temp__),"di"(__bit_nr__)); })
#define poke_bset(__dest_addr__,__bit_nr__) ({register char *__addr_temp__=(char *)(__dest_addr__);asm("bset.b %2,%0":"+dm"(*__addr_temp__):"0"(*__addr_temp__),"di"(__bit_nr__)); })
#define poke_l(addr,val) (void)(*((unsigned long*)(long)(addr))=(val))
#define poke_w(addr,val) (void)(*((unsigned short*)(long)(addr))=(val))
#define pokeIO(port,val) (void)(*((volatile unsigned char*)(long)(port))=(val))
#define pokeIO_bclr(__dest_addr__,__bit_nr__) ({register char *__addr_temp__=(char *)(__dest_addr__);asm("bclr.b %2,%0":"+dm"(*__addr_temp__):"0"(*__addr_temp__),"di"(__bit_nr__)); })
#define pokeIO_bset(__dest_addr__,__bit_nr__) ({register char *__addr_temp__=(char *)(__dest_addr__);asm("bset.b %2,%0":"+dm"(*__addr_temp__):"0"(*__addr_temp__),"di"(__bit_nr__)); })
#define pokeIO_w(port,val) (void)(*((volatile unsigned short*)(long)(port))=(val))
#define speek(addr) (*((signed char*)(long)(addr)))
#define speek_l(addr) (*((signed long*)(long)(addr)))
#define speek_w(addr) (*((signed short*)(long)(addr)))

/* RSA */
#define BN_power17Mod _rom_call(void,(BN*,const BN*,const BN*),122)
#define BN_powerMod _rom_call(void,(BN*,const BN*,const BN*,const BN*),123)
#define BN_prodMod _rom_call(void,(BN*,const BN*,const BN*),124)
#define cdecrypt _rom_call(void,(BN*,char*,long,BN*),127)
#define MD5Done _rom_call(void,(BN*,MD5_CTX*),257)
#define MD5Final _rom_call(void,(unsigned char*,MD5_CTX*),256)
#define MD5Init _rom_call(void,(MD5_CTX*),254)
#define MD5Update _rom_call(void,(MD5_CTX*,unsigned char*,long),255)

/* statlines */
#define ST_angle _rom_call(void,(short),E0)
#define ST_batt _rom_call(void,(short),E1)
#define ST_busy _rom_call(void,(short),E2)
#define ST_eraseHelp _rom_call(short,(void),E3)
#define ST_folder _rom_call(void,(const char*),E4)
#define ST_graph _rom_call(void,(short),E5)
#define ST_helpMsg _rom_call(void,(const char*),E6)
#define ST_showHelp ST_helpMsg
#define ST_modKey _rom_call(void,(short),E7)
#define ST_precision _rom_call(void,(short),E8)
#define ST_readOnly _rom_call(void,(short),E9)
#define ST_refDsp _rom_call(void,(short),EB)
#define ST_stack _rom_call(void,(short,short),EA)
#define ST_progressBar _rom_call(void,(ST_PROGRESS_BAR*,long,long),4D8)
#define ST_progressDismiss _rom_call(void,(ST_PROGRESS_BAR*),4DB)
#define ST_progressIncrement _rom_call(void,(ST_PROGRESS_BAR*,long),4DA)
#define ST_progressUpdate _rom_call(void,(ST_PROGRESS_BAR*,long),4D9)

/* Std*/
#define longjmp _rom_call(void,(void*,short),267)
#define setjmp _rom_call(short,(void*),266)
#define jmp_buf JMP_BUF
#define va_arg(ap,type) (*(type*)((((char*)(ap))+=((sizeof(type)+1)&0xFFFE))-(((sizeof(type)+1)&0xFFFE))))
#define va_end(ap) ((void)0)
#define va_start(ap,parmN) ((void)((ap)=(va_list)((char*)(&parmN)+((sizeof(parmN)+1)&0xFFFE))))
#define offsetof(type,member) ((unsigned long)&(((type*)0)->member))
#define OFFSETOF offsetof

/* stdio */
#define EOF (-1)
#define NULL ((void*)0)
#define TMP_MAX 152587890625
#define clearerr(f) ((void)(((f)->flags)&=~(_F_EOF|_F_ERR)))
#define feof(f) (((f)->flags)&_F_EOF)
#define ferror(f) (((f)->flags)&_F_ERR)
#define fflush(f) ((f)->unget=0)
#define fgetpos(f,p) (((long)((*(p)=ftell(f))))==EOF)
#define freopen(n,m,f) (fclose(f),(f)=fopen((n),(m)),(f))
#define fscanf(__file__,__format__...) cbscanf((vcbscanf_get_Callback_t)__fscanf_get,(vcbscanf_unget_Callback_t)__fscanf_unget,(void*)(__file__),__format__)
#define fsetpos(f,p) fseek((f),*(p),SEEK_SET)
#define getc fgetc
#define getchar fgetchar
#define printf_xy(x,y,f...) ({char __s[200];_rom_call(short,(char*,const char*,...),53)(__s ,##f);_rom_call(void,(short,short,const char*,short),1A9)(x,y,__s,4); })
#define putc fputc
#define putchar fputchar
#define remove unlink
#define rewind(f) ((void)({FILE*__file1__=(f);fseek(__file1__,0,SEEK_SET);__file1__->flags&=~_F_ERR;}))
#define scanf(__format__...) ({long __maxbuflen=(_rom_call(unsigned long,(void),9C))()-2;(__maxbuflen>0)?({char*__inputbuf=(_rom_call(void*,(long),A2))(__maxbuflen);getsn(__inputbuf,__maxbuflen);short __result=sscanf(__inputbuf,__format__);(_rom_call(void,(void*),A3))(__inputbuf);__result;}):0;})
#define sprintf _rom_call_attr(short,(char*,const char*,...),__attribute__((__format__(__printf__,2,3))),53)
#define sscanf(__buffer__,__format__...) ({__sscanf_string __param__={(__buffer__),0};cbscanf((vcbscanf_get_Callback_t)__sscanf_get,(vcbscanf_unget_Callback_t)__sscanf_unget,&__param__,__format__);})
#define strerror _rom_call(char*,(short),27D)
#define ungetc(c,f) ((f)->unget=((c)|0x8000))
#define vcbprintf ({register long __a=32+(long)(_rom_call_addr(53));(__vcbprintf__type__)(__a+*(short*)__a); })
#define vfprintf(s,f,a) vcbprintf((vcbprintf_Callback_t)fputc,(void**)(s),(f),(a))
#define vfscanf(__file__,__format__,__arglist__) vcbscanf((vcbscanf_get_Callback_t)__fscanf_get,(vcbscanf_unget_Callback_t)__fscanf_unget,(void*)(__file__),(__format__),(__arglist__))
#define vprintf(f,a) vcbprintf((vcbprintf_Callback_t)fputchar,NULL,(f),(a))
#define vscanf(__format__,__arglist__) ({long __maxbuflen=(_rom_call(unsigned long,(void),9C))()-2;(__maxbuflen>0)?({char*__inputbuf=(_rom_call(void*,(long),A2))(__maxbuflen);getsn(__inputbuf,__maxbuflen);short __result=vsscanf(__inputbuf,(__format__),(__arglist__));(_rom_call(void,(void*),A3))(__inputbuf);__result;}):0;})
#define vsprintf(b,f,a) ((void)({void*__p=(b);vcbprintf((vcbprintf_Callback_t)strputchar,&__p,(f),(a));*(char*)__p=0;}))
#define vsscanf(__buffer__,__format__,__arglist__) ({__sscanf_string __param__={(__buffer__),0};vcbscanf((vcbscanf_get_Callback_t)__sscanf_get,(vcbscanf_unget_Callback_t)__sscanf_unget,&__param__,(__format__),(__arglist__));})
#define __FERROR(f) ({(f)->flags|=_F_ERR; return EOF;})

/* stdlib */
#define ldiv(n,d) ({ldiv_t __r;long __n=(n),__d=(d);asm("move.l %2,%%d1;move.l %3,%%d0;jsr _ROM_CALL_2A8;move.l %%d1,%0;move.l %2,%%d1;move.l %3,%%d0;jsr _ROM_CALL_2A9;move.l %%d1,%1" : "=g"(__r.quot),"=g"(__r.rem) : "g"(__n),"g"(__d) : "a0","a1","d0","d1","d2");__r;})
#define RAND_MAX 32767
#define abort() (_rom_call(void,(const char*),E6)("ABNORMAL PROGRAM TERMINATION"),exit(0))
#define div(n,d) ({short __n=(n),__d=(d);div_t __r;__r.quot=__n/__d;__r.rem=__n%__d;__r;})
#define max(a,b) ({typeof(a) __a = (a); typeof(b) __b = (b); (__a > __b) ? __a : __b;})
#define min(a,b) ({typeof(a) __a = (a); typeof(b) __b = (b); (__a < __b) ? __a : __b;})
#define random(x) ((short)((long)(unsigned short)rand()*(unsigned short)(x)/32768))
#define randomize() srand(*(volatile unsigned char*)0x600017)
#define srand(x) (__randseed=(x))

/* string */
#define cmpstri _rom_call(short,(const unsigned char*,const unsigned char*),16F)
#define memchr _rom_call(void*,(const void*,short,long),273)
#define memcmp _rom_call(short,(const void*,const void*,long),270)
#define memcpy _rom_call(void*,(void*,const void*,long),26A)
#define memmove _rom_call(void*,(void*,const void*,long),26B)
#define memset _rom_call(void*,(void*,short,long),27C)
#define sprintf _rom_call_attr(short,(char*,const char*,...),__attribute__((__format__(__printf__,2,3))),53)
#define strcat _rom_call(char*,(char*,const char*),26E)
#define strchr _rom_call(char*,(const char*,short),274)
#define strcmp _rom_call(short,(const unsigned char*,const unsigned char*),271)
#define strcpy _rom_call(char*,(char*,const char*),26C)
#define strcspn _rom_call(unsigned long,(const char*,const char*),275)
#define strerror _rom_call(char*,(short),27D)
#define strlen _rom_call(unsigned long,(const char*),27E)
#define strncat _rom_call(char*,(char*,const char*,long),26F)
#define strncmp _rom_call(short,(const unsigned char*,const unsigned char*,long),272)
#define strncpy _rom_call(char*,(char*,const char*,long),26D)
#define strpbrk _rom_call(char*,(const char*,const char*),276)
#define strrchr _rom_call(char*,(const char*,short),277)
#define strspn _rom_call(unsigned long,(const char*,const char*),278)
#define strstr _rom_call(char*,(const char*,const char*),279)
#define strtok _rom_call(char*,(char*,const char*),27A)
#define memucmp _rom_call(short,(const void*,const void*,long),3CC)
#define stricmp _rom_call(short,(const unsigned char*,const unsigned char*),407)

/* system */
#define QUEUE(n) struct{unsigned short Head,Tail,Size,Used,Buffer[n/2];}
#define ReleaseDate ((const char*const)(_rom_call_addr_hack(43F,(((MIN_AMS>=101)||(TIOS_entries>0x2AC))?(((const char*const)_rom_call_addr(393))-11):((const char*const)"05/21/1998")),200)))
#define ReleaseVersion ((const char*const)(_rom_call_addr_hack(440,((((MIN_AMS>=101)||(TIOS_entries>0x2AC))?(((const char*const)_rom_call_addr(393))-16):((const char*const)"1.00"))),200)))
#define AB_prodid _rom_call(void,(char*),29D)
#define AB_prodname _rom_call(void,(char*),29E)
#define AB_serno _rom_call(short,(char*),29F)
#define ASM_call(x) ({asm volatile("movem.l %d0-%d7/%a0-%a6,-(%sp)");ASM_fastcall(x);asm volatile("movem.l (%sp)+,%d0-%d7/%a0-%a6") })
#define ASM_fastcall(x)  (((void(*)())(x))())
#define CB_fetchTEXT _rom_call(short,(HANDLE*,__pulong),C2)
#define CB_replaceTEXT _rom_call(short,(char*,long,short),C1)
#define CU_restore _rom_call(void,(short),C3)
#define CU_start _rom_call(short,(void),C4)
#define CU_stop _rom_call(short,(void),C5)
#define EX_patch _rom_call(void,(void*,void*),15A)
#define HelpKeys  _rom_call(void,(void),181)
#define idle _rom_call(void,(void),29B)
#define NeedStack _rom_call(void,(short),A4)
#define off _rom_call(void,(void),29A)
#define OSCheckBreak _rom_call(short,(void),EC)
#define OSClearBreak _rom_call(void,(void),ED)
#define OSContrastDn() ({_rom_call(void,(void),297) (); asm ("":::"d3","d4"); })
#define OSContrastUp() ({_rom_call(void,(void),296) (); asm ("":::"d3","d4"); })
#define OSDisableBreak _rom_call(void,(void),EF)
#define OSEnableBreak _rom_call(void,(void),EE)
#define OSFreeTimer _rom_call(short,(short),F1)
#define OSRegisterTimer _rom_call(short,(short,long),F0)
#define OSReset _rom_call(void,(void),294)
#define OSSetSR _rom_call(short,(short),29C)
#define OSTimerCurVal _rom_call(unsigned long,(short),F2)
#define OSTimerExpired _rom_call(short,(short),F3)
#define OSTimerRestart _rom_call(unsigned long,(short),F4)
#define QModeKey _rom_call(short,(short),182)
#define QSysKey _rom_call(short,(short),183)
#define SumStoChkMem _rom_call(short,(void),295)
#define WordInList _rom_call(short,(short,__pushort),184)
#define XR_stringPtr(strno) (AMS_1xx?_rom_call(const char*,(short),293)(strno):_rom_call(const char*,(long),293)(strno))
#define OSdequeue _rom_call(short,(__pushort,void*),3AA)
#define OSenqueue _rom_call(short,(short,void*),3A9)
#define OSqclear _rom_call(void,(void*),3AD)
#define OSqhead _rom_call(unsigned short,(__pushort,void*),3AC)
#define OSqinquire _rom_call(short,(__pushort,void*),3AB)
#define CU_cursorState (*((signed short*)(_rom_call_addr(503))))
#define FiftyMsecTick (*((volatile unsigned long*)(_rom_call_addr(4FC))))
#define AB_getGateArrayVersion _rom_call(unsigned long,(void),15E)
#define EX_getBasecodeParmBlock _rom_call(const void*,(void),5DA)

/* Text Edit */
#define TE_checkSlack _rom_call(void,(TEXT_EDIT*),A6)
#define TE_close _rom_call(void,(TEXT_EDIT*),A5)
#define TE_empty _rom_call(void,(TEXT_EDIT*),A7)
#define TE_focus _rom_call(short,(TEXT_EDIT*),A8)
#define TE_handleEvent  _rom_call(short,(TEXT_EDIT*,EVENT*),A9)
#define TE_indicateReadOnly _rom_call(void,(TEXT_EDIT*),AA)
#define TE_isBlank _rom_call(short,(TEXT_EDIT*),AB)
#define TE_open _rom_call(short,(TEXT_EDIT*,WINDOW*,WIN_RECT*,HANDLE,short,short,short),AC)
#define TE_openFixed _rom_call(short,(TEXT_EDIT*,WINDOW*,WIN_RECT*,char*,short,short),AD)
#define TE_pasteText  _rom_call(void,(TEXT_EDIT*,const char*,long),AE)
#define TE_reopen _rom_call(void,(TEXT_EDIT*,short),AF)
#define TE_reopenPlain _rom_call(void,(TEXT_EDIT*,short),B0)
#define TE_select _rom_call(void,(TEXT_EDIT*,short,short),B1)
#define TE_shrinkWrap _rom_call(HANDLE,(TEXT_EDIT*),B2)
#define TE_unfocus _rom_call(short,(TEXT_EDIT*),B3)
#define TE_updateCommand _rom_call(void,(TEXT_EDIT*,char),B4)

/* Timath */
#define FIVE (5.)
#define FOUR (4.)
#define HALF (0.5)
#define HALF_PI (1.570796326794897)
#define MINUS_ONE (-1.)
#define NAN (0./0.)
#define NEGATIVE_INF (1/NEGATIVE_ZERO)
#define NEGATIVE_ZERO (-POSITIVE_ZERO)
#define ONE (1.)
#define PI (3.141592653589793)
#define POSITIVE_INF (1/POSITIVE_ZERO)
#define POSITIVE_ZERO (1.e-8192*1.e-8192)
#define TEN (10.)
#define THREE (3.)
#define TWO (2.)
#define UNSIGNED_INF (1/UNSIGNED_ZERO)
#define UNSIGNED_ZERO (0.)
#define ZERO (0.)
#define acos(x) _tios_float_1(F5,x,float)
#define acosh(x) _tios_float_1(288,x,float)
#define asin(x) _tios_float_1(F6,x,float)
#define asinh(x) _tios_float_1(287,x,float)
#define atan2(x,y) _tios_float_2(F8,x,y,float,float)
#define atan(x) _tios_float_1(F7,x,float)
#define atanh(x) _tios_float_1(289,x,float)
#define bcd_to_float(a) ({bcd __a=(a);*(float*)&__a;})
#define bcd_var(a) (*(bcd*)&(a))
#define bcdadd(x,y) ({bcd __x=(x),__y=(y);float __z=fadd(*(float*)&__x,*(float*)&__y);*(bcd*)&__z;})
#define bcdbcd(x) ({float __x=flt(x);*(bcd*)&__x;})
#define bcdcmp(x,y) ({bcd __x=(x),__y=(y);fcmp(*(float*)&__x,*(float*)&__y);})
#define bcddiv(x,y) ({bcd __x=(x),__y=(y);float __z=fdiv(*(float*)&__x,*(float*)&__y);*(bcd*)&__z;})
#define bcdlong(x) ({bcd __x=(x);trunc(*(float*)&__x);})
#define bcdmul(x,y) ({bcd __x=(x),__y=(y);float __z=fmul(*(float*)&__x,*(float*)&__y);*(bcd*)&__z;})
#define bcdneg(x) ({bcd __x=(x);float __y=fneg(*(float*)&__x);*(bcd*)&__y;})
#define bcdsub(x,y) ({bcd __x=(x),__y=(y);float __z=fsub(*(float*)&__x,*(float*)&__y);*(bcd*)&__z;})
#define cacos _rom_call(void,(float,float,float*,float*),13A)
#define cacosh _rom_call(void,(float,float,float*,float*),13D)
#define casin _rom_call(void,(float,float,float*,float*),13B)
#define casinh _rom_call(void,(float,float,float*,float*),13E)
#define catan _rom_call(void,(float,float,float*,float*),13C)
#define catanh _rom_call(void,(float,float,float*,float*),13F)
#define ccos _rom_call(void,(float,float,float*,float*),140)
#define ccosh _rom_call(void,(float,float,float*,float*),143)
#define ceil(x) _tios_float_1(105,x,float)
#define cexp _rom_call(void,(float,float,float*,float*),149)
#define cln _rom_call(void,(float,float,float*,float*),147)
#define clog10 _rom_call(void,(float,float,float*,float*),148)
#define cos(x) _tios_float_1(F9,x,float)
#define cosh(x) _tios_float_1(FC,x,float)
#define csin _rom_call(void,(float,float,float*,float*),141)
#define csinh _rom_call(void,(float,float,float*,float*),144)
#define csqrt _rom_call(void,(float,float,float*,float*),146)
#define ctan _rom_call(void,(float,float,float*,float*),142)
#define ctanh _rom_call(void,(float,float,float*,float*),145)
#define exp(x) _tios_float_1(FF,x,float)
#define fabs(x) _tios_float_1(106,x,float)
#define fadd(x,y) _tios_float_2(B6,x,y,float,float)
#define fcmp _rom_call(long,(float,float),BB)
#define fdiv(x,y) _tios_float_2(B9,x,y,float,float)
#define FEXP(x,y) (*(float*)&(bcd){0x4000+y,0x##x##LL<<4*(17-sizeof(#x))})
#define FEXP_NEG(x,y) (*(float*)&(bcd){0xC000+y,0x##x##LL<<4*(17-sizeof(#x))})
#define float_to_bcd(a) ({float __a=(a);*(bcd*)&__a;})
#define floor(x) _tios_float_1(107,x,float)
#define flt(x) _tios_float_1(BD,x,long)
#define FLT(x,y...) ((sizeof(#y)==1)?x##.0:x##.##y)
#define FLT_NEG(x,y...) ((sizeof(#y)==1)?-x##.0:-x##.##y)
#define fmod(x,y) _tios_float_2(108,x,y,float,float)
#define fmul(x,y) _tios_float_2(B8,x,y,float,float)
#define fneg(x) _tios_float_1(BA,x,float)
#define fpisanint _rom_call(short,(unsigned long long*,short),172)
#define fpisodd _rom_call(short,(const unsigned long long*,short),173)
#define fsub(x,y) _tios_float_2(B7,x,y,float,float)
#define init_float() ((void)0)
#define itrig _rom_call(void,(short,short,float*,float*),28A)
#define ldexp10(x,e) ({float __f=(x);((bcd*)&__f)->exponent+=(e);__f;})
#define log(x) _tios_float_1(100,x,float)
#define log10(x) _tios_float_1(101,x,float)
#define modf(x,y) _tios_float_2(102,x,y,float,float*)
#define pow(x,y) _tios_float_2(103,x,y,float,float)
#define round12(x) _tios_float_1(174,x,float)
#define round12_err(x,y) _tios_float_2(227,x,y,float,short)
#define round14(x) _tios_float_1(175,x,float)
#define sin(x) _tios_float_1(FA,x,float)
#define sincos _rom_call(void,(float,short,float*,float*),286)
#define sinh(x) _tios_float_1(FD,x,float)
#define sqrt(x) _tios_float_1(104,x,float)
#define tan(x) _tios_float_1(FB,x,float)
#define tanh(x) _tios_float_1(FE,x,float)
#define trig _rom_call(void,(short,short,const float*,float*,float*,float*),28B)
#define trunc _rom_call(long,(float),BC)
#define float_class _rom_call(short,(float),2FA)
#define frexp10(x,y) _tios_float_2(2FB,x,y,float,__pshort)
#define is_float_infinity _rom_call(short,(float),2FF)
#define is_float_negative_zero _rom_call(short,(float),300)
#define is_float_positive_zero _rom_call(short,(float),301)
#define is_float_signed_infinity _rom_call(short,(float),302)
#define is_float_transfinite _rom_call(short,(float),303)
#define is_float_unsigned_inf_or_nan _rom_call(short,(float),304)
#define is_float_unsigned_zero _rom_call(short,(float),305)
#define is_inf _rom_call(short,(float),2FF)
#define is_nan _rom_call(short,(float),306)
#define is_nzero _rom_call(short,(float),300)
#define is_pzero _rom_call(short,(float),301)
#define is_sinf _rom_call(short,(float),302)
#define is_transfinite _rom_call(short,(float),303)
#define is_uinf_or_nan _rom_call(short,(float),304)
#define is_uzero _rom_call(short,(float),305)

/* Windows */
#define DeskTop ((WINDOW*const)(((long*)(_rom_call_addr(0)))+1))
#define FirstWindow (*((WINDOW**)(_rom_call_addr(0))))
#define DrawStaticButton _rom_call(void,(WINDOW*,short,short),35)
#define DrawWinBorder _rom_call(void,(WINDOW*,SCR_RECT*),27)
#define MakeWinRect _rom_call(WIN_RECT*,(short,short,short,short),2C)
#define RectWinToScr _rom_call(SCR_RECT*,(const SCR_RECT*,const WIN_RECT*,SCR_RECT*),2A)
#define RectWinToWin _rom_call(WIN_RECT*,(const SCR_RECT*,WIN_RECT*),29)
#define WinActivate _rom_call(void,(WINDOW*),1)
#define WinAttr _rom_call(short,(WINDOW*,short),2)
#define WinBackground _rom_call(void,(WINDOW*,short),4)
#define WinBackupToScr _rom_call(void,(WINDOW*),3)
#define WinBegin _rom_call(void,(WINDOW*),5)
#define WinBitmapGet _rom_call(short,(WINDOW*,const WIN_RECT*,void*),6)
#define WinBitmapPut _rom_call(void,(WINDOW*,short,short,void*,short),7)
#define WinBitmapSize _rom_call(unsigned short,(WINDOW*,const WIN_RECT*),8)
#define WinChar _rom_call(void,(WINDOW*,char),A)
#define WinCharXY _rom_call(void,(WINDOW*,short,short,char,short),9)
#define WinClose _rom_call(void,(WINDOW*),B)
#define WinClr _rom_call(void,(WINDOW*),C)
#define WinDeactivate _rom_call(void,(WINDOW*),D)
#define WinDupStat _rom_call(short,(WINDOW*,short),E)
#define WinEllipse _rom_call(void,(WINDOW*,short,short,short,short),F)
#define WinEnd(w) ((void)0)
#define WinFill _rom_call(void,(WINDOW*,const WIN_RECT*,short),10)
#define WinFillLines2 _rom_call(void,(WINDOW*,const WIN_RECT*,const WIN_RECT*,short),11)
#define WinFillTriangle _rom_call(void,(WINDOW*,short,short,short,short,short,short,short),12)
#define WinFont _rom_call(void,(WINDOW*,short),13)
#define WinGetCursor _rom_call(void,(WINDOW*,__pshort,__pshort),14)
#define WinHeight _rom_call(short,(WINDOW*),292)
#define WinHide _rom_call(void,(WINDOW*),15)
#define WinHome _rom_call(void,(WINDOW*),16)
#define WinLine _rom_call(void,(WINDOW*,const WIN_RECT*),17)
#define WinLineNC _rom_call(void,(WINDOW*,const WIN_RECT*),18)
#define WinLineRel _rom_call(void,(WINDOW*,short,short),1A)
#define WinLineTo _rom_call(void,(WINDOW*,short,short),19)
#define WinMoveCursor _rom_call(void,(WINDOW*,short,short),1B)
#define WinMoveRel _rom_call(void,(WINDOW*,short,short),1D)
#define WinMoveTo _rom_call(void,(WINDOW*,short,short),1C)
#define WinOpen _rom_call(short,(WINDOW*,const WIN_RECT*,short,...),1E)
#define WinPixGet _rom_call(short,(WINDOW*,short,short),1F)
#define WinPixSet _rom_call(void,(WINDOW*,short,short),20)
#define WinRect _rom_call(void,(WINDOW*,const WIN_RECT*,short),21)
#define WinReOpen _rom_call(short,(WINDOW*,const WIN_RECT*,short,...),22)
#define WinScrollH _rom_call(void,(WINDOW*,const WIN_RECT*,short),23)
#define WinScrollV _rom_call(void,(WINDOW*,const WIN_RECT*,short),24)
#define WinSetCursor(w,x,y) (void)((w)->CursorX=x,(w)->CursorY=y)
#define WinShow(w) (void)((w)->Flags|=WF_VISIBLE)
#define WinStr _rom_call(void,(WINDOW*,const char*),25)
#define WinStrXY _rom_call(void,(WINDOW*,short,short,const char*),26)
#define WinWidth _rom_call(short,(WINDOW*),291)
#define SetWinClip _rom_call(void,(WINDOW*,SCR_RECT*),42E)

/* Define graphlib functions */
asm("graphlib__version02: .xdef graphlib__version02");

#define graphlib_fill graphlib__0000
void	graphlib_fill(unsigned short x asm("d0"), unsigned short y asm("d1"), unsigned short width asm("d2"), unsigned short height asm("d3"), unsigned short color asm("d4"));

#define graphlib_put_sprite graphlib__0001
void	graphlib_put_sprite(unsigned short x asm("d0"), unsigned short y asm("d1"), void *sprite asm("a0"));

#define graphlib_put_sprite2 graphlib__000C
void	graphlib_put_sprite2(unsigned short x asm("d0"), unsigned short y asm("d1"), void *sprite asm("a0"), unsigned char *mask asm("a2"));

#define graphlib_put_sprite_mask graphlib__000B
void	graphlib_put_sprite_mask(unsigned short x asm("d0"), unsigned short y asm("d1"), unsigned char mask asm("d3"), void *sprite asm("a0"));

#define graphlib_smallbox graphlib__0002
void	graphlib_smallbox(char *title asm("a0"));

#define graphlib_box graphlib__0003
void	graphlib_box(unsigned short x asm("d0"), unsigned short y asm("d1"), unsigned short width asm("d2"), unsigned short height asm("d3"), char *title asm("a0"));

#define graphlib_frame graphlib__0004
void	graphlib_frame(unsigned short x asm("d0"), unsigned short y asm("d1"), unsigned short width asm("d4"), unsigned short height asm("d5"));

#define graphlib_clrscr graphlib__0005
void	graphlib__clrscr();

#define graphlib_clrscr2 graphlib__0014
void	graphlib__clrscr2();

#define graphlib_vert graphlib__0006
void	graphlib_vert(unsigned short x asm("d0"), unsigned short y1 asm("d1"), unsigned short y2 asm("d2"));

#define graphlib_horiz graphlib__0007
void	graphlib_horiz(unsigned short x1 asm("d0"), unsigned short y asm("d1"), unsigned short x2 asm("d2"), unsigned short color asm("d3"));

#define graphlib_bigbox graphlib__0008
void	graphlib_bigbox(char *title asm("a0"));

#define _graphlib_scrtomem graphlib__0009
void	_graphlib_scrtomem(unsigned short x asm("d0"), unsigned short y asm("d1"), unsigned short width asm("d2"), unsigned short height asm("d3"));
#define graphlib_scrtomem(_x, _y, _height, _width) ({register unsigned short __d4 asm("d4"); _graphlib_scrtomem(_x, _y, _height, _width); __d4;})

#define graphlib_memtoscr graphlib__000A
void	graphlib_memtoscr(unsigned short x asm("d0"), unsigned short y asm("d1"), unsigned short width asm("d2"), unsigned short height asm("d3"), HANDLE hd asm("d4"));

#define graphlib_line graphlib__0017
void	graphlib_line(unsigned short x1 asm("d0"), unsigned short y1 asm("d1"), unsigned short x2 asm("d2"), unsigned short y2 asm("d3"), void *screen asm("a0"));

#define graphlib_choosescreen graphlib__000D
extern unsigned short graphlib_choosescreen;

typedef struct {
	unsigned short x1;
	unsigned short y1;
	unsigned short x2;
	unsigned short y2;
	unsigned short x;
	unsigned short y;
	char	*str;
	} dialog_struct;
#define graphlib_show_dialog graphlib__0015
void	graphlib_show_dialog(dialog_struct *d asm("a6"));

#define graphlib_clear_dialog graphlib__0016
void	graphlib_clear_dialog();

#define graphlib_erase_rect graphlib__0018
void	graphlib_erase_rect(void *r);

#define graphlib_frame_rect graphlib__0019
void	graphlib_frame_rect(void *r);

#define graphlib_gray2 graphlib__000E
void	graphlib_gray2();

#define graphlib_gray4 graphlib__000F
void	graphlib_gray4();

#define graphlib_gray7 graphlib__0010
void	graphlib_gray7();

#define graphlib_plane0 graphlib__0011
#define graphlib_plane1 graphlib__0012
#define graphlib_plane2 graphlib__0013
extern unsigned char *graphlib_plane0;
extern unsigned char *graphlib_plane1;
extern unsigned char *graphlib_plane2;

/* Define userlib functions */
asm("userlib__version02: .xdef userlib__version02");

#define	userlib_idle_loop userlib__0000
short	userlib_idle_loop();
#define userlib_random	userlib__0001
short	userlib_random(short limit asm("d0"));
#define userlib_randseed userlib__0002
extern	short	userlib__randseed;
#define userlib_exec userlib__0003
__attribute__((__stkparm__)) short	userlib_exec(HANDLE handle);
#define userlib_inputstr userlib__0006
char	*userlib_inputstr(short x asm("d1"), short y asm("d2"), short maxlen asm("d3"));
#define	userlib_smallmenu userlib__000C
short	userlib_samllmenu(short x asm("d0"), short y asm("d1"), char nbitem asm("d2"), char *str_list asm("a0"));
#define userlib_runprog userlib__0010
short	userlib_runprog(char *progname asm("a0"));

// Hexlib
asm("hexlib__version01: .xdef hexlib__version01");

#define	hexlib_put_char	hexlib__0000
void	hexlib_put_char(long x asm("d2"), long y asm("d1"), long character asm("d0"));
#define hexlib_put_bin	hexlib__0001
void	hexlib_put_bin(long x asm("d2"), long y asm("d1"), long number asm("d0"), long digits asm("d4"));
#define	hexlib_put_hex	hexlib__0002
void	hexlib_put_hex(long x asm("d2"), long y asm("d1"), long number asm("d0"), long digits asm("d4"));

// Shrnklib
asm("shrnklib__version03: .xdef shrnklib__version03");

#define	shrnklib_OpenArchive	shrnklib__0000
HANDLE	shrnklib_OpenArchive(void *archive asm("a0"));
#define	shrnklib_CloseArchive	shrnklib__0001
void	shrnklib_CloseArchive(HANDLE arch_hd asm("d0"));
#define	shrnklib_Extract	shrnklib__0002
void	*shrnklib_Extract(HANDLE arch_hd asm("d0"), short index asm("d1"), void *dest asm("a0"));
#define	shrnklib_Free(ptr) HeapFree(HeapPtrToHandle(ptr))

//Ziplib
asm("ziplib__version01: .xdef ziplib__version01");

#define	ziplib_check_cmem	ziplib__0000
short	ziplib_check_cmem(void *data asm("a0"), unsigned short len asm("d0"));
#define	ziplib_check_emem	ziplib__0001
short	ziplib_check_emem(void *archive asm("a0"));
#define	ziplib_eval_cmem	ziplib__0002
short	ziplib_eval_cmem(void *data asm("a0"), unsigned short len asm("d0"));
#define	ziplib_eval_emem	ziplib__0003
short	ziplib_eval_emem(void *archive asm("a0"));
#define	ziplib_compress	ziplib__0004
short	ziplib_compress(void *data asm("a0"), unsigned short len asm("d0"), void *dest asm("a1"));
#define	ziplib_extract	ziplib__0005
short	ziplib_extract(void *archive asm("a0"), void *dest asm("a1"));
#define	ziplib_zipfile	ziplib__0006
char	ziplib_zipfile(SYM_ENTRY *sym asm("a0"), char comment asm("d0"));
#define	ziplib_iscomp	ziplib__000B
short	ziplib_iscomp(SYM_ENTRY *sym asm("a0"));
#define	_ziplib_tempfile	ziplib__0007
long long _ziplib_tempfile(SYM_ENTRY *sym asm("a0"), char comment asm("d1"));
#define	ziplib_tempfile(sym, comment) ({long long result__ = _ziplib_tempfile(sym, comment); (char)(result__>>32)?-(short)(char)(result__>>32):(short)result__;})
#define ziplib_extract_string	ziplib__0008
void	ziplib_extract_string(void *archive asm("a0"), short arch_index asm("d3"), short str_index asm("d4"), void *dest asm("a1"));
#define ziplib_write_string	ziplib__0009
void	ziplib_write_string(void *archive asm("a0"), short x asm("d0"), short y asm("d1"), short arch_index asm("d3"), short str_index asm("d4"));
#define ziplib_write_string_inv	ziplib__000A
void	ziplib_write_string_inv(void *archive asm("a0"), short x asm("d0"), short y asm("d1"), short arch_index asm("d3"), short str_index asm("d4"));

#endif


