ߋtv ?B-NO BOOT ON VOLUME @w p@w wP׭ ׭ w f& fwW#w v   @ @wP  @& 7 "  BLOCK@   IS BAD   -̂@ &   # p@ zw 7 P7 R & B g wD ѕ  Rì     s   p x] \Z 1  d s  -2&w* ErZz..ErrXz: .}qZz. .}qrXz: .Zz. .rXz:.Zz..rXz: . z .z .z .`Tz .HSz.fz .fz .z .z .&#v .y%v .Udv .zCFANJBA RT-11SJ V02C-02zzy e ` E Pc ˋ 7 ?B-I/O ERROR vߋtȋ xE  e  h@ `D fHT HTHTS K,ee 6 e @B5 Sr;zaX'5lem7 ?B-NO MONITR.SYS 7 ?B-NOT ENOUGH CORE e&^e  ee ~"tCeetHa a a5*a , A A A A Ep`p`p] t?a !aW,8r`p %e 8?ae?w P $ @5x 5p@6@f ,04@>>>C8E:E>E@EBEFEHE>r?RK>@&A .IF NE BF .TITLE RT-11FB V02C-0'... .IFF .TITLE RT-11SJ V02C-0'... .ENDC .ENDR .RADIX 8. .SBTTL EDIT LOG ; FOLLOWING ARE EDITS MADE FOR VERSION V02C: ;DV1 -- CORRECTS .CDFN CODE TO PROPERLY CHECK CHANNEL NUMBER. ; ;DV2 -- REMOVES ADDRESSING CHECK BY-PASS FOR KMON SO THAT ; ALL KMON .FETCHES ARE CHECKED. ; ;DV3 -- FIXES .ASS:DEV BUG. ; ;DV4 -- PREVENTS F/G JOB FROM .RELEASING HANDLER FETCHED IN B/G JOB. ; ;DV5 -- PREVENTS CRASH WHEN .DATE IS TYPED WITHOUT AN ARGUMENT ; BEFORE A DATE WAS ENTERED. ; ;DV6 -- PREVENTS CTRL/C FROM FRUN, WHICH COULD CAUSE LOSS OF ; MEMORY THAT WAS ALLOCATED FOR THE F/G JOB SPACE. ; ;DV7 -- PREVENTS A .LOCK THAT PROCEEDS A CSIGEN FROM PRODUCING A ; SPURIOUS ERROR MESSAGE. ; ;DV8 -- CORRECTS A TYPO IN QMANGR CODE THAT RESULTED IN A WRONG ; REGISTER BEING TESTED AND Q ELEMENTS ALWAYS BEING LINKED ; INTO THE HEAD OF AN I/O QUEUE. ; ;DV9 -- PRINTS ANOTHER CHARACTER AFTER A FILL SEQUENCE BEFORE ; SERVICING A TT: REQUEST FOR OUTPUT. PREVENTS OVERPRINT. ; ;DV10 - STRIPS PARITY BEFORE PRINTING A CHARACTER ON CONSOLE. ; ;DV11 - CORRECTIONS MADE TO TT HANDLER FOR S/J: A) TERMINATE ON ; CORRECT WORD COUNT AND B) RETURN EOF ONLY WHEN ; EOF CHARACTER ACTUALLY TYPED. KMON TABLE SIZE INCREASED. ; ;DV12 - .SYNCH FIXED IN S/J TO LOWER PRIORITY TO 0 PER F/B. ; ;DV13 - SCROLLER WIDTH TEST ADDED FOR S/J. ; ;DV14 - S/J TTY OUTPUT SERVICE CHANGED TO NOT HANG WHEN ECHOING A ; CHARACTER TYPED AND OUTPUT RING BUFFER IS FULL. ; ;DV15 - CHANGES MADE TO SUPPORT LSI11 PROCESSOR. ; ;DV16 - EDITS MADE FOR NETWORKS SUPPORT ; ;DV17 - ADDS SPFUN$ BIT TO DSTATUS WORD. BIT SET IN DSTATUS PERMITS ; .SPFUN REQUESTS TO BE SENT TO DRIVER (E.G., MT OR DX). ; ;DV18 - TTY FIXES FOR F/B TO IMPROVE .PRINT AND TT: INTERACTION. ; ;DV19 - CHANGES TO VT11 SCROLLER. NOW RUNS AT LEVEL 0, GOING TO 4 ; ONLY WHEN EXTRACTING A CHARACTER FROM THE RING BUFFER. ; ALSO ADDS A SCROLLER FIXED OFFSET LOCATION TO ALLOW SPECIFICATION ; OF TERMINAL PRINTER VECTOR. ; ;DV20 - FIXES CALUSR IN S/J TO REFRESH USR IN STANDARD LOCATION IF ; USR HAS BEEN SET "NO SWAP". ; ;DV21 - .CHCOPY WAS CHANGED TO CLEAR I/O COUNT IN CHANNEL WHEN ; COPYING FIFTH WORD OF CHANNEL. ; ;DV22 - .FRUN WAS MODIFIED TO CLOSE CHANNEL 17 IF PROGRAM NOT OVERLAYED. ; ;DV23 - THE SYSUPD FIXED OFFSET IN RMON WAS CHANGED TO REFLECT THE ; RELEASE NUMBER OF THE CURRENT VERSION, RATHER THAN THE EDIT #. ; ;LP1 - FLOPPY BOOT SPEED UP FOR THE LSI-11 PROCESSOR. ; ;DV24 - BOOT MODIFIED TO LOWER RX01 PRIORITY SO DX DRIVER RUNS AT ; LEVEL 0 WHEN DX IS SYSTEM DEVICE ON AN 11/03 CONFIGURATION. .SBTTL MACROS .MCALL ..V1.. ..V1.. .MCALL .CLOSE, .DSTATUS, .ENTER, .EXIT, .FETCH, .HRESET .MCALL .LOCK, .LOOKUP,.PRINT, .RCTRLO,.READW, .RELEASE .MCALL .SETTOP,.SRESET,.TTYIN, .TTYOUT,.UNLOCK,.WAIT, .WRITW ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; THIS MACRO GENERATES A CALL TO THE KMON ERROR ROUTINE .MACRO KMEROR TEXT .IF GE OVLYN OJSR R0,MSGKM .IFF JSR R0,MSGKM .ENDC .ASCIZ "?TEXT?" .EVEN .ENDM KMEROR ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; THIS MACRO COMPUTES AN ADDRESS IN A POSITION-INDEPENDENT MANNER ; IT CAN PUT THE ADDRESS IN A REGISTER OR ON THE STACK, ; AND CAN SAVE THE REGISTER FIRST ; ADR IS THE ADDRESS TO COMPUTE ; REG IS THE REGISTER (SP IF IT IS TO BE PUSHED) ; PUSH IS BLANK, 'ADD', OR 'PUSH' .MACRO ADDR ADR,REG,PUSH .IF IDN REG,SP MOV PC,-(SP) ADD #ADR-.,(SP) .IFF .IF B PUSH MOV PC,REG .IFF .IF IDN PUSH, ADD PC,REG .IFF JSR REG,(PC) .ENDC .ENDC ADD #ADR-.,REG .ENDC .ENDM ADDR ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; THIS MACRO GENERATES A BLOCK OF ZERO WORDS IN CORE .MACRO BSS COUNT .NLIST .REPT COUNT .WORD 0 .ENDR .LIST .ENDM BSS ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; THIS MACRO GENERATES A FATAL MONITOR ERROR CALL .IF EQ BF .MACRO MONERR CODE,LEVEL,FTL EMT 376 .BYTE LEVEL .IF IDN , .BYTE ^C .IFF .BYTE CODE .ENDC .ENDM MONERR .IFF .MACRO MONERR CODE,LEVEL,FTL EMT 376 .BYTE LEVEL .IF IDN , .BYTE ^C .IFF .BYTE CODE'.E .ENDC .ENDM MONERR .ENDC ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; MACRO TO GENERATE AN ERROR FROM THE CSI .MACRO CSIERR TEXT,CODE .NLIST JSR R0,MSG .BYTE CODE .ASCIZ "?TEXT?" .EVEN .LIST .ENDM CSIERR ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; MACRO TO CHANGE PRIORITY LEVEL ; FOR USE IN RMON MODULE ONLY ;DV15 .MACRO SPL PRIO .IF NE PRIO MOV #PRIO*40,-(SP) ;DV15 .IFF CLR -(SP) ;DV15 .ENDC JSR PC,$MTPS ;DV15 .ENDM SPL ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; MACRO TO LINK TO A KMON OVERLAY ; NOTE - THIS MACRO SHOULD ONLY BE USED FROM A KMON COMMAND .MACRO OVLINK CMD .IF GE OVLYN OJSR R2,OVLINK .IFF JSR R2,OVLINK .ENDC .BYTE N.'CMD,O.'CMD/2 .ENDM OVLINK ; ; MACROS DEFINED ELSEWHERE ARE ONLY USED IN THE VICINITY OF ; THEIR DEFINITION .SBTTL GLOBAL DEFINITIONS ; GLOBAL REFERENCES FOR SYSTEM DEVICE HANDLERS .GLOBL SYINDO, $PNAMO, SYENTO .GLOBL DTSYS,RFSYS,RKSYS,DPSYS,DXSYS ;DEFINED IN THE SYSTEM HANDLERS .GLOBL DSSYS ;THEY MAKE THE APPROPRIATE HANDLER ;RESIDENT IN ADDITION TO SY AND DK .GLOBL BLKEY, CHKEY, RTORG, $CSW .GLOBL TTIBUF, TTOBUF, TTYIN, TTYOUT ; THESE GLOBALS ARE FOR THE BOOTSTRAP MODULE .GLOBL $DVREC, $ENTRY, $PNAME ;SYSTEM TABLES .GLOBL $MONBL, $SWPBL, SYSLOW, KMLOC, QCOMP .GLOBL $USRLC, $SLOT, $KMLOC ;LOCS. TO MOVE .GLOBL BSTRNG, CORPTR, DKASSG, FILLER, HWDSP$, HWFPU$ .GLOBL KMON, KMONSZ, KW11L$, MAPOFF, RMONSZ, RT11SZ, RTLEN .GLOBL RTSIZE, USRSZ, SWAPSZ, SYASSG, SYNCH, USRLOC, $INTEN .GLOBL MAXSYH .GLOBL LSI11$,$MFPS,GETPSW ;DV15 .IF NE BF ; GLOBALS STRICTLY FOR F/B: .GLOBL BCNTXT, BKGND1, BKGND2, BKGND3, BLIMIT, CNTXT, FPPINT .GLOBL FUDGE1, FUDGE2, MSGENT, RMONSP, SWIPTR, SWOPTR, TTIUSR .GLOBL TTOUSR, .$CRTN ,IMPLOC ;DV15 .IFF ; GLOBALS FOR BACKGROUND ONLY MONITOR .GLOBL I.CSW, FPPADD, FPPIGN, MONLOC, TRAPLC, TRAPER .GLOBL TTOCLO, TTILCT, AVAIL, MONCAL .ENDC .SBTTL SYSTEM PARAMETERS ; REGISTER DEFINITIONS: R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 PS=177776 SR=177570 ; ASCII DEFINITIONS BELL = 7 BS = 10 TAB = 11 LF = 12 FF = 14 CR = 15 ESCAPE = 33 RUBOUT = 177 ; INTERRUPT PRIORITY DEFINITIONS: PR0 = 0 PR4 = 200 PR7 = 340 ; CONDITIONAL ASSEMBLY PARAMETERS .IIF NDF CLOCK, CLOCK=60. ; FOR 60 CYCLE .IF NDF $SLOT ;DEFAULT 14 DEVICES (DEFINE ONLY IN PASS 1) $SLOT = 14. .IIF DF BANDW, $SLOT = 18. .ENDC ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; THE WORD CONFIG (IN RMON) GIVES INFO ON THE OVERALL STATE ; AND CONFIGURATION OF THE SYSTEM. THE BITS CURRENTLY DEFINED ARE: ; ; BIT # MEANING ; ----- ------- ; 0 0 => THIS IS THE B ONLY MONITOR ; 1 => THIS IS F/B MONITOR ; 1 1 => TTY HAS HARDWARE TABS ; 2 1 => GT40 HARDWARE EXISTS ; 3 1 => BATCH IS RUNNING ; 4 1 => VT05 IS TERMINAL ; 5 1 => 50 CYCLE CLOCK ; 6 1 => FPU HARDWARE ; 7 0 => NO F JOB IS RUNNING ; 1 => A F JOB IS NOW RUNNING ; 8 1 => USER LINKED TO GT40 SCROLLER ; 9 1 => USR MAY NOT BE SET TO SWAP ; 10 1 => BATCH IS RUNNING ; 11 1 => LSI11 PROCESSOR (I.E., NO PS OR LKCS) ;DV15 ; 15 1 => KW11L CLOCK EXISTS FBMON$ = 1 HWDSP$ = 4 BATCH$ = 10 CLK50$ = 40 HWFPU$ = 100 FJOB$ = 200 GTLNK$ = 400 USR$ = 1000 LSI11$ = 4000 ;DV15 KW11L$ = 100000 .IF EQ CL$)  `ee& dG F  `!  ae``````` `1`d`wt ? ? ,0 < EP$7 (, 3 v3 3 ~3 L37  ,E$7eC5$w x .H @@  #%  +C!CA Ջ e R l*A .  e$ "7 < 7?ILL CMD?鈇o& ee(  E e% 7?ER RD OVLY? A K E E ͥ- 㺇 e l B @ @ ؁  B^ eE͋=,e    : x , enEO e   $5 7 EBc7?ADDR?O e @ z %zO: ( 4   5$,( ""@5@ A ej  %@Ae Fuu| 7?FIL NOT FND?7?SV FIL I/O ER?w5 $ 2  8g e6E (7?OVR COR?  E $   :  <  @  ef D!%  R`W!&&   eR f .  & f& 懇? cef `% 7?SY I/O ER?  W ,,e (wvd@7$e   e7B?FILE?r ? & f,e $&EΔNIQ%Ό%@ 2EQU E`H#Hee&b,e 6e  %e& e7v?ILL DEV?'((U  EE ` ؁  RUREG E D BTSERNI<u~vK YM|.wbjT^%%W&&'''()O ER?  W ,,e (pewvD@7$   h7@?FILE? wTq~ ? & f,e $&EΔNIQ%Ό%@ 2EQU E`H#Hee2b,e .e   %e& e7n?ILL DEV?'((U  EE ` ؁  RUREG E D BTSERNI<u~vK YM|.we(zsdlV^..W..0 0044000 WORD ; 4000 = END OF DIRECTORY SEGMENT MARKER ; 2000 = PERMANENT FILE ; 1000 = EMPTY ENTRY ; 400 = TENTATIVE ENTRY ON CHANNEL ; 2-7 FILNAM.EXT IN RADIX 50 ; 10 LENGTH OF HOLE ALLOCATED ON DEVICE ; 12 DATA LENGTH (HIGHEST BLOCK USED) ; 12 IS ALSO USED IN ENTER TO HOLD ADDRESS WHICH ; FLAGS A TENTATIVE ENTRY, AND IDENTIFIES IT FOR CLOSE ; 14 CREATION DATE ; ; THESE WORDS MAY BE FOLLOWED BY EXTRA 'USER' WORDS ; ENDBLK = 4000 ;END OF BLOCK MARKER PERM = 2000 ;PERMANENT FILE EMPTY = 1000 ;EMPTY ENTRY TENT = 400 ;TENTATIVE FILE DOFSET = 4 ;DIRECTORY SEGMENT #1 STARTS AT BLOCK 6 E.NAME = 2 ;FILNAM.EXT STARTS AT WORD 2 E.LENG = 10 ;SIZE OF HOLE ALLOCATED E.USED = 12 ;HIGHEST BLOCK WRITTEN (NOW 0) E.CHAN = 12 ;WHILE TENTATIVE, HOLDS CHANNEL NUMBER E.JNUM = 13 ;FOR BF, HOLDS JOB NU Mf,!e4 Qa ew* e w$ ew  ? "  e< aAa@C @ @E $ HT_n|?M-ILL USR ?M-NO DEV ?M-DIR IO ERR ?M-BAD FETCH ?M-OVLY ERR ?M-DIR OVFLO ?M-ILL ADDR ?M-ILL CHAN ?M-ILL EMT ?M-TRAP TO 4 ?M-TRAP TO 10 ?M-FP TRAP : 6 $D DeC B`  ewTUS TPB = 177566 ;PUNCH BUFFER V.TKB = 60 ;KEYBOARD VECTOR V.TPS = 64 ;PRINTER VECTOR V.FPP = 244 ;FPP AND FIS VECTOR .IF EQ BF TTYIN = 82. ;82 CHARACTER INPUT RING TTYOUT = 32. ;32 CHARACTER OUTPUT RING .IFF TTYIN = 100. ;100 CHARACTER INPUT RING TTYOUT = 40. ;40 CHARACTER OUTPUT RING .ENDC ; ; DEFINITIONS OF LINE CLOCK STATUS WORDS: ; LKCS = 177546 ;CLOCK STATUS REGISTER LKVEC = 100 ;CLOCK VECTOR LOCATION ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; THE FOLLOWING MACRO AND MACRO CALLS GENERATE EQUATES ; FOR THE SIZE (IN BYTES) OF THE HANDLERS FOR EACH DEVICE ; IN THE SYSTEM  ~? bWW B abJFw? ? a@w 7Rw $!5@  e<NSSewN  U7 ͆ 7 7  w ~w wjw d4.7 v7 tw * 7e`w @%1@% @#eee%7`p 7 w   e# / wxEK]w d ؇f  w 0 E0w!z 5 1   $ZX w 6    < w  h  `5El $f w   $PPw w  w  pw  ? we`EW2El  7 PFaP=7 B*#7D 2a,`e# B#e`#w *ed%   . b$ `w#   7 "3 f7 Kaes S w b 5Sw I3W2Wl Ew C $ A#EE P &EΒE? >#:?2w *eD e& &Ne$e E & && e& ~ee ?  w &fmD$CeK   baba& Nw^ e 7@Ŋ` & *J E%=%< D  "% %  p"B  >'  7 e  O  $e d W&E77   `B7?DEV FUL?e " 6  0`*7?FIL NOT FND?5 W,W=͋=7?ILL CMD?7z?ILL DEV?5 & W/@` W!W:@ 8& U& Uef \* e w& e∩ W[ W]  @W: 0$W. eR& &$ >W*@ "  @:e e W a `  (  &N W-e E  C0Π a `  6 D@|X @BZD CeK   & Nwv e& TG C `w.IprtvbA<?30.f>zz 8rpqff`TM HS  @   p?xJ>Ew  D eEE eIL@N  7?ť&6  fe  amxagjbd`Vp0t QN D   &7 T $uFD*eaU6  ) 2@" _ *%@ *^%ZAw5@xZA^V%&f&   ac(2 "b&8$ **w w 7 5 : 6e PH-  &U$.5$ $͋ e q"R@  ͊ U wN E$ee)U%Me-r7 edF7 7 ^ee J&Z v$H $ ( Xe6@'( EM( > U%e 2(rh"U$7  7  "7 5z7 E$(7  *U$5$Awe>& bE[5@$ a zE ee `}~, , , ,    % W#Q u#R  5$  <4  7  t w f 3    .6& < &  x|7 v? @     D P7 ĥ  舗  5@fd u#eR LELELEEEEEA|0E]]$`rA0l|X$5@$% +_ * % D \!$bEeT% * " @O e.7  @ &>4 u# W%*L# E  ?\#  4% 4  .?0 $ ̗/ ? % &LE Ea5% (7 |5"5 E Eaex l 5 L E E 7  s!5s  ENEae E % φe`B`N ˋ  w  5E R !&5j $7 ^ LeH !   > j $7 7 R . " JĔ NĔ F&f&I e`  &e@^we3 D w7 I&e B& 7&  TT L4L4f x & f & T  w54B  e  L$  w E % * *  wߋ$ɀw *U  (P5$ `7 rBD E` `E@% e`7  U%dd ECI h@D  5 7{W# ͋b 5 MUJ>U7 <e4,}F$&v­7 H  bpw $ w e JB  $e: B  "5eF> @( e @EM( & U%e(  7 ?M-SYS ERR 鈀 rhUe dw  (7?M-SWAP ERRwP | (P & w 0ew & F$&D H· D <Ƈ8%7 V &"7 H7$, w ׭ wpE 75  7   7 7 w ` ( 7 Fw| EaB )1 ĕ^ $  Ldĥ    U C 7 7 "ew  WeDe,  Ce1%R ZHp5E   e  eH w.7?DAT? ””#e,e Y5 2t2.e" )$ & >Ĕ!9S͋5 eA ĒB `A `, p&  7 d<@&7 V<  0:7F?TIM?7  6 0 \7 6WJE n D7 >4HՐ נ  -    6 &  5 - w!LJ& 2֥  5 7 -!E%%%%% 7V ^7 V  7K 7=78 B(f,EA    w5@E PP J< 47a7a7aT7a7a7a7a7a7a7a`m, be&` ee wD1 w:1B*e@eAf . 6 5w`& w   $)& E%~I р t : w * e Hes5  Me    e"n U@f&e _*a @E EEGw:rBNP"XN]X RT-11FB V02C-02zz<_ e ` E Pc ˋ 7 ?B-I/O ERROR vߋtȋ xE  e  h@ `D fHT HTHTS K CLRLST: LCHAN ;LAST CHANNEL NUMBER OUCHAN ;OUTPUT CHANNEL NUMBER .IF NDF MBUILD ASCII ;(/A) FBIN ;(/B) IGNORE ;(/G) ALLDIR ;(/W) .ENDC CURRNT ;(/C) FILENO ;(/M) QUERY ;(/Q) SYSBAD ;(/Y) EMPTY ;(/E RELATED) NOINFO ;(/F RELATED) XMODE ;(/X) DIRSIZ ;(/N VALUE) ZXTRA ;(/Z VALUE) FBLOKS ;DIRECTORY COUNTS NFILS NBLOX DIRDES ;DIRECTORY LIST FILE DIRFLG ;DIRECTORY LISTING IN PROGRESS FLAG 0 ;END OF LIST .SBTTL SWITCH TABLE MODE= 200 ACTION= 0 SWTCHS: .IF NDF MBUILD SWITCH A ASCII MODE SWITCH B FBIN MODE SWITCH D DELETE ACTION SWITCH G IGNORE MODE SWITCH K BLKSCN ACTION SWITCH S COMPRS ACTION SWITCH T EXTEND ACTION SWITCH V VERSON ACTION SWITCH W ALLDIR MODE .ENDC SWITCH C CURRNT MODE SWITCH E FULDIR ACTION SWITCH F FASDIR ACTION SWITCH I COPY ACTION SWITCH L DIRECT ACTION SWITCH M NUMBER MODE FILENO SWITCH N NSWIT MODE DIRSIZ SWITCH O REBOOT ACTION SWITCH Q QUERY MODE SWITCH R RENAME ACTION SWITCH U BOOT ACTION SWITCH X XMODE MODE SWITCH Y SYSBAD MODE SWITCH Z ZEROD ACTION ZXTRA 0 .SBTTL HANDLER FETCH HANERR: ERROR FETCH: MOV #FILDES,R2 ;POINTER TO CSI OUTPUT MOV #FREE,R4 ;ADDRESS OF FREE CORE MOV #FILDES+36,R1 ;ADDRESS OF INPUT LIST .IF NDF MBUILD 1$: TST (R2) ;IS DEVICE NAME NULL? (/E, /L, ETC.) BEQ 2$ ;YES, DON'T FETCH A HANDLER .FETCH R4,R2 ;LOAD HANDLER IN FREE CORE BCS HANERR ;ILLEGAL DEVICE (PROBABLY) MOV R0,R4 ;SAVE UPDATED FREE CORE ADDRESS 2$: ADD #12,R2 ;BUMP LIST POINTER CMP R2,R1 ;ARE WE IN THE INPUT LIST ?? BLOS 1$ ;NO, INCREMENT WAS CORRECT TST -(R2) ;INPUT LIST ELEMENTS ARE 1 WORD SHORTER CMP R2,#FILDES+116 ;DONE WITH LIST ?? BLO 1$ ;NO, LOOP .ENDC MOV R4,INFILS ;SAVE START OF EXPANDED INPUT LIST MOV R4,R2 ;AND PUT IT INTO R2 ;NOTE: R1=#FILDES+36 .SBTTL INPUT EXPANDER EXPAND: ADD #COPY,R3 ;COPY IS THE DEFAULT OPERATION MOV R3,-(SP) ;ADDRESS OF CORRECT ROUTINE MOV #6,-(SP) ;CSI INPUT LIST COUNT EXPLUP: CLR R3 ;STAR SWITCH MOV R2,R4 ;SAVE START OF NEXT EXPANDED ENTRY MOV (R1)+,(R2)+ ;COPY DEVICE NAME FROM SHORT INP LIST BNE NOTNUL ;ENTRY WAS NOT NULL TST -(R2) ;NULL ENTRY, BACKUP EXPANDED LIST PTR ADD #6,R1 ;SKIP OVER THIS SHORT LIST ENTRY INFCNT: .CLOSE 0 ;CLOSE CHANNEL USED FOR DIR READS JSR PC,UNLOCK ;RELEASE USR AND RE-ENABLE CTRL/C INTERRUPTS DEC @SP ;ANY MORE TO EXPAND?? BNE EXPLUP ;YES MOV (SP)+,(R2)+ ;POP 0 TO ZERO END OF EXPANDED LIST MOV #FILDES,R4 ;POINTER TO OUTPUT LIST MOV (PC)+,R5 ;POINTER TO EXPANDED INPUT LIST INFILS: 0 ;NOTE: R2 POINTS TO FREE CORE JMP @(SP)+ ;JMP TO COMMAND HANDLER NOTNUL: CMP (R1),#R50STAR ;WAS FILE NAME * ?? BNE 1$ ;NO COMB R3 ;SET STAR NAME SWITCH 1$: MOV (R1)+,(R2)+ ;COPY THE NAME MOV (R1)+,(R2)+ ;TWO WORDS OF RAD 50 MOV (R1),(R2)+ ;COPY THE EXTENSION CMP (R1)+,#R50STAR ;IS THE EXTENSION * ?? BNE 2$ ;NO BIS #100000,R3 ;YES, SET STAR EXTENSION SWITCH 2$: TST R3 ;IS NAME OR EXT STARRED ?? BEQ INFCNT ;NO, NO EXPANSION MOV #DEVNAM,R5 ;POINTER TO NON DIR DEV NAM BLOCK MOV (R4),(R5) ;PUT IN THE DEVICE NAME MOV R4,R2 ;RESET PTR TO START OF EXPANDED ENTRY JSR PC,GETDIR ;GET THE FIRST BLOCK OF THE DIRECTORY EXPNDB: MOV R0,-(SP) ;SAVE NEXT BLOCK EXPNDL: BIT (R5),#DIREOB ;IS IT THE END OF BLOCK ?? BEQ NOEOB ;NO, CHECK FOR PERM MOV (SP)+,R0 ;IS THIS THE LAST DIR BLOCK ?? BEQ INFCNT ;YES, END OF EXPANSION JSR PC,RDDIR ;READ NEXT DIRECTORY $)  `ee& dG F  `!  ae``````` `1``wZ EP$7 6,3 2 3  .E$7 eC5$w n .H @@  #%  ,C!CA Ջ e  R l0A   e* $7 R 7?ILL CMD?鈇o& ee<  E e% 7?ER RD OVLY?,A K E E ͥ- 㺇 e l B @ @ ؁  Br eE͋=,e    N ` , 2 eEO e(   $5 7  EBc7?ADDR?$O e @ z %zO: ( < |  5$,( ""@25@ A e0 %@AeFuu 7?FIL NOT FND?7?SV FIL I/O ER?w5 $ 2  g ePE (7?OVR COR?  E $   B  <  @  ef D!%  R`W!&&   ef f .  & f& 懇? cef `% 7?SY I/O ER?  W ,,e (pewvD@7$   h7@?FILE? wTq~ ? & f,e $&EΔNIQ%Ό%@ 2EQU E`H#Hee2b,e .e   %e& e7n?ILL DEV?'((U  EE ` ؁  RUREG E D BTSERNI<u~vK YM|.we(zsdlV^..W..0 0044000 ONE .ENDC FNF: ERROR ;TSTNUM ENTERS THE /M SWITCH ARGUMENT FOR LOOKUP, ENTER, AND DELETE ;IT ALSO SETS UP THE VERSION 2 ARG LIST. TSTNUM: MOV R0,-(SP) ;SAVE POINTER TO FILE NAME MOV #FBLOCK,R0 ;POINT TO AREA MOV FILENO,@R0 ;INSET FILE COUNT (-0 IF /M NOT GIVEN) MOV @R0,-(R0) ;BOTH FBLOCK AND FLEN MOV (SP)+,-(R0) ;POINT TO FILE NAME CLR -(R0) ;CHANNEL 0,CODE 0 RTS PC .SBTTL RENAME RENAME: TST (R5) ;NULL INPUT LIST? BEQ FNF ;YES-REPORT ERROR 1$: TST (R5) ;ANY MORE FILES TO RENAME ?? BEQ STL1V ;NO, RETURN TO PIP MOV R5,R0 ;PT R0 TO FILE JSR PC,MTCA ;IF MT OR CT, BR ILLREN ;DISALLOW RENAME EVEN THO MONITR WILL, TOO CMP (R4),(R5) ;ARE DEVICES THE SAME ??? BNE ILLREN ;NO, PROBABLY AN ERROR JSR PC,OEXPND ;EXPAND NEXT OUTPUT FILE NAME MOV #OLNAME,R0 ;POINT TO OLD NAME MOV (R5)+,(R0)+ ;MOVE 4 WORDS OF OLD NAME INTO LIST MOV (R5)+,(R0)+ MOV (R5)+,(R0)+ MOV (R5)+,(R0)+ MOV #OLNAME,R0 ;RESTORE POINTER TO OLD NAME JSR PC,SYSCHK ;CHECK FOR PROTECTED FILES BEQ 1$ ;.SYS OR .BAD FILE .RENAME 0 ;DO THE RENAME .IF DF MBUILD JSR PC,FATERR ;CHECK TO SEE IF FATAL ERROR .ENDC BCC 1$ ;CONTINUE IF FILE FOUND BR FNF ;ELSE FILE NOT FOUND ERROR ILLREN: ERROR STL1V: JMP START ;BACK TO PIP .SBTTL REBOOT REBOOT: JMP REBOT ;CALL REBOOT OVERLAY .SBTTL COPY EOF = 20000 ;EOF BIT IN CSW HDW = 1 ;HARD ERR BIT IN CSW COPY: MOV R2,-(SP) ;SAVE START ADDRESS OF FREE CORE TST (R5) ;NULL INPUT LIST? BNE ONE$ ;NO JMP FNF ;YES-REPORT ERROR ONE$: TST (R5) ;ANY MORE INPUT FILES TO OPEN ?? BEQ TWO$ ;NOPE, ALL OPENED AND SAVED MOV R5,R0 ;GET DEVICE NAME PTR JSR PC,MTCA ;IF MAGTAPE OR CASSETTE, BR DOMC ;GO COPY FILE NAME JSR PC,LOOKUP ;ELSE, LOOKUP THIS FILE MOV R2,R0 ;PUT STATUS BLOCK IN FREE CORE ADD #12,R2 ;FIVE Mf,e Qa ew e w ew  ?  DOMC: MOV (R5)+,(R2)+ ;MOVE INPUT LIST TO CORE BLOCK MOV (R5)+,(R2)+ ;FOR MT AND CT INSTEAD OF STATUS BLOCK MOV (R5)+,(R2)+ MOV (R5)+,(R2)+ MOV #-1,(R2)+ ;SET LAST WORD NEG. TO INDICATE MT OR CA BR ONE$ ;THEN GET NEXT INPUT ELEMENT TWO$: CLR (R2)+ ;MARK END OF LIST FOR COMBINE COPY JSR PC,DFNBUF ;DEFINE BUFFER(S) ABOVE INPUT STATII MOV INFILS,R5 ;RESET POINTER TO INPUT LIST MCSTRT: MOV (SP),R2 ;RESET POINTER TO STATUS BLOCKS TST XMODE ;IS IT A MULTI-COPY ?? BNE ENTR15 ;YES, ENTER UP TO 15 AT A TIME CLR (R5) ;PREVENT JMP MCSTRT AFTER CLOSE OUT FILE MOV R4,R0 ;PREPARE TO ENTER OUTPUT FILE (ONLY 1) MOV OUCHAN,LCHAN ;SAVE # OF OUTPUT CHANNEL JSR PC,ENTER ;DO IT BNE DOCOMB ;OK, GO DO THE COMBINE COPY STLNK1: JMP START ;.SYS OR .BAD, BACK TO START ENTR15: MOV #15,OUCHAN ;ENTER UP TO 14 AT A TIME 6$: TST (R5) ;ANY INPUT FILES LEFT ?? BEQ 7$ ;NO, GO MOVE WHAT WE HAVE JSR PC,OEXPND ;GET NEXT OUTPUT F? JWW B abB>Dw? ? a@w 7w t!5@  erNSSew  U7 ͆ 7 7 w w ww z4.7 l7 jw * 7eVw @%1@% @#eee%7` l7 Nw   e# / wEK]w  ؇f  w 2JELw!t 5 41   $$ѝџnN w r    2 w  h  `5El zf w   $PPw w  w  w  ? wexEW2El  7 YTaPC7 K8#=D #L 2a,`e# ,#e`#w $!eJ%    b$ `w#    7 73 f7 "0/E ``mE5 E /Kaes S w b 5Sw VI3W2Wl Ew C $ A#EE P &EΒE? #?w eD e& &Ne$e lnE & && e& ZPee ? nz w ^&fmw )B m` E /Jŭp f el BBE/aw "Ba5lafw |CRC!  BC 5aW* Q!E(A W   TN`Be 7Em@5f3 w w Gw  0w P xe$PPPH (fEEew ~ EN  @EUw 5@eBB ` ? wmLe&l w  7 &w Dw  Be$B  wdQ$mw 2 "x  D@|X @B@ZD CeK   & Nwv e 7@ŊJ E%=%< D  "% %  p"Bj >'  7 2e * O  $e$ v W&E77  & `B7?DEV FUL?; 4 6  0`*7?FIL NOT FND?L W,W=͋=7?ILL CMD? 7?ILL DEV?0 & W/@` W!W:@ J& U& U ef Ev*  e z& e∠ W[ W]  @W: 0$W. eR& &$ ,W*@ "  @:e e W a `  (  &N W-e E  C0Π a `  6LY ONE FILE IS OPEN AT A TIME MOV (SP),R0 ;IF INPUT FILE IS MT OR CA AS ELL, TST -(R0) ;ONLY ONE FILE WILL BE OPEN AT A TIME BMI 1$ DEC OUCGO DOWN ONE CHNEL BPL MCLOOP ;IF MORE TO DO, TRY AN& TG C `w2Uprtv:D~V<?302$$CHEzz 8rpqff`TM HS  @   fM6]TBE0EBDDDDTED TO BY R0 MAGTAPE OR CASSETTE. IF SO, ;IT RETURNS TO LOCATION FOLLOWING CALL. IF NOT, IT RETURDDECATION +2. ;THUS MOV NAMADR,R0 ; JSR PC,MTCA ; BR  B> M:DA|0E]]$`rA0l|X$5@$% +_ * %& ,ff 5  *%"&  * C C 7| ?M-ILL USRNO DEVDIR IO ERRBAD FETCHOVLY ERRDIR OVFLOILL ADDRILL CHANILL EMTTRAP TO 4TRAP TO 10FP TRAPЋ D @ @eY= e7 w BaeC C ߐ*Uv  m?M-DIR UNSAFEH Ef&f&  D eEE e ?w J 6@N ^5,ť' aE w   fw   f"  aCm*e wZ  C(& eK# c w .m<c e:B " s yeBMs  C  CU=HnH `T 4 27 @ *6  " .  &%@%w  / %w ' e3BAe ( 5@$7 <@W" wf7@  e` n ae "  T P7 n7 t7 t7 5"7 @HB t(5 X <e!7^ w  BE w *U  (P5$ `7  5T  ac\ "~:0^ UA  8+" E  *7 @@   <7U  UU$ E$&v­7 H  bpw $ w e JB  $e: B  "5eF> @( e @EM( & U%e(  7 ?M-SYS ERRT鈀 rhUe dw  (7?M-SWAP ERRwP | (P & w 0ew & F$&D H· D <Ƈ8%7 V &"7 H7$, w ׭ wpE 75  7   7 7 w ` ( 7 Fw| EaB )1 ĕ^ $  Ldĥ    U C 7 7 "ew  WeD $d  ĥ$E5e27  ʥ'  2$4w ( 5 p  Fjv3 Uh U 7 8 ? 0 ) $@5w F?w  w `Ee0AeB5@ a zE Ì ` 75 W- w F\W"d5 q"d 8 -$ ,57 & @5 e% elfqw N 7 5M fe D q"ed  $w  0&@# w \:D:D>T } ~V^ U@%6%$% % % e "E%'* ,( w& D D ĥ ĥĥ ? w ` ׋`eCS6T w*I $ %m5%e-wE-Y7 n ee#(JLŀ 5 7    ?P./6 P  5h 5Z$ U eHEB  <π̊? ҁe L Ea<0Q$ 7ɕB7  -CeB7  5!5 EEal 5 w E E  LCeB7  s!5s Nf ew ( w !ENҀEa E % e`B`N  ˋ w Ce F5E^P aePPPE߀a55 N aef##  a^f&   E3  eae6 &     e& 0 new` @ 3 7 h7 f&  , e&fD 7 &f  DN &    PT L4Lew ,6U  IB(@-t   " $7 œ & *w N w E D EaEJ 7  7 fa- C BE 0U  @@%  vL "V%t  5 aE5Ue ^ 0L%w e6jHb` Hh$OB"> e w Fe8!e- -4  E  v   N %@  E `Cae:w г*w w EɃ @` lKED  tww df& %wzwWa? =-:& 7 aEU& V 5 fNe r @& 0]&LE N * # &&5@$ d"%ex"7?7 & Č7ae5Po ͋5@  ew w e@ExFw U & 8 7)NW!5  2 U%e* 5 5 u@D5 BE@Q$-Jd$$ ,e" 5@x  $d$$B w`e(DB *B# 5@4  TT  7w ͋&&EmUeU*$ [7w Ze / 5w`& w   $)& E%~I р t : w * e Hes5  Me    e"n U@f&e _*a @E @( & %  H & e &      w D?Ut ?IjUb^Ew!X  dwXwR VŌ 5 MfE ENT MOV ZXTRA,R3 ;GET NUMBER OF EXTRA WORDS (/Z:XXXX) ASL R3 ;MAKE IT THE EXTRA BYTE COUNT MOV #1,R0 ;SET UP DIRECTOrBD E` `E@% e`7  U%dd ECI h@D  5 7{W# ͋b 5 MUJ>U7 <e4,}X3,XTRABY ;SAVE IT MOV DEVINF+6,R1 ;GET THE TOTAL SIZE OF THE DEVICE SUB R5,R1 ;MINUS THE AMOUNT USED BY DIR JSR PC,MAKEMT ;CREATE THE EMPTY MOV #DIREOB,(R4)+ ;PUT IN THE END OF BLOCK MARKER JSR PC,DIRWR ;WRITE OUT THE DIRECTORY IN SEG 1 CLR R0 ;BLOCK # IS 0 .WRITW 1,#BTMSGP,#400 ;WRITE DUMMY BOOTSTRAP ON BLK 0 .IF NDF MBUILD BCC 2$ ;BRANCH IF NO ERROR .IFF BCC STLNK2 ;BACK TO CSI .ENDC 3$: JMP OUTER ;PRINT ?OUT ER? MESSAGE .IF NDF MBUILD 2$: CMPB DEVINF,#DXe,  Ce1%R ZHp5E   e  eH w7?DAT? ^””#e,e ]5 2|2>A(:e& '$ & Ĕ!7S͋3 eA ĒB `A `, e A p`7 l<@&7 ^<  0:7*?TIM?7 ?NO CLOCK? % ee/ e0wdw  A @  -JAN-FEB-MAR-APR-MAY-JUN-JUL-AUG-SEP-OCT-NOV-DEC-:<:<.<E e6(,eĊ ͋#! C͋ͥ ͥ,u W- !k$,1!2c  e V f/RD`? # e(e & 3 & &( &   ef  f %7\?PARAMS?Aw^OOTS START WITH NOe, $2 ͋ eC   we "    t  ͋ex 0,0 .ASCII /?B-NO BOOT ON w  www4e t 67 0 ͥ= BͥF; 7 !. 6&7,e  , W  w wjN`!,,, h  T  ""eX ,Q$W 8fm^ aЁ ? @͋w "J -  # 3c  - D @&c%Lbtt&b%0c0l%P4H@ .`e zEf,DF5S"&: " W-\-7 *D" ! .Cm* ', Q$W 8', $)  `6`? ͋ww 5 FE 6``7?NO FG?7?F ACTIVE?Fe~pEg,e&fˇ& ㈄ e !ꈇ,AFU@E@7X?NO FG?,F500 FE <``? ev jw,Em/ F2 4$ ;NO ERROR JMP BADDIR ;REPORT READ ERROR 4$: CMP (R5),#240 ;WAS IT BOOT BL7 R7 8>͋%ͥ/@P:ͥ!  %N%SwD ? w7 7 x Ce*f"ma 7Fd%Tqw<`  6 A9 eeaVaAea7 F7@a# #Km ec `cc ` cc `m# (e@`QQ`B`IeQ ee F>  e e g,RRRRRe eH>@DedFee(e&* &7  @` Z J U % | "7?REL FIL I/O ERR? mJ H`H ,U86F? U@e" wZLOADED AT IL77@e ߋ*! %   - # 3c  - D @&c%TdL!)t&b%0e )z%P4H@ <`,e5D5 e n%_%^[wh  e5 (͋ͥ/@:ͥ! |T%L%)&@ef 6e 6o t> wD < 2 !E  11& d`e ?x 2-* # 3c  - D @&c%TdL!)t&b%0e )%P4H@ R`,77e0E0 7 : j"Je"9zzS? * & &Je@@ONU X B b$C7$"A . $ 7 2=E@ L@! B` 7 ,- & &w:ww,E]:e5rPPPPP@P@Yzd *}%Gwd%'@Q%%%/d@%,@~-@%%_(@1\d41@P e鈇;eD&  W  %W E REARRANGING DIRECTORY CMP 44$&,^ 0M? H &  % w!ͥ  p 7 å å~ y7ox7 Z  0å  LW<E b 87 26Ր -(    6 &  5 - w!L<& 2֥  5 7 -!Eދ %%%%% 7X ^7 X  7M 7?7: 4 *f,EA    w5@PP <. 47a7a7ad7a7a7a7a7a7a7apm, Pee  wh1 w^1B*e@eAD   6 ENT, UPDATE LINKAGE JSR PC,RDDIR ; TO NEXT SEGMENT AND WRITE IT MOV USRBUF,R1 ; BACK OUT. (SKIP LAST SEGMENT THOUGH) TST 2(R1) BEQ 9$ MOV R3,2(R1) INC 2(R1) MOV R3,R0 JSR PC,DIRWR 9$: COMB TBUFF-1(R3) ;INDICATE THIS SEGMENT IS ALREADY IN THE BR 5$ ;  A A?w4[>zCFANJBA RT-11SJ V02C-02y6DSE  c ˋ 7 ?B-I/O ERROR vߋtȋ xE  e  @n@ f`T HTHTS K,ee 6 e @B5 Sr;zaX'5lem7 ?B-NO MONITR.SYS 7 ?B-NOT ENOUGH CORE e&^e  ee D"tCeetHa Va a,] t?a !aW,pq`p %e08?ae?w P $ @5V@l@f ,04@>>>C8E:E>E@EBEFEHE>r?(K>@&A ILGER: ERROR .SBTTL MCDIR ;MCDIR READS AN MT OR CT DIRECTORY. ;WHEN ENTERED THROUGH MCDIR IT REWINDS THE VOLUME READS ITS 1ST LABEL ;AND RETURNS AN ENTRY IN USRBUF SIMILAR TO THOSE IN THE DIRECTORY OF A FILE ;STRUCTURED DEVICE. ON SUBSEQUENT CALLS TO MCDIRR IT READS AND RETURNS THE NEXT LABEL ;IT ENCOUNTERS. WHEN IT REACHES LEOT OR PEOT IT RETURNS AN END-OF- ;DIRECTORY ENTRY. MCDIR: MOV #MCDIRR-RDDIR/2+377,RDDIR ;NEXT RDDIR BR'S DOWN CLR 2(R5) ;NON-FILE LOOKUP TO OPEN CHANNEL .LOOKUP 0,R5 .IF DF MBUILD JSR PC,FATERR ;CHECK TO SEE IF FATAL ERROR .ENDC BCS BADDIR JSR R5,SPFUN ;REWIND BEFORE DIRECTORY .BYTE 377,-5 JSR PC,SKPVL1 ;SKIP VOL1 IF MT MCDIRR: MOV R1,-(SP) ;SAVE R1 MOV R4,-(SP) ;AND R4 MOV USRBUF,R5 ;POINT R5 TO INPUT BUFFER FOR READS MOV R5,R4 ;USE 2ND HALF OF BUFFER FOR DIRECTORY ADD #1000,R4 .IF NDF MBUILD CMPB DEVINF,#CTIDEN ;IF CT, BEQ CTDIR ;GO DO A CT DIRECTORY .ENDC RDHDR1: CLR R0 ;BLOCK # IS 0 .READW 0,R5,#400 ;READ THE NEXT BLOCK (HDR1) BDIR1: BCS REWDIR CMP (R5),#HDR1 ;IS THIS A HDR1? BNE DUNMCD ;IF NOT,WE MUST HAVE LEOT CMP (R5)+,(R5)+ ;POINT R5 TO NAME JSR PC,ASCR50 ;GET NAME FROM ASCII TO RAD50 DUNNAM: JSR R5,SPFUN ;SPACE TO EOF1 LABEL .BYTE 377,-2 ;(FORWSP CODE) BCS REWDIR JSR R5,SPFUN .BYTE 377,-2 ;(FORWSP CODE) BCS REWDIR MOV USRBUF,R5 ;POINT TO INPUT BUFFER AGAIN CLR R0 ;BLOCK # IS 0 .READW 0,R5,#400 ;READ THE EOF1 LABEL BCS REWDIR CMP (R5),#EOF1 ;IF EOF1 NOT READ, BNE ENDSEG ;ASSUME BTE CAUSED LACK OF EOF1 AND ;IGNORE ITS CONTENTS OKEOF: ADD #74,R5 ;POINT R5 TO 1ST DIGIT OF BLOCK COUNT JSR PC,ASCOCT ;CHANGE 6 DIGITS OF ASCII TO OCTAL IN (R4) MOV (R4)+,(R4)+ ;COPY COUNT INTO NEXT WORD, TOO SUB #11,R5 ;POINT R5 TO FIRST YEAR DIGIT JSR PC,ASCOCT ;GET BIN FOR YEAR IN (R4) SUB #110,(R4) ;YEAR-72(10) MOV (R4),(PC)+ ;SAVE YEAR YEAR: 0 MOV #28.,FEB ;INIT MONTH TABLE FOR NORMAL YEAR ROR (R4) ROR (R4) ;IF BOTH LOW ORDER BITS=0,THEN LEAP YEAR BCS 1$ ;BRANCH IF NOT LEAP BMI 1$ ;BRANCH IF NOT LEAP INC FEB ;FEBRUARY HAS 29 DAYS THIS YEAR 1$: CMPB (R5)+,(R5)+ ;BUMP R5 BY 2 CLRB (R5) ;MARK END OF DATE FIELD ADD #4,R5 ;POINT R5 TO FIRST DIGIT OF DAY JSR PC,ASCOCT ;BINARY FOR DAYS IN @R4 MOV #MONTAB,R1 ;R1 POINTS TO MONTH TABLE 2$: SUB (R1)+,(R4) ;SUB THIS MONTHS DAYS FROM TOTAL BGT 2$ ;IF MORE LEFT,CONTINUE ADD -(R1),(R4) ;ON OVERFLOW,BACK UP ONE MO SUB #MONTAB,R1 ;(MONTH*2)-2 IN R1 CMPB (R1)+,(R1)+ ;ADD 2 TO MAKE MONTH*2 ASL R1 ASL R1 ASL R1 ;SLIDE MO OVER ASL R1 ADD R1,(R4) ;COMBINE MO AND DAY ASL (R4) ASL (R4) ASL (R4) ;SLIDE MO AND DAY OVER ASL (R4) ASL (R4) ADD YEAR,(R4)+ ;COMBINE YEAR;RT-11 DATE NOW @R4 JSR R5,SPFUN ;SPACE TO NEXT HDR1 .BYTE 377,-2 ;(FORWSP CODE) BCSDIR: BCS REWDIR BR ENDSEG ;ELSE, END THIS SEGMENT DUNMCD: JSR R5,SPFUN ;ON DONE,REWIND TO BEGINNING OF TAPE .BYTE 377,-5 ;(REWIND CODE) JSR PC,SKPVL1 ;IF MT,FSPACE OVER VOL1 ENDIR: CLR R0 ;WHEN DONE, SET R0 TO NO MORE DIRECTORY ENDSEG: MOV #DIREOB,(R4)+ ;SET END OF SEGMENT MARKER MOV USRBUF,R5 ;POINT R5 TO DIRECTORY ADD #1000,R5 CLR XTRABY ;SAY NO EXTRA WORDS MOV (SP)+,R4 ;RESTORE R4 MOV (SP)+,R1 ;RESTORE R1 RTS PC ;AND RETURN REWDIR: JSR R5,SPFUN ;ON ERROR, REWIND TO GET KNOWN POSITION .BYTE 377,-5 ;(REWIND CODE) JSR PC,SKPVL1 ;IF MT,FSPACE OVER VOL1 JMP BADDIR ;AND TAKE ERROR EXIT .IF NDF MBUILD ;CTDIR CONVERT THE LABELS ON A CASSETTE TO DIRECTORY FORMAT CTDIR: CLR R0 ;BLOCK # TO 0 .READW 0,R5,#20 ;READ THE FIRST LABEL INTO BUFFER BCS REWDIR TSTB (R5) ;IF NULL NAME, BEQ DUNMCD ;SENTINAL FILE, DONE TSTB 14(R5) ;IS SEQUENCE NUMBER 0? BEQ 3$ ;YES-CONTINUE TST DIRFLG ;NO-IS A DIRECTORY LISTING IN PROGRESS? BNE 3$ ;YES-CONTINUE JSR R5,SPFUN ;OTHERWISE,IGNORE THIS FILE .BYTE 377,-3 ;SPACE TO NEXT FILE BCS DUNMCD ;ASSUME ERROR IS EOT BR CTDIR ;TRY NEXT FILE 3$: JSR PC,ASCR50 ;ELSE, GET NAME INTO DIRECTORY ADD #3,R5 ;POINT TO SEQ NO BIC #177400,(R5) ;STRIP LEVEL IDENTIFIER MOV (R5)+,(R4)+ ;INSERT SEQ NO. BYTE AS BLOCK COUNT CLR (R4)+ ;0 DATA LENGTH CMPB (R5),#60 ;IS THERE A DATE THERE BGE 1$ ;YES CLR (R4) ;NO:ZERO DATE WORD IN DIRECT BR 2$ 1$: ADD #5,R5 ;POINT R5 TO NEXT TO LAST BYTE OF DATE JSR PC,ASCOCT ;CONVERT 5 DIGITS OF DATE TO BINARY EQUIVALENT 2$: MOV (R4),R1 ;SAVE THIS VALUE IN R1 BEQ NULDAT ;NO DATE HERE CLR (R4) ;CLEAR DATE MOV USRBUF,R5 MOVB 23(R5),(R4) ;PUT IN LAST DIGIT OF DATE FROM LABEL SUB #60,(R4) ;LESS ITS ASCII PART MOV #TENTH,R5 ;PT. R5 TO TABLE OF DECIMAL VALUES MOV #OCTH,R0 ;PT. R0 TO TABLE OF OCTAL VALUES ;THE THREE VALUES IN THE DECIMAL TABLE CORRESPOND TO THE 3 PLACES IN THE ;ORIGINAL DECIMAL DATE WHERE MONTH, DAY, AND YEAR BEGIN. ;THE THREE VALUES IN THE OCTAL TABLE PT. TO THE BITS WHERE ;THE DAY, MONTH, AND YEAR START IN THE RT11 FORMATTED DATE. SUBDAY: SUB (R5),R1 ;SUBTRACT CURRENT TEN VALUE FROM DEC. DATE BLT DUNDAY ;IF DATE GOES <0, THIS PART OF DATE DONE ADD (R0),(R4) ;ELSE, ADD CURRENT OCTAL TO RT11 DATE BR SUBDAY ;AND GO SUBTRACT AGAIN DUNDAY: ADD (R5),R1 ;WHEN VALUE GOES <0, ADD BACK THE LAST SUB CMP -(R5),-(R5) ;THEN PT R5 TO NEXT TEN VALUE (THIS ONE/1000) TST -(R0) ;AND R0 TO NEXT OCTAL BGT SUBDAY ;IF NOT END OF OCTAL LIST (A 0), DO NEXT PART SUB #110,(R4) ;RT11 USES DATE-110 NULDAT: TST (R4)+ ;POP R4 TO NEXT ENTYR JSR R5,SPFUN ;SPACE TO NEXT FILE .BYTE 377,-3 ;(NEXTFILE CODE) BCS DUNMCD ;ON ERR ASSUME PHYSICAL EOT BR ENDSEG ;ELSE, END THIS SEGMENT .ENDC ;SPFUN EXECUTES THE SPECIAL FUNCTION WHOSE CODE FOLLOWS THE SUBROUTINE ;CALL. IT DOES SO BY SETTING UP THE LIST AND EXECUTING EMT 375. ;SPFUN SETS THE WCOUNT TO 0,SPFUN1 SETS IT TO -1 SPFUN1: MOV #1,-(SP) ;WC TO 1 BR SPFUN2 SPFUN: CLR -(SP) ;WC TO 0 SPFUN2: MOV #LIST,R0 ;PT R0 TO LIST MOV #32*400+0,(R0) ;LOAD SPECIAL FUNC. CODE, CHANNEL 17 MOV (R5)+,10(R0) ;GET CODE INTO 5TH WORD MOV (SP)+,6(R0) ;SET UP WC MOV R0,-(SP) ;SAVE R0 (IT GETS ZEROED) EMT 375 ;THEN DO IT MOV (SP)+,R0 ;GET R0 BACK RTS R5 ;AND GO BACK ;ASCR50 DETERMINES THE TYPE OF ENTRY, NULL OR GOOD, BY THE FIRST LETTER ;OF THE FILE NAME POINTED TO BY R5 AND INSERTS THIS INFORMATION AS THE ;STATUS OF THIS DIRECTORY ENTRY IN THE SLOT POINTED TO BY R4 ;THEN IT CONVERTS THE ASCII STRING POINTED TO BY R5 TO 3 RAD50 WORDS ;IN THE SPACE POINTED TO BY R4. ;### ASCR50 WILL IGNORE A '.' (DOT) IN COLUMN 7 OF THE ASCII FILENAME ;AND EXTENSION STRING, SINCE THE MT HANDLER PUTS ONE THERE FOR EASE ;OF TRANSFERABILITY TO RSX ASCR50 WILL ALSO MAKE FILENAMES ;LIKE 'ABC.DAT' ON MAGTAPE (OR CASSETTE) LOOK LIKE PROPER RT ;FILENAMES ON THE DIR LISTING. B.C. ;### ASCR50: MOV #DIREMP,R0 ;SET EMPTY IF NON-NULL NAME CMPB (R5),#RUBOUT ;DELETED FILES START WITH RUBOUT BEQ NULNAM CMPB (R5),#ASTRSK ;DELETED FILES ALSO START WITH * BEQ NULNAM ASL R0 ;TYPE 4 FOR GOOD NAME NULNAM: MOV R0,(R4)+ ;INSERT TYPE AS STATUS OF THIS ENTRY MOV #9.,(PC)+ ;COUNT 9 CHARACTERS CTR: .WORD 0 NXTCAR: MOVB (R5)+,R0 ;$)  `ee& dG F  `!  ae``````` `1`d`wt ? ? ,0 < EP$7 (, 3 v3 3 ~3 L37  ,E$7eC5$w x .H @@  #%  +C!CA Ջ e R l*A .  e$ "7 < 7?ILL CMD?鈇o& ee(  E e% 7?ER RD OVLY?CA K E E ͥ- 㺇 e l B @ @ ؁  B^ eE͋=,e    : x , enEO e   $5 7 EBc7?ADDR?RO e @ z %zO: ( 4   5$,( ""@5@ A ej  %@Ae Fuu| 7?FIL NOT FND?7?SV FIL I/O ER?w5 $ 2  8g e6E (7?OVR COR?  E $   :  <  @  ef D!%  R`W!&&   eR f .  & f& 懇? cef `% 7?SY I/O ER?  W ,,e (wvd@7$e   e7B?FILE?;r ? & f,e $&EΔNIQ%Ό%@ 2EQU E`H#Hee&b,e 6e  %e& e7v?ILL DEV?'((U  EE ` ؁  RUREG E D BTSERNI<u~vK YM|.wbjT^%%W&&'''()GHER DIGIT ;LIST FOR V2 EMT'S LIST: .WORD 0 ;CODE/CHANNEL FFILE: .WORD 0 ;FILE NAME OR SPECIAL FUNCTION BLOCK FLEN: .WORD 0 ;LENGTH FOR ENTER, BLOCK FOR DELETE AND LOOKUP, BUFFER FOR SPECIAL FUNCTION FBLOCK: .WORD 0 ;BLOCK FOR ENTER, WC FOR SPECIAL FUNCTION FWC: .WORD 0 ;FUNCTION CODE FOR SPECIAL FUNCTION FCONT: .WORD 0 ;CONTINUATION ADDR.(NOT USED) .WORD 0 ;USED BY SPFUNC CALL ;THE FOLLOWING TABLE CONTAINS OCTAL EQUIVALENTS OF DECIMAL POWERS OF ;TEN. .WORD 1 ;KLUDGEY WORD FOR DATE CONVERSION TENS: .WORD 1 ;1. .WORD 12 ;10. .WORD 144 ;100. TENTH: .WORD 1750 ;1000. .WORD 23420 ;10000. .WORD 0 ;100000. (TOO BIG FOR 16 BITS) ;THE TABLE BELOW POINTS TO THE BITS IN THE RT11 FORMAT DATE WHERE ;MONTH, YEAR, AND DAY BEGIN. .WORD 12 ;POINTER TO YEAR PLACE*10 .WORD 2000 ;POINTER TO MONTH PLACE OCTH: .WORD 40 ;POINTER TO DAY PLACE ;THE FOLLOWING MONTH TAVLE IS USED TO CONVERT JULIAN MAGTAPE DATES ;TO RT-11 FORMAT MONTAB: 31. ;JAN FEB: 28. ;FEB 31. ;MAR 30. ;APR 31. ;MAY 30. ;JUN 31. ;JUL 31. ;AUG 30. ;SEP 31. ;OCT 30. ;NOV 31. ;DEC .SBTTL OPNDIR ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; OPNDIR WILL OPEN THE DEVICE SPECIFIED BY THE STRING ; POINTED TO BY R5 ON CHANNEL 17 AND SET UP Mf,!e4 Qa ew* e w$ ew  ? "  e< aAa@C @ @E $ HT_n|?M-ILL USR ?M-NO DEV ?M-DIR IO ERR ?M-BAD FETCH ?M-OVLY ERR ?M-DIR OVFLO ?M-ILL ADDR ?M-ILL CHAN ?M-ILL EMT ?M-TRAP TO 4 ?M-TRAP TO 10 ?M-FP TRAP : 6 $D DeC B`  ewF,R5 ;FIND OUT WHAT KIND OF DEVICE TST DEVINF ;WELL, IS IT FILE STRUCTURED? SEC ;SET C FOR BRANCH VECTOR BPL BADJMP ;NOT A DIRECTORY DEVICE .SAVEST 16,#SSB ;SAVE THE STATUS OF THE DEVICE MOV #SSB,R0 ;RESTORE THAT POINTER (CALLER EXPECTS IT!) MOV 10(R0),-(SP) ;GET INDEX AND POINTER FOR CHKEY MOVB (R0),(SP) BIC #301,(SP) CMP (SP),@CHKEY ;IS IT THE SAME AS CURRENTLY ?? BEQ 1$ ;YES, MAYBE NO READ NEEDED CLR @BLKEY ;NO, CAN'T AVOID A READ 1$: MOV (SP)+,@(PC)+ ;PUT IN NEW CHANNEL KEY CHKEY: 0 ;POINTER TO RMON+206 RTS PC BADJMP: JMP BADDIR ;ERROR VECTOR .SBTTL WRDIR ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ~? bWW B abJFw? ? a@w 7Rw $!5@  e<NSSewN  U7 ͆ 7 7  w ~w wjw d4.7 v7 tw * 7e`w @%1@% @#eee%7`p 7 w   e# / wxEK]w d ؇f  w 0 E0w!z 5 1   $ZX w 6    < w  h  `5El $f w   $PPw w  w  pw  ? we`EW2El  7 PFaP=7 B*#7D 2a,`e# B#e`#w *ed%   . b$ `w#   7 "3 f7 Kaes S w b 5Sw I3W2Wl Ew C $ A#EE P &EΒE? >#:?2w *eD e& &Ne$e E & && e& ~ee ?  w &fmD$CeK   baba& Nw^ e 7@Ŋ` & *J E%=%< D  "% %  p"B  >'  7 e  O  $e d W&E77   `B7?DEV FUL?B " 6  0`*7?FIL NOT FND?R W,W=͋=7?ILL CMD?E7z?ILL DEV? & W/@` W!W:@ 8& U& Uef \* e w& e∩ W[ W]  @W: 0$W. eR& &$ >W*@ "  @:e e W a `  (  &N W-e E  C0Π a `  6IN R0 IN DECIMAL VIA DIRLST, ; WITH A FIELD WIDTH OF 2. R10OVT WILL USE A WIDTH OF 4. BOTH ROUTINES USE CONV. ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;& TG C `w.IprtvbA<?30.f>zz 8rpqff`TM HS  @   p?xJ>Ew  D eEE eIL@N  7?ť&6  fe  amxagjbd`Vp0t QN D   &7 T $uFD*eaU6  ) 2@" _ *%@ *^%ZAw5@xZA^V%&f&   ac(2 "b&8$ **w w 7 5 : 6e PH-  &U$.5$ $͋ e q"R@  ͊ U wN E$ee)U%Me-r7 edF7 7 ^ee J&Z v$H $ ( Xe6@'( EM( > U%e 2(rh"U$7  7  "7 5z7 E$(7  *U$5$Awe>& bE[5@$ a zE ee `}~, , , ,    % W#Q u#R  5$  <4  7  t w f 3    .6& < &  x|7 v? @     D P7 ĥ  舗  5@fd u#eR LELELEEEEE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; YESCHK: .TTYIN ;READ CHARACTER FROM TT: MOV R0,-(SP D \!$bEeT% * " @O e.7  @ &>4 u# W%*L# E  ?\#  4% 4  .?0 $ ̗/ ? % &LE Ea5% (7 |5"5 E Eaex l 5 L E E 7  s!5s  ENEae E % φe`B`N ˋ  w  5E R !&5j $7 ^ LeH !   > j $7 7 R . " JĔ NĔ F&f&I e`  &e@^we3 D w7 I&e B& 7&  TT L4L4f x & f & T  w54B  e  L$  w E % * *  wߋ$ɀVALID BEQ DIRRTS ;DON'T PRINT, JUST RETURN 1$: MOV R3,-(SP) .7|ddC E d @ 0 Ue,}07*Eŋ Lat UedC8 20ffE T FOV 2(SP),R0 ;GET DAY JSR PC,R10OUT ;OUTPUT 2 DIGITS DECIMAL MOV (SP)+,R3 ;GET MONTH ASL R3 ;TIMES FOUR ASL R3 ADD #MONTHS-4,R3 ;POINTER TO MONTH TABLE MOV #5,(SP) ;OUTPUT MONTH (-XXX-) 2$: MOVB (R3)+,R0 ;GET NEXT CHAR OF MONTH JSR PC,DIRLST ;PRINT IT DEC (SP) ;MORE ?? BNE 2$ ;YES TST (SP)+ ;PURGE COUNTER WORD MOV (SP)+,R0 ;GET YEAR ADD #72.,R0 ;ADD 72 FOR BASE YEAR OF 1973 BR R10OUT ;OUTPUT DECIMAL, R10OUT RETURNS .NLIST BEX MONTHS: .ASCII "-JAN-FEB-MAR-APR-MAY-JUN-JUL-AUG-SEP-OCT-NOV-DEC-" .LIST BEX .EVEN .SBTTL DIRLST ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; DIRLST WILL OUTPUT A CHARACTER TO THE DIRECTORY LISTING ; FILE IF THE SWITCe,  Ce1%R ZHp5E   e  eH w.7?DAT? ””#e,e Y5 2t2.e" )$ & >Ĕ!9S͋5 eA ĒB `A `, p&  7 d<@&7 V<  0:7F?TIM?7  6 0 \7 6WJE n D7 >4HՐ נ  -    6 &  5 - w!LJ& 2֥  5 7 -!E%%%%% 7V ^7 V  7K 7=78 B(f,EA    w5@E PP J< 47a7a7aT7a7a7a7a7a7a7a`m, be&` ee wD1 w:1B*e@eAf . 6  DECLARATIONS OLNAME: .WORD 0,0,0,0 ;OLD NAME SPACE FOR RENAME NEWNAM: .WORD 0,0,0,0,0 ;NEW NAME SPACE FOR RENAME DEVNAM: .WORD 0,0 ;USED FOR NON FILE STRUCTURED OPEN DEFEXT: .WORD 0,0,0,0 ;DEFAULT EXTENSIONS (ALL BLANK) DEVINF: .BL EEGw4rBNP"XN`]X RT-11FB V02C-02<_6DSE  c ˋ 7 ?B-I/O ERROR vߋtȋ xE  e  @n@ f`T HTHTS K .IF NDF MBUILD .SBTTL VERSION VERSON: .PRINT #VMESAG ;TELL HIM OUR VERSION NUMBER BR STLNK3 ;BACK TO PIP VMESAG: .ASCIZ "PIP V04-05 " .ENDC .EVEN .SBTTL DFNBUF (DEFINE BUFFER(S)) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; DFNBUF IS ENTERED WITH R2 POINTING TO THE START OF THE ; AVAILABLE BUFFER SPACE. BUFFER ALLOCATION IS DONE ; DEPENDING ON THE AMOUNT OF AVAILABLE CORE AND ON THE ; ASCII SWITCH. INBUF, OUBUF, OUBUFE, AND BUFSIZ ARE SET ; AND CHECKS ARE MADE FOR INSUFFICIENT BUFFER SPACE. ; REGISTER 2 IS LEFT POINTING AT THE START OF THE OUTPUT ; BUFFER. R0 IS USED AS A TEMPORARY. ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DFNBUF: MOV USRBUF,R0 ;POINTER TO USR DIRECTORY BUFFER MOV Mf,e Qa ew e w ew  ? FFERS BCS COROVR ;NO ROOM FOR BUFFER(S) BIC #777,R0 ;ROUND TO BLOCKS .IF NDF MBUILD MOV ASCII,-(SP) ;IF IT IS NEITHER ASCII BIS FBIN,(SP)+ ; NOR FORMATTED BINARY BEQ 1$ ; THEN WE NEED BUT ONE BUFFER BIC #1000,R0 ;SINCE WERE SPLITTING,NEED EVEN # OF BLOCKS ROR R0 ;HALVE THE BUFFER SIZE (/A USES 2) ADD R0,R2 ;GET START ADDR OF OUTPUT BUFFER .ENDC 1$: MOV R2,OUBUF ;SAVE START ADDRESS OF OUTPUT BUFFER MOV R2,(PC)+ ;GET ENDING ADDRESS OF OUTPUT BUFFER OUBUFE: 0 ADD R0,OUBUFE ROR R0 ;GET SIZE OF BUFFER(S) IN WORDS MOV R0,BUFSIZ ;SAVE IT BNE RTSPC ;RETURN OK IF BUFFERS NON-ZERO COROVR: ERROR ;NO ROOM IN CORE .SBTTL OEXPND (EXPAND OUTPUT LIST) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; OEXPND EXAMINES THE CURRENT OUTPUT FILE ENTRY FOR A POSSIBLE ; WILD CARD (*) CHARACTER IN EITHER THE FILE NAME OR EXTENSION. ; IF SUCH EXISTS, THE CORRESPONDING PART OF T? JWW B abB>Rw? ? a@w 7w t!5@  erNSSew  U7 ͆ 7 7 w w ww z4.7 l7 jw * 7eVw @%1@% @#eee%7` l7 Nw   e# / wEK]w  ؇f  w 2JELw!t 5 41   $$ѝџnN w r    2 w  h  `5El zf w   $PPw w  w  w  ? wexEW2El  7 YTaPC7 K8#=D #L 2a,`e# ,#e`#w $!eJ%    b$ `w#    7 73 f7 "0/E ``mE5 E /Kaes S w b 5Sw VI3W2Wl Ew C $ A#EE P &EΒE? #?w eD e& &Ne$e lnE & && e& ZPee ? nz w ^&fmw )B m` E /Jŭp f el BBE/aw "Ba5lafw |CRC!  BC 5aW* Q!E(A W   TN`Be 7Em@5f3 w w Gw  0w P xe$PPPH (fEEew ~ EN  @EUw 5@eBB ` ? wmLe&l w  7 &w Dw  Be$B  wdQ$mw 2 "x  D@|X @B@ZD CeK   & Nwv e 7@ŊJ E%=%< D  "% %  p"Bj >'  7 2e * O  $e$ v W&E77  & `B7?DEV FUL?T 4 6  0`*7?FIL NOT FND?S W,W=͋=7?ILL CMD?R7?ILL DEV?T & W/@` W!W:@ J& U& U ef Ev*  e z& e∠ W[ W]  @W: 0$W. eR& &$ ,W*@ "  @:e e W a `  (  &N W-e E  C0Π a `  6 .IF DF MBUILD JSR PC,FATERR ;CHECK TO SEE IF FATAL ERROR .ENDC BCS ;ENTER BAD-REPORT ERROR JMP CLZRTS ;ENTER OK,RETURN AFTER CLZ 3$: EREV FUL> BADOU ERROR .SBTTL LOOKUP ;;;;;& TG C `w2Uprtv:D~V<?302$$CHEzz 8rpqff`TM HS  @   fM6]TBE0EBDDDDDO V2 LOOKUP .IF DF MBUILD JSR PC,FATERR ;CHECK TO SEE IF FATAL ERROR .ENDC BCC RTS7 ;LOOKUDDETURN ADD (PC)+,(PC) ;ON ERROR CLOSE LAST OUTPUT CHANNE B> :DA|0E]]$`rA0l|X$5@$% +_ * %& ,ff 5  *%"&  * C C 7| ?M-ILL USRNO DEVDIR IO ERRBAD FETCHOVLY ERRDIR OVFLOILL ADDRILL CHANILL EMTTRAP TO 4TRAP TO 10FP TRAPЋ D @ @eY= e7 w BaeC C ߐ*Uv  m?M-DIR UNSAFEH Ef&f&  D eEE e ?w J 6@N ^5,ť' aE w   fw   f"  aCm*e wZ  C(& eK# c w .m<c e:B " s yeBMs  C  CU=HnH `T 4 27 @ *6  " .  &%@%w  / %w ' e3BAe ( 5@$7 <@W" wf7@  e` n ae "  T P7 n7 t7 t7 5"7 @HB t(5 X <e!7^ w  BE w *U  (P5$ `7  5T  ac\ "~:0^ UA  8+" E  *7 @@   <7U  UU$ E$&v­7 H  bpw $ w e JB  $e: B  "5eF> @( e @EM( & U%e(  7 ?M-SYS ERRT鈀 rhUe dw  (7?M-SWAP ERRwP | (P & w 0ew & F$&D H· D <Ƈ8%7 V &"7 H7$, w ׭ wpE 75  7   7 7 w ` ( 7 Fw| EaB )1 ĕ^ $  Ldĥ    U C 7 7 "ew  WeD $d  ĥ$E5e27  ʥ'  2$4w ( 5 p  Fjv3 Uh U 7 8 ? 0 ) $@5w F?w  w `Ee0AeB5@ a zE Ì ` 75 W- w F\W"d5 q"d 8 -$ ,57 & @5 e% elfqw N 7 5M fe D q"ed  $w  0&@# w \:D:D>T } ~V^ U@%6%$% % % e "E%'* ,( w& D D ĥ ĥĥ ? w ` ׋`eCS6T w*I $ %m5%e-wE-Y7 n ee#(JLŀ 5 7    ?P./6 P  5h 5Z$ U eHEB  <π̊? ҁe L Ea<0Q$ 7ɕB7  -CeB7  5!5 EEal 5 w E E  LCeB7  s!5s Nf ew ( w !ENҀEa E % e`B`N  ˋ w Ce F5E^P aePPPE߀a55 N aef##  a^f&   E3  eae6 &     e& 0 new` @ 3 7 h7 f&  , e&fD 7 &f  DN &    PT L4Lew ,6U  IB(@-t   " $7 œ & *w N w E D EaEJ 7  7 fa- C BE 0U  @@%  vL "V%t  5 aE5Ue ^ 0L%w e6jHb` Hh$OB"> e w Fe8!e- -4  E  v   N %@  E `Cae:w г*w w EɃ @` lKED  tww df& %wzwWa? =-:& 7 aEU& V 5 fNe r @& 0]&LE N * # &&5@$ d"%ex"7?7 & Č7ae5Po ͋5@  ew w e@ExFw U & 8 7)NW!5  2 U%e* 5 5 u@D5 BE@Q$-Jd$$ ,e" 5@x  $d$$B w`e(DB *B# 5@4  TT  7w ͋&&EmUeU*$ [7w Ze / 5w`& w   $)& E%~I р t : w * e Hes5  Me    e"n U@f&e _*a @E @( & %  H & e &      w D?Ut ?IjUb^Ew!X  dwXwR VŌ 5 MfE LE MOV INBUF,R1 ASL R0 ;MAKE WORD COUNT , BYTE COUNT ADD R1,R0 ;THIS IS END OF INPUT BUFFER MOV R0,INBUFE ; 2$: M.7|ddC E d @ 0 Ue,}07*Eŋ Lat UedC8 20ffE T X CLR BYSIZ ;CLEAR THE BYTE COUNTER BR OUTCHA ;ADVANCE THREAD AND OUTPUT BYTE BSIZE: MOVB (R1),(PC)+ ;STORE FIRST BYTE OF BYTE SIZE BYTMP: 0 BR OUTCHA ;OUTPUT THIS CHARACTER BSIZE2: MOVB (R1),BYTMP+1 ;STORE SECOND BYT OF BYTE SIZE ADD BYTMP,BYSIZ ;COMPUTE BYTE SIZE INC BYSIZ ;ADJUST FOR CHECKSUM BYTE ;FALL THRU TO FINISH THE BLOCK OUTCHA: TST (R4)+ ;ADVANCE THE THREAD OUTCH: MOVB (R1)+,R0 ;FOR WRITEC ADD R0,(PC)+ CKSUM: 0 ;CALCULATE CHECKSUM DEC (PC)+ ;DECREMENT BYTE COUNTER BYSIZ: 0 BNE NFIL ;ANe,  Ce1%R ZHp5E   e  eH w7?DAT? ^””#e,e ]5 2|2>A(:e& '$ & Ĕ!7S͋3 eA ĒB `A `, e A p`7 l<@&7 ^<  0:7*?TIM?7 ?NO CLOCK? % ee/ e0wdw  A @  -JAN-FEB-MAR-APR-MAY-JUN-JUL-AUG-SEP-OCT-NOV-DEC-:<:<.<C e6(,eĊ ͋#! C͋ͥ ͥ,u W- !k$,1!2c  e V f/RD`? # e(e & 3 & &( &   ef  f %7\?PARAMS?;w^;;;;;;;;;;;;;;;;;;e, $2 ͋ eC   we "    t  ͋ex LATIVE BLOCK NUMBER OUBLK: w  www4e t 67 0 ͥ= BͥF; 7 !. 6&7,e  , W  w wjN`!,,, h  T  ""eX ,Q$W 8fm^ aЁ ? @͋w "J -  # 3c  - D @&c%Lbtt&b%0c0l%P4H@ .`e zEf,DF5S"&: " W-\-7 *D" ! .Cm* ', Q$W 8', $)  `6`? ͋ww 5 FE 6``7?NO FG?7?F ACTIVE?;e~pEg,e&fˇ& ㈄ e !ꈇ,AFU@E@7X?NO FG?,F500 FE <``? ev jw,Em/ F2LOAD BCS OUTER ;OUTPUT ERROR MOV (SP)+,R0 ;RESTORE CHARACTER MOV OUBUF,R2 ;7 R7 8>͋%ͥ/@P:ͥ!  %N%SwD ? w7 7 x Ce*f"ma 7Fd%Tqw<`  6 A9 eeaVaAea7 F7@a# #Km ec `cc ` cc `m# (e@`QQ`B`IeQ ee F>  e e g,RRRRRe eH>@DedFee(e&* &7  @` Z J U % | "7?REL FIL I/O ERR? mJ H`H ,U86F? U@e" wZLOADED AT ;L77@e ߋ*! %   - # 3c  - D @&c%TdL!)t&b%0e )z%P4H@ <`,e5D5 e n%_%^[wh  e5 (͋ͥ/@:ͥ! |T%L%)&@ef 6e 6o t> wD < 2 !E  11& d`e ?x 2-* # 3c  - D @&c%TdL!)t&b%0e )%P4H@ R`,77e0E0 7 : j"Je"9zzS? * & &Je@@ONU X B b$C7$"A . $ 7 2=E@ L@! B` 7 ,- & &w:ww,E]:e5rPPPPP@P@Yzd *}%Gwd%'@Q%%%/d@%,@~-@%%_(@1\d41@P e鈇IeD&  W  %W  CLR REBMES ;SET SWITCH SO 44$&,^ 0M? H &  % w!ͥ  p 7 å å~ y7ox7 Z  0å  LW<E b 87 26Ր -(    6 &  5 - w!L<& 2֥  5 7 -!Eދ %%%%% 7X ^7 X  7M 7?7: 4 *f,EA    w5@PP <. 47a7a7ad7a7a7a7a7a7a7apm, Pee  wh1 w^1B*e@eAD   6  ; IS BEING EXAMINED. THE REMAINING FUNCTIONS OF GETDIR ARE ; THE SAME AS THOSE OF RDDIR. ; RDDIR IS USED TO READ SUCCESSIVE DIRECTORY BLOCKS. IT ; WILL UPDATE BLKEY TO REFLECT THE ABSOLUTE BLOCK NUMBER ; OF THE DIRECTORY BLOCK CURRENTLY IN THE USR'S BUFFER. ; THIS PREVE  A A?wl[>zCFANBAK RT-11SJ V02C-02y: &C0U cc EUˋ ߕ  E C D !E E 7 ?B-I/O ERROR vߋtȋ bxE  e  6@ f`T HTHTS K,ee 6 e @B5 Sr;zaX'5lem7 ?B-NO MONITR.SYS 7 ?B-NOT ENOUGH CORE e&^e  ee T"tCeetHa a a,Ep`p`p] t?a !aW,`p %e 8?ae?w P $ @5V@V@f ,04@>>>C8E:E>E@EBEFEHE>r?K>@&A .IIF NB ,.WORD X .ENDR .CSECT PROGRM .ENDM ;LOWSEG IS THE START OF THE IMPURE AREA ;*****THE COMPILER ASSUMES THAT BATSWT IS THE FIRST ENTRY IN***** ;*****LOWSEG. REFERENCES TO BATSWT ARE ABBREVIATED TO (R4).***** LOWSEG: ENTRLO BATSWT,0 ;BATCH CONTROL SWITCHES ABORT= 100000 ;DON'T ATTEMPT TO RUN AFTER COMPILE DATDOL= 40000 ;DATA/DOLLARS SET NO= 20000 ;/"NO"SWITCH IS SET CTYOUB= 10000 ;"\@" CTY: OUTPUT SENT LOGOUB= 4000 ;"\C" LOG OUTPUT DATOUB= 2000 ;"\D" USER DATA COMOUB= 1000 ;"\E" KMON REQUEST JOB= 400 ;$JOB SEEN ;******* KEEP MAKEB AT 200 ******* MAKEB= 200 ;MAKE BATCH LINKAGE FROM .TTYIN FIRST COMMA= 100 ;COMMA TERMINATED COMMAND BFORLI= 40 ;NEXT LINK REQUIRES FORTRAN'S FORLIB.OBJ UNIQUE= 20 ;FOR UNIQUE MATCHES BANNER= 10 ;PRINT BANNER ON $JOB,$EOJ RT11= 4 ;RT11 DEFAULT ON NO DOLLAR IN COLUMN 1 TIME= 2 ;PRINT TIME OF DAY MAKE= 1 ;MAKE SOURCE FILE ENTRLO BATSW2,0 EOJ= 1 XSWT= 2 ;(DEBUG ONLY) ;BEOF= 4 LSTDAT= 10 ;LIST DATA SECTIONS BNOEOJ= 20 ;$JOB OR $SEQ SEEN BEFORE PREVIOUS $EOJ STAROK= 40 ;OK TO LET * NAME OR EXTENSION GO THROUGH STARFD= 100 ;STAR SEEN IN FD FIELD ;MAKEB= 200 ;DITTO FROM BATSWT COMSWB= 400 ;COMMAND SWITCHES LSTBIT= 1000 ;REQUEST TEMPORARY LISTING SEQ= 2000 ;$SEQ HAS APPEARED IN STREAM SBIT= 4000 ;/S SWITCH ON THIS COMMAND FIRST= 10000 ;1ST CARD OF THIS JOB PROCESSED ;ABORT= 100000 ;SECOND TIME THROUGH ABORTT ENTRLO TMPSWT,0 ;TEMPORARY COMMAND SWITCH ENTRLO COMSWT,.-. ENTRLO LINSIZ,LINSZ ;INPUT LINE BUFFER SIZE ;********* KEEP IN ORDER ******** BFREE= 1 ;BUFFER STATUS BIT, 0 INDICATES BUFFER IS FREE BWAIT= 2 ;IN I/O WAIT (BFREE*2) BEOF= 4 ;END OF FILE IN BUFFER ENTRLO BINLCT,0 ;LAST BUFFER CHARACTER COUNTER ENTRLO INSTAT,0 ;INPUT BUFFER STATUS BYTES ENTRLO ICHRPT,.-. ;INPUT CHARACTER POINTER ENTRLO BINCTR,0 ;INPUT BUFFER COUNTER ENTRLO BINARG,10*400+3 ;INPUT FILE EMT ARG. LIST ENTRLO BATIBK,0 ;INPUT BLOCK # ENTRLO BATIBP,.-.,INBSIZ,0 ;INPUT BUFFER ADDRESS,SIZE,WAIT I/O ENTRLO BOTLCT,OTBSIZ*2 ;LAST BUFFER CHARACTER COUNTER ENTRLO OTSTAT,BFREE*400+BFREE ;OUTPUT BUFFER STATUS ENTRLO OCHRPT,.-. ;OUTPUT CHARACTER POINTER ENTRLO BOTCTR,OTBSIZ*2 ;OUTPUT COUNTER ENTRLO BOTARG,11*400+0 ;OUTPUT EMT ARG. LIST ENTRLO BATOBK,0 ;OUTPUT BLOCK # ENTRLO BATOBP,.-.,OTBSIZ,0 ;OUTPUT BUFFER ADDRESS,SIZE,WAIT I/O ;********************************* ENTRLO STACK,.-. ;STACK POINTER SAVE AREA ENTRLO ARGS ;ARGUMENTS EXCHANGED BETWEEN BATCH AND BA .CSECT UNPURE .BLKW ARGLST ;********* CSI BUFFER ************* ENTRLO SPC0,0,0,0,0,0 ;ENTRIES ARE: DEVICE, FILE NAME, ENTRLO SPC1,0,0,0,0,0 ;FILE EXTENSION, AND REQUESTED SIZE. ENTRLO SPC2,0,0,0,0,0 ENTRLO SPC3,0,0,0,0 ENTRLO SPC4,0,0,0,0 ENTRLO SPC5,0,0,0,0 ENTRLO SPC6,0,0,0,0 ENTRLO SPC7,0,0,0,0 ENTRLO SPC8,0,0,0,0 ;********************************** ENTRLO LINIMP,0 ;POINTER TO COMMAND LINE BUFFER ENTRLO LINIMM ;LINIMM IS LINBAD .CSECT UNPURE LINBAD: .REPT LINSZ ;INPUT LINE BUFFER .BYTE 0 .ENDR .BYTE -1 ;FLAG .EVEN ENTRLO LINIMS .CSECT UNPURE .REPT LINSZ ;INPUT LINE BUFFER SAVE AREA .BYTE 0 .ENDR .EVEN ENTRLO LIBLST .CSECT UNPURE .ASCIZ /FORLIB/ .REPT LINSZ-7 .BYTE 0 .ENDR .EVEN BATIBF: .BLKW INBSIZ*2 ;INPUT BUFFERS BATOBF: .BLKW OTBSIZ*2 ;OUTPUT BUFFERS ENTRLO QSET .CSECT UNPURE .BLKW 7*QSIZE ;ROOM FOR I/O QUEUE ELEMENTS .SBTTL HIGH SEGMENT SECTION DEFINITIONS ;******* HIGH SEG SECTIONS ******* .CSECT TABEL1 .GLOBL KEYTAB KEYTAB: .CSECT TABEL2 .GLOBL KEYWRD KEYWRD: .BYTE 0 .CSECT TABEL3 .GLOBL SWIT SWIT: .BYTE 0 .CSECT TABEL4 .GLOBL SWTADD SWTADD: .CSECT ERRLST .GLOBL ERRADD ERRADD: .CSECT PROGRM .SBTTL MACRO DEFINITIONS .MACRO ADDR,ADDRESS,REG .IF EQ PIC MOV #ADDRESS,REG .IFF MOV PC,REG ADD #ADDRESS-.,REG .ENDC .ENDM .MACRO ADDRLO,ADDRESS,REG ;FOR LOW SEG ADDRESSES .IF IDN ADDRESS,LINIMM MOV LINIMP(R4),REG .IFF MOV #ADDRESS,REG ADD R4,REG .ENDC .ENDM SWTNUM=-1 .MACRO SWTDEF,SWITCH SN$'SWITCH=SWTNUM SWTNUM=SWTNUM-1 .CSECT TABEL3 .=.-1 C=0 .IRPC X,SWITCH .IIF EQ C, .BYTE -''X .IIF NE C, .BYTE ''X C=C+1 .ENDM .BYTE 0 .CSECT TABEL4 .IF EQ PIC .WORD SA$'SWITCH .IFF .WORD SA$'SWITCH'-SWTJMP-2 .ENDC .CSECT PROGRM .ENDM .MACRO SAVE,REG0,REG1,REG2,REG3,REG4,REG5 .IRP X, .IIF NB ,MOV X,-(SP) .ENDR .ENDM .MACRO RESTOR,REG0,REG1,REG2,REG3,REG4,REG5 .IRP X, .IIF NB ,MOV (SP)+,X .ENDR .ENDM BITNUL=100000$)  `ee& dG F  `!  ae``````` `1`d`wt ? ? ,0 < EP$7 (, 3 v3 3 ~3 L37  ,E$7eC5$w x .H @@  #%  +C!CA Ջ e R l*A .  e$ "7 < 7?ILL CMD?鈇o& ee(  E e% 7?ER RD OVLY?BA K E E ͥ- 㺇 e l B @ @ ؁  B^ eE͋=,e    : x , enEO e   $5 7 EBc7?ADDR?BO e @ z %zO: ( 4   5$,( ""@5@ A ej  %@Ae Fuu| 7?FIL NOT FND?7?SV FIL I/O ER?w5 $ 2  8g e6E (7?OVR COR?  E $   :  <  @  ef D!%  R`W!&&   eR f .  & f& 懇? cef `% 7?SY I/O ER?  W ,,e (wvd@7$e   e7B?FILE? r ? & f,e $&EΔNIQ%Ό%@ 2EQU E`H#Hee&b,e 6e  %e& e7v?ILL DEV?'((U  EE ` ؁  RUREG E D BTSERNI<u~vK YM|.wbjT^%%W&&'''() O e @ z %zO: ( B |  5$,( ""@25@ A e0 %@AeFuu 7?FIL NOT FND?7?SV FIL I/O ER?w5 $ 2  g ePE (7?OVR COR?  E $   H  <  @  ef D!%  R`W!&&   el f .  & f& 懇? cef `% 7?SY I/O ER?  W ,,e (pewvD@7$   k7@?FILE?AewTq~ ? & f,e $&EΔNIQ%Ό%@ 2EQU E`H#Hee2b,e (e  %e& e7h?ILL DEV?'((U  EE ` ؁  RUREG E D BTSERNI<u~vK YM|.we(zsdlV^..W..0 0044000EXT,CR .ENDM .MACRO IOUTLO,LABEL IOUT OUTLOW LABEL .ENDM .MACRO JOUT,LABEL,TEXT,CR STRING JOUX,LABEL,TEXT,CR .ENDM .MACRO JOUTLO,LABEL JOUT OUTLOW LABEL .ENDM .MACRO KOUT,LABEL,TEXT,CR STRING KOUX,LABEL,TEXT,CR .ENDM .MACRO KOUTLO,LABEL KOUT OUTLOW LABEL .ENDM .MACRO L Mf,!e4 Qa ew* e w$ ew  ? "  e< aAa@C @ @E $ HT_n|?M-ILL USR ?M-NO DEV ?M-DIR IO ERR ?M-BAD FETCH ?M-OVLY ERR ?M-DIR OVFLO ?M-ILL ADDR ?M-ILL CHAN ?M-ILL EMT ?M-TRAP TO 4 ?M-TRAP TO 10 ?M-FP TRAP : 6 $D DeC B`  ew.ENDC .IF IDN X,#'2 JSR PC,.ASCI2 .MEXIT .ENDC .IF IDN X,#40 JSR PC,.SPACE .MEXIT .ENDC .IF IDN X,R2 JSR PC,.R2 .MEXIT .ENDC .IF IDN X,(SP)+ JSR PC,.SPPOP .MEXIT .ENDC .IF IDN X,#'A JSR PC,.ASCIA .MEXIT .ENDC MOVB X,R3 .ENDC JSR PC,PUTCHR .ENDM .MACRO INCVAR,X .IF NB MOVB X,R3 .ENDC JSR PC,INCVAX .ENDM .MACRO CR.LF JSR PC,CROUTP .ENDM .MACRO INTVAR,V,X KOUT NULINE CHROUT V CHROUT #'1 CHROUT X .ENDM .MACRO GETVAR,V KOUT NULINE CHROUT V CHROUT #'2 .ENDM .MACRO IFOUT V,X,LABEL,TEXT,CR IOUT CHROUT V CHROUT X OUTPUT LABEL,TEXT,CR .EN ~? bWW B abJFw? ? a@w 7Rw $!5@  e<NSSewN  U7 ͆ 7 7  w ~w wjw d4.7 v7 tw * 7e`w @%1@% @#eee%7`p 7 w   e# / wxEK]w d ؇f  w 0 E0w!z 5 1   $ZX w 6    < w  h  `5El $f w   $PPw w  w  pw  ? we`EW2El  7 PFaP=7 B*#7D 2a,`e# B#e`#w *ed%   . b$ `w#   7 "3 f7 Kaes S w b 5Sw I3W2Wl Ew C $ A#EE P &EΒE? >#:?2w *eD e& &Ne$e E & && e& ~ee ?  w &fmD$CeK   baba& Nw^ e 7@Ŋ` & *J E%=%< D  "% %  p"B  >'  7 e  O  $e d W&E77   `B7?DEV FUL? " 6  0`*7?FIL NOT FND? W,W=͋=7?ILL CMD? 7z?ILL DEV?m & W/@` W!W:@ 8& U& Uef \* e w& e∩ W[ W]  @W: 0$W. eR& &$ >W*@ "  @:e e W a `  (  &N W-e E  C0Π a `  6aw "Ba5lafw |CRC!  BC 5W* Q!E(A W   & TG C `w.IprtvbA<?30.f>zz 8rpqff`TM HS  @   p?xJ>Ew  D eEE eIL@N  7?ť&6  fe  amxagjbd`Vp0t QN D   &7 T $uFD*eaU6  ) 2@" _ *%@ *^%ZAw5@xZA^V%&f&   ac(2 "b&8$ **w w 7 5 : 6e PH-  &U$.5$ $͋ e q"R@  ͊ U wN E$ee)U%Me-r7 edF7 7 ^ee J&Z v$H $ ( Xe6@'( EM( > U%e 2(rh"U$7  7  "7 5z7 E$(7  *U$5$Awe>& bE[5@$ a zE ee `}~, , , ,    % W#Q u#R  5$  <4  7  t w f 3    .6& < &  x|7 v? @     D P7 ĥ  舗  5@fd u#eR LELELEEEEEzz 8rpqff`TM HS  @ D \!$bEeT% * " @O e.7  @ &>4 u# W%*L# E  ?\#  4% 4  .?0 $ ̗/ ? % &LE Ea5% (7 |5"5 E Eaex l 5 L E E 7  s!5s  ENEae E % φe`B`N ˋ  w  5E R !&5j $7 ^ LeH !   > j $7 7 R . " JĔ NĔ F&f&I e`  &e@^we3 D w7 I&e B& 7&  TT L4L4f x & f & T  w54B  e  L$  w E % * *  wߋ$ɀ yeBMs  C  CUr %@aw wP f5eEE ES5 e9 bCb  eUe' @E@ 4] RM GU ̕M 6 (Ue,}  C E B BC C Fv7 " 5$7 BJD t(5 X <e!7\ w  BE w *U  P5$ b7  5T  ac\ "~:0V UA  8-$ E  *7 8@   <7U  UU$ E$&x­7 J  dpw  w e JB  $e< B  $5eF@ B( e @EM( & U%e(  7 e,  Ce1%R ZHp5E   e  eH w.7?DAT? ””#e,e Y5 2t2.e" )$ & >Ĕ!9S͋5 eA ĒB `A `, p&  7 d<@&7 V<  0:7F?TIM?7  6 0 \7 6WJE n D7 >4HՐ נ  -    6 &  5 - w!LJ& 2֥  5 7 -!E%%%%% 7V ^7 V  7K 7=78 B(f,EA    w5@E PP J< 47a7a7aT7a7a7a7a7a7a7a`m, be&` ee wD1 w:1B*e@eAf . 6 e"7?7 & Č7ae5Po ͋5@  ew w e@ExFw U (& B 7)XW!5 ! 2 U%e2 5 5 u@D EEGwlrBNP"XNX] RT-11FB V02C-02<_: &C0U cc EUˋ ߕ  E C D !E E 7 ?B-I/O ERROR vߋtȋ bxE  e  6@ f`T HTHTS K TTIUSR (= R5) MOV R5,R1 ;COPY IMPURE PTR ADD #I.ICTR,R1 ;R1 -> INPUT RING COUNT .DSABL LSB .ENABL LSB 2$: MOVB (R2)+,R3 ;OFFSET TO R3 BEQ TTINCC ;DONE SPECIALS IF ZERO ASLB R3 ;MAKE IT A WORD. DONE GENERALS? BEQ TTIDSP  A A?w4[>zCFANJBA RT-11SJ V02C-02y6DSE  c ˋ 7 ?B-I/O ERROR vߋtȋ xE  e  @n@ f`T HTHTS K,ee 6 e @B5 Sr;zaX'5lem7 ?B-NO MONITR.SYS 7 ?B-NOT ENOUGH CORE e&^e  ee D"tCeetHa Va a,] t?a !aW,pq`p %e08?ae?w P $ @5V@l@f ,04@>>>C8E:E>E@EBEFEHE>r?(K>@&A OUTPUT COUNT. CLRB (R1)+ ;CLEAR THE COUNT MOVB @R1,-(SP) ;GET FORMER ^O CONDITION CLRB (R1)+ ;TURN IT OFF TEMPORARILY MOV (R1),-4(R1) ;SET BUFFER PTRS. EQUAL. JSR R5,ECHO0C ;ECHO ^O CR LF .BYTE CR,LF COM @SP ;FLIP THE FLOP MOVB (SP)+,-(R1) ;AND SET IT UP BEQ 20$ ;TURNING IT ON IS EASY JSR R4,UNBLOK ;TURNING OFF TTY OUTPUT MEANS .WORD TTOWT$ ; INFINITE ROOM IN BUFFER 20$: RTS PC ;RETURN FROM INTERRUPT 25$: MOV #BELL,R4 ;DING HIM FOR OVERFLOW MOV R0,I.PTTI(R5) ;BUT BE WARY OF ^C ^C BR TTOPT4 ;GO DING .DSABL LSB .ENABL LSB CTRL.U: JSR PC,ECHOR0 ;ECHO ^U RUB: ADD #I.PTTI,R5 ;R5 -> PREVIOUS INPUT CHAR 30$: TST @R1 ;ANY CHARS TO DELETE? BEQ .35$ ;NO. MOVB @-(R1),R4 ;CHARACTER TO R4 JSR PC,EOLTST ;LINE TERMINATOR? BEQ .35$ ;NO. CMP @R1,-2(R1) ;NEED TO WRAP AROUND BACKWARDS? BNE 31$ ;NO ADD #TTYIN,@R1 ;YES. BUMP TO TOP OF BUFFER 31$: DEC (R1)+ ;BACK UP POINTER DEC @R1 ;DECREASE CHARACTER COUNT CMPB #'U-100,R0 ;ARE WE DOING ^U? BEQ 30$ ;YES. TRY ANOTHER RUBOUT TST TTCNFG ;NO, IT'S A RUBOUT. VT05? BPL 32$ ;NO, NORMAL ECHO JSR R5,ECHO ;YES, ECHO BS,SPACE,BS .BYTE BS,40 MOV #BS,R4 ;LAST ECHO BR TTOPT4 ;PUT IT OUT AND SAY BYE 32$: MOV R4,-(SP) ;SAVE CHAR BEING RUBBED CMP @R5,R0 ;WAS LAST A RUBOUT? BEQ 33$ ;YES MOV R0,@R5 ;REPLACE PREVIOUS CHARACTER TYPED JSR R5,ECHO ;NO, TYPE THE LEADING \ .BYTE '\,0 33$: MOV (SP)+,R0 ;RESTORE THE MOV R0,R4 ; CHARACTER TO DELETE BR TTOPT3 ;OUTPUT THE CHARACTER, EXIT .DSABL LSB .MACRO INLST LOC,CHAR .BYTE /2,CHAR .ENDM INLST ; TTOID POINTS TO A JOB ID AREA WHEN ONE IS BEING PRINTED. ; THE JOB ID IS "B>" FOR BACKGROUND, SIMILAR FOR FG. ; TTIUSR/TTOUSR POINT TO THE IMPURE AREAS OF THE JOBS CURRENTLY ; CONTROLLING THE TTY INPUT AND OUTPUT, RESPECTIVELY. TTOID: .WORD 0 ;POINTS TO ID WHEN ID PRINT IN PROGRESS TTOUSR: .WORD BKGND ;*** BOOT *** INITIALLY POINT TO BACKGROUND TTIUSR: .WORD BKGND ;*** BOOT *** LIST: INLST CTRL.C,'C-100 INLST CTRL.O,'O-100 INLST CTRL.S,'S-100 INLST CTRL.Q,'Q-100 LISTFB: INLST CTRL.F,'F-100 INLST CTRL.B,'B-100 .BYTE 200 ;END OF GENERAL LIST INLST CTRL.U,'U-100 INLST ALT,175 INLST ALT,176 INLST RUB,RUBOUT .BYTE 0 .EVEN .SBTTL TTY OUTPUT SUBROUTINES ; NOTE THAT THIS ROUTINE RETURNS CONDITION IN C BIT ; IT DOES NOT SWAP THE USER, SINCE IT MAY BE CALLED FROM INTERRUPT LEVEL .ENABL LSB ECHOR0: MOV #'^,R4 ;PUT OUT AN ^ JSR PC,TTOPT3 ;PUT OUT THE ^ MOV R0,R4 ;GET THE CONTROL CHAR BIS #100,R4 ;MAKE IT VISIBLE, FALL INTO PRINTER TTOPT3: CMP #'C-100,R4 ;REFUSE TO ECHO ^C BEQ 3$ CMP #ESCAPE,R4 ;SPECIAL INPUT ECHO OF ESCAPE BNE 10$ MOV #'$,R4 ;WHICH IS $ 10$: CMP #40,R4 ;IS IT PRINTABLE? BLOS TTOPT4 ;YES CMP #15,R4 ;SPECIAL RANGE? BLO ECHOR0 ;ECHO AS ^(R0) CMP #11,R4 ;OTHER END OF RANGE BHI ECHOR0 TTOPT4: MOV TTIUSR,R2 ;PUT CHARACTERS INTO INPUT OWNERS BUFF TTOPT2: ADD #I.OCTR,R2 ;POINT TO OUTPUT COUNT TST @R2 ;< 0 MEANS CONTROL O BMI 3$ ;YES. ACT LIKE SUCCESS BIC #177600,R4 ;EXTRANEOUS BITS OUT CMP #TTYOUT-1,@R2 ;WILL THIS FIT? BLO 3$ ;NO, RETURN CARRY SET (EVIL) MOVB R4,@-(R2) ;INSERT CHARACTER INTO RING INC @R2 ;BUMP THE POINTER CMP 6(R2),@R2 ;TIME TO WRAP AROUND? BHI 1$ SUB #TTYOUT,@R2 ;NOTE THAT THIS CLEARS THE CARRY 1$: INC 2(R2) ;BUMP COUNT JMP TTOENB ;ENABLE OUTPUT INTERRUPTS ECHO0C: JSR PC,ECHOR0 ;FIRST ECHO ^ [R0] ECHO: MOVB (R5)+,R4 ;ECHO 1 OR 2 BYTES JSR PC,TTOPT4 MOVB (R5)+,R4 BEQ 2$ ;ONLY ONE JSR PC,TTOPT4 ;PRINT THE OTHER 2$: RTS R5 EOLTST: CMPB #LF,R4 ;IS IT A LINE FEED? BEQ 3$ CMPB #'Z-100,R4 BEQ 3$ CMPB #'C-100,R4 ;IS IT ^C 3$: RTS PC .DSABL LSB .SBTTL TTY OUTPUT INTERRUPT .ENABL LSB OFILL: DEC NFILLS CLR @TTPB ;PUT OUT A NULL RTS PC TTOINT: JSR R5,$INTEN ;* DO USUAL INTERRUPT ENTRY .WORD ^C&PR7 ; CHECK FOR FILLERS SPECIFIED IN SYSCOM LOC. 56 TST (PC)+ ;FILLING? NFILLS: 0 BNE OFILL ;YEP TSTB (PC)+ ;XOFF GIVEN? XEDOFF: 0 BMI 9$ ;YEP ; CHECK FOR TAB TO SPACE CONVERSION FOON: ADDR FILCTR,R4 ;CHECK FOR TAB OR FREE CRLF INCB @R4 ;COUNT FILLS BMI 8$ ;STILL FILLING. PUT IT OUT CLRB (R4)+ ;FIX CTR, POP R4 MOV TTOID,R5 ;PRINTING AN ID? BEQ 3$ ;NO 1$: MOVB (R5)+,(R4)+ ;YES. SET CHAR OF ID BNE 2$ ;GOT ONE CLR R5 ;END OF ID 2$: MOV R5,TTOID ;SAVE NEW TTOID BNE 8$ ;PUT OUT CHARACTER DEC R4 ;FIX R4 3$: MOV TTOUSR,R5 ;GET USER'S IMPURE PTR CMPB @R4,#LF ;TIME TO ARBITRATE? BNE 5$ ;NO MOV IMPLOC,R4 ;YES, POINT TO JOB TABLES ;DV16 4$: MOV -(R4),R5 ;GET PTR BEQ 4$ ;NO SUCH JOB CMP #-1,R5 ;END OF TABLE? BEQ .20$ ;YES. NOBODY WANTS TO TALK BIT #NORUN$,@R5 ;DEAD MEN SPEAK NOT BNE 4$ CMP (PC)+,R5 ;IS HE USING THE TT: FOR OUTPUT? TTHOUS: 0 ;IMPURE AREA PTR FOR OUTPUT USER BEQ 45$ ;YES, ERGO HE CAN SPEAK TSTB I.OCTR(R5) ;A JOB. DOES HE HAVE OUTPUT? BEQ 4$ ;SILENT 45$: ADDR OUTCHR,R4 ;YES. FIX R4 POINTER CMP TTOUSR,R5 ;SAME GUY? BEQ 5$ ;YES. DO NOT PRINT ID MOV R5,TTOUSR ;NO, CHANGE USERS MOV I.TID(R5),R5 ;GET ID POINTER BR 1$ ;PRINT THE ID 5$: CMP TTHOUS,R5 ;IF HE IS USING THE HANDLER BEQ TTHOUT ; DO SPECIAL STUFF JSR R4,UNBLOK ;UNBLOCK THE LUCKY GUY .WORD TTOWT$ ADD #I.OTOP,R5 ;POINT TO RING POINTERS CMP @R5,-(R5) ;TIME TO WRAP? BNE 6$ ;NO SUB #TTYOUT,@R5 ;YES 6$: TSTB -2(R5) ;ANYTHING TO PRINT? BEQ .20$ ;NO MOVB @(R5)+,@R4 ;GET BYTE TO PRINT .65$: BICB #200,@R4 ;7 BIT ASCII CMPB (R4)+,#40 ;PRINTABLE? BLO .10$ ;MAYBE NOT INCB @R4 ;YES. BUMP LINE POSITION BIT #CRLF$,TTCNFG ;DOES HE WANT$)  `ee& dG F  `!  ae``````` `1``wZ EP$7 6,3 2 3  .E$7 eC5$w n .H @@  #%  ,C!CA Ջ e  R l0A   e* $7 R 7?ILL CMD?鈇o& ee<  E e% 7?ER RD OVLY? A K E E ͥ- 㺇 e l B @ @ ؁  Br eE͋=,e    N ` , 2 eEO e(   $5 7  EBc7?ADDR?TO e @ z %zO: ( < |  5$,( ""@25@ A e0 %@AeFuu 7?FIL NOT FND?7?SV FIL I/O ER?w5 $ 2  g ePE (7?OVR COR?  E $   B  <  @  ef D!%  R`W!&&   ef f .  & f& 懇? cef `% 7?SY I/O ER?  W ,,e (pewvD@7$   h7@?FILE?OwTq~ ? & f,e $&EΔNIQ%Ό%@ 2EQU E`H#Hee2b,e .e   %e& e7n?ILL DEV?'((U  EE ` ؁  RUREG E D BTSERNI<u~vK YM|.we(zsdlV^..W..0 0044000$7eC5$w x .H @@  #%  +C!CA Ջ e R l*A .  e$ "7 < 7?ILL CMD?鈇o& ee(  E e% 7?ER RD OVLY?OA K E E ͥ- 㺇 e l B @ @ ؁  B^ eE͋=,e    : x , enEO e   $5 7 EBc7?ADDR? O e @ z %zO: ( 4   5$,( ""@5@ A ej  %@Ae Fuu| 7?FIL NOT FND?7?SV FIL I/O ER?w5 $ 2  8g e6E (7?OVR COR?  E $   :  <  @  ef D!%  R`W!&&   eR f .  & f& 懇? cef `% 7?SY I/O ER?  W ,,e (wvd@7$e   e7B?FILE? r ? & f,e $&EΔNIQ%Ό%@ 2EQU E`H#Hee&b,e 6e  %e& e7v?ILL DEV?'((U  EE ` ؁  RUREG E D BTSERNI<u~vK YM|.wbjT^%%W&&'''() MEDIUM? BNE 4$ MOV R1,R5 ;POINT R5 TO ARG LIST MOV (R3),R2 ;ISOLATE ENTRY VALUE OF HANDLER BIC #177701,R2 ADD PC,R2 ;IN A PIC MANNER, MOV $ENTRY-.(R2),R2 ;POINT TO ENTRY POINT BEQ 2$ ;NO HANDLER! ZOUNDS, MAN! ADD C.SBLK(R3),R0 ;MAKE BLOCK ABSOLUTE. MOV C.DEVQ(R3),R1 ;UNIT # TO R1 CLRB R1 JSR Mf,e Qa ew e w ew  ?  RWXT: MOV #3,R2 ;3 ARGUMENTS TO CLEAN UP JMP EMTDON 2$: MONERR NODV ;NO DEVICE HANDLER BR RWXT 3$: TST (SP)+ ;PURGE STACK 4$: BIC #EOF$,(R3) ;CLEAR EOF BIT RWXTE0: 5$: EMTERR+0 BR RWXT 6$: BIC #HDERR$,(R3) ;CLEAR ERROR BIT EMTERR+1 BR RWXT 7$: TST (SP)+ 8$: EMTERR+2 BR RWXT .SBTTL SDAT, WRITE ; SDAT IS SIMILAR TO WRITE. R3 IS POINTED TO THE OTHER JOB'S ; CHANNEL AND THEN A WRITE IS EXECUTED ON THE MESSAGE ; PSEUDO CHANNEL. IF THE OTHER JOB IS NOT IN CORE, ; THE ERROR 0 RETURN IS TAKEN. S$DAT: JSR PC,OTHRJB BEQ 5$ ;NO RECEIVER PRESENT MOV R5,R3 ;R5 RETURNS POINTING TO THE ADD #I.MSG,R3 ;OTHER'S IMPURE AREA ; "THEIR MANNER OF WRITING IS VERY PECULIAR, BEING NEITHER FROM THE ; LEFT TO THE RIGHT, LIKE THE EUROPEANS; NOR FROM THE RIGHT TO THE ; LEFT, LIKE THE ARABIANS; FROM UP TO DOWN, LIKE THE CHINESE; NOR ; FROM DOWN TO UP, LIKE THE CASCAGIANS" ; - J. SWIFT, "GULLIVER'S TRAVELS" ? JWW B abB> w? ? a@w 7w t!5@  erNSSew  U7 ͆ 7 7 w w ww z4.7 l7 jw * 7eVw @%1@% @#eee%7` l7 Nw   e# / wEK]w  ؇f  w 2JELw!t 5 41   $$ѝџnN w r    2 w  h  `5El zf w   $PPw w  w  w  ? wexEW2El  7 YTaPC7 K8#=D #L 2a,`e# ,#e`#w $!eJ%    b$ `w#    7 73 f7 "0/E ``mE5 E /Kaes S w b 5Sw VI3W2Wl Ew C $ A#EE P &EΒE? #?w eD e& &Ne$e lnE & && e& ZPee ? nz w ^&fmw )B m` E /Jŭp f el BBE/aw "Ba5lafw |CRC!  BC 5aW* Q!E(A W   TN`Be 7Em@5f3 w w Gw  0w P xe$PPPH (fEEew ~ EN  @EUw 5@eBB ` ? wmLe&l w  7 &w Dw  Be$B  wdQ$mw 2 "x  D@|X @B@ZD CeK   & Nwv e 7@ŊJ E%=%< D  "% %  p"Bj >'  7 2e * O  $e$ v W&E77  & `B7?DEV FUL? 4 6  0`*7?FIL NOT FND? W,W=͋=7?ILL CMD?7?ILL DEV? & W/@` W!W:@ J& U& U ef Ev*  e z& e∠ W[ W]  @W: 0$W. eR& &$ ,W*@ "  @:e e W a `  (  &N W-e E  C0Π a `  6H"2  XI$QIeFU@( :  t T8p~D @|XB@>D$CeK & TG C `w2Uprtv:D~V<?302$$CHEzz 8rpqff`TM HS  @   fM6]TBE0EBDDDDR& &$ >W*@ "  @:e e W a ` DDE(  &N W-e E  C0Π  B> :DA|0E]]$`rA0l|X$5@$% +_ * %& ,ff 5  *%"&  * C C 7| ?M-ILL USRNO DEVDIR IO ERRBAD FETCHOVLY ERRDIR OVFLOILL ADDRILL CHANILL EMTTRAP TO 4TRAP TO 10FP TRAPЋ D @ @eY= e7 w BaeC C ߐ*Uv  m?M-DIR UNSAFEH Ef&f&  D eEE e ?w J 6@N ^5,ť' aE w   fw   f"  aCm*e wZ  C(& eK# c w .m<c e:B " s yeBMs  C  CU=HnH `T 4 27 @ *6  " .  &%@%w  / %w ' e3BAe ( 5@$7 <@W" wf7@  e` n ae "  T P7 n7 t7 t7 5"7 @HB t(5 X <e!7^ w  BE w *U  (P5$ `7  5T  ac\ "~:0^ UA  8+" E  *7 @@   <7U  UU$ E$&v­7 H  bpw $ w e JB  $e: B  "5eF> @( e @EM( & U%e(  7 ?M-SYS ERR鈀 rhUe dw  (7?M-SWAP ERRwP | (P & w 0ew & F$&D H· D <Ƈ8%7 V &"7 H7$, w ׭ wpE 75  7   7 7 w ` ( 7 Fw| EaB )1 ĕ^ $  Ldĥ    U C 7 7 "ew  WeD $d  ĥ$E5e27  ʥ'  2$4w ( 5 p  Fjv3 Uh U 7 8 ? 0 ) $@5w F?w  w `Ee0AeB5@ a zE Ì ` 75 W- w F\W"d5 q"d 8 -$ ,57 & @5 e% elfqw N 7 5M fe D q"ed  $w  0&@# w \:D:D>T } ~V^ U@%6%$% % % e "E%'* ,( w& D D ĥ ĥĥ ? w ` ׋`eCS6T w*I $ %m5%e-wE-Y7 n ee#(JLŀ 5 7    ?P./6 P  5h 5Z$ U eHEB  <π̊? ҁe L Ea<0Q$ 7ɕB7  -CeB7  5!5 EEal 5 w E E  LCeB7  s!5s Nf ew ( w !ENҀEa E % e`B`N  ˋ w Ce F5E^P aePPPE߀a55 N aef##  a^f&   E3  eae6 &     e& 0 new` @ 3 7 h7 f&  , e&fD 7 &f  DN &    PT L4Lew ,6U  IB(@-t   " $7 œ & *w N w E D EaEJ 7  7 fa- C BE 0U  @@%  vL "V%t  5 aE5Ue ^ 0L%w e6jHb` Hh$OB"> e w Fe8!e- -4  E  v   N %@  E `Cae:w г*w w EɃ @` lKED  tww df& %wzwWa? =-:& 7 aEU& V 5 fNe r @& 0]&LE N * # &&5@$ d"%ex"7?7 & Č7ae5Po ͋5@  ew w e@ExFw U & 8 7)NW!5  2 U%e* 5 5 u@D5 BE@Q$-Jd$$ ,e" 5@x  $d$$B w`e(DB *B# 5@4  TT  7w ͋&&EmUeU*$ [7w Ze / 5w`& w   $)& E%~I р t : w * e Hes5  Me    e"n U@f&e _*a @E @( & %  H & e &      w D?Ut ?IjUb^Ew!X  dwXwR VŌ 5 MfE 6e *o tL wD# F < !EE(*11& d` %@aw wP f5eEE ES5 e9 bCb  eUe' @E@ 4] RM GU ̕M 6 (Ue,}  C E B BC C X0? < & &Je@@ONU  b$C7$"A . $ 7 =E@ n@! B` 7 ,- & &wA(:e& '$ & Ĕ!7S͋3 eA ĒB `A `, e A p`7 l<@&7 ^<  0:7*?TIM?7 ?NO CLOCK?% ee/ e0wdw  A @  -JAN-FEB-MAR-APR-MAY-JUN-JUL-AUG-SEP-OCT-NOV-DEC-:<:<.< e6(,eĊ ͋#! C͋ͥ ͥ,u W- !k$,1!2c  e V f/RD`? # e(e & 3 & &( &   ef  f %7\?PARAMS?Nw^N BYTE MOV (R5)+e, $2 ͋ eC   we "    t  ͋ex ENSYS 10$ ;ENTER SYSTEM STAw  www4e t 67 0 ͥ= BͥF; 7 !. 6&7,e  , W  w wjN`!,,, h  T  ""eX ,Q$W 8fm^ aЁ ? @͋w "J -  # 3c  - D @&c%Lbtt&b%0c0l%P4H@ .`e zEf,DF5S"&: " W-\-7 *D" ! .Cm* ', Q$W 8', $)  `6`? ͋ww 5 FE 6``7?NO FG?7?F ACTIVE?e~pEg,e&fˇ& ㈄ e !ꈇ,AFU@E@7X?NO FG?,F500 FE <``? ev jw,Em/ F2RDBDEXLLZ@zzNT TO IMPURE AREA MOV R3,I.CHWT(R1) ;SAVE POINTE7 R7 8>͋%ͥ/@P:ͥ!  %N%SwD ? w7 7 x Ce*f"ma 7Fd%Tqw<`  6 A9 eeaVaAea7 F7@a# #Km ec `cc ` cc `m# (e@`QQ`B`IeQ ee F>  e e g,RRRRRe eH>@DedFee(e&* &7  @` Z J U % | "7?REL FIL I/O ERR? mJ H`H ,U86F? U@e" wZLOADED AT EL77@e ߋ*! %   - # 3c  - D @&c%TdL!)t&b%0e )z%P4H@ <`,e5D5 e n%_%^[wh  e5 (͋ͥ/@:ͥ! |T%L%)&@ef 6e 6o t> wD < 2 !E  11& d`e ?x 2-* # 3c  - D @&c%TdL!)t&b%0e )%P4H@ R`,77e0E0 7 : j"Je"9zzS? * & &Je@@ONU X B b$C7$"A . $ 7 2=E@ L@! B` 7 ,- & &w:ww,E]:e5rPPPPP@P@Yzd *}%Gwd%'@Q%%%/d@%,@~-@%%_(@1\d41@P e鈇TeD&  W  %W LETE 2$: MOV -(R4),(R1)+ ;LIN44$&,^ 0M? H &  % w!ͥ  p 7 å å~ y7ox7 Z  0å  LW<E b 87 26Ր -(    6 &  5 - w!L<& 2֥  5 7 -!Eދ %%%%% 7X ^7 X  7M 7?7: 4 *f,EA    w5@PP <. 47a7a7ad7a7a7a7a7a7a7apm, Pee  wh1 w^1B*e@eAD   6 ;DV15 SPL 7 ;UP ... MOV (R5)+,R0 ;* R0 -> LAST ELEMENT IN COMPL. Q BNE 5$ ;* (IF THERE IS ONE) MOV R5,R0 ;* SET R0 TO PLUG CQE = LQE 5$: MOV R4,@R0 ;* POINT LAST ELEMENT AT THIS ONE 6$: MOV R4,-(R5) ;* MAKE THIS THE LAST ELEMENT JSR PC,$MTPS ;* BACK TO PRIORIT  A APx?7J6 >zCF ANx ̋R   ҁӤӤ5 :7hbBAJ RT-11SJ V02C-02 1̋΀R  y &  %C e  7 ?B-I/O ERROR vߋtȋ xE  e  pZ@ `D fHT HTHTS K,e 6 e @B5 Sr;zaX'5lem7 ?B-NO MONITR.SYS 7 ?B-NOT ENOUGH CORE e&  ee t"tCeetHa a a5a ,p`p`p] t?a !aW,`p %e 08?ae?w P $ @5v5n@R ,04@>>>C8E:E>E@EBEFEHE>r?(L>@&A F/B UPDATE = 02. .RADIX 10. .IRP ...,<\UPDATE> .IF NE BF .TITLE RT-11FB X02C-0'... .IFF .TITLE RT-11SJ X02C-0'... .ENDC .ENDR .RADIX 8. .SBTTL EDIT LOG ; FOLLOWING ARE EDITS MADE FOR VERSION V02C: ;DV1 -- CORRECTS .CDFN CODE TO PROPERLY CHECK CHANNEL NUMBER. ; ;DV2 -- REMOVES ADDRESSING CHECK BY-PASS FOR KMON SO THAT ; ALL KMON .FETCHES ARE CHECKED. ; ;DV3 -- FIXES .ASS:DEV BUG. ; ;DV4 -- PREVENTS F/G JOB FROM .RELEASING HANDLER FETCHED IN B/G JOB. ; ;DV5 -- PREVENTS CRASH WHEN .DATE IS TYPED WITHOUT AN ARGUMENT ; BEFORE A DATE WAS ENTERED. ; ;DV6 -- PREVENTS CTRL/C FROM FRUN, WHICH COULD CAUSE LOSS OF ; MEMORY THAT WAS ALLOCATED FOR THE F/G JOB SPACE. ; ;DV7 -- PREVENTS A .LOCK THAT PROCEEDS A CSIGEN FROM PRODUCING A ; SPURIOUS ERROR MESSAGE. ; ;DV8 -- CORRECTS A TYPO IN QMANGR CODE THAT RESULTED IN A WRONG ; REGISTER BEING TESTED AND Q ELEMENTS ALWAYS BEING LINKED ; INTO THE HEAD OF AN I/O QUEUE. ; ;DV9 -- PRINTS ANOTHER CHARACTER AFTER A FILL SEQUENCE BEFORE ; SERVICING A TT: REQUEST FOR OUTPUT. PREVENTS OVERPRINT. ; ;DV10 - STRIPS PARITY BEFORE PRINTING A CHARACTER ON CONSOLE. ; ;DV11 - CORRECTIONS MADE TO TT HANDLER FOR S/J: A) TERMINATE ON ; CORRECT WORD COUNT AND B) RETURN EOF ONLY WHEN ; EOF CHARACTER ACTUALLY TYPED. KMON TABLE SIZE INCREASED. ; ;DV12 - .SYNCH FIXED IN S/J TO LOWER PRIORITY TO 0 PER F/B. ; ;DV13 - SCROLLER WIDTH TEST ADDED FOR S/J. ; ;DV14 - S/J TTY OUTPUT SERVICE CHANGED TO NOT HANG WHEN ECHOING A ; CHARACTER TYPED AND OUTPUT RING BUFFER IS FULL. ; ;DV15 - CHANGES MADE TO SUPPORT LSI11 PROCESSOR. ; ;DV16 - EDITS MADE FOR NETWORKS SUPPORT ; ;DV17 - ADDS SPFUN$ BIT TO DSTATUS WORD. BIT SET IN DSTATUS PERMITS ; .SPFUN REQUESTS TO BE SENT TO DRIVER (E.G., MT OR DX). ; ;DV18 - TTY FIXES FOR F/B TO IMPROVE .PRINT AND TT: INTERACTION. ; ;DV19 - CHANGES TO VT11 SCROLLER. NOW RUNS AT LEVEL 0, GOING TO 4 ; ONLY WHEN EXTRACTING A CHARACTER FROM THE RING BUFFER. ; ALSO ADDS A SCROLLER FIXED OFFSET LOCATION TO ALLOW SPECIFICATION ; OF TERMINAL PRINTER VECTOR. .SBTTL MACROS .MCALL ..V1.. ..V1.. .MCALL .CLOSE, .DSTATUS, .ENTER, .EXIT, .FETCH, .HRESET .MCALL .LOCK, .LOOKUP,.PRINT, .RCTRLO,.READW, .RELEASE .MCALL .SETTOP,.SRESET,.TTYIN, .TTYOUT,.UNLOCK,.WAIT, .WRITW ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; THIS MACRO GENERATES A CALL TO THE KMON ERROR ROUTINE .MACRO KMEROR TEXT .IF GE OVLYN OJSR R0,MSGKM .IFF JSR R0,MSGKM .ENDC .ASCIZ "?TEXT?" .EVEN .ENDM KMEROR ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; THIS MACRO COMPUTES AN ADDRESS IN A POSITION-INDEPENDENT MANNER ; IT CAN PUT THE ADDRESS IN A REGISTER OR ON THE STACK, ; AND CAN SAVE THE REGISTER FIRST ; ADR IS THE ADDRESS TO COMPUTE ; REG IS THE REGISTER (SP IF IT IS TO BE PUSHED) ; PUSH IS BLANK, 'ADD', OR 'PUSH' .MACRO ADDR ADR,REG,PUSH .IF IDN REG,SP MOV PC,-(SP) ADD #ADR-.,(SP) .IFF .IF B PUSH MOV PC,REG .IFF .IF IDN PUSH, ADD PC,REG .IFF JSR REG,(PC) .ENDC .ENDC ADD #ADR-.,REG .ENDC .ENDM ADDR ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; THIS MACRO GENERATES A BLOCK OF ZERO WORDS IN CORE .MACRO BSS COUNT .NLIST .REPT COUNT .WORD 0 .ENDR .LIST .ENDM BSS ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; THIS MACRO GENERATES A FATAL MONITOR ERROR CALL .IF EQ BF .MACRO MONERR CODE,LEVEL,FTL EMT 376 .BYTE LEVEL .IF IDN , .BYTE ^C .IFF .BYTE CODE .ENDC .ENDM MONERR .IFF .MACRO MONERR CODE,LEVEL,FTL EMT 376 .BYTE LEVEL .IF IDN , .BYTE ^C .IFF .BYTE CODE'.E .ENDC .ENDM MONERR .ENDC ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; MACRO TO GENERATE AN ERROR FROM THE CSI .MACRO CSIERR TEXT,CODE .NLIST JSR R0,MSG .BYTE CODE .ASCIZ "?TEXT?" .EVEN .LIST .ENDM CSIERR ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; MACRO TO CHANGE PRIORITY LEVEL ; FOR USE IN RMON MODULE ONLY ;DV15 .MACRO SPL PRIO .IF NE PRIO MOV #PRIO*40,-(SP) ;DV15 .IFF CLR -(SP) ;DV15 .ENDC JSR PC,$MTPS ;DV15 .ENDM SPL ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; MACRO TO LINK TO A KMON OVERLAY ; NOTE - THIS MACRO SHOULD ONLY BE USED FROM A KMON COMMAND .MACRO OVLINK CMD .IF GE OVLYN OJSR R2,OVLINK .IFF JSR R2,OVLINK .ENDC .BYTE N.'CMD,O.'CMD/2 .ENDM OVLINK ; ; MACROS DEFINED ELSEWHERE ARE ONLY USED IN THE VICINITY OF ; THEIR DEFINITION .SBTTL GLOBAL DEFINITIONS ; GLOBAL REFERENCES FOR SYSTEM DEVICE HANDLERS .GLOBL SYINDO, $PNAMO, SYENTO .GLOBL DTSYS,RFSYS,RKSYS,DPSYS,DXSYS ;DEFINED IN THE SYSTEM HANDLERS .GLOBL DSSYS ;THEY MAKE THE APPROPRIATE HANDLER ;RESIDENT IN ADDITION TO SY AND DK .GLOBL BLKEY, CHKEY, RTORG, $CSW .GLOBL TTIBUF, TTOBUF, TTYIN, TTYOUT ; THESE GLOBALS ARE FOR THE BOOTSTRAP MODULE .GLOBL $DVREC, $ENTRY, $PNAME ;SYSTEM TABLES .GLOBL $MONBL, $SWPBL, SYSLOW, KMLOC, QCOMP .GLOBL $USRLC, $SLOT, $KMLOC ;LOCS. TO MOVE .GLOBL BSTRNG, CORPTR, DKASSG, FILLER, HWDSP$, HWFPU$ .GLOBL KMON, KMONSZ, KW11L$, MAPOFF, RMONSZ, RT11SZ, RTLEN .GLOBL RTSIZE, USRSZ, SWAPSZ, SYASSG, SYNCH, USRLOC, $INTEN .GLOBL MAXSYH .GLOBL LSI11$,$MFPS,GETPSW ;DV15 .IF NE BF ; GLOBALS STRICTLY FOR F/B: .GLOBL BCNTXT, BKGND1, BKGND2, BKGND3, BLIMIT, CNTXT, FPPINT .GLOBL FUDGE1, FUDGE2, MSGENT, RMONSP, SWIPTR, SWOPTR, TTIUSR .GLOBL TTOUSR, .$CRTN ,IMPLOC ;DV15 .IFF ; GLOBALS FOR BACKGROUND ONLY MONITOR .GLOBL I.CSW, FPPADD, FPPIGN, MONLOC, TRAPLC, TRAPER .GLOBL TTOCLO, TTILCT, AVAIL, MONCAL .ENDC .SBTTL SYSTEM PARAMETERS ; REGISTER DEFINITIONS: R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 PS=177776 SR=177570 ; ASCII DEFINITIONS BELL = 7 BS = 10 TAB = 11 LF = 12 FF = 14 CR = 15 ESCAPE = 33 RUBOUT = 177 ; INTERRUPT PRIORITY DEFINITIONS: PR0 = 0 PR4 = 200 PR7 = 340 ; CONDITIONAL ASSEMBLY PARAMETERS .IIF NDF CLOCK, CLOCK=60. ; FOR 60 CYCLE .IF NDF $SLOT ;DEFAULT 14 DEVICES (DEFINE ONLY IN PASS 1) $SLOT = 14. .IIF DF BANDW, $SLOT = 18. .ENDC ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; THE WORD CONFIG (IN RMON) GIVES INFO ON THE OVERALL STATE ; AND CONFIGURATION OF THE SYSTEM. THE BITS CURRENTLY DEFINED ARE: ; ; BIT # MEANING ; ----- ------- ; 0 0 => THIS IS THE B ONLY MONITOR ; 1 => THIS IS F/B MONITOR ; 1 1 => TTY HAS HARDWARE TABS ; 2 1 => GT40 HARDWARE EXISTS ; 3 1 => BATCH IS RUNNING ; 4 1 => VT05 IS TERMINAL ; 5 1 => 50 CYCLE CLOCK ; 6 1 => FPU HARDWARE ; 7 0 => NO F JOB IS RUNNING ; 1 => A F JOB IS NOW RUNNING ; 8 1 => USER LINKED TO GT40 SCROLLER ; 9 1 => USR MAY NOT BE SET TO SWAP ; 10 1 => BATCH IS RUNNING ; 11 1 => LSI11 PROCESSOR (I.E., NO PS OR LKCS) ;DV15 ; 15 1 => KW11L CLOCK EXISTS FBMON$ = 1 HWDSP$ = 4 BATCH$ = 10 CLK50$ = 40 HWFPU$ = 100 FJOB$ = 200 GTLNK$ = 400 USR$ = 1000 LSI11$ = 4000 ;DV15 KW11L$ = 100000 .IF EQ CLOCK-50 CLK50 = CLK50$ .IFF CLK50 = 0 .ENDC ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; THESE ARE PARAMETERS USED IN THE USR ; FOR SPECIAL DEVICES; E.G. CASSETTE AND MAGTAPE LOOK.. = 3 ;LOOKUP DELE.. = 2 ;DELETE CLOS.. = 1 ;CLOSE ENTR.. = 4 ;ENTER ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; THE MONITOR USES WORDS 40-56 IN LOW CORE TO HOLD PARAMETER ; INFORMATION ON THE RUNNING JOB ; THESE LOCATIONS CONTAIN THE FOLLOWING INFORMATION: ; ; ADDRESS BIT(S) MEANING ; ------- ------ ------------------------------------------ ; $)  `ee& dG F  `!  ae``````` `1`d`wt ? ? ,0 < EP$7 (, 3 v3 3 ~3 L37  ,E$7eC5$w x .H @@  #%  +C!CA Ջ e R l*A .  e$ "7 < 7?ILL CMD?鈇o& ee(  E e% 7?ER RD OVLY? A K E E ͥ- 㺇 e l B @ @ ؁  B^ eE͋=,e    : x , enEO e   $5 7 EBc7?ADDR?O e @ z %zO: ( 4   5$,( ""@5@ A ej  %@Ae Fuu| 7?FIL NOT FND?7?SV FIL I/O ER?w5 $ 2  8g e6E (7?OVR COR?  E $   :  <  @  ef D!%  R`W!&&   eR f .  & f& 懇? cef `% 7?SY I/O ER?  W ,,e (wvd@7$e   e7B?FILE?r ? & f,e $&EΔNIQ%Ό%@ 2EQU E`H#Hee&b,e 6e  %e& e7v?ILL DEV?'((U  EE ` ؁  RUREG E D BTSERNI<u~vK YM|.wbjT^%%W&&'''()O ER?  W ,,e (pewvD@7$   k7@?FILE? ewTq~ ? & f,e $&EΔNIQ%Ό%@ 2EQU E`H#Hee2b,e (e  %e& e7h?ILL DEV?'((U  EE ` ؁  RUREG E D BTSERNI<u~vK YM|.we(zsdlV^..W..0 0044000OCK 6 E.NAME = 2 ;FILNAM.EXT STARTS AT WORD 2 E.LENG = 10 ;SIZE OF HOLE ALLOCATED E.USED = 12 ;HIGHEST BLOCK WRITTEN (NOW 0) E.CHAN = 12 ;WHILE TENTATIVE, HOLDS CHANNEL NUMBER E.JNUM = 13 ;FOR BF, HOLDS JOB NUM E.DATE = 14 ;CREATION DATE L.ENTR = 16 ;LENGTH OF DIR ENTRY ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; THE ONLY DEVICES BESIDES THE SYSTEM DEVICE WHICH ARE ASSUMED ; TO BE PRESENT ARE THE TTY AND THE LINE-FREQUENCY CLOCK ; DEFINITIONS OF TTY STATUS WORDS: ; TKS = 177560 ;READER STATUS TKB = 177562 ;READER BUFFER TPS = 177564 ;PUNCH STATUS TPB = 177566 ;PUNCH BUFFER V.TKB = 60 ;KEYBOARD VECTOR V.TPS = 64 ;PRINTER VECTOR V.FPP = 244 ;FPP AND FIS VECTOR .IF EQ BF TTYIN = 82. ;82 CHARACTER INPUT RING TTYOUT = 32. ;32 CHARACTER OUTPUT RING .IFF TTYIN Mf,!e4 Qa ew* e w$ ew  ? "  e< aAa@C @ @E $ HT_n|?M-ILL USR ?M-NO DEV ?M-DIR IO ERR ?M-BAD FETCH ?M-OVLY ERR ?M-DIR OVFLO ?M-ILL ADDR ?M-ILL CHAN ?M-ILL EMT ?M-TRAP TO 4 ?M-TRAP TO 10 ?M-FP TRAP : 6 $D DeC B`  ew EACH DEVICE ; IN THE SYSTEM ; HANDLERS WHICH ARE VALID SYSTEM DEVICES MUST HAVE TYPE 'SYS' ; OTHER HANDLERS FROM WHICH PROGRAMS CAN BE RUN MUST HAVE TYPE 'RUN' .MACRO HSIZE HAN,BYT,TYPE HAN'SIZE = BYT .IF NB TYPE .IIF GT BYT-MAXHAN, MAXHAN = BYT .ENDC .IF IDN , .GLOBL HAN'SIZE .IIF GT BYT-MAXSYH, MAXSYH = BYT .ENDC .ENDM HSIZE MAXHAN = 0 ;MAXHAN CONTAINS THE MAXIMUM HANDLER SIZE MAXSYH = 0 ;MAXSYH CONTAINS THE MAXIMUM SYS HANDLER SIZE HSIZE TT,500 HSIZE RK,342,SYS HSIZE DP,434,SYS HSIZE RF,270,SYS HSIZE PR,174 HSIZE PP,132 HSIZE MT,4300 HSIZE MM,4700 HSIZE LP,306 HSIZE DT,322,SYS  ~? bWW B abJFw? ? a@w 7Rw $!5@  e<NSSewN  U7 ͆ 7 7  w ~w wjw d4.7 v7 tw * 7e`w @%1@% @#eee%7`p 7 w   e# / wxEK]w d ؇f  w 0 E0w!z 5 1   $ZX w 6    < w  h  `5El $f w   $PPw w  w  pw  ? we`EW2El  7 PFaP=7 B*#7D 2a,`e# B#e`#w *ed%   . b$ `w#   7 "3 f7 Kaes S w b 5Sw I3W2Wl Ew C $ A#EE P &EΒE? >#:?2w *eD e& &Ne$e E & && e& ~ee ?  w &fmD$CeK   baba& Nw^ e 7@Ŋ` & *J E%=%< D  "% %  p"B  >'  7 e  O  $e d W&E77   `B7?DEV FUL?e " 6  0`*7?FIL NOT FND?5 W,W=͋=7?ILL CMD?7z?ILL DEV?5 & W/@` W!W:@ 8& U& Uef \* e w& e∩ W[ W]  @W: 0$W. eR& &$ >W*@ "  @:e e W a `  (  &N W-e E  C0Π a `  6 B@|Z BZD CeK   & Nwv e& TG C `w.IprtvbA<?30.f>zz 8rpqff`TM HS  @   p?xJ>Ew  D eEE eIL@N  7?ť&6  fe  amxagjbd`Vp0t QN D   &7 T $uFD*eaU6  ) 2@" _ *%@ *^%ZAw5@xZA^V%&f&   ac(2 "b&8$ **w w 7 5 : 6e PH-  &U$.5$ $͋ e q"R@  ͊ U wN E$ee)U%Me-r7 edF7 7 ^ee J&Z v$H $ ( Xe6@'( EM( > U%e 2(rh"U$7  7  "7 5z7 E$(7  *U$5$Awe>& bE[5@$ a zE ee `}~, , , ,    % W#Q u#R  5$  <4  7  t w f 3    .6& < &  x|7 v? @     D P7 ĥ  舗  5@fd u#eR LELELEEEEEA|$EQ]$TfA$l|X5@&% +_ * %& D \!$bEeT% * " @O e.7  @ &>4 u# W%*L# E  ?\#  4% 4  .?0 $ ̗/ ? % &LE Ea5% (7 |5"5 E Eaex l 5 L E E 7  s!5s  ENEae E % φe`B`N ˋ  w  5E R !&5j $7 ^ LeH !   > j $7 7 R . " JĔ NĔ F&f&I e`  &e@^we3 D w7 I&e B& 7&  TT L4L4f x & f & T  w54B  e  L$  w E % * *  wߋ$ɀ *U  P5$ .~)˵'ӵU$ aC  `  7Bw~7* gU? |x 2@x L 5z 7  b5@ 7RB t :% eC % C ``` e̋̋ 6@XU@D`J 67 055n @e,}7  #̋ 7̋4 Fe bw  (7?M-SWAP ERRwH | (R & w *ew  H&&D B· D 6Ƈ:%7 X "7 J7&, w ׭whE 75  7   7 7 w X ( 7 >w| EaB )1 ĕ^ $  Lcĥ    U C 7 7 ew VeD e,  Ce1%R ZHp5E   e  eH w.7?DAT? ””#e,e Y5 2t2.e" )$ & >Ĕ!9S͋5 eA ĒB `A `, p&  7 d<@&7 V<  0:7F?TIM?7  6 0 \7 6WJE n D7 >4HՐ נ  -    6 &  5 - w!LJ& 2֥  5 7 -!E%%%%% 7V ^7 V  7K 7=78 B(f,EA    w5@E PP J< 47a7a7aT7a7a7a7a7a7a7a`m, be&` ee wD1 w:1B*e@eAf . 6 w`& w   $)& E%I р v < w , e Res5  Me   ( e&"x U@f&e _*a @E @( & EEPxG7J6 BNP "XNx ̋R   ҁӤӤ5 :7hbX] RT-11FB V02C-02 1̋΀R  <_ &  %C e  7 ?B-I/O ERROR vߋtȋ xE  e  pZ@ `D fHT HTHTS K INPUT EMT BLOCK IN BA TST (R0)+ ;R0 -> INPUT BLOCK # SAVE (R1) ;SAVE THE BLOCK NUMBER INC (R1) ;BUMP THE BLOCK # IN BA MOV (R1)+,(R0)+ ;AND PLACE IN EMT BLOCK SAVE R0 ;POINTER TO INBUF POINTER ADD #6,R0 ;R0 -> INPUT SAVE STATUS AREA IN BA SAVE R1 ;SAVE PTR TO BATCH STACK JSR PC,WRTSTK ;WRITE OUT THE STACK TST 4(SP) BPL 2$ BIC #ABORT,(R4) JMP SWTR3 2$: ADDRLO WDBLK2+2,R0 RESTOR (R0) ;R0 -> BATCH STACK ; REOPEN THE INPUT FILE THAT WAS PREVIOUSLe,  Ce1%R ZHp5E   e  eH w7?DAT? X””#e,e ]5 2|2>A 2e& '$ & Ĕ!7S͋3 eA ĒB `A `, e A p`7 l<@&7 ^<  0:7$?TIM?7?NO CLOCK?T% ee/ e0wdw  A @  -JAN-FEB-MAR-APR-MAY-JUN-JUL-AUG-SEP-OCT-NOV-DEC-:<:<.<I e6(,eĊ ͋#! C͋ͥ ͥ,u W- !k$,1!2c  e V f/RD`? # e(e & 3 & &( &   ef  f %7V?PARAMS?UwXDESTON+BSOURC+BDESe, 2 ͋ eC   we "    t  ͋ex ; ARGUMENT LIST FOR READ/WRIw  www4e n 67 0 ͥ= BͥF; 7 !( 6&7,e  , W  w wjN`!,,, h  T  ""eR ,Q$W 8fmX aЁ ? :͋w  "J  - # 3c  - D @&c%Lbtt&b%0c0f%P4H@ (`e tEf,DD5S"&: " W-\-7 *D" ! (Cm$ ', Q$W 8', $)  `6`? ͋ww 5 DE 6``7?NO FG?7?F ACTIVE?MexpEg,e&fˇ& ㈄ e !ꈇ,ADU@E@7R?NO FG?,D5*0 DE <``?  pw,Em/ F2LER IS USED TO CONTINUE ; THE BATCH STREAM WHEN A NEW JOB IN A CARD STREAM IS ENCOUNTER7 R7 8>͋%ͥ/@P:ͥ!  %N%Sw> ? wn7 7 d Ce*f"ma 76d%Tqw,`  6 A9 ee aZaAea7 J7Da# #Km ec `cc ` cc `m# (e@`QQ`B`IeQ ee" F>  eg,RRRRReH>@DedFee(e&* :7  @` Z J U % | "7(?REL FIL I/O ERR? mJ H`H ,U86D? U@e" whLOADED AT L77@e ߋ*! %   *-" # 3c  - D @&c%TdL!)t&b%0e )%P4H@ J`E IN THE INPUT ; .B,e5D5 e h%_%^[wb  e5 (͋ͥ/@:ͥ! vT%L%)&@ef 6e 6o t> wD < 2 !E  11& d`e ?x ,-$ # 3c  - D @&c%TdL!)t&b%0e )%P4H@ L`,7 7e0E0 7 : j"Je"9zzS? $ & &Je@@ONU X B b$C7$"A . $ 7 2=E@ F@! B` 7 ,- & &w:ww,E]: e5rPPPPP@P@Yzd *}%Gwd%'@Q%%%/d@%,@~-@%%_(@1\d41@P e鈇Ce>&  W  %W UNPURE .BYTE 0,1,2,3,4,5,6,744$&,^ 0M? H &  % w!ͥ  p 7 å å~ y7ox7 Z  0å  LW<E b 87 26Ր -(    6 &  5 - w!L<& 2֥  5 7 -!Eދ %%%%% 7X ^7 X  7M 7?7: 4 *f,EA    w5@PP <. 47a7a7ad7a7a7a7a7a7a7apm, Pee  wh1 w^1B*e@eAD "  6 ,-(R0) ;CHANNEL 0 EMT 375 ;LOOKUP BCS DSMTER MOV #WDBLK5,-(SP) ADD R4,(SP) MOV R3,R0 EMT 16*20+2 ;.DSTATUS BCS DSMTER MOVB WDBLK5(R4),R1 ASL R1 ADDR DEVLST,R2 ADD R2,R1 .TTYOUT (R1)+ .TTYOUT (R1)+ ; TO GET UNIT # WITHOUT DOING A SAVESTAUS (IL  A A?w:[>zCFANJBA RT-11SJ Y02C-01y e ` E Pc ˋ 7 ?B-I/O ERROR vߋtȋ xE  e  ~h@ `D fHT HTHTS K,ee 6 e @B5 Sr;zaX'5lem7 ?B-NO MONITR.SYS 7 ?B-NOT ENOUGH CORE e&^e  ee ~"tCeetHa a a5$a , A A A A Ep`p`p] t?a !aW,8r`p %e 8?ae?w P $ @5r5j@f ,04@>>>C8E:E>E@EBEFEHE>r?JK>@&A BR LUKXIT ENTRLO DEVSPC,BATEND ; LUKUPF DOES LOOKUPS ON ALL CHANNELS LUKUPF: MOV R0,DEVSPC(R4) ;UPDATE THE HANDLER SPACE POINTER ADDRLO WDBLK2+2,R0 MOV R3,(R0) MOV #1*400,-(R0) ;LOOKUP MOVB (R2),(R0) ;SET IN THE CHANNEL NUMBER EMT 375 BCC LUKUPN SERROR LUKXIT: JSR PC,CLOSE ;CLOSE INPUT FILES, IF OPEN .EXIT LUKUPN: INC R2 ADD #10,R3 DEC R5 BGT LOOKUP ; AT THIS POINT MUST TEST FOR /S SWITCH AND CALL EOJSUB TO PUSH ; THE BATCH STACK BEFORE CONTINUING. BIT #SBIT,BATSW2(R4) ;WAS /S SWIT$)  `ee& dG F  `!  ae``````` `1``wZ EP$7 6,3 2 3  .E$7 eC5$w n .H @@  #%  ,C!CA Ջ e  R l0A   e* $7 R 7?ILL CMD?鈇o& ee<  E e% 7?ER RD OVLY?EA K E E ͥ- 㺇 e l B @ @ ؁  Br eE͋=,e    N ` , 2 eEO e(   $5 7  EBc7?ADDR?-O e @ z %zO: ( < |  5$,( ""@25@ A e0 %@AeFuu 7?FIL NOT FND?7?SV FIL I/O ER?w5 $ 2  g ePE (7?OVR COR?  E $   B  <  @  ef D!%  R`W!&&   ef f .  & f& 懇? cef `% 7?SY I/O ER?  W ,,e (pewvD@7$   h7@?FILE?BwTq~ ? & f,e $&EΔNIQ%Ό%@ 2EQU E`H#Hee2b,e .e   %e& e7n?ILL DEV?'((U  EE ` ؁  RUREG E D BTSERNI<u~vK YM|.we(zsdlV^..W..0 0044000R5)+,R0 ;R0 = DEFAULT DEVICE TST (R1)+ ;BRANCH IF DEVICE WAS SPECIFIED BNE 1$ MOV R0,-2(R1) ;NO, SO USE DEFAULT DEVICE 1$: TST @R1 ;WAS FILE NAME SPECIFIED? BEQ 2$ ;BR IF NOT, USE INPUT FILE NAME CMP (R1)+,(R1)+ ;POINT TO EXTENSION BR 4$ 2$: ADDRLO SPC3+2,R0 ;R0 -> INPUT FILE NAME TST (R0) ;BRANCH IF INPUT FILE EXISTS BNE 3$ ;AND USE THAT AS OUTPUT NAME, ADDR TMPSPC,R0 ;ELSE USE THE TEMPORARY NAME. 3$: MOV (R0)+,(R1)+ ;TRANSFER NAME MOV (R0)+,(R1)+ 4$: TST (R1)+ ;WAS EXT SPECIFIED? BNE 5$ ;YES, USE IT MOV R3,-2(R1) ;NO, USE DEFAULT 5$: ADDRLO WDBLK5+6,R0 CLR (R0) ;LAST WD IS 0(CT,MT ONLY) MOV (R1),-(R0) ;SIZE SUB #10,R1 ;FIX IT UP MOV R1,-(R0) ;POINTER TO DEVBLK MOV #2*400,-(R0) ;ENTER MOVB (R2),(R0) ;SET IN THE CHANNEL NUMBER EMT 375 ;.ENTER BCS 6$ RTS R5 6$: TSTB @#52 BEQ 7$ ;CHANNEL IN USE SERROR .EXIT 7$: SERROR .DSABL LSB .EXIT CRLF: .WORD 0 TMPSPC: .RAD50 /TEMP/ LOGERR: SERROR .EXIT ; THE LOG FILE MUST NOW BE CLOSED SO IT MAY BE LOOKED UP AND ; THEN .SAVESTATUSED FOR PASSING TO THE BA HANDLER. STRT8B: CLR SPC1+10(R4) ;NON FILE STRUCTURED START8: MOV #6*400,R0 ;CLOSE BISB DEFCHN+1(R4),R0 ;PUT IN LOG CHANNEL # EMT 374 ;DO THE CLOSE ADDRLO SPC1,R1 ;R1 -> LOG FILE DESCRIPTOR ADDRLO WDBLK2+2,R3 MOV R3,R0 ;COPY PTR TO EMT BLOCK MOV R1,(R0) MOV #1*400,-(R0) ;LOOKUP SPC1 MOVB DEFCHN+1(R4),(R0) ;PUT IN THE CHANNEL NUMBER EMT 375 ADDRLO WDBLK5,R1 ;OF LOG FILE IN WDBLK5. MOV R3,R0 ;COPY POINTER AGAIN MOV R1,(R0) MOV #5*400,-(R0) MOVB DEFCHN+1(R4),(R0) ;SET IN THE CHANNEL NUMBER FOR SPC1 EMT 375 ;SAVESTATUS FOR LOG BCS LOGERR MOV ODATA(R4),R0 ;R0 -> OUTPUT SAVE STATUS AREA IN BA JSR PC,BEGSUB ;XFR SAVESTATUS DATA ST Mf,e Qa ew e w ew  ? R4) ;IS X SWITCH ON? BNE 1$ JMP STCMPL ;NO, MUST COMPIL FIRST ; ONCE THE BATCH STREAM IS COMPILED, OR IF IT WAS PRE-COMPILED, ; CONTROL COMES HERE FOR FINAL PROCESSING BEFORE EXIT. IF THE ABORT ; BIT WAS SET DURING COMPILE, THE JOB IS NOT EXECUTED. ASSUMING ALL ; IS O.K., THE FOLLOWING CODE PASSES THE NECESSARY DATA TO THE ; BATCH HANDLER. 1$: MOVB DEFCHN+3(R4),-(SP) ;SPC3 IS A COMPILED INPUT BEGIN: ADDRLO WDBLK2+2,R0 ADDRLO WDBLK5,R1 MOV R1,(R0) ;COPY POINTER MOV #5*400,-(R0) MOVB (SP)+,(R0) ;SET IN THE CHANNEL NUMBER EMT 375 ;SAVE STATUS BCC 2$ JMP OUTERR 2$: MOV INDATA(R4),R0 ;R0 -> INSAV-12 IN BA JSR PC,BEGSUB ;MOVE INPUT CTL SAVESTATUS TO BA MOV ODATA(R4),R0 ;R0 -> LOG EMT BLOCK IN BA TST (R0)+ ;POINT TO OBLOK BIT #SBIT+MAKEB,BATSW2(R4) ;IF THIS IS A $CALL (/S) BNE SWTR3 ;LEAVE LOG ALONE CLR (R0) ;START AT BLOCK 0 MOV OUTBUF(R4),@BATOPT(R4) ;RESET BA OUT BUFFER PTR & CNT M? JWW B abB>0w? ? a@w 7w t!5@  erNSSew  U7 ͆ 7 7 w w ww z4.7 l7 jw * 7eVw @%1@% @#eee%7` l7 Nw   e# / wEK]w  ؇f  w 2JELw!t 5 41   $$ѝџnN w r    2 w  h  `5El zf w   $PPw w  w  w  ? wexEW2El  7 YTaPC7 K8#=D #L 2a,`e# ,#e`#w $!eJ%    b$ `w#    7 73 f7 "0/E ``mE5 E /Kaes S w b 5Sw VI3W2Wl Ew C $ A#EE P &EΒE? #?w eD e& &Ne$e lnE & && e& ZPee ? nz w ^&fmw )B m` E /Jŭp f el BBE/aw "Ba5lafw |CRC!  BC 5aW* Q!E(A W   TN`Be 7Em@5f3 w w Gw  0w P xe$PPPH (fEEew ~ EN  @EUw 5@eBB ` ? wmLe&l w  7 &w Dw  Be$B  wdQ$mw 2 "x  D@|X @B@ZD CeK   & Nwv e 7@ŊJ E%=%< D  "% %  p"Bj >'  7 2e * O  $e$ v W&E77  & `B7?DEV FUL? 4 6  0`*7?FIL NOT FND? W,W=͋=7?ILL CMD?7?ILL DEV? & W/@` W!W:@ J& U& U ef Ev*  e z& e∠ W[ W]  @W: 0$W. eR& &$ ,W*@ "  @:e e W a `  (  &N W-e E  C0Π a `  6d@7$e   e7B?FILE?Or ? & f e $&EΔNIQ%Ό%@ 2EQU E`H#He&be 6e  %& TG C `w2Uprtv:D~V<?302$$CHEzz 8rpqff`TM HS  @   fM6]TBE0EBDDDD # SAVE SPC0+6(R4) ;SAVE CTL EXTENSION MOV DOTS,SPC0+6(R4) ;PUT IN CTT EXT TEMP. SAVE R3 JSRDDER ;ENTER FILE.CTT SPC0 DOTS: .RAD50 /CTT/ .RAD50 /D B> :DA|0E]]$`rA0l|X$5@$% +_ * %& ,ff 5  *%"&  * C C 7| ?M-ILL USRNO DEVDIR IO ERRBAD FETCHOVLY ERRDIR OVFLOILL ADDRILL CHANILL EMTTRAP TO 4TRAP TO 10FP TRAPЋ D @ @eY= e7 w BaeC C ߐ*Uv  m?M-DIR UNSAFEH Ef&f&  D eEE e ?w J 6@N ^5,ť' aE w   fw   f"  aCm*e wZ  C(& eK# c w .m<c e:B " s yeBMs  C  CU=HnH `T 4 27 @ *6  " .  &%@%w  / %w ' e3BAe ( 5@$7 <@W" wf7@  e` n ae "  T P7 n7 t7 t7 5"7 @HB t(5 X <e!7^ w  BE w *U  (P5$ `7  5T  ac\ "~:0^ UA  8+" E  *7 @@   <7U  UU$ E$&v­7 H  bpw $ w e JB  $e: B  "5eF> @( e @EM( & U%e(  7 ?M-SYS ERR鈀 rhUe dw  (7?M-SWAP ERRwP | (P & w 0ew & F$&D H· D <Ƈ8%7 V &"7 H7$, w ׭ wpE 75  7   7 7 w ` ( 7 Fw| EaB )1 ĕ^ $  Ldĥ    U C 7 7 "ew  WeD $d  ĥ$E5e27  ʥ'  2$4w ( 5 p  Fjv3 Uh U 7 8 ? 0 ) $@5w F?w  w `Ee0AeB5@ a zE Ì ` 75 W- w F\W"d5 q"d 8 -$ ,57 & @5 e% elfqw N 7 5M fe D q"ed  $w  0&@# w \:D:D>T } ~V^ U@%6%$% % % e "E%'* ,( w& D D ĥ ĥĥ ? w ` ׋`eCS6T w*I $ %m5%e-wE-Y7 n ee#(JLŀ 5 7    ?P./6 P  5h 5Z$ U eHEB  <π̊? ҁe L Ea<0Q$ 7ɕB7  -CeB7  5!5 EEal 5 w E E  LCeB7  s!5s Nf ew ( w !ENҀEa E % e`B`N  ˋ w Ce F5E^P aePPPE߀a55 N aef##  a^f&   E3  eae6 &     e& 0 new` @ 3 7 h7 f&  , e&fD 7 &f  DN &    PT L4Lew ,6U  IB(@-t   " $7 œ & *w N w E D EaEJ 7  7 fa- C BE 0U  @@%  vL "V%t  5 aE5Ue ^ 0L%w e6jHb` Hh$OB"> e w Fe8!e- -4  E  v   N %@  E `Cae:w г*w w EɃ @` lKED  tww df& %wzwWa? =-:& 7 aEU& V 5 fNe r @& 0]&LE N * # &&5@$ d"%ex"7?7 & Č7ae5Po ͋5@  ew w e@ExFw U & 8 7)NW!5  2 U%e* 5 5 u@D5 BE@Q$-Jd$$ ,e" 5@x  $d$$B w`e(DB *B# 5@4  TT  7w ͋&&EmUeU*$ [7w Ze / 5w`& w   $)& E%~I р t : w * e Hes5  Me    e"n U@f&e _*a @E @( & %  H & e &      w D?Ut ?IjUb^Ew!X  dwXwR VŌ 5 MfE H $ ( Pe6@'( EM( 6 U%e *(rh"U$7  7 ~)˵'ӵU$ aC  `  7Bw~7* gU? |x 2@x L 5z 7  b5@ 7RB t :% eC % C ``` e̋̋ 6@XU@D`J 67 055n @e,}7  #̋ 7̋4 X  舗  5@f\ u#eR LELELEEEEEBATIO3: BIT #EOJ,BATSW2(R4) BEQ 1$ CMPB #11,1(R0) ;WRITE? BEQ 1$ BIC R2,-6(R0) CLR R2 BR BATIO4 1$: D \!$bEeT% * "e,  Ce1%R ZHp5E   e  eH w7?DAT? ^””#e,e ]5 2|2>A(:e& '$ & Ĕ!7S͋3 eA ĒB `A `, e A p`7 l<@&7 ^<  0:7*?TIM?7 ?NO CLOCK?% ee/ e0wdw  A @  -JAN-FEB-MAR-APR-MAY-JUN-JUL-AUG-SEP-OCT-NOV-DEC-:<:<.<  e6(,eĊ ͋#! C͋ͥ ͥ,u W- !k$,1!2c  e V f/RD`? # e(e & 3 & &( &   ef  f %7\?PARAMS?w^ L4e, $2 ͋ eC   we "    t  ͋ex $  w E %w  www4e t 67 0 ͥ= BͥF; 7 !. 6&7,e  , W  w wjN`!,,, h  T  ""eX ,Q$W 8fm^ aЁ ? @͋w "J -  # 3c  - D @&c%Lbtt&b%0c0l%P4H@ .`e zEf,DF5S"&: " W-\-7 *D" ! .Cm* ', Q$W 8', $)  `6`? ͋ww 5 FE 6``7?NO FG?7?F ACTIVE?)e~pEg,e&fˇ& ㈄ e !ꈇ,AFU@E@7X?NO FG?,F500 FE <``? ev jw,Em/ F2BIC R2,OTSTAT(R4) 3$: ROR R0 ;WAS THERE AN ERROR TOO? BCS RWERRC ;ERROR IN 7 R7 8>͋%ͥ/@P:ͥ!  %N%SwD ? w7 7 x Ce*f"ma 7Fd%Tqw<`  6 A9 eeaVaAea7 F7@a# #Km ec `cc ` cc `m# (e@`QQ`B`IeQ ee F>  e e g,RRRRRe eH>@DedFee(e&* &7  @` Z J U % | "7?REL FIL I/O ERR? mJ H`H ,U86F? U@e" wZLOADED AT L77@e ߋ*! %   - # 3c  - D @&c%TdL!)t&b%0e )z%P4H@ <`,e5D5 e n%_%^[wh  e5 (͋ͥ/@:ͥ! |T%L%)&@ef 6e 6o t> wD < 2 !E  11& d`e ?x 2-* # 3c  - D @&c%TdL!)t&b%0e )%P4H@ R`,77e0E0 7 : j"Je"9zzS? * & &Je@@ONU X B b$C7$"A . $ 7 2=E@ L@! B` 7 ,- & &w:ww,E]:e5rPPPPP@P@Yzd *}%Gwd%'@Q%%%/d@%,@~-@%%_(@1\d41@P e鈇eD&  W  %W @ F`R4) ;$SEQ OR OTH44$&,^ 0M? H &  % w!ͥ  p 7 å å~ y7ox7 Z  0å  LW<E b 87 26Ր -(    6 &  5 - w!L<& 2֥  5 7 -!Eދ %%%%% 7X ^7 X  7M 7?7: 4 *f,EA    w5@PP <. 47a7a7ad7a7a7a7a7a7a7apm, Pee  wh1 w^1B*e@eAD   6   -    6 &  5 - w!LJ& 2֥  5 7 -!E%%%%% 7V ^7 V  7K 7=78 B(f,EA& H &&E5@*B53'UUUClL55UM E55 pU ߕ eV,}ߋȁe%e4,}T TO Q MANAGER ADD #RKCQE-.,R4 MOV @#SYSPTR,R5 JMP @OFFSET(R5) $INPTR: .WORD $INTEN ;MONITOR INTERRUPT ENTRY POINT RKSIZE = .-START .END ~)˵'ӵU$ aC  `  7Bw~7* gU? |x 2@x L 5z 7  b5@ 7RB t :% eC % C ``` e̋̋ 6@XU@D`J 67 055n @e,}7  #̋ 7̋4 NT ; WHICH IS NOT SUPPLIED BY DIGITAL. ; ; ; ; ; ; ; ; ; ; ;%@Qi62+@$@I:,:tbeRe(%e @`Hea_r _ = ^'\*;,(-".#/%J:M[N>O&+?)]< : # '="*\,%-_.>/?J]M)N;O^&[<(+(^ m5p U Lw  paŋ!tr-$:@E Ea_eU@p5@ zU%%9f ѕ ѕ w / -5peb7777 PApU5 ߀D U 7 L7P pe,} 12345678`:#@'="9\\\\\\\\\\0/STUVWXY\\,%_>?Z\\\\ \\\\\-JKLMNOPQ\]$*);^R\\\\\}~stuvwxy\\\\\\\z\\\\\\\\\\\\\\\&ABCDEFGH\[.<(+!I\ \\\\ {abcdefgh\\\\\\\i\\\\\\\\\\\\\\|jklmnopq\\\\\\\r\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\,@~@'U$@62+) xK.K37*7R <9!   ,e  f  ECU`_R     7 fe 7W W wW -` e6@`ȰUHe@`b wv|<D `    T``Ї > @`P 4 h    5Pw] | wZ ePPP@PPЇ5P B5Pee e   D !((  !ee0!   87 2 P$VO$L1w 5@P/0HD  >e   ewp .! W  ee  1$: MOV TXTBLK,-(SP) ;SAVE ADDR OF CURRENT BLOCK MOV R1,-(SP) MO X ~ e   PD NA  1OVOL1RT1101eЕDD%Е% *2 V  j d  ]  d  @ehPPPPP@ ( $5 P   w$%b ReVR  5@PgT U , T w 7H 5@P P ,.  z  " *wL  ee    VERE TO PUT THE C,0 7  v 7 j 7 ^ e BV eeb , Ee^D`W     EC`EeHe Z ^   2 V;Zx0N eJ P!Е. e)ԕ0  W:ɕ0HDR1EOF1HDR1 RT110100010001000100 00000 00000 000000RT11  aee:!EwvW wVxf  P @aebBB B 0 B7VT_RUAR ~5U,5|5@x5 5ZE@R twR,^ @&f&E@R\e*& 5"EdP5U:7545-<-58)REaeb.. -T Tw TwU<1U4/' @ 81 8     V n  07 e,}DD THE DIVISOR(CORRECT THE REMAINDER) MOVB R3,(R1)+ ;OUTPUT THE NEXT DIGIT TST @R2 ;DONE ? BNE CONVRT ;NO, DO NEXT DIGIT RTS PC .END   ,e     EC   (:U56UNP:    fte 7e W wJW  ve6@`ȰU"e@`b whX`4 T    p``Ї  W aem * r: @`P  h    5*wr]  wZ epPPP@PPЇ5* \5*ee e   D !((  !ee0!   7 ($VO$L1w 5*/HD  >e   ew .! W  ee  OF SECONDARY BOOT BVC 4$ ;BRANCH IF NO ERROR JSR PC,RETRY ;OTHERWI r V e   PD NA  1OVOL1RT1101eЕDD%Е% *2 > .  ~ wn ]  ~  ZeLPPPPP@ B >5* $   w%$ le>  5*g& U , w 7 5* R ,  : " *wL  ee  J   >RTCNT BEQ HERR,0 7    56 h 7` j 7T ^ e B> ee  , Ee^D`W     EC`EeHe Z ^  2 >;Zx0N eJ P!Е. e)ԕ0  W:ɕ0HDR1EOF1HDR1 RT110100010001000100 00000 00000 000000RT11  aee!fEw]TW w ݂Bf  *@ aebXX X F \7b$"^&aeAW CyqWY[UG 5U5w5 5 E@ Hw,^ @&f&l5 M656, ,׭w U 5*׭ [&w(7 Y|ej& 5e -_5@*5@  ~(5O54 ,5  &׭q ^25׭q &55׭rq5"5 *5x  ׋  ..U@ U(1U /' $ [ |  C d $> D Z7 e~,}ERATION WAS SUCCESSFUL ; THE V BIT SHOULD ALWAYS BE CHECKED BEFORE THE C BIT, ; BECAUSE IF THE V BIT IS |8$ 0% h,Ah P`e h j Uh < U EAhe,}U E55 pU ߕ eV,}ߋȁe%UED ; AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. ; ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE ; OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT ; WHICH IS NOT SUPPLIED BY DIGITAL. ; ; AUGUST 1975 ; ; BOB BEAN ; ; .SBTTL SYMBOL AND MACRO DEFINITIONS .MCALL .REGDEF .REGDEF X< U@l 4` l e  n U le,}U EAhe,}UE SHALL AT ALL TIMES REMAIN IN DIGITAL. ; ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO ; CHANGE WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED ; AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. ; ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE ; OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT ; WHICH IS NOT SUPPLIED BY DIGITAL. ; .CSECT PC11PR R0=%0 R1=%1 R2=%2 R3=%3 R p@,7le   7  EwP E-= U   7@ 77 W w:eW e@`Ȱ e@`b wU275  f ^Z\R  w >  `  B``Ї7 ,`P  2   < ] eRPPP@PPЇ7@  e0ʕ*70 7  ePPPPP@  :en  b7t 5   U   7  ene  H r 7 x  eNeeX7 z?7 7  .7 EwFtW ff  7PP`MrUA@$e507 ,eDN4 } n ߕ6  `,^ &fl@͋ | eB -vȒ TUE@5 2 KF7 8C5 5T \5  5: wE@@"Uw7j N ^7 xej,}e e $  D !(( U!ee0!  B7 <7r : Tȋ   ŀ   ew7 "-  Ve  5 !  " 7N5  7 t7 n  焇5"7wdeȝz0 鈇CT0: PUSH REWIND OR MOUNT NEW VOLUME e R eRҋ, E 22 "EeH ew~ee/:Re$-rL % ,ee b P  REST OF FILE STARTING AT 1000 JMP 600 ;START LITTLE ROUTINE TO READ ;REST OF PROGRAM .SBTTL CODE TO READ BULK OF SAV FILE AND START IT 0-776 WHEN EXECUTING ;MOVED THERE BY ROUTINE FOUND LAST: JSR PC,@#MTREADhE( 56 6%3 %q0 y% `@5`  (=e@%5N,5( dVU (eH,} BYTE COUNT BCS PRERR ;A WRITE REQUEST IS ILLEGAL TO PR BEQ SEEK ;A REQUEST FOR 0 BYTES IS A SEEK TST @#PRS ;IS READER READY? BMI PRERR ;NO. NO TAPE, PROBABLY MOV #PINT,@#PRS ;ENABLE READER INTERRUPT, GET A CHAR RTS PC BR PRABRT ;ABORT ENTRY FOR F/B ; INTERRUPT SERVICE PRINT: d?ILL CMD??ILL SWT??FG ACTIVE??SWT ERR??ILL DEV??FIL NOT FND??IN ERR??OUT ERR??DEV FULL??COR OVR??FIL NAM??NO UFD??BAD PPN??DIR ERR??FEATURE NOT IMP?   *4BKU`jt} 7 eN 7 ȋ ms;v77 x7Wv 87j : Dw B "  twfef ѕD$ADDB C h t H b bBbb8bbb|bf . @ < Dn"[ ', = < :A&I&P&STC.D.L.Z.&F.V.G+N1FILEX V02-02 :/Z ARE YOU SURE ? ALREADY EXISTS?&f zy鈠"7 , * BuHOՋ   FB    ]$ $   ɋfׇ &% F0 ,5E  PĊ   À dm af_f R [  L e  !3 fl v B B @E%% w!df V5! < :e w l   D  x &$ R  Pԕ ԕ  $@ H wf 6ԕ% %Y  ԕ.w *(L ee0 Af  A M A be  ԕ %5<&E  T e*  e@ 4-JAN-FEB-MAR-APR-MAY-JUN-JUL-AUG-SEP-OCT-NOV-DEC-w J ܁e0f"  @UX(@DR     v&ff C r ) xW2  / -f@$e@PЇe W4 UUUu Mee e m$ o7 ` & & `ߋ* Afw& 5  &  f&wae7 'w T  we W  -e w @ 7ep  ! 95 @3@_@ofNE# ?  e& fW,  w w wW@E . `7`w`W 7rW#@TT$ U%W#@tċw" w, w, A]]X  PC R H b? Ze -7& @/  j ee ^   UUUU UU eM UU      !    !"Jb  ba& f& Da ͊N | 6 D$$" e e eB& f  ԕ?( lԕ wf 7e0 ކwh7 7 @ @<  ee  ^HV&   eW ?BE8B m `? N   7 e  r J& Uw  @ LNH !  !!w.(x ^ <& $$PŠ JHBT :& 4    C:Ew eʕ5 & eee  Vfe#% eu8Bf  `Bf &$D  B& 󐈈&7 e7 7  eH & ކ f@  @ !e! "W,  & ɋP\& @8e Pw,!  " 6e EIQ   %a./=ʋe ef@@T@T ċ P(P(P(%ꆇe HE$H,W#n gW dwww$d eC jD7 e : e~N&6dw Tw 2-  w  L @f ee    w6ete 5Ç\m  !7B  ! x܁ !E& w (e w  e e& h @E@  P@ 7 ^& P eZ @  d %@ ɋ&w & ew Tw We7*&o 0ɋA7ww7 P7 R7Jf@!!!!7 $ Q Q @(  :e e    @c `&  :T & Ε,e   f` & Ε,e ȕe R b R D  & Ε,e 5L& Ε,e ,H :p EU & #Uȕ5#eEȕ5 #U 5& Ε,e  7 ,e& $e7 7 e7,7"5i&E  ae ew U $wgT , 7 7 U $"   ̋7?SWITCH ERROR?ťLP 57 5 5; $؂7R  HHp0 0  0  $n7H7  n HP $5p     H  LH DMe 2 D#EH% M-EDMe  LD#@77 -n^-  & -   W!  Fpw7 H0"  8e5d & \ V N 7H f&( w 4  D :% 1% % Uѐw }  5 0,e0,3$ 8w   && 7 ߋ* D 7?IN ERR?I7?TOO MUCH DIFFERENCE?&` 0 z" RS%ww 7T?COR OVR?&Bef D Е  P@ HB  C)ȕ/CCc 7Hj 7 d p2nͥ 5^ Lŀ7!R@& .7. 7" 5@7`?OUT ER?>RɋRʋ&@% -ɋ B   7w  ^ r J &fw   m8eW3[wmW5wm df< UNUSED > @ P#H-p-$  \ |w-  wc  @ ` C  <    @ PN!@  x &fW]D r -   FILES, B t BLOCKS  , T FREE BLOCKS S  H qwr-P@NK :/Z ARE YOU SURE ? @ b ~ a XT  r eTlA  &  w׭ 7?ILL CMD? RT11ߋtv ?B-NO BOOT ON VOLUME O@w p@w wP׭ ׭ w f& fwW#w v   @ @wP  @& 7 "  BLOCK@   IS BAD   -̂@ &   # p@ zw 7 P7 R & BH  z  Rì     s   p x] \Z 1  d s  -2&w*   4 s  ee  w& f a7  5  e7wfD`we  & wr fW3W-  r  cD >N & T e lW3ceem D  F 4   ? ?   p  wN  -`` ` z  ? 7 $7 JwPea% Np  T8e> R RUBOUT=377 ;RUBOUT ASTRSK=52 N jJ  w     <  em55---A*fU%m5 & 5!u#  ne` w ~ .pq7?EXT NEG?7?ROOM?E D d 7   e  †w7f?BOOT COPY?鈴PIP V04-06 EE]E `7` 7/7 ?COR OVR?|e ! !>M#@SS% #@S    ,@*,@& &  B j&7  ȝw7X?DEV FUL?7J?OUT FIL?@7 7 e meq7?FIL NOT FND? 9ne ׭ )XF B,75 e ( -5 j+ '@& && 7` &  ,7 5 ߋ* 0&&鈀7,?IN ER?W   @`7@E  w  %X @`7ъ7 7 Wwm @`  7?CHK SUM?|& &ce7T?OUT ER?B * & 5 , ,z ^& ", P,77 B &7 2?NO .SYS/.BAD ACTION??REBOOT?E @ 1kQ NO DIFFERENCES ENCOUNTERED %FILES ARE DIFFERENT SRCCOM V01-03 SRCCOM COMPARES TWO FILES IN ASCII MODE DEFAULT INPUT EXTENSION IS .MAC DEFAULT OUTPUT DEVICE IS TELETYPE SWITCHES ARE: /B ALLOW COMPARE OF BLANK LINES /C IGNORE COMMENTS AND SPACING /F SEND FORM FEEDS TO OUTPUT /S IGNORE SPACING /H TYPE THIS HELP TEXT /L:# NUMBER OF LINES TO BE MATCHED ( # REPRESENTS AN OCTAL NUMBER < 310)********** 1)2)BCFSH0A bAce) H w & jp&WW*  @.-  :e e    c ` z A0 b   d'   &5 @@  N^&E#? w e&  , 7U $" db`쇠 HC*W F  A0POΕE ]鈷  ߋ*&   pP鈙 P5p鈒y鈎鈊0䁇  ,K K& ff,e"5 7@Ek   #  @     %     @E  V   ` 2 "  @ X  w   & &EU0 V l& #N e ee e 8  (@fwL@E% .   >&ۇ ,@ GNWXBES?LP NOT FND??SWITCH??OUT ERR??IN ERR??NO CORE??ILL CMD?M @e0    . @f( p@ ee0 & %Y   5B @& fE@#+ B ##'p'^''o_ #_ #_ T$_ $_ R%_ %_ %_ &_ "&_  #_  l$_  $_  %_  P&_  &_ '_ '_ j'_ b(_ '_ $'LED IT. THIS ALLOWS THE HARDWARE PORTION TO DECIDE WHETHER OR ;NOT TO EXECUTE. ;EACH OF THE LAST 6 BYTES CORRESPONDS TO ONE OF THE SOFTWARE FUNCTIONS ;EACH SOFTWARE FUNCTION BEFORE EXECUTING TESTS ITS BYTE. IF NON-0, IT ;EXECUTES THE FUNCTION. OTHERWISE, IT ABORTS. ANY FUNCTION THAT EXECUTES ;SETS UP THIS TABLE TO REFLECT WHICH FUNCTIONS CAN AND CANNOT FOLLOW IT. ;FOR INSTANCE, AN ENTER WILL ALLOW ONLY A WRITE OR A CLOSE TO FOLLOW ;IT. THUS, IT WILL SET BOTH THESE BYTES AND CLEAR THE OTHER 4. FLGTAB=. HW: .BYTE 0 ;HARDWARE INTITIALLY NOT ALLOWED MAC: .BYTE 0 ;MACRO CURRENTLY EXECTUED BYTE CLO: .BYTE 0 ;CLOSE NOT ALLOWED AT START DEL: .BYTE 377 ;DELETE ALLOWED AT START LOOK: .BYTE 377 ;LOOKUP ALLOWED ENT: .BYTE 377 ;ENTER ALLOWED AT START REED: .BYTE 0 ;READ NOT ALLOWED WRYT: .BYTE 0 ;WRITE NOT ALLOWED .IF DF,NEWVOL NEW: ;ALWAYS ALLOW NUVOL (NEXT INSTR.=377) .ENDC ;LUKUP OPENS AN EXISTING FILE FOR INPUT. ;IT POSITIONS THE TAPE TO JUST BEFORE THE 1ST DATA BLOCK. LUKUP: TST @CA ;ON NON-FILE LOOKUP, BEQ NONFIL ;GO REWIND JSR PC,SEEK ;LOOK FOR FILE SWINV: BR SWINIT ;IF NONE FOUND, RETURN ERROR LUKC: JSR PC,FSPN ;ELSE, SPACE BEYOND TAPE MARK TO DATA ENDNON: JSR PC,ENTDUN ;SETE AS ENTSW READ AND WRITE SETTINGS BISB R1,-(R0) RTS PC ;AND RETURN NONFIL: JSR PC,REWCLR ;ON NON-FILE, REWIND BISB UBITS,HW ;SET HW MODE .IF NDF,TM11 MOV BLOCK,R1 ;GET BLOCK ARG BLE NOMOD ;IF IT'S NON-0, CMP R1,#5 ;AND <=5 BGT NOMOD ADD PC,R1 ;OFFSET ADD #MODTAB-1-.,R1 ;INTO TABLE O7 & LABLE MODES JSR PC,UNOFF ;THEN GET AN OFFSET INTO MO+ENTER CHECKSUM: ?BAD PATCH?++?NO FILE OPEN?R CU0h \  > \ , 6 @ @ P  0l 0 0 0 0T  P P P PP P P P00l   0 00  0 ` D P  P PP PP P B * P P ZP *  (  bP P B P* bP P B  @A @A C P \\eBCIE `-    D E A@D D e0bb - ҕ* V D, ETE IT SR PC,CHKHDR ;83p\*3r\ BU   U r `5 e3d ډ& "35 5  X %cԉ s ыs Չe  0RD \e\e\e\e\e\e\g\g\g\\\\\\\\\\ \ \& \ \ \& \ \\ \ \ \&%\ "\"\"\"\ \ \\\&\\\\ \\\\\ \ %w&\\&\f&̋T 5 Eť1 ť+ť$ 3 Tť0  @s ̋m 54 wVLOW D @B* wĊNF @ĊA    <& B CUNUeeePPPHeN TɥRU@ɥOUɥSU 0 ɥNUɥCU p3 *3 ĊAW , ډ 35եЉ B U p w&4 4-45@  &vC j5EUe  & 4-* .  & &v    ߋ*3 pr ׉U3 rp؉w f  f3! nH 舦STOP -- L   ;3  ,FF3 F V {` `3 V3 Tl ,FFBFFy R q  3iAse Z a  T  `U `R DNB (;  D  @ B   D \rpV& D D d 3 V3  T 3 F  `P B3 \ @  vEx" H3I \sJ JsL% ދ " w)" :  X R" ? "鈇& e:   낃 (  ]" %@"D"w6("?ERR 60 STACK OVERFLOWED ABCDEFGHIJKLMNOPQRSTUVWXYZ$. 0123456789FROMIN ROUTINE "" LINE ?ERR &    C 5UA B C C  \‰  CURRENT FILE POSITION CLRFIL: JSR PC,UNOFF ;OFFSET FOR CURRENT UNIT MOV #1,FILCNT-PZ(R2) ;AND SET ITS COUNT TO 1ST FILE ;### RTS PC .IFF JSR PC,SOFTNR ;REWIND ;### REWIND .IFT FILCNT: .WORD 1 ;### .WORD 1 ;### .WORD 1 ;##7 #,0j7 2#L^p: ;### .WORD l&#n$#l(#l*#0.#P.#0 #R$7#\$#$#\$#$#> \$#$#> \$#$#> H,#\,#V R$n 0J$# (## $# ###b$#*# (#(# ###*##00#P0#0 ^#T&#h&#LES HAVE AT LEAST ONE RECORD.) DLEET: .IF DF,NEWVOL TST @CA ;TEST FOR NULL FIL7 f`$xkHP$#  r$jP$P`$TPP$0j7 2$,W PC,SEEK z$\$ N$P $$0xn$0$P$0 $jt$`R$$R$_$T $\$ N$\$ 0PR$0PR$0H$ $P%8$$ $P%n$j7 h`%-DDHP$# HR$ P$P$P% P$T R$`R$^%h^%7 ,%0(2AND %A %Zz %$| %.| %_| H%h%7 %ZZ  FIL %0 %9z H%h% @DB  "R  D f  z&Հ e  C b @` ` Z@9/ $#.-JSR PC,NXT2 ;SPACE TO END OF FILE BR DUNDEL ;THEN GO SETUP FLAG TABLE (SAMELY AS CLOSE) .IF DF,NEWVOL ;NU 7 :#r:L +?BAD OBJ?+?BAD CHECKSUM? VOL: J``06#j$ 6#F#6#@$0 @$0 0 0 0   >  >  > H4#v   $z8#D8#0 H8# F 4#8##0V 4#P P$@$j$zTjP2#P#B d$j$P2#P#B Jj7 N~$T[|L $Pz$P& $4 $P|$PzH Hx$ hx$Jhx$Jhx$7 $ak+?OUTPUT ERROR? + ; lR P b  b  b  b H$P$0P$0P0P0P0P0%z$`$v $D$0\$H$ b H$$$%P$0%jP$P$B j7 %a|R +?OUTPUT FILE TOO SMALL?*&P%P& :&4 H&P%PzDD% jP%P%B bJj7 j\&`X} n&& |&00&d&n& P n&``j ADE' % b %e ee e  (@,FINISH UP ;### .ENDC ;NXTFIL SPACES FORWARD 3 TAPE MARKS LEAVING THE TAPE POSITIONED TO ;THE START OF NEXT FILE HDR1 SEQUENCE NXTFIL: JSR PC,FSPN ;SPACE FORWARD 3 EOF'S NXT2: .IFDF FCNT JSR PC,FSPN .IFF JSR PC,(PC) ;!!!!!!CAREFUL!!!!!!!!!!! ;### .ENDC ;FCNT NXT1: JSR PC,FSPN INCFIL: JSR PC,UNOFF ;GET OFFSET FOR THIS UNIT .IFDF FCNT INC FILCNT-PZ(R2) ;AND INC ITS FILE COUNT ;### .ENDC ;FCNT RTS PC ;CLOZE CLOSES A FILE. A CLOSE OF AN ENTER'ED FILE (IND7 (%tSPOLIDUWOBYOPEXHEDEINSTMPRDTEENITLPC T LLOWED BY AN EOF. ;A CLOSE OF+* O+?ILLEGAL COMMAND?+?OFFSET?+ENTER INPUT FILE +ENTER OUTPUT FILE ) PATCHO V01-03 HAS THE FOLLOWING COMMANDS:0BYTE DEC DUMP EXIT HELP LIST OPEN POINT WORD %=DISPLACED, #=ABSOLUTE, USE "_" FOR IMBEDDED BLANKS  (oP BEQ ENDCLO ;(\t(0 t(+|  t(-|  P|(Pr'B Px(Px'ZP(P$JzP$z(H(#  )(P((P(PT'0 (.)P|(P|'B (z'T'L) 2)).'V'@'X')\ )))))+)+)P(PT'0 ()P PT'Pz(00xP$P)z((F ( )jJl(JTTP(PT'0 (4*R$+v*llPR$0 r*)PPT'Pz(0l lR$+v*R$-)P|(P'B ( P$P 0p b*R$=)0(P(0 *PR$0h("+ R$#* R$%*) P$P(PT'0 (+PR$0h("+)P PT'Pz(0R$-|(R$+|(X+PR$0 b* P$P0p b*(v+\ P ))P|(P'B T(P(PPv(0P|(P'B T(P(PP~(0)P|(P'B ( ;### NULCLO: JSR PC,BSPN ;TO ABORT OTHER FILES, SPACE TO HDR1 NULCL2: JSR PC,BSPN .IF NDF TM02 ;+++ BIT #BOT,@#MTS ;AT BOT? ;+++ .IFF ;+++ BIT #BOT,@#RHDS ;AT BOT? ;+++ .ENDC ;TM02 ;+++ BEQ NULCL3 ;IF EQ-NO ;+++ MOV #-1,R0 ;YES-SPACE OVER VOL1 7 8'afZ+?MODULE NOT FOUND? Z h'z0h'8'P6'P'B j7 P'{L}1OBJECT MODULES:+LCL3: JSR PC`'`'TlzP'Pv'B z0 (P'PP'0P'P'B P' '`'`'  8(P'PP'P`'TJ00P'0Lj7 X(|#+?MORE THAN 5 CSECTS REQUIRE CHANGE?+?MORE THAN 20 CHANGES? ON A (z((N  )( (  )  ` ( () ( 4d( >p` ( JJ)JJd ` ( (N) ((4(f)(4d(Jp JdJdDJ $J& (>L(>dJjP(Pn(B )P(P(B Jj READ WITH WC=0, REDE INPUT ONE ENTIRE RECORD ONLY AND ;DOES NOT CLEAR THE INPUT BUFFER. REDE: MOV WC,R4 ;SAVE WC BEQ READIT ;ON WC=0, DO READ FROM CURRENT POSITION MOV BLOCK,R0 ;R0=BLOCK-BLKCTR JSR PC,UNOFF ;GET UNIT OFFSET ADD #BLKCTR-PZ,R2 ;AND SAVE ADDRESS OF BLOCK COUNT SUB (R2),R0 ;USE IT FIRST TO DO7 h'w +?BAD OBJ? +?BAD OBJ? SET BLK r'j|'j\'$(@*@*@*(P^'P>'B j @*z`'H`' (\`'"Hb'zd'd'b'h (^ b'b'b'd'4(b'd'4Ld'4p(d' '`''@* (lzz`'`'4 (\"`'b\"`'4LDPh DP R ((0l`' 8( (0lT@* &*z`'TTT`'nl0`'>Hf' f'*TTTf'JH0TTf'JHf'HHf' \) 0zb'f' v)*z) b'f'p )R b'f' )R b'Tb','Hb''J HHf' )R Tb'f'p )f'pnTb'f'  *b'f'L0f'& Hf')`' (l lJlT0j00r'P^'PL'B jOESN'T HURT) JSR PC,READB1 ;AND READ .IF DF,TM11 BIT #EOF,@#MTS ;ON EOF ENCOUNTERED, INSTEAD .ENDC .IF NDF,TM11 BIT #EOF,@#RHDS ;ON EOF ENCOUNTERED, INSTEAD .E$7 )UdYES NO MOD NAMECSECT INTERNALTRAN ADRGLOBAL GSD GSD END TXT RLD ISD MOD END INTERNALGLOBAL INT DISPGLB DISPGLB ADD GL AD DSLCTR DEFLCTR MODLIMITS 1DUMP OF MODULE -& BLOCK TYPE +GLOBAL USAGEDEFINEDRELOC(EXTERNAL2SIZE/ADRS&   +ADDRESS CONTENTS& +ADDRESS RLD TYPEGLOBALOFFSET +*++ +?DUMP ERROR? ) @E NOTZER ;NOT ZERO ;### J,)H( \(  "'P'PP(0P(P'B P' p)00++++P(P'B F' \)T)H**T)+P(P(B z(P'D(P(0P(PO(B P' H( &' P(0(R(P( P(0(R(P( P(0(R)P) \("* ()T)DP`(P(P](B z(`)v )\V ( H)P)* \("* H( PH)P)* H( PH )P )* ()r*T)z(P(P(B (T)H( PH(( +v (P(P(B \(n H( > H )P )* (v' H( P `+P(P(B R (H('+P'D(P(0P(P(B P' R (H('*P(P(B \("* R (*0P(0LjP(P(B j BCS POPOFF ;IF STILL <0, DO ANOTHER OPERATION DOMOR: ADD #512.,CA ;BEFORE OPERATION, ALTER CA RTS PC POPOFF: TST (SP)+ ;TO EXIT, POP OFF LAST JSR RTS PC ;AND RETURN TO DISPATCH CODE ;WRITD PERFORMS WRITE SERVICE. WRITD: .IF DF,TM11 WRTLAB: MOV #-1000,WC ;SET BYTE COUNTV:*V* bD* N H*# N`*V`*  J*( N H*#V ,V:*V*  H*N J*"),V,)J H*V:*6V:*V * V,)  H*N J*)8,V:*V* bH* $  H*8,6V:*6 V<*V*  %e, "& ㈓eTYw r,0"Ee'(( E,V"E ` ؁ ,|"7 nfm XɆ7 ?SY I/O ER?,"ed鈇e 8( 0e,"|C 7?ILL DEV? ," .NLIST .TITLE VTMAC ; ; VTMAC ; ; LIBRARY OF MACRO CALLS AND MNEMONIC DEFINITIONS ; FOR THE VT11 DEVICE SUPPORT PACKAGE ; ; DEC-11-OVTMA-E ; ; 24 OCTOBER 73 ; ; COPYRIGHT (C) 1974,1975 ; ; DIGITAL EQUIPMENT CORPORATION ; MAYNARD, MASSACHUSETTS 01754 ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ; ON A SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH ; THE INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, ; OR ANY OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE MADE ; AVAILABLE TO ANY OTHER PERSON EXCEPT FOR USE ON SUCH SYSTEM AND TO ; ONE WHO AGREES TO THESE LICENSE TERMS. TITLE TO AND OWNERSHIP OF THE ; SOFTWARE SHALL AT ALL TIMES REMAIN IN DIGITAL. ; ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO ; CHANGE WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED ; AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. ; ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE ; OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT ; WHICH IS NOT SUPPLIED BY DIGITAL. ; ; VTMAC IS A LIBRARY OF MACRO CALLS WHICH PROVIDE SUPPORT ; OF THE VT11 DISPLAY PROCESSOR. THE MACROS PRODUCE CALLS ; TO THE VT11 DEVICE SUPPORT PACKAGE, USING GLOBAL REFER- ; ENCES. ; MACRO TO GENERATE A MACRO WITH ZERO ARGUMENTS. ; .MACRO MAC0 NAME,CALL .MACRO NAME .GLOBL CALL JSR %^O7,CALL .ENDM .ENDM ; ; MACRO TO GENERATE A MACRO WITH ONE ARGUMENT ; .MACRO MAC1 NAME,CALL .MACRO NAME ARG .IF NB,ARG MOV ARG,%^O0 .ENDC .GLOBL CALL JSR %^O7,CALL .ENDM .ENDM ; ; MACRO TO GENERATE A MACRO WITH TWO OPTIONAL ARGUMENTS ; .MACRO MAC2 NAME,CALL .MACRO NAME ARG1,ARG2 .GLOBL CALL .IF NB,ARG1 MOV ARG1,%^O0 .ENDC .IF NB,ARG2 MOV ARG2,-(%^O6) .IFF CLR -(%^O6) .NARG T .IF EQ,T CLR %^O0 .ENDC .ENDC JSR %^O7,CALL .ENDM .ENDM ; ; MACRO LIBRARY FOR VT11: ; MAC0 <.CLEAR>,<$VINIT> MAC0 <.STOP>,<$VSTOP> MAC0 <.START>,<$VSTRT> MAC1 <.INSRT>,<$VNSRT> MAC1 <.REMOV>,<$VRMOV> MAC1 <.BLANK>,<$VBLNK> MAC1 <.RESTR>,<$VRSTR> MAC1 <.STAT>,<$VSTPM> MAC1 <.LPEN>,<$VLPEN> MAC1 <.SCROL>,<$VSCRL> MAC2 <.TRACK>,<$VTRAK> MAC0 <.LNKRT>,<$VRTLK> MAC0 <.UNLNK>,<$VUNLK> ; MNEMONIC DEFINITIONS FOR THE VT11 DISPLAY PROCESSOR ; DJMP=160000 ;DISPLAY JUMP DNOP=164000 ;DISPLAY NOP DJSR=173400 ;DISPLAY SUBROUTINE CALL DRET=173400 ;DISPLAY SUBROUTINE RETURN DNAME=173520 ;SET NAME REGISTER DSTAT=173420 ;RETURN STATUS DATA DHALT=173500 ;STOP DISPLAY AND RETURN STATUS DATA ; CHAR=100000 ;CHARACTER MODE SHORTV=104000 ;SHORT VECTOR MODE LONGV=110000 ;LONG VECTOR MODE POINT=114000 ;POINT MODE GRAPHX=120000 ;GRAPH X MODE GRAPHY=124000 ;GRAPH Y MODE RELATV=130000 ;RELATIVE VECTOR MODE ; INT0=2000 ;INTENSITY 0 INT1=2200 INT2=2400 INT3=2600 INT4=3000 INT5=3200 INT6=3400 INT7=3600 ; LPOFF=100 ;LIGHT PEN OFF LPON=140 ;LIGHT PEN ON BLKOFF=20 ;BLINK OFF BLKON=30 ;BLINK ON LINE0=4 ;SOLID LINE LINE1=5 ;LONG DASH LINE2=6 ;SHORT DASH LINE3=7 ;DOT DASH ; STATSA=170000 ;LOAD STATUS REG A LPLITE=200 ;INTENSIFY ON LPEN HIT LPDARK=300 ;DON'T INTENSIFY ITAL0=40 ;ITALICS OFF ITAL1=60 ;ITALICS ON SYNC=4 ;POWER LINE SYNC ; STATSB=174000 ;LOAD STATUS REG B INCR=100 ;GRAPH PLOT INCREMENT INTX=40000 ;INTENSIFY VECTOR OR POINT MAXX=1777 ;MAXIMUM X INCR. - LONGV MAXY=1377 ;MAXIMUM Y INCR. - LONGV MINUSX=20000 ;NEGATIVE X INCREMENT MINUSY=20000 ;NEGATIVE Y INCREMENT MAXSX=17600 ;MAXIMUM X INCR. - SHORTV MAXSY=77 ;MAXIMUM Y INCR. - SHORTV MISVX=20000 ;NEGATIVE X INCR. - SHORTV MISVY=100 ;NEGATIVE Y INCR. - SHORTV .LIST .Kѫx@(Kh @Ћ @.@Qѫx@(@Qh& AB ы 1ʐ5.y,dѫx@(*y,dh.CABы åݕ ѕ  &.ZI9ѫx@(^;qhZI9h.fAB&  & C  d.&̲e֥ Eae L a@ R.:$"ѫx@(>:$"h.CABD ҋ åE Rs &  "R.&ѫx@(F&h-.CAB@åDP  åɋʋ(&ݕ! P .Xq|ѫx@(NXq|h.fACB @ΥDR Υ.& ɋݕ  R   L.l8ѫx@(l8h@.t:#ѫx@(Jt:#h.fABΥ D%# ы V,&Cʋ ɋR  ֥.Zѫx@(LZh].C  D DU%AåB n.&aK ҐCCaҒem.GwSѫx@(8;;_hOGwShL.CAB ɋ ʋR åʋp&ҥ  W ". zyѫx@(0 zyh.CABDы   åDR T&R4.Gwgѫx@(.Gwgh.CABåDR  åɋݕ&R.wѫx@( who@Ua.8Gѫx@(8Gh"ff@@ ee.8<}ѫx@(8<}hu ffU@@ %..@Qѫx@(.@Qhf%.8Kѫx@(*8KhS.& WNff@@ * e &=.8<}ѫx@(8<}h/ @f@@ .9}ѫx@(.9}h.& WNfffU*&@ e.B9 @ѫx@( QB9 hw(@ A s0 s@6 .]9x}@ѫx@(*b]9x}h.   @ B .  &3.. ѫx@(. hf%.gMHѫx@(*gMHh.& WNffU*@ e &=.T`;ѫx@(T`;hm .fZѫx@(fZh@鈇.Zg,ѫx@( Zg,h@Ud. qorѫx@( qorhE 툇.;N`ѫx@(;N`h ffU@@ %.[qMѫx@([qMh .9;[ѫx@( 9;[h3(ffU@@ * %.z4fѫx@(z4fh .l;C^ѫx@( l;C^hi@@ v.t;:ѫx@(t;:h' j.t;aѫx@( t;ah@@@ .w;ѫx@(w;hf@@ %i.|C^ѫx@(|C^h 爇.;`;ѫx@(;`;h@@@ * .[MDѫx@([MDh 戇.u~ zѫx@(F#Rh?. A<  ,5 2&Cy(&   `@ `  B  Ag@ [.D; ѫx@#R@( MD; hf( f&&@@ e #R.ARѫx@#R@(ARh EM #R.;t~ѫx@'R@( =;t~hZ( &@@ e 'R.;ѫx@(.;hk&;h ;hhk.& f ffffU*&@ e .<;` ѫx@(*<;` h&<;c h <;w h Xh].& fff& @@ e & 9.H;'ѫx@(NH;'h&H;'h H;'hȫ'h.& f @U&@Wf.&ff& & & e&@@ * e  L.;e;ѫx@(6;c;h =&;e;h;w;hje;h.& f ffffU *& @@ e .; ѫx@(*; h&;#h ;7h h%.& fff& @@ e & 9.Du~i@i>@ѫx@("Du~h}* A@Ae   mii>i>.~ѫx@(0ih_i>h..2,5 <  @ C &  .v; ѫx@(Pv; h. ADEP % b  P.&%e ee e  X L(@6.H;@ѫx@(: h g:EhH;@h`$ ,@g @ @H.u~; i@i>@ѫx@(@u~; hu. A@A  CEՕ:ii>i>"&eËe:/ՐՐZ.59}@ѫx@(Bj59}h. &@@ B 8  $& @@ c.:`"@ѫx@(6*:`"hf.@  ` ` B  @ & .8ѫx@(8hf %.8'@ѫx@(@ 8'hR.EA D Da  fB "& @@  e.u~$ѫx@#R@(0'Rh. C)&%C e #R&B eO`.8Yѫx@( 8Yh(f N@@ * %b.zfKѫKzH(J@ h#xhѫxh, .T}ѫx@(T}h" fff@@ e.<;f Ee@ X@ѫx@(<;f heAf wEe X.H;'Ee@ȫ'@ѫx@!(H;'hxe Af wEeȫ',.;f;Ee@ѫx@je;@O(;f;he Af wEeje;.;&Ee@ @ѫx@(;&heAf wEe .;;2Ee@ѫx@#R@N.'R@(6;;2h i;RhY. f& Aff#R'R& @@ e  Ee.;Wѫx@( ;Wh-(ffU@@ * %.>@((>h. DCAdE b  Iw & .A @((A h. DCA   Iwc & .@K@(j@Kh . & D  D  '.& @  D`B `  C &L     AwL  .)?@()?hP.& fDAf!@A e 0F.&e@    D E E   E.LB C Ί     ֥*rHw    # .?@(?h  @ A w .9@((9h..A@ A] -  &.y?@(p>&ѫx@(:wh. D&E4.&e@ E7Lwn  $Ee(y.L 2    P.r*,^ e,} J@ B.8@8ѫx@(8@8h. xff& %N* +ABF.&C    C΢  .L E3  e rJ.\gyhHShh\gyhk,8;@b7 Z\gy# ,8; N   V   .@@@S۪@Tq@G9@T.S@@K@S@@n.vȫ@|@Y@!@\q@h.@ X S۪ Tq,.G9S S۪ K<*SS۪  vȫJ*|Y  @!\qX*S۪ Tq  G9S۪Kf}.|S S۪ Kvp*SS۪  vȫb*|Y  z!\q.,yhHShh,yha,8;@b7 Z,y ,8;"    V   .S۪@Tq@B9@y@S@L.@vȫ@|@Y@!@.SS@;@S)@@@Q@&ت@e@S8@\q@xht*S۪ Tq  B9Tq,,yS S۪ vȫK:.|Y  2!SS;J*; vȫ S)S۪R\,@Q ت er:lS8 \q