Directory of image this file is from
This file as a plain text file
OS/8 COMPARE PROGRAM
(CMPARE)
MARK E. KENDRAT
205 BRIARCLIFFE ROAD
DEWITT, NEW YORK 13214
ABSTRACT
THE OS/8 FILE UTILITY PROGRAM PROVIDES A
CONVENIENT WAY TO COMPARE TWO FILES ON MASS STORAGE.
("FILES", REFERRING TO INPUT, MAY BE EITHER DIRECTORY-BASED
OS/8 FILES OR EXPLICIT BLOCK NUMBERS). CORRESPONDING
BINARY WORDS ARE COMPARED AND PROGRAM OUTPUT DETAILS THE
CONTENTS OF MISMATCHES. OPTIONS EXIST FOR SPECIFYING WORD
LIMITS FOR EACH BLOCK, AND A FAST MODE FOR OUTPUTTING JUST
BLOCK NUMBERS. OUTPUT IS TO ANY OS/8 DEVICE, OR TO THE
CONSOLE TERMINAL (BY DEFAULT). THE DEFAULT HANDLER MUST
BE PATCHED FOR ANY DEVICE OTHER THAN THE CONSOLE TERMINAL.
WHEN THE DEFAULT HANDLER IS IN USE, OUTPUT MAY BE SKIPPED
ON A BLOCK-BY-BLOCK BASIS. CMPARE OPTIMIZES PERFORMANCE
BY ALTERNATING THE LOADING OF INPUT BUFFERS. ALSO, BUFFER
SPACE IS INCREASED ON A 12K MACHINE.
REQUIREMENTS
ANY PDP-8 WITH OS/8, AND THE DEVICES AND THEIR HANDLERS
FOR THE INPUT FILES. CORE LAYOUT FOR 8K VS. 12K MAY BE
FOUND IN THE SOURCE, AS WELL AS THE CODE FOR THE DEFAULT
HANDLER. TO USE ANY DEVICE OTHER THAN THE CONSOLE TERMINAL
AS THE DEFAULT DEVICE, THE PROGRAM MUST BE PATCHED.
OPERATING PROCEDURES
LOADING AND STARTING CMPARE
LOAD CMPARE.SV, WHICH WILL IDENTIFY ITSELF ON THE DE-
FAULT DEVICE. BUFFER SPACE WILL THEN BE OPTIMIZED IF
FIELD 2 EXISTS. THE COMMAND DECODER WILL THEN BE USED TO
ACCEPT COMMANDS. WHEN THE COMMAND HAS BEEN CARRIED OUT,
CMPARE WILL RESTART.
COMMAND DECODER INPUT
COMMAND DECODER INPUT IS OF THE FORM:
DEV:OUTFIL<DEV:ASPEC,DEV:BSPEC,FIRST,LAST/OPTIONS=N
NOTE: IN THE DISCUSSION THAT FOLLOWS, "FILE A" AND
"FILE B" REFER TO THE TWO INPUT FILES, BE THEY DIRECTORY-
BASED OR BLOCK SPECIFICATIONS.
THE COMPONENTS OF COMMAND DECODER INPUT ARE:
DEV:OUTFIL ALL OUTPUT, EXCEPT FOR ERROR MESSAGES AND
INITIAL IDENTIFICATION, IS SENT TO THE
SPECIFIED FILE. IF ONE IS NOT SPECIFIED,
OUTPUT IS SENT VIA AN INTERNAL HANDLER
(REFERRED TO AS THE DEFAULT HANDLER.)
ASPEC,BSPEC THESE MAY BE OS/8 FILE NAMES OR EXPLICIT
BLOCK NUMBERS (OCTAL). SWITCH OPTIONS
(SEE "/B" AND "/C", BELOW) SPECIFY WHETHER
THEY ARE BLOCK NUMBERS. THEY ARE FILE
NAMES BY DEFAULT.
FIRST AN OCTAL NUMBER, SPECIFYING THE FIRST
WORD (OF EACH BLOCK) THAT IS TO BE COM-
PARED. IF OMITTED, THE FIRST WORD IS 000.
LAST AN OCTAL NUMBER, SPECIFYING THE LAST WORD
(OF EACH BLOCK) THAT IS TO BE COMPARED.
IF OMITTED, THE LAST WORD IS 377. SPE-
CIFY BOTH LIMITS IF THERE ARE ANY.
OPTIONS
/B INTERPRET BSPEC AS BEING AN EXPLICIT BLOCK
NUMBER FOR THE FIRST BLOCK OF FILE B, AND
ASPEC AS A FILE NAME. THE LENGTH OF FILE A
IS USED AS THE NUMBER OF BLOCKS TO COMPARE
(SEE =N, BELOW.)
/C INTERPRET BOTH ASPEC AND BSPEC AS EXPLICIT
BLOCK NUMBERS (SEE =N, BELOW).
/F FAST MODE. OUTPUT ONLY THE BLOCK HEADERS,
NOT THE CONTENTS OF EACH PAIR OF NON-MATCH-
ING WORDS (SEE "OUTPUT", BELOW.)
=N UNCONDITIONALLY SET THE NUMBER OF BLOCKS
TO COMPARE TO N. THIS IS USED TO SPECIFY
HOW MANY BLOCKS TO COMPARE IF BOTH FILES
ARE EXPLICIT BLOCK SPECIFICATIONS. IF TWO
BLOCK SPECIFICATIONS ARE GIVEN, N IS 1 BY
DEFAULT.
OUTPUT
A HEADER LINE IS OUTPUT FOR EACH BLOCK OF FILE A THAT
DOES NOT MATCH THE CORRESPONDING BLOCK OF FILE B. THIS IS
THE ONLY OUTPUT IF SWITCH F IS SELECTED (SEE "/F", ABOVE).
THE HEADER LINE IS OF THE FORM:
BLK ABLK BBLK (REL)
WHERE ABLK AND BBLK ARE BLOCK NUMBERS INDICATING THE BLOCKS
THAT DO NOT MATCH. REL IS THE BLOCK NUMBER RELATIVE TO THE
STARTING BLOCKS OF THE INPUT FILES.
EACH PAIR OF WORDS THAT IS NOT A MATCH CAUSES A LINE
TO BE OUTPUT UNDER THE APPROPRIATE BLOCK HEADER. IT IS OF
THE FORM:
ADR/ AWORD BWORD
WHERE ADR IS THE ADDRESS OF THE WORDS, RELATIVE TO THE BLOCK
DENOTED IN THE BLOCK HEADER. AWORD AND BWORD ARE THE VAL-
UES OF THE TWO NON-MATCHING WORDS.
WHEN ONE OR BOTH FILES RUN OUT, AN APPROPRIATE MESS-
AGE IS OUTPUT. IT WILL BE ONE OF:
EOFA FILE A RAN OUT BEFORE FILE B.
EOFB FILE B RAN OUT BEFORE FILE A.
EOF THE FILES RAN OUT SIMULTANEOUSLY.
EOFM THE FILES MATCH!
AFTER THE END-OF-FILE MESSAGE IS OUTPUT, THE PROGRAM RESTARTS.
ERRORS
WHEN AN ERROR IS DETECTED, A MESSAGE IS OUTPUT VIA
THE DEFAULT DEVICE HANDLER. THE PROGRAM IS THEN RESTARTED.
ERROR MESSAGES ARE OF THE FORM:
?DDD
WHERE DDD IS AN ERROR NUMBER. THE FOLLOWING TABLE EXPLAINS
THE ERROR NUMBERS:
001 PHYSICAL READ ERROR, FILE A.
002 PHYSICAL READ ERROR, FILE B.
003 PHYSICAL WRITE ERROR, OUTPUT FILE.
004 ERROR IN ENTERING OUTPUT FILE.
005 ERROR IN FETCHING HANDLER FOR FILE A.
006 ERROR IN FETCHING HANDLER FOR FILE B.
007 ERROR IN FETCHING HANDLER FOR OUTPUT FILE.
010 LOOKUP ERROR, FILE A.
011 LOOKUP ERROR, FILE B.
012 BAD BLOCK NUMBER SPECIFIED FOR FILE A.
013 BAD BLOCK NUMBER SPECIFIED FOR FILE B.
014 CLOSE ERROR ON OUTPUT FILE.
015 OUTPUT FILE OVERFLOW.
CONTROL CHARACTERS
THE FOLLOWING TABLE LISTS AVAILABLE CONTROL CHARACTERS.
THEY SHOULD BE TYPED ON THE CONSOLE TERMINAL.
CHARACTER ACTION
CTRL/C BOOTSTRAP OS/8.
CTRL/P RESTART PROGRAM.
CTRL/N IF TYPED DURING THE OUTPUT OF DIFFERENCES, THE
BLOCK CURRENTLY BEING OUTPUT WILL BE SKIPPED.
A LINE CONTAINING A "*" WILL BE OUTPUT TO INDI-
CATE THIS. NOTE THAT THE DEFAULT HANDLER DOES
NOT BUFFER DATA, AND A USER-SPECIFIED HANDLER
DOES. THUS, CTRL/N IS USEFUL ONLY WHEN THE
DEFAULT HANDLER IS IN USE, AS THE USER CAN
IMMEDIATELY SEE THE EFFECTS OF CTRL/N.
78/11/23/00:22 (002) MEK