! ! VSN 2 29AUG79 LABELS WITH DUMP INHIBITED ON TRACK 0 ! RECORDFORMAT PARMF(INTEGER DEST,SRCE,P1,P2,P3,P4,P5,P6) RECORDFORMAT DDTFORM(INTEGER SER,PTS,PROPADDR,STATUS, C CCA,RQA,LBA,ALA,STATE,IW1,IW2,SENSE1,SENSE2,SENSE3,SENSE4,C REPSNO,BASE,ID,DLVN,MNEMONIC,STRING (6)LAB,BYTEINTEGER MECH) ! RECORDFORMAT PROPFORM(INTEGER TRACKS,CYLS,PPERTRK,BLKSIZE,TOTPAGES,C RQBLKSIZE,LBLKSIZE,ALISTSIZE) ! RECORDFORMAT RQBFORM(INTEGER LSEGPROP,LSEGADDR,LBPROP,LBADDR,ALPROP,C ALADDR,W6,W7,W8) ! RECORDFORMAT COUNTFORM(BYTEINTEGER HFLG,C1,C2,H1,H2,SCTR,KL,DL1,DL2) ! RECORDFORMAT COMF(INTEGER OCPTYPE,IPLDEV,SBLKS,SEPGS,NDISCS, C DLVNADDR,GPCTABSIZE,GPCA,SFCTABSIZE,SFCA,SFCK,DIRSITE, C DCODEDA,SUPLVN,TOJDAY,DATE0,DATE1,DATE2, C TIME0,TIME1,TIME2,EPAGESIZE,USERS,CATTAD,EXDQADDR, C BYTEINTEGER NSACS,RESV1,SACPORT1,SACPORT0, C NOCPS,RESV2,OCPPORT1,OCPPORT0, C INTEGER ITINT,CONTYPEA,GPCCONFA,FPCCONFA,SFCCONFA, C BLKADDR,RATION,SMACS,TRANS,LONGINTEGER KMON, C INTEGER DITADDR) RECORDFORMAT LABFORM(BYTEINTEGERARRAY VOL(0:5),BYTEINTEGER S1,C S2,S3,S4,ACCESS,BYTEINTEGERARRAY RES(1:20),BYTEINTEGER C1,C2,C AC1,AC2,TPC1,TPC2,BF1,BF2,BYTEINTEGERARRAY POINTER(0:3), C IDENT(1:14)) CONSTINTEGER DISCSNO=X'00200000', C PDISCSNO=X'210000',RRSNO=X'220000' CONSTINTEGER SD=X'58000000'; ! STRING DESRCPTR FOR ADDRSS LIST CONSTINTEGER BUFFSIZE=4096 ! EXTERNALROUTINESPEC DPON(RECORDNAME P) EXTERNALROUTINESPEC DPOFF(RECORDNAME P) EXTERNALROUTINESPEC PROMPT(STRING (63)S) SYSTEMROUTINESPEC ITOE(INTEGER AD,L) EXTERNALROUTINE DLABEL(STRING (63) S) !*********************************************************************** !* LABELS A DISC WITH A STANDARD LABEL * !*********************************************************************** ROUTINESPEC READ AS STRING(STRINGNAME S) RECORD P(PARMF) RECORDNAME LABEL(LABFORM) RECORDNAME COUNT(COUNTFORM) RECORDNAME DDT(DDTFORM) RECORDNAME PROP(PROPFORM) RECORDNAME COM(COMF) RECORDNAME RQB(RQBFORM) BYTEINTEGERARRAYFORMAT VLABF(-100:80) BYTEINTEGERARRAYNAME VLAB INTEGER STATE,MNEM,SLOT,DSNO,IPL,CDEX,BA,OP,SERVNO CONSTINTEGER GETPAGE=X'50000',RETURNPAGE=X'60000' STRING (6)VOLID INTEGER I,ACT,J,ALA,LBA COM==RECORD(X'80C00000') IF LENGTH(S)#4 THEN PRINTSTRING("LABEL DEVICE ".S."?? ") AND RETURN STRING(ADDR(STATE)+3)=S; ! SET MNEM PROMPT("IPL OR NORMAL:") A: READ AS STRING(S) IF S="IPL" THEN IPL=1 ELSE START IPL=0 ->A UNLESS S="NORMAL" FINISH B: PROMPT("6 CHAR VOL ID:") READ AS STRING(S) ->B UNLESS LENGTH(S)=6 VOLID=S ! P_DEST=GET PAGE P_SRCE=1 P_P1=M'LBLR' DPON(P) DPOFF(P) UNTIL P_P1=M'LBLR' SERVNO=P_DEST&X'FFFF0000' CDEX=P_P2; BA=P_P4 VLAB==ARRAY(BA,VLABF) CYCLE I=-100,1,80 IF -100<=I<=0 OR 32<=I<=43 THEN J=0 ELSE J=X'40' VLAB(I)=J REPEAT P_DEST=DISCSNO+1 P_P1=M'LABR' P_P2=SERVNO+2 P_SRCE=SERVNO+1 P_P3=MNEM DPON(P) DPOFF(P) UNTIL P_P1=M'LABR' IF P_P2=0 THEN PRINTSTRING('LABELLER CLAIM FAILS ') AND -> RETURNP SLOT=P_P3 DSNO=P_P2 DDT==RECORD(INTEGER(COM_DITADDR+SLOT*4)) PROP==RECORD(DDT_PROPADDR) ! ! SET UP HOME ADDRESS COUNT (NO KEY) AND DATA FIELDS FOR LABEL ! STRING(ADDR(VLAB(0)))=VOLID LABEL==RECORD(ADDR(VLAB(1))) ITOE(ADDR(LABEL),6); ! VOL ID IN EBCDIC LABEL_ACCESS=X'C5'; ! C'E' FOR EMAS FILE SYTEMS ! I=PROP_CYLS LABEL_C1=I>>8 LABEL_C2=I&255 LABEL_TPC2=PROP_TRACKS ! COUNT==RECORD(ADDR(VLAB(-8))) COUNT_DL1=0 COUNT_DL2=80 ! %IF IPL#0 %THEN COUNT_HFLG=X'20'; ! STORE DUMP&IPL ALLOWED ! ! SET UP THE CCW TO WRITE HOME ADDRESS AND SECTOR 0 ON TRACK 0 CYL 0 ! ALA=DDT_ALA LBA=DDT_LBA RQB==RECORD(DDT_RQA) ! INTEGER(LBA)=X'84000300'; ! LIT,CHAIN & WRITE HA INTEGER(ALA)=X'58000005'; ! HA = 5 BYTE INTEGER(ALA+4)=ADDR(COUNT_HFLG) INTEGER(LBA+4)=X'84000B02'; ! OPUT & WRITE S0 INTEGER(ALA+8)=X'58000058'; ! COUNT=8 DATA =80 INTEGER(ALA+12)=ADDR(COUNT_C1) LBA=LBA+8 ALA=ALA+16 LABEL_POINTER(3)=X'40' IF IPL=0 THEN ->DCHN LABEL_POINTER(2)=8 LABEL_POINTER(3)=0; ! X800 PAGES FOR SYSTEM ON IPLDISC CYCLE I=1,1,PROP_PPERTRK COUNT==RECORD(ADDR(COUNT)-10) COUNT_SCTR=I; COUNT_KL=0 COUNT_DL1<-PROP_BLKSIZE>>8 COUNT_DL2<-PROP_BLKSIZE INTEGER(LBA)=X'88002B00'+4*I; ! WRITE SCKD & DATACHN INTEGER(LBA+4)=X'84C02B02'+4*I INTEGER(ALA)=SD+8 INTEGER(ALA+4)=ADDR(COUNT_C1) INTEGER(ALA+8)=SD+BUFFSIZE INTEGER(ALA+12)=BA LBA=LBA+8 ALA=ALA+16 REPEAT ! DCHN: INTEGER(LBA-4)=INTEGER(LBA-4)&X'F3FFFFFF' RQB_W7=X'1E001300'; ! SEEK CYL&HD&SECTR0 & DO CHAIN RQB_W8=0; ! SEEK DATA P_DEST=DSNO P_SRCE=SERVNO+2 P_P1=M'LABW' DPON(P) DPOFF(P) UNTIL P_P1=M'LABW' ->FAIL IF P_P2#0 PRINTSTRING('LABELLED OK') ->FINISH FAIL: PRINTSTRING('LABELLER FAILS') FINISH: ! ! RETURN DEVICE P_DEST=DISCSNO+1 P_P3=SLOT STATE=0 P_P2=-1; ! UNLOAD AFTER LABELLING DPON(P) RETURNP: P_DEST=RETURN PAGE P_SRCE=0; ! REPLY NOT WANTED P_P2=CDEX DPON(P) ROUTINE READ AS STRING(STRINGNAME S) INTEGER I S="" CYCLE READ SYMBOL(I) EXIT IF I=10 S=S.TOSTRING(I) IF I>32 REPEAT END END ENDOFFILE