(PROGRAMMED REQUESTS\PROG_REQ_CHAPT) (QUICK_COMMAND\NONEWPAGE) (.ABTIO) (EMT 374, Code 13)

(.ABTIO programmed requestEMT 374, Code 13) (.ABTIO programmed requestdescription) The .ABTIO programmed request allows a job to abort all outstanding I/O operations on a channel without terminating the program. (indent\1\smallskip)(.ABTIO chan)

where: (KEEP) (3\3\6) (\(chan)\is the channel number on which to abort I/O)
(POSTSCRIPT\FIG2_1.EPS\2)

Errors: None. (.ADDR) (Macro Expansion)

(.ADDR macrodescription) The .ADDR macro computes the specified address in a position-independent manner. (indent\1\smallskip)(.ADDR addr,reg,push)

where:

(multipage) (3\3\6) (\(addr)\is the label of the address to compute, expressed as an immediate value with a number sign (#) before the label.) (\(reg)\is where to store the computed address, expressed as Rn or @Rn.

To store the address on the stack, use @SP or -(SP). A @SP stores the address in the stack's current top, while -(SP) pushes the address onto a new location which becomes the top of the stack. The following register references are valid: (#) (simple) #R0# -- ##R5 @R0# -- #@R5 @SP# -- #-(SP) ) (\(push)\determines what to do with the original contents of the register. If you omit push, the computed address overwrites the register contents. If you use ADD for the push argument, the computed address is added to the original contents of the register. If you use PUSH for the push argument, the register's previous contents are pushed onto the stack before the computed address is stored in the register.

If you use -(SP) for the argument (reg\ITALIC), you may omit the push argument, since PUSH is automatically used.) (.ASSUME) (Macro Expansion)

(.ASSUME macrodescription) The .ASSUME macro tests the validity for a condition you specify. If the test is false, MACRO generates an assembly error and prints a descriptive message. (indent\1\smallskip)( .ASSUME a rel c [message = (<)text>])

where:

(3\3\5) (\(a)\is an expression.) (\(rel)\is the relationship between a and c you want to test. There can be six values for (rel\ITALIC): {eq}, {ne}, {gt}, {et}, {ge}, and {le}.) (\(c)\is an expression.) (\(text)\is the message you want MACRO to print if the condition you specified in the relationship between (a\ITALIC) and (c\ITALIC) is false. To specify your own error message, start the message with a semicolon (;), or start with a valid assembly expression followed by a semicolon (;) and the message. If you omit the message argument, the error message (a rel c is not true\ITALIC) displays; the expressions you used appear in the message in place of (a\ITALIC) and (c\ITALIC).) (.BR) (Macro Expansion)

(.BR macrodescription) The .BR macro warns you during assembly time if code that belongs together is separated. When you invoke the .BR macro, you specify an address as an argument. .BR checks that the next address equals the address you specified in the .BR macro. If it does not, MACRO prints the error message: (ERROR; ?SYSMAC-E-Not at location addr\ITALIC). The location you specified in the .BR macro appears in place of (addr\ITALIC) in the message. If you specify a symbol as an argument and the symbol is not defined in the current assembly, you will get an error message: (ERROR; ?SYSMAC-E-addr is not defined\ITALIC). At assembly time, both .ASSUME and .BR check assertions that you make; they do no checking at run time. (indent\1\smallskip)(.BR addr)

where:

(3\3\6) (\(addr)\is the address you want to test.) (.CALLK) (EMT 373)

(.CALLK programmed requestEMT 373) (.CALLK programmed requestDescription) The .CALLK request transfers control (and alters mapping) from the current mode to the specified virtual address in Kernel mode. (indent\1\smallskip)(.CALLK [dest][,pic])

where:

(KEEP) (3\3\6) (\(dest)\is a virtual address in Kernel mode; the address of the entry point to the routine. If (dest) is not specified, .CALLK assumes the address is on the stack) (\(pic)\is an optional parameter that should be non-blank for PIC.)

The environment upon entry into Kernel mapping is as follows: (UNNUMBERED) Registers 0-5 are preserved. The PS is not preserved. The contents of the User and Kernel stacks are undefined. The User mapped system communications area (SYSCOM) is not mapped to Kernel.

The routine called in Kernel mode must return, using the standard RETURN instruction. The environment upon return to User mapping is: (UNNUMBERED) Registers 0-5 are preserved across the change to User mode. The condition codes in the PS are preserved. The trace trap bit and previous mode bit in the PS are not preserved. The stack pointer (SP) and stack contents are the same as before the call to .CALLK, except that the destination address has been popped off the stack.

Errors: None reported by .CALLK; however, the called routine may report errors. (.CALLS) (Fully-Mapped Only)

(.CALLS macrodescription) The .CALLS request supports transferring control to Supervisor mode. It is designed to work with the SHANDL Supervisor handler code. (indent\1\smallskip)(.CALLS dest,return)

where:

(multipage) (3\3\6) (\(dest)\Supervisor virtual address (#xxxxxx) to which you are transfering control. ) (\(return)\Character string designating condition code values that should be preserved for return transition from Supervisor mode to User mode. Default value is NZVC, meaning return all condition codes.

If no condition codes need to be returned, specify RETURN=(<)>. If only carry needs to be returned, specify RETURN=C. Any combination of condition codes may be specified.)

.CALLS is used as a transfer vector, not as an inline call.

.CALLS also has a special form, .CALLS #0, by which you can transfer control to Supervisor mode and perform an RTI instruction (with Supervisor mode as the "previous" mode). (.CDFN) (EMT 375, Code 15)

(.CDFN programmed requestEMT 375, Code 15) (.CDFN programmed requestdescription) The .CDFN request redefines the number of I/O channels. .CDFN allows the number to be expanded to as many as 255(decimal) channels.

The space for the new channels must be allocated by the User program. Allocate 5*n words of memory, where (n\ITALIC) is the number of channels to be defined. (indent\1\smallskip)(.CDFN area,addr,num)

where:

(3\3\6) (\(area)\is the address of a three-word EMT argument block) (\(addr)\is the address where the I/O channels begin) (\(num)\is the number of I/O channels to be created)
(POSTSCRIPT\FIG2_2.EPS\6)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\An attempt was made to define fewer than or the same number of channels that already exist. Violation of PAR1 restriction.) (.CHAIN) (EMT 374, Code 10)

(.CHAIN programmed requestEMT 374, Code 10) (.CHAIN programmed requestDescription) The .CHAIN request lets a background program pass control directly to another background program without operator intervention. Since this process can be repeated, a long "chain" of programs can be strung together.

The chain area consists of locations 500-777 of the running job's virtual address space. (indent\1\smallskip)(.CHAIN)

(POSTSCRIPT\FIG2_3.EPS\2)

Errors: .CHAIN is implemented by simulating the monitor RUN command and can produce any errors that RUN can produce. If an error occurs, .CHAIN is abandoned and the keyboard monitor is entered. (.CHCOPY) (Multijob Only) (EMT 375, Code 13)

(.CHCOPY programmed requestEMT 375, Code 13) (.CHCOPY programmed requestdescription) The .CHCOPY request opens a channel for input, logically connecting it to a file that is currently open by another job. This request must be issued before the first .READ or .WRITE request on that channel. (indent\1\smallskip)(.CHCOPY area,chan,ochan [,jobblk])

where:

(3\3\6) (\(area)\is the address of a three-word EMT argument block) (\(chan)\is the channel the current job will use to read the data) (\(ochan)\is the channel number of the other job's channel to be copied) (\(jobblk)\is a pointer to a three-word ASCII logical job name that represents a system job)
(POSTSCRIPT\FIG2_4.EPS\6)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Other job does not exist, does not have enough channels defined, or does not have the specified channel (ochan) open.) (\##1\Channel (chan\ITALIC) already open.) (.CKXX)

(.CKXX macrodescription) The .CKXX macro generates CK.Rn register checking macros. (indent\1\smallskip)(.CKXX (<)reg[,alph][,reg,...]>)

where:

(KEEP) (3\3\6) (\(reg)\is the register or registers you want .CKXX to define as check registers.)

The check macro CK.Rn, generated by .CKXX, has the following form: (indent\1\smallskip)(CK.Rn[alph] [label][,change][,result])

where:

(multipage) (3\3\6) (\(n)\is the register number that .CKXX assigned to this check macro) (\(alph)\is an alphabetic character that .CKXX assigned to this check macro) (\(label)\is the value or label you assume equates to the check register.) (\(change)\indicates the check macro increment or decrement.

The change value must be preceded by a plus sign (+) to indicate increment or a minus sign (-) to indicate decrement.) (\(result)\is a new value assigned by the check macro.) (.CLOSE) (EMT 374, Code 6)

(.CLOSE programmed requestEMT 374, Code 6) (.CLOSE programmed requestdescription) The .CLOSE request terminates activity on the specified channel and frees it for use in another operation. (indent\1\smallskip)(.CLOSE chan)

where:

(3\3\6) (\(chan)\is a channel number in the range 0 to 376(8))
(POSTSCRIPT\FIG2_5.EPS\2)

Errors: (#)

(KEEP) (3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##3\A protected file with the same name already exists on the device. The .CLOSE is performed anyway, resulting in two files with the same name on the device.) (.CLOSZ) (EMT 375, Code 45)

(.CLOSZ programmed requestEMT 375, Code 45) (.CLOSZ programmed requestdescription) The .CLOSZ programmed request terminates activity on a channel that was opened by a .ENTER, frees it for use in another operation, and sets the file size. (indent\1\smallskip)(.CLOSZ area,chan,size)

where:

(KEEP) (3\3\6) (\(area)\is the address of a 2-word EMT argument block) (\(chan)\is a channel number in the range of 0 to 376octal.) (\(size)\is the specified size of the file at closing. )
(POSTSCRIPT\figrn_2.EPS\3)

Errors: (If channel was opened to an RT-11 (directory device\ITALIC)) (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##1\Size argument is greater than allocated size; file closed at size indicated by highest block written (equivalent to .CLOSE)) (\##2\Channel not opened with .ENTER; channel purged) (\##3\A protected file with the same name already exists on the device. File is closed with size as indicted by size argument. (If error 1 and error 3 conditions exist at same time, error 1 takes precedence))

Errors: (If channel was opened on a (special directory device\ITALIC)) (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##1\Meaning controlled by handler) (\##2\Channel not opened by .ENTER; channel purged) (\##3\Meaning controlled by handler) (.CMAP) (EMT 375, Code 46, Subcode 0)

(.CMAP macrodescription) The .CMAP request sets the "CMAP" status and returns the old value in R0. (indent\1\smallskip)(.CMAP area,value,CODE=strg)

where:

(KEEP) (3\3\10) (\(value)\is the setting desired) (\(CODE=strg)\Specify (strg\ITALIC) as either "SET" (default), "NOSET", "SP" or "STACK") (.CMKT) (Timer Support) (EMT 375, Code 23)

(.CMKT programmed requestEMT 375, Code 23) (.CMKT programmed requestdescription) The .CMKT request causes one or more outstanding mark time requests to be canceled (See the .MRKT programmed request). (indent\1\smallskip)(.CMKT area,id[,time])

where:

(3\3\6) (\(area)\is the address of a three-word EMT argument block) (\(id)\is a number that identifies the mark time request to be canceled. If more than one mark time request has the same (id\ITALIC), the request with the earliest expiration time is canceled. If (id\ITALIC) = 0, all non-system mark time requests (those in the range 1 to 176777) for the issuing job are canceled) (\(time)\is the address of a two-word area in which the monitor returns the amount of time (clock ticks) remaining in the canceled request. If an address of 0 is specified, no value is returned. If id = 0, the time parameter is ignored and need not be indicated)
(POSTSCRIPT\FIG2_6.EPS\6)

Errors: (#)

(2\6) ((Code\BOLD)\(Explanation\BOLD)) (##0\The (id\ITALIC) was not zero and a mark time request with the specified identification number could not be found (implying that the request was never issued or that it has already expired).) (.CNTXSW) (EMT 375, Code 33)

(.CNTXSW programmed requestEMT 375, Code 33) (.CNTXSW programmed requestdescription) The .CNTXSW request is used to specify a list of locations saved when a context switch occurs.

If .CNTXSW is issued more than once, only the latest list is used; the previous address list is discarded. If the address (addr\ITALIC) is 0, no extra locations are switched. The .CNTXSW request is ignored for virtual jobs,. (indent\1\smallskip)(.CNTXSW area,addr)

where:

(3\3\6) (\(area)\is the address of a two-word EMT argument block) (\(addr)\is a pointer to a list of addresses terminated by a zero word. The addresses must be even and be: (unnumbered) in the range 2-476 in the user job area in the I/O page )
(POSTSCRIPT\FIG2_7.EPS\4)

Errors: (#)

(2\6) ((Code\BOLD)\(Explanation\BOLD)) (##0\One or more of the conditions specified by (addr) was violated.) (.CRAW) (Mapped Only) (EMT 375, Code 36, Subcode 2)

(.CRAW programmed requestEMT 375, Code 36) (.CRAW programmed requestdescription) The .CRAW request defines a virtual address window. Optionally, mapping occurs if you set the WS.MAP bit in the last word of the window definition block before you issue .CRAW. (indent\1\smallskip)(.CRAW area,addr)

where:

(3\3\6) (\(area)\is the address of a two-word EMT argument block) (\(addr)\is the address of the window definition block. (See .WDBBK))
(POSTSCRIPT\FIG2_8.EPS\3)

Errors: (#)

(3\3\6) ((Code\BOLD)\(Explanation\BOLD)) (\##0\Window alignment error: the new window overlaps the static window for a virtual job. The window is too large or W.NAPR is greater than 7.) (\##1\An attempt was made to define more than seven windows in your program. Eliminate a window (.ELAW) or redefine your virtual address space into fewer windows.)

If the WS.MAP bit were set in the window definition block status word: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##2\An invalid region identifier was specified.) (\##4\The combination of the offset into the region and the size of the window to be mapped into the region is invalid.) (\#17\Inactive mode or space specified.) (.CRRG) (Mapped Only) (EMT 375, Code 36, Subcode 0)

(.CRRG programmed requestEMT 375, Code 36) (.CRRG programmed requestdescription) The .CRRG request directs the monitor to allocate a dynamic region in physical memory for use by the current requesting program. (indent\1\smallskip)(.CRRG area[,addr])

where:

(3\3\6) (\(area)\is the address of a two-word EMT argument block) (\(addr)\is the address of the region definition block. (See .RDBBR))
(POSTSCRIPT\fig2_9.EPS\4)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##6\No region control blocks are available. ) (\##7\A region of the requested size cannot be created because not enough memory is available. The size of the largest available region is returned in R0.) (\#10\An invalid region size was specified. A value of 0, or a value greater than the available amount of contiguous extended memory, is invalid.) (\#12\Global region not found.) (\#13\Too many global regions in use (none free).) (\#15\Global region is privately owned.) (\#16\Global region already exists at a different base address.) (.CSIGEN) (EMT 344)

(.CSIGEN programmed requestEMT 344) (.CSIGEN programmed requestdescription) The .CSIGEN request processes a standard RT-11 command string. In general mode, file .LOOKUP and .ENTER requests as well as handler .FETCH requests are performed. This request returns information on the stack.

When called in general mode, the CSI purges channels 0 through 10(8) before processing the command string. If errors occur during processing, it purges them again. (indent\1\smallskip)(.CSIGEN devspc,defext[,cstrng][,linbuf])

where:

(3\3\6) (\(devspc)\is the address of the memory area where the device handlers (if any) are to be loaded) (\(defext)\is the address of a four-word block that contains the Radix-50 default file types.) (\(cstrng)\is the address of the ASCIZ command string or a 0 if input is to come from the console terminal. ) (\(linbuf)\is the storage address of the original command string. This is a user-supplied area, 81(10) bytes in length.)

On return, R0 points to the first available location above the handlers, the stack contains the option information, and all the specified files have been opened.

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Invalid command (such as bad separators, invalid file names, and commands that are too long).) (\##1\A device specified is not found in the system tables.) (\##2\A protected file of the same name already exists. A new file was not opened.) (\##3\Device full.) (\##4\An input file was not found in a .LOOKUP.) (Passing Option Information)

Both .CSIGEN and .CSISPC return options and their associated values in reverse order from that specified on the command line. That is, the last option and associated value (if present) placed last on the stack will be the first option retrieved.

Options and their associated values are returned on the stack. The format of the stack output of the CSI for options is as follows: (#)

(3\5\10) ((Word#\BOLD)\(Value\BOLD) \(Meaning\BOLD)) (##1\N\Number of options found in command string.

If N=0, no options were found.) (##2\Option character and file number\Even byte = seven-bit ASCII option character) (\\Bits 8-14 = file number) (\\Bit 15 = 1 if the option had a value) (##3\Option value\If bit 15 of word 2 is set, word 3 contains the option value.

If bit 15 is not set, word 3 is omitted. Words 2 and 3 repeat n times.) (.CSISPC) (EMT 345) (.CSISPC programmed requestEMT 345) (.CSISPC programmed requestdescription)

The .CSISPC request calls the Command String Interpreter to parse the command string and return file descriptors and options to the program. The CSI does not perform any .CLOSE, .ENTER, .LOOKUP, or handler .FETCH requests.

Options and their associated values are returned on the stack. The optional argument (linbuf\ITALIC) can provide your program with the original command string. (indent\1\smallskip)(.CSISPC outspc,defext[,cstrng][,linbuf])

where:

(3\3\6) (\(outspc)\is the address of the 39-word block to contain the file descriptors.) (\(defext)\is the address of a four-word block that contains the Radix-50 default file types.) (\(cstrng)\is the address of the ASCIZ input string or a #0 if input is to come from the console terminal.) (\(linbuf)\is the storage address of the original command string. This is a user-specified area, 81 bytes in length. ) (Notes) (UNNUMBERED) The file description consists of 39 words, comprising nine file descriptor blocks (five words for each of three possible output files; four words for each of six possible input files), which correspond to the nine possible files (three output, six input). If any of the nine possible file names are not specified, the corresponding descriptor block is filled with zeroes. The five-word blocks hold four words of Radix-50 representing (dev:file.type\ITALIC), and one word representing the size specification given in the string.

Errors: (#)

(KEEP) (3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Invalid command line.) (\##1\Invalid device.) (.CSTAT) (EMT 375, Code 27)

(.CSTAT programmed requestEMT 375, Code 27) (.CSTAT programmed requestdescription) This request furnishes you with information about a channel. (indent\1\smallskip)(.CSTAT area,chan,addr)

where:

(3\3\6) (\(area)\is the address of a two-word EMT argument block) (\(chan)\is the number of the channel about which information is desired) (\(addr)\is the address of a six-word block to contain the status.)
(POSTSCRIPT\fig2_10.EPS\4)

Errors: (#)

(KEEP) (3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\The channel is not open.) (.CTIMIO) (Timeout) (Macro Expansion)

(.CTIMIO macrodescription) The .CTIMIO macro cancels the device time-out request in the handler interrupt service section when an interrupt occurs to disable the completion routine (See .TIMIO). (indent\1\smallskip)(.CTIMIO tbk)

where:

(3\3\6) (\(tbk)\is the address of the seven-word timer block.) (#)
(Timer Block Format\TIMBLOCK) (3\8\15) (Offset\Filled in by\Contents) (##0\.TIMIO\High-order time word (expressed in ticks).) (##2\.TIMIO\Low-order time word (expressed in ticks).) (##4\Monitor\Link to next queue element; 0 indicates none.) (##6\Handler\Owner's job number; 0 for background job, MAXJOB for foreground job, and job priority *2 for system jobs. MAXJOB is equal to (the number of jobs in the system * 2)-2. The job number for the foreground job is 2 in a system without system jobs, and 16 for a system with system jobs. The job number is set from the queue element.) (#10\Handler\Sequence number of timer request. Use the xx$COD, plus the 177000. The valid range of sequence numbers is from 177000 to 177377.) (#12\Monitor\-1) (#14\Handler\Address of the completion routine to execute if timeout occurs. The monitor zeroes this word when it calls the completion routine, indicating that the timer block is available for reuse.)

Errors: None. (.DATE) (EMT 374, Code 12)

(.DATE programmed requestEMT 374, Code 12) (.DATE programmed requestdescription) This request returns in R0 the current date information from the system date word. The date word returned is in the following format: Bit: 15 14 13 ... 10 9 ... 5 4 ... 0 \_____/\_________/\_______/\_______/ Age Month Day Year The (year\ITALIC) value in bits 4 to 0 is the actual year minus 1972. The (day\ITALIC) in bits 9-5 is a number from 1 to the length of the month. The (month\ITALIC) in bits 13 to 10 is a number from 1 to 12. (Age\ITALIC) in bits 14 and 15 is a number from 0 to 3. The age value multiplied by 32(decimal) should be added to 1972 and to the year value in bits 4 through 0. (indent\1\smallskip)(.DATE)

where:

(POSTSCRIPT\fig2_11.EPS\2)

Errors: No errors are returned. A zero result in R0 indicates that the user has not entered a date. (.DEBUG)

(.DEBUG macro description) .DEBUG sets up the environment for the .DPRINT macro and may generate routines to support octal/decimal displays used by .DPRINT. Before .DEBUG is issued, .ENABL LSB needs to be in effect. (indent\1\smallskip)(.DEBUG switch,class,pic,id,value,psect,code,?L1,?L2,?L3,?L4)

where: (#)

(4\3\6\10) (\(switch)\ON/on\Set V23 to value of CLASS) (\ \OFF/off\Set V23 to 0 (default)) (\(class)\177777\Select all classes) (\ \xxxxxx\Bit mask to select classes) (\(pic)\Default\Do not generate PIC code) (\ \YES\Generate PIC) (\(id)\Default\Do not generate separated I-D code) (\ \YES\Generate separated I-D code) (\(value)\Default\No value printing) (\ \YES\ Value printing) (\(PSect)\(Deb$ug)\PSECT used for text string generated by .DPRINT) (\(code)\(Deb.ug)\PSECT used for support subroutines) (\(L1--L4)\(xxxxx$)\Local labels used for support routines) (.DELETE) (EMT 375, Code 0)

(.DELETE programmed requestEMT 375, Code 0) (.DELETE programmed requestdescription) The .DELETE request deletes a specified file from a specified device. The .DELETE request is invalid for magtapes. (indent\1\smallskip)(.DELETE area,chan,dblk[,seqnum])

where:

(3\3\6) (\(area)\is the address of a three-word EMT argument block) (\(chan)\is the device channel number) (\(dblk)\is the address of a four-word Radix-50 descriptor ) (\(seqnum)\is a file position number (Not supported or used by any Digitally supplied handler))
(POSTSCRIPT\fig2_12.EPS\5)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Channel is not available.) (\##1\File was not found in the device directory.) (\##2\Invalid operation.) (\##3\The file is protected and cannot be deleted.) (.DEVICE) (EMT 375, Code 14, Subcodes 0, 1)

(.DEVICE programmed requestEMT 375, Code 14) (.DEVICE programmed requestdescription) You set up the list of addresses with the specified values. When your program exits the system loads these designated addresses with the corresponding values.

The .DEVICE request is ignored when it is issued by a virtual job. (indent\1\smallskip)(.DEVICE area,addr[,link])

where:

(3\3\6) (\(area)\is the address of a two-word EMT argument block) (\(addr)\is the address of a list of two-word elements. Each element of a list is composed of a one-word address and a one-word value to be put at that address. If (addr\ITALIC) is #0, any previous list is discarded.) (\(link)\is an optional argument that, if present, specifies linking of (FIRST) tables on successive calls to .DEVICE. If the argument is omitted, the list referenced in the previous .DEVICE request is replaced by the new list. The argument must be supplied to cause linking of lists; however, linked and unlinked list types cannot be mixed)
(POSTSCRIPT\fig2_13.EPS\4)

Errors: None. (.DPRINT)

(.DPRINT macrodescription) This macro conditionally generates code to print a string. (indent\1\smallskip)( .DPRINT print[,value][,type][,class],?L1)

where: (#)

(3\3\6) (\(string)\ String to print, enclosed in (<>) .ASCII is generated with (" ") as delimiters) (\(value)\ Value to print if non-blank. Use R0 to print value in R0 Avoid stack references.

Note: .DPRINT issues a .PRINT that clears location 52, the error byte, before .DPRINT picks up any value to display. To display contents of the error byte, move it to a temporary location, and reference that location.) (\(type)\ (OCT)###Display in octal (DEC)###Display in decimal) (\(class)\ (177777)###Generate code if any class enabled #xxxxxx####Generate code if ...V23 and class is non-zero) (\(L1)\ (xxxxx$)###Local symbol. If .ENABLE LSB is not in effect, you must provide a symbol for L1.) (.DRAST) (Macro Expansion (Handlers only))

(.DRAST macrodescription) The .DRAST macro sets up the interrupt and abort entry points, lowers the processor priority, and references global symbol $INPTR, which contains a pointer to the $INTEN routine in the resident monitor. (indent\1\smallskip)(.DRAST name,pri[,abo])

where:

(3\3\6) (\(name)\is the two-character device name) (\(pri)\is the priority of the device, and also the priority at which the interrupt service code is to execute) (\(abo)\is an optional argument that represents the label of an abort entry point. If you omit this argument, the macro generates a RETURN instruction at the abort entry point, which is the word immediately preceding the interrupt entry point.) (.DRBEG) (Macro Expansion (Handlers Only))

(.DRBEG macrodescription) .DRBEG sets up a variable number of words (at least six) as the first words of the handler. The number of words set up by .DRBEG is determined by options selected in this and other .DRxxx macros. This macro also generates the appropriate global symbols for your handler. Before you use .DRBEG, you must invoke .DRDEF to define xx$CSR, xx$VEC, xxDSIZ, and xxSTS (See macro .DRDEF).

Two optional parameters, (SPFUN=spsym\ITALIC) and (NSPFUN=nspsym\ITALIC) have been added to .DRBEG to support DMA I/O special functions on UNIBUS processors. (UNNUMBERED) Include the (SPFUN=spsym) parameter to provide implicit UMR support for standard special functions. Include the (NSPFUN=nspsym) parameter to provide explicit UMR support for nonstandard special functions.

Standard and nonstandard special functions are described in (DEV_BOOK). (indent\1\smallskip)( .DRBEG name[,SPFUN=spsym][,NSPFUN=nspsym])

where:

(KEEP) (3\3\6) (\(name)\is the 2-character device name.) (\(spsym)\is the symbol name for the list of DMA standard special functions.) (\(nspsym)\is the symbol name for the list of DMA nonstandard special functions.)

The arguments, (spsym\ITALIC) and (nspsym\ITALIC), point to lists of special functions within the low-memory portion of the handler. The special functions are listed in the same manner as that used by the .DRSPF macro (extension table) method for defining special functions. Standard DMA special functions are listed in a group (assigned a symbol name) and that symbol name is used by .DRBEG ((spsym)). Nonstandard DMA special functions are listed in a separate group with a different symbol name and that name is then used by .DRBEG ((nspsym)). (.DRBOT) (Macro Expansion (Handlers Only))

(.DRBOT macrodescription) .DRBOT generates a routine that issues a read request to read blocks 3-5 from the device into memory, an error message routine used to report errors during the booting process, and a structure in which you write the bootstrap read routine. (indent\1\smallskip)( .DRBOT name,entry,read [,CONTROL=arg...,arg][,SIDES=n][,force][,PSECT])

where:

(3\3\10) (\(name)\is the two-character device name) (\(entry)\is the software bootstrap entry point) (\(read)\is the bootstrap read entry point) (\(CONTROL)\ defines the types of controllers supported by this handler. The values can be UBUS or QBUS. If CONTROL is omitted, both Unibus and Q-bus are assumed. This is correct for all supported handlers) (\(SIDES)\specifies single- or double-sided diskettes. If omitted, single-sided are assumed.) (\(force)(PSECT)\Both arguments are passed to a .DREND macro automatically generated by .DRBOT.) (.DRDEF) (Macro Expansion (Handlers Only))

(.DRDEF macrodescription) The .DRDEF macro sets up handler parameters, calls the driver macros from the library, and defines useful symbols. (indent\1\smallskip)( .DRDEF name,code,stat,size,csr,vec [,UNIT64=str][,DMA=str][,PERMUMR=n] [,SERIAL=str])

where:

(3\3\8) (\(name)\is the two-character device name.) (\(code)\is the device identifier numeric code) (\(stat)\is the device status bit pattern. (See Data Structures)) (\(size)\is the size of the device in 256-word blocks.

If the device is not random access, use 0.) (\(csr)\is the default address for the device's CSR.) (\(vec)\is the default vector.) (\(UNIT64)\indicates whether this handler supports extended device units:

(TABLE2) (2\6) ((No)\Default. No extended units) ((Yes)\Extended units) ) (\(DMA)\indicates whether this handler supports direct memory access:
(TABLE2) (2\6) ((Yes)\Use direct memory access) ((No)\No direct memory access.) ) (\(PERMUMR)\indicates this handler should be assigned (n\ITALIC) permanent UNIBUS mapping registers. Valid values for (n) are 0 through 7. The default is 0.) (\(SERIAL)\indicates whether this handler requires serialized I/O request satisfaction:
(TABLE2) (2\6) ((No)\Default. No serialized I/O request satisfaction) ((Yes)\Requires serialized I/O request satisfaction ) ) (Device-Identifier Byte)

The low byte of the device status word, the device-identifier byte, identifies each device in the system. You specify the correct device identifier as the (code )argument to .DRDEF. The values are defined in octal as (DIBV) shows.

(Device-Identifier Byte Values\DIBV) (#) (3\8\6) (Name \Code \Device) (RK \#0 \RK05 Disk) ( \#1 \Reserved) (EL \#2 \Error Logger) (LP \#3 \Parallel Interface Printer) (FIRST) (BA \#4 \Batch Handler) (DL \#5 \RL01/RL02 Disk) (DY \#6 \RX02 Diskette) ( \#7 \Reserved) (VS \10 \RTEM Virtual System VS(M)) (MT \11 \TM11/TMAll/TU10/TS03 Magtape) ( \12-14 \Reserved) (IB \15 \IVB11 Bus Driver) (\16--17 \Reserved) (MM \20 \TJU16/TU45 MAGtape) (\21 \Reserved) (DX \22 \RX11/RX01 Diskette) (DM \23 \RK06/RK07 Disk) ( \24 \Reserved) (NL \25 \Null Device) ( \26--30 \Reserved (DECnet)) ( \31--33 \Reserved (CTS--300)) (\34 \Reserved) (MS \35 \TS11/TS04/TS05 Magtape) (\36--40 \Reserved) (LS \41 \Serial Interface Printer) (MQ \42 \Internal Message Handler) (DR \43 \DRV11J Interface (MRRT)) (XT \44 \Reserved (MRRT)) ( \45 \Reserved) (LD \46 \Logical disk handler) (VM \47 \KT11 pseudodisk handler) (DU \50 \MSCP disk class handler) (SL \51 \Single-line Command Editor) (DZ \52 \RX50 diskette (CTI Bus-based processor)) (DW \53 \Hard Disk (CTI Bus-based processor)) (LAST) (PI \54 \Professional interface) (SP \55 \Transparent spooler) ( \56 \Reserved) (XC/XL \57 \Communication port (Professional 325/350 or DL(V)--11)) (MU \60 \TMSCP magtape class handler) (NC/NQ/NU \61 \Ethernet class handler) (SD \ 62\ DBG--11 handler) (ST \ 63\ DBG--11 symbol table handler) ( \64\ Reserved) (UB\ 65\ UMR pseudohandler) (.DREND) (Macro Expansion (Handlers Only))

(.DREND macrodescription) The .DREND macro generates the table of addresses for service routines in RMON. (indent\1\smallskip)( .DREND name[,FORCE=n][,PSECT=psect])

where:

(MULTIPAGE) (3\3\6) (\(name)\is the two-character device name) (\(FORCE)\ Value supplied as FORCE, combined with the settings of MMG$T, ERL$G, and TIM$IT, selects the entries to be generated in the vector table.

Values in FORCE correspond to SYSGEN options. The default value for FORCE is 0. Using a value of -1 for FORCE will generate all the possible entries of the System Service Table.) (\(PSECT)\forces the .DREND request to be placed in the specified program section at link time. Use this argument when the handler is built from several PSECTs.)

The generation of the termination table is dependent upon certain conditions. See (sst). (#)

(System Service\sst) (MULTIPAGE) (4\10\20\10) (Label\Address\Condition\Source Value) ($RLPTR:\.WORD 0 ($RELOC)\MMG$T=1\###2) ($MPPTR:\.WORD 0 ($MPPHY)\MMG$T=1\###2) ($GTBYT:\.WORD 0 ($GETBYT)\MMG$T=1\###2) ($PTBYT:\.WORD 0 ($PUTBYT)\MMG$T=1\###2) ($PTWRD:\.WORD 0 ($PUTWRD)\MMG$T=1\###2) ($ELPTR:\.WORD 0 ($ERLOG)\ERL$G=1\###1) ($TIMIT:\.WORD 0 ($TIMIO)\TIM$IT=1\###4) ($INPTR:\.WORD 0 ($INTEN)\always\###-) ($FKPTR:\.WORD 0 ($FORK)\always\###-) (.DREST) (Macro Expansion (Handlers Only)) (NEW REQUEST)

(.DREST macrodescription) The .DREST macro places device specific information in block 0 of a device handler. The device specific information includes: (UNNUMBERED) The device class The variants of a device class and additional information about some device classes Whether the device handler contains updatable internal data table(s) accessible by SPFUN 372 The type (device class) of the updatable internal data table Whether the device handler has a table in block 0 that contains bad-block replacement information How the handler can be installed, loaded, and mounted (indent\1\smallskip)(.DREST [CLASS=n][,MOD=n][,DATA=dptr] [,TYPE=n][,SIZE=n][,REPLACE=rptr][,MOD2=n][,STAT2=symb])

where:

(MULTIPAGE) (3\3\7) (\(CLASS)\is the device class: (#)
(MULTIPAGE) (3\6\4) ((Symbol\BOLD)\(Value\BOLD)\(Meaning\BOLD)) (DVC.CT\#6\Cassette tape) (DVC.DE\10\DECnet executive pseudohandler) (DVC.DK\#4\RT-11 file structured disk DD, DL, DM, DP, DT, DU, DW, DX, DY, DZ, LD, RK, VM) (DVC.DL\12\DECnet port line handler) (DVC.DP\11\DECnet protocol pseudohandler) (DVC.LP\#7\Printer LP, LS, SP) (DVC.MT\#5\Magtape MM, MS, MT, MU) (DVC.NI\13\Ethernet port handler NC, NQ, NU) (FIRST) (DVC.NL\#1\NULL handler AT and NL) (DVC.PS\14\Pseudohandler PI, SL, UB) (DVC.SB\20\Serialized input/output PC and generic) (DVC.SI\16\Serialized input generic) (DVC.SO\17\Serialized output generic) (DVC.TP\#3\Reserved) (DVC.TT\#2\Terminal class handler BA and TT) (DVC.UK\#0\Unknown device class ) (DVC.VT\15\Virtual terminal port handler XL, XC

Values in the range of 200 through 377 are reserved for the user.) ) (\(MOD)\indicates a variation or additional information about a device class.

(MULTIPAGE) (3\6\3) ((None)\##0\No variant or information default) (DVM.DM\##2\With CLASS=DVC.DK, indicates device has an extra error word prefixed to SPFUN 376 and SPFUN 377 buffers) (DVM.DX\##1\With CLASS=DVC.DK, indicates device is an RX01-compatible drive) (DVM.NS\##1\With CLASS=DVC.MT, indicates file handler has no file structure support) (DVM.NF\200\With all class devices, indicates handler can only be loaded and cannot be fetched. This bit is read-only and cannot be set using the .DREST macro. (This bit is set by the .DRPTR macro with the FETCH=*NO* argument.)) (DVM.NL\100\With all class devices, indicates handler cannot be loaded. Bit DVM.NL is set by the .DRPTR macro (LOAD=*NO*) argument.) ) (\(DATA)\specifies whether the handler has internal updatable data table(s) accessible by SPFUN 372. For the (DATA) argument, (dptr) can be:
(MULTIPAGE) (2\8) (0\Default. No internal data table) (dptr\is the file address of the internal data tables.) ) (\(TYPE)\specifies whether a device type classification exists for the internal data table(s). For the (TYPE) argument, (n) can be:
(MULTIPAGE) (2\8) (omitted\Default; no device type classified internal table) (rad\RAD50 device type classification) ) (\(SIZE)\Provides size of table (pointed to by (DATA\ITALIC))) (\(REPLACE)\specifies whether the handler has a table in block 0 that contains bad-block replacement geometry information. For the (REPLACE) argument, (rptr) can be:
(2\8) (0\Default; no bad-block replacement geometry table) (rptr\Is the file address of a bad-block replacement geometry table. ) ) (\(MOD2)\Currently only supports the LS handler:
(MULTIPAGE) (2\8) (DV2.V2\First .DRVTB table is followed by second display only.) ) (\(STAT2)\specifies the conditions under which the handler can be installed, loaded, and mounted. The (STAT2) argument, (symb) can be:
(MULTIPAGE) (2\8) (0\Default. .DREST specifies no restrictions.) (HS2.BI\Cannot be installed by the monitor .) (HS2.KI\Cannot be installed by the INSTALL command) (HS2.KL\Cannot be loaded by the LOAD command.) (HS2.KU\Cannot be unloaded by the UNLOAD command) (HS2.MO\Can be mounted by the MOUNT command and dismounted by the DISMOUNT command) )

Errors: None (.DRFIN) (Macro Expansion (Handlers Only))

(.DRFIN macrodescription) The .DRFIN macro generates the instructions for the jump back to the monitor at the end of the handler I/O completion section. The macro makes the pointer to the current queue element a global symbol, and it generates position-independent code for the jump to the monitor. When control passes to the monitor after the jump, the monitor releases the current queue element. (indent\1\smallskip)(.DRFIN name)

where:

(3\3\6) (\(name)\is the two-character device name)

Errors: None. (.DRINS) (Macro Expansion (Handlers Only))

(.DRINS macrodescription) The .DRINS macro defines the following: (UNNUMBERED) Symbols that contain the CSR addresses listed by RESORC (display CSRs) and the CSR checked by the INSTALL keyboard command. Separate entry points for installing the handler as a system device or as a data device. List of CSR addresses in block 0. (indent\1\smallskip)( .DRINS name,)

where:

(KEEP) (3\3\6) (\(name)\The two-letter device mnemonic.) (\(-- name)\Specifying CSR = *NO* to the .DRDEF macro prevents it from filling in INSCSR: (UNNUMBERED) Fill the value DISCSR Do not fill the value INSCSR ) (\(csr)\Specifies a symbolic CSR address for that device. If more than one display CSR exists, separate them with commas and enclose the list in angle brackets (<>). With multiple display CSRs (first CSR is offset 176, second CSR is offset 174...), you do not have to list the first CSR.) (.DRPTR) (Macro Expansion (Handlers Only))

(.DRPTR macrodescription) The .DRPTR macro places pointers to handler service routines. (indent\1\smallskip)( .DRPTR [FETCH=n][,RELEASE=n][,LOAD=n][,UNLOAD=n])

where:

(multipage) (3\3\6) (\(fetch)\specifies whether a handler service routine is called by the .FETCH programmed request. For the (fetch) argument, (n) can be:
(MULTIPAGE) (2\4) (0\Default. No .FETCH service routine.) (n\Address of the .FETCH service routine.) (*NO*\A literal string; the handler cannot be fetched.) ) (\(release)\specifies whether a handler service routine is called by the .RELEASE programmed request. For the (release) argument, (n) can be:
(MULTIPAGE) (2\4) (0\Default. No .RELEASE service routine.) (n\is the file address of the service routine to be called by .RELEASE.) ) (\(load)\specifies whether a handler service routine is called when the handler is loaded by bootstrap routine or LOAD command. For the (load) argument, (n) can be:
(MULTIPAGE) (2\4) (0\Default. No (load\ITALIC) service routine.) (n\Address of the (load\ITALIC) service routine.) (*NO*\Literal string. Handler cannot be loaded.) ) (\(unload)\specifies whether a handler service routine is called when the handler is unloaded by the UNLOAD command. For the (unload) argument, (n) can be:
(MULTIPAGE) (2\4) (0\Default. No (unload\ITALIC) service routine.) (n\Address of (unload\ITALIC) service routine.) )

Errors: None. (.DRSET) (Macro Expansion (Handlers Only))

(.DRSET macrodescription) The .DRSET macro sets up the option table for the SET command in block 0 of the device handler file. Use this macro once for each SET option that is used. (indent\1\smallskip)(.DRSET option,val,rtn[,mode])

where:

(3\3\6) (\(option)\is the name of the SET option, such as WIDTH or CR. Up to six alphanumeric characters. No embedded spaces or tabs) (\(val)\is a parameter that is passed to the routine in R3. Must not be zero.) (\(rtn)\is the name of the routine that modifies the code in block 1 of the handler.) (\(mode)\is an optional argument to indicate the type of SET parameter)

A (NO\ITALIC) indicates that a NO prefix is valid for the option. NUM indicates that a decimal numeric value is required. OCT indicates that an octal numeric value is required. Omitting this argument indicates that the option takes neither a NO prefix nor a numeric argument. NO may be combined with NUM or OCT.

Errors: None. (.DRSPF) (Macro Expansion (Handlers Only))

(.DRSPF macrodescription) The .DRSPF macro defines the special function codes supported by a handler. (indent\1\smallskip)( .DRSPF arg[,arg2][,TYPE=n])

where: (#)

(MULTIPAGE) (3\3\6) (\(arg)\can be specified in two ways: the (list\ITALIC) method and the (extension table) method). (\(arg2)\is a list of special function codes. Only use the (arg2) argument to specify special function codes in an extension table, that is, when the (arg) argument is a minus sign (-). See the discussion of the (arg\italic) argument in the extension table method description.)

(\(TYPE=n)\Type of special function or functions that are coupled with this parameter.)(SFP) shows the valid symbols, bit pattern for bits 8, 9, and 10, and the meaning for the (n) argument:)

(Special Functions for the TYPE=n Parameter\sfp) (MULTIPAGE) (3\8\10\) (Symbol\Bit\Meaning) (O\000\The letter O (default) indicates unknown function code.) (R\001\A read operation special function code. Any operation that obtains data from a device is defined here as a read operation.) (W\010\A write operation special function code. Any operation that directs data to a device is defined here as a write operation.) (M\011\A motion operation special function code. Any operation whose sole purpose is to cause the device to move is defined here as a motion operation.) (T\100\A read/write operation special function code. The sign of the bit for the special function word count (wcnt) parameter determines if the operation is a read or a write.) (\101-111\Reserved for Digital.) (List Method)

(Arg) can be a list of one or more special function codes. That list is located in block 0 of the handler at locations 22 through 27.

(Extension Table Method)

(Arg) can be a pointer to an extension table address. Do not place the extension table in block 0 of the handler.

The pointer to the extension table address must be prefixed by a plus sign (+). The extension table address must have the high bit cleared.

The extension table contains one or more .DRSPF macros. The (arg) argument for each .DRSPF macro is a minus sign (-).

Errors: None. (.DRTAB) (Macro Expansion (Handlers Only)) (NEW REQUEST)

(.DRTAB macro description) The .DRTAB macro establishes the file address of a list of handler data tables for Digital use only. A similar macro, .DRUSE, is available for user-defined handler data tables.

The relationship between .DRTAB and .DREST macros is: (UNNUMBERED) When a distributed handler contains only one handler data table, .DREST is used to describe that table. When a distributed handler contains more than one handler data table, the .DRTAB macro is used to describe all those tables. (indent\1\smallskip)(.DRTAB type,addr,size)

where:

(KEEP) (3\3\6) (\(type)\is the handler data table format name in one to three RAD50 characters) (\(addr)\is the file address) (\(size)\is the size in bytes)
(JUST BOX, NO OTHER TEXT) (POSTSCRIPT\fig2_14_1.EPS\6)

.DRTAB is invoked once for each handler data table. Each invocation of .DRTAB creates a 3-word descriptor containing the values specified for the (type, addr,\ITALIC) and (size\ITALIC) arguments. A call to .DRTAB with no arguments specifies the end of that list of handler data table descriptors.

.DRTAB places the file address of the list of handler data table descriptors in block 0 of the handler. The list of descriptors and the data tables themselves are not located in block 0. When first invoked, .DRTAB sets up locations 70 through 74 in block 0. with the following contents: ((Location\BOLD)\(Location After .DRTAB Is Invoked\BOLD)) (###70\-1 (indicates use of .DRTAB)) (###72\Pointer to list of handler data table descriptors) (###74\Size in bytes of total list of handler data table descriptors) (.DRUSE) (Macro Expansion (Handlers Only)) (NEW REQUEST)

(.DRUSE macrodescription) The .DRUSE macro establishes the file address of a list of user-defined handler data tables. (indent\1\smallskip)(.DRUSE type,addr,size)

where:

(KEEP) (3\3\6) (\(type)\is a handler data table format name in one to three RAD50 characters) (\(addr)\is the file address of the handler data table) (\(size)\is the size in bytes of the handler data table)
(JUST BOX, NO TEXT) (POSTSCRIPT\FIG2_14_2.EPS\7)

Invoke .DRUSE once for each user-defined handler data table in your handler. Each invocation of .DRUSE creates a 3-word descriptor containing the values you specified for the (type, addr\ITALIC), and (size\ITALIC) arguments. Call .DRUSE with (no\ITALIC) arguments to indicate the end of the list of descriptors.

.DRUSE places the file address of the list of handler data table descriptors in block 0 of your handler. Do not place the list of descriptors or the data tables themselves in block 0 of your handler. When you first invoke .DRUSE, it sets up location 106 in block 0 with the following contents:

(#)

(3\3\12) (\(Location\BOLD)\(Contents After .DRUSE Is Invoked\BOLD)) (\###106\Pointer to list of handler data table descriptors)

Errors: None. (.DRVTB) (Macro Expansion (Handlers Only))

(.DRVTB macrodescription) The .DRVTB macro sets up a table of three-word entries for each vector of a multivector device. The table entries contain the vector location, interrupt entry point, and processor status word. You must use this macro once for each device vector. (indent\1\smallskip)(.DRVTB name,vec,int[,ps])

where:

(KEEP) (3\3\6) (\(name)\is the two-character device name. This argument must be blank except for the first-time use of .DRVTB) (\(vec)\is the location of the vector, and must be between 0 and 474) (\(int)\is the symbolic name of the interrupt handling routine. It must appear elsewhere in the handler code. It generally takes the form ddINT, where dd represents the two-character device name) (\(ps)\is an optional value that specifies the low-order four bits of the new Processor Status Word in the interrupt vector. This argument defaults to zero if omitted. The priority bits of the PS are set to 7, even if you omit this argument)

Errors: None. (.DSTAT) (EMT 342)

(.DSTAT programmed requestEMT 342) (.DSTAT programmed requestdescription) This .DSTAT request obtains information about a particular device. (indent\1\smallskip)(.DSTAT retspc,dnam)

where:

(3\3\6) (\(retspc)\is the address of a four-word block that stores the status information) (\(dnam)\is the address of a word containing the Radix-50 device name.)

.DSTAT looks for the device specified by (dnam\ITALIC) and, if successful, returns four words of status starting at the address specified by (retspc\ITALIC):

(2\6) ((Word 1\BOLD)\(Status Word\BOLD)) (Bits 0-7:\The low-order byte contains a numeric code (.DEVDF) that is the device identifier value for the device in the system. Value is the numeric (code\ITALIC) parameter returned from the .DRDEF request.) (Bits 8-15:\The low-order byte contains value for (stat\ITALIC) (.DSTDF). Values use symbols: (#) FILST$ = 100000###HNDLR$ = 4000 RONLY$ = 40000###SPFUN$ = 2000 WONLY$ = 20000###ABTIO$ = 1000 SPECL$ = 10000###VARSZ$ = 400 ) ((Word 2\BOLD)\ (Handler Size\BOLD)

The size of the device handler in bytes.) ((Word 3\BOLD)\(Load Address +6\BOLD)

(Non-zero) handler is in memory. Address is handler load address +6. (Zero) implies that it must be fetched before it can be used.) ((Word 4\BOLD)\(Device Size\BOLD)

The size of the device (in 256-word blocks) for block-replaceable devices; 0 for sequential-access devices, the smallest-sized volume for variable-sized devices. The last block on the device is the device size -1.)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Device not found in tables.) (.ELAW) (Mapping Only) (EMT 375, Code 36, Subcode 3)

(.ELAW programmed requestEMT 375, Code 36) (.ELAW programmed requestdescription) The .ELAW request eliminates a virtual address window. An implicit unmapping of the window occurs when its definition block is eliminated. (indent\1\smallskip)(.ELAW area,addr)

where:

(KEEP) (3\3\6) (\(area)\is the address of a two-word EMT argument block) (\(addr)\is the address of the window definition block for the window to be eliminated)
(POSTSCRIPT\fig2_15.EPS\4)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##3\An invalid window identifier was specified.) (\#17\Inactive mode or space was specified.) (.ELRG) (Mapping Only) (EMT 375, Code 36, Subcode 1)

(.ELRG programmed requestEMT 375, Code 36) (.ELRG programmed requestdescription) The .ELRG request directs the monitor to eliminate a dynamic region in physical memory and return it to the free list where it can be used by other jobs. (indent\1\smallskip)(.ELRG area,addr)

where:

(KEEP) (3\3\6) (\(area)\is the address of a two-word EMT argument block) (\(addr)\is the address of the region definition block for the region to be eliminated. Windows mapped to this region are unmapped. The static region cannot be eliminated)
(POSTSCRIPT\fig2_16.EPS\4)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##2\An invalid region identifier was specified.) (\#14\Global region in use.) (\#11\Deallocation failure.)

Example: Refer to example in the (SIM_BOOK). (.ENTER) (EMT 375, Code 2) (CHANGED)

(.ENTER programmed requestEMT 375, Code 2) (.ENTER programmed requestdescription) The .ENTER request allocates space on the specified device and creates a tentative entry with the name of the specified file. The channel number specified is associated with the file. (indent\1\smallskip)(.ENTER area,chan,dblk,len[,seqnum])

where:

(MULTIPAGE) (3\3\6) (\(area)\is the address of a four-word EMT argument block) (\(chan)\is a channel number.) (\(dblk)\is the address of a Radix-50 descriptor of the file.)

If the file name is not provided in (dblk\ITALIC), it is a non-file-structured .LOOKUP which connects the channel to the entire device, starting at block 0.) (\(len)\is the file size specification.) (\(seqnum)\is a parameter for magtape. See (DEV_BOOK).)

(POSTSCRIPT\fig2_16_1.EPS\8)

On return from this call, R0 contains the size of the area actually allocated for use. Or zero (0) for a non-RT--11 device or non-files-structured .ENTER.

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Channel is not available.) (\##1\In a fixed-length request, no space greater than or equal to (m\ITALIC) was found; or the device or the directory was found to be full.) (\##2\Nonshareable device is already in use.) (\##3\A file by that name already exists and is protected. A new file was not opened.) (\##4\File sequence number was not found.) (\##5\File sequence number is invalid or file name is null.) (\##6\Nonexistent or otherwise invalid special-directory device unit. The handler determines the validity of the device unit.) (.EXIT) (EMT 350) (indent\1\smallskip)(.EXIT)

(.EXIT programmed requestEMT 350) (.EXIT programmed requestdescription) The .EXIT request causes the user program to terminate. When used from a background job, .EXIT causes KMON to run in the background area, prior to running KMON; all outstanding mark-time requests are canceled; and I/O requests and/or completion routines pending for that job are allowed to complete.

If R0 = 0 when the .EXIT is done, an implicit .HRESET is executed when KMON is entered, disabling the subsequent use of REENTER, START or CLOSE. See .HRESET.

The .EXIT request enables a user program to pass command lines to KMON in the chain information area (locations 500-777(8)) for execution after the job exits. This is performed under the following conditions: (UNNUMBERED) The word (not byte) location 510 must contain the total number of bytes of command lines to be passed to KMON. The command lines are stored, beginning at location 512. The lines must be .ASCIZ strings with no embedded carriage return or line feed.

The user program must set SPXIT$ or CHNIF$ in the Job Status Word before doing an .EXIT, which must be issued with R0 = 0. (.FETCH) (EMT 343)

(.FETCH programmed requestEMT 343) (.FETCH programmed requestdescription) The .FETCH request loads device handlers into memory from the system device. (indent\1\smallskip)(.FETCH addr,dnam)

where:

(KEEP) (3\3\6) (\(addr)\is the starting address at which the device handler is to be LOADed) (\(dnam)\is the pointer to the Radix-50 device name)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\The device name specified is not installed and there is no logical name that matches the name and the *catch-all has not been assigned.) (.FORK) (Macro Expansion)

(.FORK macrodescription) The .FORK call is used when access to a shared resource must be serialized or when a lengthy but non-time-critical section of code must be executed. .FORK issues a subroutine call to the monitor and does not use an EMT instruction request. (indent\1\smallskip)(.FORK fkblk)

where:

(keep) (3\3\6) (\(fkblk)\is a four-word block of memory allocated within the driver)

Errors: None.

The .FORK macro expands as follows: .TITLE EFORK1.MAC .FORK fkblk JSR R5,@$FKPTR .WORD fkblk-.

The .FORK call must be preceded by an .INTEN call. Your program must not have left any information on the stack between the .INTEN and the .FORK calls. The contents of registers R4 and R5 are preserved through the call and, on return, registers R0 through R3 are available.

If you are using a .FORK call from a device handler, it is assumed that you used .DREND provided for handlers. The .DREND macro allocates a word labeled $FKPTR.

If you want to use the .FORK macro in an in-line interrupt service routine rather than in a device handler, you must set up $FKPTR. (.FPROT) (EMT 375, Code 43) (CHANGED)

(.FPROT programmed requestEMT 375, CODE 43) (.FPROT programmed requestdescription) The .FPROT programmed request sets or removes file protection on individual RT-11 files. A file marked as protected cannot be deleted by .CLOSE, .DELETE, .ENTER, or .RENAME. (indent\1\smallskip)( .FPROT area, chan, dblk [,prot])

where:

(KEEP) (3\3\6) (\(area)\is the address of a three-word EMT argument block) (\(chan)\is a channel number.) (\(dblk)\is the address of a four-word block containing the filespec in Radix-50.) (\(prot)\ #1 (or omitted) to protect. #0 to unprotect.)
(POSTSCRIPT\FIG2_17.EPS\6)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Channel is not available.) (\##1\File not found or not a file-structured device. ) (\##2\Invalid operation.) (\##3\Invalid value for PROT.)

.FPROT returns the previous file status word in R0: (UNNUMBERED) If the high bit in R0 is off, the file was not previously protected. If the high bit in R0 is on, the file was previously protected. (.GCMAP) (Fully Mapped Only) (EMT 375, Code 46, Subcode 1)

(.GCMAP macro) (.GCMAPdescription) Issue the .GCMAP request to return the CMAP status. The value is returned in R0. (indent\1\smallskip)(.GCMAP area,CODE=strg)

where:

(KEEP) (3\3\10) (\(area)\is the address of a two-word EMT request block area) (\(CODE=strg)\specifies (strg\ITALIC) as either "SET" (default), "NOSET", "SP" or "STACK" )

Errors: None. (.GFDAT) (NEW REQUEST) (EMT 375, Code 44)

(.GFDAT programmed requestEMT 375, Code 44) (.GFDAT programmed requestdescription) The .GFDAT programmed request returns in R0 the creation date from a file's directory entry.) (indent\1\smallskip)(.GFDAT area,chan,dblk)

where:

(KEEP) (3\3\6) (\(area)\is the address of a 4-word EMT argument block) (\(chan)\is a channel number.) (\(dblk)\is the address of a 4-word block containing a device and file specification in Radix-50.)
(POSTSCRIPT\figrn_3.EPS\9)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Channel is not available) (\##1\File not found, or not a file-structured device.) (\##2\Invalid operation) (\##3\Invalid EMT request block) (.GFINF) (NEW REQUEST) (EMT 375, Code 44)

(.GFINF programmed requestEMT 375, Code 44) (.GFINF programmed requestdescription) The .GFINF programmed request returns in R0 the contents of the directory entry offset you specify. (indent\1\smallskip)(.GFINF area,chan,dblk,offse)

where:

(KEEP) (3\3\6) (\(area)\is the address of a 4-word EMT argument block) (\(chan)\is a channel number.) (\(dblk)\is the address of a 4-word block containing a device and file specification in Radix-50.) (\(offse)\is the octal byte offset for the directory entry word you want. The offset must be even.)
(POSTSCRIPT\FIGRN_4.EPS\9)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Channel is not available) (\##1\File not found, or not a file-structured device.) (\##2\Invalid operation) (\##3\Invalid offset value)

(.GFSTA) (EMT 375, Code 44)

(.GFSTA programmed requestEMT 375, Code 44) (.GFSTA programmed requestdescription) The .GFSTA programmed request returns in R0 the status information from a file's directory entry (E.STAT word). (indent\1\smallskip)(.GFSTA area,chan,dblk)

where:

(KEEP) (3\3\6) (\(area)\is the address of a 4-word EMT argument block) (\(chan)\is a channel number.) (\(dblk)\is the address of a 4-word block containing a device and file specification in Radix-50.)
(POSTSCRIPT\figrn_5.EPS\9)

Errors: (#)

(2\10) ((Code\BOLD)\(Explanation\BOLD)) (##0\Channel is not available) (##1\File not found, or not a file-structured device.) (##2\Invalid operation) (##3\Invalid offset value) (.GMCX) (Mapping Only) (EMT 375, Code 36, Subcode 6)

(.GMCX programmed requestEMT 375, Code 36) (.GMCX programmed requestdescription) The GMCX request returns the mapping status of a specified window in the window definition block. (indent\1\smallskip)( .GMCX area, [,addr])

where:

(KEEP) (3\3\6) (\(area)\is the address of a two-word EMT argument block) (\(addr)\is the address of the window definition block where the specified window's status is returned)
(POSTSCRIPT\FIG2_18.EPS\4)

The .GMCX request modifies the following fields of the window definition block:

(KEEP) (3\3\6) (\(W.NAPR)\base page address register of the window) (\(W.NBAS)\window virtual address) (\(W.NSIZ)\window size in 32-word blocks) (\(W.RID)\region identifier)

If the window whose status is requested is mapped to a region, the .GMCX request loads the following additional fields in the window definition block; otherwise, these locations are zeroed:

(KEEP) (3\3\6) (\(W.NOFF)\offset value into the region) (\(W.NLEN)\length of the mapped window) (\(W.NSTS)\state of the WS.MAP bit is set to 1 in the window status word)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##3\An invalid window identifier was specified) (\#17\Inactive space or mode was specified) (.GTIM) (EMT 375, Code 21)

(.GTIM programmed requestEMT 375, Code 21) (.GTIM programmed requestdescription) .GTIM accesses the current time of day. The time is returned in two words and given in terms of clock ticks past midnight. (indent\1\smallskip)( .GTIM area, addr)

where:

(KEEP) (3\3\6) (\(area)\is the address of a two-word EMT argument block) (\(addr)\is the address of the two-word area where the time is to be returned)
(POSTSCRIPT\FIG2_19.EPS\4)

The high-order time is returned in the first word; the low-order time is returned in the second word. Your program must perform the conversion from clock ticks to hours, minutes, and seconds.

Errors: None. (.GTJB) (EMT 375, Code 20, Subcode 1)

(.GTJB programmed requestEMT 375, Code 20) (.GTJB programmed requestdescription) The .GTJB request returns information about a job in the system.

(indent\1\smallskip)(.GTJB area,addr[,jobblk])

where:

(MULTIPAGE) (3\3\4) (\(area)\is the address of a three-word EMT argument block) (\(addr)\is the address of an eight-word or twelve-word block reply area. (The (addr\ITALIC) values are listed below.)) (\(jobblk)\is a pointer to a three-word ASCII logical job name for which data are being requested. If the (jobblk) argument to the .GTJB request is: (UNNUMBERED) Between 0 and 16, it is interpreted as a job number. 'ME' or equals -1, the current job. Omitted or equals -3 only eight words of information are returned. )

(Addr\ITALIC) Values: (#)

(2\8) ((Word Offset\BOLD)\(Contents\BOLD)) ((Word 0)J.BNUM\ Job Number: (UNNUMBERED) System Job Monitors: (simple) Background job is 0 System jobs are 2--14 Foreground job is 16 Non-System Monitors: (simple) Background job is 0 Foreground job is 2 Single Job Monitor: (simple) Job number is 0 ) ((Word 1)J.BHLM\ High-memory limit of job partition (highest location available to a job in low memory if the job executes a privileged .SETTOP##-2 request)) ((Word 2)J.BLLM\ Low-memory limit of job partition (first location)) ((Word 3)J.BCHN\ Pointer to I/O channel space) ((Word 4)J.BIMP\ Address of job's impure area in monitors) ((Word 5)J.BLUN\Low byte: unit number of job's console terminal; 0 when multiterminal feature is not used. High byte: reserved for future use) ((Word 6)J.BVHI\ Virtual high limit for a job created with the linker /V option (XM only; 0 when not running under the mapped monitor or if /V option is not used)) ((Word 7--8)\ Reserved for future use) ((Word 9--11)J.BLNM\ ASCII logical job name (system job monitors only; contains nulls for non-system job monitors.))

Word 3 normally indicates an address within the job's impure area. However, when a .CDFN is executed, the start of the I/O channel area changes to the user-specified area.

In an environment without the system job feature, you can get another job's status only by specifying its job number (0 or 2).

(POSTSCRIPT\FIG2_20.EPS\6)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\No such job currently running.) (.GTLIN) (EMT 345)

(.GTLIN programmed requestEMT 345) (.GTLIN programmed requestdescription) The .GTLIN request collects a line of input from the terminal or an indirect command file, if one is active. (indent\1\smallskip)(.GTLIN linbuf[,prompt][,type])

where:

(multipage) (3\3\6) (\(linbuf)\is the address of the buffer to receive the input line. This area must be at least 81 bytes in length. The input line is stored in this area and is terminated with a zero byte) (\(prompt)\is the address of a prompt string to be printed on the console terminal. Usually, the string ends with an octal 200 byte to suppress printing the RETURN at the end of the prompt) (\(type)\is an optional argument which, if specified, forces .GTLIN to take its input from the terminal rather than from an indirect file. (blank=file; nonblank=terminal; 'type,' not 'term'))

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Invalid command line (if the line is too long)) (.GVAL) (.GVAL: EMT 375, Code 34, Subcode 0)

The .GVAL request returns in R0 the contents of a monitor fixed offset. (.GVAL programmed requestEMT 375, Code 34) (.GVAL programmed requestdescription) (indent\1\smallskip)( .GVAL area, offset)

(multipage) (3\3\12) (\(area)\is the address of a two-word EMT argument block) (\(offset)\is the displacement from the beginning of the resident monitor to the word to be returned in R0)
(POSTSCRIPT\FIG2_21.EPS\4)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\The offset requested is beyond the limits of the resident monitor.) (\##1\Odd address.) (.HERR) (.HERR: EMT 374, Code 5)

(.HERR programmed requestEMT 374, Code 5) (.HERR programmed requestdescription) .HERR turns off user error interception. It allows the system to abort the job on fatal errors and generate an error message. (.HERR is the default case.) (indent\1\smallskip)(.HERR)

(POSTSCRIPT\FIG2_23.EPS\2)

Errors:

The .HERR and .SERR programmed requests return a code value in R0 that lets a subroutine implicitly control error condition handling: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\#0\Previous state of error condition handling .HERR/.SERR flag was .HERR) (\#1\Previous state of error condition handling .HERR/.SERR flag was .SERR) (.HRESET) (EMT 357)

(.HRESET programmed requestEMT 357) (.HRESET programmed requestdescription) (.HRESET programmed requestSee also .SRESET) The .HRESET request stops all I/O transfers in progress for the issuing job, and then performs an .SRESET request. (indent\1\smallskip)(.HRESET)

Errors: None. (.INTEN) (Macro Expansion)

(.INTEN macro description) Interrupt service routines use .INTEN: (UNNUMBERED) To notify the monitor that an interrupt has occurred and to switch to system state. To set the processor priority to the correct value. To save the contents of R4 and R5 before returning to the Interrupt Service Routine. Any other registers must be saved by the routine. (indent\1\smallskip)(.INTEN prio[,pic])

where:

(KEEP) (3\3\6) (\(prio)\is the processor priority at which the interrupt routine is to run, normally the priority at which the device requests an interrupt) (\(pic)\is an optional argument that should be non-blank if the interrupt routine is written as a PIC (position-independent code) routine. Any interrupt routine written as a device handler must be a PIC routine and must specify this argument)

Errors: None. (.LOCK) (EMT 346)

(.LOCK programmed requestEMT 346) (.LOCK programmed requestdescription)

The .LOCK request keeps the USR in memory to provide any of its services required by your program. A .LOCK inhibits another job from using the USR. (indent\1\smallskip)(.LOCK)

Errors: None. (.LOOKUP) (EMT 375, Code 1)

(.LOOKUP programmed requestEMT 375, Code 1) (.LOOKUP programmed requestdescription) A .LOOKUP request can be used in two different ways: (UNNUMBERED) As a standard .LOOKUP file under all monitors. As an MQ job .LOOKUP under system job monitors. (Standard .LOOKUP) (indent\1\smallskip)(.LOOKUP area,chan,dblk[,seqnum])

where:

(KEEP) (3\3\6) (\(area)\is the address of a three-word EMT argument block) (\(chan)\is a channel number in the range 0-376(8)) (\(dblk)\is the address of a four-word Radix-50 descriptor of the file or device to be operated upon) (\(seqnum)\is a file number for magtape.)

On return from the .LOOKUP, R0 contains the length in blocks of the file just opened. On a return from a .LOOKUP for a non-directory, file-structured device (typically magtape), R0 contains 0 to indicate the unknown length.

(POSTSCRIPT\FIG2_24.EPS\6)

Errors: (#)

(3\3\5) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Channel already open.) (\##1\File indicated was not found on the device.) (\##2\File already open on a nonshareable device; for example, magtape.) (\##5\Argument is invalid; for example, magtape file sequence number.) (\##6\Error code is returned in $ERRBY if the request is issued to a nonexistent or otherwise invalid special-directory device unit. The handler determines the validity of the device unit.)

(System Job Lookup) (indent\1\smallskip)(.LOOKUP area,chan,jobdes)

where:

(MULTIPAGE) (3\3\6) (\(area)\is the address of a two-word EMT argument block) (\(chan)\is the number of the channel to open) (\(jobdes)\is the address of a four-word descriptor of the job to which messages will be sent or received. A (logical-job-name\ITALIC) can be from one to six characters long. It must be padded with nulls if less than six characters long. If a (logical-job-name\ITALIC) is all nulls, the channel will be opened for .READ requests only and will accept messages from any job.)
(POSTSCRIPT\FIG2_25.EPS\4)

The .LOOKUP request associates a channel with a specified job for the purposes of sending inter-task messages. R0 is undefined on return from the .LOOKUP.

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Channel not available.) (\##1\No such job.) (.MAP) (Mapping Only) (.MAP: EMT 375, Code 36, Subcode 4)

(.MAP programmed requestEMT 375, Code 36) (.MAP programmed requestdescription) The .MAP request maps a previously defined address window. (indent\1\smallskip)(.MAP area[,addr])

where:

(KEEP) (3\3\6) (\(area)\is the address of a two-word EMT argument block) (\(addr)\is the address of the window definition block .)
(POSTSCRIPT\FIG2_26.EPS\4)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##2\An invalid region identifier was specified.) (\##3\An invalid window identifier was specified.) (\##4\The specified window was not mapped because the offset is beyond the end of the region, the window is larger than the region or extends beyond the bounds of the region.) (.MFPS) (Macro Expansion)

(.MFPS macrodescription) (.MFPS macrodescription) The .MFPS call allows processor-independent user access to the processor status word. The contents of the registers are preserved across either call. The .MFPS call reads the priority bits only. Condition codes are destroyed during the call and must be directly accessed (using conditional branch instructions) if they are to be read in a processor-independent manner. (indent\1\smallskip)(.MFPS addr)

where:

(KEEP) (3\3\6) (\(addr)\is the address into which the processor status is to be stored; if addr is not present, the value is returned on the stack. Note that only the priority bits are significant)

Errors: None. (.MRKT) (Timer) (EMT 375, Code 22) (.MRKT programmed requestEMT 375, Code 22) (.MRKT programmed requestdescription)

The .MRKT request schedules a completion routine to be entered after a specified time interval has elapsed. (indent\1\smallskip)(.MRKT area,time,crtn,id[,CMODE=strg])

where: (#)

(multipage) (3\3\12) (\(area)\is the address of a four-word EMT argument block) (\(time)\is the address of a two word-block containing the time interval (high order first, low order second), specified as a number of clock ticks) (\(crtn)\is the entry point of a completion routine) (\(id)\is a non-zero number or memory address used to identify the particular request to the completion routine. The number must be within the range 1 -- 176777; the rest are reserved for system use. The number need not be unique On entry to the completion routine, the (id\ITALIC) number is in R0) (\(CMODE=strg)\Default is (U\ITALIC) for User mode.

Specify (S\ITALIC) for Supervisor mode. Selection valid only for fully mapped monitors. This action sets the low bit of the routine argument to 1.)

(POSTSCRIPT\FIG2_27_1.EPS\7)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\No queue element was available.) (.MSDS) (Fully Mapped) (EMT 375, Code 46, Subcode 0)

(.MSDS macrodescription) The .MSDS sets the lockstep of User data space and Supervisor data space and returns the old status in R0. This value is not implemented in unmapped monitors. (indent\1\smallskip)(.MSDS area,value[,CODE=strg])

where:

(KEEP) (3\3\10) (\(area)\is the address of a two-word EMT request block area) (\(value)\is the setting value desired.) (\(CODE=strg)\specifies (strg\ITALIC) as either "SET" (default), "NOSET", "SP" or "STACK" )

Errors: None. (.MTATCH) (Multiterminal) (EMT 375, Code 37, Subcode 5)

(.MTATCH programmed requestEMT 375, Code 37) (.MTATCH programmed requestdescription) The .MTATCH request attaches a terminal for exclusive use by the requesting job. (indent\1\smallskip)(.MTATCH area,addr,unit[,AMODE=strg])

where: (#)

(KEEP) (3\3\10) (\(area)\is the address of a three-word EMT argument block) (\(addr)\is the optional address of an asynchronous terminal status word, or it must be #0. (The asynchronous terminal status word is a system option you can select during the system generation process.)) (\(unit)\is the logical unit number of the terminal (The logical unit number is the number assigned by the system to a particular physical unit during the system generation process.)) (\(AMODE=strg)\Default is (U\ITALIC) for User mode. Specifying (S) for Supervisor mode sets low bit of the AST argument to 1. Note that Supervisor is applicable only under fully mapped monitors.)
(POSTSCRIPT\FIG2_28.EPS\5)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##2\Nonexistent logical unit number.) (\##3\Invalid request; function code out of range.) (\##4\Unit attached by another job (job number returned in R0).) (\##5\In mapped monitors, the optional status word address is not in valid user virtual address space.) (\##6\Unit attached by a handler (Radix--50 handler name returned in R0)) (.MTDTCH) (Multiterminal) (EMT 375, Code 37, Subcode 6)

(.MTDTCH programmed requestEMT 375, Code 37) (.MTDTCH programmed requestdescription) The request detaches a terminal from one job and makes it available for other jobs. (indent\1\smallskip)(.MTDTCH area,unit)

where:

(KEEP) (3\3\6) (\(area)\is the address of a three-word EMT argument block) (\(unit)\is the logical unit number (lun) of the terminal to be detached)
(POSTSCRIPT\FIG2_29.EPS\6)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##1\Unit not attached.) (\##2\Nonexistent logical unit number.) (\##3\Function code out of range.) (.MTGET) (Multiterminal) (EMT 375, Code 37, Subcode 1)

(.MTGET programmed requestEMT 375, Code 37) (.MTGET programmed requestdescription) .MTGET returns terminal status. (indent\1\smallskip)(.MTGET area,addr,unit)

where:

(KEEP) (3\3\6) (\(area)\is the address of a three-word EMT argument block.) (\(addr)\is the address of a four-word status block where the status information is returned. If the low order bit is zero, the status block is in User space. If the low order bit is one one, the status block is in Supervisor space.) (\(unit)\is the logical unit number ((lun\ITALIC)) of the terminal whose status is requested. A unit need not be attached to the job issuing a .MTGET request. If the unit is attached to another job (error code 4), the terminal status will be returned and the job number will be contained in R0. For all other error conditions, the contents of R0 are undefined.)
(POSTSCRIPT\FIG2_30.EPS\6)

The status block has the following structure:

(POSTSCRIPT\FIG2_31.EPS\8)

The following information is contained in the status block: (#)

(2\10) ((Byte Offset\BOLD)\(Description\BOLD)) (#0#(M.TSTS)\Terminal configuration word 1) (#2#(M.TST2)\Terminal configuration word 2) (#4#(M.TFIL)\Character requiring fillers) (#5#(M.FCNT)\Number of fillers) (#6#(M.TWID)\Carriage width) (#7#(M.TSTW)\Terminal status byte (high byte of TSTDF))

Note that if an error occurs, and the error code is not 1 or 4, the status block will not have been modified. (Terminal Configuration Word 1 - M.TSTS)

The bit definitions for terminal configuration word 1 (M.TSTS) are as follows:

(#)

(3\6\5) ((Name\BOLD)\(Value\BOLD)\(Meaning\BOLD)) (HWTAB$\###1\Terminal has hardware tab) (CRLF$\###2\Output RETURN when carriage width exceeded) (FORM$\###4\Terminal has hardware form feed) (FBTTY$\##10\Process CTRL/F and CTRL/B (and CTRL/X if system job) as special command characters (If clear, CTRL/F and CTRL/B are treated as ordinary characters.)) (TCBIT$\#100\Inhibit TT wait (similar to bit 6 in the Job Status Word)) (PAGE$\#200\Enable CTRL/S-CTRL/Q processing) (\7400\Line speed (baud rate) mask. The terminal baud rate values for DZ11/DZV11 and DH for bits 11 -- 8 are as follows:) (#)
(3\10\10\10) ( (Mask (M.TSTS bits 11-8)\BOLD) \(DZ Baud Rate\BOLD)\(DH Baud Rate\BOLD)) (0000\##50##\###50##) (0400\##75##\###75##) (1000\#110##\##110##) (1400\#134.5\##134.5) (2000\#150##\##150##) (2400\#300##\##300##) (3000\#600##\##600##) (3400\1200##\#1200##) (4000\1800##\#1800##) (4400\2000##\#2000##) (5000\2400##\#2400##) (5400\3600##\38400##) (6000\4800##\#4800##) (6400\7200##\#7200##) (7000\9600##\#9600##) (7400\###n/a\19200##) (#)
(3\8\8) ((Name\BOLD)\(Value\BOLD)\ (Meaning\BOLD)) (TTSPC$\#10000\Character mode input (same as bit 12 in Job Status Word)) (REMOT$\#20000\Terminal is remote (Read-only bit)) (TTLC$\#40000\Lowercase to uppercase conversion disabled) (BKSP$\100000\Use backspace for rubout (video type display)) (Terminal Configuration Word 2 - M.TST2)

The bit definitions for terminal configuration word 2 (M.TST2) are as follows: (#)

(3\8\5) ((Name\BOLD)\(Value\BOLD)\(Meaning\BOLD)) (CHRLN$\#####3\Character length, which can be 5(00), 6(01), 7(10), or 8(11) bits (DZ only)) (USTOP$\#####4\Unit stop, which sends one stop bit when clear, two stop bits when set (DZ only)) (PAREN$\####10\Parity enable (DZ only)) (ODDPR$\####20\Odd parity when set; even parity when clear) (\###140\Reserved) (RPALL$\###200\Read pass all) (\#77400\Reserved) (WPALL$\100000\Write pass all) (Terminal Status Byte - M.TST2)

The bit definitions for terminal status byte (M.TSTW) are as follows: (#)

(3\10\10) ((Name\BOLD)\(Value\BOLD)\(Meaning\BOLD)) (FILL$\#####1\Fill sequence in progress) (CTRLU$\#####2\CTRL/U in progress) (DTACH$\####20\Detach in progress) (WRWT$\####40\>>>Meaning???) (INEXP$\###100\Output interrupt is expected) (PAGE$\###200\Output is suspended by XOFF) (SHARE$\##2000\Terminal is shared console) (HNGUP$\##4000\Terminal has hung up) (DZ11$\#10000\Terminal interface is DZ11) (CTRLC$\#40000\Double CTRL/C was entered (The .MTGET request resets this bit in the terminal control block if it is on.)) (CONSL$\100000\Terminal is acting as console)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##1\Invalid unit number, unit not attached.) (\##2\Nonexistent logical unit number.) (\##3\Invalid request; function code out of range.) (\##4\Unit attached by another job (job number returned in R0).) (\##5\In the XM monitor, the status block address is not in valid user virtual address space.) (\##6\Unit attached by a handler (Radix--50 handler name returned in R0)) (.MTIN) (Multiterminal) (EMT 375, Code 37, Subcode 2)

(.MTIN programmed requestEMT 375, Code 37) (.MTIN programmed requestdescription) The .MTIN request moves one or more characters from the input ring buffer to a buffer you specify. The terminal must be attached. An updated user buffer address is returned in R0 if the request is successful. The .MTIN request has the following form: (indent\1\smallskip)(.MTIN area,addr,unit[,chrcnt])

where:

(KEEP) (3\3\6) (\(area)\is the address of a three-word EMT argument block.) (\(addr)\is the byte address of the input buffer.) (\(unit)\is the logical unit number.) (\(chrcnt)\is a character count indicating the number of characters to transfer. The valid range is from 0 to 255(decimal). A character count of zero means one character)
(POSTSCRIPT\FIG2_32.EPS\6)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\No input available. TCBIT$ is set in the Job Status Word (for the system console) or in M.TSTS by the .MTSET request.) (\##1\Unit not attached.) (\##2\Nonexistent logical unit number.) (\##3\Function code out of range.) (\##5\In the mapped monitor, the user buffer address is not in valid user virtual address space.) (.MTOUT) (Multiterminal) (EMT 375, Code 37, Subcode 3)

(.MTOUT programmed requestEMT 375, Code 37) (.MTOUT programmed requestdescription) The .MTOUT request places characters into the user buffer. (indent\1\smallskip)(.MTOUT area,addr,unit[,chrcnt])

where:

(KEEP) (3\3\6) (\(area)\is the address of a three-word EMT argument block.) (\(addr)\is the address of the output buffer.

If low order bit of (addr) word is zero, the data buffer is in User space. If low order bit is one, the data buffer is in Supervisor space.) (\(unit)\is the unit number of the terminal) (\(chrcnt)\is a character count indicating the number of characters to transfer. The valid range is from 1 to 255(decimal))

(POSTSCRIPT\FIG2_33.EPS\6)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\No room in output buffer.) (\##1\Unit not attached.) (\##2\Nonexistent logical unit number.) (\##3\Function code out of range.) (\##5\In the mapped monitor, the user buffer address is not in valid user virtual address space.) (.MTPRNT) (Multiterminal) (EMT 375, Code 37, Subcode 4)

(.MTPRNT programmed requestEMT 375, Code 37) (.MTPRNT programmed requestdescription) The .MTPRNT request causes one or more lines to be printed at the specified terminal in a multiterminal environment. (indent\1\smallskip)(.MTPRNT area,addr,unit)

where:

(KEEP) (3\3\6) (\(area)\is the address of a three-word EMT argument block) (\(addr)\is the starting address of the character string to be printed. If the low order bit of the (addr) word is zero, the data buffer is in User space; if the low order bit is one, the data buffer is in Supervisor space.) (\(unit)\is the unit number associated with the terminal)
(POSTSCRIPT\FIG2_34.EPS\6)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##1\Unit not attached.) (\##2\Nonexistent logical unit number.) (\##3\Function code out of range.) (\##5\In the mapped monitor, the character string address is not in valid user virtual address space.) (.MTPS) (Macro Expansion)

(.MTPS macrodescription) (.MTPS macrodescription) The .MTPS macro call allows processor-independent user access to the processor status word. The contents of the registers are preserved across either call. The .MTPS call sets the priority bits. (indent\1\smallskip)(.MTPS value)

where:

(KEEP) (3\3\6) (\(value)\is either the value or the address of the value (depending on addressing mode) to be placed in the PSW. If value is not present, the processor status word is taken from the stack. Note that the high byte on the stack is set to 0 when value is present. If value is not present, you should set the stack to the appropriate value. In either case, the lower byte on the stack is put in the processor status word.)

Errors: None. (.MTRCTO) (Multiterminal) (EMT 375, Code 37, Subcode 4)

(.MTRCTO programmed requestEMT 375, Code 37) (.MTRCTO programmed requestdescription) The .MTRCTO request resets the CTRL/O switch of the specified terminal and enables terminal output in a multiterminal environment. (indent\1\smallskip)(.MTRCTO area,unit)

where:

(KEEP) (3\3\6) (\(area)\is the address of a three-word EMT argument block) (\(unit)\is the unit number associated with the terminal)
(POSTSCRIPT\FIG2_35.EPS\6)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##1\Unit not attached.) (\##2\Nonexistent logical unit number.) (\##3\Function code out of range.) (.MTSET) (Multiterminal) (EMT 375, Code 37, Subcode 0)

(.MTSET programmed requestEMT 375, Code 37) (.MTSET programmed requestdescription) .MTSET is a multiterminal feature that: (UNNUMBERED) Sets terminal and line characteristics. Determines the input/output mode of the terminal service requests for the specified terminal.

For more detail on line characteristics, such as baud rate, number of data bits, stop bits, and parity, refer to .MTGET. (indent\1\smallskip)(.MTSET area,addr,unit)

where:

(KEEP) (3\3\6) (\(area)\is the address of a three-word EMT argument block) (\(addr)\is the address of a four-word status block containing the line and terminal status being set.

If low order bit of (addr) word is zero, the status block is in User space. If low order bit is one, the status block is in Supervisor space.) (\(unit)\is the logical unit number associated with the line and terminal)

(POSTSCRIPT\FIG2_36.EPS\5) (.MTSTAT) (EMT 375, Code 37)

(.MTSTAT programmed requestEMT 375, Code 37) (.MTSTAT programmed requestdescription) The .MTSTAT request returns multiterminal system status information. (indent\1\smallskip)(.MTSTAT area,addr)

where:

(multipage) (3\3\12) (\(area)\is the address of a three-word EMT block.) (\(addr)\is the address of an eight-word return block.) (#)
(3\3\12) (\(Byte Offset\BOLD)\(Explanation\BOLD)) (\##0#(MST.1T)\Offset from the base of the resident monitor to the first terminal control block (TCB)) (\##2#(MST.CT)\Offset from the base of the resident monitor to the terminal control block of the console terminal for the program) (\##4#(MST.LU)\The value (0-16 decimal) of the highest logical unit number (LUN) built into the system) (\##6#(MST.ST)\The size of the terminal control block in bytes) (\#10-17\Reserved)
(POSTSCRIPT\FIG2_37.EPS\6)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##3\Function code out of range) (\##5\In mapped monitors, the status block address is not in valid user address space.) (.MWAIT) (Multijob) (EMT 374, Code 11, Subcode 0)

(.MWAIT programmed requestEMT 375, Code 37) (.MWAIT programmed requestdescription) This request is similar to the .WAIT request, except that .MWAIT suspends execution of the job issuing the request until all messages sent to the other job or requested from the other job have been received. Using .MWAIT with .RCVD or .SDAT modes of message handling causes the program to wait until data is transferred. This request is available only under multijob monitors. (indent\1\smallskip)(.MWAIT)

where:

(POSTSCRIPT\FIG2_38.EPS\2)

Errors: None. (.PEEK) (EMT 375, Code 34, Subcode 1) (.PEEK programmed requestEMT 375, Code 34) (.PEEK programmed requestdescription) (.PEEK programmed requestSee also .POKE)

The .PEEK programmed request accesses processor status and returns in R0 the contents of a specified low memory location (below 28K words) or I/O page location. The request can access the processor status (PS) word as ADDR 177776. (indent\1\smallskip)(.PEEK area,addr)

where:

(KEEP) (3\3\6) (\(area)\is the address of a two- or three-word EMT argument block) (\(addr)\is the address of the location to examine or change)
(POSTSCRIPT\fig2_39.EPS\3)

Errors:

(#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##1\Odd or nonexistent address.) (.POKE) (EMT 375, Code 34, Subcode 3, 5, 7)

(.POKE programmed requestEMT 375, Code 34) (.POKE programmed requestdescription) (.POKE programmed requestSee also .PEEK) .POKE deposits the value you specify into a low memory location (below 28K words) or I/O page location and returns the old contents of the memory location in R0. This simplifies the saving and restoring of a location. .POKE supports BIC (bit clear) and BIS (bit set) operations, as well as the previous MOV operation, using an optional parameter, (type\ITALIC). (indent\1\smallskip)(.POKE area,addr,value[,type])

where: (#)

(KEEP) (3\3\6) (\(area)\is the address of a three-word EMT argument block) (\(addr)\is the address of the location to examine and change) (\(value)\is the new contents to place in the location) (\(type)\is the instruction used to modify the address to the specified value. The (type\ITALIC) parameter can be BIC, BIS, or MOV (default).)
(POSTSCRIPT\fig2_40.EPS\6)

Errors: (#)

(3\3\6) (\(Code)\(Explanation)) (\#1\Odd or nonexistent address)

The .POKE request can alter priority bits in the processor status (PS) word: (UNNUMBERED) A .POKE request returns the contents of the PS with undefined condition codes. .POKE can modify all bits in the PS except the 000020 (trace trap) and 140000 (current mode) bits. However, modifying the 000400 (instruction suspension) or 004000 (register set) bits can cause unexpected results. Although not prohibited, this is not recommended.

Modifying priority bits is supported. However, changing processor priority with a .POKE request automatically lowers processor priority to zero (PR0) during the time .POKE is executing. Therefore, a period of lowest processor priority exists between the time the processor is running at a given priority and the time the processor priority change takes effect.

Setting the carry bit is not recommended, as it causes .POKE to return an error. The priority portion of the modified PS is preserved at the completion of the .POKE request. (.PRINT) (EMT 351)

(.PRINT programmed requestEMT 351) (.PRINT programmed requestdescription) The .PRINT request causes output to be printed at the console terminal. (indent\1\smallskip)(.PRINT addr)

where:

(KEEP) (3\3\6) (\(addr)\is the address of the string to be printed)

The string to be printed can be terminated with either a null (0) byte or a 200 byte. If the null (ASCIZ) format is used, the output is automatically followed by a RETURN/LINE FEED combination. If a 200 byte terminates the string, no RETURN/LINE FEED combination is generated.

Unlike other SYSMAC.MAC definitions, .ENABL MCL will not work for .PRINT; therefore, to use .PRINT, you must do a .MCALL for it.

Errors: None. (.PROTECT) (.PROTECT: EMT 375, Code 31, Subcode 0)

(.PROTECT programmed requestEMT 375, Code 31) (.PROTECT programmed requestdescription) (.PROTECT programmed requestSee also .UNPROTECT) The .PROTECT request allows a job to obtain exclusive control of a vector (two words) in the area of 0 to 474. (indent\1\smallskip)(.PROTECT area,addr)

where:

(KEEP) (3\3\6) (\(area)\is the address of a two-word EMT argument block) (\(addr)\is the address of the word pair to be protected)
(POSTSCRIPT\fig2_41.EPS\4)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Protect failure; locations already in use.) (\##1\Address (addr) is greater than 474 or is not a multiple of 4.) (.PURGE) (EMT 374, Code 3) (.PURGE programmed requestEMT 374, Code 3) (.PURGE programmed requestdescription)

The .PURGE request makes a channel available. If a tentative file has been entered on the channel, the file is discarded. (indent\1\smallskip)(.PURGE chan)

where:

(KEEP) (3\3\6) (\(chan)\is the number of the channel to be made available)
(POSTSCRIPT\fig2_43.EPS\2)

Errors: None. (.PVAL) (.GVAL: EMT 375, Code 34, Subcode 2)

The .PVAL request returns the old contents of an offset in R0 to simplify saving and restoring an offset value. (.PVAL programmed requestEMT 375, Code 34) (.PVAL programmed requestdescription) (indent\1\smallskip)( .PVAL area, offset, value[,TYPE=strg])

(KEEP) (3\3\12) (\(area)\is the address of a three-word EMT argument block) (\(offset)\is the displacement from the beginning of the resident monitor to the word to be returned in R0) (\(value)\is the new value to be placed in the fixed offset location. BIS uses (value\ITALIC) to set (offset\ITALIC).) (\(type)\is the instruction used to modify the address to the specified value. The (type\ITALIC) parameter can be BIC, BIS, or MOV (default).)
(POSTSCRIPT\FIG2_22.EPS\6)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\The offset requested is beyond the limits of the resident monitor.) (\##1\Odd address.) (.QELDF) (Macro Expansion)

(.QELDF macrodescription) The .QELDF macro symbolically defines queue element offsets for a specified set of system generation options. Since the handler usually deals with queue element offsets relative to Q.BLKN, the .QELDF macro also defines these associated symbolic offsets. Note in the following table, for mapped systems only, .QELDF defines queue element offset Q.MEM and symbolic offset Q$MEM and redefines offset Q.PAR. (indent\1\smallskip)(QDELF list, E)

where: (#)

(MULTIPAGE) (3\10\10) (NormalOffset\Handler Offset\Description) (1\Unmapped monitors SB/FB) (2\Mapped monitor; XM only) (Q.LINK=0\Q$LINK=-4\Link to next queue element) (Q.CSW=2.\Q$CSW=-2\Pointer to channel status word) (Q.BLKN=4.\Q$BLKN=0\Physical block number) (Q.FUNC=6.\Q$FUNC=2\Special function code) (Q.JNUM=7.\Q$JNUM=3\Job number) (Q.UNIT=7.\Q$UNIT=3\Device unit number) (Q.BUFF=^O10\Q$BUFF=4\User virtual memory buffer address) (Q.WCNT=^O12\Q$WCNT=6\Word count) (Q.COMP=^O14\Q$COMP=^O10\Completion routine code) (Q.ELGH=^O16(1)\\End of queue element; used to find length) (Q.ELGH#=#^O24(2)\\End of queue element; used to find length) (Q.PAR##=#^O16(2)\Q$PAR#=#^012\PAR1 CPU memory relocation bias when UB is not loaded; when UB is loaded and this handler supports UMR, is the UMR relocation bias) (Q.MEM##=#^O20\Q$MEM#=#^O14(2)\PAR1 CPU memory relocation bias when UB is loaded and this handler supports UMR) (.QSET) (EMT 353) (.QSET programmed requestEMT 353) (.QSET programmed requestdescription)

.QSET request enables additional entries to the RT-11 I/O free queue. (indent\1\smallskip)(.QSET addr,len)

where:

(KEEP) (3\3\6) (\(addr)\is the address at which the new elements are to start) (\(len)\is the number of entries to be added. In the unmapped monitors, each queue entry is seven words long; hence the space set aside for the queue should be (len*7\ITALIC) words. In the mapped monitors, 10(decimal) words per queue element are required)

Errors: (SIMPLE) In an extended memory environment, an attempt to violate the PAR1 restriction results in a (?MON-F-addr\ITALIC) error, which can be intercepted with a .SERR programmed request. (.RCTRLO) (EMT 355)

(.RCTRLO programmed requestEMT 355) (.RCTRLO programmed requestdescription) The .RCTRLO request resets the CTRL/O flag for the terminal. (indent\1\smallskip)(.RCTRLO)

Errors:

If the terminal is set to XOFF (no scroll or hold session), .RCTRLO will not clear the XOFF condition. (.RCVD) (Multijob) (EMT 375, Code 26)

(.RCVD programmed requestEMT 375, Code 26) (.RCVD programmed requestSee also .SDAT) (.RCVDC programmed requestEMT 375, Code 26) (.RCVDC programmed requestSee also .SDATC) (.RCVDW programmed requestEMT 375, Code 26) (.RCVDW programmed requestSee also .SDATW) (.RCVD programmed requestdescription) (.RCVDC programmed requestdescription) (.RCVDW programmed requestdescription) The .RCVD (receive data) request allows a job to read messages or data sent by another job in a multijob environment.

The request is posted and the issuing job continues execution. When the job needs to have the transmitted message, executing .MWAIT suspends the job until all .SDATx and .RCVDx requests for the job are complete. (indent\1\smallskip)(.RCVD area,buf,wcnt[,BMODE=strg])

where: (#)

(MULTIPAGE) (3\3\12) (\(area)\is the address of a five-word EMT argument block) (\(buf)\is the address of the buffer into which the message length and message data are to be placed) (\(wcnt)\is the number of words in the buffer) (\(BMODE = strg)\where (strg\ITALIC) is:
(2\5) (Value\Description) (UD\User data space (default)) (UI\User instruction space) (SD\Supervisor data space) (SI\Supervisor instruction space) (CD\Kernel data space) (CI\Kernel instruction space)

Specifying (BMODE\ITALIC): (UNNUMBERED) Loads an additional word in the EMT request block area containing a bit pattern matching the code specified for (BMODE\ITALIC). Specifies (mode\ITALIC) and (space\ITALIC) for the (buff\ITALIC) argument. Is a valid option only in a fully mapped environment. )

(POSTSCRIPT\fig2_44.EPS\12)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\No other job exists in the system. (A job exists as long as it is loaded, whether or not it is active.)) (.RCVDC) (Multijob) (EMT 375, Code 26)

The .RCVDC request receives data and enters a completion routine when the message is received. The .RCVDC request is posted and the issuing job continues to execute. When the other job sends a message, the completion routine specified is entered. (indent\1\smallskip)(.RCVDC area,buf,wcnt,crtn[,BMODE=strg][,CMODE=strg])

where:

(multipage) (3\3\12) (\(area)\is the address of a five-word EMT argument block) (\(buf)\is the address of the buffer into which the message length/message data is to be placed) (\(wcnt)\is the number of words in the buffer) (\(crtn)\is the address of a completion routine to be entered) (\(BMODE = strg)\where (strg\ITALIC) is:
(2\5) (Value\Description) (UD\User data space (default)) (UI\User instruction space) (SD\Supervisor data space) (SI\Supervisor instruction space) (CD\Kernel data space) (CI\Kernel instruction space)

Specifying (BMODE\ITALIC): (UNNUMBERED) Loads an additional word in the EMT request block area containing a bit pattern matching the code specified for (BMODE\ITALIC). Specifies (mode\ITALIC) and (space\ITALIC) for the (buff\ITALIC) argument. Is a valid option only in a fully mapped environment. ) (\(CMODE = strg)\where (strg\ITALIC) is:

(2\5) (Value\Description) (U\User space (default)) (S\Supervisor space)

Specifying (CMODE\ITALIC): (UNNUMBERED) Loads an additional word in the EMT request block area containing a bit pattern matching the code specified for (CMODE\ITALIC). Specifies the (space\ITALIC) for the (crtn\ITALIC) argument. Is a valid option only for fully mapped monitors.

Note that, if both BMODE and CMODE are specified, only one additional word is added.)

Word 0 of the buffer contains the number of words transmitted when transfer is complete.

(POSTSCRIPT\fig2_45.EPS\12)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\No other job exists in the system. (A job exists as long as it is loaded, whether or not it is active.)) (.RCVDW) (Multijob) (EMT 375, Code 26)

A message request is posted and the job issuing the request is suspended until all pending .SDATx and .RCVDx requests for the job are complete. When the issuing job runs again, the message has been received, and word 0 of the buffer indicates the number of words transmitted. (indent\1\smallskip)(.RCVDW area,buf,wcnt,[,BMODE=strg])

where: (#)

(MULTIPAGE) (3\3\12) (\(area)\is the address of a five-word EMT argument block) (\(buf)\is the address of the buffer into which the message length/message data is to be placed) (\(wcnt)\is the number of words to be transmitted) (\(BMODE = strg)\where (strg\ITALIC) is:
(2\5) (Value\Description) (UD\User data space (default)) (UI\User instruction space) (SD\Supervisor data space) (SI\Supervisor instruction space) (CD\Kernel data space) (CI\Kernel instruction space)

Specifying (BMODE\ITALIC): (UNNUMBERED) Loads an additional word in the EMT request block area containing a bit pattern matching the code specified for (BMODE\ITALIC). Specifies (mode\ITALIC) and (space\ITALIC) for the (buff\ITALIC) argument. Is a valid option only in a fully mapped environment. )

(POSTSCRIPT\fig2_46.EPS\11)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\No other job exists in the system. (A job exists as long as it is loaded, whether or not it is active.)) (.RDBBK) (Mapping) (Macro Expansion)

(.RDBBK macrodescription) (.RDBBK macroSee also .RDBDF) The .RDBBK macro defines symbols for the region definition block and reserves space for it. The .RDBBK automatically invokes .RDBDF. (indent\1\smallskip)(.RDBBK rgsiz,rgsta,name[,BASE=n])

where:

(MULTIPAGE) (3\3\12) (\(rgsiz)\is the size of the dynamic region needed (expressed in 32-word units)) (\(rgsta)\is the region status byte) (\(name)\is the name of the global region) (\(BASE=n)\specifies the starting address of the region, expressed in 32-word units. A value of 0 (or value omitted) means any available base address is acceptable.)

Errors: None. (.RDBDF) (Mapping) (Macro Expansion)

(.RDBDF macrodescription) (.RDBDF macroSee also .RDBBK) The .RDBDF macro defines the symbolic offset names for the region definition block and the names for the region status word bit patterns. This macro also defines the length of the region definition block, but it does not reserve space for the region definition block. (indent\1\smallskip)(.RDBDF)

The .RDBDF macro expands as follows: R.GID =: 0 ;Region ID R.GSIZ=: 2. ;Size in chunks R.GSTS=: 4. ;Status R.GLLN=: 6. ;Length of simple RDB R.GNAM=: 6. ;Name of global region (optional) R.GBAS=: 10. ;Base physical address (optional) R.GLGH=: 12. ;Length of complex RDB RS.CRR=: ^o100000 ;Region created successfully RS.UNM=: ^o40000 ;One or more windows eliminated RS.NAL=: ^o20000 ;Region newly allocated RS.NEW=: ^o10000 ;New global region RS.GBL=: ^o4000 ;Create within a global region RS.CGR=: ^o2000 ;Create new global region if not found RS.AGE=: ^o1000 ;Enable auto elimination of region RS.EGR=: ^o400 ;Eliminate global region RS.EXI=: ^o200 ;Eliminate global region on exit / abort RS.CAC=: ^o100 ;Bypass memory cache RS.BAS=: ^o40 ;R.GBAS supplied RS.NSM=: ^o20 ;Non-system memory RS.DSP=: ^o2 ;reserved RS.PVT=: ^o1 ;reserved (.READ) (EMT 375, Code 10) (.READ programmed requestEMT 375, Code 10) (.READ programmed requestSee also .SDAT) (.READC programmed requestEMT 375, Code 10) (.READC programmed requestSee also .SDATC) (.READW programmed requestEMT 375, Code 10) (.READW programmed requestSee also .SDATW) (.READ programmed requestdescription) (.READC programmed requestdescription) (.READW programmed requestdescription)

The .READ request transfers to memory a specified number of words from the device associated with the specified channel. Control returns to the user program immediately after the .READ is initiated, possibly before the transfer is completed. No special action is taken by the monitor when the transfer is completed. (indent\1\smallskip)(.READ area,chan,buf,wcnt,blk[,BMODE=strg])

where: (#)

(multipage) (3\3\12) (\(area)\is the address of a five- or six-word EMT argument block.) (\(chan)\is a channel number.) (\(buf)\is the address of the buffer.) (\(wcnt)\is the number of words to be read.) (\(blk)\ is the block number to be read. For a file-structured .LOOKUP, the block number is relative to the start of the file. For a non-file-structured .LOOKUP, the block number is the absolute block number on the device. The user program normally updates (blk\ITALIC) before it is used again. If input is from TT: and (blk=0\ITALIC), TT: issues an up-arrow (^) prompt.) (\(BMODE = strg)\where (strg\ITALIC) is:
(2\5) (Value\Description) (UD\User data space (default)) (UI\User instruction space) (SD\Supervisor data space) (SI\Supervisor instruction space) (CD\Kernel data space) (CI\Kernel instruction space)

Specifying (BMODE\ITALIC): (UNNUMBERED) Loads an additional word in the EMT request block area containing a bit pattern matching the code specified for (BMODE\ITALIC). Specifies (mode\ITALIC) and (space\ITALIC) for the (buff\ITALIC) argument. Is a valid option only in a fully mapped environment. )

(POSTSCRIPT\fig2_47.EPS\13)

When the user program needs to access the data read on the specified channel, issue a .WAIT request as a check that the data has been read completely. If an error occurred during the transfer, the .WAIT request indicates the error.

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Attempt to read past end-of-file.) (\##1\Hard error occurred on channel.) (\##2\Channel is not open.) (.READC) (EMT 375, Code 10)

The .READC request transfers to memory a specified number of words from the device associated with the specified channel. Control returns to the user program immediately after the .READC is initiated. Attempting to read past end-of-file also causes an immediate return, in this case with the carry bit set and the error byte set to 0. Execution of the user program continues until the .READC is complete, then control passes to the routine specified in the request. When a RETURN is executed in the completion routine, control returns to the user program. (indent\1\smallskip)(.READC area,chan,buf,wcnt,crtn,blk[,BMODE][,CMODE])

where:

(MULTIPAGE) (3\3\12) (\(area)\is the address of a five-word EMT argument block) (\(chan)\is a channel number in the range 0-376(8)) (\(buf)\is the address of the buffer to receive the data read) (\(wcnt)\is the number of words to be read) (\(crtn)\is the address of the user's completion routine. The address of the completion routine must be above 500(8)) (\(blk)\is the block number to be read. For a file-structured .LOOKUP, the block number is relative to the start of the file. For a non-file-structured .LOOKUP, the block number is the absolute block number on the device. The user program normally updates (blk\ITALIC) before it is used again) (\(BMODE = strg)\where (strg\ITALIC) is:
(2\5) (Value\Description) (UD\User data space (default)) (UI\User instruction space) (SD\Supervisor data space) (SI\Supervisor instruction space) (CD\Kernel data space) (CI\Kernel instruction space)

Specifying (BMODE\ITALIC): (UNNUMBERED) Loads an additional word in the EMT request block area containing a bit pattern matching the code specified for (BMODE\ITALIC). Specifies (mode\ITALIC) and (space\ITALIC) for the (buff\ITALIC) argument. Is a valid option only in a fully mapped environment. ) (\(CMODE = strg)\where (strg\ITALIC) is:

(2\5) (Value\Description) (U\User space (default)) (S\Supervisor space)

Specifying (CMODE\ITALIC): (UNNUMBERED) Loads an additional word in the EMT request block area containing a bit pattern matching the code specified for (CMODE\ITALIC). Specifies the (space\ITALIC) for the (crtn\ITALIC) argument. Is a valid option only for fully mapped monitors. )

(POSTSCRIPT\fig2_48.EPS\13)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Attempt to read past end-of-file; no data was read.) (\##1\Hard error occurred on channel.) (\##2\Channel is not open.) (.READW) (EMT 375, Code 10)

The .READW request transfers to memory a specified number of words from the device associated with the specified channel. When the .READW is complete or an error is detected, control returns to the user program. (indent\1\smallskip)(.READW area,chan,buf,wcnt,blk[,BMODE=strg])

where: (#)

(MULTIPAGE) (3\3\12) (\(area)\is the address of a five-word EMT argument block) (\(chan)\is a channel number in the range 0-376(8)) (\(buf)\is the address of the buffer to receive the data read) (\(wcnt)\is the number of words to be read; each .READ request can transfer a maximum of 32K words) (\(blk)\is the block number to be read. For a file-structured .LOOKUP, the block number is relative to the start of the file. For a non-file-structured .LOOKUP, the block number is the absolute block number on the device. The user program normally updates blk before it is used again) (\(BMODE=strg)\where (strg\ITALIC) is:
(2\5) (Value\Description) (UD\User data space (default)) (UI\User instruction space) (SD\Supervisor data space) (SI\Supervisor instruction space) (CD\Kernel data space) (CI\Kernel instruction space)

Specifying (BMODE\ITALIC): (UNNUMBERED) Loads an additional word in the EMT request block area containing a bit pattern matching the code specified for (BMODE\ITALIC). Specifies (mode\ITALIC) and (space\ITALIC) for the (buff\ITALIC) argument. Is a valid option only in a fully mapped environment. )

(POSTSCRIPT\FIG2_49.EPS\13)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Attempt to read past end-of-file.) (\##1\Hard error occurred on channel.) (\##2\Channel is not open.) (.RELEASE) (EMT 343)

The .RELEAS request notifies the monitor that a fetched device handler is no longer needed. .RELEAS of a valid device name from a foreground or system job is ignored. (indent\1\smallskip)(.RELEAS dnam)

where:

(KEEP) (3\3\6) (\(dnam)\is the address of the Radix-50 device name)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Device name is invalid.) (.RENAME) (EMT 375, Code 4)

(.RENAME programmed requestdescription) The .RENAME request changes the name of the file specified. (indent\1\smallskip)(.RENAME area,chan,dblk)

where:

(MULTIPAGE) (3\3\6) (\(area)\is the address of a two-word EMT argument block) (\(chan)\is an available channel number in the range 0-376(8)) (\(dblk)\is the address of a block that specifies the file to be renamed followed by the new file name)
(POSTSCRIPT\FIG2_50.EPS\4)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Channel not available.) (\##1\File not found.) (\##2\Invalid operation.) (\##3\A file by that name already exists and is protected. A RENAME was not done.) (.REOPEN) (EMT 375, Code 6)

(.REOPEN programmed requestEMT 375, Code 6) (.REOPEN programmed requestdescription) (.REOPEN programmed requestSee also .SAVESTATUS) The .REOPEN request associates the channel that was specified with a file on which a .SAVESTATUS was performed. (indent\1\smallskip)(.REOPEN area,chan,cblk)

where:

(MULTIPAGE) (3\3\6) (\(area)\is the address of a two-word EMT argument block) (\(chan)\is a channel number in the range 0-376(8)) (\(cblk)\is the address of the five-word block where the channel status information was stored)
(POSTSCRIPT\FIG2_51.EPS\4)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\The specified channel is not available. The .REOPEN has not been done.) (.RSUM) (EMT 374, Code 2)

The .RSUM request resumes control execution of a job's mainline code; that is, code that is not executing as a result of a completion routine. .RSUM (from a completion routine) resumes the mainline code. (INDENT\1)(.RSUM)

(POSTSCRIPT\FIG2_63.EPS\3)

Errors: None. (.SAVESTATUS) (EMT 375, Code 5)

(.SAVESTATUS programmed requestEMT 375, Code 5) (.SAVESTATUS programmed requestdescription) (.SAVESTATUS programmed requestSee also .REOPEN) .SAVESTATUS stores, in a user-specified area of memory, the five-word channel status information RT-11 requires to completely define a file. .SAVESTATUS places data words in memory, frees the specified channel and closes the file. When the saved channel data is required, the .REOPEN request is used. The five words returned by .SAVESTATUS contain the following information:

(MULTIPAGE) (3\10\8) (Name\Offset\Contents) (C.CSW\0\Channel status word) (C.SBLK\2\Starting block number of this file or 0 if non-file-structured) (C.LENG\4\Length of file) (C.USED\6\Highest block written) (C.DEVQ\10\Number of pending requests) (C.UNIT\11\Device unit number) (indent\1\smallskip)(.SAVESTATUS area,chan,cblk)

where:

(MULTIPAGE) (3\3\6) (\(area)\is the address of a two-word EMT argument block) (\(chan)\is a channel number in the range 0-376(8)) (\(cblk)\is the address of the five-word user memory block where the channel status information is to be stored)
(POSTSCRIPT\FIG2_52.EPS\4)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\The channel specified is not open.) (\##1\The file was opened with an .ENTER request or a .SAVESTATUS request was performed for a magtape file.) (.SCCA) (EMT 375, Code 35, Subcode 0, 1)

(.SCCA programmed requestEMT 375, Code 35) (.SCCA programmed requestdescription) The .SCCA programmed request: (UNNUMBERED) Inhibits a CTRL/C abort Indicates when a double CTRL/C is initiated at the keyboard Distinguishes between single and double CTRL/C commands (indent\1\smallskip)(.SCCA area,addr[,AMODE=strg][,TYPE=strg])

where: (#)

(MULTIPAGE) (3\3\12) (\(area)\is the address of a two-word parameter block) (\(addr)\is the address of a terminal status word (an address of 0 reenables CTRL/C aborts)) (\(AMODE=strg)\Default is "U", User mode.

"S" specifies Supervisor mode (Sets low bit of the AST argument to 1.) Valid only for fully mapped monitor.) (\(TYPE=strg)\Optional parameter that specifies mode of SCCA operation as LOCAL (default) or GLOBAL.)

LOCAL:

(POSTSCRIPT\FIG2_53.EPS\4)

GLOBAL:

(POSTSCRIPT\FIG2_54.EPS\4)

Errors: None. (.SDAT) (Multijob) (EMT 375, Code 25)

(.SDAT programmed requestEMT 375, Code 25) (.SDAT programmed requestSee also .RCVD) (.SDATC programmed requestEMT 375, Code 25) (.SDATC programmed requestSee also .RCVDC) (.SDATW programmed requestEMT 375, Code 25) (.SDATW programmed requestSee also .RCVDW) (.SDAT programmed requestdescription) (.SDATC programmed requestdescription) (.SDATW programmed requestdescription) The .SDAT/.SDATC/.SDATW requests are used with the .RCVD/.RCVDW/.RCVDC calls to allow message transfers between a foreground job and a background job under multijob monitors. Since RT-11 distinguishes a send from a receive by complementing the word count, a .SDAT* of zero words is treated as a .RCVDW of zero words. Therefore, avoid a word count of zero at all times when using a .SDAT* request. (indent\1\smallskip)(.SDAT area,buf,wcnt[,BMODE=strg])

where: (#)

(MULTIPAGE) (3\3\12) (\(area)\is the address of a five- or six-word EMT argument block) (\(buf)\is the buffer address of the beginning of the message to be transferred) (\(wcnt)\is the number of words to transfer) (\(BMODE=strg)\where (strg\ITALIC) is:
(2\5) (Value\Description) (UD\User data space (default)) (UI\User instruction space) (SD\Supervisor data space) (SI\Supervisor instruction space) (CD\Kernel data space) (CI\Kernel instruction space)

Specifying (BMODE\ITALIC): (UNNUMBERED) Loads an additional word in the EMT request block area containing a bit pattern matching the code specified for (BMODE\ITALIC). Specifies (mode\ITALIC) and (space\ITALIC) for the (buff\ITALIC) argument. Is a valid option only in a fully mapped environment. )

(POSTSCRIPT\FIG2_55.EPS\13)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\No other job exists. (A job exists as long as it is loaded, whether or not it is active.)) (.SDATC) (EMT 375, Code 25) (indent\1\smallskip)(.SDATC area,buf,wcnt,crtn[,BMODE=strg][,CMODE=strg])

where:

(MULTIPAGE) (3\3\12) (\(area)\is the address of a five-word or six-word EMT argument block) (\(buf)\is the buffer address of the beginning of the message to be transferred) (\(wcnt)\is the number of words to transfer) (\(crtn)\is the address of the completion routine to be entered when the message has been transmitted) (\(BMODE = strg)\where (strg\ITALIC) is:
(2\5) (Value\Description) (UD\User data space (default)) (UI\User instruction space) (SD\Supervisor data space) (SI\Supervisor instruction space) (CD\Kernel data space) (CI\Kernel instruction space)

Specifying (BMODE\ITALIC): (UNNUMBERED) Loads an additional word in the EMT request block area containing a bit pattern matching the code specified for (BMODE\ITALIC). Specifies (mode\ITALIC) and (space\ITALIC) for the (buff\ITALIC) argument. Is a valid option only in a fully mapped environment. ) (\(CMODE = strg)\where (strg\ITALIC) is:

(2\5) (Value\Description) (U\User space (default)) (S\Supervisor space)

Specifying (CMODE\ITALIC): (UNNUMBERED) Loads an additional word in the EMT request block area containing a bit pattern matching the code specified for (CMODE\ITALIC). Specifies the (space\ITALIC) for the (crtn\ITALIC) argument. Is a valid option only for fully mapped monitors. )

(POSTSCRIPT\FIG2_56.EPS\13)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\No other job exists. (A job exists as long as it is loaded, whether or not it is active.)) (.SDATW) (Multijob) (EMT 375, Code 25) (indent\1\smallskip)(.SDATW area,buf,wcnt[,BMODE=strg])

where: (#)

(MULTIPAGE) (3\3\12) (\(area)\is the address of a five- or six-word EMT argument block) (\(buf)\is the buffer address of the beginning of the message to be transferred) (\(wcnt)\is the number of words to transfer) (\(BMODE = strg)\where (strg\ITALIC) is:
(2\5) (Value\Description) (UD\User data space (default)) (UI\User instruction space) (SD\Supervisor data space) (SI\Supervisor instruction space) (CD\Kernel data space) (CI\Kernel instruction space)

Specifying (BMODE\ITALIC): (UNNUMBERED) Loads an additional word in the EMT request block area containing a bit pattern matching the code specified for (BMODE\ITALIC). Specifies (mode\ITALIC) and (space\ITALIC) for the (buff\ITALIC) argument. Is a valid option only in a fully mapped environment. )

(POSTSCRIPT\FIG2_57.EPS\13)

Errors:

(MULTIPAGE) (3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\(0)\No other job exists. (A job exists as long as it is loaded, whether or not it is active.)) (.SDTTM) (EMT 375, Code 40)

(.SDTTM programmed requestEMT 375, Code 40) (.SDTTM programmed requestdescription) The .SDTTM (Set date and time) request allows your program to set the system date and time. (indent\1\smallskip)(.SDTTM area,addr)

where:

(MULTIPAGE) (3\3\6) (\(area)\is the address of a two-word EMT argument block) (\(addr)\is the address of a three-word block in user memory that contains the new date and time)
(POSTSCRIPT\FIG2_58.EPS\4)

Errors: None. (.SERR) (.SERR: EMT 374, Code 4)

.SERR inhibits the monitor from aborting a job and causing an error return to the offending EMT.

(.SERR programmed requestEMT 374, Code 4) (.SERR programmed requestdescription) (indent\1\smallskip)(.SERR)

where:

(POSTSCRIPT\FIG2_23_1.EPS\2)

Errors:

The .HERR and .SERR programmed requests return a code value in R0 that lets a subroutine implicitly control error condition handling: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\#0\Previous state of error condition handling .HERR/.SERR flag was .HERR) (\#1\Previous state of error condition handling .HERR/.SERR flag was .SERR) (#)
(Soft Error Codes (.SERR)\serr) (3\6\6) ((Name\BOLD)\(Code\BOLD)\(Explanation\BOLD)) (ER.USR\##--1\USR. Reserved.) (ER.UNL\##--2\No device handler; this operation needs one.) (ER.DIO\##--3\Error doing directory I/O.) (ER.FET\##--4\.FETCH error. Either an I/O error occurred while the handler was being used, or an attempt was made to load the handler over USR or RMON.) (ER.OVE\##--5\Reserved. Issued by overlay handler, but not passed to a program.) (ER.DFU\##--6\No more room for files in the directory.) (ER.IAD\##--7\Invalid address. Tried to perform a monitor operation outside the job partition.) (ER.ICH\##--10\Invalid channel number; number is greater than actual number of channels that exist.) (ER.EMT\##--11\Invalid EMT; an invalid function code has been decoded.) (\--12-13\Reserved for monitor internal use.) (ER.DIR\##--14\Invalid directory.) (ER.XFE\##--15\Unloaded handler under mapped system without fetch support.) (\--16-22\Reserved for monitor internal use.) (.SETTOP) (EMT 354)

(.SETTOP programmed requestEMT 354) (.SETTOP programmed requestdescription) The .SETTOP request specifies a new address as a program's upper limit. Using .SETTOP offers significant performance improvement in running your program. (indent\1\smallskip)(.SETTOP addr)

where:

(MULTIPAGE) (3\3\6) (\(addr)\is the address of the highest word of the area desired; that is, the last word the program will modify, not the first word it leaves untouched)

On return from .SETTOP, both R0 and the word in $USRTO contain the highest memory address allocated for use.

Errors: None. (.SFDAT) (EMT 375, Code 42)

(.SFDAT programmed requestEMT 375, Code 42) (.SFDAT programmed requestdescription) The .SFDAT programmed request allows a program to set or modify the creation date in a file's directory entry. .SFDAT is not supported for distributed special directory handlers LP, LS, MM, MS, MT, MU, and SP. (indent\1\smallskip)(.SFDAT area, chan, dblk[,date])

where:

(MULTIPAGE) (3\3\6) (\(area)\is the address of a three-word EMT argument block.) (\(chan)\is a channel number.) (\(dblk)\is the address of a four-word block containing a filespec in Radix-50.) (\(date)\is the value of the new date, in RT-11 format. If this argument is #0 or omitted, the system date is used.)
(POSTSCRIPT\FIG2_59.EPS\6)

Errors: (#)

(MULTIPAGE) (3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Channel not available) (\##1\File not found) (\##2\Invalid operation (device not file structured)) (.SFINF) (NEW REQUEST) (EMT 375, Code 44)

(.SFINF programmed requestEMT 375, Code 44) (.SFINF programmed requestdescription) The .SFINF programmed request saves in R0 and then modifies the contents of the directory entry offset you specify from a file's directory entry. .SFINF is not supported for the distributed special directory handlers LP, LS, MM, MS, MT, MU, and SP. (indent\1\smallskip)(.SFINF area,chan,dblk,value,type, offse,ucode)

where:

(multipage) (3\3\6) (\(area)\is the address of a 4-word or 5-word see (dblk\ITALIC) EMT argument block.) (\(chan)\is a channel number.) (\(dblk)\is a four-word Radix-50 descriptor block that specifies the physical device, file name, and file type to be operated upon.) (\(value)\is the value used to modify the specified offset location.

For RT-11 file structured volume directories, (UNNUMBERED) If the offset is 0 (E.STAT) and the operation is a BIC or BIS, E.STAT bits 000400, 001000, and 004000, must be clear. If the offset is E.STAT and the operation is a MOV, only the bottom 4 bits of E.STAT are moved.

For special directory volumes, no bit restrictions are enforced. The operation is dependent on the handler.) (\(type)\is the name indicating the operation to be performed: (#)

(3\6\6) ((Name\BOLD)\ (Value\BOLD)\ (Meaning\BOLD)) (GET\##0\Get value; a .GFDAT, .GFINF, or .GFSTA operation) (BIC\##1\A bit clear BIC operation) (BIS\##2\A bit set BIS operation) (MOV\##3\A word move MOV operation) ( \4-177\Reserved for Digital) (USER\ucode\Reserved for the user) ) (\(offse)\is the octal byte offset for the directory entry word for this operation. The offset must be even and cannot be 10 (E.LENG). For example, specifying offset 12 saves the current contents of E.USED in R0 and modifies that location according to the (value) and (type) arguments) (\(ucode)\is the user operation code containing the value from the (type) parameter. Specify (ucode) only when the (type) parameter argument is USER)
(POSTSCRIPT\figrn_6.EPS\8)

Errors:

Special directory handlers define their own codes. For RT-11 file structure devices: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Channel is not available) (\##1\File not found, or not a file-structured device.) (\##2\Operation is invalid) (\##3\Offset is invalid) (\##4\Value is invalid) (.SFPA) (Floating-Point) (EMT 375, Code 30)

(.SFPA programmed requestEMT 375, Code 30) (.SFPA programmed requestdescription) The .SFPA request enables users with floating-point hardware to set trap addresses to be entered when a floating-point exception occurs. Issue this request with #1 as the (addr\ITALIC) argument to provide swapping of floating-point context without setting a trap address. If no user trap address is specified and a floating-point (FP) exception occurs, a (?MON-F-FPU\ITALIC) trap occurs, and the job is aborted. (indent\1\smallskip)(.SFPA area,addr[,CMODE=strg])

where: (#)

(MULTIPAGE) (3\3\12) (\(area)\is the address of a two-word EMT argument block) (\(addr)\is the address of the routine to be entered when an exception occurs) (\(CMODE = strg)\where (strg\ITALIC) is:
(2\5) (Value\Description) (U\User space (default)) (S\Supervisor space)

Specifying (CMODE\ITALIC): (UNNUMBERED) Loads an additional word in the EMT request block area containing a bit pattern matching the code specified for (CMODE\ITALIC). Specifies the (space\ITALIC) for the (crtn\ITALIC) argument. Is a valid option only for fully mapped monitors. )

(POSTSCRIPT\FIG2_60.EPS\3)

Errors: None. (.SFSTAT) (NEW REQUEST) (EMT 375, Code 44)

(.SFSTAT programmed requestEMT 375, Code 44) (.SFSTAT programmed requestdescription) The .SFSTAT programmed request saves in R0 and then modifies the contents of the directory entry E.STAT offset from a file's directory entry. .SFSTA is not supported for the distributed special directory handlers LP, LS, MM, MS, MT, MU, and SP. (indent\1\smallskip)(.SFSTAT area,chan,dblk,value,type,ucode)

where:

(MULTIPAGE) (3\3\6) (\(area)\is the address of a 4-word see (dblk\ITALIC) EMT argument block) (\(chan)\is a channel number.) (\(dblk)\Four-word Radix-50 descriptor block that specifies the physical device, file name, and file type to be operated upon.) (\(value)\is the value to be placed in the E.STAT offset location.

For RT-11 file-structured volume directories, (UNNUMBERED) If the operation is a BIC or BIS, E.STAT bits 000400, 001000, and 004000 must be clear. If the operation is a MOV, only the bottom 4 bits of E.STAT are moved.

For special directory volumes, no bit restrictions are enforced.) (\(type)\is the name indicating the operation to be performed: (#)

(3\6\10) ((Name\BOLD)\ (Value\BOLD)\ (Meaning\BOLD)) (GET\##0\Get value; a .GFDAT, .GFINF, or .GFSTA operation) (BIC\##1\A bit clear BIC operation) (BIS\##2\A bit set BIS operation) (MOV\##3\A word move MOV operation) ( \4-177\Reserved for Digital) (USER\ucode\Reserved for the user) ) (\(ucode)\is the user operation code containing the value from the (type) parameter. Specify (ucode) only when the (type) parameter argument is USER.)
(POSTSCRIPT\FIGRN_7.EPS\8)

Errors:

Special directory handlers define their own codes. For RT-11 file structure devices: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Channel is not available) (\##1\File not found, or not a file-structured device. (If it is necessary to determine what condition returned the error code, issue a .DSTAT request to determine if a device is file structured)) (\##2\Operation is invalid) (\##3\Invalid EMT argument block) (\##4\Invalid EMT argument block) (SOB) (Macro Expansion)

(SOB macrodescription) The SOB macro simulates the SOB instruction (subtract one and branch if not equal) by generating the code: DEC REG BNE ADDR

You can use the SOB macro on all processors, but it is especially useful for processors that do not have the hardware SOB instruction. If you are running on a processor that supports the SOB instruction, simply eliminate the MACRO call to SOB (.MCALL SOB), and the SOB instruction executes. Note that SOB is not preceded by a dot (.). (indent\1\smallskip)(SOB reg,addr)

where:

(MULTIPAGE) (3\3\6) (\(reg)\is the register whose contents will be decremented by 1) (\(addr)\is the location to branch to if the register contents do not equal 0 after the decrement) (.SPCPS) (.SPCPS Support) (EMT 375, Code 41)

(.SPCPS programmed requestEMT 375, Code 41) (.SPCPS programmed requestdescription) The .SPCPS (save/set mainline PC and PS) request allows a program's completion routine to change the flow of control of the mainline code. (indent\1\smallskip)(.SPCPS area,addr)

where:

(multipage) (3\3\6) (\(area)\is the address of a two-word EMT argument block.) (\(addr)\is the address of a three-word block in user memory.)
(POSTSCRIPT\FIG2_61.EPS\4)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\The program issued the .SPCPS call from the mainline code .) (\##1\A previous .SPCPS request is outstanding.)

When the program issues the .SPCPS request, the monitor saves the old mainline PS in the third word of the three-word block and the old mainline PC in the second word of the block. The monitor then changes the mainline PC to the contents of the first word of the block. (.SPFUN) (EMT 375, Code 32)

(.SPFUN programmed requestEMT 375, Code 32) (.SPFUN programmed requestdescription) This request is used with certain device handlers to do device specific functions, such as rewind and backspace. It can be used with some disks to allow reading and writing of absolute sectors. It is commonly used to determine the size of devices of variable size. (indent\1\smallskip)( .SPFUN area,chan,func,buf,wcnt,blk [,crtn][,BMODE=strg][,CMODE=strg]) (#)

(MULTIPAGE) (3\3\12) (\(area)\is the address of a six-word EMT argument block) (\(chan)\is a channel number.) (\(func)\is the numerical code of the function to be performed; these codes must be negative) (\(buf)\is the buffer address; this parameter must be set to zero if no buffer is required) (\(wcnt)\is defined in terms of the device handler associated with the specified channel and in terms of the specified special function code) (\(blk)\is also defined in terms of the device handler associated with the specified channel and in terms of the specified special function code) (\(crtn)\is the entry point of a completion routine. If left blank, 0 is automatically inserted. This value is the same as for .READ, .READC, and .READW. (SIMPLE) 0 = wait I/O (.READW) 1 = real time (.READ) Value >500 = completion routine ) (\(BMODE = strg)\where (strg\ITALIC) is:
(2\5) (Value\Description) (UD\User data space (default)) (UI\User instruction space) (SD\Supervisor data space) (SI\Supervisor instruction space) (CD\Kernel data space) (CI\Kernel instruction space)

Specifying (BMODE\ITALIC): (UNNUMBERED) Loads a word in the EMT request block area containing a bit pattern matching the code specified for (BMODE\ITALIC). Specifies (mode\ITALIC) and (space\ITALIC) for the (buff\ITALIC) argument. Is a valid option only in a fully mapped environment. ) (\(CMODE = strg)\where (strg\ITALIC) is:

(2\5) (Value\Description) (U\User space (default)) (S\Supervisor space)

Specifying (CMODE\ITALIC): (UNNUMBERED) Loads an additional word in the EMT request block area containing a bit pattern matching the code specified for (CMODE\ITALIC). Specifies the (space\ITALIC) for the (crtn\ITALIC) argument. Is a valid option only for fully mapped monitors. )

(POSTSCRIPT\FIG2_62.EPS\12)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Attempt to read or write past end-of-file, or invalid function value.) (\##1\Hard error occurred on channel.) (\##2\Channel is not open.) (.SPND) (EMT 374, Code 1)

(.SPND programmed requestEMT 374, Code 1) (.SPND programmed requestdescription) .SPND requests control execution of a job's mainline code; .SPND suspends the mainline and allows only completion routines (for I/O and mark time requests) to run. (INDENT\1)(.SPND)

(POSTSCRIPT\FIG2_63_1.EPS\3)

Errors: None. (.SRESET) (EMT 352)

(.SRESET programmed requestEMT 352) (.SRESET programmed requestdescription) (indent\1\smallskip)(.SRESET)

The .SRESET (software reset) request: (UNNUMBERED) Cancels any messages sent by the job. Waits for all job I/O to complete, which includes waiting for all completion routines to run. Removes from memory any device handlers brought into memory via .FETCH calls by this job. Handlers loaded by the keyboard monitor LOAD command remain resident, as does the system device handler. Purges any currently open files. Files opened for output with .ENTER are never made permanent. Reverts to using only 16(decimal) I/O channels. Any channels defined with .CDFN are discarded. A .CDFN must be reissued to open more than 16 channels after a .SRESET is performed. Clears the job's .SPND/.RSUM counter. Resets the I/O queue to one element. A .QSET request must be reissued to allocate extra queue elements. Cancels all outstanding .MRKT requests.

Errors: None. (.SYNCH) (Macro Expansion)

(.SYNCH macrodescription) This macro call enables your program to issue programmed requests from an interrupt service routine. Code following the .SYNCH call runs at priority level 0 as a completion routine in the issuing job's context. (indent\1\smallskip)(.SYNCH area[,pic])

where:

(multipage) (3\3\6) (\(area)\is the address of a seven-word block that you must set aside for use by .SYNCH. This argument, area, represents a special seven-word block used by .SYNCH as a queue element. This is not the same as the regular area argument used by many other programmed requests. The user must not confuse the two; he should set up a unique seven-word block specifically for the .SYNCH request. The seven-word block appears as: (#)
(2\10) ((Word Offset\BOLD)\(Contents\BOLD)) (###(0)QS.LNK\ RT-11 maintains this word; its contents should not be altered by the user) (###(2)QS.JOB\ The current job's number. Must be set up by the user program. Obtained by a .GTJB call or from the I/O queue element in a device handler) (###(4)\Unused.) (###(6)\Unused.) (##(10)QS.ID\ R0 contains this argument after successful return.) (##(12)QS.SYN\Must be -1.) (##(14)QS.CUP\Must be 0.) ) (\(pic)\is an optional argument that, if non-blank, causes the .SYNCH macro to produce position-independent code for use by device drivers)

Errors:

The monitor returns to the location immediately following the .SYNCH if the .SYNCH was rejected. After failure of the .SYNCH routine, the routine is still unable to issue programmed requests, and R4 and R5 are available for use. An error is returned if another .SYNCH that specified the same seven-word block is still pending. (.TIMIO) (Timeout) (Macro Expansion)

(.TIMIO macrodescription) The .TIMIO macro issues the device time-out call in the handler I/O initiation section. This request schedules a completion routine to run after the specified time interval has elapsed. The completion routine runs in the context of the job indicated in the timer block. (indent\1\smallskip)(.TIMIO tbk,hi,lo)

where:

(KEEP) (3\3\6) (\(tbk)\is the address of the timer block, a seven-word pseudo timer queue element. (See timer block format shown under the .CTIMIO request.) You must set up the address of the completion routine in the seventh word of the timer block in a position-independent manner.) (\(hi)\is the high-order word of a two-word time interval) (\(lo)\is the low-order word of a two-word time interval) (.TLOCK) (EMT 374, Code 7)

(.TLOCK programmed requestEMT 374, Code 7) (.TLOCK programmed requestdescription) The .TLOCK (test lock) request is used in an multijob environment to attempt to gain ownership of the USR. It is similar to .LOCK in that, if successful, the user job returns with the USR in memory (it is identical to .LOCK in the single job monitor). However, if a job attempts to .LOCK the USR while another job is using it, the requesting job is suspended until the USR is free. With .TLOCK, if the USR is not available, control returns immediately with the C bit set to indicate the .LOCK request failed. (indent\1\smallskip)(.TLOCK)

(POSTSCRIPT\FIG2_64.EPS\2)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\USR is already in use by another job.) (.TRPSET) (EMT 375, Code 3)

(.TRPSET programmed requestEMT 375, Code 3) (.TRPSET programmed requestdescription) .TRPSET enables a user job to intercept traps to 4 and 10 instead of having the job aborted with a (?MON-F-Trap to 4\ITALIC) or (?MON-F-Trap to 10\ITALIC) message. If .TRPSET is in effect when an error trap occurs, the user-specified routine is entered. The status of the carry bit on entry to the routine determines which trap occurred: carry bit clear indicates a trap to 4; carry bit set indicates a trap to 10. The user routine should exit with an RTI instruction. Traps are not intercepted by the .TRPSET request, but they do cause job abort and a printout of the message (?MON-F-Trap to 4\ITALIC). (indent\1\smallskip)(.TRPSET area,addr,[CMODE=strg])

where: (#)

(KEEP) (3\3\12) (\(area)\is the address of a two-word EMT argument block) (\(addr)\is the address of the user's trap routine. If an address of 0 is specified, trap interception is disabled) (\(CMODE = strg)\where (strg\ITALIC) is:
(2\5) (Value\Description) (U\User space (default)) (S\Supervisor space)

Specifying (CMODE\ITALIC): (UNNUMBERED) Loads an additional word in the EMT request block area containing bit pattern matching code for (CMODE\ITALIC). Specifies the (space\ITALIC) for the (crtn\ITALIC) argument. Is a valid option only for fully mapped monitors. )

(POSTSCRIPT\FIG2_65.EPS\3)

Errors: None. (.TTINR/.TTYIN) (EMT 340)

(.TTINR programmed requestEMT 340) (.TTINR programmed requestdescription) The requests .TTYIN and .TTINR transfer a character from the console terminal to the user program. The character thus obtained appears right-justified (even byte) in R0. The user can cause the characters to be returned in R0 only, or in R0 and other locations. (indent\1\smallskip)(.TTYIN char) (indent\1\smallskip)(.TTINR)

where:

(KEEP) (3\3\6) (\(char)\is the location where the character in R0 is to be stored.

If (char\ITALIC) is specified, the character is in both R0 and the address represented by (char\ITALIC). )

The expansion of .TTYIN is: EMT 340 BCS .-2

The expansion of .TTINR is: EMT 340

If no characters or lines are available when an EMT 340 is executed, return is made with the carry bit set. The implication of these calls is that .TTYIN causes a tight loop waiting for a character/line to appear, while the user can either wait or continue processing using .TTINR.

.TTINR does not return the carry bit set, unless TCBIT$ of the job status word (JSW) was on when the request was issued.

The choice of two modes of doing console terminal input is determined by TTSPC$ of the job status word. If TTSPC$ is 0, normal I/O is performed. In this mode, the following conditions apply: (UNNUMBERED) The monitor echoes all characters typed. CTRL/U and the DELETE key perform line deletion and character deletion, respectively. A carriage return, line feed, CTRL/Z, or CTRL/C must be typed before characters on the current line are available to the program. As you type these, characters on the line are sequentially passed to the user program.

If TTSPC$ is 1, the console is in special mode. The effects are: (UNNUMBERED) The monitor does not echo characters typed except for CTRL/C and CTRL/O. CTRL/U and the DELETE key do not perform special functions. Characters are immediately available to the program.

In special mode, the user program must echo the characters received. However, CTRL/C and CTRL/O are acted on by the monitor in the usual way. TTSPC$ in the JSW must be set by the user program. This bit is cleared when the program terminates.

Regardless of the setting of TTSPC$, when a carriage return is entered, both carriage return and line feed characters are passed to the program; if TTSPC$ is 0, these characters will be echoed.

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\No characters availablein ring buffer.) (.TTYOUT/.TTOUTR) (EMT 341)

(.TTYOUT programmed requestEMT 341) (.TTYOUT programmed requestdescription) (.TTOUTR programmed requestEMT 341) (.TTOUTR programmed requestdescription) The requests .TTYOUT and .TTOUTR cause a character to be transmitted to the console terminal. If there is no room for the character in the monitor's buffer, the .TTYOUT request waits for room before proceeding, however, .TTOUTR does not wait for room and the character is not output. (indent\1\smallskip)(.TTYOUT char) (indent\1\smallskip)(.TTOUTR)

where:

(KEEP) (3\3\6) (\(char)\is the location containing the character to be loaded in R0 and printed. If not specified, the character in R0 is printed. Upon return from the request, R0 still contains the character)

The expansion of .TTYOUT is: EMT 341 BCS .-2

The expansion of .TTOUTR is: EMT 341

If the carry bit is set when execution of the .TTOUTR request is completed, it indicates that there is no room in the buffer and that no character was output. .TTOUTR normally does not return the carry bit set. Instead, the job is blocked until room is available in the output buffer. If a job requires execution to continue and the carry bit to be returned, it must turn on TCBIT$ of the Job Status Word before issuing the request.

The .TTINR and .TTOUTR requests have been supplied to help those users who want to continue rather than suspend program execution until a console operation is complete. With these modes of I/O, if a no-character or no-room condition occurs, the user program can continue processing and try the operation again at a later time.

If a foreground job leaves TCBIT$ set in the Job Status Word, any further foreground .TTYIN or .TTYOUT requests cause the system to lock out the background until a character is available.

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Output ring buffer full.) (.TWAIT) (EMT 375, Code 24)

(.TWAIT programmed requestEMT 375, Code 24) (.TWAIT programmed requestdescription) (.TWAIT programmed requestSee also .QSET) The .TWAIT request suspends the user's job for a specified length of time. .TWAIT requires a queue element and should be a consideration when the .QSET request is issued. (indent\1\smallskip)(.TWAIT area,time)

where:

(KEEP) (3\3\6) (\(area)\is the address of a two-word EMT argument block) (\(time)\is a pointer to two words of time (high order first, low order second), expressed in ticks)
(POSTSCRIPT\FIG2_66.EPS\4)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\No queue element was available.) (.UNLOCK) (EMT 347)

(.UNLOCK programmed requestEMT 347) (.UNLOCK programmed requestdescription) The .UNLOCK request releases the User Service Routine (USR) from memory if it was placed there with a .LOCK request. (indent\1\smallskip)(.UNLOCK)

Errors: None. (.UNMAP) (Mapping) (EMT 375, Code 36, Subcode 5)

(.UNMAP programmed requestEMT 375, Code 36) (.UNMAP programmed requestdescription)

The .UNMAP request unmaps a window and makes inaccessible that portion of the program's virtual address space. When an unmap operation is performed for a virtual job, attempts to access the unmapped address space cause a memory management fault. For a privileged job, the default (Kernel) mapping is restored when a window is unmapped. (indent\1\smallskip)(.UNMAP area,addr)

where:

(KEEP) (3\3\6) (\(area)\is the address of a two-word argument block) (\(addr)\is the address of the window control block that describes the window to be unmapped)
(POSTSCRIPT\FIG2_27.EPS\4)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##3\An illegal window identifier was specified.) (\##5\The specified window was not already mapped.) (.UNPROTECT) (EMT 375, Code 31, Subcode 1)

(.UNPROTECT programmed requestEMT 375, Code 31) (.UNPROTECT programmed requestdescription) (.UNPROTECT programmed requestSee also .PROTECT) The .UNPROTECT request is the complement of the .PROTECT request. It cancels any protected vectors in the 0 to 476 area. An attempt to unprotect a vector that a job has not protected is ignored. (indent\1\smallskip)(.UNPROTECT area,addr)

where:

(KEEP) (3\3\6) (\(area)\is the address of a two-word EMT argument block) (\(addr)\is the address of the protected vector pair that is going to be canceled. The argument (addr\ITALIC) must be a multiple of four, and must be less than or equal to 474(8))
(POSTSCRIPT\fig2_42.EPS\4)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##1\Address (addr) is greater than 474(8) or is not a multiple of four.) (.WAIT) (EMT 374, Code 0) (.WAIT programmed requestEMT 374, Code 0) (.WAIT programmed requestdescription) (.WAIT programmed requestSee also .READ/.WRITE)

The .WAIT request suspends program execution until all input/output requests on the specified channel are completed. The .WAIT request, combined with the .READ/.WRITE requests, makes double buffering a simple process.

.WAIT also conveys information through its error returns. An error is returned if the channel is not open or the last I/O operation resulted in a hardware error. (indent\1\smallskip)(.WAIT chan)

(POSTSCRIPT\FIG2_68.EPS\2)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Channel specified is not open.) (\##1\Hardware error occurred on the previous I/O operation on this channel.) (.WDBBK) (Mapping) (Macro Expansion)

(.WDBBK macrodescription) (.WDBBK macroSee also .WDBDF) The .WDBBK macro defines symbols for the window definition block and reserves space for it. Information provided to the arguments of this macro permits the creation and mapping of a window through the use of the .CRAW request. Note that .WDBBK automatically invokes .WDBDF. (indent\1\smallskip)(.WDBBK wnapr,wnsiz[,wnrid][,wnoff][,wnlen][,wnsts])

where:

(KEEP) (3\3\6) (\(wnapr)\is the number of the Active Page Register set that includes the window's base address. A window must start on a 4K-word boundary. The valid range of values is from 0 through 7) (\(wnsiz)\is the size of this window (expressed in 32-word units)) (\(wnrid)\is the identification for the region to which this window maps. Use the value of R.GID from the region definition block for this argument after you create the region to which this window must map) (\(wnoff)\is the offset into the region at which to start mapping this window (expressed in 32-word units). The default is 0, which means that the window starts mapping at the region's base address) (\(wnlen)\is the amount of this window to map (expressed in 32-word units). The default value is 0, which maps as much of the window as possible) (\(wnsts)\is the window status word. Set bit 8, called WS.MAP, to cause .CRAW to perform an implied mapping operation) (.WDBDF) (Mapping) (Macro Expansion)

(.WDBDF macrodescription) (.WDBDF macroSee also .WDBBK) The .WDBDF macro defines the symbolic offset names for the window definition block and the names for the window status word bit patterns. In addition, this macro also defines the length, but doesn't reserve any space for the definition block. (See .WDBBK). (indent\1\smallskip)(.WDBDF)

where:

The .WDBDF macro expands as follows: W.NID =: 0 ;Window ID W.NAPR =: 1 ;PAR number W.NBAS =: 2. ;Base address W.NSIZ =: 4. ;Window size W.NRID =: 6. ;Region ID W.NOFF =: ^o10 ;Window offset W.NLEN =: ^o12 ;Window length W.NSTS =: ^o14 ;Window status W.NLGH =: ^o16 ;Length of WDB WS.CRW =: ^o100000 ;Window created WS.UNM =: ^o40000 ;One or more windows unmapped WS.ELW =: ^o20000 ;One or more windows eliminated WS.DSI =: ^o10000 ;D-space inactive WS.D=WS.I=1 WS.IDD =: ^o4000 ;D-space window different WS.D=WS.I=1 WS.OVR =: ^o2000 ;reserved WS.RO =: ^o1000 ;Window is read only WS.MAP =: ^o400 ;Create and map window WS.SPA =: ^o14 ;Bit field for address space(s) WS.D =: ^o10 ;Map into data space WS.I =: ^o4 ;Map into instruction space WS.MOD =: ^o3 ;Field to indicate mode WS.U =: ^o0 ;User WS.S =: ^o1 ;Supervisor WS.C =: ^o2 ;Current (.WRITE) (EMT 375, Code 11)

(.WRITE programmed requestEMT 375, Code 11) (.WRITE programmed requestdescription) (.WRITC programmed requestEMT 375, Code 11) (.WRITC programmed requestdescription) (.WRITW programmed requestEMT 375, Code 11) (.WRITW programmed requestdescription)

The .WRITE request transfers a specified number of words from memory to the specified channel. Control returns to your program immediately after the request is queued. (indent\1\smallskip)(.WRITE area,chan,buf,wcnt,blk[,BMODE=strg])

where: (#)

(multipage) (3\3\12) (\(area)\is the address of a five-word EMT argument block) (\(chan)\is a channel number.) (\(buf)\is the address of the memory buffer to be used for output) (\(wcnt)\is the number of words to be written) (\(blk)\is the block number to be written. For a file-structured .LOOKUP or .ENTER, the block number is relative to the start of the file. For a non-file-structured .LOOKUP or .ENTER, the block number is the absolute block number on the device. The user program should normally update (blk\ITALIC) before it is used again. Some devices, such as LP, may assign the (blk\ITALIC) argument special meaning. For example, if (blk\ITALIC) = 0, LP: issues a form feed) (\(BMODE = strg)\where (strg\ITALIC) is:
(2\5) (Value\Description) (UD\User data space (default)) (UI\User instruction space) (SD\Supervisor data space) (SI\Supervisor instruction space) (CD\Kernel data space) (CI\Kernel instruction space)

Specifying (BMODE\ITALIC): (UNNUMBERED) Loads an additional word in the EMT request block area containing a bit pattern matching the code specified for (BMODE\ITALIC). Specifies (mode\ITALIC) and (space\ITALIC) for the (buff\ITALIC) argument. Is a valid option only in a fully mapped environment. )

(POSTSCRIPT\FIG2_69.EPS\13)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Attempted to write past end-of-file.) (\##1\Hardware error.) (\##2\Channel was not opened.) (.WRITC) (EMT 375, Code 11)

The .WRITC request transfers a specified number of words from memory to a specified channel. Control returns to the user program immediately after the request is queued. Execution of the user program continues until the request is fulfilled, then control passes to the routine specified in the request. When the completion routine encounters a RETURN, control returns to the user program. (indent\1\smallskip)(.WRITC area,chan,buf,wcnt,crtn,blk[,BMODE][,CMODE])

where:

(multipage) (3\3\12) (\(area)\is the address of a five-word EMT argument block) (\(chan)\is a channel number.) (\(buf)\is the address of the memory buffer to be used for output) (\(wcnt)\is the number of words to be written) (\(crtn)\is the address (>500 octal) of the completion routine to be entered) (\(blk)\is the block number to be written. For a file-structured .LOOKUP or .ENTER, the block number is relative to the start of the file. For a non-file-structured .LOOKUP or .ENTER, the block number is the absolute block number on the device. Your program should normally update (blk\ITALIC) before it is used again. See the (DEV_BOOK) for the significance of the block number for devices such as line printers.) (\(BMODE = strg)\where (strg\ITALIC) is:
(2\5) (Value\Description) (UD\User data space (default)) (UI\User instruction space) (SD\Supervisor data space) (SI\Supervisor instruction space) (CD\Kernel data space) (CI\Kernel instruction space)

Specifying (BMODE\ITALIC): (UNNUMBERED) Loads an additional word in the EMT request block area containing a bit pattern matching the code specified for (BMODE\ITALIC). Specifies (mode\ITALIC) and (space\ITALIC) for the (buff\ITALIC) argument. Is a valid option only in a fully mapped environment. ) (\(CMODE = strg)\where (strg\ITALIC) is:

(2\5) (Value\Description) (U\User space (default)) (S\Supervisor space)

Specifying (CMODE\ITALIC): (UNNUMBERED) Loads an additional word in the EMT request block area containing a bit pattern matching the code specified for (CMODE\ITALIC). Specifies the (space\ITALIC) for the (crtn\ITALIC) argument. Is a valid option only for fully mapped monitors. )

(POSTSCRIPT\FIG2_70.EPS\13)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\End-of-file on output. Tried to write outside limits of file.) (\##1\Hardware error occurred.) (\##2\Specified channel is not open.) (.WRITW) (EMT 375, Code 11)

The .WRITW request transfers a specified number of words from memory to the specified channel. Control returns to your program when the .WRITW is complete. (indent\1\smallskip)(.WRITW area,chan,buf,wcnt,blk[,BMODE=strg])

where: (#)

(multipage) (3\3\12) (\(area)\is the address of a five-word EMT argument block) (\(chan)\is a channel number in the range 0 to 376(8)) (\(buf)\is the address of the buffer to be used for output) (\(wcnt)\is the number of words to be written. The number must be positive) (\(blk)\is the block number to be written. For a file-structured .LOOKUP or .ENTER, the block number is relative to the start of the file. For a non-file-structured .LOOKUP or .ENTER, the block number is the absolute block number on the device. Your program should normally update (blk\ITALIC) before it is used again. See the (DEV_BOOK) for the significance of the block number for devices such as line printers and paper tape punchers) (\(BMODE = strg)\where (strg\ITALIC) is:
(2\5) (Value\Description) (UD\User data space (default)) (UI\User instruction space) (SD\Supervisor data space) (SI\Supervisor instruction space) (CD\Kernel data space) (CI\Kernel instruction space)

Specifying (BMODE\ITALIC): (UNNUMBERED) Loads an additional word in the EMT request block area containing a bit pattern matching the code specified for (BMODE\ITALIC). Specifies (mode\ITALIC) and (space\ITALIC) for the (buff\ITALIC) argument. Is a valid option only in a fully mapped environment. )

(POSTSCRIPT\FIG2_71.EPS\13)

Errors: (#)

(3\3\6) (\(Code\BOLD)\(Explanation\BOLD)) (\##0\Attempted to write past EOF.) (\##1\Hardware error.) (\##2\Channel was not opened.) ***************************************************** ************************S1437C3 CHAPT 3 OF MRM_BOOK************ DATE: August 8 CUT OUT ALL JIMWMS MARKED TEXT CK OUT EMT CODE SUBCODE to match with EMT_LIST where hibit=code;lowbit=subcode subcode only when there are several for that code. CK THAT FIGURES ARE RIGHT CUT PAIRS (E.G., SUSPND/RESUM) AND RELOCATE THEM ALPHABETICALLY **********************************************************

This chapter summarizes important information about the following programmed requests: calls:

(MULTIPAGE) (6\10\10\10\10\10) (.ABTIO\.DRAST\.GMCX\.POKE\.SERR\.WRITE) (.ADDR\.DRBEG\.GTIM\.PRINT\.SETTOP\.WRITC) (.ASSUME\.DRBOT\.GTJB\.PROTECT\.SFDAT\.WRITW) (.BR\.DRDEF\.GTLIN\.PURGE\.SFINF\) (.CALLK\.DREND\.GVAL\.PVAL\.SFPA\) (.CALLS\.DREST\.HERR\.QELDF\.SFSTAT\) (.CDFN\.DRFIN\.HRESET\.QSET\SOB\) (.CHAIN\.DRINS\.INTEN\.RCTRLO\.SPCPS\) (.CHCOPY\.DRPTR\.LOCK\.RCVD\.SPFUN\) (.CKXX\.DRSET\.LOOKUP\.RCVDC\.SPND\) (.CLOSE\.DRSPF\.MAP\.RCVDW\.SRESET\) (.CLOSZ\.DRTAB\.MFPS\.RDBBK\.SYNCH\) (.CMAP\.DRUSE\.MRKT\.RDBDF\.TIMIO\) (.CMKT\.DRVTB\.MSDS\.READ\.TLOCK\) (.CNTXSW\.DSTAT\.MTATCH\.READC\.TRPSET\) (.CRAW\.ELAW\.MTDTCH\.READW\.TTINR\) (.CRRG\.ELRG\.MTGET\.RELEAS\.TTOUTR\) (.CSIGEN\.ENTER\.MTIN\.RENAME\.TTYIN\) (.CSISPS\.EXIT\.MTOUT\.REOPEN\.TTYOUT\) (.CSTAT\.FETCH\.MTPRNT\.RSUM\.TWAIT\) (.CTIMIO\.FORK\.MTPS\.SAVESTATUS\.UNLOCK\) (.DATE\.FPROT\.MRTCTO\.SCCA\.UNMAP\) (.DEBUG\.GCMAP\.MTSET\.SDAT\.UNPROTECT\) (.DELETE\.GFDAT\.MTSTAT\.SDATC\.WAIT\) (.DEVICE\.GFINF\.MWAIT\.SDATW\.WDBBK\) (.DPRINT\.GFSTA\.PEEK\.SDTTM\.WDBDF\)