diff options
Diffstat (limited to 'support/hypertex/tanmoy/ghostview-1.5-hacked/vms_types.h')
-rw-r--r-- | support/hypertex/tanmoy/ghostview-1.5-hacked/vms_types.h | 351 |
1 files changed, 351 insertions, 0 deletions
diff --git a/support/hypertex/tanmoy/ghostview-1.5-hacked/vms_types.h b/support/hypertex/tanmoy/ghostview-1.5-hacked/vms_types.h new file mode 100644 index 0000000000..c14395da15 --- /dev/null +++ b/support/hypertex/tanmoy/ghostview-1.5-hacked/vms_types.h @@ -0,0 +1,351 @@ +/* DEC/CMS REPLACEMENT HISTORY, Element VMS_TYPES.H */ +/* *4 13-AUG-1992 12:49:50 TP "Added IOSB_GET_T" */ +/* *3 10-AUG-1992 14:20:29 TP "MOVE" */ +/* *2 10-AUG-1992 14:19:45 TP "MOVE" */ +/* *1 10-AUG-1992 14:19:31 TP "VMS data type definitions and macros" */ +/* DEC/CMS REPLACEMENT HISTORY, Element VMS_TYPES.H */ +/* VMS_TYPES.H +**============================================================================= +** Copyright (C) 1989 Jym Dyer (jym@wheaties.ai.mit.edu) +** +** This program 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. +** +** This program 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 program; if not, write to the Free Software +** Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +**----------------------------------------------------------------------------- +** Version: V1.0-001 +**----------------------------------------------------------------------------- +** Facility: None +**----------------------------------------------------------------------------- +** Prefix: None +**----------------------------------------------------------------------------- +** Abstract +** ~~~~~~~~ +** These are typedefs and macro functions for various VMS data types. +**----------------------------------------------------------------------------- +** Contents +** ~~~~~~~~ +** EXIT_BLOCK_T +** IOSB_T +** IOSB_ACP_T +** IOSB_CR_T +** IOSB_DISK_T +** IOSB_DISK_SENSEMODE_T +** IOSB_LPA_T +** IOSB_LP_WRITE_T +** IOSB_LP_SETMODE_T +** IOSB_MBX_READ_T +** IOSB_MBX_WRITE_T +** IOSB_MBX_SETPROTECTION_T +** IOSB_MT_T +** IOSB_TTY_ITEMLIST_READ_T +** IOSB_TTY_READ_T +** IOSB_TTY_SETSENSE_T +** IOSB_TTY_WRITE_T +** ITEM_2_T +** ITEM_3_T +** ITEM_LIST_2_T() +** ITEM_LIST_3_T() +**----------------------------------------------------------------------------- +** Environment +** ~~~~~~~~~~~ +** Should be portable to any compiler running on VMS. +**----------------------------------------------------------------------------- +** Author: Jym Dyer - 15-May-1989 +**----------------------------------------------------------------------------- +** Modifications +** ~~~~~~~~~~~~~ +** 1.0-001 - Original version. {Jym 15-May-1989} +** 1.0-002 - Added IOSB_GET_T {Terry Poot <tp@mccall.com> 8/10/1992} +**============================================================================= +*/ + +#ifndef __VMS_TYPES_H__ +#define __VMS_TYPES_H__ + +/* -=- MACRO FUNCTIONS AND TYPEDEFS -=- */ + +/* --- Exit Handler Block --- */ + +/* The exit handler block is a variable-length structure. What we provide +** here is a header for that structure. For the simplest uses (exit +** handlers that don't take arguments) the typedef alone will suffice: +** +** extern void exit_function(unsigned int * status_p); +** unsigned int exh_status; +** . . . +** EXIT_BLOCK_T exit_block = +** {NULL,exit_function,0,{0,0,0},&exh_status}; +** . . . +** void +** exit_function(status_p) +** unsigned int * status_p; +** { +** . . . +** +** For more complicated uses (when you want to pass several arguments to +** the exit handler) the typedef can be used as a header in a structure: +** +** extern void exit_function( +** unsigned int * status_p,int * yin_p,int * yang_p +** ); +** unsigned int exh_status; +** int that; +** int this; +** . . . +** struct +** { +** EXIT_BLOCK_T header; +** int * this_p; +** int * that_p; +** } = {{NULL,exit_function,0,{0,0,0},&exh_status},&this,&that}; +** . . . +** void +** exit_function(status_p,yin_p,yang_p) +** unsigned int * status_p; +** int * yin_p; +** int * yang_p; +** { +** . . . +*/ + +typedef struct +{ + void * flink_p; + void (*exit_handler_p)(); + unsigned char arg_count; + unsigned char must_be_zero[3]; + unsigned int * status_p; +} EXIT_BLOCK_T; + +/* --- All-Purpose IOSB --- */ + +/* This all-purpose IOSB can be used for any IO function (though it could +** be a bit of a hassle with terminal set and sense functions). Just be +** careful with the device dependent data, remembering to use casts where +** appropriate. Use of the other IOSB typedefs is recommended over use of +** this one, as their fields have more relevant names. +*/ + +typedef struct +{ + unsigned short int status; + unsigned short int count; + unsigned char device_dependent_data[4]; +} IOSB_T; + +/* --- Ancillary Control Process (ACP) IOSB --- */ + +typedef struct +{ + unsigned short int status; + unsigned short int not_used_0; + unsigned long int not_used_1; +} IOSB_ACP_T; + +/* --- CR11 Card Reader IOSB --- */ + +/* Identical to the all-purpose IOSB. +*/ + +#define IOSB_CR_T IOSB_T + +/* --- Disk Device IOSBs --- */ + +/* IOSB_DISK_T is for all disk device functions except for sense mode; +** IOSB_DISK_SENSEMODE_T is for sense mode. +*/ + +typedef struct +{ + unsigned short int status; + unsigned short int byte_count_low_order; + unsigned short int byte_count_high_order; + unsigned short int zero; +} IOSB_DISK_T; + +typedef struct +{ + unsigned short int status; + unsigned short int zero; + unsigned char sectors; + unsigned char tracks; + unsigned short int cylinders; +} IOSB_DISK_SENSEMODE_T; + +/* --- Laboratory Peripheral Accelarator (LPA) IOSB --- */ + +typedef struct +{ + unsigned short int status; + unsigned short int byte_count; + unsigned short int ready_out; + unsigned short int maintenance_status; +} IOSB_LPA_T; + +/* --- Line Printer IOSBs --- */ + +/* IOSB_LP_WRITE_T is for write functions; IOSB_LP_SETMODE_T is for +** set mode functions. IOSB_LP_SETMODE_T is identical to IOSB_ACP_T. +*/ + +typedef struct +{ + unsigned short int status; + unsigned short int byte_count; + unsigned long int num_lines_paper_moved; +} IOSB_LP_WRITE_T; + +#define IOSB_LP_SETMODE_T IOSB_ACP_T + +/* --- Magnetic Tape IOSB --- */ + +/* Identical to the all-purpose IOSB. +*/ + +#define IOSB_MT_T IOSB_T + +/* --- Mailbox (MBX) IOSBs --- */ + +/* IOSB_MBX_READ_T is for the read function; IOSB_MBX_WRITE_T +** is for the write function; IOSB_MBX_SETPROTECTION_T is for +** the set protection function. +*/ + +typedef struct +{ + unsigned short int status; + unsigned short int byte_count; + unsigned long int sender_pid; +} IOSB_MBX_READ_T; + +typedef struct +{ + unsigned short int status; + unsigned short int byte_count; + unsigned long int receiver_pid; +} IOSB_MBX_WRITE_T; + +typedef struct +{ + unsigned short int status; + unsigned short int zero; + unsigned long int protection_mask_value; +} IOSB_MBX_SETPROTECTION_T; + +/* --- Terminal (TTY) IOSBs --- */ + +/* IOSB_TTY_READ_T is for the read function; IOSB_TTY_ITEMLIST_READ_T +** is for the itemlist read function; IOSB_TTY_WRITE_T is for the +** write function; IOSB_TTY_SETSENSE_T is for the set mode, set +** characteristscs, sense mode, and sense characteristics functions. +*/ + +typedef struct +{ + unsigned short int status; + unsigned short int offset_to_terminator; + unsigned short int terminator; + unsigned short int terminator_size; +} IOSB_TTY_READ_T; + +typedef struct +{ + unsigned short int status; + unsigned short int offset_to_terminator; + unsigned char terminator_character; + unsigned char reserved; + unsigned char terminator_length; + unsigned char cursor_position_from_eol; +} IOSB_TTY_ITEMLIST_READ_T; + +typedef struct +{ + unsigned short int status; + unsigned short int byte_count; + unsigned short int zero_0; + unsigned short int zero_1; +} IOSB_TTY_WRITE_T; + +typedef struct +{ + unsigned short int status; + unsigned char transmit_speed; + unsigned char receive_speed; + unsigned char cr_fill_count; + unsigned char lf_fill_count; + unsigned char parity_flags; + unsigned char zero; +} IOSB_TTY_SETSENSE_T; + +/* Many of the VMS GETxxx system services also use IOSB's, but they are laid +** out differently. IOSB_GET_T is such a structure. The first longword (not +** word) is the status code, and the second word is reserved to DEC. +*/ + +typedef struct +{ + unsigned long int status; + unsigned long int reserved; +} IOSB_GET_T; + +/* --- Item Lists --- */ + +/* The item list structures change dynamically according to the number +** of items in them. For this reason, typedefs (ITEM_2_T and ITEM_3_T) +** are provided for the items, and macro functions (ITEM_LIST_2_T() and +** ITEM_LIST_3_T()) are provided for the item lists. Here is an example +** showing the usage of an item list macro function: +** +** static const ITEM_LIST_3_T(item_list,2) = +** { +** { +** {sizeof pid,JPI$_PID,&pid,NULL}, +** {sizeof username,JPI$_USERNAME,&username,&username_length} +** }, +** 0 +** }; +** +** The number 2 means, of course, that there are two items in the +** itemlist (i.e., the PID and the username). +*/ + +typedef struct +{ + unsigned short int component_size; + unsigned short int item_code; + void * component_p; +} ITEM_2_T; + +typedef struct +{ + unsigned short int buffer_size; + unsigned short int item_code; + void * buffer_p; + unsigned short int * buffer_length_p; +} ITEM_3_T; + +#define ITEM_LIST_2_T(variable_name,num_items) \ + struct \ + { \ + ITEM_2_T item[num_items]; \ + int terminating_zero; \ + } variable_name + +#define ITEM_LIST_3_T(variable_name,num_items) \ + struct \ + { \ + ITEM_3_T item[num_items]; \ + int terminating_zero; \ + } variable_name + +#endif /* !__VMS_TYPES_H__ */ |