/COS PATCH SYSTEM EDITED 10/8/73 /COPYRIGHT 1972, 1973 /DIGITAL EQUIPMENT CORPORATION /MAYNARD, MASS. 01754 / /THIS SOFTWARE IS FURNISHED TO PURCHASER UNDER A LICENSE FOR USE /ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH INCLUSION /OF DEC'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH SYSTEM, EXCEPT /AS MAY OTHERWISE BE PROVIDED IN WRITING BY DEC. / /THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT /NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL /EQUIPMENT CORPORATION. / /DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY /OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC. / *100 FIXMRI EXIT=5400 FIXMRI INCR=2000 FIXMRI CALL=4400 DIRECT=2000 /DIRECTORY BUFFER (400 WDS?) PDCNT, DIRECT PDORG, DIRECT+1 PDLINK, DIRECT+2 PDWSTE, DIRECT+4 P7=40 FILSZ, 0 /NEG LENGTH IN BLOCKS OF FILE TABSET, -10 DAVICE=77 /SYSTEM HANDLER DBLOCK, 0 /FLAG M4=66 KSPLIT=76 P77=20 PTR, 0 TEMP, 0 CDOIO=27 LINE=2400 /LINE BUFFER (200 WDS) BUFFER=3000 /BLOCK BUFFER (402 WDS) KNT, 0 OLDCHK=BUFFER+401 /ACTUAL CHECKSUM NEWCHK=BUFFER+400 /SETTABLE CHECKSUM SYSHND=77 REALSYS=7774 BLOCK, 0 /(400 WD) BLOCK TO READ BASE, 0 /STARTING BASE FILSZC, 0 /COMPL OF FILSZ LOC, 0 /LOCATION TO BE PATCHED CHCT, 0 KGETC=24 TTOCHR=31 SIZE, 0 NUM, 0 P7600=70 LISTSW=7776 SWTCH, 0 /-1 IF SPECIAL MODE CDOIOT, CDOIOY X4=14 CNT, 0 CHANGE, 0 /0 IF NO CHANGES IN BLOCK RELCHK, 0 /RELATIVE CHECKSUM COLDV, 0 /OLD LOCATION VALUE (COMPL) BLKCNT, 0 /NUMBER OF BLOCKS CHANGED KOTOD=74 M1=45 *200 START, 2 /PDP CALL [ONCE RDFILE, CALL CDOIOT /"FILE:" KFILE DCA I [LINE+1 DCA I [LINE+2 DCA I [LINE+3 DCA I [LINE+4 DCA BLKCNT CALL CDOIO /READ REPLY TO FILE LINE-1 /INTO LINE BUFFER JMP I [DONE TAD I [LINE+1 SNA CLA JMP SYSTEM /HE HIT CR TAD I [LINE+1 TAD [-2057 /"/N" SNA JMP SYSTEM TAD [2057-2071 /"/X" SNA CLA JMP I [DONE TAD M4 DCA KNT TAD [LINE+1 DCA PTR FIXLUP, CALL [FIX INCR PTR ISZ KNT JMP FIXLUP TAD I [LINE+4 SZA CLA JMP .+3 TAD [2326 /"SV" IS DEFAULT DCA I [LINE+4 CALL [LOOKUP LINE JMP NOTFND JOIN, DCA BASE TAD FILSZ CIA DCA FILSZC RDBLK, CALL CDOIOT KBLOCK /"BLOCK:" CALL [GETNUM /READ RELATIVE BLOCK (TO BASE) JMP RDBLK JMP ENDFIL CLL TAD FILSZ SZL /TOO BIG FOR FILE? JMP TOOBIG /YES TAD FILSZC /NO TAD BASE DCA BLOCK /GET ABSOLUTE BLOCK # CALL [READ RDWD, CALL CDOIOT KLOC /"LOCATION:" CALL [GETNUM /READ LOCATION JMP RDWD JMP I [WRITE TAD [BUFFER DCA LOC TAD LOC TAD [-BUFFER / SZA / TAD SWTCH CLL TAD [-400 /TAD [-401 SZL JMP TUBIG RDNEW, CALL CDOIOT KOLD /OLD VALUE: TAD I LOC CIA DCA COLDV TAD I LOC CALL [PRINT CALL CDOIOT KNEW /NEW VALUE: / TAD LOC / TAD [-BUFFER-400 / SZA CLA / JMP RED / TAD SWTCH / SPA CLA / JMP SPEC RED, CALL [GETNUM JMP RDWD JMP RDWD DCA I LOC / CALL [CHECK / TAD LOC / TAD [-401-BUFFER / SNA CLA / JMP FOLLY TAD RELCHK TAD I LOC TAD COLDV DCA RELCHK /ADD IN NEW VALUE-OLD VALUE INCR CHANGE NOP JMP RDWD /SPEC, INCR LOC / TAD I LOC / CALL [PRINT / TAD I LOC / DCA I [BUFFER+400 / JMP RDWD TOOBIG, CLA IAC CALL CDOIO TOO-1 JMP .-3 JMP RDBLK TUBIG, CLA IAC CALL CDOIO TU-1 JMP .-3 JMP RDWD /FOLLY, CLA IAC / CALL CDOIO / FOLLE-1 / JMP .-3 / JMP RDWD SYSTEM, CLA IAC CALL CDOIO KMON-1 JMP .-3 TAD [-1341 DCA FILSZ JMP JOIN NOTFND, CLA IAC CALL CDOIO KNF-1 JMP .-3 JMP RDFILE ENDFIL, TAD BLKCNT CALL KOTOD DCA I [BLC+1 CLA IAC CALL CDOIO BLC-1 JMP .-3 JMP RDFILE PAGE /STRINGS KPATCH, KPATCH-KFILE+1 /COS PATCH SYSTEM VERSION 3.07 \ 4460 6401 6142 6544 5101 6472 6465 4656 101 101 6746 6364 5260 5701 2417 /3. 2130 /07 0000 /FOR PATCH LEVEL KFILE, KFILE-KLOC+1 /FILE NAME:\ 4752 5546 157 4256 4633 KLOC, KLOC-KOLD+1 /LOCATION :\ 5560 4442 6552 6057 133 KOLD, KOLD-KNEW+1 /OLD VALUE:\ 6055 4501 6742 5566 4633 KNEW, KNEW-KBAD+1 /NEW VALUE:\ 5746 7001 6742 5566 4633 KBAD, KBAD-KNF+1 /BAD DIRECTORY\ 4342 4501 4552 6346 4465 6063 7200 KNF, KNF-KMON+1 /FILE NOT FOUND\ 4752 5546 157 6065 147 6066 5745 KMON, KMON-KBLOCK+1 /PATCHING MONITOR\ 6142 6544 5152 5750 156 6057 5265 6063 KBLOCK, KBLOCK-TOO+1 /BLOCK:\ 4355 6044 5433 TOO, TOO-TU+1 /BLOCK TOO BIG\ 4355 6044 5401 6560 6001 4352 5000 TU, TU-BADCHK+1 /LOCATION TOO BIG\ 5560 4442 6552 6057 165 6060 143 5250 BADCHK, BADCHK-BADNU+1 /BAD CHECKSUM\ 4342 4501 4451 4644 5464 6656 BADNU, BADNU-KEXIT+1 /BAD NUMBER\ 4342 4501 5766 5643 4663 KEXIT, KEXIT-RES+1 /EXIT\ 4671 5265 RES, RES-NOCH+1 /- TYPE R TO RESTART\ 1601 6572 6146 101 6301 165 6001 6346 6465 4263 6500 /ERRWAS, ERRWAS-FOLLE+1 / TEXT \- ERROR WAS:\ /FOLLE, FOLLE-NOCH+1 / TEXT \SUCH FOLLY WAS BOUND TO FAIL!\ NOCH, NOCH-OK+1 /NO CHANGE IN BLOCK\ 5760 144 5142 5750 4601 5257 143 5560 4454 OK, OK-REL+1 /NEW BLOCK PATCHED OK\ 5746 7001 4355 6044 5401 6142 6544 5146 4501 6054 REL, REL-BLC+1 /RELATIVE CHECKSUM:\ 6346 5542 6552 6746 144 5146 4454 6466 5633 BLC, BLC-RESTRT+1 /XX BLOCK(S) PATCHED IN THIS FILE\ 7171 143 5560 4454 1164 1201 6142 6544 5146 4501 5257 165 5152 6401 4752 5546 RESTRT, RESTRT-Q+1 /RESTARTING\ 6346 6465 4263 6552 5750 Q, PAGE /ROUTINE TO DO LOOKUPS ON OS/8 DIRECTORIES /CALLING SEQUENCE: / JMS LOOKUP / PTR-1 TO NAME / / STARTING BLOCK NUMBERN AC / LENGTH IN 'FILSZ'. XR=10 XR2=11 LOOKUP, 0 TAD I LOOKUP DCA PTNAME INCR LOOKUP JMS MRDCAT JMS MDSRCH EXIT LOOKUP TAD SBLOCK CIA TAD I PDORG INCR LOOKUP EXIT LOOKUP MRDCAT, 0 SZA JMP MRDREN DCA SBLOCK DCA FILSZ CLA IAC MRDREN, TAD DAVICE /FORM A UNIQUE VALUE CIA /FOR EACH DEVICE'S DIRECTORY BLOCKS TAD DBLOCK SNA JMP INLRDY CIA TAD DBLOCK DCA DBLOCK JMS MREADC INLRDY, TAD I PDCNT DCA NFILES TAD PDWSTE DCA XR EXIT MRDCAT MDSRCH, 0 FSRCLP, TAD PTNAME DCA XR2 TAD M4 DCA CT TAD I XR SNA JMP SKPMTF SKP SRCWDL, TAD I XR CIA TAD I XR2 SZA CLA JMP NXTFIL ISZ CT JMP SRCWDL JMS BUMPXR TAD I XR SNA JMP SKPMTF+1 DCA FILSZ ISZ MDSRCH JMP I MDSRCH NXTFIL, TAD CT IAC JMS BUMPXR SKPMTF, TAD I XR TAD SBLOCK DCA SBLOCK ISZ NFILES JMP FSRCLP DCA SBLOCK TAD I PDLINK SZA JMP MRDREN EXIT MDSRCH BUMPXR, 0 TAD I PDWSTE CIA TAD XR DCA XR EXIT BUMPXR MREADC, 0 TAD DBLOCK AND P7 JMS I KSPLIT JMS I DAVICE 200 DIRECT 0 TAD I PDCNT /QUICK CHECK FOR LEGAL DIRECTORY TAD (100 SPA CLA JMP BADDIR TAD I PDLINK AND TABSET /7770 SNA CLA EXIT MREADC BADDIR, CLA IAC CALL CDOIO KBAD-1 JMP .-3 JMP I (RDFILE SBLOCK, 0 CT, 0 NFILES, 0 PTNAME, 0 PAGE /CHECK, 0 / TAD (BUFFER-1 / DCA XR / TAD (-400 / DCA KNT /CLOOP, TAD I XR / ISZ KNT / JMP CLOOP / DCA I (OLDCHK / EXIT CHECK FIX, 0 TAD I PTR AND (7700 SNA EXIT FIX TAD (-2000 SZA /CHANGE SLASH TO 0 TAD (3700+2000 DCA TEMP TAD I PTR AND P77 SNA JMP ZRO TAD (-20 SZA TAD (37+20 AND P77 ZRO, TAD TEMP DCA I PTR EXIT FIX DIGIT, 0 TAD (-31 CLL TAD (10 /SEARCH FOR OCTAL DIGIT SZL EXIT DIGIT TAD (21-63 SZA CLA /CHECK FOR "R" JMP BADNUM CLA IAC CALL CDOIO RESTRT-1 JMP .-3 JMP I (RDFILE / GCH / JMS GCH / / NORMAL RETURN> GCH, 0 TAD CHCT DCA .+3 TAD (LINE CALL KGETC 0 SZA ISZ CHCT SZA ISZ GCH EXIT GCH / GETNUM / CALL [GETNUM / /ALSO IF NO INPUT / <^Z RETURN> / GETNUM, 0 DCA NUM DCA CHCT CALL CDOIO LINE-1 JMP CTRLZ TAD I [LINE+1 SNA CLA EXIT GETNUM TAD I [LINE+1 TAD [-4657 /"EN" SNA CLA JMP CTRLZ DCA NUM TAD M4 DCA KNT RDLU, JMS GCH JMP GOTNUM JMS DIGIT DCA TEMP TAD NUM CLL RTL TAD SIZE RAL TAD TEMP DCA NUM ISZ KNT JMP RDLU JMS GCH SKP JMP BADNUM GOTNUM, TAD NUM INCR GETNUM /PASS ERROR RETURN CTRLZ, INCR GETNUM /PASS ^Z RETURN EXIT GETNUM BADNUM, CLA IAC CALL CDOIO BADNU-1 JMP .-3 EXIT GETNUM DONE, CLA IAC CALL CDOIO KEXIT-1 JMP .-3 JMP I P7600 ONCE, 0 TAD I [REALSYS DCA SYSHND TAD I [LISTSW IAC /CHECK FOR ?? SZA CLA JMP OM STA DCA SWTCH JMP OT OM, TAD I M1 TAD (-2010 SNA CLA STA DCA SWTCH OT, CLA IAC /OUTPUT TO TTY CALL CDOIO KPATCH-1 JMP .-3 /ERROR 7076 SNA CLA STA DCA SIZE EXIT ONCE PAGE / PRINT / TAD (NUMBER / JMS PRINT PRINT, 0 DCA NUM TAD M4 DCA KNT PLOOP, TAD NUM JMS PRIN TAD NUM RTL RAL DCA NUM ISZ KNT JMP PLOOP TAD (215 CALL TTOCHR TAD (212 CALL TTOCHR EXIT PRINT PRIN, 0 RTL RTL AND (7 TAD (260 CALL TTOCHR EXIT PRIN READ, 0 TAD BLOCK CALL KSPLIT CALL DAVICE 200 BUFFER 0 / CALL (CHECK / TAD I (OLDCHK / DCA I (NEWCHK DCA CHANGE DCA RELCHK EXIT READ /WRITE, TAD I (NEWCHK / CIA / TAD I (OLDCHK / SZA / JMP BADCH / TAD CHANGE / SNA CLA / JMP NOCHN WRITE, TAD CHANGE SNA CLA JMP NOCHN RLCH, CALL CDOIOT REL TAD SWTCH SZA CLA JMP SPECM CALL [GETNUM JMP RLCH JMP I [RDWD CIA TAD RELCHK SZA CLA JMP BDRLCH CHOK, TAD BLOCK CALL KSPLIT CALL DAVICE 4200 BUFFER 0 CLA IAC CALL CDOIO OK-1 JMP .-3 INCR BLKCNT JMP I (RDBLK /BADCH, DCA TEMP / CALL CDOIOT / BADCHK / TAD SWTCH / SNA CLA / JMP NOINFO / CALL CDOIOT / ERRWAS / TAD TEMP / CALL (PRINT / JMP I (RDWD BDRLCH, CLA IAC CALL CDOIO BADCHK-1 JMP .-3 JMP I [RDWD SPECM, TAD RELCHK CALL [PRINT JMP CHOK NOINFO, CLA IAC CALL CDOIO RES-1 JMP .-3 JMP I (RDWD NOCHN, CLA IAC CALL CDOIO NOCH-1 JMP .-3 JMP I (RDBLK / CDOIOT / CALL CDOIOT / ADDR OF STRING / CDOIOY, 0 CLA /IN CASE TAD I CDOIOY DCA CNT DCA P CDLOOP, TAD I CDOIOY CALL KGETC P, 0 SNA JMP OYVER TAD (237 CALL TTOCHR INCR P ISZ CNT JMP CDLOOP OYVER, TAD (240 CALL TTOCHR INCR CDOIOY EXIT CDOIOY PAGE $