|
|
DataMuseum.dkPresents historical artifacts from the history of: Philips Data Systems |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about Philips Data Systems Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - download
Length: 25097 (0x6209)
Notes: pts_type(SC)
Names: »WUEXT.SC«
└─⟦f45ea3bc3⟧ Bits:30009713 Philips computer tape "WSM"
└─⟦this⟧ »WSM:UTIL/WUEXT.SC«
IDENT WUEXT REL=2.3,841001,870155940230 ************************************** * WORK STATION MANAGEMENT * * UTILITY PROGRAMS * * 5 EXTEND FILE * * * ************************************** ** HISTORY: ** 84-07-12 /MAER "EXTEND WSM SYSTEM FILE". ** 83-09-27 /MAER VOLUME NAME NO MORE DESTROYED IF RETURN-KEY ** IS PRESSED BEFORE ENTERING UNIT-MNEMO. ** 83-05-11 /MAER CHANGED DECORATIONS. ** EXTENTS GET TYPE 'X' AND RECORD LENGTH 256. ** 82-10-19 /MAER VOLUME-NAME CHANGED BEFORE EXTENSION. ** 82-02-04 /DALI DISPLAY OF NO. OF RECS CHANGED FROM 5 TO 7 DIGITS ** 81-11-04 /DALI CREATION DDUM WUDIV PDIV ENTRY WUEXT ENTRY WUEXT1 ENTRY WUEXT2 * EXPROC DECLRA CRE= SCREEN ROUTINE EXPROC DERR CRE= ERROR ROUTINE EXPROC DISERR EXPROC DSKERR,PBIN EXPROC CHVNAM,PSTRG,PBIN CRE= CHANGE VOLUMENAME PARAM: NEW NAME, F.C. EXPROC HALT EXPROC CONT DISPLAY WAIT-TEXT * EXT CREFIL ASS= CREATE FILE EXT DELFIL ASS= DELETE FILE EXT RDSECT ASS= READ A SECTOR EXT WRSECT ASS= WRITE A SECTOR EXT READDK ASS= READ A RECORD EXT WRITDK ASS= WRITE A RECORD EXT BINBCD ASS= TWO BINARYS TO BCDITEM EXT BCDBIN ASS= BCDITEM TO TWO BINARYS EXT CHANFC ASS= CHANGE FILE-CODE EXT OPENF ASS= OPEN FILE EXT CLOSEF ASS= CLOSE FILE EJECT WUEXT PROC EXT000 ATTFMT FEXT SET DEPROMPT EXT050 PERF DECLRA EXT075 IB DEBINW2,EXT050,RETUR,EXT200 PERF DSKERR,W0 'BELL' B EXT075 EXT200 ERASE 0,W1,W12 PERF CONT DISPLAY WAIT-TEXT... MOVE COPFIL,=C'WSM-TEMP' MOVE STR1A,=C'X' XCOPY PBLOCK,W5,W1,PBLOCK,W4 FC NO DISP XCOPY PBLOCK,W7,W1,STR1A,W0 F.ORG XCOPY PBLOCK,W8,W8,COPFIL,W0 FILE-NAME XCOPY PBLOCK,W16,W6,VOLEX1,W0 VOL-NAME 1 CALL DELFIL,PBLOCK,BPOOL(W5),BPOOL(W10),RETCOD XCOPY PBLOCK,W7,W1,FCOD,W1 DISK-FILE CODE XCOPY PBLOCK,W7,W1,STR1A,W0 F.ORG XCOPY PBLOCK,W8,W8,COPFIL,W0 FILE-NAME COPY PBLOCK,W16,W6,VOLEX1,W0 VOL-NAME 1 MOVE STRG10A,='R XXX WSM ' XCOPY STRG10A,W2,W3,RELNUM,W0 SET REL. NO MOVE BIN1,=W'40' XCOPY PBLOCK,BIN1,W9,STRG10A,W0 REL + RET.PERIOD MOVE BIN1,=W'49' XCOPY PBLOCK,BIN1,W1,W1,W1 BF MOVE BIN2,=W'50' XCOPY PBLOCK,BIN2,W2,SECLEN,W0 CALL BCDBIN,NOREC,BIN10,BIN11 MOVE BIN1,=W'52' XCOPY PBLOCK,BIN1,W2,BIN10,W0 NO. OF RECORDS MOVE BIN1,=W'54' XCOPY PBLOCK,BIN1,W2,BIN11,W0 NO. OF RECORDS MOVE BIN1,=W'56' XCOPY PBLOCK,BIN1,W2,W0,W0 KA MOVE BIN1,=W'58' XCOPY PBLOCK,BIN1,W2,W0,W0 NIF CALL CREFIL,PBLOCK,BPOOL(W12),BPOOL(W1),RETCOD CMP RETCOD,W0 'I/O-ERROR' BNZ EXT750 CALL OPENF,DISK,FILECODE(W1),SYSBUF,FILNAM,VOLEX1,RETCOD BNOK EXT750 MOVE BIN2,W0 USED FOR REL.REC MOVE RECNUM,W1 EXT700 CALL BCDBIN,RECNUM,FFSNR(W1),FFSNR(W2) CALL READDK,DISK,FILECODE(W1),RBUF,SECLEN,RECNUM,RETCOD BNOK EXT995 XCOPY BIN2,W1,W1,RELREC,W0 CBNE LNEXT2,W0,EXT720 CBE LNEXT1,W0,EXT730 EXT720 CALL BINBCD,LNEXT1,LNEXT2,RECNUM B EXT700 EXT730 CALL OPENF,DISK,FILECODE(W3),SYSBUF,COPFIL,VOLEX1,RETCOD BNOK EXT995 B EXT800 EXT750 PERF CHVNAM,VOLNAM,FCOD CHANGE NAME TO ORIGIN EXT755 PERF DISERR 'I/O-ERROR' B EXT075 EJECT *************************************** * * * FOLLOWING WORK ITEMS ARE USED * * FOR INIALIZATION OF THE SYSWSM-FILE* * * * BIN1 = WORKITEM * * BIN2 = COUNTER IN BIN9 * * BIN3 = NO.OF SECTORS/RECORD * * BIN4 = NO.OF FREE-SPACE REC. * * BIN5 = NO.OF FS.IN LAST REC. * * BIN6 = INDEX * * BIN7 = NOT USED * * BIN8 = CONTER TO MATCH - FS-IND * * BIN9 = WORKITEM - FREE-SPACE IND. * * * * * * BIN12 = SIZE OF SECTORS * * * * BCD5A = NO.OF FS.IND PER FS. RECORD* * BCD13A = NO.OF RECORDS * *************************************** EJECT ************************ * FREE-SPACE RECORDS * ************************ EXT800 MOVE RBUF,HEX00 MOVE FS,=C'FS' RECORD TYPE MOVE LNEXT1,W0 LINK NEXT1. MOVE LNEXT2,W0 LINK NEXT2. MOVE BCD13A,NOREC NO. OF RECORDS MOVE BCD5A,=D'+01920' NO. OF FS-IND. PER FS. REC. MOVE BIN4,W0 EXT810 ADD BIN4,W1 NO.OF FREE-SPACE RECORDS SUB BCD13A,=D'+1' SUB BCD13A,BCD5A CBG BCD13A,=D'00',EXT810 CHECK IF SPACE FOR 1 FS-REC ADD BCD13A,BCD5A MOVE BIN5,BCD13A BIN5 = NO. OF FREE-RECORD-IND. IN LAST FREE-SPACE RECORD MOVE BCD13A,BIN4 ADD BCD13A,NORECO ADD BCD13A,=D'+1' CALL BCDBIN,BCD13A,FRSTN1,FRSTN2 CBE BIN4,W1,EXT830 ONLY 1 RECORD ADD BCD13A,=D'+1' CALL BCDBIN,BCD13A,LNEXT1,LNEXT2 EXT830 MOVE NOFREE,BCD5A NO. OF FREE = 1920 MOVE NOFREC,BCD5A ADD BIN2,W1 RELREC CBNE BIN4,W1,EXT840 MOVE NOFREE,BIN5 IF LAST RECORD MOVE NOFREC,BIN5 EXT840 MOVE RECNUM,=D'+1' EXT850 ***************************************************** * FILL RECORD WITH FREE-SPACE-INDICATIONS : 1=FREE * ***************************************************** XCOPY RELREC,W0,W1,BIN2,W1 MOVE BIN1,NOFREE MOVE BIN6,W0 INDEX MOVE BIN8,W0 COUNTER TO MATCH - FS-IND. EXT860 ADD BIN6,W1 SUB BIN1,W8 8 RECORDS BN EXT870 MOVE FF(BIN6),=X'FF' CBE BIN1,W0,EXT880 B EXT860 EXT870 ADD BIN1,W8 CBE BIN1,W0,EXT882 MOVE FF(BIN6),HEXTAB(BIN1) EXT880 ADD BIN6,W1 CBG BIN6,=W'240',EXT885 EXT882 MOVE FF(BIN6),=X'00' B EXT880 EJECT ****************************** * WRITE FREE-SPACE RECORDS * ****************************** EXT885 CALL WRITDK,DISK,FILECODE(W3),RBUF,SECLEN,RECNUM,RETCOD BNOK EXT990 SUB BIN4,W1 BZ EXT890 IF LAST RECORD CALL BINBCD,FRSTN1,FRSTN2,BCD13A ADD BCD13A,BCD5A CALL BCDBIN,BCD13A,FRSTN1,FRSTN2 ADD BIN2,W1 RELREC CALL BINBCD,LNEXT1,LNEXT2,BCD13A ADD BCD13A,=D'+1' CALL BCDBIN,BCD13A,LNEXT1,LNEXT2 ADD RECNUM,=D'+1' CBNE BIN4,W1,EXT850 MOVE LNEXT1,W0 MOVE LNEXT2,W0 LAST RECORD MOVE NOFREE,BIN5 B EXT850 EXT890 PERF CLOFIL,W3 CALL BINBCD,FFSNR(W1),FFSNR(W2),RECNUM CALL READDK,DISK,FILECODE(W1),RBUF,SECLEN,RECNUM,RETCOD BNOK EXT995 ADD NORECO,=D'+1' CALL BCDBIN,NORECO,LNEXT1,LNEXT2 CALL WRITDK,DISK,FILECODE(W1),RBUF,SECLEN,RECNUM,RETCOD BNOK EXT995 PERF CLOFIL,W1 MOVE BIN5,W0 NO. OF EXTENTS MOVE BIN1,W0 SECTOR NO. CALL RDSECT,DISK,BIN1,SYSBUF,RETCOD READ VOLUME-LABEL BNOK EXT750 XCOPY BIN1,W0,W2,SYSBUF,W10 FSAT BASE MOVE DKBIN2,=W'46' FSAT-LENGTH DISPLACEMENT XCOPY DKBIN1,W0,W2,SYSBUF,DKBIN2 FSAT-LENGTH XCOPY DKBIN2,W0,W2,SYSBUF,W6 ADM-LENGTH XCOPY DKBIN3,W0,W2,SYSBUF,W12 VTOC-REC-LEGTH ADD DKBIN3,W1 OCCUPYED BYTE SUB DKBIN2,DKBIN1 GET NO. OF VTOC RECS ADD BIN1,DKBIN1 START OF VTOC EXT900 CALL RDSECT,DISK,BIN1,SYSBUF,RETCOD READ ONESECTOR BNOK EXT750 MOVE BIN4,W0 DISP TO FILENAME EXT905 MOVE BIN3,W0 MATCH COPFIL,BIN3,W8,SYSBUF,BIN4,W8 BOK EXT915 EXT910 ADD BIN4,DKBIN3 GET NEXT VTOC ENTRY CBL BIN4,=W'240',EXT905 ALL ENTRIES HANDLED SUB DKBIN2,W1 MORE VTOC RECORDS BZ EXT925 ADD BIN1,W1 READ NEXT VTOC RECORD B EXT900 EXT915 CBNE BIN5,W0,EXT920 NO. OF EXTENTS MOVE BIN12,=W'40' NO. OF EXTENTS ADD BIN12,BIN4 DISP IN VTOC-RECORD XCOPY BIN5,W1,W1,SYSBUF,BIN12 MOVE BIN6,BIN5 SAVE NO. OF EXTENTS CBNE BIN5,W0,EXT920 AT LEAST ONE ENTRY MOVE BIN5,=X'7FFF' EXT920 COPY SYSBUF,BIN4,W8,FILNAM,W0 ADD BIN4,W10 ADD BIN7,W1 XCOPY SYSBUF,BIN4,W2,BIN7,W0 EXTENT NO. FEN SUB BIN4,W10 CALL WRSECT,DISK,BIN1,SYSBUF,RETCOD WRITE THE SECTOR BNOK EXT750 SUB BIN5,W1 MORE EXTENTS BP EXT910 YES EXT925 MOVE BIN5,W0 NO. OF EXTENTS MOVE BIN1,W0 SECTOR NO. CALL RDSECT,DISK,BIN1,SYSBUF,RETCOD READ VOLUME-LABEL BNOK EXT750 XCOPY BIN1,W0,W2,SYSBUF,W10 FSAT BASE MOVE DKBIN2,=W'46' FSAT-LENGTH DISPLACEMENT XCOPY DKBIN1,W0,W2,SYSBUF,DKBIN2 FSAT-LENGTH XCOPY DKBIN2,W0,W2,SYSBUF,W6 ADM-LENGTH XCOPY DKBIN3,W0,W2,SYSBUF,W12 VTOC-REC-LEGTH ADD DKBIN3,W1 OCCUPYED BYTE SUB DKBIN2,DKBIN1 GET NO. OF VTOC RECS ADD BIN1,DKBIN1 START OF VTOC EXT930 CALL RDSECT,DISK,BIN1,SYSBUF,RETCOD READ ONESECTOR BNOK EXT750 MOVE BIN4,W0 DISP TO FILENAME EXT940 MOVE BIN3,W0 MATCH FILNAM,BIN3,W8,SYSBUF,BIN4,W8 BOK EXT970 EXT950 ADD BIN4,DKBIN3 GET NEXT VTOC ENTRY CBL BIN4,=W'240',EXT940 ALL ENTRIES HANDLED SUB DKBIN2,W1 MORE VTOC RECORDS BZ EXT975 ADD BIN1,W1 READ NEXT VTOC RECORD B EXT930 EXT970 MOVE BIN12,=W'40' NO. OF EXTENTS ADD BIN12,BIN4 DISP IN VTOC-RECORD XCOPY BIN5,W1,W1,SYSBUF,BIN12 CBE BIN5,W0,EXT975 AT LEAST ONE ENTRY ADD BIN5,BIN6 XCOPY SYSBUF,BIN12,W1,BIN5,W1 CALL WRSECT,DISK,BIN1,SYSBUF,RETCOD WRITE THE SECTOR BNOK EXT750 EXT975 PERF HALT B RETUR EXT990 PERF CLOFIL,W3 EXT995 PERF CLOFIL,W1 B EXT750 RETUR TBF BOOL4,RETUR2 BRANCH IF NEVER CHANGED! (830927) PERF CHVNAM,VOLNAM,FCOD CHANGE NAME TO ORIGIN RETUR2 CLEAR BOOL4 SETOFF "VOLNAM CHANGED" (830927) RET PEND EJECT * * **************** * CLOSE FILE * **************** CLOFIL PROC FC PBIN FC CALL CLOSEF,DISK,FILECODE(FC),SYSBUF,W0,DEBINW4 RET PEND EJECT *********************** * GET NO.OF USED * *********************** WUEXT1 PROC MOVE DEBINW4,W0 MOVE RETCOD,W0 MOVE RECNUM,=D'00' PERF CHVNAM,VOLEX1,FCOD CHANGE NAME TO TEMP. (111....1) BNOK EXT755 SET BOOL4 INDICATE VOLNAM CHANGED (830927) CALL OPENF,DISK,FILECODE(W1),SYSBUF,FILNAM,VOLEX1,RETCOD BOK EXT120 MOVE DEBINW4,W9 SYSTEMFILE NOT CREATED RET EXT115 MOVE DEBINW4,W18 DISC NOT OPERABLE RET EXT120 CALL CLOSEF,DISK,FILECODE(W1),RBUF,RECNUM,RETCOD MOVE BCDI21(W2),=D'00' USED FOR NO. OF RECS MOVE BIN5,W0 NO. OF EXTENTS MOVE BIN1,W0 SECTOR NO. MOVE BIN7,W0 EXTENT NUMBER CALL RDSECT,DISK,BIN1,SYSBUF,RETCOD READ VOLUME-LABEL BNOK EXT115 XCOPY BIN1,W0,W2,SYSBUF,W10 FSAT BASE MOVE DKBIN2,=W'46' FSAT-LENGTH DISPLACEMENT XCOPY DKBIN1,W0,W2,SYSBUF,DKBIN2 FSAT-LENGTH XCOPY DKBIN2,W0,W2,SYSBUF,W6 ADM-LENGTH XCOPY DKBIN3,W0,W2,SYSBUF,W12 VTOC-REC-LEGTH ADD DKBIN3,W1 OCCUPYED BYTE SUB DKBIN2,DKBIN1 GET NO. OF VTOC RECS ADD BIN1,DKBIN1 START OF VTOC EXT130 CALL RDSECT,DISK,BIN1,SYSBUF,RETCOD READ ONESECTOR BNOK EXT115 MOVE BIN4,W0 DISP TO FILENAME EXT140 MOVE BIN3,W0 MATCH FILNAM,BIN3,W8,SYSBUF,BIN4,W8 BOK EXT170 EXT150 ADD BIN4,DKBIN3 GET NEXT VTOC ENTRY CBL BIN4,=W'240',EXT140 ALL ENTRIES HANDLED SUB DKBIN2,W1 MORE VTOC RECORDS BNZ EXT160 CBNE BCDI21(W2),=D'00',EXT180 FILE HANDLED MOVE DEBINW4,W12 RET EXT160 ADD BIN1,W1 READ NEXT VTOC RECORD B EXT130 EXT170 CBNE BIN5,W0,EXT175 NO. OF EXTENTS MOVE BIN12,=W'40' NO. OF EXTENTS ADD BIN12,BIN4 DISP IN VTOC-RECORD XCOPY BIN5,W1,W1,SYSBUF,BIN12 CBNE BIN5,W0,EXT175 AT LEAST ONE ENTRY MOVE BIN5,=X'7FFF' EXT175 MOVE BIN2,W10 FILE EXT NO FEN ADD BIN2,BIN4 DISP IN VTOC-RECORD XCOPY BIN6,W0,W2,SYSBUF,BIN2 CBL BIN6,BIN7,EXT177 MOVE BIN7,BIN6 EXT177 ADD BIN2,W2 XCOPY BIN10,W0,W2,SYSBUF,BIN2 FILE EXTENT 1 ADD BIN2,W2 XCOPY BIN11,W0,W2,SYSBUF,BIN2 FILE EXTENT 2 CALL BINBCD,BIN10,BIN11,BCDI21(W1) ADD BCDI21(W2),BCDI21(W1) SUB BIN5,W1 MORE EXTENTS BP EXT150 EXT180 MOVE NORECO,BCDI21(W2) RET PEND EJECT ************************** * GET NO. OF FREE * ************************ WUEXT2 PROC MOVE DEBINW4,W0 MOVE RETCOD,W0 CALL OPENF,DISK,FILECODE(W1),SYSBUF,FILNAM,VOLEX1,RETCOD BNOK EXT220 EXT210 CALL CLOSEF,DISK,FILECODE(W1),RBUF,RECNUM,RETCOD MOVE BCDI21(W2),=D'00' NUMBER OF FREE SECTORS MOVE BIN1,W0 SECTOR NO. CALL RDSECT,DISK,BIN1,SYSBUF,RETCOD READ VOLUME-LABEL BNOK EXT220 XCOPY BIN1,W0,W2,SYSBUF,W10 FSAT BASE MOVE DKBIN2,=W'46' FSAT-LENGTH DISPLACEMENT XCOPY DKBIN1,W0,W2,SYSBUF,DKBIN2 FSAT-LENGTH EXT215 CALL RDSECT,DISK,BIN1,SYSBUF,RETCOD READ ONESECTOR BOK EXT230 EXT220 MOVE DEBINW4,W22 RET EXT230 MOVE BIN6,W1 MOVE BIN5,W2 MOVE BIN3,W0 EXT240 XCOPY BIN10,W0,W2,SYSBUF,BIN3 1:ST WORD IN NO OF FS REC XCOPY BIN11,W0,W2,SYSBUF,BIN5 2:ST WORD IN NO OF FS REC CALL BINBCD,BIN10,BIN11,BCDI21(W1) ADD BCDI21(W2),BCDI21(W1) CBE BIN6,=W'32',EXT250 JUMP IF ALL ENTRIES HANDLED ADD BIN5,W8 ADD BIN6,W1 HANDLE NEXT ENTRY IN ADD BIN3,W8 CURRENT FSAT-RECORD B EXT240 EXT250 SUB DKBIN1,W1 FSAT-LENGTH BZ EXT260 JUMP IF ALL FSAT-RECORDS HANDLED ADD BIN1,W1 INCREMENT RECORDNUMBER TO B EXT215 NEXT FSAT-RECORD EXT260 RET PEND EJECT FEXT FRMT FSL FNL FATTR .HIGH FATTR .INV FCOPY =C'EXTEND WSM SYSTEM FILE' FLINK FFILE FMEND * FFILE FRMT FNL FATTR .HIGH FCOPY =C'UNIT:' FKI 6,MINL=3,MAXL=3,ME,ALPHA,NEOI,APPL=5 FCOPY INUNIT FATTR .HIGH FTAB 12 FCOPY =C'VOLUME-NAME:' FINP 25 FCOPY VOLNAM FNL FATTR .HIGH FCOPY =C'FILENAME:' FKI 10,MINL=1,MAXL=8,ME,REWRT,APPL=14,ALPHA,NEOI FCOPY FILNAM FNL FNL FATTR .HIGH FATTR .INV FCOPY =C'EXISTING' FTAB 10 FCOPY =C'FILE' FNL FATTR .HIGH FCOPY =C'NO.' FTAB 5 FCOPY =C'OF RECORDS:' FATTR .HIGH FINP 17 FMEL 'TTTTX',NORECO FNL FNL FATTR .HIGH FATTR .INV FCOPY =C'EXTEND ' FCOPY =C'FILE' FCOPY =C' WITH' FNL FATTR .HIGH FCOPY =C'NO.' FTAB 5 FCOPY =C'OF RECORDS:' FKI 17,MINL=1,MAXL=5,ME,NEOI,REWRT,APPL=15 NO. OF RECORDS FMEL 'TTTTTTX',NOREC FLINK FHEX FMEND * FHEX FRMT FNL FKI 1,MINL=0,MAXL=0 FCOPY HEX00 FMEND * END