#ifndef os_H
#define os_H

/*OSLib---efficient, type-safe, transparent, extensible,\n"
   register-safe A P I coverage of RISC O S*/
/*Copyright  1994 Jonathan Coxhead*/

/*
      OSLib is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 1, or (at your option)
   any later version.

      OSLib is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

      You should have received a copy of the GNU General Public License
   along with this programme; if not, write to the Free Software
   Foundation, Inc, 675 Mass Ave, Cambridge, MA 02139, U S A.
*/

#include <kernel.h>
#include <swis.h>

#ifndef types_H
   #include "oslib/types.h"
#endif

#define osbyte_IN_KEY ((byte) 129)

/*For OS_Byte 253*/
#define os_SOFT_RESET     0
#define os_POWER_ON_RESET 1
#define os_HARD_RESET     2

/*For OS_SubstituteArgs*/
#define os_NOAPPEND (1U << 31)

/*For OS_GS{Init,Read,Trans}*/
#define os_GS_TERMINATE_ON_SPACE  (1U << 29)
#define os_GS_RETAIN_STICK        (1U << 30)
#define os_GS_RETAIN_DOUBLE_QUOTE (1U << 31)

/*For OS_{Read,Set}VarVal.*/
#define os_VARTYPE_STRING   0
#define os_VARTYPE_NUMBER   1
#define os_VARTYPE_MACRO    2
#define os_VARTYPE_EXPANDED 3
#define os_VARTYPE_CODE     16

typedef _kernel_oserror os_error;
#define os_ERROR_LIMIT 252

#define os_VDU_NULL                             ((char) '\x00')
#define os_VDU_CHAR_TO_PRINTER                  ((char) '\x01')
#define os_VDU_PRINTER_ON                       ((char) '\x02')
#define os_VDU_PRINTER_OFF                      ((char) '\x03')
#define os_VDU_GRAPH_TEXT_OFF                   ((char) '\x04')
#define os_VDU_GRAPH_TEXT_ON                    ((char) '\x05')
#define os_VDU_SCREEN_ON                        ((char) '\x06')
#define os_VDU_BELL                             ((char) '\x07')
#define os_VDU_BACKSPACE                        ((char) '\x08')
#define os_VDU_TAB                              ((char) '\x09')
#define os_VDU_LINEFEED                         ((char) '\x0A')
#define os_VDU_VERTICAL_TAB                     ((char) '\x0B')
#define os_VDU_CLS                              ((char) '\x0C')
#define os_VDU_RETURN                           ((char) '\x0D')
#define os_VDU_PAGE_MODE_ON                     ((char) '\x0E')
#define os_VDU_PAGE_MODE_OFF                    ((char) '\x0F')
#define os_VDU_CLG                              ((char) '\x10')
#define os_VDU_SET_TEXT_COLOUR                  ((char) '\x11')
#define os_VDU_SET_GCOL                         ((char) '\x12')
#define os_VDU_SET_PALETTE                      ((char) '\x13')
#define os_VDU_RESET_COLOURS                    ((char) '\x14')
#define os_VDU_SCREEN_OFF                       ((char) '\x15')
#define os_VDU_MODE                             ((char) '\x16')
#define os_VDU_MISC                             ((char) '\x17')
#define os_VDU_SET_GRAPHICS_WINDOW              ((char) '\x18')
#define os_VDU_PLOT                             ((char) '\x19')
#define os_VDU_RESET_WINDOWS                    ((char) '\x1A')
#define os_VDU_ESCAPE                           ((char) '\x1B')
#define os_VDU_SET_TEXT_WINDOW                  ((char) '\x1C')
#define os_VDU_SET_GRAPHICS_ORIGIN              ((char) '\x1D')
#define os_VDU_HOME_TEXT_CURSOR                 ((char) '\x1E')
#define os_VDU_SET_TEXT_CURSOR                  ((char) '\x1F')
#define os_VDU_DELETE                           ((char) '\x7F')
#define os_MISC_INTERLACE                       ((char) '\x00')
#define os_MISC_CURSOR                          ((char) '\x01')
#define os_MISC_SET_ECF1                        ((char) '\x02')
#define os_MISC_SET_ECF2                        ((char) '\x03')
#define os_MISC_SET_ECF3                        ((char) '\x04')
#define os_MISC_SET_ECF4                        ((char) '\x05')
#define os_MISC_SET_DOT_STYLE                   ((char) '\x06')
#define os_MISC_SCROLL                          ((char) '\x07')
#define os_MISC_CLEAR_REGION                    ((char) '\x08')
#define os_MISC_SET_ON                          ((char) '\x09')
#define os_MISC_SET_OFF                         ((char) '\x0A')
#define os_MISC_SET_BBCECF                      ((char) '\x0B')
#define os_MISC_SET_UNPACKED_ECF1               ((char) '\x0C')
#define os_MISC_SET_UNPACKED_ECF2               ((char) '\x0D')
#define os_MISC_SET_UNPACKED_ECF3               ((char) '\x0E')
#define os_MISC_SET_UNPACKED_ECF4               ((char) '\x0F')
#define os_MISC_SET_CURSOR_MOVEMENT             ((char) '\x10')
#define os_MISC_MISC                            ((char) '\x11')
#define os_MISC_SET_TEXT_FG_TINT                ((char) '\x00')
#define os_MISC_SET_TEXT_BG_TINT                ((char) '\x01')
#define os_MISC_SET_GRAPHICS_FG_TINT            ((char) '\x02')
#define os_MISC_SET_GRAPHICS_BG_TINT            ((char) '\x03')
#define os_MISC_SET_ECF_INTERPRETATION          ((char) '\x04')
#define os_MISC_INVERT_TEXT                     ((char) '\x05')
#define os_MISC_SET_ECF_ORIGIN                  ((char) '\x06')
#define os_MISC_SET_CHAR_SIZE                   ((char) '\x07')

typedef int os_t;
typedef struct {char c [5];} os_clock;
typedef struct {int x, y;} os_coord;
typedef struct {int x0, y0, x1, y1;} os_box;
typedef struct {int m [3] [2];} os_trfm_mat;
typedef struct {os_coord p [4];} os_pgm;

typedef byte os_f;

typedef int os_var_type;

typedef byte os_date_and_time [5];
      /*System date and time*/

#define os_GLOBAL_NO_ANY 9
#define os_GLOBAL_NO_MEM 49

#ifdef EXECUTE_ON_UNIX

extern os_error *xos_pretty_print(char *, void *, void *);

#else /* EXECUTE_ON_UNIX */

#define xos_writec(c) \
   _swix (OS_WriteC, _IN (0), (int) (c))

#define xos_write0(s) \
   _swix (OS_Write0, _IN (0), (char *) (s))

#define xos_new_line() \
   _swix (OS_NewLine, 0)

#define xos_readc(c, flags) \
   _swix (OS_ReadC, _OUT (0) | _OUT (_FLAGS), \
         (int *) (c), (int *) (flags))

#define xos_cli(s) \
   _swix (OS_CLI, _IN (0), (char *) (s))

#define xos_byte(reason_code, r1, r2, r1_out, r2_out) \
   _swix (OS_Byte, _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (reason_code), (int) (r1), (int) (r2), \
         (int *) (r1_out), (int *) (r2_out))

#define xos_word(reason_code, block) \
   _swix (OS_Word, _IN (0) | _IN (1), (int) (reason_code), (int *) (block))

/*OS_File: see "os/file.h"*/

/*OS_Args: see "os/args.h"*/

/*OS_GBPB: see "os/gbpb.h"*/

/*OS_Find: see "os/find.h"*/

#define xos_read_line() \
   _swix (OS_ReadLine, )

#define xos_control() \
   _swix (OS_Control, )

#define xos_get_env(tail, ram_limit, start_time) \
   _swix (OS_GetEnv, _OUT (0) | _OUT (1) | _OUT (2), \
         (char **) (tail), (int *) (ram_limit), (os_clock **) (start_time))

#define xos_exit(error, rc) \
   _swix (OS_Exit, _IN (0) | _IN (1) | _IN (2), \
         (os_error *) (error), *(int *) "ABEX", (int) (rc))

#define xos_set_env() \
   _swix (OS_SetEnv, )

#define xos_int_on() \
   _swix (OS_IntOn, 0)

#define xos_int_off() \
   _swix (OS_IntOff, 0)

#define xos_call_back() \
   _swix (OS_CallBack, )

#define xos_enter_os() \
   _swix (OS_EnterOS, 0)

#define xos_break_pt() \
   _swix (OS_BreakPt, )

#define xos_break_ctrl() \
   _swix (OS_BreakCtrl, )

#define xos_unused_swi() \
   _swix (OS_UnusedSWI, )

#define xos_update_memc() \
   _swix (OS_UpdateMEMC, )

#define xos_set_call_back() \
   _swix (OS_setCallBack, )

#define xos_mouse() \
   _swix (OS_Mouse, )

#define xos_heap() \
   _swix (OS_Heap, )

/*OS_Module: see "os/module.h"*/

#define xos_claim() \
   _swix (OS_Claim, )

#define xos_release() \
   _swix (OS_Release, )

#define xos_read_unsigned() \
   _swix (OS_ReadUnsigned, )

#define xos_generate_event() \
   _swix (OS_GenerateEvent, )

#define xos_read_var_val(var, value, len, context, var_type, len_out, \
      context_out, var_type_out) \
   _swix (OS_ReadVarVal, _IN (0) | _IN (1) | _IN (2) | _IN (3) | _IN (4) | \
         _OUT (2) | _OUT (3) | _OUT (4), \
         (char *) (var), (char *) (value), (int) (len), \
         (int) (context), (int) (var_type), (int *) (len_out), \
         (int *) (context_out), (int *) (var_type_out))
   /*see also "os/vartype.h"*/

#define xos_set_var_val() \
   _swix (OS_SetVarVal, )

   /*see also "os/vartype.h"*/

#define xos_gs_init(gs, flags, context1, context2) \
   _swix (OS_GSInit, _IN (0) | _IN (2) | _OUT (0) | _OUT (2), \
         (char *) (gs), (int) (flags), (int *) (context1), (int *) (context2))

#define xos_gs_read(context1, context2, c, flags) \
   _swix (OS_GSRead, \
         _IN (0) | _IN (2) | _OUT (0) | _OUT (1) | _OUT (2) | _OUT (_FLAGS), \
         *(int *) (context1), *(int *) (context2), \
         (int *) (context1), (char *) (c), (int *) (context2), (int *) (flags))

#define xos_gs_trans(gs, buffer, size, end, count, flags) \
   _swix (OS_GSTrans, \
         _IN (0) | _IN (1) | _IN (2) | _OUT (0) | _OUT (2) | _OUT (_FLAGS), \
         (char *) (gs), (char *) (buffer), (int) (size), (char *) (end), \
         (int *) (count), (int *) (flags))

#define xos_binary_to_decimal(i, buffer, size, count) \
   _swix (OS_BinaryToDecimal, _IN (0) | _IN (1) | _IN (2) | _OUT (2), \
         (int) (i), (char *) (buffer), (int) (size), (int *) (count))

/*OS_FSControl: see "os/fscontrol.h" */

#define xos_change_dynamic_area() \
   _swix (OS_change_dynamic_area, )

#define os_generate_error(error) \
   _swi (OS_GenerateError, _IN (0), (os_error *) (error))

#define xos_read_escape_state() \
   _swix (OS_read_escape_state, )

#define xos_evaluate_expression() \
   _swix (OS_evaluate_expression, )

/*OS_SpriteOp: see "os/spriteop.h"*/

#define xos_read_palette() \
   _swix (OS_read_palette, )

/*OS_ServiceCall: see "os/service.h"*/

#define xos_read_vdu_variables() \
   _swix (OS_read_vdu_variables, )

#define xos_read_point() \
   _swix (OS_read_point, )

#define xos_up_call() \
   _swix (OS_UpCall, )

#define xos_call_a_vector() \
   _swix (OS_call_a_vector, )

#define xos_read_mode_variable(mode, var_no, var_val, flags) \
   _swix (OS_ReadModeVariable, _IN (0) | _IN (1) | _OUT (2) | _OUT (_FLAGS), \
         (int) (mode), (int) (var_no), (int *) (var_val), (int *) (flags))
   /*See modevar.h for variable numbers*/

#define xos_remove_cursors() \
   _swix (OS_remove_cursors, )

#define xos_restore_cursors() \
   _swix (OS_restore_cursors, )

#define xos_swi_number_to_string(no, buffer, len, len_out) \
   _swix (OS_SWINumberToString, _IN (0) | _IN (1) | _IN (2) | _OUT (2), \
         (int) (no), (char *) (buffer), (int) (len), (int *) (len_out))

#define xos_swi_number_from_string(name, no) \
   _swix (OS_SWINumberFromString, _IN (1) | _OUT (0), \
         (char *) (name), (int *) (no))

#define xos_validate_address() \
   _swix (OS_validate_address, )

#define xos_call_after() \
   _swix (OS_call_after, )

#define xos_call_every() \
   _swix (OS_call_every, )

#define xos_remove_ticker_event() \
   _swix (OS_remove_ticker_event, )

#define xos_install_key_handler() \
   _swix (OS_install_key_handler, )

#define xos_check_mode_valid() \
   _swix (OS_check_mode_valid, )

#define xos_change_environment() \
   _swix (OS_change_environment, )

#define xos_claim_screen_memory() \
   _swix (OS_claim_screen_memory, )

#define xos_read_monotonic_time(time) \
   _swix (OS_ReadMonotonicTime, _OUT (0), (os_t *) (time))

#define xos_substitute_args(args, buffer, size, template, template_size, \
      size_out) \
   _swix (OS_SubstituteArgs, \
         _IN (0) | _IN (1) | _IN (2) | _IN (3) | _IN (4) | _OUT (2), \
         (char *) (args), (char *) (buffer), (int) (size), (char *) (template), \
         (int) (template_len), (int *) (size_out))

#define xos_pretty_print(s, dict, special) \
   _swix (OS_PrettyPrint, _IN (0) | _IN (1) | _IN (2), \
         (char *) (s), (void *) (dict), (char *) (special))

#define xos_plot() \
   _swix (OS_plot, )

#define xos_writen(s, n) \
   _swix (OS_WriteN, _IN (0) | _IN (1), (char *) (s), (int) (n))

#define xos_add_to_vector() \
   _swix (OS_add_to_vector, )

#define xos_write_env() \
   _swix (OS_write_env, )

#define xos_read_args(keywords, input, output, size, size_left) \
   _swix (OS_ReadArgs, _IN (0) | _IN (1) | _IN (2) | _IN (3) | _OUT (3), \
         (char *) (keywords), (char *) (input), (char *) (output), \
         (int) (size), (int *) (size_left))

#define xos_read_ramfs_limits() \
   _swix (OS_read_ramfs_limits, )

#define xos_claim_device_vector() \
   _swix (OS_claim_device_vector, )

#define xos_release_device_vector() \
   _swix (OS_release_device_vector, )

#define xos_delink_application() \
   _swix (OS_delink_application, )

#define xos_relink_application() \
   _swix (OS_relink_application, )

#define xos_heap_sort() \
   _swix (OS_heap_sort, )

#define xos_exit_and_die(error, rc, module_name) \
   _swix (OS_ExitAndDie, _IN (0) | _IN (1) | _IN (2) | _IN (3), \
         (os_error *) (error), *(int *) "ABEX", (int) (rc), \
         (char *) (module_naem))

#define xos_read_mem_map_info(page_size, no_pages) \
   _swix (OS_ReadMemMapInfo, _OUT (0) | _OUT (1), \
         (int *) (page_size), (int *) (no_pages))

#define xos_read_mem_map_entries() \
   _swix (OS_read_mem_map_entries, )

#define xos_set_mem_map_entries() \
   _swix (OS_set_mem_map_entries, )

#define xos_add_call_back() \
   _swix (OS_add_call_back, )

#define xos_read_default_handler() \
   _swix (OS_read_default_handler, )

#define xos_set_ecf_origin() \
   _swix (OS_set_ecf_origin, )

#define xos_serial_op() \
   _swix (OS_serial_op, )

#define xos_read_sys_info() \
   _swix (OS_ReadSysInfo, )

#define xos_confirm() \
   _swix (OS_confirm, )

#define xos_changed_box() \
   _swix (OS_changed_box, )

#define xos_crc() \
   _swix (OS_crc, )

#define xos_read_dynamic_area() \
   _swix (OS_read_dynamic_area, )

#define xos_print_char() \
   _swix (OS_print_char, )

#define xos_change_redirection() \
   _swix (OS_change_redirection, )

#define xos_remove_call_back() \
   _swix (OS_remove_call_back, )

#define xos_find_mem_map_entries() \
   _swix (OS_find_mem_map_entries, )

#define xos_convert_standard_date_and_time() \
   _swix (OS_ConvertStandardDateAndTime, )

#define xos_convert_date_and_time() \
   _swix (OS_ConvertDateAndTime, )

#define xos_convert_hex1(value, buffer, size, end, free) \
   _swix (OS_ConvertHex1, _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_hex2(value, buffer, size, end, free) \
   _swix (OS_ConvertHex2, _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_hex4(value, buffer, size, end, free) \
   _swix (OS_ConvertHex4, _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_hex6(value, buffer, size, end, free) \
   _swix (OS_ConvertHex6, _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_hex8(value, buffer, size, end, free) \
   _swix (OS_ConvertHex8, _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_cardinal1(value, buffer, size, end, free) \
   _swix (OS_ConvertCardinal1, \
         _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_cardinal2(value, buffer, size, end, free) \
   _swix (OS_ConvertCardinal2, \
         _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_cardinal3(value, buffer, size, end, free) \
   _swix (OS_ConvertCardinal3, \
         _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_cardinal4(value, buffer, size, end, free) \
   _swix (OS_ConvertCardinal4, \
         _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_integer1(value, buffer, size, end, free) \
   _swix (OS_ConvertInteger1, \
         _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_integer2(value, buffer, size, end, free) \
   _swix (OS_ConvertInteger2, \
         _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_integer3(value, buffer, size, end, free) \
   _swix (OS_ConvertInteger3, \
         _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_integer4(value, buffer, size, end, free) \
   _swix (OS_ConvertInteger4, \
         _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_binary1(value, buffer, size, end, free) \
   _swix (OS_ConvertBinary1, _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_binary2(value, buffer, size, end, free) \
   _swix (OS_ConvertBinary2, _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_binary3(value, buffer, size, end, free) \
   _swix (OS_ConvertBinary3, _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_binary4(value, buffer, size, end, free) \
   _swix (OS_ConvertBinary4, _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_spaced_cardinal1(value, buffer, size, end, free) \
   _swix (OS_ConvertSpacedCardinal1, \
         _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_spaced_cardinal2(value, buffer, size, end, free) \
   _swix (OS_ConvertSpacedCardinal2, \
         _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_spaced_cardinal3(value, buffer, size, end, free) \
   _swix (OS_ConvertSpacedCardinal3, \
         _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_spaced_cardinal4(value, buffer, size, end, free) \
   _swix (OS_ConvertSpacedCardinal4, \
         _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_spaced_integer1(value, buffer, size, end, free) \
   _swix (OS_ConvertSpacedInteger1, \
         _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_spaced_integer2(value, buffer, size, end, free) \
   _swix (OS_ConvertSpacedInteger2, \
         _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_spaced_integer3(value, buffer, size, end, free) \
   _swix (OS_ConvertSpacedInteger3, \
         _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_spaced_integer4(value, buffer, size, end, free) \
   _swix (OS_ConvertSpacedInteger4, \
         _IN (0) | _IN (1) | _IN (2) | _OUT (1) | _OUT (2), \
         (int) (value), (char *) (buffer), (int) (size), (char **) (end), \
         (int *) (free))

#define xos_convert_fixed_net_station() \
   _swix (OS_ConvertFixedNetStation, )

#define xos_convert_net_station() \
   _swix (OS_ConvertNetStation, )

#define xos_convert_fixed_file_size() \
   _swix (OS_ConvertFixedFileSize, )

#define xos_convert_file_size() \
   _swix (OS_ConvertFileSize, )

#endif /* EXECUTE_ON_UNIX */

#endif
