!*** MODULE $IOSADEF *** CDEC$ OPTIONS /NOALIGN ! + ! NOTE: ! The tags used in the data structures defined by this file reflect ! the size of the field in the OpenVMS V7.0 ALPHA release. The ! field names have been ported to the VAX release for compatability ! reasons and it is recognized that some of the fields are shorter ! than their tags indicated. If the tags were to be corrected for ! their proper size on VAX it would break our goal of application ! source code compatability for Fast IO. ! - ! + ! Define I/O Status Area ! - PARAMETER IOSA$K_LENGTH = '00000020'X ! Length of IOSA PARAMETER IOSA$C_LENGTH = '00000020'X ! Length of IOSA PARAMETER iosa$S_IOSADEF = '00000020'X ! Size of IOSA STRUCTURE /iosa/ INTEGER*4 iosa$l_status ! Status INTEGER*4 iosa$l_resd ! Reserved (driver) UNION MAP INTEGER*4 iosa$q_count_q(2) ! Force size END MAP MAP INTEGER*4 iosa$ih_count ! Number of bytes END MAP END UNION UNION MAP INTEGER*4 iosa$q_context_q(2) ! Force size END MAP MAP INTEGER*4 iosa$ph_context_p ! User context area END MAP MAP INTEGER*4 iosa$ih_context ! User context area END MAP END UNION UNION MAP INTEGER*4 iosa$l_resl(1:2) ! in the future some END MAP MAP INTEGER*4 iosa$q_resq ! additional space END MAP END UNION END STRUCTURE ! iosa ! + ! $IO_SETUP flag bits ! - PARAMETER fio$m_expedite = '00000001'X PARAMETER fio$m_ast_nofloat = '00000002'X STRUCTURE /setup_flags/ UNION MAP INTEGER*4 fio$l_flags_longword END MAP MAP PARAMETER fio$S_expedite = 1 PARAMETER fio$V_expedite = 0 ! Make this a high-priority I/O PARAMETER fio$S_ast_nofloat = 1 PARAMETER fio$V_ast_nofloat = 1 ! The AST routine does not use f.p. regs BYTE %FILL (1) END MAP END UNION END STRUCTURE ! setup_flags ! ! These entry point definitions were ported from Alpha STARLET.SDL. ! They are applicable only when the IOSA structure definitions are ! present and are not actual system services on VAX. Therefore, they ! will remain in this file (IOSADEF.SDL) for the VAX ! ! $IO_CLEANUP ! ! Cleanup a previously set-up I/O ! ! $IO_CLEANUP fandle ! ! fandle = fandle to clean up ! INTEGER*4 SYS$IO_CLEANUP EXTERNAL SYS$IO_CLEANUP ! $IO_PERFORM ! ! Transfer data between device and buffer ! ! $IO_PERFORM fandle, chan, iosadr, bufadr, buflen, devdata ! ($IO_PERFORMW) ! ! fandle = fandle from previous $IO_SETUP ! ! chan = standard I/O channel ! ! iosadr = IOSA address ! ! bufadr = address of data buffer (64 bits) ! ! buflen = length of data buffer (64 bits) ! ! devdata= data passed to driver, e.g., media address ! ! INTEGER*4 SYS$IO_PERFORM EXTERNAL SYS$IO_PERFORM INTEGER*4 SYS$IO_PERFORMW EXTERNAL SYS$IO_PERFORMW ! $IO_SETUP ! ! Set up a fast I/O ! ! $IO_SETUP func, bufobj, iosobj, astadr, flags, return_fandle ! ! func = function code ! ! bufobj = data buffer object (address of (vector of 2 ints)) ! ! iosobj = IOSA buffer object (address of (vector of 2 ints)) ! ! astadr = completion AST address (address of entry) ! ! flags = flags ! ! return_fandle = address of returned fandle ! INTEGER*4 SYS$IO_SETUP EXTERNAL SYS$IO_SETUP CDEC$ END OPTIONS