REQUEU          - REQUEUE REQUEST TO DRIVER                      21-AUG-1978 22:48:03   VAX-11 MACRO X0.3-11               Page   1

X0003                                                                                                                            (1)



                                     0000     1 	.TITLE	REQUEU - REQUEUE REQUEST TO DRIVER

                                     0000     2 	.IDENT	"X0003"

                                     0000     3 

                                     0000     4 ;

                                     0000     5 ; COPYRIGHT (C) 1976

                                     0000     6 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS 01754

                                     0000     7 ;

                                     0000     8 ; THIS SOFTWARE IS FURNISHED  UNDER A LICENSE FOR USE ONLY ON A SINGLE

                                     0000     9 ; COMPUTER  SYSTEM AND  MAY BE  COPIED ONLY WITH  THE INCLUSION OF THE

                                     0000    10 ; ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE, OR ANY OTHER COPIES THEREOF,

                                     0000    11 ; MAY NOT BE PROVIDED OR  OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON

                                     0000    12 ; EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE

                                     0000    13 ; TERMS.  TITLE TO AND  OWNERSHIP OF THE  SOFTWARE  SHALL AT ALL TIMES

                                     0000    14 ; REMAIN IN DEC.

                                     0000    15 ;

                                     0000    16 ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE

                                     0000    17 ; AND SHOULD  NOT BE CONSTRUED  AS A COMMITMENT  BY DIGITAL  EQUIPMENT

                                     0000    18 ; CORPORATION.

                                     0000    19 ;

                                     0000    20 ; DEC ASSUMES  NO  RESPONSIBILITY  FOR  THE USE OR  RELIABILITY OF ITS

                                     0000    21 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.

                                     0000    22 

                                     0000    23 ;++

                                     0000    24 ;

                                     0000    25 ; FACILITY:  F11ACP STRUCTURE LEVEL 1

                                     0000    26 ;

                                     0000    27 ; ABSTRACT:

                                     0000    28 ;

                                     0000    29 ;	THIS ROUTINE REQUEUES THE INDICATED I/O PACKET TO THE DEVICE

                                     0000    30 ;	DRIVER FOR WHICH IT WAS ORIGINALLY INTENDED.

                                     0000    31 ;

                                     0000    32 ; ENVIRONMENT:

                                     0000    33 ;

                                     0000    34 ;	STARLET OPERATING SYSTEM, INCLUDING PRIVILEGED SYSTEM SERVICES

                                     0000    35 ;	AND INTERNAL EXEC ROUTINES. THIS ROUTINE MUST BE CALLED IN

                                     0000    36 ;	KERNEL MODE.

                                     0000    37 ;

                                     0000    38 ; AUTHOR:  ANDREW C. GOLDSTEIN  14-MAR-78  10:43

                                     0000    39 ;

                                     0000    40 ; MODIFIED BY:

                                     0000    41 ;

                                     0000    42 ;  , VERSION  ,

                                     0000    43 ; 01	- 

                                     0000    44 ;--

                                     0000    45 

                                     0000    46 ;

                                     0000    47 ; EQUATED SYMBOLS:

                                     0000    48 ;

                           00000004  0000    49 PACKET	=  4				; ADDRESS OF I/O PACKET ARG

                           00000008  0000    50 LBN	=  8				; STARTING LBN OF TRANSFER

                           0000000C  0000    51 UNMAPPED= 12				; COUNT OF UNMAPPED BLOCKS

                                     0000    52 

                                     0000    53 	$IRPDEF				; DEFINE I/O PACKET OFFSETS

                                     0000    54 	$IODEF				; DEFINE I/O FUNCTION CODES

REQUEU          - REQUEUE REQUEST TO DRIVER                      21-AUG-1978 22:48:03   VAX-11 MACRO X0.3-11               Page   2

X0003                                                                                                                            (2)



                                     0000    56 ;++

                                     0000    57 ;

                                     0000    58 ; FUNCTIONAL DESCRIPTION:

                                     0000    59 ;

                                     0000    60 ;	THIS ROUTINE REQUEUES THE INDICATED I/O PACKET TO THE DEVICE

                                     0000    61 ;	DRIVER FOR WHICH IT WAS ORIGINALLY INTENDED. IT TRANSLATES THE

                                     0000    62 ;	LBN INTO THE CORRESPONDING PHYSICAL BLOCK NUMBER AND CONVERTS THE

                                     0000    63 ;	I/O FUNCTION CODE INTO THE APPROPRIATE PHYSICAL FUNCTION.

                                     0000    64 ;	THE NUMBER OF UNMAPPED BLOCKS IS DEDUCTED FROM THE BYTE COUNT.

                                     0000    65 ;

                                     0000    66 ; CALLING SEQUENCE:

                                     0000    67 ;	CALL REQUEUE_REQ (ARG1, ARG2, ARG3)

                                     0000    68 ;

                                     0000    69 ; INPUT PARAMETERS:

                                     0000    70 ;	ARG1: ADDRESS OF I/O PACKET

                                     0000    71 ;	ARG2: STARTING LBN OF TRANSFER

                                     0000    72 ;	ARG3: NUMBER OF BLOCKS UNMAPPED

                                     0000    73 ;

                                     0000    74 ; IMPLICIT INPUTS:

                                     0000    75 ;	CURRENT_UCB: ADDRESS OF REQUEST UCB

                                     0000    76 ;

                                     0000    77 ; OUTPUT PARAMETERS:

                                     0000    78 ;	NONE

                                     0000    79 ;

                                     0000    80 ; IMPLICIT OUTPUTS:

                                     0000    81 ;	NONE

                                     0000    82 ;

                                     0000    83 ; ROUTINE VALUE:

                                     0000    84 ;	NONE

                                     0000    85 ;

                                     0000    86 ; SIDE EFFECTS:

                                     0000    87 ;	REQUEST QUEUED TO UCB

                                     0000    88 ;

                                     0000    89 ;--

                                     0000    90 

                                 00000000    91 	.PSECT	$CODE$,NOWRT,LONG

                                     0000    92 

                                     0000    93 REQUEUE_REQ::

                               003C  0000    94 	.WORD	^M<R2,R3,R4,R5>		; SAVE REGISTERS

            53         04 AC     D0  0002    95 	MOVL	PACKET(AP),R3		; GET PACKET ADDRESS

            55       0000'CF     D0  0006    96 	MOVL	W^CURRENT_UCB,R5	; GET UCB ADDRESS

         0C AC            09     78  000B    97 	ASHL	#9,UNMAPPED(AP),R0	; GET BYTE COUNT OF UNMAPPED BLOCKS

                          50         000F       

                          10     13  0010    98 	BEQL	10$			; BRANCH IF ALL MAPPED - NO FIXUP

         32 A3            50     A2  0012    99 	SUBW	R0,IRP$W_BCNT(R3)	; AND SUBTRACT FROM TRANSFER COUNT

         32 A3       01FF 8F     A0  0016   100 	ADDW	#511,IRP$W_BCNT(R3)	; ROUND BYTE COUNT TO NEXT BLOCK BOUNDARY

         32 A3       01FF 8F     AA  001C   101 	BICW	#511,IRP$W_BCNT(R3)	; IN CASE FULL BYTE COUNT CONTAINS A PARTIAL BLOCK

            50         08 AC     D0  0022   102 10$:	MOVL	LBN(AP),R0		; GET STARTING LBN

                 00000000'9F     16  0026   103 	JSB	@#IOC$CVTLOGPHY		; CONVERT TO PHYSICAL BLOCK

                 00000000'9F     16  002C   104 	JSB	@#EXE$INSIOQ		; AND QUEUE TO DRIVER

                                 04  0032   105 	RET

                                     0033   106 

                                     0033   107 

                                     0033   108 

                                     0033   109 	.END

REQUEU          - REQUEUE REQUEST TO DRIVER                      21-AUG-1978 22:48:03   VAX-11 MACRO X0.3-11               Page   3

SYMBOL TABLE                                                                                                                     (2)



AQB_TYPE       = 00000005            IO$V_CTRLCAST  = 00000008            IO$_REWIND     = 00000024            

BIT...         = 0000000A            IO$V_CTRLYAST  = 00000007            IO$_REWINDOFF  = 00000022            

BITMAP_TYPE    = 00000001            IO$V_CVTLOW    = 00000008            IO$_SEARCH     = 00000009            

CURRENT_UCB      ********   X   03   IO$V_DATACHECK = 0000000E            IO$_SEEK       = 00000002            

DIRECTORY_TYPE = 00000002            IO$V_DELETE    = 00000008            IO$_SENSECHAR  = 0000001B            

EXE$INSIOQ       ********   X   03   IO$V_DMOUNT    = 0000000A            IO$_SENSEMODE  = 00000027            

FCB_TYPE       = 00000000            IO$V_DSABLMBX  = 0000000A            IO$_SETCHAR    = 0000001A            

GBL...         = 00000000            IO$V_ENABLMBX  = 00000007            IO$_SETMODE    = 00000023            

HEADER_TYPE    = 00000000            IO$V_FCODE     = 00000000            IO$_SKIPFILE   = 00000025            

INDEX_TYPE     = 00000003            IO$V_HANGUP    = 00000009            IO$_SKIPRECORD = 00000026            

IO$M_ABORT     = 00000100            IO$V_INHERLOG  = 0000000B            IO$_SPACEFILE  = 00000002            

IO$M_ACCESS    = 00000040            IO$V_INHEXTGAP = 0000000C            IO$_SPACERECORD= 00000009            

IO$M_ATTNAST   = 00000100            IO$V_INHRETRY  = 0000000F            IO$_STARTSPNDL = 00000019            

IO$M_BINARY    = 00000040            IO$V_INHSEEK   = 0000000C            IO$_UNLOAD     = 00000001            

IO$M_CANCTRLO  = 00000040            IO$V_INTERRUPT = 00000006            IO$_VIRTUAL    = 0000003F            

IO$M_COMMOD    = 00000040            IO$V_INTSKIP   = 00000008            IO$_WRITECHECK = 0000000A            

IO$M_CREATE    = 00000080            IO$V_MOUNT     = 00000009            IO$_WRITECHECKH= 00000018            

IO$M_CTRLCAST  = 00000100            IO$V_NOECHO    = 00000006            IO$_WRITEHEAD  = 0000000D            

IO$M_CTRLYAST  = 00000080            IO$V_NOFILTR   = 00000009            IO$_WRITELBLK  = 00000020            

IO$M_CVTLOW    = 00000100            IO$V_NOFORMAT  = 00000008            IO$_WRITEMARK  = 0000001C            

IO$M_DATACHECK = 00004000            IO$V_NOW       = 00000006            IO$_WRITEOF    = 00000028            

IO$M_DELETE    = 00000100            IO$V_NOWAIT    = 00000007            IO$_WRITEPBLK  = 0000000B            

IO$M_DMOUNT    = 00000400            IO$V_PACKED    = 00000007            IO$_WRITETRACKD= 0000000F            

IO$M_DSABLMBX  = 00000400            IO$V_PURGE     = 0000000B            IO$_WRITEVBLK  = 00000030            

IO$M_ENABLMBX  = 00000080            IO$V_READATTN  = 00000007            IOC$CVTLOGPHY    ********   X   03   

IO$M_FCODE     = 0000003F            IO$V_REVERSE   = 00000006            IRP$B_CARCON     00000038            

IO$M_HANGUP    = 00000200            IO$V_SHUTDOWN  = 00000007            IRP$B_EFN        00000022            

IO$M_INHERLOG  = 00000800            IO$V_STARTUP   = 00000006            IRP$B_PRI        00000023            

IO$M_INHEXTGAP = 00001000            IO$V_SYNCH     = 00000009            IRP$B_RMOD       0000000B            

IO$M_INHRETRY  = 00008000            IO$V_TIMED     = 00000007            IRP$B_TYPE       0000000A            

IO$M_INHSEEK   = 00001000            IO$V_TRMNOECHO = 0000000C            IRP$C_LENGTH     0000004C            

IO$M_INTERRUPT = 00000040            IO$V_WRTATTN   = 00000008            IRP$K_LENGTH     0000004C            

IO$M_INTSKIP   = 00000100            IO$_ACCESS     = 00000032            IRP$L_AST        00000010            

IO$M_MOUNT     = 00000200            IO$_ACPCONTROL = 00000038            IRP$L_ASTPRM     00000014            

IO$M_NOECHO    = 00000040            IO$_CREATE     = 00000033            IRP$L_DIAGBUF    00000044            

IO$M_NOFILTR   = 00000200            IO$_DEACCESS   = 00000034            IRP$L_IOQBL      00000004            

IO$M_NOFORMAT  = 00000100            IO$_DELETE     = 00000035            IRP$L_IOQFL      00000000            

IO$M_NOW       = 00000040            IO$_DIAGNOSE   = 0000001D            IRP$L_IOSB       00000024            

IO$M_NOWAIT    = 00000080            IO$_DRVCLR     = 00000004            IRP$L_IOST1      00000034            

IO$M_PACKED    = 00000080            IO$_ERASETAPE  = 00000006            IRP$L_IOST2      00000038            

IO$M_PURGE     = 00000800            IO$_LOGICAL    = 0000002F            IRP$L_MEDIA      00000034            

IO$M_READATTN  = 00000080            IO$_MODIFY     = 00000036            IRP$L_PID        0000000C            

IO$M_REVERSE   = 00000040            IO$_MOUNT      = 00000039            IRP$L_SEGVBN     00000040            

IO$M_SHUTDOWN  = 00000080            IO$_NOP        = 00000000            IRP$L_SEQNUM     00000048            

IO$M_STARTUP   = 00000040            IO$_OFFSET     = 00000006            IRP$L_SVAPTE     0000002C            

IO$M_SYNCH     = 00000200            IO$_PACKACK    = 00000008            IRP$L_TT_TERM    00000038            

IO$M_TIMED     = 00000080            IO$_PHYSICAL   = 0000001F            IRP$L_UCB        0000001C            

IO$M_TRMNOECHO = 00001000            IO$_READHEAD   = 0000000E            IRP$L_WIND       00000018            

IO$M_WRTATTN   = 00000100            IO$_READLBLK   = 00000021            IRP$M_BUFIO    = 00000001            

IO$S_FCODE     = 00000006            IO$_READPBLK   = 0000000C            IRP$M_CHAINED  = 00000020            

IO$V_ABORT     = 00000008            IO$_READPRESET = 00000019            IRP$M_COMPLX   = 00000008            

IO$V_ACCESS    = 00000006            IO$_READPROMPT = 00000037            IRP$M_DIAGBUF  = 00000080            

IO$V_ATTNAST   = 00000008            IO$_READTRACKD = 00000010            IRP$M_FUNC     = 00000002            

IO$V_BINARY    = 00000006            IO$_READVBLK   = 00000031            IRP$M_MBXIO    = 00000400            

IO$V_CANCTRLO  = 00000006            IO$_RECAL      = 00000003            IRP$M_PAGIO    = 00000004            

IO$V_COMMOD    = 00000006            IO$_RELEASE    = 00000005            IRP$M_PHYSIO   = 00000100            

IO$V_CREATE    = 00000007            IO$_RETCENTER  = 00000007            IRP$M_PRIVIO   = 00000200            

REQUEU          - REQUEUE REQUEST TO DRIVER                      21-AUG-1978 22:48:03   VAX-11 MACRO X0.3-11               Page   4

SYMBOL TABLE                                                                                                                     (2)



IRP$M_SWAPIO   = 00000040            

IRP$M_VIRTUAL  = 00000010            

IRP$Q_NT_PRVMSK  0000003C            

IRP$S_FCODE    = 00000006            

IRP$S_FMOD     = 0000000A            

IRP$S_MODE     = 00000002            

IRP$V_BUFIO    = 00000000            

IRP$V_CHAINED  = 00000005            

IRP$V_COMPLX   = 00000003            

IRP$V_DIAGBUF  = 00000007            

IRP$V_FCODE    = 00000000            

IRP$V_FMOD     = 00000006            

IRP$V_FUNC     = 00000001            

IRP$V_MBXIO    = 0000000A            

IRP$V_MODE     = 00000000            

IRP$V_PAGIO    = 00000002            

IRP$V_PHYSIO   = 00000008            

IRP$V_PRIVIO   = 00000009            

IRP$V_SWAPIO   = 00000006            

IRP$V_VIRTUAL  = 00000004            

IRP$W_ABCNT      0000003C            

IRP$W_BCNT       00000032            

IRP$W_BOFF       00000030            

IRP$W_CHAN       00000028            

IRP$W_FUNC       00000020            

IRP$W_OBCNT      0000003E            

IRP$W_SIZE       00000008            

IRP$W_STS        0000002A            

IRP$W_TT_PRMPT   0000003C            

LBN            = 00000008            

MVL_TYPE       = 00000004            

PACKET         = 00000004            

REQUEUE_REQ      00000000 RG    03   

RVT_TYPE       = 00000003            

UNMAPPED       = 0000000C            

VCB_TYPE       = 00000002            

WCB_TYPE       = 00000001            





PROGRAM SECTION SYNOPSIS



.  ABS  .        00000000      00     NOPIC   USR   CON   ABS   LCL NOSHR NOEXE NORD  NOWRT BYTE  

. BLANK .        00000000      01     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD    WRT BYTE  

$ABS$            0000004C      02     NOPIC   USR   CON   ABS   LCL NOSHR   EXE   RD    WRT BYTE  

$CODE$           00000033      03     NOPIC   USR   CON   REL   LCL NOSHR   EXE   RD  NOWRT LONG  





THERE WERE NO ERRORS OR WARNINGS.

19752. BYTES LEFT IN FREE MEMORY POOL.

2238. BYTES OF RECLAIMED MEMORY.

OBJ$:REQUEU,LIS$:REQUEU/-SP=EXECML$/ML,SRC$:FCPDEF,REQUEU

3 MLB DIR RDS - 313 GETS TO DEFINE 11 MACROS. 26 INTER. FILE WRITES. 

