TITLE COPY V004 31MAR ;COPYRIGHT 1968, DIGITAL EQUIPMENT CORP., MAYNARD, MASS. REPEAT 0,< COPY WILL RUN IN ANY AMOUNT OF CORE, HOWEVER, EFFICIENCY INCREASES WITH CORE SIZE. SWITCHES ARE PRECEDED BY A SLASH OR ENCLOSED IN PARENTHESES AND MAY APPEAR ANYWHERE IN THE COMMAND STRING. THE GENERAL COMMAND STRING FORMAT IS: (OUTPUT DECTAPE):_(INPUT DECTAPE):/C /C COPY ALL BLOCKS FROM THE INPUT DECTAPE ONTO THE OUTPUT DECTAPE. /Z ZERO ALL BLOCKS OF THE OUTPUT DECTAPE, CLEAR THE DIRECTORY. /V PERFORM A WORD BY WORD COMPARISION BETWEEN EVERY WORD OF THE INPUT AND OUTPUT DECTAPES. /T CAUSES A BOOTSTRAP LOADER TO BE WRITTEN ONTO BLOCKS 0,1 AND 2 OF THE OUTPUT TAPE. COPY TYPES "TYPE CORE BANK OR OFFSET FOR BSLDR." OFFSET = OCTAL NUMBER 1000 TO 777600. CORE-BANK = NNNK = 16K TO 256K, EX: NNNK=64K THEN OFFSET=177000 (TOP OF COPE - 1000) /N DON'T OUTPUT A DIRECTORY. /6 LOOK FOR A DIRECTORY IN BLOCK ONE, NOT BLOCK 144. /G DON'T RESTART THE PROGRAM AFTER A PARITY ERROR (BIT20), OUTPUT AN ERROR MESSAGE AND CONTINUE. NO SW'S SET C AND V SWITCHES (DEFAULT CONDITION). NOTE........AT COMPLETION THE OUTPUT DECTAPE SHOULD BE REASSIGNED TO ENSURE THAT THE DIRECTORY IN CORE IS UP TO DATE. THE FOLLOWING MESSAGES MAY BE OUTPUT TO THE USER'S TELETYPE. WRITE LOCK ERROR INPUT (OR OUTPUT) DEVICE ERROR INPUT (OR OUTPUT) CHECKSUM OR PARITY ERROR INPUT (OR OUTPUT) BLOCK TOO LARGE INPUT (OR OUTPUT) PREMATURE END OF FILE 000000 VERIFICATION ERRORS COMMAND ERROR SWITCH ERROR DEVICE INIT FAILURE DEVICE MUST BE A DECTAPE INPUT AND OUTPUT DECTAPES MAY NOT BE THE SAME DEVICE. THE FOLLOWING MAY BE OUTPUT WHILE PROESSING "/L". PTR INIT FAILURE LOOKUP FAILED, "BSLDR.REL" ?DATA ERROR ON DEVICE PTR ?ILLEGAL BLOCKTYPE ?CANNOT PROCESS EXTERNAL SYMBOLS ?CANNOT PROCESS HIGH SEG'S ?NO END BLOCK ENCOUNTERED ?BOOTSTRAP LOADER WILL NOT FIT IN 3 BLOCKS THE FOLLOWING MAY BE OUTPUT WHILE PROCESSING "/T". TYPE CORE BANK OR OFFSET FOR DTBOOT ?OFFSET = 1000 TO 777600 (OCTAL) ?EXPECTED FORMAT IS "NNNK" = 16K T0 256K ?BOOTSTRAP LOADER IS NOT IN COPY; TRY "/L". > FLP=400000 ;NOT SW MODE **FLAGS ARE IN LH OF F** FLC=200000 ;COPY FLZ=100000 ;ZERO FLV= 40000 ;VERIFY FLT= 20000 ;TENDMP FLG= 10000 ;IGNORE PARITY ERRORS FLL= 4000 ;LIST DIR FLK= 2000 ;COLON FLA= 1000 ;LEFT ARROW FLI= 400 ;INPUT DEVICE FL2= 200 ;CHANEL TWO HSW= 100 ;HELP LSW= 20 ;REQ TO LOAD A BSLDR LFL= 10 ;A BOOTSTRAP LOADER IS IN "COPY" NSW= 4 ;NO DIRECTORY FL6= 2 ;6 FORMATTED FPT= 1 ;A PDP-10 ANYSW=FLC+FLZ+FLV+FLT ;ANYSW=0 IMPLIES FLC+FLV JOBVER=137 AC0=0 AC1=1 AC2=2 AC3=3 AC4=4 AC5=5 AC6=6 V1=1 ;VERIFY CMDLST VZ1=2 ;CMDLST TERMINATOR V2=3 ;VERIFY CMDLST VZ2=4 ;CMDLST TERM BP=5 ;BYTE POINTER C=6 ;CURRENT CHARACTER LOC=7 ;BLOCK NUMBER T=10 ;TEMP U=T+1 ;TEMP F=12 ;FLAGS UNSD2=14 ;UNUSED UNSD3=15 ;UNUSED IOS=16 ;IO STATUS P=17 ;PUSH DOWN LIST EXTERN JOBFF,JOBREL,JOBSA,JOBREN LOC JOBVER XWD 0,4 ;;VERSION # RELOC ST: CALLI 0 MOVE P,[IOWD 10,TTYIN+23] ;PUSH DOWN LIST MOVE AC0,ZROWRD TLNN F,30 MOVEM AC0,JOBFF INIT 17,1 ;ASCII LINE SIXBIT /TTY/ XWD TOUT,TIN HALT . ;INIT ERROR PUSH P,JOBFF MOVEI T,TTYIN MOVEM T,JOBFF INBUF 17,1 ;SET THE BUFFER ADR TO TTYIN MOVEI T,TTYOUT MOVEM T,JOBFF OUTBUF 17,1 ;SET THE BUFFER ADR TO TTYOUT OUTPUT 17, ;DUMMY SETZB F,IDEV SETZB T,ODEV POP P,JOBFF MOVE T,JOBREL SUB T,JOBFF ;T=NO. OF FREE LOC CAIGE T,400 ;TRY FOR AT LEAST 2K OF BUFFER AREA TRO T,400 MOVE C,JOBFF SUBI C,1 ANDI T,-200 ;T=NO. OF FREE WORDS MOVNM T,U ;IOWD FORMAT "-N" LSH T,-7 ;T=NO. OF BLOCKS PER COPY INPUT MOVEM T,INC ;COPY INCREMENT LSH T,-1 ;T=NO. OF BLOCKS PER VERIFY INPUT MOVEM T,INCV ;VERIFY INCREMENT HRLM U,C ;ASSEMBLE MOVEM C,LISTC ;COPY IOWD ASH U,-1 ;HALVE THE "-N" FOR VERIFY TRNE U,100 ;"-N" MUST AGREE WITH THE INCREMENT ADDI U,100 ;ADJUST HRL C,U ;ASSEMBLE MOVEM C,LISTV1 ;VERIFY IOWD #1 MOVMM U,U ; ADD C,U ;ASSEMBLE MOVEM C,LISTV2 ;VERIFY IOWD #2 MOVEI C,"*" PUSHJ P,TYPC ;OUTPUT CHAR INPUT 17, SETZM JOBREN MOVE F,FSAVE ;INITIAL FLAGS SKIPA BP,[POINT 6,ODEV] ;ASSUME AN OUTPUT DEV COIDEV: MOVE BP,[POINT 6,IDEV] ;INPUT IF LEFT-ARROW + COLON WERE SEEN COTGET: PUSHJ P,TYPGET ;RETURN A CHAR TO C CAIN C,"/" JRST COSLSH ;SLASH CAIN C,"(" JRST COLPRN ;LEFT PAREN CAIN C,":" JRST COCOLN ;COLON CAIE C,12 CAIN C,15 JRST COCRET ;CR OR LF CAIN C,"_" JRST COLARO ;LEFT ARROW CAIGE C,"0" ; JRST ERRCMD ; CAILE C,"9" ;ILLEGAL CHAR? CAIL C,"A" ; CAILE C,"Z" ; JRST ERRCMD ; SUBI C,40 ;6 BITIZE IT TLNE BP,770000 ;ACCEPY 6 CHARS ONLY IDPB C,BP ;ASSEMBLE AN I/O DEV NAME JRST COTGET ; COLPRN: TLZA F,FLP ;ENTER PAREN MODE COEXIT: JUMPL F,COTGET ;NORMAL EXIT COSLSH: PUSHJ P,TYPGET ;SLASH - RETURN SW IN C MOVSI U,-LEN ;U=-SWTAB LEN,0 COSWLP: MOVE T,SWTAB(U) ;T=FLAG,CHAR CAIN C,(T) ;C=0,CHAR TDOA F,T ;F=FLAGS,CHARS ANDED AOBJN U,COSWLP ;MORE SW'S? LOOP JUMPL U,COEXIT ;MATCH OR MORE SW? LOOP JRST ERRSW ;NOT A SWITCH COLARO: TLZE F,FLK ;CLEAR COLON FLAG TLOE F,FLA ;SET LEFT ARROW FLAG JRST ERRCMD ;TOO MANY ARROWS,NOT ENOUGH KOLONS JRST COIDEV ;NEXT DEVICE MUST BE INPUT COCOLN: TLZ BP,770000 ;ACCEPT NO MORE CHARS. TLON F,FLK ;SET KOLON FLAG JUMPGE BP,COTGET ;NORMAL EXIT JRST ERRCMD ;NULL NAME, TOO MANY COLONS COCRET: TLNE F,FLA ;LOADING A LOADER? JRST COSTRT ;YES SKIPE ODEV ; JRST ERRCMD ;NO_,SOME ODEV TLNE F,ANYSW ; JRST ERRCMD ;NO_,NO ODEV, NO SW JRST ST ;NO_,NO ODEV,NO SW =* COSTRT: TLNN F,ANYSW ;ANY SW=SKIP TLO F,FLC+FLV ;DEFAULT=COPY+VERIFY TLNE F,FLC ;IF COPY TLZ F,FLZ ;DONT ZERO TLNE F,FLZ ;IF ZERO TLZ F,FLV ;DONT VERIFY SKIPN T,IDEV TLNE F,FLC+FLV JUMPE T,ERRCMD ;AN INDEVICE IS REQUIRED TLNN F,FLT ;IS 10DMP WANTED? JRST CINIT ;NO, PROCEED ;HERE TO ACCEPT THE BOOTSTRAP LOADER OFFSET (/T) CTENDM: TLNN F,LFL+LSW ;IS A BOOTSTRAP LOADER LOADED? JRST ERRTNH ;NO, COMPLAIN TLNN F,LSW JRST CTEN1 MOVEI BP,MES32K PUSHJ P,TYPEIT ;BSLDR'S NAME PUSHJ P,TYPBUF INPUT 17, CTEN0: PUSHJ P,TYPGET ; CAIN C,"Y" ; JRST CTEN2 ;K, MUST BE A CORE-BANK CAIE C,"N" JRST CTENDM CTEN1: MOVEI BP,MES16K PUSHJ P,TYPEIT PUSHJ P,TYPBUF INPUT 17, PUSHJ P,TYPGET CAIN C,"N" JRST CINIT CAIE C,"Y" JRST CTEN1 TLOA F,40 CTEN2: TLO F,HSW CINIT: MOVEI T,134 ;BUFRD MODE PUSHJ P,INIT ;FIRST INIT TLNE F,FLC!FLZ ;BEGIN HERE ___****** PUSHJ P,COPZRO ;ZERO OR COPY TLNE F,FLC!FLZ ;IF C OR Z- PUSHJ P,LALA ;THEN REWIND TLNN F,FLZ ;WASIT /Z ? JRST CNOZRO ;NO SETSTS 2,16 ;YES CALLI 2,13 ;CLEAR DIR IN CORE RELEAS 2, ;AND ON TAPE MOVEI T,14 ;AND PUSHJ P,INIT ;REINIT CNOZRO: TLNE F,FLV ;VERIFY ? PUSHJ P,VERZRO ;YES TLNE F,FLV ;IF VERIFY- PUSHJ P,LALA ;THEN REWIND TLNE F,FLT ;TEN DUMP ? PUSHJ P,TENINT ;YES JRST ST ;GO AGAIN ****** LALA: MTAPE 2,1 ; SKIPE C,IDEV ; MTAPE 1,1 ; JFCL 1,.+1 ;PROCESSOR TEST JRST .+1 ; JFCL 1,.+3 ;6-JUMP TLO F,FPT ;PDP-10 FLAG JRST LSTEST ;10-JUMP JUMPE C,LSTES0 ;JUMP IF NO INPUT DEV USETI 1,1 INPUT 1,REWIND ;IOWD 1,DATA LSTES0: USETI 2,1 INPUT 2,REWIND LSTEST: TLZE F,FLL ;LIST A DIR? JRST DLST ;YES MOVEI C,^D30 ;SECONDS GDNITE: TLNE F,FPT ;6-SKIP CALLI C,31 ;TO SLEEP POPJ P, ; SWTAB: XWD FLP,")" ;XIT XWD FLC,"C" ;COPY XWD FLZ,"Z" ;ZERO XWD FLV,"V" ;VERIFY XWD FLT,"T" ;TENDMP XWD FLG,"G" ;IGNORE XWD FL6,"6" ;PDP6 DIR LEN=.-SWTAB DSAV: TLON F,FLL ;ENTER THIS CODE ONCE ONLY TLNE F,FL6 ;SKIP IF ITS NOT 6FMT JRST COPSKP ;2ND PASS OR 6FMT-EXIT. MOVEM LOC,AC1 SUBI AC1,144 ;FIRST BLK OF NEXT OUTPUT SUB AC1,INC ;FIND A IMULI AC1,-200 ; DIRECTORY, ADD AC1,LISTC ;GRAB HRLI AC1,1(AC1) ; A HRRI AC1,DIRECT ; DIRECTORY. BLT AC1,DIRECT+177 ;SAVE IT. JRST COPSKP DLST: TLNE F,FL6 ;6FMT? JRST D6LST ;YES. HRLI AC3,150000 ;TERMINATOR HRLZI 1,777752 DLST3: SKIPN AC2,DNAM(1) ;FILE NAME JRST DLST5 ; MOVEI BP,2 ; PUSHJ P,TYPEIT ; HLLZ AC2,DNAM+^D22(1) ;EXTENSION SKIPN 0,2 JRST DLST4 MOVEI 6,11 PUSHJ P,TYPC HRRI AC2,150000 ; MOVEI BP,2 ; PUSHJ P,TYPEIT ; DLST4: PUSHJ P,TYPCL ; DLST5: AOBJN AC1,DLST3 ;LOOP DXIT: MOVEI C,^D22 ;22 SECONDS JRST GDNITE ;TO SLEEP. D6LST: MOVEI AC0,36 ;MAX NO. OF ENTRIES HRRZ AC1,DIRECT ;LOC OF FIRST DIR BLK D6BEG: HRLI AC3,150000 ;"-" TERMINATOR MOVEI BP,2 ; SKIPN AC2,DIRECT(1) ;IS THERE A FILENAME? JRST DXIT ;NORMAL EXIT PUSHJ P,TYPEIT ;FILENAME HLLZ AC2,DIRECT+1(1) ;EXTENSION SKIPN AC2 ;IF NULL, JRST D6FIN ;JUMP MOVEI C," " ;OTHERWISE PUSHJ P,TYPC ;TAB HRRI AC2,150000 ;"-" MOVEI BP,2 ;TERM. PUSHJ P,TYPEIT ; D6FIN: PUSHJ P,TYPCL ;CR-LF ADDI AC1,4 ; SOJG AC0,D6BEG ;IN CASE JRST DXIT ;DIR WAS FULL TYPEIT: HRLI BP,440600 ;BP=MESSAGE ADR TYPLOP: ILDB C,BP ; CAIN C,15 ;PLUS? POPJ P, ;GET THE WHOLE MESSASE CAIN C,3 ;#? JRST TYPCL ;APPEND CR LF AND TYPE ADDI C,40 ;ASCIZE IT IDPB C,TOUT+1 ;TO THE BUFFER JRST TYPLOP ;+LOOP TYPGET: ILDB C,TIN+1 ;GET CHAR CAIE C," " ;SPACE? CAIN C," " ;TAB? JRST TYPGET ;FORGET IT POPJ P, TYPCCL: IDPB C,TOUT+1 ;TYPE CHAR,CRLF TYPCL: MOVEI C,15 ;TYPE CRLF IDPB C,TOUT+1 MOVEI C,12 TYPC: IDPB C,TOUT+1 ;TYPE CHAR TYPBUF: OUTPUT 17, ;DO IT POPJ P, ERRT1I: TLOA F,FLI ;INPUT ERROR ERRT1O: TLZ F,FLI ;OUTPUT ERROR STATUS 1,IOS ;STATUS TO IOS TRNE IOS,360000 ;ALL THE ERRORS JRST ERRCHK ;FOUND AN ERROR POPJ P, ERRT2I: TLOA F,FLI ;INPUT ERROR ERRT2O: TLZ F,FLI ;OUTPUT ERROR STATUS 2,IOS ;FLAGS TO IOS TRNN IOS,760000 ;PLUS WRITE LOCK POPJ P, ;NO ERRORS TLO F,FL2 ;IT'S A CHANNEL 2 ERROR ERRCHK: TRNE IOS,400000 PUSHJ P,ERR400 ;WRITE LOCK TRNE IOS,200000 PUSHJ P,ERR200 ;DEVICE ERROR TRNE IOS,100000 PUSHJ P,ERR100 ;CKSUM/PARITY TRNE IOS,040000 PUSHJ P,ERR040 ;BLOCK TOO LARGE TRNE IOS,020000 ;PREMATURE EOF,PDP9-DTA? PUSHJ P,ERR020 ; TRNN IOS,640000 ;THESE BITS IMPLY RESTART TLNN F,FLG ;/G+PARITY ERR = CONTINUE JRST ST ;RESTART TRZ IOS,740000 ;ZERO IN TLNN F,FL2 SETSTS 1,(IOS) ;TURN OFF TLZE F,FL2 SETSTS 2,(IOS) ;AND POPJ P, ;POP OUT ERR400: MOVEI BP,MES400 JRST TYPEIT MES400: SIXBIT /WRITE LOCK ERROR#/ ERR200: PUSHJ P,ERRCOM MOVEI BP,MES200 JRST TYPEIT MES200: SIXBIT / DEVICE ERROR#/ ERR100: PUSHJ P,ERRCOM MOVEI BP,MES100 JRST TYPEIT MES100: SIXBIT / CHECKSUM OR PARITY ERROR#/ ERR040: PUSHJ P,ERRCOM MOVEI BP,MES040 JRST TYPEIT MES040: SIXBIT / BLOCK TOO LARGE#/ ERR020: PUSHJ P,ERRCOM MOVEI BP,MES020 JRST TYPEIT MES020: SIXBIT / PREMATURE END OF FILE#/ ERRCOM: MOVEI BP,SXBINP TLNN F,FLI MOVEI BP,SXBOUT JRST TYPEIT SXBINP: SIXBIT /INPUT-/ SXBOUT: SIXBIT /OUTPUT-/ ERRVER: MOVE T,[POINT 6,MESVER] MOVE BP,[POINT 3,U,17] ERRVE1: ILDB C,BP ;LOAD AN OCTAL NUMBER ADDI C,20 ;6BITIZE IT IDPB C,T ;INSERT IN MESS TLNE T,770000 ;ONE WORD ONLY JRST ERRVE1 ;LOOP 6 TIMES MOVEI BP,MESVER JRST TYPEIT MESVER: SIXBIT /000000 VERIFICATION ERRORS#/ ERRCMD: MOVEI BP,MESCMD PUSHJ P,TYPEIT JRST ST MESCMD: SIXBIT /COMMAND ERROR#/ ERRSW: MOVEI BP,MESSW PUSHJ P,TYPEIT JRST ST MESSW: SIXBIT /SWITCH ERROR#/ ERRIN1: SKIPA T,IDEV ERRIN2: MOVE T,ODEV MOVEM T,MESINI MOVEI BP,MESINI PUSHJ P,TYPEIT JRST ST MESINI: SIXBIT / INIT FAILURE#/ ERRDT1: SKIPA T,IDEV ERRDT2: MOVE T,ODEV MOVEM T,MESDTA MOVEI BP,MESDTA PUSHJ P,TYPEIT JRST ST MESDTA: SIXBIT / MUST BE A DECTAPE#/ ERRTNH: MOVEI BP,MESTNH PUSHJ P,TYPEIT JRST ST MESTNH: SIXBIT /TENDUMP IS NOT IN CORE.#/ MES32K: SIXBIT /32K TENDUMP?... -/ MES16K: SIXBIT /16K TENDUMP?... -/ TENINT: TLNN F,140 POPJ P,0 ;WRITE A BOOOTSTRAP LOADER IN BLOCKS 0,1 AND 2 PUSH P,JOBFF SETSTS 2,134 ;SO I CAN WRITE IN BLK 0 USETO 2,0 OUTBUF 2,1 OUTPUT 2, ;DUMMY! HRLZI BP,L16K. TLNN F,HSW HRLZI BP,L32K. TLNE F,NSW HRLZI BP,L16K. HRR BP,OUT2+1 ;BLT PTR MOVEM BP,C ;SAVE IT BLT BP,177(C) ;ZAP 1 OUTPUT 2, ;BLK 0 ADD C,[XWD 200,0] MOVEM C,BP ;2ND PTR SAVED BLT BP,177(C) ;ZAP 2 USETO 2,1 OUTPUT 2, ;BLK 1 PUSHJ P,ERRT2O ;ERRORS? POP P,JOBFF POPJ P, COPZRO: PUSH P,JOBFF ;SAVE JOBFF SETSTS 1,134 ; SETSTS 2,134 ; OUTBUF 2,1 ;WITH ONE BUFFER MODE-134 USETO 2,0 ;FOR BLOCK ZERO OUTPUT 2, ;DUMMY TLNN F,FLC ;COPY JRST COPBKZ ;NO, MUST BE ZERO INBUF 1,1 ;ONE BUFFER MODE-134 USETI 1,0 ;BLOCK ZERO INPUT 1, ;GET IT PUSHJ P,ERRT1I ;OK? MOVEI T,177 ;LOOP LENGTH LDB C,IN1+1 ;FIRST WORD DPB C,OUT2+1 ;TO THE BUFFER COPLPZ: ILDB C,IN1+1 ;OTHER WORDS IDPB C,OUT2+1 ;TO THE BUFFER SOJG T,COPLPZ ;TO LOOP COPBKZ: OUTPUT 2, ;DUMP THE BUFFER POP P,JOBFF ;FOR VERIFY? PUSHJ P,ERRT2O ;OK? SETSTS 2,136 ;DUMP MODE SETSTS 1,136 ;DUMP MODE USETI 1,1 ;BLOCK ZERO INPUT 1,DIRWRD ;GET IT MOVE U,JOBREL ;UPPER LIMIT MOVE T,BLTWRD ;FROM,TO SETZM @ZROWRD ;START BLT T, (U) ;ZAP MOVEI LOC,1 ;START AT BLOCK ONE COPSET: CAILE LOC,144 JRST DSAV COPSKP: TLNE F,FLC ;SKIP USETI 1,(LOC) ;IO 2 UNASGND CH USETO 2,(LOC) ;SET THE BLOCK NO. ADD LOC,INC ;ADD THE INCREMENT CAILE LOC,1102 ;WILL IT FIT? JRST COPFIN ;NO PUSHJ P,COPYIT ;ONE BUFFER JRST COPSET ;AND LOOP COPFIN: SUBI LOC,1102 ;N BLOCKS WON'T FIT IMULI LOC,200 ;N WORDS WON'T FIT MOVSS LOC ;GET ORGANIZED ADDM LOC,LISTC ;SUB N WORDS FROM LIST SKIPL LISTC ;IF LH OF IOWD = 0, POPJ P, ;EXIT COPYIT: TLNN F,FLC ;COPY? JRST COPOUT ;ZERO! INPUT 1,LISTC ;COPY! PUSHJ P,ERRT1I ;OK? COPOUT: OUTPUT 2,LISTC ;COPY AND ZERO JRST ERRT2O ;OK? VERZRO: PUSH P,JOBFF SETZB VZ1,VZ2 ;CMDLST TERMINATOR SETSTS 1,134 ;SET SETSTS 2,134 ;IB MODE USETI 1,0 ;AND USETI 2,0 ;BLOCK 0 INBUF 1,1 ;WITH INBUF 2,1 ;ONE BUFFER EA INPUT 1, ;GET A BLOCK PUSHJ P,ERRT1I ;OK INPUT 2, ;GET ANOTHER PUSHJ P,ERRT2I ;OK HRRZ V1,IN1 ;DUMMY HRRZ V2,IN2 ;IOWD HRLI V1,-200 ;FOR VERIFY LOOP POP P,JOBFF ;RECLAIM BUFFERS PUSHJ P,VERIFY ;VERIFY AND EXIT THIS PAGE VERONE: SETSTS 1,136 ;SET SETSTS 2,136 ;DUMP MODE MOVEI LOC,1 ;START AT BLOCK 1 VERSET: MOVE V1,LISTV1 ;IOWDS MOVE V2,LISTV2 ;TO ACS USETI 1,(LOC) ;MASTER USETI 2,(LOC) ;AND COPY ADD LOC,INCV ;ADD IN THE INCREMENT CAILE LOC,1102 ;AM I ASKING TOO MUCH? JRST VERFIN ;YEP PUSHJ P,VERIN ;COUPLE OF INPUTS AND VERIFY JRST VERSET VERFIN: SUBI LOC,1102 ;HOW MUCH TOO MUCH? IMULI LOC,200 ;IN WORDS PLEASE MOVSS LOC ;BACKWARDS ADD V1,LOC ;SUB WORDS FROM LIST ADD V2,LOC ;I.E. ASK FOR LESS SKIPL V1 ;IF LH OF IOWD = 0, POPJ P, ;EXIT VERIN: INPUT 1,V1 ;ONE FOR THE MASTER PUSHJ P,ERRT1I ;OK? INPUT 2,V2 ;ONE FOR THE COPY PUSHJ P,ERRT2I ;OK? VERIFY: SETZ U, ;CLR THE ERROR CNT MOVE T,1(V1) ;MASTER WORD CAME T,1(V2) ;SAME AS COPY WORD? AOS U ;NO, COUNT THE ERRORS AOS V2 ;PLUS ONE AOBJN V1,VERIFY+1 ;BOTH HALVES AND LOOP JUMPN U,ERRVER ;ERROR MESS IF APPROPIATE POPJ P, ;UNLESS V1 IS POSITIVE INIT: INIT 2,(T) ODEV: Z XWD OUT2,IN2 JRST ERRIN2 MOVE BP,ODEV ;MAKE SURE ITS A DTA. CALLI BP,4 TLNN BP,100 JRST ERRDT2 ;ERROR, ITS NOT A DTA SKIPN IDEV ;IF NULL POPJ P, ;NO INPUT DEV REQUIRED INIT 1,(T) IDEV: Z XWD 0,IN1 JRST ERRIN1 MOVE BP,IDEV ;MAKE SURE ITS A DTA CALLI BP,4 TLNN BP,100 JRST ERRDT1 ;ERROR POPJ P, BLTWRD: XWD END.,END.+1 ;ZRO FROM,TO ZROWRD: EXP END. ;START FSAVE: XWD FLP,0 ;MODIFIED WHEN BSLDR IS LOADED LISTC: IOWD 0,END. Z LISTV1: IOWD 0,END. LISTV2: IOWD 0,END. INC: BLOCK 1 INCV: BLOCK 1 ;LISTC: IOWD 10200,L16K. ; Z ;LISTV1: IOWD 4000,L16K. ;LISTV2: IOWD 4000,END.+3000 ;INC: XWD 0,41 ;INCV: XWD 0,20 DIRECT: BLOCK 123 DNAM: BLOCK 55 DIRWRD: IOWD 200,DIRECT Z REWIND: IOWD 1,PTRBUF Z TTYIN: BLOCK 33 ;TTYIN: Z ; XWD 21,. ; Z ; XWD FLG+FLL,0 ; BLOCK 17 ; XWD FLC+FLZ+FLG,2563 ; BLOCK 7 TTYOUT: BLOCK 23 ;TTYOUT: XWD 24,1 ; XWD 21,. ; BLOCK 21 IN1: BLOCK 3 IN2: BLOCK 3 OUT2: BLOCK 3 TIN: BLOCK 3 TOUT: BLOCK 3 PTRBUF: BLOCK 3 ;TIN: XWD FLP,TTYIN+1 ; XWD FLI+FL2+HSW,0 ; Z ;TOUT: XWD FLP,TTYOUT+1 ; XWD FLI+FL2+HSW,TTYOUT+2 ; Z ;PTRBUF: XWD FLP,END.+144 ; XWD FLL+FLI,END.+174 ; Z VAR LIT L16K.: BLOCK 400 L32K.: BLOCK 400 END.: END ST ;;22-JUN