File CMPARE.DC (file description)

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



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search