From: Richard Cornwell Date: Tue, 20 Nov 2018 03:11:47 +0000 (-0500) Subject: Fixed copy command to match binary. X-Git-Url: http://git.sky-visions.com/cgi-bin/gitweb.cgi/retro-software/dec/tops10/v4.5.git/commitdiff_plain/1042137ea38e7bc639253103da600fcfe4940f70 Fixed copy command to match binary. --- diff --git a/src/copy.mac b/src/copy.mac index cfad827..1b48309 100644 --- a/src/copy.mac +++ b/src/copy.mac @@ -1,4 +1,4 @@ -TITLE COPY V006 31MAR +TITLE COPY V004 31MAR ;COPYRIGHT 1968, DIGITAL EQUIPMENT CORP., MAYNARD, MASS. REPEAT 0,< @@ -15,10 +15,6 @@ STRING. THE GENERAL COMMAND STRING FORMAT IS: THE DIRECTORY. /V PERFORM A WORD BY WORD COMPARISION BETWEEN EVERY WORD OF THE INPUT AND OUTPUT DECTAPES. - /L LOAD A BOOTSTRAP LOADER INTO A CORE BUFFER. - COPY LOOKS FOR "BSLDR.REL" ON LOGICAL DEVICE - "PTR". NOTE COPY MUST BE "SAVED" IF THE LOADER - IS TO BE PRESERVED WITH THE COPY CORE IMAGE. /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." @@ -37,21 +33,21 @@ STRING. THE GENERAL COMMAND STRING FORMAT IS: 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 + 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. + 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" + PTR INIT FAILURE + LOOKUP FAILED, "BSLDR.REL" ?DATA ERROR ON DEVICE PTR ?ILLEGAL BLOCKTYPE ?CANNOT PROCESS EXTERNAL SYMBOLS @@ -109,11 +105,14 @@ IOS=16 ;IO STATUS P=17 ;PUSH DOWN LIST EXTERN JOBFF,JOBREL,JOBSA,JOBREN LOC JOBVER - XWD 0,6 ;;VERSION # + XWD 0,4 ;;VERSION # RELOC ST: CALLI 0 - MOVE P,[IOWD 20,TTYIN+23] ;PUSH DOWN LIST + 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 @@ -132,12 +131,10 @@ ST: CALLI 0 MOVE T,JOBREL SUB T,JOBFF ;T=NO. OF FREE LOC - MOVE C,JOBFF ; - MOVEI AC0,3777(C) ; - CAIGE T,3777 ;TRY FOR AT LEAST 2K OF BUFFER AREA - CALLI AC0,11 ;CORE UUO - JFCL ;O WELL - SUBI C,1 ;IOWD FORMAT "ADR-1" + 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 @@ -158,6 +155,7 @@ ST: CALLI 0 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 @@ -171,12 +169,6 @@ COTGET: PUSHJ P,TYPGET ;RETURN A CHAR TO C CAIE C,12 CAIN C,15 JRST COCRET ;CR OR LF - CAIE C,175 ;ALTMODE? - CAIN C,33 ;ALTMODE? - JRST COCRET ;YES - CAIN C,176 ;ALTMODE? - JRST COCRET ;YES - CAIE C,"=" ;==_ CAIN C,"_" JRST COLARO ;LEFT ARROW CAIGE C,"0" ; @@ -210,17 +202,13 @@ COCOLN: TLZ BP,770000 ;ACCEPT NO MORE CHARS. JUMPGE BP,COTGET ;NORMAL EXIT JRST ERRCMD ;NULL NAME, TOO MANY COLONS -COCRET: TLZE F,HSW ;HELP? - JRST HELP ; - TLZE F,LSW ;LOADING A LOADER? - JRST BSLDR ;YES - TLNE F,FLA ;LEFT ARO ? - JRST COSTRT ;_,SO OK +COCRET: TLNE F,FLA ;LOADING A LOADER? + JRST COSTRT ;YES SKIPE ODEV ; JRST ERRCMD ;NO_,SOME ODEV - TLNN F,ANYSW ; - JRST ST ;NO_,NO ODEV,NO SW =* + 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 @@ -236,74 +224,30 @@ COSTRT: TLNN F,ANYSW ;ANY SW=SKIP ;HERE TO ACCEPT THE BOOTSTRAP LOADER OFFSET (/T) -CTENDM: TLNN F,LFL ;IS A BOOTSTRAP LOADER LOADED? +CTENDM: TLNN F,LFL+LSW ;IS A BOOTSTRAP LOADER LOADED? JRST ERRTNH ;NO, COMPLAIN -CTEN1: SETZB AC1,OFFSET ; - TTCALL 3,[ASCIZ / -TYPE CORE BANK OR OFFSET FOR /] - MOVEI BP,PNAME + TLNN F,LSW + JRST CTEN1 + MOVEI BP,MES32K PUSHJ P,TYPEIT ;BSLDR'S NAME + PUSHJ P,TYPBUF INPUT 17, -CTEN0: PUSH P,TIN+1 ;SAVE PTR FOR RESCAN - MOVEI AC0,6 ;MAX CHARS TO ACCEPT - PUSHJ P,TYPGET ; - CAIN C,"K" ; - JRST CTEN10 ;K, MUST BE A CORE-BANK - SOJG AC0,.-3 - POP P,TIN+1 ; - MOVEI AC0,6 ;ACCEPT 6 NUMBERS -CTEN2: PUSHJ P,TYPGET ;GET A CHAR - CAIL C,"0" ; - CAILE C,"7" ; - JRST CTEN7 ;NOT A OCTAL NUMBER, TERM? - LSH AC1,3 ;MAKE ROOM - TRZ C,777770 ;CLEAR HI-ORDER BITS - ADD AC1,C ; FOR THIS CHAR - SOJG AC0,CTEN2 ;LOOK FOR 6 CHARS -CTEN3: CAIL AC1,1000 ;LOWER LIMIT - CAILE AC1,777600 ;UPPER LIMIT - JRST CTEN8 ;COMPLAIN -CTEN4: HRLI AC1,W ;SO [HRRI W,@OFFSET] WILL WORK - MOVEM AC1,OFFSET ;SAVIT - JRST CINIT ; - -CTEN7: CAIL C,12 ;"LF" - CAILE C,15 ;"CR" - CAIN C,33 ;ALTMODE - JRST CTEN3 ;A TERMINATOR -CTEN8: TTCALL 3,[ASCIZ / -?OFFSET = 1000 TO 777600 (OCTAL)/] - JRST CTEN1 ; - - ;LOOK FOR A CORE BANK, 16K-256K -CTEN10: POP P,TIN+1 ;RESCAN TTYBUF - MOVEI AC0,3 ;ONLY 3 CHARS MAX IS "256" -CTEN11: PUSHJ P,TYPGET ; - CAIL C,"0" ; - CAILE C,"9" ; - JRST CTEN17 ; - IMULI AC1,^D10 ;MAKE ROOM FOR NEXT CHAR... DEC TO OCT - ANDI C,17 ;EXTRACT DECIMAL NUMBER - ADD AC1,C ; - SOJG AC0,CTEN11 ; - -CTEN12: TRNE AC1,17 ;CHECK FOR MODULO 16 - JRST CTEN18 ;ILL - JUMPE AC1,CTEN18 ;ILL - LSH AC1,-4 ;PUSH OFF ZEROES - CAILE AC1,20 ;MAX IS 256 - JRST CTEN18 ;ILL - IMULI AC1,40000 ;TURN IT INTO AN OFFSET - SUBI AC1,1 ; - TRZ AC1,777 ;1K BELOW TOP OF THIS BANK - JRST CTEN4 ; -CTEN17: CAIN C,"K" ;SKIP IF TERM - JRST CTEN12 ; - -CTEN18: TTCALL 3,[ASCIZ / -?EXPECTED FORMAT IS "NNNK" = 16K TO 256K. -/] +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 ___****** @@ -340,7 +284,7 @@ LSTES0: USETI 2,1 INPUT 2,REWIND LSTEST: TLZE F,FLL ;LIST A DIR? JRST DLST ;YES - MOVEI C,^D15 ;SECONDS + MOVEI C,^D30 ;SECONDS GDNITE: TLNE F,FPT ;6-SKIP CALLI C,31 ;TO SLEEP POPJ P, ; @@ -351,145 +295,65 @@ SWTAB: XWD FLP,")" ;XIT XWD FLV,"V" ;VERIFY XWD FLT,"T" ;TENDMP XWD FLG,"G" ;IGNORE - XWD HSW,"H" ;HELP - XWD LSW,"L" ;LOAD BSLDR - XWD NSW,"N" ;NO DIR XWD FL6,"6" ;PDP6 DIR LEN=.-SWTAB DSAV: TLON F,FLL ;ENTER THIS CODE ONCE ONLY TLNE F,FL6 ;SKIP IF ITS NOT 6FMT - POPJ P, ;2ND PASS OR 6FMT-EXIT. - MOVEI 1,-144(LOC) ;FIRST BLK OF NEXT OUTPUT - SUB 1,INC ;FIND A - IMULI 1,-200 ; DIRECTORY, - ADD 1,LISTC ;GRAB - HRLI 1,1(1) ; A - HRRI 1,DIRECT ; DIRECTORY. - BLT 1,DIRECT+177 ;SAVE IT. - POPJ P, ;RETURN - -DATE: SETZ AC2, - LDB AC5,DATEP - IDIVI AC5,^D31 ;PICK OFF THE DAY - ADDI AC6,1 ;MAKE IT RIGHT - PUSHJ P,DATE1 ;RETURNS TWO SIXBIT NUMBERS - DPB AC6,DAY ;XXDDXX - IDIVI AC5,^D12 ;PICK OFF THE MONTH - MOVE AC6,MONPH(AC6) ;CONVERT TO ALPHA - DPB AC6,MONTH ;MMDDXX - MOVEI AC6,^D64 ;GET THE BASE YEAR - ADD AC6,AC5 ;PLUS YEARS SINCE THEN - PUSHJ P,DATE1 ;SIXBIT - DPB AC6,YEAR ;YYMMDD-DATE FINISHED - POPJ P, ; - -DATE1: IDIVI AC6,^D10 ;DIVIDE OUT A DECIMAL NUMBER - LSH AC6,6 ;MAKE ROOM FOR THE REMIANDER - ADDI AC6,152020(LOC) ;CONVERT TO SIXBIT - POPJ P, ;RETURN - -DAY: POINT 12,AC2,11 -MONTH: POINT 24,AC2,35 -YEAR: POINT 18,AC3,17 -DATEP: POINT 12,DNAM+^D22(AC1),35 -FREE: SIXBIT /FREE: +/ -BLKS: SIXBIT /-BLKS +/ -FILES: SIXBIT /-FILES#/ - MONPH: SIXBIT / -JAN/ - SIXBIT / -FEB/ - SIXBIT / -MAR/ - SIXBIT / -APR/ - SIXBIT / -MAY/ - SIXBIT / -JUN/ - SIXBIT / -JUL/ - SIXBIT / -AUG/ - SIXBIT / -SEP/ - SIXBIT / -OCT/ - SIXBIT / -NOV/ - SIXBIT / -DEC/ - - ;STANDARD OCTAL TO ASCII ROUTINE -DECMAL: IDIVI C,^D10 ; - HRLM C+1,(P) ; - SKIPE C ; - PUSHJ P,DECMAL ; - HLRZ C,(P) ; - ADDI C,60 ; - JRST TYPC ; - -DLST: TLNE F,NSW ;DIRECTORY WANTED? - JRST DXIT ;NO - TLNE F,FL6 ;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. -DLST1: SETZM TOTAL ;TOTAL FREE BLOCKS - MOVE 3,[XWD TOTAL,TOTAL+1] ;CLEAR THE ^D23 - BLT 3,TOTAL+^D22 ; WORD TABLE - MOVE 2,[POINT 5,DIRECT,4] ;POINT TO FIRST BLK SLOT - MOVEI 1,<7*^D83>-3 ;1102 SLOTS -DLST2: ILDB 3,2 ;PICK UP A FILE NUMBER - CAIG 3,^D22 ;SKIP IF BLK IS SPECIAL - AOS TOTAL(3) ;COUNT BLKS/FILE - SOJG 1,DLST2 ;LOOP - MOVEI BP,FREE ;FREE: - PUSHJ P,TYPEIT ; - MOVE C,TOTAL ;NUMBER OF FREE BLOCKS - PUSHJ P,DECMAL ; - MOVEI BP,BLKS ;-BLKS - PUSHJ P,TYPEIT ; - MOVEI C,^D22 ;26 FILES MAX - HRLZI AC1,-^D22 ; -DLST7: SKIPE DNAM(AC1) ; - SOS C ;DECREMENT MAX NO. OF BLKS - AOBJN AC1,DLST7 ; - PUSHJ P,DECMAL ; - MOVEI BP,FILES ; - PUSHJ P,TYPEIT ; - HRLZI 1,-^D22 ;LOOP 26 TIMES - - DLST3: HRLZI 3,161300 ;TERMINATOR - SKIPN 2,DNAM(1) ;FILE NAME + HRLI AC3,150000 ;TERMINATOR + HRLZI 1,777752 +DLST3: SKIPN AC2,DNAM(1) ;FILE NAME JRST DLST5 ; MOVEI BP,2 ; PUSHJ P,TYPEIT ; - HLLZ 2,DNAM+^D22(1) ;EXTENSION - HRRI 2,13 ; + 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 ; - MOVE C,TOTAL+1(1) ;NUMBER OF BLKS - PUSHJ P,DECMAL ; - MOVEI C," " ;SPACE - PUSHJ P,TYPC ; - PUSHJ P,DATE ;CREATION DATE - MOVEI BP,2 ; - HRRI 3,30000 ;"#" - PUSHJ P,TYPEIT ; -DLST5: AOBJN 1,DLST3 ;LOOP -DXIT: MOVEI C,^D15 ;15 SECONDS +DLST4: PUSHJ P,TYPCL ; +DLST5: AOBJN AC1,DLST3 ;LOOP +DXIT: MOVEI C,^D22 ;22 SECONDS JRST GDNITE ;TO SLEEP. -D6LST: MOVEI 0,36 ;MAX NO. OF ENTRIES - HRRZ 1,DIRECT ;LOC OF FIRST DIR BLK -D6BEG: HRLI 3,130000 ;"-" TERMINATOR +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 2,DIRECT(1) ;IS THERE A FILENAME? + SKIPN AC2,DIRECT(1) ;IS THERE A FILENAME? JRST DXIT ;NORMAL EXIT PUSHJ P,TYPEIT ;FILENAME - HLLZ 2,DIRECT+1(1) ;EXTENSION - SKIPN 2 ;IF NULL, + HLLZ AC2,DIRECT+1(1) ;EXTENSION + SKIPN AC2 ;IF NULL, JRST D6FIN ;JUMP MOVEI C," " ;OTHERWISE PUSHJ P,TYPC ;TAB - HRRI 2,130000 ;"-" + HRRI AC2,150000 ;"-" MOVEI BP,2 ;TERM. PUSHJ P,TYPEIT ; D6FIN: PUSHJ P,TYPCL ;CR-LF - ADDI 1,4 ; - SOJG 0,D6BEG ;IN CASE + 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,13 ;PLUS? + CAIN C,15 ;PLUS? POPJ P, ;GET THE WHOLE MESSASE CAIN C,3 ;#? JRST TYPCL ;APPEND CR LF AND TYPE @@ -501,10 +365,6 @@ TYPGET: ILDB C,TIN+1 ;GET CHAR CAIE C," " ;SPACE? CAIN C," " ;TAB? JRST TYPGET ;FORGET IT - CAIGE C,141 ;LC "A" - POPJ P, - CAIG C,172 ;LC "Z" - SUBI C,40 ;LC TO UC POPJ P, TYPCCL: IDPB C,TOUT+1 ;TYPE CHAR,CRLF @@ -515,22 +375,6 @@ TYPC: IDPB C,TOUT+1 ;TYPE CHAR TYPBUF: OUTPUT 17, ;DO IT POPJ P, - HELP: TTCALL 3,.+2 - JRST COCRET -ASCIZ % -/C COPY -/V VERIFY -/Z ZERO ALL BLOCKS -/L LOAD A BOOTSTRAP LOADER FROM PTR:BSLDR.REL -/T "TYPE CORE BANK OR OFFSET FOR BSLDR" - CORE-BANK = NNNK (16K TO 256K) - OFFSET = - WRITE A BSLDR ONTO BLOCKS 0,1 AND 2 -/N DONT TYPE A DIRECTORY -/6 PDP6 DIR -/G IGNORE ERRORS -NO SW'S IMPLY /C/V -% ERRT1I: TLOA F,FLI ;INPUT ERROR ERRT1O: TLZ F,FLI ;OUTPUT ERROR STATUS 1,IOS ;STATUS TO IOS @@ -555,7 +399,7 @@ ERRCHK: TRNE IOS,400000 PUSHJ P,ERR040 ;BLOCK TOO LARGE TRNE IOS,020000 ;PREMATURE EOF,PDP9-DTA? PUSHJ P,ERR020 ; - TRNN IOS,600000 ;THESE BITS IMPLY RESTART + TRNN IOS,640000 ;THESE BITS IMPLY RESTART TLNN F,FLG ;/G+PARITY ERR = CONTINUE JRST ST ;RESTART TRZ IOS,740000 ;ZERO IN @@ -566,7 +410,7 @@ ERRCHK: TRNE IOS,400000 POPJ P, ;POP OUT ERR400: MOVEI BP,MES400 JRST TYPEIT -MES400: SIXBIT /?WRITE LOCK ERROR#/ +MES400: SIXBIT /WRITE LOCK ERROR#/ ERR200: PUSHJ P,ERRCOM MOVEI BP,MES200 JRST TYPEIT @@ -587,8 +431,8 @@ ERRCOM: MOVEI BP,SXBINP TLNN F,FLI MOVEI BP,SXBOUT JRST TYPEIT -SXBINP: SIXBIT /?INPUT+/ -SXBOUT: SIXBIT /?OUTPUT+/ +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 @@ -602,14 +446,13 @@ MESVER: SIXBIT /000000 VERIFICATION ERRORS#/ ERRCMD: MOVEI BP,MESCMD PUSHJ P,TYPEIT JRST ST -MESCMD: SIXBIT /?COMMAND ERROR#/ +MESCMD: SIXBIT /COMMAND ERROR#/ ERRSW: MOVEI BP,MESSW PUSHJ P,TYPEIT JRST ST -MESSW: SIXBIT /?SWITCH ERROR#/ +MESSW: SIXBIT /SWITCH ERROR#/ ERRIN1: SKIPA T,IDEV ERRIN2: MOVE T,ODEV - TTCALL 3,[ASCIZ /?/] MOVEM T,MESINI MOVEI BP,MESINI PUSHJ P,TYPEIT @@ -617,7 +460,6 @@ ERRIN2: MOVE T,ODEV MESINI: SIXBIT / INIT FAILURE#/ ERRDT1: SKIPA T,IDEV ERRDT2: MOVE T,ODEV - TTCALL 3,[ASCIZ /?/] MOVEM T,MESDTA MOVEI BP,MESDTA PUSHJ P,TYPEIT @@ -626,67 +468,23 @@ MESDTA: SIXBIT / MUST BE A DECTAPE#/ ERRTNH: MOVEI BP,MESTNH PUSHJ P,TYPEIT JRST ST -MESTNH: SIXBIT %?BOOTSTRAP LOADER IS NOT IN COPY. TRY "/L".#% - PTERR1: TTCALL 3,[ASCIZ /?PTR INIT FAILURE -/] - JRST ST - -PTERR2: TTCALL 3,[ASCIZ /?LOOKUP FAILED, "BSLDR.REL" -/] - 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 -TENINT: PUSH P,JOBFF + PUSH P,JOBFF SETSTS 2,134 ;SO I CAN WRITE IN BLK 0 USETO 2,0 OUTBUF 2,1 OUTPUT 2, ;DUMMY! - MOVE AC0,[POINT 36,BSBUF] - MOVEM AC0,BSPTR ;WHERE THE LOADER IS KEPT - HRRZ AC0,JOBFF ; - HRLI AC0,(POINT 36,) - MOVEM AC0,FFPTR ;WHERE ITS WRITTEN FROM - - ILDB W,BSPTR ;IOWD - MOVE CNT,OFFSET ; - HRRI W,-1(CNT) ;FINISH THE IOWD - IDPB W,FFPTR ; - -TEN1: PUSHJ P,NBLK ;GET THE NEXT BLOCK, SKIPE XIT IS NORMAL - JRST RELDA5 ;TERMINATE THE BSLDR - TRNN CNT,-1 ;EMPTY? - JRST TEN1 ;YES - ILDB OS,BSPTR ;OFFSET FOR THIS BLK - LSH RB,2 ;OS'S RELBITS - AOBJN CNT,.+1 ;ACCOUNT FOR IT -RELDAT: TRNN CNT,-1 ;ANY MORE DATA? - JRST TEN1 ;NO - ILDB W,BSPTR ;PROGRAM WORD - JUMPGE RB,RELDA1 ;CHECK LEFT HALF - HRLZ I,OFFSET ; - ADD W,I ;RELOCATE IT - -RELDA1: TLNE RB,200000 ;CHECK RIGHT HALF - HRRI W,@OFFSET ;RELOCATE IT - IDPB W,FFPTR ; - LSH RB,2 ;NEXT RELOCATION BITS - AOBJN CNT,RELDAT ;NEXT WORD - TRNE CNT,-1 ; - PUSHJ P,NSEC ;NEXT SECTION OF BLOCK - JRST RELDAT ; - - NBLK: ILDB CNT,BSPTR ;GET THE BLOCK WRD CNT - SKIPL CNT ; - AOS (P) ;SKIP EXIT IS NORMAL - MOVN CNT,CNT ; -NSEC: ILDB RB,BSPTR ;RELOCATION BITS - HRLI CNT,-22 ;WRDS/SECTION - POPJ P, - -RELDA5: MOVE W,SASAV ;THIS JRST IS EXECUTED - HRR W,OFFSET(W) ;RELOCATE THE SA ADR - IDPB W,FFPTR ;THE LAST WORD - HRLZ BP,JOBFF ;BEG OF BSLDR + 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 @@ -696,16 +494,10 @@ RELDA5: MOVE W,SASAV ;THIS JRST IS EXECUTED BLT BP,177(C) ;ZAP 2 USETO 2,1 OUTPUT 2, ;BLK 1 - ADD C,[XWD 200,0] - MOVEM C,BP - BLT BP,177(C) - USETO 2,2 - OUTPUT 2, PUSHJ P,ERRT2O ;ERRORS? POP P,JOBFF POPJ P, COPZRO: PUSH P,JOBFF ;SAVE JOBFF - TLNE F,FLC ;SKIP IO TO UNASSIGNED CHAN. SETSTS 1,134 ; SETSTS 2,134 ; OUTBUF 2,1 ;WITH ONE BUFFER MODE-134 @@ -723,19 +515,21 @@ RELDA5: MOVE W,SASAV ;THIS JRST IS EXECUTED COPLPZ: ILDB C,IN1+1 ;OTHER WORDS IDPB C,OUT2+1 ;TO THE BUFFER SOJG T,COPLPZ ;TO LOOP - SETSTS 1,136 ;INPUT DEVICE - USETI 1,1 ;SIX FORMATTED DIRECTORY - INPUT 1,DIRWRD ;GET IT 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: TLNE F,FLC ;SKIP +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 @@ -743,18 +537,16 @@ COPSET: TLNE F,FLC ;SKIP JRST COPFIN ;NO PUSHJ P,COPYIT ;ONE BUFFER JRST COPSET ;AND LOOP -COPFIN: MOVEI T,-1102(LOC) ;N BLOCKS WON'T FIT - IMULI T,200 ;N WORDS WON'T FIT - MOVSS T ;GET ORGANIZED - ADDM T,LISTC ;SUB N WORDS FROM LIST +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? - CAILE LOC,144 ;SKIP IF NO CHANCE - PUSHJ P,DSAV ;TRY FOR A DIRECTORY COPOUT: OUTPUT 2,LISTC ;COPY AND ZERO JRST ERRT2O ;OK? VERZRO: PUSH P,JOBFF @@ -816,10 +608,8 @@ ODEV: Z CALLI BP,4 TLNN BP,100 JRST ERRDT2 ;ERROR, ITS NOT A DTA - SKIPN BP,IDEV ;IF NULL + SKIPN IDEV ;IF NULL POPJ P, ;NO INPUT DEV REQUIRED - CAMN BP,ODEV ;SAME DEVICES? - JRST INITER ;YEPER INIT 1,(T) IDEV: Z XWD 0,IN1 @@ -830,182 +620,6 @@ IDEV: Z JRST ERRDT1 ;ERROR POPJ P, -INITER: TTCALL 3,[ASCIZ /INPUT AND OUTPUT DEC-TAPES MAY NOT BE THE SAME DEVICE. -/] - JRST ST - ; LOAD A BOOTSTRAP LOADER, - -I=1 ;PTR TO BSBUF -W=2 ;WORD OF TENDMP.REL -CNT=3 ;# OF WORDS IN CURRENT BLOCK -TYPE=4 ;TYPE OF BLOCK -OS=4 ;OFFSET -RB=5 ;RELOCATION BITS - -FFPTR: BLOCK 1 ;BYTEPTR TO RELOCATED BSLDR -BSPTR: BLOCK 1 ;BYTPTR TO UNRLCTD BSLDR -OFFSET: BLOCK 1 ;THE OFFSET -RELBTS: BLOCK 1 ;RELOCATION BITS -SASAV: BLOCK 1 ;STARTING ADDRESS -PNAME: BLOCK 1 ;PROGRAM NAME - SIXBIT /#/ ;# = "CRLF" - - -BSLDR: MOVE AC0,[SIXBIT /BSLDR/] ;LOOKUP BLOCK - HRLZI AC1,(SIXBIT /REL/) - SETZB AC2,AC3 ; - INIT 16,13 ;IMAGE-BINARY - SIXBIT /PTR/ ; - EXP PTRBUF ; - JRST PTERR1 ;INIT FAILURE ERROR - INBUF 16,1 ;ONE BUFFER - LOOKUP 16, ;BSLDR.REL - JRST PTERR2 ;LOOKUP FAILURE - MOVEI I,BSBUF ;PP PTR FOR BOOTSTRAP-LOADER-BUF - -NEWBLK: PUSHJ P,GETWRD ;GET ONE WORD FROM PTR FILE - HLRZM W,TYPE ;SAVE BLOCK-TYPE - HRRZM W,CNT ;SAVE WRD-COUNT FOR THIS BLK - CAIN TYPE,1 ; - PUSH I,W ;SAVE BLOCK HDR-WRD - PUSHJ P,GETWRD ; - MOVEM W,RELBTS ;SAVE RELOCATION-BITS - CAIN TYPE,1 ;BLKTYP=1? - PUSH I,W ;YEP, SAVE THE BITS - CAIG TYPE,7 ;ILL-BLK-TYP? - JRST @TYPTAB(TYPE) ;NO, OFF TO BLOCK HANDLER - -TTCALL 3,[ASCIZ /?ILLEGAL BLOCK TPYE -/] - JRST ST ; - - TYPTAB: Z BLK0 - Z BLK1 - Z BLK2 - Z BLK3 - Z BLK4 - Z BLK5 - Z BLK6 - Z BLK7 - -GETWRD: SOSG PTRBUF+2 ;EMPTY BUF? - PUSHJ P,GETBUF ;GET A BUFFER - ILDB W,PTRBUF+1 ; - POPJ P, - -GETBUF: IN 16, ;GET BUFFER - POPJ P, - STATZ 16,20000 ;EOF? - TTCALL 3,[ASCIZ /?NO END BLOCK ENCOUNTERED -/] - STATZ 16,74000 ;ERRORS? - TTCALL 3,[ASCIZ /?DATA ERROR ON DEVICE PTR -/] - JRST ST - ;THIS IS NOT A BLOCK, IGNORE IT -BLK0: JUMPE CNT,NEWBLK ; - PUSHJ P,GETWRD ;PASS A WRD - SOJA CNT,BLK0 ; - - ;THIS IS THE PROGRAM -BLK1: MOVN CNT,CNT ;TOTAL NUMBER OF WRDS THIS BLK -BLK1A: HRLI CNT,-22 ;MAX NUMBER PER SECTION -BLK1B: TRNN CNT,-1 ;ANY MORE WRDS? - JRST NEWBLK ;NO - PUSHJ P,GETWRD ; - PUSH I,W ;SAVE IN BSBUF - AOBJN CNT,BLK1B ;ANY MORE WRDS THIS SECTION? - TRNN CNT,-1 ;NO, ...THIS BLK? - JRST NEWBLK ;NO - PUSHJ P,GETWRD ;GET THE REL-BITS FOR NXT SECT - PUSH I,W ;SAVEM - JRST BLK1A ; - - ;THIS IS THE SYMBOL TABLE -BLK2: MOVN CNT,CNT ; -BLK2A: HRLI CNT,-22 ; -BLK2B: TRNN CNT,-1 ; - JRST NEWBLK ; - PUSHJ P,GETWRD ; - TLNE W,200000 ; - JUMPL W,BLK2ER ;ERROR - ITSA EXTERNAL SYMBOL - AOBJN CNT,.+1 ;IGNORE THE VALUE - PUSHJ P,GETWRD ; - AOBJN CNT,BLK2B ; - TRNN CNT,-1 ; - JRST NEWBLK ; - JRST BLK2A -BLK2ER: TTCALL 3,[ASCIZ /?CANNOT PROCESS EXTERNAL SYMBOLS -/] - JRST ST - - ;HIGHSEG FLAG, GIVE ERROR EXIT -BLK3: TTCALL 3,[ASCIZ /?CANNOT PROCESS HIGH-SEG'S -/] - JRST ST - - ;ENTRY BLOCK, IGNORE THIS BLOCK -BLK4: MOVN CNT,CNT ; -BLK4A: HRLI CNT,-22 ; - TRNN CNT,-1 ; - JRST NEWBLK ; - PUSHJ P,GETWRD ; - AOBJN CNT,.-1 ;PASS/IGNORE - TRNN CNT,-1 ; - JRST NEWBLK ; - PUSHJ P,GETWRD ; - JRST BLK4A ; - - ;THIS IS LAST BLK, MUST BE SEEN, ALSO IS PROG-BREAK -BLK5: PUSHJ P,GETWRD ; - MOVNI AC0,1(W) ; - HRLM AC0,BSBUF ;START THE IOWD - CAILE W,600 ;MUST FIT IN LESS-THAN 4 BLKS - JRST BLK5ER ;ERROR IF'E CAN'T - TLO W,400000 ;NOTE THE END - PUSH I,W ; - HRLZI LFL ;NOTE BSLDR IS IN "COPY" - IORM FSAVE ;SAVE IT - TLO F,LFL ; - CLOSE 16, ; - JRST COCRET ;THE ONLY WAY OUT -BLK5ER: TTCALL 3,[ASCIZ /?BOOTSTRAP LOADER WILL NOT FIT IN 3 BLOCKS -/] - JRST ST - - ;PROG-NAME IN RADIX50 -BLK6: PUSHJ P,GETWRD ; - PUSHJ P,UNWIND ;CONVRT RX50 TO 6BIT PROG-NAME - SOJA CNT,BLK4 ;I.E. IGNORE REST OF THIS BLK - -UNWIND: MOVE AC4,[POINT 6,PNAME] - SETZM PNAME - MOVEM W,AC5 ; - HRROI AC0,-6 ;6 CHARS - TLZ W,740000 ;CLEAR THE CODE BITS -UNW1: IDIVI AC5,50 ; - HRLM AC6,(P) ;SAVE REMAINDER - AOJGE AC0,UNW2 ;LOOP - PUSHJ P,UNW1 ;LOOP -UNW2: HLRZ AC6,(P) ;PICK OFF THE REMAINDER + DECODE IT - JUMPE AC6,UNW3 ;DONE - ADDI AC6,20-1 - CAILE AC6,31 - ADDI AC6,41-32 - CAILE AC6,72 - SUBI AC6,74-4 - CAIN AC6,3 - MOVEI AC6,16 - - IDPB AC6,AC4 -UNW3: POPJ P, - - ;STARTING ADR. -BLK7: PUSHJ P,GETWRD ; - HRLI W,(JRST) ;JUMP TO THE STARTING ADDRESS - MOVEM W,SASAV ;SAVE STARTING ADDRESS - SOJA CNT,BLK4 ;IGNORE REST OF BLK - BLTWRD: XWD END.,END.+1 ;ZRO FROM,TO ZROWRD: EXP END. ;START FSAVE: XWD FLP,0 ;MODIFIED WHEN BSLDR IS LOADED @@ -1015,23 +629,48 @@ 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 -TOTAL: BLOCK 26 ;BLOCK TABLE DIRWRD: IOWD 200,DIRECT Z REWIND: IOWD 1,PTRBUF Z -TTYIN: BLOCK 23+20 +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 -BSBUF: BLOCK 720 ;ENUF FOR 3BLOCKS PLUS HDR WRDS +;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