.TITLE TEST$ZCALLT - Example of ZCALL table for M32 DIAMS Version 2.0 .IDENT 'X0001' ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE ; INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER ; COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY ; OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY ; TRANSFERRED. ; ; ;++ ; FACILITY: DIAMS / M32 ; ; ABSTRACT: This module contains an example of user-defined $ZCALL tables. ; ; AUTHOR: HANK MAURER ; ; CREATION DATE: 12-SEP-79 ; ; MODIFIED BY: ; Beatrice Walther 1-April-1980 (this is not a joke) ; ; VERSION: 1.01 ;-- .SBTTL USER DEFINED ZCALL TABLES ZCALLINI ; INITIALIZE THINGS ; ; ************** START of user defined ZCALL table *************** ; ;++ ; ; +---------------------------------------------------------+ ; | | ; | Examples of ZCALL definitions | ; | | ; +---------------------------------------------------------+ ; ;-- ;++ ; Convert upper to lower case ;-- ROUTINE CALLNAME=LOWER LINKNAME=TEST$LOWER - INPUTS=1 OUTPUTS=1 RETURN STATUS INPUT REQUIRED TYPE=STRING MECHANISM=DESCRIPTOR POSITION=1 OUTPUT REQUIRED TYPE=LONG MECHANISM=REFERENCE POSITION=2 ;++ ; Access violation ;-- ROUTINE CALLNAME=ACCVIO LINKNAME=TEST$ACCVIO - INPUTS=1 OUTPUTS=1 RETURN STATUS INPUT REQUIRED TYPE=LONG MECHANISM=VALUE POSITION=1 OUTPUT REQUIRED TYPE=LONG MECHANISM=REFERENCE POSITION=2 ;++ ; Fatal error returned ;-- ROUTINE CALLNAME=RETFATAL LINKNAME=TEST$RETFATAL - INPUTS=1 OUTPUTS=1 RETURN STATUS INPUT REQUIRED TYPE=LONG MECHANISM=VALUE POSITION=1 OUTPUT REQUIRED TYPE=LONG MECHANISM=REFERENCE POSITION=2 ;++ ; Fatal signal ;-- ROUTINE CALLNAME=SIGFATAL LINKNAME=TEST$SIGFATAL - INPUTS=1 OUTPUTS=1 RETURN STATUS INPUT REQUIRED TYPE=LONG MECHANISM=VALUE POSITION=1 OUTPUT REQUIRED TYPE=LONG MECHANISM=REFERENCE POSITION=2 ;++ ; Return an error ;-- ROUTINE CALLNAME=RETERROR LINKNAME=TEST$ERROR - INPUTS=1 OUTPUTS=1 RETURN STATUS INPUT REQUIRED TYPE=LONG MECHANISM=VALUE POSITION=1 OUTPUT REQUIRED TYPE=LONG MECHANISM=REFERENCE POSITION=2 ;++ ; Return sine and cosine - routine is an example of how to use JSB ;-- ROUTINE CALLNAME=SINCOS LINKNAME=TEST$SINCOS - INPUTS=1 OUTPUTS=2 RETURN STATUS INPUT REQUIRED TYPE=FLOATING MECHANISM=VALUE POSITION=1 OUTPUT REQUIRED TYPE=FLOATING MECHANISM=REFERENCE POSITION=2 OUTPUT REQUIRED TYPE=FLOATING MECHANISM=REFERENCE POSITION=3 ;++ ; Evaluate a polynomial ; Inputs are variable value followed by coefficients, from ; most to least significant (at least one coefficient is ; required). Polynomial value is returned by value. ;-- ROUTINE CALLNAME=POLY LINKNAME=TEST$POLYNOMIAL - INPUTS=32 OUTPUTS=0 RETURN VALUE TYPE=FLOATING INPUT REQUIRED TYPE=FLOATING MECHANISM=VALUE POSITION=1 INPUT REQUIRED TYPE=FLOATING MECHANISM=VALUE POSITION=2 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=3 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=4 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=5 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=6 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=7 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=8 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=9 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=10 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=11 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=12 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=13 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=14 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=15 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=16 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=17 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=18 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=19 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=20 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=21 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=22 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=23 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=24 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=25 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=26 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=27 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=28 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=29 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=30 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=31 INPUT OPTIONAL TYPE=FLOATING MECHANISM=VALUE POSITION=32 ;++ ; The following ZCALLs demostrate run-time library routines which ; can be called directly ;-- ;++ ; Duplicate a character ; Inputs are the length of the string to create ; and the ascii value of the character to duplicate ;-- ROUTINE CALLNAME=DUPLCHAR LINKNAME=STR$DUPL_CHAR - INPUTS=2 OUTPUTS=1 RETURN STATUS INPUT DEFAULT TYPE=LONG MECHANISM=REFERENCE POSITION=2 - VALUE=<1> INPUT OPTIONAL TYPE=LONG MECHANISM=REFERENCE POSITION=3 OUTPUT REQUIRED TYPE=STRING MECHANISM=DESCRIPTOR POSITION=1 ;++ ; Extract a signed bit field ; Inputs are position of field relative to the base address, ; size of the field to extract, and value from which to extract ;-- ROUTINE CALLNAME=EXTV LINKNAME=LIB$EXTV - INPUTS=3 OUTPUTS=0 RETURN VALUE TYPE=LONG INPUT REQUIRED TYPE=LONG MECHANISM=REFERENCE POSITION=1 INPUT REQUIRED TYPE=LONG MECHANISM=REFERENCE POSITION=2 INPUT REQUIRED TYPE=LONG MECHANISM=REFERENCE POSITION=3 ;++ ; Extract a zero-extended bit field ; Inputs are position of field relative to the base address, ; size of the field to extract, and value from which to extract ;-- ROUTINE CALLNAME=EXTZV LINKNAME=LIB$EXTZV - INPUTS=3 OUTPUTS=0 RETURN VALUE TYPE=LONG INPUT REQUIRED TYPE=LONG MECHANISM=REFERENCE POSITION=1 INPUT REQUIRED TYPE=LONG MECHANISM=REFERENCE POSITION=2 INPUT REQUIRED TYPE=LONG MECHANISM=REFERENCE POSITION=3 ;++ ; The following ZCALLs are used to communicate with other systems ; over a DMC link ;-- ;++ ; Start up a DMC link ; Inputs are device name, buffer count, loopback indicator ; Outputs are channel and status ;-- ROUTINE CALLNAME=DMCSTART LINKNAME=TEST$DMCSTART - INPUTS=3 OUTPUTS=2 RETURN STATUS INPUT REQUIRED TYPE=STRING MECHANISM=DESCRIPTOR POSITION=3 INPUT DEFAULT TYPE=LONG MECHANISM=VALUE POSITION=4 - VALUE=<3> INPUT DEFAULT TYPE=LONG MECHANISM=VALUE POSITION=5 - VALUE=<0> OUTPUT REQUIRED TYPE=LONG MECHANISM=REFERENCE POSITION=1 OUTPUT REQUIRED TYPE=LONG MECHANISM=REFERENCE POSITION=2 ;++ ; Shut down a DMC link ; Input is channel, output is status ;-- ROUTINE CALLNAME=DMCSHUT LINKNAME=TEST$DMCSHUT - INPUTS=1 OUTPUTS=1 RETURN STATUS INPUT REQUIRED TYPE=LONG MECHANISM=VALUE POSITION=2 OUTPUT REQUIRED TYPE=LONG MECHANISM=REFERENCE POSITION=1 ;++ ; Read data over a DMC link ; Inputs are channel number, wait indicator ; Outputs are string read and status ;-- ROUTINE CALLNAME=DMCREAD LINKNAME=TEST$DMCREAD - INPUTS=2 OUTPUTS=2 RETURN STATUS INPUT REQUIRED TYPE=LONG MECHANISM=VALUE POSITION=3 INPUT DEFAULT TYPE=LONG MECHANISM=VALUE POSITION=4 - VALUE=<0> OUTPUT REQUIRED TYPE=STRING MECHANISM=DESCRIPTOR POSITION=2 OUTPUT DUMMY TYPE=LONG MECHANISM=REFERENCE POSITION=1 ;++ ; Read data over a DMC link ; Inputs are channel number, string to write, wait indicator ; Output is status ;-- ROUTINE CALLNAME=DMCWRITE LINKNAME=TEST$DMCWRITE - INPUTS=3 OUTPUTS=1 RETURN STATUS INPUT REQUIRED TYPE=LONG MECHANISM=VALUE POSITION=2 INPUT REQUIRED TYPE=STRING MECHANISM=DESCRIPTOR POSITION=3 INPUT DEFAULT TYPE=LONG MECHANISM=VALUE POSITION=4 - VALUE=<0> OUTPUT REQUIRED TYPE=LONG MECHANISM=REFERENCE POSITION=1 ; ; ************** END of user defined ZCALL table ********************* ; ; ; mark end of ZCALL table ; ZCALLFIN .END