. . FILE MODE SET AND DUMP ROUTINES . . . (C) Copyright 1972-1978 John Walker . . This software is in the public domain . AXR$ DEFUNCT$ FANG PURE CODE . . LENGTH COMMAND . LENGTH* LX X5,CDBPC,X8 GET LINK TO FIRST PARAMETER LX X10,PBVAL,X5 LOAD FDT ADDRESS FOR FILE LX X5,PBLINK,X5 LINK TO SECOND PARAMETER LA A5,PBVAL,X5 LOAD NUMERIC SPECIFICATION JZ A5,IBLX IGNORE IDIOTIC ZERO LENGTH BLOCK JN A5,IBLX AND HUMORIST'S NEGATIVE LENGTH BLOCK TG A5,(1,0) ..AS WELL AS ABSURDLY LONG BLOCK J IBLX INTO THE ASHCAN LA A0,FDTYPE,X10 LOAD FILE TYPE JTAPE A0,TASEL ALLOW ANY LENGTH FOR TAPE JE A0,FWAD,TASEL AND FOR WORD ADDRESSABLE DRUM DSL A5,36 RIGHT JUSTIFY SPECIFIED WORD LENGTH DI,U A5,28 DIVIDE BY SECTOR LENGTH JZ A6,EMUL28 EVEN NUMBER OF SECTORS ? AA,U A5,1 NO. ROUND UP R$DIT . ESTABLISH EDITING MODE E$MSG LRUX GET EDITING MESSAGE LA A0,A5 LOAD NUMBER OF SECTORS MSI,U A0,28 CHANGE TO WORDS E$DECV . EDIT BLOCK LENGTH USED E$MSGR . COPY SOME MORE E$DECV A5 EDIT NUMBER OF SECTORS E$MSGR . COPY 'SECTOR' TLE,U A5,2 MORE THAN ONE ? J NOPLUR NO. DON'T USE PLURAL FORM E$CHAR 'S' PLURALISE 'SECTOR' NOPLUR E$MSGR . COPY REST OF MESSAGE LA,U A0,,X10 LOAD FDT ADDRESS LMJ X11,FIST APPEND FILE AND STATEMENT NUMBER EMUL28 MSI,U A5,28 CONVERT TO WORD LENGTH TASEL SA A5,FDBLEN,X10 PUT BLOCK LENGTH IN FDT COMPLETE . COMPLETE THIS OPERATION . IBLX R$DIT . ENTER EDITING MODE E$MSG IBLM EDIT MESSAGE E$DECV A5 EDIT BAD LENGTH SPECIFICATION E$MSGR . COPY REST OF MESSAGE LA,U A0,,X10 LOAD FDT ADDRESS LMJ X11,FIST EDIT FILE AND STATEMENT ZAP . ROADBLOCK THE FILE COMPLETE . COMPLETE THIS OPERATION /. . . STATUS COMMAND . STATD* LR,U R4 LOAD LIST ALL MODE LA A14,CWOPTION LOAD OPTION BITS TEP A14,(OPTION('D')) IS THE 'D' OPTION ON ? LR,U R4,1 YES. SET LIST DISABLES ONLY LR,U R5 CLEAR ANY DISABLES FOUND R$DIT . SET UP EDITOR REMOVE PARQUE GET A PARAMETER TE,U A1,PARQUE NULL PARAMETER QUEUE ? J SPECFL NO. GO LIST INFORMATION FOR SPECIFIED F P FISTAT LOCK FACILITY STATUS P PRINTER OBTAIN THE PRINTER LX,H2 X5,FDCHAIN GET FDT CHAIN LINK TNZ X5 ANY FILES ACQUIRED ? J ENOFL NO. PRINT SPECIAL MESSAGE EDNXS LMJ X7,STATED EDIT FILE STATUS LX X5,FDLINK,X5 CHAIN TO NEXT FILE TZ X5 ALL DONE ? J EDNXS NO. EDIT NEXT STATUS TNZ R4 LIST DISABLES ? J COMPB NO. SKIP CHECK TZ R5 ANY DISABLES FOUND ? J COMPB YES. NO NEED FOR MESSAGE E$MSG NODFM EDIT 'NO DISABLED FILES' R$PRT 1 PRINT THE MESSAGE COMPB R$DITX . TERMINATE EDITOR COMPD V PRINTER RELEASE PRINTER V FISTAT RELEASE FACILITY LOCK J ICOUT END OF COMMAND . ENOFL E$MSG NOFEM EDIT NO FILES MESSAGE R$PRTX 1 PRINT THE MESSAGE J COMPD COMPLETE THE PROCESSING . . SPECIFIC FILE DUMP ROUTINE . SPECFL P FISTAT LOCK FACILITY STATUS SPL LX X5,PBVAL,A1 LOAD FDT ADDRESS FOR FILE BRELP A1 RELEASE PARAMETER BUFFER LMJ X7,STATED EDIT STATUS OF FILE REMOVE PARQUE GET NEXT PARAMETER TE,U A1,PARQUE IS THIS THE END ? J SPL NO. KEEP ON DUMPING FILES R$DITX . RELEASE THE BUFFER V FISTAT RELEASE FACILTIES LOCK J ICOUT ALL DONE . . STATUS EDITOR SUBROUTINE X5 = FDT . STATED TNZ R4 LIST DISABLES ? J STED1 NO. LIST ALL FILES LA A0,FDLOCK,X5 LOAD FILE STATUS TE,U A0,2 DISABLED ? J 0,X7 NO. RETURN LR,U R5,1 MARK FILES FOUND sted1 LMJ X6,EFILE EDIT FILE NAME E$CHAR ',' EDIT COMMA LA A0,FDEQT,X5 LOAD EQUIPMENT TYPE LA A0,EQTTAB+EPTNAME,A0 LOAD EQUIPMENT NAME SSL A0,12 GET RID OF PROPERTY BITS E$FD1 . EDIT NAME OF EQUIPMENT E$SKIP 2 SKIP AFTER EQUIPMENT TYPE LA A0,FDPROP,X5 LOAD FILE PROPERTY BITS TEP,U A0,EPCOMM COMMUNICATIONS EQUIPMENT ? J STEDCT1 YES. SKIP EDITING OF BLOCK LENGTH E$FD4 ('LENGTH = ') EDIT BLOCK LENGTH INDICATOR E$DECV FDBLEN,X5 EDIT BLOCK LENGTH E$SKIP 2 SKIP A SPACE STEDCT1 LA A0,FDLOCK,X5 LOAD FILE LOCK MODE LSSL A0,1 MULTIPLY BY TWO E$FD4 MODTAB,A0 EDIT FILE MODE E$SKIP 2 SKIP SOME MORE LA A0,FDPROP,X5 LOAD FILE PROPERTY BITS TEP,U A0,EPCOMM COMMUNICATIONS FILE ? J STEDCT2 YES. GO EDIT ITS STATUS LA A1,FDTYPE,X5 LOAD TYPE OF FDT JTAPE A1,TABLED EDIT BLOCK NUMBER FOR TAPE LA A0,('SECTOR') LOAD SECTOR TEXT TNE,U A1,FWAD IS IT A WAD FILE ? LA A0,('WORD') YES. PRINT 'WORD' E$FD1 . EDIT TEXT E$CHAR ':' EDIT A COLON E$SKIP 1 SKIP A SPACE LA A1,FDLOCK,X5 LOAD THE FILE STATUS LA A0,FDMSAD,X5 LOAD THE OFFICIAL ADDRESS TNE,U A1,1 IN PROGRESS ? LA A0,FDIPLC,X5 YES. LOAD IN-PROGRESS ADDRESS E$DECV . EDIT THE POSITION J PRINST PRINT STATUS . . EDIT STATUS OF COMMUNICATIONS FILE . STEDCT2 E$DECV FDBITPC,X5 EDIT BITS PER CHARACTER E$FD3 (' BIT ') LABEL BITS PER CHARACTER LA A0,FDCTMSPD,X5 LOAD CTM SPEED FROM FDT LSSL A0,1 FORM INDEX TO SPEED TABLE E$FD4 CTMSPD,A0 EDIT CTM SPEED TNZ FDLT,X5 IS LINE CONNECTED ? J PRINST NO. CANNOT PRINT MORE E$FD4 (' CONNECTED') LABEL LINE AS CONNECTED J PRINST GO PRINT STATUS . tabled E$FD3 ('FILE: ') LABEL FILES EXTENDED COUNT lmj x6,uptpos update tape position e$decv fdfext,x5 edit count of files extended E$SKIP 1 SKIP AFTER FILE COUNT E$FD3 ('BLOCK:') LABEL BLOCK COUNT E$SKIP 1 SKIP A SPACE LMA a0,fdbext,x5 LOAD ABSOLUTE BLOCK OFFSET E$DECV . EDIT BLOCK OFFSET WITHIN FILE tn fdbext,x5 is it relative to end of file ? j prinst no. say from start of file E$MSG1 FRMEOF OFFSET FROM END. SAY SO PRINST R$PRT 1 PRINT THE FILE STATUS J 0,X7 RETURN . . Update tape position . . LX,U X5,<fdt> . LMJ X6,UPTPOS . <return> X6, X11, A0, A1 destroyed . inf form 12,6,18 info$ form . uptpos* bget 10 obtain buffer to request position lxi,u a0,6 load length for info$ request la a1,fdin,x5 load first part of internal name sa a1,6,a0 store into INFO$ packet la a1,fdin+1,x5 load rest of internal name sa a1,7,a0 store into the INFILE$ area la a1,(inf infile$,0,0) load file name function sa a1,,a0 set into packet la a1,(inf ffilex$,0,0) load filex extended function sa a1,2,a0 set into packet la a1,(inf fblksx$,0,0) load blocks extended function sa a1,4,a0 place in packet for info$ la,u a1,,a0 load address of work buffer aa a1,(2,6) form access word for infile$ sa a1,1,a0 place in packet ah a1,(-1,2) compute access word for ffilex$ sa a1,3,a0 set into packet aa,u a1,1 advance to word for blocks extended sa a1,5,a0 store access word into item info$ . request information from system la a1,8,a0 load the files extended sa a1,fdfext,x5 store files extended count la a1,9,a0 load blocks extended count sa a1,fdbext,x5 save blocks extended count brelp a0 release the work buffer j 0,x6 return to caller . . PURE DATA FRMEOF ' FROM END OF FILE!' LRUX 'LENGTH ROUNDED TO ! WORDS (! SECTOR!) FOR FASTRAND FORMAT !' IBLM 'IMPROPER BLOCK LENGTH OF ! IGNORED FOR !' MODTAB . + 'AVAILABLE' + 'IN USE@@@' + 'DISABLED' . . CTM SPEED MNEMONICS . CTMSPD + 'LOW SPEED' + 'MEDIUM SPEED' + 'SYNCHRONOUS' + 'TELPAK (R)' * 'PARALLEL'R . P PROC 2,1 EQUIP* NAME 0 E FORM 24,12 I DO P(2) ,A(0) EQU A(0)++P(2,I) A(1) EQU ((LJSF$1 P(1,1))**0777777770000)*/-12 E A(1),A(0) END . . EQUIPMENT TYPE PROPERTY TABLE . EQTTAB* . . EQUIP 'DMY' EQUIP '8C' EPTAPE EQUIP '6C' EPTAPE EQUIP '8CB' EPTAPE EQUIP '6CB' EPTAPE EQUIP '8C9' EPTAPE,EP9TRK EQUIP '6C9' EPTAPE,EP9TRK EQUIP '4C' EPTAPE . EQUIP '4CB' EPTAPE EQUIP '12' EPTAPE,EPMSA EQUIP '16' EPTAPE,EPMSA EQUIP '12N' EPTAPE,EP9TRK,EPMSA EQUIP '16N' EPTAPE,EP9TRK,EPMSA EQUIP '20N' EPTAPE,EP9TRK,EPMSA EQUIP '3A' EPTAPE EQUIP '2A' EPTAPE . EQUIP 'D4' EPMASS,EPWAD EQUIP 'D8' EPMASS,EPWAD EQUIP 'D17' EPMASS,EPWAD EQUIP 'D14' EPMASS,EPWAD,EPMSA EQUIP 'D40' EPMASS,EPWAD,EPMSA EQUIP 'DCS' EPMASS,EPWAD EQUIP '026' EQUIP '027' . EQUIP 'F2' EPMASS EQUIP '031' EQUIP 'F4' EPMASS EQUIP 'F8' EPMASS EQUIP 'F17' EPMASS EQUIP 'F14' EPMASS,EPMSA EQUIP 'F40' EPMASS,EPMSA EQUIP 'FCS' EPMASS . EQUIP 'CRD' EQUIP '041' EQUIP 'PTP' EQUIP '043' EQUIP 'HSP' EQUIP 'MHSP' EQUIP '046' EQUIP '9300' . EQUIP '1004' I DO 7 , EQUIP '050'+I . EQUIP 'CONS' I DO 7 , EQUIP '060'+I . EQUIP 'CTS' EQUIP 'WTS' EQUIP 'CTMC' EPCOMM EQUIP 'C/SP' EPCOMM EQUIP '074' EQUIP '075' EQUIP '076' EQUIP 'ARB' NOFEM 'NO FILES KNOWN TO FANG.!' NODFM 'NO DISABLED FILES.!' END