VFYCMD M0105, VFY COMMAND RECEI	MACRO M1110  22-AUG-78 00:36

TABLE OF CONTENTS



     7-    1	**** VFYCMD VERSION M0105 ****

     7-   36	COMMAND RECEIVER

VFYCMD M0105, VFY COMMAND RECEI	MACRO M1110  22-AUG-78 00:36  PAGE 7





      1						.TITLE	VFYCMD M0105, VFY COMMAND RECEIVER

						.SBTTL	**** VFYCMD VERSION M0105 ****

						.IDENT	/M0105/

      2					; ALTERED:

      3					; ANDREW C. GOLDSTEIN  26-JUL-78  10:20

      4					;

      5					; COPYRIGHT (C) 1977

      6					; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS 01754

      7					;

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

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

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

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

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

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

     14					; REMAIN IN DEC.

     15					;

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

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

     18					; CORPORATION.

     19					;

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

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

     22

     23					; PETER H. LIPMAN 5-NOV-74

     24					;

     25					;	DHC001	9/6/77	ADD RETURN WITH STATUS

     26					;

     27						.MCALL	FHDL2$,HMBL2$	;FILE HEADER & HOME BLOCK OFFSETS.

     28	000000					FHDL2$	DEF$L		;DEFINE FILE HEADER OFFSETS LOCALLY.

     29	000000					HMBL2$	DEF$L		;DEFINE HOME BLOCK OFFSETS LOCALLY.

     30	000000					FLDSOF			;DEFINE THE DESCRIPTOR POINTER OFFSETS

     31						.MCALL	GCMLD$

     32	000000					GCMLD$			;DEFINE THE GCML BLOCK OFFSETS LOCALLY

     33						.MCALL	CALL,RETURN,FINIT$,GLUN$S,GPRT$S,GTSK$S,CLOSE$

     34						.MCALL	CSI$1,CSI$2,EXIT$S

     35

     36						.SBTTL	COMMAND RECEIVER

     37	000000					PURE.I

     38					;

     39	000000				NOROOM:	ERROUT	ER17		;NOT ENOUGH DYNAMIC MEMORY

	000000	104402 				TRAP	X

	000002	000000G				.WORD	ER17SZ

	000004	000000G				.WORD	ER17MG

     40	000006				EXIT::									;DHC001

     41	000006	016700 	000000G			MOV	.EXSTS,R0	; LOAD RETURN STATUS			;DHC001

     42	000012	100002 				BPL	5$		; TEST FOR STATUS SET			;DHC001

     43	000014	012700 	000000G			MOV	#EX$SUC,R0	; SET STATUS TO SUCCESS			;DHC001

     44	000020				5$:									;DHC001

     45	000020	000167 	000000G			JMP	$EXST		; EXIT VFY, WITH STATUS			;DHC001

     46														;**-1

VFYCMD M0105, VFY COMMAND RECEI	MACRO M1110  22-AUG-78 00:36  PAGE 8

COMMAND RECEIVER



     48					;

     49					; INITIALIZE VFY - STARTUP ONLY

     50					;

     51	000024	010667 	000000G		.INIT::	MOV	SP,SAVSP

     52	000030					FINIT$			;INITIALIZE FCS

     53	000034					GLUN$S	#CMDLUN,#TIDEV	;GET THE CMD OUTPUT DEVICE AND UNIT

     54	000052	105067 	000003G			CLRB	TIDEV+3

     55

     56						.IF	GT,R$$DYM

     57	000056					GPRT$S	,#OUTREC	;GET PARTITION PARAMETERS TO GET BASE ADR

     58	000074	013700 	000000G			MOV	@#$DSW,R0	;R0=BASE ADDRESS OF TASK

     59	000100					GTSK$S	#OUTREC		;GET TASK PARAMETERS

     60	000112	066700 	000032G			ADD	OUTREC+G.TSTS,R0 ;R0=TOP OF "APPARENT" ADDRESS SPACE

     61

     62						.IFF

     63						MOV	#.DYB1,.TOPAD	;SET TOPAD TO BASE OF DYNAMIC REGION

     64						MOV	#.DYB2,R0	;AND R0 TO TOP OF IT

     65						.ENDC

     66

     67	000116	166700 	000000G			SUB	.TOPAD,R0	;R0=NO. OF BYTES OF DYNAMIC MEMORY

     68	000122	100002 				BPL	5$		; BRANCH IF LESS THAN 16K

     69	000124	012700 	077777 			MOV	#77777,R0	; LIMIT SPACE TO 16K TO AVOID BLOWING RQLCB

     70	000130	042700 	000003 		5$:	BIC	#3,R0		;FILE STORAGE REGION MUST HAVE MULT OF 4 BYTES

     71	000134	020027 	000000C			CMP	R0,#4*<1000+S.BFHD> ;ENOUGH BUFFER SPACE TO RUN AT ALL?

     72	000140	103717 				BLO	NOROOM		;BRANCH IF NO

     73	000142	010067 	000000G			MOV	R0,.DYSIZ	;SET SIZE IN BYTES OF DYNAMIC MEMORY

     74	000146	016767 	000000G	000000G		MOV	.TOPAD,.DYBUF	;STORE ADDRESS OF BUFFER TO RELEASE TO FSR

     75	000154	010067 	000000G			MOV	R0,.DYBYT	;STORE SIZE OF BUFFER TO RELEASE TO FSR

     76	000160	112767 	000000C	000000C		MOVB	#FD.TTY!FD.REC!FD.CCL,GCMLCB+F.RCTL ;MCR COMMAND IS FROM TTY

     77	000166	152767 	000004 	000141G		BISB	#GE.CLO,GCMLCB+G.MODE ;GCML MUST ALWAYS CLOSE CMD FILE

     78

     79					;

     80					; RESTART ENTRY POINT, CLOSE FILES

     81					;

     82	000174				.RSTAR::

     83	000174	016706 	000000G			MOV	SAVSP,SP

     84	000200					CLOSE$	#BITMAP

     85	000210	012700 	000000G			MOV	#INDEX,R0

     86	000214					CLOSE$	R0

     87	000220					CLOSE$	#TBTMAP

     88	000230	012700 	000000G			MOV	#FDBOUT,R0

     89	000234					CALL	DETACH		;DETACH DEVICE IF NECESSARY

     90	000240					CLOSE$	R0		;AND CLOSE LISTING FILE

     91

     92					;

VFYCMD M0105, VFY COMMAND RECEI	MACRO M1110  22-AUG-78 00:36  PAGE 9

COMMAND RECEIVER



     94					;

     95					; GET ANOTHER COMMAND FROM THE COMMAND INPUT MEDIUM

     96					;

     97	000244	016701 	000000G			MOV	.DYBYT,R1	;ANY DYNAMIC BUFFER TO RELEASE?

     98	000250	001410 				BEQ	15$		;BRANCH IF NO

     99	000252	013700 	000000G			MOV	@#.FSRPT,R0	;ADDRESS OF LIST HEAD FOR FSR

    100	000256	016702 	000000G			MOV	.DYBUF,R2	;ADDRESS OF BUFFER TO RELEASE

    101	000262					CALL	$RLCB		;RELEASE IT TO THE FILE STORAGE REGION

    102	000266	005067 	000000G			CLR	.DYBYT		;SAY THAT BUFFER IS RELEASED

    103	000272	005067 	000000G		15$:	CLR	VFYCTL

    104	000276	005067 	000000G			CLR	TMPCTL

    105	000302	005067 	000000G			CLR	MLTALC

    106	000306	005067 	000000G			CLR	.RCBLK

    107	000312					CALL	GETCML		;GET THE NEXT COMMAND LINE

    108	000316	103633 				BCS	EXIT		;EXIT IF ERROR

    109					;

    110					; GOT A COMMAND, CHECK IT'S SYNTAX

    111	000320					CSI$1	#CSIBLK,GCMLCB+G.CMLD+2,GCMLCB+G.CMLD

    112	000344	016067 	000002 	000146G		MOV	C.CMLD(R0),GCMLCB+G.CMLD

    113	000352	103002 				BCC	25$

    114					;

    115					; SYNTAX ERROR

    116	000354					CALL	.SYNER

    117

    118					; GOT A SYNTACTICALLY CORRECT COMMAND LINE

    119					; NOW GET THE LISTING OUTPUT SPEC, THE TEMP BIT MAP SPEC

    120					; FROM THE OUTPUT SIDE OF THE CMD LINE, AND THE DEVICE TO

    121					; BE VERIFIED FROM THE INPUT SIDE.

    122	000360	012701 	000000G		25$:	MOV	#OFNPT,R1	;GET THE LISTING FILE SPEC

    123	000364					CALL	OUTCSI

    124	000370	103473 				BCS	80$		;BRANCH IF BAD SWITCH

    125	000372	012701 	000000G			MOV	#TBFNPT,R1	;GET THE TEMP BIT FILE SPEC

    126	000376					CALL	OUTCSI

    127	000402	103466 				BCS	80$

    128	000404	012701 	000000G			MOV	#IFNPT,R1

    129	000410					CALL	INCSI		;GET THE DEVICE TO  VERIFY

    130	000414	103461 				BCS	80$

    131	000416	012767 	000000G	000000C		MOV	#OFNPT,FDBOUT+F.DSPT ;INIT F.FNPT ASSUMING INPUT AND

    132	000424	012767 	000000G	000000C		MOV	#IFNPT,BITMAP+F.DSPT ;OUTPUT SPECS ARE PRESENT

    133	000432	012767 	000000G	000000C		MOV	#IFNPT,INDEX+F.DSPT

    134	000440	012767 	000000G	000000C		MOV	#TBFNPT,TBTMAP+F.DSPT

    135	000446	005767 	000000G			TST	INSPEC		;WAS INPUT SPECIFIER PRESENT

    136	000452	001010 				BNE	50$		;BRANCH IF YES

    137	000454	012767 	000000G	000000C		MOV	#OFNPT,BITMAP+F.DSPT ;USE OUTPUT SPEC FOR INPUT

    138	000462	012767 	000000G	000000C		MOV	#OFNPT,INDEX+F.DSPT

    139	000470	005067 	000000C			CLR	FDBOUT+F.DSPT	;SAY NO OUTPUT FILE NAME, USE DEFAULT

    140	000474	005767 	000000G		50$:	TST	TBSPEC		;IF NO TEMP BIT MAP SPEC

    141	000500	001002 				BNE	60$

    142	000502	005067 	000000C			CLR	TBTMAP+F.DSPT	;USE THE DEFAULT

    143	000506	016701 	000000C		60$:	MOV	BITMAP+F.DSPT,R1

    144	000512	012761 	000000G	000004 		MOV	#MFDNSZ,N.DIRD(R1) ;SET THE MFD DIRECTORY NAME

    145	000520	012761 	000000G	000006 		MOV	#MFDNMG,N.DIRD+2(R1)

    146	000526	032761 	000033 	000014 		BIT	#CS.DIF!CS.NMF!CS.WLD!CS.MOR,N.SPEC(R1)

    147	000534	001014 				BNE	85$		;ONLY DEVICE SHOULD BE SPECIFIED

    148	000536	032767 	000000G	000000G		BIT	#IDBIT,VFYCTL	;IDENTIFY THE VERSION?

    149	000544	001403 				BEQ	75$		;BRANCH IF NO

    150	000546					ERROUX	IDNT		;YES, TYPE THE VERSION

VFYCMD M0105, VFY COMMAND RECEI	MACRO M1110  22-AUG-78 00:36  PAGE 9-1

COMMAND RECEIVER



	000546	104403 				TRAP	X

	000550	000000G				.WORD	IDNTSZ

	000552	000000G				.WORD	IDNTMG

    151	000554	000177 	000000G		75$:	JMP	@.OPNF1

    152

    153					; ILLEGAL SWITCH OR VALUE

    154	000560				80$:	ERROUX	ER13

	000560	104403 				TRAP	X

	000562	000000G				.WORD	ER13SZ

	000564	000000G				.WORD	ER13MG

    155

    156					; ILLEGAL DEVICE SPECIFICATION

    157	000566				85$:	ERROUX	ER10

	000566	104403 				TRAP	X

	000570	000000G				.WORD	ER10SZ

	000572	000000G				.WORD	ER10MG

    158					;

    159					;

    160		000001 				.END

VFYCMD M0105, VFY COMMAND RECEI	MACRO M1110  22-AUG-78 00:36  PAGE 9-2

SYMBOL TABLE



BITMAP= ****** GX	GE.COM= 000001   	H.DRPR= 000070   	H.VDAT= 000074   	SC.MDL= 000200

CMDLUN= ****** GX	GE.CON= 000020   	H.DVTY= 000044   	H.VLEV= 000014   	S.APPD= 000010

CSIBLK= ****** GX	GE.EOF= 177766   	H.EFNU= 000016   	H.VOWN= 000054   	S.BFHD= ****** GX

CS.DIF= 000002   	GE.IND= 000002   	H.EFSQ= 000020   	H.VPRO= 000064   	S.FDB = 000140

CS.DVF= 000004   	GE.IOR= 177777   	H.ERVN= 000022   	H.VSMX= 000060   	S.FIDS= 000014

CS.EQU= 000040   	GE.LC = 000010   	H.FCHA= 000064   	H.WISZ= 000104   	S.FNAM= 000006

CS.INP= 000001   	GE.MDE= 177774   	H.FIEX= 000106   	IDBIT = ****** GX	S.FNB = 000036

CS.MOR= 000020   	GE.OPR= 177776   	H.FLEV= 000006   	IDNTMG= ****** GX	S.FNBW= 000017

CS.NMF= 000001   	GE.RBG= 177730   	H.FMAX= 000034   	IDNTSZ= ****** GX	S.FNTY= 000004

CS.OUT= 000002   	GE.SIZ= 000040   	H.FNUM= 000010   	IFNPT = ****** GX	S.FTYP= 000002

CS.WLD= 000010   	G.CMLD= 000146   	H.FOWN= 000074   	INCSI = ****** GX	S.HDHD= 000114

C.CMLD= 000002   	G.DPRM= 000160   	H.FPRO= 000100   	INDEX = ****** GX	S.IDHD= 000202

C.DEVD= 000006   	G.ERR = 000140   	H.FRVN= 000014   	INSPEC= ****** GX	S.MPHD= 000000

C.DIRD= 000012   	G.ISIZ= 000020   	H.FSEG= 000004   	I.BKDT= 000052   	S.NFEN= 000020

C.DSDS= 000006   	G.LUCW= 000004   	H.FSEQ= 000012   	I.CRDT= 000022   	TBFNPT= ****** GX

C.FILD= 000016   	G.LUFB= 000003   	H.HBLB= 000000   	I.EXDT= 000042   	TBSPEC= ****** GX

C.MKW1= 000024   	G.LUNA= 000000   	H.HBVB= 000020   	I.FNAM= 000000   	TBTMAP= ****** GX

C.MKW2= 000026   	G.LUNU= 000002   	H.IBLB= 000030   	I.RVDT= 000032   	TIDEV = ****** GX

C.SIZE= 000054   	G.MODE= 000141   	H.IBSZ= 000040   	I.RVNO= 000020   	TMPCTL= ****** GX

C.STAT= 000001   	G.PRFW= 000004   	H.IBVB= 000026   	I.ULAB= 000062   	UC.CON= 000200

C.SWAD= 000022   	G.PRPB= 000000   	H.IDOF= 000000   	MFDNMG= ****** GX	UC.DLK= 000100

C.TYPR= 000000   	G.PRPS= 000002   	H.IHLB= 000010   	MFDNSZ= ****** GX	VFYCTL= ****** GX

DETACH= ****** GX	G.PSDS= 000142   	H.IHVB= 000024   	MLTALC= ****** GX	X     = 000003

ER10MG= ****** GX	G.SIZE= 000224   	H.INDF= 000760   	NB.NXD= 020000   	$DSW  = ****** GX

ER10SZ= ****** GX	G.TSDU= 000036   	H.INDN= 000730   	NOROOM  000000R     002	$EXST = ****** GX

ER13MG= ****** GX	G.TSFW= 000024   	H.INDO= 000744   	N.DEVD= 000000   	$RLCB = ****** GX

ER13SZ= ****** GX	G.TSGC= 000017   	H.LRUC= 000105   	N.DIRD= 000004   	$$$OST= 000044

ER17MG= ****** GX	G.TSMT= 000022   	H.MPOF= 000001   	N.FLID= 000016   	$$$0ST= 000000

ER17SZ= ****** GX	G.TSNL= 000020   	H.NVOL= 000050   	N.FNMD= 000010   	.CLOSE= ****** G

EXIT    000006RG    002	G.TSPC= 000016   	H.PRIV= 000073   	N.SPEC= 000014   	.CSI1 = ****** G

EX$SUC= ****** GX	G.TSPN= 000004   	H.PROG= 000074   	OFNPT = ****** GX	.DYBUF= ****** GX

FDBOUT= ****** GX	G.TSPR= 000014   	H.PROJ= 000076   	OUTCSI= ****** GX	.DYBYT= ****** GX

FD.CCL= ****** GX	G.TSRN= 000010   	H.RPRO= 000102   	OUTREC= ****** GX	.DYSIZ= ****** GX

FD.REC= ****** GX	G.TSSY= 000034   	H.RSOF= 000003   	PAR$$$= 000027   	.EXSTS= ****** GX

FD.TTY= ****** GX	G.TSTN= 000000   	H.RSVF= 000042   	RX$IAS= 000043   	.FINIT= ****** G

FP.DEL= 000010   	G.TSTS= 000032   	H.RVN = 000046   	RX$11D= 000040   	.FSRPT= ****** GX

FP.EXE= 000004   	G.TSVA= 000026   	H.SBCL= 000016   	RX$11M= 000041   	.INIT   000024RG    002

FP.RDV= 000001   	G.TSVL= 000030   	H.SCHA= 000065   	RX$11S= 000042   	.OPNF1= ****** GX

FP.WRV= 000002   	H.ACOF= 000002   	H.SEMK= 000104   	R$$DPB= 000001   	.RCBLK= ****** GX

F.DSPT= ****** GX	H.AHLB= 000004   	H.SMMX= 000110   	R$$DYM= 000001   	.RSTAR  000174RG    002

F.RCTL= ****** GX	H.AHVB= 000022   	H.SNAM= 000714   	R$$EIS= 000000   	.SYNER= ****** GX

GCMLCB= ****** GX	H.CHK1= 000072   	H.UCHA= 000064   	R$$11M= 000001   	.TOPAD= ****** GX

GETCML= ****** GX	H.CHK2= 000776   	H.UFAT= 000024   	SAVSP = ****** GX	...GBL= 000000

GE.BIF= 177775   	H.CKSM= 000776   	H.USE = 000072   	SC.BAD= 000100   	...TPC= 000140

GE.CLO= 000004   	H.DFPR= 000066   	H.VCHA= 000052   	SC.DIR= 000040



. ABS.	000000	   000

      	000000	   001

PURE$I	000574	   002

ERRORS DETECTED:  0



VIRTUAL MEMORY USED:  6169 WORDS  ( 25 PAGES)

DYNAMIC MEMORY:  6996 WORDS  ( 26 PAGES)

ELAPSED TIME:  00:00:30

EXE$:VFYCMD,LIS$:VFYCMD/-SP=SRC$:PIPMAC,VFYCMD

