-TITLE COPY V006 31MAR\r
+TITLE COPY V004 31MAR\r
;COPYRIGHT 1968, DIGITAL EQUIPMENT CORP., MAYNARD, MASS.\r
REPEAT 0,<\r
\r
THE DIRECTORY.\r
/V PERFORM A WORD BY WORD COMPARISION BETWEEN\r
EVERY WORD OF THE INPUT AND OUTPUT DECTAPES.\r
- /L LOAD A BOOTSTRAP LOADER INTO A CORE BUFFER.\r
- COPY LOOKS FOR "BSLDR.REL" ON LOGICAL DEVICE\r
- "PTR". NOTE COPY MUST BE "SAVED" IF THE LOADER\r
- IS TO BE PRESERVED WITH THE COPY CORE IMAGE.\r
/T CAUSES A BOOTSTRAP LOADER TO BE WRITTEN ONTO\r
BLOCKS 0,1 AND 2 OF THE OUTPUT TAPE. COPY TYPES\r
"TYPE CORE BANK OR OFFSET FOR BSLDR."\r
\r
\fTHE FOLLOWING MESSAGES MAY BE OUTPUT TO THE USER'S TELETYPE.\r
\r
- ?WRITE LOCK ERROR\r
- ?INPUT (OR OUTPUT) DEVICE ERROR\r
- ?INPUT (OR OUTPUT) CHECKSUM OR PARITY ERROR\r
- ?INPUT (OR OUTPUT) BLOCK TOO LARGE\r
- ?INPUT (OR OUTPUT) PREMATURE END OF FILE\r
+ WRITE LOCK ERROR\r
+ INPUT (OR OUTPUT) DEVICE ERROR\r
+ INPUT (OR OUTPUT) CHECKSUM OR PARITY ERROR\r
+ INPUT (OR OUTPUT) BLOCK TOO LARGE\r
+ INPUT (OR OUTPUT) PREMATURE END OF FILE\r
000000 VERIFICATION ERRORS\r
- ?COMMAND ERROR\r
- ?SWITCH ERROR\r
- ?DEVICE INIT FAILURE\r
- ?DEVICE MUST BE A DECTAPE\r
- ?INPUT AND OUTPUT DECTAPES MAY NOT BE THE SAME DEVICE.\r
+ COMMAND ERROR\r
+ SWITCH ERROR\r
+ DEVICE INIT FAILURE\r
+ DEVICE MUST BE A DECTAPE\r
+ INPUT AND OUTPUT DECTAPES MAY NOT BE THE SAME DEVICE.\r
\r
THE FOLLOWING MAY BE OUTPUT WHILE PROESSING "/L".\r
- ?PTR INIT FAILURE\r
- ?LOOKUP FAILED, "BSLDR.REL"\r
+ PTR INIT FAILURE\r
+ LOOKUP FAILED, "BSLDR.REL"\r
?DATA ERROR ON DEVICE PTR\r
?ILLEGAL BLOCKTYPE\r
?CANNOT PROCESS EXTERNAL SYMBOLS\r
P=17 ;PUSH DOWN LIST\r
EXTERN JOBFF,JOBREL,JOBSA,JOBREN\r
LOC JOBVER\r
- XWD 0,6 ;;VERSION #\r
+ XWD 0,4 ;;VERSION #\r
RELOC\r
\f\r
ST: CALLI 0\r
- MOVE P,[IOWD 20,TTYIN+23] ;PUSH DOWN LIST\r
+ MOVE P,[IOWD 10,TTYIN+23] ;PUSH DOWN LIST\r
+ MOVE AC0,ZROWRD\r
+ TLNN F,30\r
+ MOVEM AC0,JOBFF\r
INIT 17,1 ;ASCII LINE\r
SIXBIT /TTY/\r
XWD TOUT,TIN\r
\r
MOVE T,JOBREL\r
SUB T,JOBFF ;T=NO. OF FREE LOC\r
- MOVE C,JOBFF ;\r
- MOVEI AC0,3777(C) ;\r
- CAIGE T,3777 ;TRY FOR AT LEAST 2K OF BUFFER AREA\r
- CALLI AC0,11 ;CORE UUO\r
- JFCL ;O WELL\r
- SUBI C,1 ;IOWD FORMAT "ADR-1"\r
+ CAIGE T,400 ;TRY FOR AT LEAST 2K OF BUFFER AREA\r
+ TRO T,400\r
+ MOVE C,JOBFF\r
+ SUBI C,1\r
ANDI T,-200 ;T=NO. OF FREE WORDS\r
MOVNM T,U ;IOWD FORMAT "-N"\r
LSH T,-7 ;T=NO. OF BLOCKS PER COPY INPUT\r
\f MOVEI C,"*"\r
PUSHJ P,TYPC ;OUTPUT CHAR\r
INPUT 17,\r
+ SETZM JOBREN\r
MOVE F,FSAVE ;INITIAL FLAGS\r
SKIPA BP,[POINT 6,ODEV] ;ASSUME AN OUTPUT DEV\r
COIDEV: MOVE BP,[POINT 6,IDEV] ;INPUT IF LEFT-ARROW + COLON WERE SEEN \r
CAIE C,12\r
CAIN C,15\r
JRST COCRET ;CR OR LF\r
- CAIE C,175 ;ALTMODE?\r
- CAIN C,33 ;ALTMODE?\r
- JRST COCRET ;YES\r
- CAIN C,176 ;ALTMODE?\r
- JRST COCRET ;YES\r
- CAIE C,"=" ;==_\r
CAIN C,"_"\r
JRST COLARO ;LEFT ARROW\r
CAIGE C,"0" ;\r
JUMPGE BP,COTGET ;NORMAL EXIT\r
JRST ERRCMD ;NULL NAME, TOO MANY COLONS\r
\r
-COCRET: TLZE F,HSW ;HELP?\r
- JRST HELP ;\r
- TLZE F,LSW ;LOADING A LOADER?\r
- JRST BSLDR ;YES\r
- TLNE F,FLA ;LEFT ARO ?\r
- JRST COSTRT ;_,SO OK\r
+COCRET: TLNE F,FLA ;LOADING A LOADER?\r
+ JRST COSTRT ;YES\r
SKIPE ODEV ;\r
JRST ERRCMD ;NO_,SOME ODEV\r
- TLNN F,ANYSW ;\r
- JRST ST ;NO_,NO ODEV,NO SW =*\r
+ TLNE F,ANYSW ;\r
JRST ERRCMD ;NO_,NO ODEV, NO SW\r
+ JRST ST ;NO_,NO ODEV,NO SW =*\r
\r
COSTRT: TLNN F,ANYSW ;ANY SW=SKIP\r
TLO F,FLC+FLV ;DEFAULT=COPY+VERIFY\r
\r
\f ;HERE TO ACCEPT THE BOOTSTRAP LOADER OFFSET (/T)\r
\r
-CTENDM: TLNN F,LFL ;IS A BOOTSTRAP LOADER LOADED?\r
+CTENDM: TLNN F,LFL+LSW ;IS A BOOTSTRAP LOADER LOADED?\r
JRST ERRTNH ;NO, COMPLAIN\r
-CTEN1: SETZB AC1,OFFSET ;\r
- TTCALL 3,[ASCIZ /\r
-TYPE CORE BANK OR OFFSET FOR /]\r
- MOVEI BP,PNAME\r
+ TLNN F,LSW\r
+ JRST CTEN1\r
+ MOVEI BP,MES32K\r
PUSHJ P,TYPEIT ;BSLDR'S NAME\r
+ PUSHJ P,TYPBUF\r
INPUT 17,\r
-CTEN0: PUSH P,TIN+1 ;SAVE PTR FOR RESCAN\r
- MOVEI AC0,6 ;MAX CHARS TO ACCEPT\r
- PUSHJ P,TYPGET ;\r
- CAIN C,"K" ;\r
- JRST CTEN10 ;K, MUST BE A CORE-BANK\r
- SOJG AC0,.-3\r
- POP P,TIN+1 ;\r
- MOVEI AC0,6 ;ACCEPT 6 NUMBERS\r
-CTEN2: PUSHJ P,TYPGET ;GET A CHAR\r
- CAIL C,"0" ;\r
- CAILE C,"7" ;\r
- JRST CTEN7 ;NOT A OCTAL NUMBER, TERM?\r
- LSH AC1,3 ;MAKE ROOM\r
- TRZ C,777770 ;CLEAR HI-ORDER BITS\r
- ADD AC1,C ; FOR THIS CHAR\r
- SOJG AC0,CTEN2 ;LOOK FOR 6 CHARS\r
-CTEN3: CAIL AC1,1000 ;LOWER LIMIT\r
- CAILE AC1,777600 ;UPPER LIMIT\r
- JRST CTEN8 ;COMPLAIN\r
-CTEN4: HRLI AC1,W ;SO [HRRI W,@OFFSET] WILL WORK\r
- MOVEM AC1,OFFSET ;SAVIT\r
- JRST CINIT ;\r
-\r
-CTEN7: CAIL C,12 ;"LF"\r
- CAILE C,15 ;"CR"\r
- CAIN C,33 ;ALTMODE\r
- JRST CTEN3 ;A TERMINATOR\r
-CTEN8: TTCALL 3,[ASCIZ /\r
-?OFFSET = 1000 TO 777600 (OCTAL)/]\r
- JRST CTEN1 ;\r
-\r
-\f ;LOOK FOR A CORE BANK, 16K-256K\r
-CTEN10: POP P,TIN+1 ;RESCAN TTYBUF\r
- MOVEI AC0,3 ;ONLY 3 CHARS MAX IS "256"\r
-CTEN11: PUSHJ P,TYPGET ;\r
- CAIL C,"0" ;\r
- CAILE C,"9" ;\r
- JRST CTEN17 ;\r
- IMULI AC1,^D10 ;MAKE ROOM FOR NEXT CHAR... DEC TO OCT\r
- ANDI C,17 ;EXTRACT DECIMAL NUMBER\r
- ADD AC1,C ;\r
- SOJG AC0,CTEN11 ;\r
-\r
-CTEN12: TRNE AC1,17 ;CHECK FOR MODULO 16\r
- JRST CTEN18 ;ILL\r
- JUMPE AC1,CTEN18 ;ILL\r
- LSH AC1,-4 ;PUSH OFF ZEROES\r
- CAILE AC1,20 ;MAX IS 256\r
- JRST CTEN18 ;ILL\r
- IMULI AC1,40000 ;TURN IT INTO AN OFFSET\r
- SUBI AC1,1 ;\r
- TRZ AC1,777 ;1K BELOW TOP OF THIS BANK\r
- JRST CTEN4 ;\r
-CTEN17: CAIN C,"K" ;SKIP IF TERM\r
- JRST CTEN12 ;\r
-\r
-CTEN18: TTCALL 3,[ASCIZ /\r
-?EXPECTED FORMAT IS "NNNK" = 16K TO 256K.\r
-/]\r
+CTEN0: PUSHJ P,TYPGET ;\r
+ CAIN C,"Y" ;\r
+ JRST CTEN2 ;K, MUST BE A CORE-BANK\r
+ CAIE C,"N"\r
+ JRST CTENDM\r
+CTEN1: MOVEI BP,MES16K\r
+ PUSHJ P,TYPEIT\r
+ PUSHJ P,TYPBUF\r
+ INPUT 17,\r
+ PUSHJ P,TYPGET\r
+ CAIN C,"N"\r
+ JRST CINIT\r
+ CAIE C,"Y"\r
JRST CTEN1\r
+ TLOA F,40\r
+CTEN2: TLO F,HSW\r
\fCINIT: MOVEI T,134 ;BUFRD MODE\r
PUSHJ P,INIT ;FIRST INIT\r
TLNE F,FLC!FLZ ;BEGIN HERE ___******\r
INPUT 2,REWIND\r
LSTEST: TLZE F,FLL ;LIST A DIR?\r
JRST DLST ;YES\r
- MOVEI C,^D15 ;SECONDS\r
+ MOVEI C,^D30 ;SECONDS\r
GDNITE: TLNE F,FPT ;6-SKIP\r
CALLI C,31 ;TO SLEEP\r
POPJ P, ;\r
XWD FLV,"V" ;VERIFY\r
XWD FLT,"T" ;TENDMP\r
XWD FLG,"G" ;IGNORE\r
- XWD HSW,"H" ;HELP\r
- XWD LSW,"L" ;LOAD BSLDR\r
- XWD NSW,"N" ;NO DIR\r
XWD FL6,"6" ;PDP6 DIR\r
LEN=.-SWTAB\r
\fDSAV: TLON F,FLL ;ENTER THIS CODE ONCE ONLY\r
TLNE F,FL6 ;SKIP IF ITS NOT 6FMT\r
- POPJ P, ;2ND PASS OR 6FMT-EXIT.\r
- MOVEI 1,-144(LOC) ;FIRST BLK OF NEXT OUTPUT\r
- SUB 1,INC ;FIND A\r
- IMULI 1,-200 ; DIRECTORY,\r
- ADD 1,LISTC ;GRAB\r
- HRLI 1,1(1) ; A\r
- HRRI 1,DIRECT ; DIRECTORY.\r
- BLT 1,DIRECT+177 ;SAVE IT.\r
- POPJ P, ;RETURN\r
-\r
-DATE: SETZ AC2,\r
- LDB AC5,DATEP\r
- IDIVI AC5,^D31 ;PICK OFF THE DAY\r
- ADDI AC6,1 ;MAKE IT RIGHT\r
- PUSHJ P,DATE1 ;RETURNS TWO SIXBIT NUMBERS\r
- DPB AC6,DAY ;XXDDXX\r
- IDIVI AC5,^D12 ;PICK OFF THE MONTH\r
- MOVE AC6,MONPH(AC6) ;CONVERT TO ALPHA\r
- DPB AC6,MONTH ;MMDDXX\r
- MOVEI AC6,^D64 ;GET THE BASE YEAR\r
- ADD AC6,AC5 ;PLUS YEARS SINCE THEN\r
- PUSHJ P,DATE1 ;SIXBIT\r
- DPB AC6,YEAR ;YYMMDD-DATE FINISHED\r
- POPJ P, ;\r
-\r
-DATE1: IDIVI AC6,^D10 ;DIVIDE OUT A DECIMAL NUMBER\r
- LSH AC6,6 ;MAKE ROOM FOR THE REMIANDER\r
- ADDI AC6,152020(LOC) ;CONVERT TO SIXBIT\r
- POPJ P, ;RETURN\r
-\r
-DAY: POINT 12,AC2,11\r
-MONTH: POINT 24,AC2,35\r
-YEAR: POINT 18,AC3,17\r
-DATEP: POINT 12,DNAM+^D22(AC1),35\r
-FREE: SIXBIT /FREE: +/\r
-BLKS: SIXBIT /-BLKS +/\r
-FILES: SIXBIT /-FILES#/\r
-\fMONPH: SIXBIT / -JAN/\r
- SIXBIT / -FEB/\r
- SIXBIT / -MAR/\r
- SIXBIT / -APR/\r
- SIXBIT / -MAY/\r
- SIXBIT / -JUN/\r
- SIXBIT / -JUL/\r
- SIXBIT / -AUG/\r
- SIXBIT / -SEP/\r
- SIXBIT / -OCT/\r
- SIXBIT / -NOV/\r
- SIXBIT / -DEC/\r
-\r
- ;STANDARD OCTAL TO ASCII ROUTINE\r
-DECMAL: IDIVI C,^D10 ;\r
- HRLM C+1,(P) ;\r
- SKIPE C ;\r
- PUSHJ P,DECMAL ;\r
- HLRZ C,(P) ;\r
- ADDI C,60 ;\r
- JRST TYPC ;\r
-\r
-DLST: TLNE F,NSW ;DIRECTORY WANTED?\r
- JRST DXIT ;NO\r
- TLNE F,FL6 ;6FMT?\r
+ JRST COPSKP ;2ND PASS OR 6FMT-EXIT.\r
+ MOVEM LOC,AC1\r
+ SUBI AC1,144 ;FIRST BLK OF NEXT OUTPUT\r
+ SUB AC1,INC ;FIND A\r
+ IMULI AC1,-200 ; DIRECTORY,\r
+ ADD AC1,LISTC ;GRAB\r
+ HRLI AC1,1(AC1) ; A\r
+ HRRI AC1,DIRECT ; DIRECTORY.\r
+ BLT AC1,DIRECT+177 ;SAVE IT.\r
+ JRST COPSKP\r
+\r
+DLST: TLNE F,FL6 ;6FMT?\r
JRST D6LST ;YES.\r
-DLST1: SETZM TOTAL ;TOTAL FREE BLOCKS\r
- MOVE 3,[XWD TOTAL,TOTAL+1] ;CLEAR THE ^D23\r
- BLT 3,TOTAL+^D22 ; WORD TABLE\r
- MOVE 2,[POINT 5,DIRECT,4] ;POINT TO FIRST BLK SLOT\r
- MOVEI 1,<7*^D83>-3 ;1102 SLOTS\r
-DLST2: ILDB 3,2 ;PICK UP A FILE NUMBER\r
- CAIG 3,^D22 ;SKIP IF BLK IS SPECIAL\r
- AOS TOTAL(3) ;COUNT BLKS/FILE\r
- SOJG 1,DLST2 ;LOOP\r
- MOVEI BP,FREE ;FREE:\r
- PUSHJ P,TYPEIT ;\r
- MOVE C,TOTAL ;NUMBER OF FREE BLOCKS\r
- PUSHJ P,DECMAL ;\r
- MOVEI BP,BLKS ;-BLKS\r
- PUSHJ P,TYPEIT ;\r
- MOVEI C,^D22 ;26 FILES MAX\r
- HRLZI AC1,-^D22 ;\r
-DLST7: SKIPE DNAM(AC1) ;\r
- SOS C ;DECREMENT MAX NO. OF BLKS\r
- AOBJN AC1,DLST7 ;\r
- PUSHJ P,DECMAL ;\r
- MOVEI BP,FILES ;\r
- PUSHJ P,TYPEIT ;\r
- HRLZI 1,-^D22 ;LOOP 26 TIMES\r
-\r
-\fDLST3: HRLZI 3,161300 ;TERMINATOR\r
- SKIPN 2,DNAM(1) ;FILE NAME\r
+ HRLI AC3,150000 ;TERMINATOR\r
+ HRLZI 1,777752\r
+DLST3: SKIPN AC2,DNAM(1) ;FILE NAME\r
JRST DLST5 ;\r
MOVEI BP,2 ;\r
PUSHJ P,TYPEIT ;\r
- HLLZ 2,DNAM+^D22(1) ;EXTENSION\r
- HRRI 2,13 ;\r
+ HLLZ AC2,DNAM+^D22(1) ;EXTENSION\r
+ SKIPN 0,2\r
+ JRST DLST4\r
+ MOVEI 6,11\r
+ PUSHJ P,TYPC\r
+ HRRI AC2,150000 ;\r
MOVEI BP,2 ;\r
PUSHJ P,TYPEIT ;\r
- MOVE C,TOTAL+1(1) ;NUMBER OF BLKS\r
- PUSHJ P,DECMAL ;\r
- MOVEI C," " ;SPACE\r
- PUSHJ P,TYPC ;\r
- PUSHJ P,DATE ;CREATION DATE\r
- MOVEI BP,2 ;\r
- HRRI 3,30000 ;"#"\r
- PUSHJ P,TYPEIT ;\r
-DLST5: AOBJN 1,DLST3 ;LOOP\r
-DXIT: MOVEI C,^D15 ;15 SECONDS\r
+DLST4: PUSHJ P,TYPCL ;\r
+DLST5: AOBJN AC1,DLST3 ;LOOP\r
+DXIT: MOVEI C,^D22 ;22 SECONDS\r
JRST GDNITE ;TO SLEEP.\r
\r
-D6LST: MOVEI 0,36 ;MAX NO. OF ENTRIES\r
- HRRZ 1,DIRECT ;LOC OF FIRST DIR BLK\r
-D6BEG: HRLI 3,130000 ;"-" TERMINATOR\r
+D6LST: MOVEI AC0,36 ;MAX NO. OF ENTRIES\r
+ HRRZ AC1,DIRECT ;LOC OF FIRST DIR BLK\r
+D6BEG: HRLI AC3,150000 ;"-" TERMINATOR\r
MOVEI BP,2 ;\r
- SKIPN 2,DIRECT(1) ;IS THERE A FILENAME?\r
+ SKIPN AC2,DIRECT(1) ;IS THERE A FILENAME?\r
JRST DXIT ;NORMAL EXIT\r
PUSHJ P,TYPEIT ;FILENAME\r
- HLLZ 2,DIRECT+1(1) ;EXTENSION\r
- SKIPN 2 ;IF NULL,\r
+ HLLZ AC2,DIRECT+1(1) ;EXTENSION\r
+ SKIPN AC2 ;IF NULL,\r
JRST D6FIN ;JUMP\r
MOVEI C," " ;OTHERWISE\r
PUSHJ P,TYPC ;TAB\r
- HRRI 2,130000 ;"-"\r
+ HRRI AC2,150000 ;"-"\r
MOVEI BP,2 ;TERM.\r
PUSHJ P,TYPEIT ;\r
D6FIN: PUSHJ P,TYPCL ;CR-LF\r
- ADDI 1,4 ;\r
- SOJG 0,D6BEG ;IN CASE\r
+ ADDI AC1,4 ;\r
+ SOJG AC0,D6BEG ;IN CASE\r
JRST DXIT ;DIR WAS FULL\r
\f\r
TYPEIT: HRLI BP,440600 ;BP=MESSAGE ADR\r
TYPLOP: ILDB C,BP ;\r
- CAIN C,13 ;PLUS?\r
+ CAIN C,15 ;PLUS?\r
POPJ P, ;GET THE WHOLE MESSASE\r
CAIN C,3 ;#?\r
JRST TYPCL ;APPEND CR LF AND TYPE\r
CAIE C," " ;SPACE?\r
CAIN C," " ;TAB?\r
JRST TYPGET ;FORGET IT\r
- CAIGE C,141 ;LC "A"\r
- POPJ P,\r
- CAIG C,172 ;LC "Z"\r
- SUBI C,40 ;LC TO UC\r
POPJ P,\r
\r
TYPCCL: IDPB C,TOUT+1 ;TYPE CHAR,CRLF\r
TYPBUF: OUTPUT 17, ;DO IT\r
POPJ P,\r
\r
-\fHELP: TTCALL 3,.+2\r
- JRST COCRET\r
-ASCIZ %\r
-/C COPY \r
-/V VERIFY\r
-/Z ZERO ALL BLOCKS\r
-/L LOAD A BOOTSTRAP LOADER FROM PTR:BSLDR.REL\r
-/T "TYPE CORE BANK OR OFFSET FOR BSLDR"\r
- CORE-BANK = NNNK (16K TO 256K)\r
- OFFSET = <OCTAL 1000 TO 777600>\r
- WRITE A BSLDR ONTO BLOCKS 0,1 AND 2\r
-/N DONT TYPE A DIRECTORY\r
-/6 PDP6 DIR\r
-/G IGNORE ERRORS\r
-NO SW'S IMPLY /C/V\r
-%\r
\fERRT1I: TLOA F,FLI ;INPUT ERROR\r
ERRT1O: TLZ F,FLI ;OUTPUT ERROR\r
STATUS 1,IOS ;STATUS TO IOS\r
PUSHJ P,ERR040 ;BLOCK TOO LARGE\r
TRNE IOS,020000 ;PREMATURE EOF,PDP9-DTA?\r
PUSHJ P,ERR020 ;\r
- TRNN IOS,600000 ;THESE BITS IMPLY RESTART\r
+ TRNN IOS,640000 ;THESE BITS IMPLY RESTART\r
TLNN F,FLG ;/G+PARITY ERR = CONTINUE\r
JRST ST ;RESTART\r
TRZ IOS,740000 ;ZERO IN\r
POPJ P, ;POP OUT\r
\fERR400: MOVEI BP,MES400\r
JRST TYPEIT\r
-MES400: SIXBIT /?WRITE LOCK ERROR#/\r
+MES400: SIXBIT /WRITE LOCK ERROR#/\r
ERR200: PUSHJ P,ERRCOM\r
MOVEI BP,MES200\r
JRST TYPEIT\r
TLNN F,FLI\r
MOVEI BP,SXBOUT\r
JRST TYPEIT\r
-SXBINP: SIXBIT /?INPUT+/\r
-SXBOUT: SIXBIT /?OUTPUT+/\r
+SXBINP: SIXBIT /INPUT-/\r
+SXBOUT: SIXBIT /OUTPUT-/\r
\fERRVER: MOVE T,[POINT 6,MESVER]\r
MOVE BP,[POINT 3,U,17]\r
ERRVE1: ILDB C,BP ;LOAD AN OCTAL NUMBER\r
ERRCMD: MOVEI BP,MESCMD\r
PUSHJ P,TYPEIT\r
JRST ST\r
-MESCMD: SIXBIT /?COMMAND ERROR#/\r
+MESCMD: SIXBIT /COMMAND ERROR#/\r
ERRSW: MOVEI BP,MESSW\r
PUSHJ P,TYPEIT\r
JRST ST\r
-MESSW: SIXBIT /?SWITCH ERROR#/\r
+MESSW: SIXBIT /SWITCH ERROR#/\r
ERRIN1: SKIPA T,IDEV\r
ERRIN2: MOVE T,ODEV\r
- TTCALL 3,[ASCIZ /?/]\r
MOVEM T,MESINI\r
MOVEI BP,MESINI\r
PUSHJ P,TYPEIT\r
MESINI: SIXBIT / INIT FAILURE#/\r
ERRDT1: SKIPA T,IDEV\r
ERRDT2: MOVE T,ODEV\r
- TTCALL 3,[ASCIZ /?/]\r
MOVEM T,MESDTA\r
MOVEI BP,MESDTA\r
PUSHJ P,TYPEIT\r
\fERRTNH: MOVEI BP,MESTNH\r
PUSHJ P,TYPEIT\r
JRST ST\r
-MESTNH: SIXBIT %?BOOTSTRAP LOADER IS NOT IN COPY. TRY "/L".#%\r
-\rPTERR1: TTCALL 3,[ASCIZ /?PTR INIT FAILURE\r
-/]\r
- JRST ST\r
-\r
-PTERR2: TTCALL 3,[ASCIZ /?LOOKUP FAILED, "BSLDR.REL"\r
-/]\r
- JRST ST\r
+MESTNH: SIXBIT /TENDUMP IS NOT IN CORE.#/\r
+MES32K: SIXBIT /32K TENDUMP?... -/\r
+MES16K: SIXBIT /16K TENDUMP?... -/\r
+TENINT: TLNN F,140\r
+ POPJ P,0\r
\f ;WRITE A BOOOTSTRAP LOADER IN BLOCKS 0,1 AND 2\r
-TENINT: PUSH P,JOBFF\r
+ PUSH P,JOBFF\r
SETSTS 2,134 ;SO I CAN WRITE IN BLK 0\r
USETO 2,0\r
OUTBUF 2,1\r
OUTPUT 2, ;DUMMY!\r
\r
- MOVE AC0,[POINT 36,BSBUF]\r
- MOVEM AC0,BSPTR ;WHERE THE LOADER IS KEPT\r
- HRRZ AC0,JOBFF ;\r
- HRLI AC0,(POINT 36,)\r
- MOVEM AC0,FFPTR ;WHERE ITS WRITTEN FROM\r
-\r
- ILDB W,BSPTR ;IOWD\r
- MOVE CNT,OFFSET ;\r
- HRRI W,-1(CNT) ;FINISH THE IOWD\r
- IDPB W,FFPTR ;\r
-\r
-TEN1: PUSHJ P,NBLK ;GET THE NEXT BLOCK, SKIPE XIT IS NORMAL\r
- JRST RELDA5 ;TERMINATE THE BSLDR\r
- TRNN CNT,-1 ;EMPTY?\r
- JRST TEN1 ;YES\r
- ILDB OS,BSPTR ;OFFSET FOR THIS BLK\r
- LSH RB,2 ;OS'S RELBITS\r
- AOBJN CNT,.+1 ;ACCOUNT FOR IT\r
-RELDAT: TRNN CNT,-1 ;ANY MORE DATA?\r
- JRST TEN1 ;NO\r
- ILDB W,BSPTR ;PROGRAM WORD\r
- JUMPGE RB,RELDA1 ;CHECK LEFT HALF\r
- HRLZ I,OFFSET ;\r
- ADD W,I ;RELOCATE IT\r
-\r
-RELDA1: TLNE RB,200000 ;CHECK RIGHT HALF\r
- HRRI W,@OFFSET ;RELOCATE IT\r
- IDPB W,FFPTR ;\r
- LSH RB,2 ;NEXT RELOCATION BITS\r
- AOBJN CNT,RELDAT ;NEXT WORD\r
- TRNE CNT,-1 ;\r
- PUSHJ P,NSEC ;NEXT SECTION OF BLOCK\r
- JRST RELDAT ;\r
-\r
-\fNBLK: ILDB CNT,BSPTR ;GET THE BLOCK WRD CNT\r
- SKIPL CNT ;\r
- AOS (P) ;SKIP EXIT IS NORMAL\r
- MOVN CNT,CNT ;\r
-NSEC: ILDB RB,BSPTR ;RELOCATION BITS\r
- HRLI CNT,-22 ;WRDS/SECTION\r
- POPJ P,\r
-\r
-RELDA5: MOVE W,SASAV ;THIS JRST IS EXECUTED\r
- HRR W,OFFSET(W) ;RELOCATE THE SA ADR\r
- IDPB W,FFPTR ;THE LAST WORD\r
- HRLZ BP,JOBFF ;BEG OF BSLDR\r
+ HRLZI BP,L16K.\r
+ TLNN F,HSW\r
+ HRLZI BP,L32K.\r
+ TLNE F,NSW\r
+ HRLZI BP,L16K.\r
HRR BP,OUT2+1 ;BLT PTR\r
MOVEM BP,C ;SAVE IT\r
BLT BP,177(C) ;ZAP 1\r
BLT BP,177(C) ;ZAP 2\r
USETO 2,1\r
OUTPUT 2, ;BLK 1\r
- ADD C,[XWD 200,0]\r
- MOVEM C,BP\r
- BLT BP,177(C)\r
- USETO 2,2\r
- OUTPUT 2,\r
PUSHJ P,ERRT2O ;ERRORS?\r
POP P,JOBFF\r
POPJ P,\r
\fCOPZRO: PUSH P,JOBFF ;SAVE JOBFF\r
- TLNE F,FLC ;SKIP IO TO UNASSIGNED CHAN.\r
SETSTS 1,134 ;\r
SETSTS 2,134 ;\r
OUTBUF 2,1 ;WITH ONE BUFFER MODE-134\r
COPLPZ: ILDB C,IN1+1 ;OTHER WORDS\r
IDPB C,OUT2+1 ;TO THE BUFFER\r
SOJG T,COPLPZ ;TO LOOP\r
- SETSTS 1,136 ;INPUT DEVICE\r
- USETI 1,1 ;SIX FORMATTED DIRECTORY\r
- INPUT 1,DIRWRD ;GET IT\r
COPBKZ: OUTPUT 2, ;DUMP THE BUFFER\r
POP P,JOBFF ;FOR VERIFY?\r
PUSHJ P,ERRT2O ;OK?\r
SETSTS 2,136 ;DUMP MODE\r
+ SETSTS 1,136 ;DUMP MODE\r
+ USETI 1,1 ;BLOCK ZERO\r
+ INPUT 1,DIRWRD ;GET IT\r
MOVE U,JOBREL ;UPPER LIMIT\r
MOVE T,BLTWRD ;FROM,TO\r
SETZM @ZROWRD ;START\r
BLT T, (U) ;ZAP\r
MOVEI LOC,1 ;START AT BLOCK ONE\r
-COPSET: TLNE F,FLC ;SKIP\r
+COPSET: CAILE LOC,144\r
+ JRST DSAV\r
+COPSKP: TLNE F,FLC ;SKIP\r
USETI 1,(LOC) ;IO 2 UNASGND CH\r
USETO 2,(LOC) ;SET THE BLOCK NO.\r
ADD LOC,INC ;ADD THE INCREMENT\r
JRST COPFIN ;NO\r
PUSHJ P,COPYIT ;ONE BUFFER\r
JRST COPSET ;AND LOOP\r
-COPFIN: MOVEI T,-1102(LOC) ;N BLOCKS WON'T FIT\r
- IMULI T,200 ;N WORDS WON'T FIT\r
- MOVSS T ;GET ORGANIZED\r
- ADDM T,LISTC ;SUB N WORDS FROM LIST\r
+COPFIN: SUBI LOC,1102 ;N BLOCKS WON'T FIT\r
+ IMULI LOC,200 ;N WORDS WON'T FIT\r
+ MOVSS LOC ;GET ORGANIZED\r
+ ADDM LOC,LISTC ;SUB N WORDS FROM LIST\r
SKIPL LISTC ;IF LH OF IOWD = 0,\r
POPJ P, ;EXIT\r
COPYIT: TLNN F,FLC ;COPY?\r
JRST COPOUT ;ZERO!\r
INPUT 1,LISTC ;COPY!\r
PUSHJ P,ERRT1I ;OK?\r
- CAILE LOC,144 ;SKIP IF NO CHANCE\r
- PUSHJ P,DSAV ;TRY FOR A DIRECTORY\r
COPOUT: OUTPUT 2,LISTC ;COPY AND ZERO\r
JRST ERRT2O ;OK?\r
\fVERZRO: PUSH P,JOBFF\r
CALLI BP,4\r
TLNN BP,100\r
JRST ERRDT2 ;ERROR, ITS NOT A DTA\r
- SKIPN BP,IDEV ;IF NULL\r
+ SKIPN IDEV ;IF NULL\r
POPJ P, ;NO INPUT DEV REQUIRED\r
- CAMN BP,ODEV ;SAME DEVICES?\r
- JRST INITER ;YEPER\r
INIT 1,(T)\r
IDEV: Z\r
XWD 0,IN1\r
JRST ERRDT1 ;ERROR\r
POPJ P,\r
\r
-INITER: TTCALL 3,[ASCIZ /INPUT AND OUTPUT DEC-TAPES MAY NOT BE THE SAME DEVICE.\r
-/]\r
- JRST ST\r
-\f; LOAD A BOOTSTRAP LOADER, \r
-\r
-I=1 ;PTR TO BSBUF\r
-W=2 ;WORD OF TENDMP.REL\r
-CNT=3 ;# OF WORDS IN CURRENT BLOCK\r
-TYPE=4 ;TYPE OF BLOCK\r
-OS=4 ;OFFSET\r
-RB=5 ;RELOCATION BITS\r
-\r
-FFPTR: BLOCK 1 ;BYTEPTR TO RELOCATED BSLDR\r
-BSPTR: BLOCK 1 ;BYTPTR TO UNRLCTD BSLDR\r
-OFFSET: BLOCK 1 ;THE OFFSET\r
-RELBTS: BLOCK 1 ;RELOCATION BITS\r
-SASAV: BLOCK 1 ;STARTING ADDRESS\r
-PNAME: BLOCK 1 ;PROGRAM NAME\r
- SIXBIT /#/ ;# = "CRLF"\r
-\r
-\r
-BSLDR: MOVE AC0,[SIXBIT /BSLDR/] ;LOOKUP BLOCK\r
- HRLZI AC1,(SIXBIT /REL/)\r
- SETZB AC2,AC3 ;\r
- INIT 16,13 ;IMAGE-BINARY\r
- SIXBIT /PTR/ ;\r
- EXP PTRBUF ;\r
- JRST PTERR1 ;INIT FAILURE ERROR\r
- INBUF 16,1 ;ONE BUFFER\r
- LOOKUP 16, ;BSLDR.REL\r
- JRST PTERR2 ;LOOKUP FAILURE\r
- MOVEI I,BSBUF ;PP PTR FOR BOOTSTRAP-LOADER-BUF\r
-\r
-NEWBLK: PUSHJ P,GETWRD ;GET ONE WORD FROM PTR FILE\r
- HLRZM W,TYPE ;SAVE BLOCK-TYPE\r
- HRRZM W,CNT ;SAVE WRD-COUNT FOR THIS BLK\r
- CAIN TYPE,1 ;\r
- PUSH I,W ;SAVE BLOCK HDR-WRD\r
- PUSHJ P,GETWRD ;\r
- MOVEM W,RELBTS ;SAVE RELOCATION-BITS\r
- CAIN TYPE,1 ;BLKTYP=1?\r
- PUSH I,W ;YEP, SAVE THE BITS\r
- CAIG TYPE,7 ;ILL-BLK-TYP?\r
- JRST @TYPTAB(TYPE) ;NO, OFF TO BLOCK HANDLER\r
-\r
-TTCALL 3,[ASCIZ /?ILLEGAL BLOCK TPYE\r
-/]\r
- JRST ST ;\r
-\r
-\fTYPTAB: Z BLK0\r
- Z BLK1\r
- Z BLK2\r
- Z BLK3\r
- Z BLK4\r
- Z BLK5\r
- Z BLK6\r
- Z BLK7\r
-\r
-GETWRD: SOSG PTRBUF+2 ;EMPTY BUF?\r
- PUSHJ P,GETBUF ;GET A BUFFER\r
- ILDB W,PTRBUF+1 ;\r
- POPJ P,\r
-\r
-GETBUF: IN 16, ;GET BUFFER\r
- POPJ P,\r
- STATZ 16,20000 ;EOF?\r
- TTCALL 3,[ASCIZ /?NO END BLOCK ENCOUNTERED\r
-/]\r
- STATZ 16,74000 ;ERRORS?\r
- TTCALL 3,[ASCIZ /?DATA ERROR ON DEVICE PTR\r
-/]\r
- JRST ST\r
- ;THIS IS NOT A BLOCK, IGNORE IT\r
-BLK0: JUMPE CNT,NEWBLK ;\r
- PUSHJ P,GETWRD ;PASS A WRD\r
- SOJA CNT,BLK0 ;\r
-\r
- ;THIS IS THE PROGRAM\r
-BLK1: MOVN CNT,CNT ;TOTAL NUMBER OF WRDS THIS BLK\r
-BLK1A: HRLI CNT,-22 ;MAX NUMBER PER SECTION\r
-BLK1B: TRNN CNT,-1 ;ANY MORE WRDS?\r
- JRST NEWBLK ;NO\r
- PUSHJ P,GETWRD ;\r
- PUSH I,W ;SAVE IN BSBUF\r
- AOBJN CNT,BLK1B ;ANY MORE WRDS THIS SECTION?\r
- TRNN CNT,-1 ;NO, ...THIS BLK?\r
- JRST NEWBLK ;NO\r
- PUSHJ P,GETWRD ;GET THE REL-BITS FOR NXT SECT\r
- PUSH I,W ;SAVEM\r
- JRST BLK1A ;\r
-\r
-\f ;THIS IS THE SYMBOL TABLE\r
-BLK2: MOVN CNT,CNT ;\r
-BLK2A: HRLI CNT,-22 ;\r
-BLK2B: TRNN CNT,-1 ;\r
- JRST NEWBLK ;\r
- PUSHJ P,GETWRD ;\r
- TLNE W,200000 ;\r
- JUMPL W,BLK2ER ;ERROR - ITSA EXTERNAL SYMBOL\r
- AOBJN CNT,.+1 ;IGNORE THE VALUE\r
- PUSHJ P,GETWRD ;\r
- AOBJN CNT,BLK2B ;\r
- TRNN CNT,-1 ;\r
- JRST NEWBLK ;\r
- JRST BLK2A\r
-BLK2ER: TTCALL 3,[ASCIZ /?CANNOT PROCESS EXTERNAL SYMBOLS\r
-/]\r
- JRST ST\r
-\r
- ;HIGHSEG FLAG, GIVE ERROR EXIT\r
-BLK3: TTCALL 3,[ASCIZ /?CANNOT PROCESS HIGH-SEG'S\r
-/]\r
- JRST ST\r
-\r
- ;ENTRY BLOCK, IGNORE THIS BLOCK\r
-BLK4: MOVN CNT,CNT ;\r
-BLK4A: HRLI CNT,-22 ;\r
- TRNN CNT,-1 ;\r
- JRST NEWBLK ;\r
- PUSHJ P,GETWRD ;\r
- AOBJN CNT,.-1 ;PASS/IGNORE \r
- TRNN CNT,-1 ;\r
- JRST NEWBLK ;\r
- PUSHJ P,GETWRD ;\r
- JRST BLK4A ;\r
-\r
- ;THIS IS LAST BLK, MUST BE SEEN, ALSO IS PROG-BREAK\r
-BLK5: PUSHJ P,GETWRD ;\r
- MOVNI AC0,1(W) ;\r
- HRLM AC0,BSBUF ;START THE IOWD\r
- CAILE W,600 ;MUST FIT IN LESS-THAN 4 BLKS\r
- JRST BLK5ER ;ERROR IF'E CAN'T\r
- TLO W,400000 ;NOTE THE END\r
- PUSH I,W ;\r
- HRLZI LFL ;NOTE BSLDR IS IN "COPY"\r
- IORM FSAVE ;SAVE IT\r
- TLO F,LFL ;\r
- CLOSE 16, ;\r
- JRST COCRET ;THE ONLY WAY OUT\r
-BLK5ER: TTCALL 3,[ASCIZ /?BOOTSTRAP LOADER WILL NOT FIT IN 3 BLOCKS\r
-/]\r
- JRST ST\r
-\r
-\f ;PROG-NAME IN RADIX50\r
-BLK6: PUSHJ P,GETWRD ;\r
- PUSHJ P,UNWIND ;CONVRT RX50 TO 6BIT PROG-NAME\r
- SOJA CNT,BLK4 ;I.E. IGNORE REST OF THIS BLK\r
-\r
-UNWIND: MOVE AC4,[POINT 6,PNAME]\r
- SETZM PNAME\r
- MOVEM W,AC5 ;\r
- HRROI AC0,-6 ;6 CHARS\r
- TLZ W,740000 ;CLEAR THE CODE BITS\r
-UNW1: IDIVI AC5,50 ;\r
- HRLM AC6,(P) ;SAVE REMAINDER\r
- AOJGE AC0,UNW2 ;LOOP\r
- PUSHJ P,UNW1 ;LOOP\r
-UNW2: HLRZ AC6,(P) ;PICK OFF THE REMAINDER + DECODE IT\r
- JUMPE AC6,UNW3 ;DONE\r
- ADDI AC6,20-1\r
- CAILE AC6,31\r
- ADDI AC6,41-32\r
- CAILE AC6,72\r
- SUBI AC6,74-4\r
- CAIN AC6,3\r
- MOVEI AC6,16\r
-\r
- IDPB AC6,AC4\r
-UNW3: POPJ P,\r
-\r
- ;STARTING ADR.\r
-BLK7: PUSHJ P,GETWRD ;\r
- HRLI W,(JRST) ;JUMP TO THE STARTING ADDRESS\r
- MOVEM W,SASAV ;SAVE STARTING ADDRESS\r
- SOJA CNT,BLK4 ;IGNORE REST OF BLK\r
-\r
\fBLTWRD: XWD END.,END.+1 ;ZRO FROM,TO\r
ZROWRD: EXP END. ;START\r
FSAVE: XWD FLP,0 ;MODIFIED WHEN BSLDR IS LOADED\r
LISTV2: IOWD 0,END.\r
INC: BLOCK 1\r
INCV: BLOCK 1\r
+;LISTC: IOWD 10200,L16K.\r
+; Z\r
+;LISTV1: IOWD 4000,L16K.\r
+;LISTV2: IOWD 4000,END.+3000\r
+;INC: XWD 0,41\r
+;INCV: XWD 0,20\r
DIRECT: BLOCK 123\r
DNAM: BLOCK 55\r
-TOTAL: BLOCK 26 ;BLOCK TABLE\r
DIRWRD: IOWD 200,DIRECT\r
Z\r
REWIND: IOWD 1,PTRBUF\r
Z\r
-TTYIN: BLOCK 23+20\r
+TTYIN: BLOCK 33\r
+;TTYIN: Z\r
+; XWD 21,.\r
+; Z\r
+; XWD FLG+FLL,0\r
+; BLOCK 17\r
+; XWD FLC+FLZ+FLG,2563\r
+; BLOCK 7\r
TTYOUT: BLOCK 23\r
+;TTYOUT: XWD 24,1\r
+; XWD 21,.\r
+; BLOCK 21\r
IN1: BLOCK 3\r
IN2: BLOCK 3\r
OUT2: BLOCK 3\r
TIN: BLOCK 3\r
TOUT: BLOCK 3\r
PTRBUF: BLOCK 3\r
-BSBUF: BLOCK 720 ;ENUF FOR 3BLOCKS PLUS HDR WRDS\r
+;TIN: XWD FLP,TTYIN+1\r
+; XWD FLI+FL2+HSW,0\r
+; Z\r
+;TOUT: XWD FLP,TTYOUT+1\r
+; XWD FLI+FL2+HSW,TTYOUT+2\r
+; Z\r
+;PTRBUF: XWD FLP,END.+144\r
+; XWD FLL+FLI,END.+174\r
+; Z\r
VAR\r
LIT\r
+L16K.: BLOCK 400\r
+L32K.: BLOCK 400\r
END.: END ST ;;22-JUN\r
\f\r