1 TITLE COPY V004 31MAR
\r
2 ;COPYRIGHT 1968, DIGITAL EQUIPMENT CORP., MAYNARD, MASS.
\r
6 COPY WILL RUN IN ANY AMOUNT OF CORE, HOWEVER, EFFICIENCY
\r
7 INCREASES WITH CORE SIZE. SWITCHES ARE PRECEDED BY A SLASH OR
\r
8 ENCLOSED IN PARENTHESES AND MAY APPEAR ANYWHERE IN THE COMMAND
\r
9 STRING. THE GENERAL COMMAND STRING FORMAT IS:
\r
10 (OUTPUT DECTAPE):_(INPUT DECTAPE):/C
\r
12 /C COPY ALL BLOCKS FROM THE INPUT DECTAPE ONTO
\r
14 /Z ZERO ALL BLOCKS OF THE OUTPUT DECTAPE, CLEAR
\r
16 /V PERFORM A WORD BY WORD COMPARISION BETWEEN
\r
17 EVERY WORD OF THE INPUT AND OUTPUT DECTAPES.
\r
18 /T CAUSES A BOOTSTRAP LOADER TO BE WRITTEN ONTO
\r
19 BLOCKS 0,1 AND 2 OF THE OUTPUT TAPE. COPY TYPES
\r
20 "TYPE CORE BANK OR OFFSET FOR BSLDR."
\r
21 OFFSET = OCTAL NUMBER 1000 TO 777600.
\r
22 CORE-BANK = NNNK = 16K TO 256K,
\r
24 THEN OFFSET=177000 (TOP OF COPE - 1000)
\r
25 /N DON'T OUTPUT A DIRECTORY.
\r
26 /6 LOOK FOR A DIRECTORY IN BLOCK ONE, NOT BLOCK 144.
\r
27 /G DON'T RESTART THE PROGRAM AFTER A PARITY ERROR
\r
28 (BIT20), OUTPUT AN ERROR MESSAGE AND CONTINUE.
\r
29 NO SW'S SET C AND V SWITCHES (DEFAULT CONDITION).
\r
31 NOTE........AT COMPLETION THE OUTPUT DECTAPE SHOULD BE REASSIGNED
\r
32 TO ENSURE THAT THE DIRECTORY IN CORE IS UP TO DATE.
\r
34 \fTHE FOLLOWING MESSAGES MAY BE OUTPUT TO THE USER'S TELETYPE.
\r
37 INPUT (OR OUTPUT) DEVICE ERROR
\r
38 INPUT (OR OUTPUT) CHECKSUM OR PARITY ERROR
\r
39 INPUT (OR OUTPUT) BLOCK TOO LARGE
\r
40 INPUT (OR OUTPUT) PREMATURE END OF FILE
\r
41 000000 VERIFICATION ERRORS
\r
45 DEVICE MUST BE A DECTAPE
\r
46 INPUT AND OUTPUT DECTAPES MAY NOT BE THE SAME DEVICE.
\r
48 THE FOLLOWING MAY BE OUTPUT WHILE PROESSING "/L".
\r
50 LOOKUP FAILED, "BSLDR.REL"
\r
51 ?DATA ERROR ON DEVICE PTR
\r
53 ?CANNOT PROCESS EXTERNAL SYMBOLS
\r
54 ?CANNOT PROCESS HIGH SEG'S
\r
55 ?NO END BLOCK ENCOUNTERED
\r
56 ?BOOTSTRAP LOADER WILL NOT FIT IN 3 BLOCKS
\r
58 THE FOLLOWING MAY BE OUTPUT WHILE PROCESSING "/T".
\r
59 TYPE CORE BANK OR OFFSET FOR DTBOOT
\r
60 ?OFFSET = 1000 TO 777600 (OCTAL)
\r
61 ?EXPECTED FORMAT IS "NNNK" = 16K T0 256K
\r
62 ?BOOTSTRAP LOADER IS NOT IN COPY; TRY "/L".
\r
65 FLP=400000 ;NOT SW MODE **FLAGS ARE IN LH OF F**
\r
70 FLG= 10000 ;IGNORE PARITY ERRORS
\r
73 FLA= 1000 ;LEFT ARROW
\r
74 FLI= 400 ;INPUT DEVICE
\r
75 FL2= 200 ;CHANEL TWO
\r
77 LSW= 20 ;REQ TO LOAD A BSLDR
\r
78 LFL= 10 ;A BOOTSTRAP LOADER IS IN "COPY"
\r
79 NSW= 4 ;NO DIRECTORY
\r
82 ANYSW=FLC+FLZ+FLV+FLT ;ANYSW=0 IMPLIES FLC+FLV
\r
93 VZ1=2 ;CMDLST TERMINATOR
\r
97 C=6 ;CURRENT CHARACTER
\r
105 P=17 ;PUSH DOWN LIST
\r
106 EXTERN JOBFF,JOBREL,JOBSA,JOBREN
\r
108 XWD 0,4 ;;VERSION #
\r
112 MOVE P,[IOWD 10,TTYIN+23] ;PUSH DOWN LIST
\r
116 INIT 17,1 ;ASCII LINE
\r
123 INBUF 17,1 ;SET THE BUFFER ADR TO TTYIN
\r
126 OUTBUF 17,1 ;SET THE BUFFER ADR TO TTYOUT
\r
133 SUB T,JOBFF ;T=NO. OF FREE LOC
\r
134 CAIGE T,400 ;TRY FOR AT LEAST 2K OF BUFFER AREA
\r
138 ANDI T,-200 ;T=NO. OF FREE WORDS
\r
139 MOVNM T,U ;IOWD FORMAT "-N"
\r
140 LSH T,-7 ;T=NO. OF BLOCKS PER COPY INPUT
\r
141 MOVEM T,INC ;COPY INCREMENT
\r
142 LSH T,-1 ;T=NO. OF BLOCKS PER VERIFY INPUT
\r
143 MOVEM T,INCV ;VERIFY INCREMENT
\r
145 MOVEM C,LISTC ;COPY IOWD
\r
146 ASH U,-1 ;HALVE THE "-N" FOR VERIFY
\r
147 TRNE U,100 ;"-N" MUST AGREE WITH THE INCREMENT
\r
150 MOVEM C,LISTV1 ;VERIFY IOWD #1
\r
153 MOVEM C,LISTV2 ;VERIFY IOWD #2
\r
156 PUSHJ P,TYPC ;OUTPUT CHAR
\r
159 MOVE F,FSAVE ;INITIAL FLAGS
\r
160 SKIPA BP,[POINT 6,ODEV] ;ASSUME AN OUTPUT DEV
\r
161 COIDEV: MOVE BP,[POINT 6,IDEV] ;INPUT IF LEFT-ARROW + COLON WERE SEEN
\r
162 COTGET: PUSHJ P,TYPGET ;RETURN A CHAR TO C
\r
166 JRST COLPRN ;LEFT PAREN
\r
171 JRST COCRET ;CR OR LF
\r
173 JRST COLARO ;LEFT ARROW
\r
176 CAILE C,"9" ;ILLEGAL CHAR?
\r
180 SUBI C,40 ;6 BITIZE IT
\r
181 TLNE BP,770000 ;ACCEPY 6 CHARS ONLY
\r
182 IDPB C,BP ;ASSEMBLE AN I/O DEV NAME
\r
184 \fCOLPRN: TLZA F,FLP ;ENTER PAREN MODE
\r
185 COEXIT: JUMPL F,COTGET ;NORMAL EXIT
\r
186 COSLSH: PUSHJ P,TYPGET ;SLASH - RETURN SW IN C
\r
187 MOVSI U,-LEN ;U=-SWTAB LEN,0
\r
188 COSWLP: MOVE T,SWTAB(U) ;T=FLAG,CHAR
\r
189 CAIN C,(T) ;C=0,CHAR
\r
190 TDOA F,T ;F=FLAGS,CHARS ANDED
\r
191 AOBJN U,COSWLP ;MORE SW'S? LOOP
\r
192 JUMPL U,COEXIT ;MATCH OR MORE SW? LOOP
\r
193 JRST ERRSW ;NOT A SWITCH
\r
195 COLARO: TLZE F,FLK ;CLEAR COLON FLAG
\r
196 TLOE F,FLA ;SET LEFT ARROW FLAG
\r
197 JRST ERRCMD ;TOO MANY ARROWS,NOT ENOUGH KOLONS
\r
198 JRST COIDEV ;NEXT DEVICE MUST BE INPUT
\r
200 COCOLN: TLZ BP,770000 ;ACCEPT NO MORE CHARS.
\r
201 TLON F,FLK ;SET KOLON FLAG
\r
202 JUMPGE BP,COTGET ;NORMAL EXIT
\r
203 JRST ERRCMD ;NULL NAME, TOO MANY COLONS
\r
205 COCRET: TLNE F,FLA ;LOADING A LOADER?
\r
208 JRST ERRCMD ;NO_,SOME ODEV
\r
210 JRST ERRCMD ;NO_,NO ODEV, NO SW
\r
211 JRST ST ;NO_,NO ODEV,NO SW =*
\r
213 COSTRT: TLNN F,ANYSW ;ANY SW=SKIP
\r
214 TLO F,FLC+FLV ;DEFAULT=COPY+VERIFY
\r
215 TLNE F,FLC ;IF COPY
\r
216 TLZ F,FLZ ;DONT ZERO
\r
217 TLNE F,FLZ ;IF ZERO
\r
218 TLZ F,FLV ;DONT VERIFY
\r
221 JUMPE T,ERRCMD ;AN INDEVICE IS REQUIRED
\r
222 TLNN F,FLT ;IS 10DMP WANTED?
\r
223 JRST CINIT ;NO, PROCEED
\r
225 \f ;HERE TO ACCEPT THE BOOTSTRAP LOADER OFFSET (/T)
\r
227 CTENDM: TLNN F,LFL+LSW ;IS A BOOTSTRAP LOADER LOADED?
\r
228 JRST ERRTNH ;NO, COMPLAIN
\r
232 PUSHJ P,TYPEIT ;BSLDR'S NAME
\r
235 CTEN0: PUSHJ P,TYPGET ;
\r
237 JRST CTEN2 ;K, MUST BE A CORE-BANK
\r
240 CTEN1: MOVEI BP,MES16K
\r
251 \fCINIT: MOVEI T,134 ;BUFRD MODE
\r
252 PUSHJ P,INIT ;FIRST INIT
\r
253 TLNE F,FLC!FLZ ;BEGIN HERE ___******
\r
254 PUSHJ P,COPZRO ;ZERO OR COPY
\r
255 TLNE F,FLC!FLZ ;IF C OR Z-
\r
256 PUSHJ P,LALA ;THEN REWIND
\r
257 TLNN F,FLZ ;WASIT /Z ?
\r
260 CALLI 2,13 ;CLEAR DIR IN CORE
\r
261 RELEAS 2, ;AND ON TAPE
\r
263 PUSHJ P,INIT ;REINIT
\r
264 CNOZRO: TLNE F,FLV ;VERIFY ?
\r
265 PUSHJ P,VERZRO ;YES
\r
266 TLNE F,FLV ;IF VERIFY-
\r
267 PUSHJ P,LALA ;THEN REWIND
\r
268 TLNE F,FLT ;TEN DUMP ?
\r
269 PUSHJ P,TENINT ;YES
\r
270 JRST ST ;GO AGAIN ******
\r
275 JFCL 1,.+1 ;PROCESSOR TEST
\r
278 TLO F,FPT ;PDP-10 FLAG
\r
279 JRST LSTEST ;10-JUMP
\r
280 JUMPE C,LSTES0 ;JUMP IF NO INPUT DEV
\r
282 INPUT 1,REWIND ;IOWD 1,DATA
\r
285 LSTEST: TLZE F,FLL ;LIST A DIR?
\r
287 MOVEI C,^D30 ;SECONDS
\r
288 GDNITE: TLNE F,FPT ;6-SKIP
\r
289 CALLI C,31 ;TO SLEEP
\r
292 SWTAB: XWD FLP,")" ;XIT
\r
295 XWD FLV,"V" ;VERIFY
\r
296 XWD FLT,"T" ;TENDMP
\r
297 XWD FLG,"G" ;IGNORE
\r
298 XWD FL6,"6" ;PDP6 DIR
\r
300 \fDSAV: TLON F,FLL ;ENTER THIS CODE ONCE ONLY
\r
301 TLNE F,FL6 ;SKIP IF ITS NOT 6FMT
\r
302 JRST COPSKP ;2ND PASS OR 6FMT-EXIT.
\r
304 SUBI AC1,144 ;FIRST BLK OF NEXT OUTPUT
\r
305 SUB AC1,INC ;FIND A
\r
306 IMULI AC1,-200 ; DIRECTORY,
\r
307 ADD AC1,LISTC ;GRAB
\r
308 HRLI AC1,1(AC1) ; A
\r
309 HRRI AC1,DIRECT ; DIRECTORY.
\r
310 BLT AC1,DIRECT+177 ;SAVE IT.
\r
313 DLST: TLNE F,FL6 ;6FMT?
\r
315 HRLI AC3,150000 ;TERMINATOR
\r
317 DLST3: SKIPN AC2,DNAM(1) ;FILE NAME
\r
321 HLLZ AC2,DNAM+^D22(1) ;EXTENSION
\r
329 DLST4: PUSHJ P,TYPCL ;
\r
330 DLST5: AOBJN AC1,DLST3 ;LOOP
\r
331 DXIT: MOVEI C,^D22 ;22 SECONDS
\r
332 JRST GDNITE ;TO SLEEP.
\r
334 D6LST: MOVEI AC0,36 ;MAX NO. OF ENTRIES
\r
335 HRRZ AC1,DIRECT ;LOC OF FIRST DIR BLK
\r
336 D6BEG: HRLI AC3,150000 ;"-" TERMINATOR
\r
338 SKIPN AC2,DIRECT(1) ;IS THERE A FILENAME?
\r
339 JRST DXIT ;NORMAL EXIT
\r
340 PUSHJ P,TYPEIT ;FILENAME
\r
341 HLLZ AC2,DIRECT+1(1) ;EXTENSION
\r
342 SKIPN AC2 ;IF NULL,
\r
344 MOVEI C," " ;OTHERWISE
\r
346 HRRI AC2,150000 ;"-"
\r
349 D6FIN: PUSHJ P,TYPCL ;CR-LF
\r
351 SOJG AC0,D6BEG ;IN CASE
\r
352 JRST DXIT ;DIR WAS FULL
\r
354 TYPEIT: HRLI BP,440600 ;BP=MESSAGE ADR
\r
355 TYPLOP: ILDB C,BP ;
\r
357 POPJ P, ;GET THE WHOLE MESSASE
\r
359 JRST TYPCL ;APPEND CR LF AND TYPE
\r
360 ADDI C,40 ;ASCIZE IT
\r
361 IDPB C,TOUT+1 ;TO THE BUFFER
\r
364 TYPGET: ILDB C,TIN+1 ;GET CHAR
\r
367 JRST TYPGET ;FORGET IT
\r
370 TYPCCL: IDPB C,TOUT+1 ;TYPE CHAR,CRLF
\r
371 TYPCL: MOVEI C,15 ;TYPE CRLF
\r
374 TYPC: IDPB C,TOUT+1 ;TYPE CHAR
\r
375 TYPBUF: OUTPUT 17, ;DO IT
\r
378 \fERRT1I: TLOA F,FLI ;INPUT ERROR
\r
379 ERRT1O: TLZ F,FLI ;OUTPUT ERROR
\r
380 STATUS 1,IOS ;STATUS TO IOS
\r
381 TRNE IOS,360000 ;ALL THE ERRORS
\r
382 JRST ERRCHK ;FOUND AN ERROR
\r
385 ERRT2I: TLOA F,FLI ;INPUT ERROR
\r
386 ERRT2O: TLZ F,FLI ;OUTPUT ERROR
\r
387 STATUS 2,IOS ;FLAGS TO IOS
\r
388 TRNN IOS,760000 ;PLUS WRITE LOCK
\r
390 TLO F,FL2 ;IT'S A CHANNEL 2 ERROR
\r
392 ERRCHK: TRNE IOS,400000
\r
393 PUSHJ P,ERR400 ;WRITE LOCK
\r
395 PUSHJ P,ERR200 ;DEVICE ERROR
\r
397 PUSHJ P,ERR100 ;CKSUM/PARITY
\r
399 PUSHJ P,ERR040 ;BLOCK TOO LARGE
\r
400 TRNE IOS,020000 ;PREMATURE EOF,PDP9-DTA?
\r
402 TRNN IOS,640000 ;THESE BITS IMPLY RESTART
\r
403 TLNN F,FLG ;/G+PARITY ERR = CONTINUE
\r
405 TRZ IOS,740000 ;ZERO IN
\r
407 SETSTS 1,(IOS) ;TURN OFF
\r
409 SETSTS 2,(IOS) ;AND
\r
411 \fERR400: MOVEI BP,MES400
\r
413 MES400: SIXBIT /WRITE LOCK ERROR#/
\r
414 ERR200: PUSHJ P,ERRCOM
\r
417 MES200: SIXBIT / DEVICE ERROR#/
\r
418 ERR100: PUSHJ P,ERRCOM
\r
421 MES100: SIXBIT / CHECKSUM OR PARITY ERROR#/
\r
422 ERR040: PUSHJ P,ERRCOM
\r
425 MES040: SIXBIT / BLOCK TOO LARGE#/
\r
426 ERR020: PUSHJ P,ERRCOM
\r
429 MES020: SIXBIT / PREMATURE END OF FILE#/
\r
430 ERRCOM: MOVEI BP,SXBINP
\r
434 SXBINP: SIXBIT /INPUT-/
\r
435 SXBOUT: SIXBIT /OUTPUT-/
\r
436 \fERRVER: MOVE T,[POINT 6,MESVER]
\r
437 MOVE BP,[POINT 3,U,17]
\r
438 ERRVE1: ILDB C,BP ;LOAD AN OCTAL NUMBER
\r
439 ADDI C,20 ;6BITIZE IT
\r
440 IDPB C,T ;INSERT IN MESS
\r
441 TLNE T,770000 ;ONE WORD ONLY
\r
442 JRST ERRVE1 ;LOOP 6 TIMES
\r
445 MESVER: SIXBIT /000000 VERIFICATION ERRORS#/
\r
446 ERRCMD: MOVEI BP,MESCMD
\r
449 MESCMD: SIXBIT /COMMAND ERROR#/
\r
450 ERRSW: MOVEI BP,MESSW
\r
453 MESSW: SIXBIT /SWITCH ERROR#/
\r
454 ERRIN1: SKIPA T,IDEV
\r
455 ERRIN2: MOVE T,ODEV
\r
460 MESINI: SIXBIT / INIT FAILURE#/
\r
461 ERRDT1: SKIPA T,IDEV
\r
462 ERRDT2: MOVE T,ODEV
\r
467 MESDTA: SIXBIT / MUST BE A DECTAPE#/
\r
468 \fERRTNH: MOVEI BP,MESTNH
\r
471 MESTNH: SIXBIT /TENDUMP IS NOT IN CORE.#/
\r
472 MES32K: SIXBIT /32K TENDUMP?... -/
\r
473 MES16K: SIXBIT /16K TENDUMP?... -/
\r
476 \f ;WRITE A BOOOTSTRAP LOADER IN BLOCKS 0,1 AND 2
\r
478 SETSTS 2,134 ;SO I CAN WRITE IN BLK 0
\r
488 HRR BP,OUT2+1 ;BLT PTR
\r
489 MOVEM BP,C ;SAVE IT
\r
490 BLT BP,177(C) ;ZAP 1
\r
493 MOVEM C,BP ;2ND PTR SAVED
\r
494 BLT BP,177(C) ;ZAP 2
\r
497 PUSHJ P,ERRT2O ;ERRORS?
\r
500 \fCOPZRO: PUSH P,JOBFF ;SAVE JOBFF
\r
503 OUTBUF 2,1 ;WITH ONE BUFFER MODE-134
\r
504 USETO 2,0 ;FOR BLOCK ZERO
\r
507 JRST COPBKZ ;NO, MUST BE ZERO
\r
508 INBUF 1,1 ;ONE BUFFER MODE-134
\r
509 USETI 1,0 ;BLOCK ZERO
\r
511 PUSHJ P,ERRT1I ;OK?
\r
512 MOVEI T,177 ;LOOP LENGTH
\r
513 LDB C,IN1+1 ;FIRST WORD
\r
514 DPB C,OUT2+1 ;TO THE BUFFER
\r
515 COPLPZ: ILDB C,IN1+1 ;OTHER WORDS
\r
516 IDPB C,OUT2+1 ;TO THE BUFFER
\r
517 SOJG T,COPLPZ ;TO LOOP
\r
518 COPBKZ: OUTPUT 2, ;DUMP THE BUFFER
\r
519 POP P,JOBFF ;FOR VERIFY?
\r
520 PUSHJ P,ERRT2O ;OK?
\r
521 SETSTS 2,136 ;DUMP MODE
\r
522 SETSTS 1,136 ;DUMP MODE
\r
523 USETI 1,1 ;BLOCK ZERO
\r
524 INPUT 1,DIRWRD ;GET IT
\r
525 MOVE U,JOBREL ;UPPER LIMIT
\r
526 MOVE T,BLTWRD ;FROM,TO
\r
527 SETZM @ZROWRD ;START
\r
529 MOVEI LOC,1 ;START AT BLOCK ONE
\r
530 COPSET: CAILE LOC,144
\r
532 COPSKP: TLNE F,FLC ;SKIP
\r
533 USETI 1,(LOC) ;IO 2 UNASGND CH
\r
534 USETO 2,(LOC) ;SET THE BLOCK NO.
\r
535 ADD LOC,INC ;ADD THE INCREMENT
\r
536 CAILE LOC,1102 ;WILL IT FIT?
\r
538 PUSHJ P,COPYIT ;ONE BUFFER
\r
539 JRST COPSET ;AND LOOP
\r
540 COPFIN: SUBI LOC,1102 ;N BLOCKS WON'T FIT
\r
541 IMULI LOC,200 ;N WORDS WON'T FIT
\r
542 MOVSS LOC ;GET ORGANIZED
\r
543 ADDM LOC,LISTC ;SUB N WORDS FROM LIST
\r
544 SKIPL LISTC ;IF LH OF IOWD = 0,
\r
546 COPYIT: TLNN F,FLC ;COPY?
\r
548 INPUT 1,LISTC ;COPY!
\r
549 PUSHJ P,ERRT1I ;OK?
\r
550 COPOUT: OUTPUT 2,LISTC ;COPY AND ZERO
\r
552 \fVERZRO: PUSH P,JOBFF
\r
553 SETZB VZ1,VZ2 ;CMDLST TERMINATOR
\r
555 SETSTS 2,134 ;IB MODE
\r
559 INBUF 2,1 ;ONE BUFFER EA
\r
560 INPUT 1, ;GET A BLOCK
\r
562 INPUT 2, ;GET ANOTHER
\r
566 HRLI V1,-200 ;FOR VERIFY LOOP
\r
567 POP P,JOBFF ;RECLAIM BUFFERS
\r
568 PUSHJ P,VERIFY ;VERIFY AND EXIT THIS PAGE
\r
569 VERONE: SETSTS 1,136 ;SET
\r
570 SETSTS 2,136 ;DUMP MODE
\r
571 MOVEI LOC,1 ;START AT BLOCK 1
\r
572 VERSET: MOVE V1,LISTV1 ;IOWDS
\r
573 MOVE V2,LISTV2 ;TO ACS
\r
574 USETI 1,(LOC) ;MASTER
\r
575 USETI 2,(LOC) ;AND COPY
\r
576 ADD LOC,INCV ;ADD IN THE INCREMENT
\r
577 CAILE LOC,1102 ;AM I ASKING TOO MUCH?
\r
579 PUSHJ P,VERIN ;COUPLE OF INPUTS AND VERIFY
\r
582 VERFIN: SUBI LOC,1102 ;HOW MUCH TOO MUCH?
\r
583 IMULI LOC,200 ;IN WORDS PLEASE
\r
584 MOVSS LOC ;BACKWARDS
\r
585 ADD V1,LOC ;SUB WORDS FROM LIST
\r
586 ADD V2,LOC ;I.E. ASK FOR LESS
\r
587 SKIPL V1 ;IF LH OF IOWD = 0,
\r
590 VERIN: INPUT 1,V1 ;ONE FOR THE MASTER
\r
591 PUSHJ P,ERRT1I ;OK?
\r
592 INPUT 2,V2 ;ONE FOR THE COPY
\r
593 PUSHJ P,ERRT2I ;OK?
\r
595 VERIFY: SETZ U, ;CLR THE ERROR CNT
\r
596 MOVE T,1(V1) ;MASTER WORD
\r
597 CAME T,1(V2) ;SAME AS COPY WORD?
\r
598 AOS U ;NO, COUNT THE ERRORS
\r
600 AOBJN V1,VERIFY+1 ;BOTH HALVES AND LOOP
\r
601 JUMPN U,ERRVER ;ERROR MESS IF APPROPIATE
\r
602 POPJ P, ;UNLESS V1 IS POSITIVE
\r
607 MOVE BP,ODEV ;MAKE SURE ITS A DTA.
\r
610 JRST ERRDT2 ;ERROR, ITS NOT A DTA
\r
611 SKIPN IDEV ;IF NULL
\r
612 POPJ P, ;NO INPUT DEV REQUIRED
\r
617 MOVE BP,IDEV ;MAKE SURE ITS A DTA
\r
623 \fBLTWRD: XWD END.,END.+1 ;ZRO FROM,TO
\r
624 ZROWRD: EXP END. ;START
\r
625 FSAVE: XWD FLP,0 ;MODIFIED WHEN BSLDR IS LOADED
\r
628 LISTV1: IOWD 0,END.
\r
629 LISTV2: IOWD 0,END.
\r
632 ;LISTC: IOWD 10200,L16K.
\r
634 ;LISTV1: IOWD 4000,L16K.
\r
635 ;LISTV2: IOWD 4000,END.+3000
\r
640 DIRWRD: IOWD 200,DIRECT
\r
642 REWIND: IOWD 1,PTRBUF
\r
650 ; XWD FLC+FLZ+FLG,2563
\r
662 ;TIN: XWD FLP,TTYIN+1
\r
663 ; XWD FLI+FL2+HSW,0
\r
665 ;TOUT: XWD FLP,TTYOUT+1
\r
666 ; XWD FLI+FL2+HSW,TTYOUT+2
\r
668 ;PTRBUF: XWD FLP,END.+144
\r
669 ; XWD FLL+FLI,END.+174
\r
675 END.: END ST ;;22-JUN
\r