A A?w^[>zCFANJBA RT-11SJ V02C-02y5K!5  c5 57 ?B-I/O ERROR vߋtȋ pxE  e  jD@ f`T HTHTS K,ee 6 e @B5 Sr;zaX'5lem7 ?B-NO MONITR.SYS 7 ?B-NOT ENOUGH CORE e&^e  ee bn"tCeetHa a a,] t?a !aW, `p %e8?ae?w P $ @5V@l@f ,04@>>>C8E:E>E@EBEFEHE>r?BK>@&AzCFANJBA RT-11SJ V02C-02y5K!5  c5 57 ?B-I/O ERROR vߋtȋ pxE  e  jD@ f`T HTHTS K,ee 6 e @B5 Sr;zaX'5lem7 ?B-NO MONITR.SYS 7 ?B-NOT ENOUGH CORE e&^e  ee bn"tCeetHa a a,] t?a !aW, `p %e8?ae?w P $ @5V@l@f ,04@>>>C8E:E>E@EBEFEHE>r?BK>@&A OLD CHANNEL AREA ;DV1 CMPB @R1,@R5 ;NEW COUNT <= OLD COUNT? ;DV1 BLOS EMTER0 ;YEP, ERROR JSR PC,QUIESCE ;WAIT FOR QUIETNESS CLR R3 ;CLEAR CHANNEL COUNTER 1$: MOV #5,R4 ;5 WORDS / CHANNEL CMPB @R5,R3 ;OLD COUNT >= CHANNEL WE ARE WORKING ON BHI 3$ ;YES, SO COPY IT 2$: CLR (R0)+ ;NO, CLEAR IT DEC R4 ;5 WORDS BNE 2$ BR 4$ 3$: MOV (R2)+,(R0)+ ;COPY THE CHANNEL DEC R4 BNE 3$ 4$: INCB R3 ;BUMP NUMBER OF WORKING CHANNEL CMPB @R1,R3 ;NEW COUNT >= THIS CHANNEL? BHI 1$ ;YES, KEEP GOING MOV @R1,(R5)+ ;SET NEW COUNT BR 10$ ;GO SET NEW POINTER ; "BUT WE LIKE SENTRIES ARE OBLIGED TO STAND ; IN STARLESS NIGHTS, AND WAIT TH' APPOINTED HOUR" ; - DRYDEN, "DON SEBASTIAN" FUDGE2: .WORD RESUM ;*** BOOT *** POINTER TO CMPLTION T$WAIT: MOV (PC)+,R1 ;POINT TO COMPLETION ROUTINE FUDGE1: .WORD FUDGE2 ;*** BOOT *** PTR TO ROUTINE PTR JSR PC,MARKTM ;DO A MARK TIME FOR THE INTERVAL ;AND SUSPEND THE GUY S$SPND: MOV CNTXT,R1 ;COPY IMPURE POINTER DEC I.SCTR(R1) ;SUSPEND HIM BPL RTILK0 ;NOT SUSPENDED YET. LEAVE TST @R1 ;IS HE IN COMPLETION ROUTINE ? BMI RTILK0 ;YES. HE CAN'T BE SUSPENDED HERE JSR R4,$SYSWT ;NO. WAIT FOR SUSPEND COUNT .WORD SPND$ ; TO GO ABOVE 0 MOV I.SCTR(R1),R0 ;; GET COUNT ASL R0 ;; IF < 0, STILL BLOCKED JSR PC,@(SP)+ ;; BACK TO $SYSWT BR RTILK0 ;DONE RESUM: MOV CNTXT,R0 ;COMPLETION TYPE RESUME INC I.SCTR(R0) RTS PC R$SUME: INC I.SCTR(R5) ;RESUME HIM (NOTE THAT WE ARE BR RTILK0 ; IN A COMPL ROUTINE AND RUNNING, ; SO WE NEED NOT CHANGE DISPATCHABILITY) M$RKT: JSR PC,MARKTM ;CALL MARK TIME BR RTILK0 ;EXIT EMT WHEN DONE S$SWAP: TST (R5)+ ;I.SWAP = I.FPP + 2 TST @R0 ;R0 -> LIST, IS IT NULL? BNE 5$ ;NO CLR @SP ;YES. NULLIFY POINTER 5$: TST @SP ;IS POINTER NULL? BEQ 8$ ;YES. SET IT UP 6$: MOV (R0)+,-(SP) ;CHECK A POINTER CMP #500,@SP ;IS POINTER A VECTOR? BHI 7$ ;YES, IT WON'T BE IN HIS AREA CMP #160000,@SP ;WELL, IS IT IN THE I/O PAGE? BLOS 7$ ;YES, ALLOW THAT, TOO JSR R5,CHKSP ;NO. IT MUST BE IN HIS AREA CLR @SP ;SIGNAL ERROR 7$: ASR (SP)+ ;ERROR OR ODD ADDRESS? BLOS EMTER0 ;YES TST @R0 ;END OF LIST? BNE 6$ ;NO S$FPP: CMP #1,R0 ;SET FPP SWITCH BUT NO TRAP? BHIS 8$ ;YES JSR R5,CHKSP ;NO, CHECK INTERRUPT ADDRESS BR EMTER0 ;INVALID ADDRESS 8$: TST (R5)+ ;I.FPP = I.TRAP + 2 S$TRAP: TST (R5)+ ;I.TRAP = I.SPLS + 2 D$VICE: ADD #I.SPLS,R5 ;POINT TO WORD TO BE FILLED 10$: MOV @SP,@R5 ;YES. PLUG WORD IN IMPURE AREA RTILK0: BR EMTRTI ;AND EXIT .DSABL LSB .SBTTL TTYIN & TTYOUT T$TIN: MOV R5,R2 ;COPY TO CALL IGET MOV R5,R1 ;WE NEED COPIES LATER ON. ADD #I.TTLC,R1 ;R1 -> LINE COUNT JSR PC,TTRSET ;COPY SPECIAL-MODE BIT, ETC. TST @R1 ;IS COUNT=0? BNE 4$ ;NO, WE CAN GIVE HIM STUFF BIT #TCBIT$,@#JSW ;DOES HE REALLY WANT C-BIT RETURN? BNE EMTER0 ;YES JSR R4,$SYSWT ;NO, ENTER SYSTEM WAIT STATE .WORD TTIWT$ ; WITH PROPER BLOCKING BIT CMP @R1,#1 ;; DO WE HAVE A CHARACTER YET? JSR PC,@(SP)+ ;; TELL CALLER IF WE ARE GOOD 4$: JSR PC,IGET ;GET A CHARACTER FROM THE RING BEQ 5$ ;IT WAS ^C MOV R4,@SP ;GIVE IT TO HIM IN R0 BR EMTRTI ;AND LEAVE 5$: MOV R4,R0 ;MAKE R0 NON 0 GOEXIT: MOV #..EXIT,R4 ;EXIT VIA TABLE IN CASE OF BATCH JMP EMT16 ;DISPATCH AN EXIT ; EMT 16(1) - TTYOUT ; THIS EMT PUTS A CHARACTER INTO THE OUTPUT RING BUFFER. T$TOUT: MOV R0,R4 JSR R0,TTOUT ;OUTPUT THE CHARACTER, WAIT IF NEED BE .WORD TCBIT$ ;BIT TO TEST FOR CARRY OR NAY BCC EMTRTI ;GOT IT OUT (OR TCBIT WAS OFF) EMTER0: EMTERR+0 ;SET C BIT IN STATUS BR EMTRTI ;SAY GOODBYE .SBTTL RETURN FROM EMT ; COME HERE TO RETURN FROM AN EMT WHICH TOOK ARGUMENTS ON THE STACK ; IF IT IS AN OLD STYLE EMT, WE POP OFF THE ARGS EMTDON: ASL R2 ;CONVERT WORD COUNT TO BYTES BEQ EMTRTI ;NONE TO POP MOV SAVE+2(SP),R3 ;POINT TO THE EMT THAT CALLED US CMPB #374,-2(R3) ;IS IT NEW STYLE? BLOS EMTRTI ;YES. NO POP MOV SP,R3 ;NO. POINT R3 ABOVE REGS, PC, PS ADD #O$)  `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?TA K E E ͥ- 㺇 e l B @ @ ؁  Br eE͋=,e    N ` , 2 eEO e(   $5 7  EBc7?ADDR?AO 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.OCTR+1(R5) ;CLEAR FLAG BYTE JSR PC,TTRSET ;COPY SPECIAL-MODE FLAG BR EMTRTI ; EMT 16(9) - STRING PRINT .ENABL LSB P$RINT: MOVB #LF,OUTCHR ;FORCE CONSOLE CONTEXT SWITCH BR 2$ 1$: ADDR 3$,R0 ;POINT TO CRLF 2$: MOVB (R0)+,R4 ;CHARACTER TO R4 BEQ 1$ ;0 => PUT IN CRLF CMP R4,#177600 ;200 ENDS IT ALL BEQ EMTRTI ;(OTHER NEGATIVES ARE OK) JSR R0,TTOUT ;PUT OUT THE CHARACTER .WORD 0 ;WAIT EVEN IF TCBIT$ IS ON BR 2$ ;TRY AGAIN ON RETURN 3$: .BYTE CR,LF,200,0 ;CR LF TERMINATOR .EVEN .DSABL LSB .SBTTL LOCK / UNLOCK USR, INTERNAL ERROR EMT, SET SOFT / HARD EXIT ; EMT 16(6) - LOCK USR IN CORE ; IF A USER WANTS TO HAVE THE USR IN CORE FOR A SERIES OF ; I/O TYPE OPERATIONS, HE CAN LOCK IT INTO CORE WITH THE ; LOCK EMT. ; ENTERING AT TLOCK SETS THE CARRY IF THE USR IS NOT FREE, ; RATHER THAN WAITING FOR IT AND CLAIMING IT. T$LOCK: ENSYS 2$ ;ENTER SYSTEM STATE CMPB #377,USROWN ;IS THE USR FREE? BNE 1$ ;NO, EXIT SYSTEM STATE MOVB JOBNUM,USROWN ;YES. CLAIM IT 1$: RTS PC ;BACK TO USER 2$: CMPB JOBNUM,USROWN ;DO WE OWN IT NOW? BNE EMTER0 ;NO. GIVE HIM A CARRY L$OCK: JSR PC,CALUSR ;READ MONITOR IN BR EMTRTI ; EMT 16(7) - RELEASE USR FROM CORE ; AFTER A LOCK, THIS EMT RELEASES THE USR. ; IT ALSO IS THE ENTRY POINT FOR USR RETURN. .ENABL LSB U$NLOK: CMPB USROWN,JOBNUM ;DO WE OWN THE USR? BNE EMTRTI ;NO, WE HAVE NO RIGHT TO UNLOCK IT TSTB USRLVL ;WE OWN IT. DID WE LOCK IT? BEQ 1$ ;NO, IT'S NOT CALLED MONOUT: BIC #USRRN$,@CNTXT ;TURN ON ADDRESS CHECKING AGAIN DECB USRLVL ;UP A LEVEL BNE EMTDON ;USR CALLED SELF. LEAVE IT IN CORE 1$: JSR PC,RIDUSR ;OUT OF USR. GET RID OF IT JMP EMTDON ;AND EXIT .DSABL LSB ; EMT 17--USED FOR INTERNAL PURPOSES ONLY. SHOULD NOT BE ; CALLED BY THE USER. MOVES AN ERROR CODE INTO LOCATION ; SET ASIDE FOR THE CODE, AN$)  `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&&'''()C7 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@Ŋ 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`  ewJ& U& U ef Ev*  e z& e∠ W[ W]  @W: 0$W. eR& &$ ,W*@ "  @:e e W a `  (  &N W-e E  C0Π a `  6ETCH: INC R2 ;FETCH/RELEASE D$LETE: INC R2 ;DELETE Q$SET: ;SET IO Q UE EMTUSR: JSR PC,CALUSR ;GRAB THE USR 10$: BIS #USRRN$,@CNTXT ;SAY THATSR IS IN CONTR JMP @USRLOC .DSABL LSB .SBTTL EX& TG C ` ~? 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? & 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 7 Fw| EaB )1ĕ^ $  Ldĥ    U C 7 7 "& 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 LELELEEEEET L4Lew ,6U  IB(@-t   " $7 œ 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ߋ$ɀ,e" 5@x  $d$$B w`e& H &&E5@*B53'UUUClL55UM E55 pU ߕ eV,}ߋȁe%F 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  MOVB #377,USROWN ;MARK IT NOT IN USE MOV IMPLOC,R4 ;POINT TO IMPURE POINTERS ;DV16 1$: MOV -(R4),R5 ;GET AN IMPURE POI.7|ddC E d @ 0 Ue,}07*Eŋ Lat UedC8 20ffE T X .WORD USRWT$ MOVB I.Je,  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 ߋ*! %   - # 3c  - D @&c%TdL!)t&b%0e )z%P4H@ <` EEGw^rBNP"XNJ]X RT-11FB V02C-02<_5K!5  c5 57 ?B-I/O ERROR vߋtȋ pxE  e  jD@ f`T HTHTS KzCFANJBA 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+2 ;POINTS TO START BLOCK OF CHANNEL 17 HDERR$ = 1 ;BITS IN CSW WORD 0 INDX$M = 76 ;MASK FOR DEVICE INDEX RENAM$ = 100 DWRIT$ = 200 DBLOK$ = 400 DBLK$M = 17400 ;MASK FOR DIR. BLOCK # DBLK$N = 160377 ;COMPLEMETARY MASK EOF$ = 20000 ACTIV$ = 100000 C.SBLK = 2 ;OFFSETS INTO CHANNEL C.LENG = 4 C.USED = 6 C.DEVQ = 10 $SYSCH: BSS 5 ;INTERNAL CHANNEL USED ONLY FOR $SYS CALLS BLKEY: .WORD 0 ;DIRECTORY BLOCK # IN CORE CHKEY: .WORD 0 ;DEVICE WHOSE DIRECTORY IS IN CORE $DATE: .WORD 0 ;DATE WORD DFLG: .WORD 0 ;DIRECTORY OP. IN PROGRESS FLAG $USRLC: .WORD USRBUF ;*** BOOT *** WHERE DIRECTORY BUFFER IS QCOMP: .WORD COMPLT ;*** BOOT *** HANDLERS GO HERE TO FINISH UP SPUSR: .WORD 0 ;USED TO REPORT SPECIAL USR ERRORS SYUNIT: .WORD 0 ;UNIT OF RUNNING SYSTEM DEVICE SYSVER: .BYTE 2 ;THIS IS VERSION 2B SYSUPD: .BYTE 3 ;VERSION RELEASE NUMBER (A=1,B=2,ETC.) ;DV23 CONFIG: .WORD FBMON$+CLK50 ;SYSTEM CONFIGURATION WORD SCROLL: .WORD 0 ;LINK WORD FOR GTON SCROLLER TTKS: .WORD TKS ; -> KEYBOARD STATUS REGISTER TTKB: .WORD TKB ; -> KEYBOARD BUFFER TTPS: .WORD TPS ; -> TTY OUTPUT STATUS TTPB: .WORD TPB ; -> TTY OUTPUT BUFFER MAXBLK: .WORD -1 ;LARGEST OUTPUT FILE OPENABLE (INITIALLY UNLIMITED) E16LST: .WORD LST16-$RMON ;OFFSET TO EMT 16 LIST CNTXT: .WORD BKGND ; -> RUNNING JOB'S IMPURE AREA JOBNUM: .WORD 0 ;ACTIVE JOB'S NUMBER SYNCH: .WORD $SYNCH ;SYNCH ENTRY POINT (FIXED OFFSET) LOWMAP: ;MAP OF PROTECTED WORDS IN LOW CORE ; NOTE THAT THE BOOTSTRAP PROTECTS THE SYSTEM HANDLER ; BYTES ARE READ LEFT TO RIGHT. E.G., THE FOURTH BYTE 11110000 ; PROTECTS THE RANGE 60-76, AND SPECIFICALLY 60,62,64, AND 66. .RADIX 2 .BYTE 11111111,00111100,00001111,11110000 ; 0 - 076 .BYTE 11000011,00000000,00000000,00000000 ;100 - 176 .BYTE 00111111,11000000,00110011,00110000 ;200 - 276 .BYTE 00000000,00000000,00000000,00000000 ;300 - 376 .BYTE 00000000,00000000,00000000,00000000 ;400 - 476 .RADIX 8. MAPSIZ = <. - LOWMAP> / 2 ;SIZE OF PROTECT MAP IN WORDS MAPOFF = LOWMAP - $RMON USRLOC: .WORD USRBUF ;WHERE USR REALLY IS NOW GTVECT: .WORD 320 ;LOCATION OF GT40 VECTORS (USUALLY 320) ERRCNT: .WORD 0 ;ERROR COUNT RETURN FROM CUSPS $MTPS: RTI ;STACK TO PS ;DV15 $MFPS: BR GETPSW ;BR TO ROUTINE TO RETURN PS IN SP ;DV15 USRLVL: .BYTE 0 ;DEPTH OF USR CALLS USROWN: .BYTE 377 ;OWNER OF USR (377 => FREE) USRSWP: .WORD 0 ;FLAG SAYING WHETHER THE USR SWAPS $SWPBL: .WORD 0 ;START OF SWAP AREA EXLIST: .WORD 0 ;IOB USED TO WRITE OUT USER ON EXIT .WORD - .WORD 0 $KMLOC: .WORD KMON ;*** BOOT *** .WORD USRLEN+KMLEN .WORD 0 KMLOC: .WORD KMON ;LOCATION OF KMON $TIME: BSS 2 ;DOUBLE PRECISION TIMER SYINDX: .WORD 0 ;SYSTEM DEVICE INDEX NUMBER SYINDO = SYINDX - $RMON ;COMPUTE OFFSET FOR BOOTSTRAP CORPTR: .WORD 0 ;FREE CORE POINTER .WORD CORPTR ;*** BOOT *** IMPLOC: .WORD $IMPUR+MXJNUM+2 ;***BOOT*** PTR TO IMPURE AREA PTRS ;DV16 KMONIN: .WORD 1 ;0 => USER RUNNING; ELSE KMON RUNNING ;DV16 ; ROUTINE TO RETURN CONTENTS OF PS TO CALLER IN STACK. THE PS ; REFERENCE IS MODIFIED BY BOOT TO A MFPS INSTRUCTION IF THE PROCESSOR ; IS AN LSI11. GETPSW: MOV (SP),-(SP) ;COPY RETURN ADDRESS ;DV15 MOV @#PS,2(SP) ;PUT PS CONTENTS IN SP ;DV15 RTS PC ;RETURN TO CALLER ;DV15 $OWNER: BSS 2*$SLOT ;DEVICE OWNERSHIP TABLE $UNAM1: BSS $SLOT ;ASSIGNED NAME TABLE - PERMANENT NAMES DKASSG = . - $RMON .RAD50 /DK0/ SYASSG = . - $RMON .RAD50 /SY0/ ; KEEP THESE LINES IN ORDER $UNAM2: BSS $SLOT ;ASSIGNED NAME TABLE - USER NAMES .RAD50 /DK / .RAD50 /SY / $PNAME: BSS $SLOT ;PERMANENT NAME TABLE ; END OF ORDERED SECTION $STAT: BSS $SLOT .WORD 0 ;******DUMMY FOR MSG ENTRY******* .WORD 0 ;THIS HAS TO BE HERE FOR MSG. CHAN. FILST$ = 100000 ;1=> DEVICE IS FILE STRUCTURED RONLY$ = 40000 ;1=> DEVICE IS READ ONLY WONLY$ = 20000 ;1=> DEVICE IS WRITE ONLY SPECL$ = 10000 ;1=> DEVICE IS NON-RT11 STRUCTURE [MT,CT] HNDLR$ = 4000 ;1=> TAKE ABORT ENTRY ON EVERY JOB ABORT ;DV16 SPFUN$ = 2000 ;1=> DEVICE HNDLR ACCEPTS .SPFUN ;DV17 $ENTRY: BSS $SLOT .WORD -1 ;STOPPER $PNAMO = $PNAME - $ENTRY ;COMPUTE OFFSET FOR BOOTSTRAP MSGENT: JBLQE ;ENTRY TO MSG PROCESSOR $DVREC: BSS $SLOT ;DEVICE HANDLER RECORD # (FOR .FETCH) CCB: BSS 10 ;RESIDENT CCB FOR KMON SWIIOB: .WORD 0,USRLEN,0 ;IOB FOR SWAP INTO MEMORY SWOIOB: .WORD 0,-USRLEN,0 ;IOB FOR WRITING USER TO SWAP BLOCKS KMBLK: BSS 3 ;IOB FOR FINAL READ OF USER FOR R OR RUN ; ; THE FOLLOWING TABLE CONTAINS THE HIGH LIMIT (HIGHEST SETTOP + 2) ; AND LOW LIMIT FOR EACH JOB IN THE SYSTEM. ; NOTE THAT THE HIGH LIMIT FOR THE BG IS ALSO THE LOWEST LOADED ; HANDLER OR FG JOB, I.E. SYSLOW $JBLIM: SYSLOW: BLIMIT: .WORD $RMON,0 ;*** BOOT *** ENTIRE AREA FLIMIT: .WORD 0,0 ;NO FG JOB .SBTTL DEVICE TABLES ;********************************************************************** ; ; THE FOLLOWING MACRO IS USED TO MAKE ENTRIES IN ALL ; THE DEVICE-RELATED TABLES, BOTH IN THE USR AND THE RMON. ; THE 4 MACRO ARGUMENTS ARE HANDLER NAME, # OF BLOCKS ON DEVICE, ; STATUS (FOR $STAT), AND ENTRY POINT (GLOBAL NAME). ; .MACRO DEVICE NAME,SIZ,STAT,ENTRY . = $HSIZE + HNUM .IF IDN NAME,DK .WORD SYSIZE .IFF .WORD NAME'SIZE .ENDC . = $DVSIZE + HNUM .WORD SIZ . = $PNAME + HNUM .RAD50 /NAME/ . = $STAT + HNUM .WORD STAT .IF NB ENTRY . = $ENTRY + HNUM .WORD ENTRY .ENDC HNUM = HNUM + 2 .ENDM DEVICE HNUM = 0 ;START OF WITH 0 DEVICE INDEX ... = . ;KEEP OUR PLACE ; NAME SIZE STATUS ENTRY ; ---- ---- ------ ----- DEVICE TT 0 4 TTLQE DEVICE DS 1024. 16+FILST$ DSSYS DEVICE RK 11300 0+FILST$ RKSYS DEVICE RF 2000 12+FILST$ RFSYS DEVICE$)  `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?TwTq~ ? & 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?*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?Ir ? & 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&&'''() ; 14= CR11 CARD READER ; 15= RESERVED ; 16= RJS03/RJS04 FIXED HEAD DISK ; 17= RESERVED ; 20= TJU16 MAGTAPE ; 21= RP11/RPR02/RP03 DISK ; 22= RX11/RX01 FLOPPY DISK ; ; THE ODD BYTE CONTAINS INFORMATION ON THE STRUCTURE OF THE DEVICE: ; BIT 15 1 => FILE STRUCTURED DEVICE ; 0 => NON FILE STRUCTURED ; BIT 14 Mf,e Qa ew e w ew  ? ; BIT 12 1 => SPECIAL FILE DEVICE (CASSETTE) ; BIT 11 1 => TAKE ABORT ENTRY ON EVERY JOB ABORT ;DV16 ; BIT 10 1 => HANDLER ACCEPTS .SPFUN ;DV17 ; ;********************************************************************** ; ; $ENTRY TABLE ; WHEN A DEVICE HANDLER IS IN CORE, THE $ENTRY WORD FOR THE ; DEVICE POINTS TO THE HANDLER (LAST Q-ELEMENT WORD). ; A ZERO WORD MEANS THE HANDLER IS NOT IN CORE. .SBTTL IMPURE AREA OFFSET DEFINITONS .MACRO DSECT N ..TEMP = N .ENDM DSECT .MACRO DS NAME,SIZE,UNIT .IF NB NAME .LIST NAME = ..TEMP .NLIST .ENDC .IF B SIZE ..TEMP = ..TEMP + 2 .IFF .IF NB UNIT ..TEMP = ..TEMP + SIZE .IFF ..TEMP = ..TEMP + <2*SIZE> .ENDC .ENDC .ENDM DS ; FOLLOWING ARE OFFSET DEFINITIONS INTO THE IMPURE AREA: ; NUMBERS AT RIGHT INDICATE WORDS WHICH MUST STAY TOGETHER DSECT 0 ;START OFFSETS FROM 0 DS I.JSTA ;1 PTR TO $JSTAT ENTRY DS I.QHDR ;1 I/O QUEUE HEADER DS I.CMPE ;1 COMPLETION QUE? 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`& H &&E5@*B53'UUUClL55UM E55 pU ߕ eV,}ߋȁe%X,e E  27 J: j"Je"9zzS0? < & &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? w^AVE+2(SP) ;SKIP MOe, $2 ͋ eC   we "    t  ͋ex IGURATION DATA ; THE CONSw  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/ F2RD PAGE$+CRLF$+FBTTY$ .SBTTL EMT PROCESSOR ; "WHAT'S IT GOING TO BE THEN, EH?"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鈇NeD&  W  %W ART OF CHANNEL AREA CLRB @#E44$&,^ 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 5,R3 ;* GET ELEMENT BEQ 4$ ;* NONE THERE, ERROR. MOV @R3,@R5 ;* LINK AVAIL QUEUE FORWARD SPL 0 ;* BACK TO PRIO 0 ;DV15 MOV (R0)+,(R3)+ ;MOVE IN HIGH ORDER TIME MOV (R0)+,(R3)+ ; AND LOW ORDER TIME ADD #C.COMP-C.LINK,R3 ;MOVE IN STUFF IN REVERSE MOV (R1)+,@ %@aw wP f5eEE ES5 e9 bCb  eUe' @E@ 4] RM GU ̕M 6 (Ue,}  C E B BC C OVB %0,.CHAR .ENDC .ENDM .MACRO .TTOUTR EMT ^O341 .ENDM .MACRO .TTYOUT .CHAR .IF NB .CHAR MOVB .CHAR,%0 .ENDC EMT ^O341 BCS .-2 .ENDM .MACRO .TWAIT .AREA,.TIME .IF NB .AREA MOV .AREA,%0 MOV #120rBD E` `E@% e`7  U%dd ECI h@D  5 7{W# ͋b 5 MUJ>U7 <e4,}% eC % C ``` e̋̋ 6@XU@D`J 67 055n @e,}7  #̋ 7̋4 SELECT DISKAD: 0 ;SAVED COMPUTED DISK ADDRESS CMP (R5)+,(R5)+ ;ADVA.7|ddC E d @ 0 Ue,}07*Eŋ Lat UedC8 20ffE T MUJ>U7 <e4,}% eC % C ``` e̋̋ 6@XU@D`J 67 055n @e,}7  #̋ 7̋4 R RESET FLAG BR AGAIN ;AND RETRY OPERATION 2$: CMP @R5,#310 ;IS TH:>.e&c    e2  ec 4 e&c 7 \e&,n%   l^@  7  H&    "  $* U 7 7 e , MOV .CHAN,-(6.) EMT ^O<220+.AREA> .IFF .IF NB .AREA MOV .AREA,%0 MOVB #9.,1(0) .ENDC .IF NB .CHAN MOVB .CHAN,(0) .ENDC .IF NB .BLK MOV .BLK,2.(0) .ENDC .IF NB .BUFF ,@~@'U$@62+) xK.K37*7R <9!  MU@J ` L! 9 ׌/E 4 W ť` ׌_NW W W W   % U? teP,} beRe,}&e7 e7e7,`BB`eBB`eBB`eLBBB`ee&$5eCeCe0CeCw(,7e6Ce4CeCe&Cw  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  b%\  w L%\ C %eab& 6Bn .,eE0eE`+  2 2 7 47 eJ %$@  \e" ! w     KE  L twBC - wFE BEE;5 5E@@U E U E@@|5L % ̋!55$  c85/5   XU@@E5U5 &UU@  U  c c c& $fU@@ ;& e5@ *5@  w 8 5@ ? w T  R3 JSR PC,ECHO,2<F&&DDå̕wLUe7 ߋ* e  e  هwIO d 0e   EER CASE TO UPPER CASE 7$:000 ,R3 L\; SYSMAC.SML--SYSTEM MACRO LIBRARY ; FOR RT11 V2C. ; ; DEC-11-ORSYA-E ; ; 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. ; ; EF,JD ; .MACRO ..V1.. ...V1=1 .ENDM .MACRO ..V2.. .MCALL ...CM1,...CM2,...CM3,...CM4 ...V2=1 .ENDM .MACRO ...CM1 .AREA,.CODE,.CHAN .IF NB .AREA MOV .AREA,%0 MOVB #.CODE,1(0) .ENDC .IF NB .CHAN .IF IDN <.CHAN>,<#0> CLRB (0) .IFF MOVB .CHAN,(0) .ENDC .ENDC .ENDM .MACRO ...CM2 .ARG,.OFFSET,.INS .IIF NB <.ARG>, MOV .ARG,.OFFSET(0) .IIF NB <.INS>, EMT ^O375 .ENDM .MACRO ...CM3 .CHAN,.CODE MOV #.CODE*^O400,%0 .IIF NB <.CHAN>, BISB .CHAN,%0 EMT ^O374 .ENDM .MACRO ...CM4 .AREA,.CHAN,.BUFF,.WCNT,.BLK,.CRTN,.CODE ...CM1 <.AREA>,<.CODE>,<.CHAN> ...CM2 <.BLK>,2. ...CM2 <.BUFF>,4. ...CM2 <.WCNT>,6. ...CM2 <.CRTN>,8.,X .ENDM .MACRO .CDFN .AREA,.ADD,.NUM ...CM1 <.AREA>,13.,#0 ...CM2 <.ADD>,2. ...CM2 <.NUM>,4.,X .ENDM .MACRO .CHAIN ...CM3 ,8. .ENDM .MACRO .CHCOPY .AREA,.CHAN,.OCHAN ...CM1 <.AREA>,11.,<.CHAN> ...CM2 <.OCHAN>,2.,X .ENDM .MACRO .CNTXSW .AREA,.ADD ...CM1 <.AREA>,27.,#0 ...CM2 <.ADD>,2.,X .ENDM .MACRO .CMKT .AREA,.ID,.TIME ...CM1 <.AREA>,19.,#0 ...CM2 <.ID>,2. .IF B .TIME CLR 4.(0) .IFF MOV .TIME,4.(0) .ENDC EMT ^O375 .ENDM .MACRO .CLOSE .CHAN .IF DF ...V1 EMT ^O<160+.CHAN> .IFF ...CM3 <.CHAN>,6. .ENDC .ENDM .MACRO .CSIGEN .DEVSPC,.DEFEXT,.CSTRING MOV .DEVSPC,-(6.) MOV .DEFEXT,-(6.) .IF B .CSTRING CLR -(6.) .IFF MOV .CSTRING,-(6.) .ENDC EMT ^O344 .ENDM .MACRO .CSISPC .OUTSPC,.DEFEXT,.CSTRING MOV .OUTSPC,-(6.) MOV .DEFEXT,-(6.) .IF B .CSTRING CLR -(6.) .IFF MOV .CSTRING,-(6.) .ENDC EMT ^O345 .ENDM .MACRO .CSTAT .AREA,.CHAN,.ADD ...CM1 <.AREA>,23.,<.CHAN> ...CM2 <.ADD>,2.,X .ENDM .MACRO .DATE MOV @#54,%0 MOV ^O262(0),%0 .ENDM .MACRO .DELETE .AREA,.CHAN,.DEVBLK,.SPF .IF DF ...V1 .IIF NB <.CHAN> MOV .CHAN,%0 EMT ^O<.AREA> .IFF ...CM1 <.AREA>,0,<.CHAN> ...CM2 <.DEVBLK>,2. .IF B .SPF CLR 4.(0) .IFF MOV .SPF,4.(0) .ENDC EMT ^O375 .ENDC .ENDM .MACRO .DEVICE .AREA,.ADD ...CM1 <.AREA>,12.,#0 ...CM2 <.ADD>,2.,X .ENDM .MACRO .DSTATUS .RETSPC,.DNAME .IIF NB <.DNAME>, MOV .DNAME,%0 MOV .RETSPC,-(6.) EMT ^O342 .ENDM .MACRO .ENTER .AREA,.CHAN,.DEVBLK,.LEN,.SPF .IF DF ...V1 MOV .CHAN,%0 .IF B .DEVBLK CLR -(6.) .IFF MOV .DEVBLK,-(6.) .ENDC EMT ^O<40+.AREA> .IFF ...CM1 <.AREA>,2.,<.CHAN> ...CM2 <.DEVBLK>,2. .IF NB .LEN MOV .LEN,4.(0) .IFF CLR 4.(0) .ENDC .IF NB .SPF MOV .SPF,6.(0) .IFF CLR 6.(0) .ENDC EMT ^O375 .ENDC .ENDM .MACRO .EXIT EMT ^O350 .ENDM .MACRO .FETCH .ADD,.DNAME .IIF NB <.DNAME>, MOV .DNAME,%0 MOV .ADD,-(6.) EMT ^O343 .ENDM .MACRO .GTIM .AREA,.ADD ...CM1 <.AREA>,17.,#0 ...CM2 <.ADD>,2.,X .ENDM .MACRO .GTJB .AREA,.ADD ...CM1 <.AREA>,16.,#0 ...CM2 <.ADD>,2.,X .ENDM .MACRO .HERR ...CM3 ,5. .ENDM .MACRO .HRESET EMT ^O357 .ENDM .MACRO .INTEN .PRIO,.PIC .IF NB .PIC MOV @#^O54,-(6.) JSR 5.,@(6.)+ .IFF JSR 5.,@^O54 .ENDC .WORD ^C<.PRIO*32.>&224. .ENDM .MACRO .LOCK EMT ^O346 .ENDM .MACRO .LOOKUP .AREA,.CHAN,.DEVBLK,.SPF .IF DF ...V1 .IIF NB <.CHAN>, MOV .CHAN,%0 EMT ^O<20+.AREA> .IFF ...CM1 <.AREA>,1,<.CHAN> ...CM2 <.DEVBLK>,2. .IF B .SPF CLR 4.(0) .IFF MOV .SPF,4.(0) .ENDC EMT ^O375 .ENDC .ENDM .MACRO .MFPS .ADD MOV @#^O54,-(6.) ADD #^O362,(6.) JSR 7.,@(6.)+ .IIF NB <.ADD>, MOVB (6.)+,.ADD .ENDM .MACRO .MRKT .AREA,.TIME,.CRTN,.ID ...CM1 <.AREA>,18.,#0 ...CM2 <.TIME>,2. ...CM2 <.CRTN>,4. ...CM2 <.ID>,6.,X .ENDM .MACRO .MTPS .ADD .IIF NB <.ADD>, CLR -(6.) .IIF NB <.ADD>, MOVB .ADD,(6.) MOV @#^O54,-(6.) ADD #^O360,(6.) JSR 7.,@(6.)+ .ENDM .MACRO .MWAIT ...CM3 ,9. .ENDM .MACRO .PRINT .ADD .IIF NB <.ADD>, MOV .ADD,%0 EMT ^O351 .ENDM .MACRO .PROTECT .AREA,.ADD ...CM1 <.AREA>,25.,#0 ...CM2 <.ADD>,2.,X .ENDM .MACRO .PURGE .CHAN ...CM3 <.CHAN>,3. .ENDM .MACRO .QSET .QADD,.QLEN .IIF NB <.QLEN>, MOVB .QLEN,%0 MOV .QADD,-(6.) EMT ^O353 .ENDM .MACRO .RCTRLO EMT ^O355 .ENDM .MACRO .RCVD .AREA,.BUFF,.WCNT ...CM4 <.AREA>,#0,<.BUFF>,<.WCNT>,,#1,22. .ENDM .MACRO .RCVDC .AREA,.BUFF,.WCNT,.CRTN ...CM4 <.AREA>,#0,<.BUFF>,<.WCNT>,,<.CRTN>,22. .ENDM .MACRO .RCVDW .AREA,.BUFF,.WCNT ...CM4 <.AREA>,#0,<.BUFF>,<.WCNT>,,#0,22. .ENDM .MACRO .READ .AREA,.CHAN,.BUFF,.WCNT,.BLK .IF DF ...V1 .IIF NB <.WCNT>, MOV .WCNT,%0 MOV #1,-(6.) MOV .BUFF,-(6.) MOV .CHAN,-(6.) EMT ^O<200+.AREA> .IFF ...CM4 <.AREA>,<.CHAN>,<.BUFF>,<.WCNT>,<.BLK>,#1,8. .ENDC .ENDM .MACRO .READC .AREA,.CHAN,.BUFF,.WCNT,.CRTN,.BLK .IF DF ...V1 .IIF NB <.CRTN>, MOV .CRTN,%0 MOV .WCNT,-(6.) MOV .BUFF,-(6.) MOV .CHAN,-(6.) EMT ^O<200+.AREA> .IFF ...CM4 <.AREA>,<.CHAN>,<.BUFF>,<.WCNT>,<.BLK>,<.CRTN>,8. .ENDC .ENDM .MACRO .READW .AREA,.CHAN,.BUFF,.WCNT,.BLK .IF DF ...V1 .IIF NB <.WCNT>, MOV .WCNT,%0 CLR -(6.) MOV .BUFF,-(6.) MOV .CHAN,-(6.) EMT ^O<200+.AREA> .IFF ...CM4 <.AREA>,<.CHAN>,<.BUFF>,<.WCNT>,<.BLK>,#0,8. .ENDC .ENDM .MACRO .REGDEF R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 .ENDM .MACRO .RELEASE .DEVBLK .IIF NB <.DEVBLK>, MOV .DEVBLK,%0 CLR -(6.) EMT ^O343 .ENDM .MACRO .RENAME .AREA,.CHAN,.DEVBLK .IF DF ...V1 .IIF NB <.CHAN>, MOV .CHAN,%0 EMT ^O<100+.AREA> .IFF ...CM1 <.AREA>,4.,<.CHAN> ...CM2 <.DEVBLK>,2.,X .ENDC .ENDM .MACRO .REOPEN .AREA,.CHAN,.CBLK .IF DF ...V1 .IIF NB <.CHAN>, MOV .CHAN,%0 EMT ^O<140+.AREA> .IFF ...CM1 <.AREA>,6.,<.CHAN> ...CM2 <.CBLK>,2.,X .ENDC .ENDM .MACRO .SAVESTAT .AREA,.CHAN,.CBLK .IF DF ...V1 .IIF NB <.CHAN>, MOV .CHAN,%0 EMT ^O<120+.AREA> .IFF ...CM1 <.AREA>,5.,<.CHAN> ...CM2 <.CBLK>,2.,X .ENDC .ENDM .MACRO .RSUM ...CM3 ,2. .ENDM .MACRO .SDAT .AREA,.BUFF,.WCNT ...CM4 <.AREA>,#0,<.BUFF>,<.WCNT>,,#1,21. .ENDM .MACRO .SDATC .AREA,.BUFF,.WCNT,.CRTN ...CM4 <.AREA>,#0,<.BUFF>,<.WCNT>,,<.CRTN>,21. .ENDM .MACRO .SDATW .AREA,.BUFF,.WCNT ...CM4 <.AREA>,#0,<.BUFF>,<.WCNT>,,#0,21. .ENDM .MACRO .SERR ...CM3 ,4. .ENDM .MACRO .SETTOP .ADD .IIF NB <.ADD>, MOV .ADD,%0 EMT ^O354 .ENDM .MACRO .SFPA .AREA,.ADD ...CM1 <.AREA>,24.,#0 ...CM2 <.ADD>,2.,X .ENDM .MACRO .SPFUN .AREA,.CHAN,.CODE,.BUFF,.WCNT,.BLK,.CRTN ...CM1 <.AREA>,26.,<.CHAN> ...CM2 <.BLK>,2. ...CM2 <.BUFF>,4. ...CM2 <.WCNT>,6. .IF NB .CODE MOVB #^O377,8.(0) MOVB .CODE,9.(0) .ENDC .IF B .CRTN CLR 10.(0) .IFF MOV .CRTN,10.(0) .ENDC EMT ^O375 .ENDM .MACRO .SRESET EMT ^O352 .ENDM .MACRO .SPND ...CM3 ,1 .ENDM .MACRO .SYNCH .AREA .IIF NB <.AREA>, MOV .AREA,%4 MOV @#^O54,%5 JSR 5.,@^O324(5.) .ENDM .MACRO .TLOCK ...CM3 ,7. .ENDM .MACRO .TRPSET .AREA,.ADD ...CM1 <.AREA>,3.,#0 ...CM2 <.ADD>,2.,X .ENDM .MACRO .TTINR EMT ^O340 .ENDM .MACRO .TTYIN .CHAR EMT ^O340 BCS .-2 .IIF NB <.CHAR>, MOVB %0,.CHAR .ENDM .MACRO .TTOUTR EMT ^O341 .ENDM .MACRO .TTYOUT .CHAR .IIF NB <.CHAR>, MOVB .CHAR,%0 EMT ^O341 BCS .-2 .ENDM .MACRO .TWAIT .AREA,.TIME ...CM1 <.AREA>,20.,#0 ...CM2 <.TIME>,2.,X .ENDM .MACRO .UNLOCK EMT ^O347 .ENDM .MACRO .WAIT .CHAN .IF DF ...V1 EMT ^O<240+.CHAN> .IFF ...CM3 <.CHAN>,0 .ENDC .ENDM .MACRO .WRITE .AREA,.CHAN,.BUFF,.WCNT,.BLK .IF DF ...V1 .IIF NB <.WCNT>, MOV .WCNT,%0 MOV #1,-(6.) MOV .BUFF,-(6.) MOV .CHAN,-(6.) EMT ^O<220+.AREA> .IFF ...CM4 <.AREA>,<.CHAN>,<.BUFF>,<.WCNT>,<.BLK>,#1,9. .ENDC .ENDM .MACRO .WRITW .AREA,.CHAN,.BUFF,.WCNT,.BLK .IF DF ...V1 .IIF NB <.WCNT>, MOV .WCNT,%0 CLR -(6.) MOV .BUFF,-(6.) MOV .CHAN,-(6.) EMT ^O<220+.AREA> .IFF ...CM4 <.AREA>,<.CHAN>,<.BUFF>,<.WCNT>,<.BLK>,#0,9. .ENDC .ENDM .MACRO .WRITC .AREA,.CHAN,.BUFF,.WCNT,.CRTN,.BLK .IF DF ...V1 .IIF NB <.CRTN>, MOV .CRTN,%0 MOV .WCNT,-(6.) MOV .BUFF,-(6.) MOV .CHAN,-(6.) EMT ^O<220+.AREA> .IFF ...CM4 <.AREA>,<.CHAN>,<.BUFF>,<.WCNT>,<.BLK>,<.CRTN>,9. .ENDC .ENDM ; SYSMAC.8K ; RT-11 V2C SYSTEM MACRO LIBRARY FOR USE WITH EXPAND ; ; DEC-11-ORSYA-E ; ; EF,JD ; ; 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. ; .MACRO ..V1.. ...V1=1 .ENDM .MACRO ..V2.. ...V2=1 .ENDM .MACRO ...CM1 .ENDM .MACRO ...CM2 .ENDM .MACRO ...CM3 .ENDM .MACRO ...CM4 .ENDM .MACRO .CDFN .AREA,.ADD,.NUM .IF NB .AREA MOV .AREA,%0 MOV #6400,(0) .ENDC .IF NB .ADD MOV .ADD,2.(0) .ENDC .IF NB .NUM, MOV .NUM,4.(0) .ENDC EMT ^O375 .ENDM .MACRO .CHAIN MOV #4000,%0 EMT ^O374 .ENDM .MACRO .CHCOPY .AREA,.CHAN,.OCHAN .IF NB .AREA MOV .AREA,%0 MOVB #11.,1(0) .ENDC .IF NB .CHAN MOVB .CHAN,(0) .ENDC .IF NB .OCHAN MOV .OCHAN,2.(0) .ENDC EMT ^O375 .ENDM .MACRO .CNTXSW .AREA,.ADD .IF NB .AREA MOV .AREA,%0 MOV #15400,(0) .ENDC .IF NB .ADD MOV .ADD,2.(0) .ENDC EMT ^O375 .ENDM .MACRO .CLOSE .CHAN .IF DF ...V1 EMT ^O<160+.CHAN> .IFF MOV #3000,%0 .IF NB .CHAN BISB .CHAN,%0 .ENDC EMT ^O374 .ENDC .ENDM .MACRO .CMKT .AREA,.ID,.TIME .IF NB .AREA MOV .AREA,%0 MOV #11400,(0) .ENDC .IF NB .ID MOV .ID,2.(0) .ENDC .IF NB .TIME MOV .TIME,4.(0) .IFF CLR 4.(0) .ENDC EMT ^O375 .ENDM .MACRO .CSIGEN .DEVSPC,.DEFEXT,.CSTRING MOV .DEVSPC,-(6.) MOV .DEFEXT,-(6.) .IF B .CSTRING CLR -(6.) .IFF MOV .CSTRING,-(6.) .ENDC EMT ^O344 .ENDM .MACRO .CSISPC .OUTSPC,.DEFEXT,.CSTRING MOV .OUTSPC,-(6.) MOV .DEFEXT,-(6.) .IF B .CSTRING CLR -(6.) .IFF MOV .CSTRING,-(6.) .ENDC EMT ^O345 .ENDM .MACRO .CSTAT .AREA,.CHAN,.ADD .IF NB .AREA MOV .AREA,%0 MOVB #23.,1(0) .ENDC .IF NB .CHAN MOVB .CHAN,(0) .ENDC .IF NB .ADD MOV .ADD,2.(0) .ENDC EMT ^O375 .ENDM .MACRO .DATE MOV @#^O54,%0 MOV ^O262(0),%0 .ENDM .MACRO .DELETE .AREA,.CHAN,.DEVBLK,.SPF .IF DF ...V1 .IF NB .CHAN MOV .CHAN,%0 .ENDC EMT ^O<.AREA> .IFF .IF NB .AREA MOV .AREA,%0 CLRB 1(0) .ENDC .IF NB .CHAN MOVB .CHAN,(0) .ENDC .IF NB .DEVBLK MOV .DEVBLK,2.(0) .ENDC .IF B .SPF CLR 4.(0) .IFF MOV .SPF,4.(0) .ENDC EMT ^O375 .ENDC .ENDM .MACRO .DEVICE .AREA,.ADD .IF NB .AREA MOV .AREA,%0 MOV #6000,(0) .ENDC .IF NB .ADD MOV .ADD,2.(0) .ENDC EMT ^O375 .ENDM .MACRO .DSTATUS .RETSPC,.DNAME .IF NB .DNAME MOV .DNAME,%0 .ENDC MOV .RETSPC,-(6.) EMT ^O342 .ENDM .MACRO .ENTER .AREA,.CHAN,.DEVBLK,.LEN,.SPF .IF DF ...V1 MOV .CHAN,%0 .IF B .DEVBLK CLR -(6.) .IFF MOV .DEVBLK,-(6.) .ENDC EMT ^O<40+.AREA> .IFF .IF NB .AREA MOV .AREA,%0 MOVB #2.,1(0) .ENDC .IF NB .CHAN MOVB .CHAN,(0) .ENDC .IF NB .DEVBLK MOV .DEVBLK,2.(0) .ENDC .IF NB .LEN MOV .LEN,4.(0) .IFF CLR 4.(0) .ENDC .IF NB .SPF MOV .SPF,6.(0) .IFF CLR 6.(0) .ENDC EMT ^O375 .ENDC .ENDM .MACRO .EXIT EMT ^O350 .ENDM .MACRO .FETCH .ADD,.DNAME .IF NB .DNAME MOV .DNAME,%0 .ENDC MOV .ADD,-(6.) EMT ^O343 .ENDM .MACRO .GTIM .AREA,.ADD .IF NB .AREA MOV .AREA,%0 MOV #10400,(0) .ENDC .IF NB .ADD MOV .ADD,2.(0) .ENDC EMT ^O375 .ENDM .MACRO .GTJB .AREA,.ADD .IF NB .AREA MOV .AREA,%0 MOV #10000,(0) .ENDC .IF NB .ADD MOV .ADD,2.(0) .ENDC EMT ^O375 .ENDM .MACRO .HERR MOV #2400,%0 EMT ^O374 .ENDM .MACRO .HRESET EMT ^O357 .ENDM .MACRO .LOCK EMT ^O346 .ENDM .MACRO .INTEN .PRIO,.PIC .IF NB .PIC MOV @#^O54,-(6.) JSR 5.,@(6.)+ .IFF JSR 5.,@^O54 .ENDC .WORD ^C<.PRIO*32.>&224. .ENDM .MACRO .LOOKUP .AREA,.CHAN,.DEVBLK,.SPF .IF DF ...V1 .IF NB .CHAN MOV .CHAN,%0 .ENDC EMT ^O<20+.AREA> .IFF .IF NB .AREA MOV .AREA,%0 MOVB #1,1(0) .ENDC .IF NB .CHAN MOVB .CHAN,(0) .ENDC .IF NB .DEVBLK MOV .DEVBLK,2.(0) .ENDC .IF NB .SPF MOV .SPF,4.(0) .IFF CLR 4.(0) .ENDC EMT ^O375 .ENDC .ENDM .MACRO .MFPS .ADD MOV @#^O54,-(6.) ADD #^O362,(6.) JSR 7.,@(6.)+ .IF NB .ADD MOVB (6.)+,.ADD .ENDC .ENDM .MACRO .MRKT .AREA,.TIME,.CRTN,.ID .IF NB .AREA MOV .AREA,%0 MOV #11000,(0) .ENDC .IF NB .TIME MOV .TIME,2.(0) .ENDC .IF NB .CRTN MOV .CRTN,4.(0) .ENDC .IF NB .ID MOV .ID,6.(0) .ENDC EMT ^O375 .ENDM .MACRO .MTPS .ADD .IF NB .ADD CLR -(6.) MOVB .ADD,(6.) .ENDC MOV @#^O54,-(6.) ADD #^O360,(6.) JSR 7.,@(6.)+ .ENDM .MACRO .MWAIT MOV #4400,%0 EMT ^O374 .ENDM .MACRO .PRINT .ADD .IF NB .ADD MOV .ADD,%0 .ENDC EMT ^O351 .ENDM .MACRO .PROTECT .AREA,.ADD .IF NB .AREA MOV .AREA,%0 MOV #14400,(0) .ENDC .IF NB .ADD MOV .ADD,2.(0) .ENDC EMT ^O375 .ENDM .MACRO .PURGE .CHAN MOV #1400,%0 .IF NB .CHAN BISB .CHAN,%0 .ENDC EMT ^O374 .ENDM .MACRO .QSET .QADD,.QLEN .IF NB .QLEN MOV .QLEN,%0 .ENDC MOV .QADD,-(6.) EMT ^O353 .ENDM .MACRO .RCTRLO EMT ^O355 .ENDM .MACRO .RCVD .AREA,.BUFF,.WCNT .IF NB .AREA MOV .AREA,%0 MOV #13000,(0) .ENDC .IF NB .BUFF MOV .BUFF,4.(0) .ENDC .IF NB .WCNT MOV .WCNT,6.(0) .ENDC MOV #1,8.(0) EMT ^O375 .ENDM .MACRO .RCVDC .AREA,.BUFF,.WCNT,.CRTN .IF NB .AREA MOV .AREA,%0 MOV #13000,(0) .ENDC .IF NB .BUFF MOV .BUFF,4.(0) .ENDC .IF NB .WCNT MOV .WCNT,6.(0) .ENDC .IF NB .CRTN MOV .CRTN,8.(0) .ENDC EMT ^O375 .ENDM .MACRO .RCVDW .AREA,.BUFF,.WCNT .IF NB .AREA MOV .AREA,%0 MOV #13000,(0) .ENDC .IF NB .BUFF MOV .BUFF,4.(0) .ENDC .IF NB .WCNT MOV .WCNT,6.(0) .ENDC CLR 8.(0) EMT ^O375 .ENDM .MACRO .READ .AREA,.CHAN,.BUFF,.WCNT,.BLK .IF DF ...V1 .IF NB .WCNT MOV .WCNT,%0 .ENDC MOV #1,-(6.) MOV .BUFF,-(6.) MOV .CHAN,-(6.) EMT ^O<200+.AREA> .IFF .IF NB .AREA MOV .AREA,%0 MOVB #8.,1(0) .ENDC .IF NB .CHAN MOVB .CHAN,(0) .ENDC .IF NB .BLK MOV .BLK,2.(0) .ENDC .IF NB .BUFF MOV .BUFF,4.(0) .ENDC .IF NB .WCNT MOV .WCNT,6.(0) .ENDC MOV #1,8.(0) EMT ^O375 .ENDC .ENDM .MACRO .READC .AREA,.CHAN,.BUFF,.WCNT,.CRTN,.BLK .IF DF ...V1 .IF NB .CRTN MOV .CRTN,%0 .ENDC MOV .WCNT,-(6.) MOV .BUFF,-(6.) MOV .CHAN,-(6.) EMT ^O<200+.AREA> .IFF .IF NB .AREA MOV .AREA,%0 MOVB #8.,1(0) .ENDC .IF NB .CHAN MOVB .CHAN,(0) .ENDC .IF NB .BLK MOV .BLK,2.(0) .ENDC .IF NB .BUFF MOV .BUFF,4.(0) .ENDC .IF NB .WCNT MOV .WCNT,6.(0) .ENDC .IF NB .CRTN MOV .CRTN,8.(0) .ENDC EMT ^O375 .ENDC .ENDM .MACRO .READW .AREA,.CHAN,.BUFF,.WCNT,.BLK .IF DF ...V1 .IF NB .WCNT MOV .WCNT,%0 .ENDC CLR -(6.) MOV .BUFF,-(6.) MOV .CHAN,-(6.) EMT ^O<200+.AREA> .IFF .IF NB .AREA MOV .AREA,%0 MOVB #8.,1(0) .ENDC .IF NB .CHAN MOVB .CHAN,(0) .ENDC .IF NB .BLK MOV .BLK,2.(0) .ENDC .IF NB .BUFF MOV .BUFF,4.(0) .ENDC .IF NB .WCNT MOV .WCNT,6.(0) .ENDC CLR 8.(0) EMT ^O375 .ENDC .ENDM .MACRO .REGDEF R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 .ENDM .MACRO .RELEASE .DEVBLK .IF NB .DEVBLK MOV .DEVBLK,%0 .ENDC CLR -(6.) EMT ^O343 .ENDM .MACRO .RENAME .AREA,.CHAN,.DEVBLK .IF DF ...V1 .IF NB .CHAN MOV .CHAN,%0 .ENDC EMT ^O<100+.AREA> .IFF .IF NB .AREA MOV .AREA,%0 MOVB #4.,1(0) .ENDC .IF NB .CHAN MOVB .CHAN,(0) .ENDC .IF NB .DEVBLK MOV .DEVBLK,2.(0) .ENDC EMT ^O375 .ENDC .ENDM .MACRO .REOPEN .AREA,.CHAN,.CBLK .IF DF ...V1 .IF NB .CHAN MOV .CHAN,%0 .ENDC EMT ^O<140+.AREA> .IFF .IF NB .AREA MOV .AREA,%0 MOVB #6.,1(0) .ENDC .IF NB .CHAN MOVB .CHAN,(0) .ENDC .IF NB .CBLK MOV .CBLK,2.(0) .ENDC EMT ^O375 .ENDC .ENDM .MACRO .SAVESTAT .AREA,.CHAN,.CBLK .IF DF ...V1 .IF NB .CHAN MOV .CHAN,%0 .ENDC EMT ^O<120+.AREA> .IFF .IF NB .AREA MOV .AREA,%0 MOVB #5.,1(0) .ENDC .IF NB .CHAN MOVB .CHAN,(0) .ENDC .IF NB .CBLK MOV .CBLK,2.(0) .ENDC EMT ^O375 .ENDC .ENDM .MACRO .RSUM MOV #1000,%0 EMT ^O374 .ENDM .MACRO .SDAT .AREA,.BUFF,.WCNT .IF NB .AREA MOV .AREA,%0 MOV #12400,(0) .ENDC .IF NB .BUFF MOV .BUFF,4.(0) .ENDC .IF NB .WCNT MOV .WCNT,6.(0) .ENDC MOV #1,8.(0) EMT ^O375 .ENDM .MACRO .SDATC .AREA,.BUFF,.WCNT,.CRTN .IF NB .AREA MOV .AREA,%0 MOV #12400,(0) .ENDC .IF NB .BUFF MOV .BUFF,4.(0) .ENDC .IF NB .WCNT MOV .WCNT,6.(0) .ENDC .IF NB .CRTN MOV .CRTN,8.(0) .ENDC EMT ^O375 .ENDM .MACRO .SDATW .AREA,.BUFF,.WCNT .IF NB .AREA MOV .AREA,%0 MOV #12400,(0) .ENDC .IF NB .BUFF MOV .BUFF,4.(0) .ENDC .IF NB .WCNT MOV .WCNT,6.(0) .ENDC CLR 8.(0) EMT ^O375 .ENDM .MACRO .SERR MOV #2000,%0 EMT ^O374 .ENDM .MACRO .SETTOP .ADD .IF NB .ADD MOV .ADD,%0 .ENDC EMT ^O354 .ENDM .MACRO .SFPA .AREA,.ADD .IF NB .AREA MOV .AREA,%0 MOV #14000,(0) .ENDC .IF NB .ADD MOV .ADD,2.(0) .ENDC EMT ^O375 .ENDM .MACRO .SPFUN .AREA,.CHAN,.CODE,.BUFF,.WCNT,.BLK,.CRTN .IF NB .AREA MOV .AREA,%0 MOVB #26.,1(0) .ENDC .IF NB .CHAN MOVB .CHAN,(0) .ENDC .IF NB .BLK MOV .BLK,2.(0) .ENDC .IF NB .BUFF MOV .BUFF,4.(0) .ENDC .IF NB .WCNT MOV .WCNT,6.(0) .ENDC .IF NB .CODE MOVB #^O377,8.(0) MOVB .CODE,9.(0) .ENDC .IF NB .CRTN MOV .CRTN,8.(0) .IFF CLR 8.(0) .ENDC EMT ^O375 .ENDM .MACRO .SRESET EMT ^O352 .ENDM .MACRO .SPND MOV #400,%0 EMT ^O374 .ENDM .MACRO .SYNCH .AREA .IF NB .AREA MOV .AREA,%4 .ENDC MOV @#^O54,%5 JSR 5.,@^O324(5.) .ENDM .MACRO .TLOCK MOV #3400,%0 EMT ^O374 .ENDM .MACRO .TRPSET .AREA,.ADD .IF NB .AREA MOV .AREA,%0 MOV #1400,(0) .ENDC .IF NB .ADD MOV .ADD,2.(0) .ENDC EMT ^O375 .ENDM .MACRO .TTINR EMT ^O340 .ENDM .MACRO .TTYIN .CHAR EMT ^O340 BCS .-2 .IF NB .CHAR MOVB %0,.CHAR .ENDC .ENDM .MACRO .TTOUTR EMT ^O341 .ENDM .MACRO .TTYOUT .CHAR .IF NB .CHAR MOVB .CHAR,%0 .ENDC EMT ^O341 BCS .-2 .ENDM .MACRO .TWAIT .AREA,.TIME .IF NB .AREA MOV .AREA,%0 MOV #12000,(0) .ENDC .IF .TIME MOV .TIME,2.(0) .ENDC EMT ^O375 .ENDM .MACRO .UNLOCK EMT ^O347 .ENDM .MACRO .WAIT .CHAN .IF DF ...V1 EMT ^O<240+.CHAN> .IFF CLR %0 .IF NB .CHAN .ENDC BISB .CHAN,%0 EMT ^O374 .ENDC .ENDM .MACRO .WRITE .AREA,.CHAN,.BUFF,.WCNT,.BLK .IF DF ...V1 .IF NB .WCNT MOV .WCNT,%0 .ENDC MOV #1,-(6.) MOV .BUFF,-(6.) MOV .CHAN,-(6.) EMT ^O<220+.AREA> .IFF .IF NB .AREA MOV .AREA,%0 MOVB #9.,1(0) .ENDC .IF NB .CHAN MOVB .CHAN,(0) .ENDC .IF NB .BLK MOV .BLK,2.(0) .ENDC .IF NB .BUFF MOV .BUFF,4.(0) .ENDC .IF NB .WCNT MOV .WCNT,6.(0) .ENDC MOV #1,8.(0) EMT ^O375 .ENDC .ENDM .MACRO .WRITC .AREA,.CHAN,.BUFF,.WCNT,.CRTN,.BLK .IF DF ...V1 .IF NB .CRTN MOV .CRTN,%0 .ENDC MOV .WCNT,-(6.) MOV .BUFF,-(6.) MOV .CHAN,-(6.) EMT ^O<220+.AREA> .IFF .IF NB .AREA MOV .AREA,%0 MOVB #9.,1(0) .ENDC .IF NB .CHAN MOVB .CHAN,(0) .ENDC .IF NB .BLK MOV .BLK,2.(0) .ENDC .IF NB .BUFF MOV .BUFF,4.(0) .ENDC .IF NB .WCNT MOV .WCNT,6.(0) .ENDC .IF NB .CRTN MOV .CRTN,8.(0) .ENDC EMT ^O375 .ENDC .ENDM .MACRO .WRITW .AREA,.CHAN,.BUFF,.WCNT,.BLK .IF DF ...V1 .IF NB .WCNT MOV .WCNT,%0 .ENDC CLR -(6.) MOV .BUFF,-(6.) MOV .CHAN,-(6.) EMT ^O<220+.AREA> .IFF .IF NB .AREA MOV .AREA,%0 MOVB #9.,1(0) .ENDC .IF NB .CHAN MOVB .CHAN,(0) .ENDC .IF NB .BLK MOV .BLK,2.(0) .ENDC .IF NB .BUFF MOV .BUFF,4.(0) .ENDC .IF NB .WCNT MOV .WCNT,6.(0) .ENDC CLR 8.(0) EMT ^O375 .ENDC .ENDM 2 0P NE 7$ ;NO, JUST EXIT OFORLIBC,GETPSW ;PS TO STACK ;DV15 SPL 7 ;UPWARDS MOV (R5)+,@R4 ;PUT TOP C ELEMENT IN THIS LINK BNE 6$ ;TOP ELT EXISTS. MAKE THIS THE TOP MOV R4,-(R5) ;C. QUEUE EMPTY. MAKE THIS THE TOP BR 6$ ;AND GO MAKE IT THE LQE, TOO. 20$: RTS R5 ;RETURN IF SYNCH NODE IN USE. .DSABL LSB .SBTTL GET TIME OF DAY, CANCEL MARK TIME ; "PERFECTION IN A CLOCK DOES NOT CONSIST IN BEING FAST, ; BUT IN BEING ON TIME." - VAUVENARGUES, "REFLEXIONS" ; GET TIME OF DAY .ENABL LSB G$TIM: ENSYS EMTRTI 11$: ADDR $TIME+2,R1 ;R1 -> TIME ADDITIVE MOV PSCLKH,(R0)+ ;MOVE IN HIGH PSEUDO TIME MOV PSCLOK,@R0 ;MOVE IN LOW ORDER TIME ADD @R1,@R0 ;ADD IN THING TO MAKE IT TIME OF DAY ADC -(R0) ;PROPAGANDA CARRY ADD -(R1),@R0 ;AND SO ON ... CMP (R0)+,(PC)+ ;CHECK FOR MIDNIGHT TURNOVER GTM.HI: .WORD 117 ;INITIALLY ASSUME 60 CYCLE BLO 6$ ;NOT YET BHI 12$ ;EGAD, 2 DAYS GONE BY CMP @R0,#15000 ;MIDNIGHT YET? BLO 6$ ;NO 12$: SUB GTM.HI,(R1)+ ;ADJUST TIME WORDS SUB (PC)+,@R1 GTM.LO: .WORD 15000 SBC -(R1) ADD #40,$DATE ;FIX TODAY TST -(R0) ;ADJUST HIS POINTER BR 11$ ;TRY AGAIN ; CANCEL MARK TIME: TAKES AN IDENTIFYING NUMBER AND CANCELS ; THE FIRST MARK TIME ELEMENT FOR THAT JOB WHICH HAS THAT NUMBER. ; IF A TWO WORD AREA IS ALSO GIVEN, THE AMOUNT OF TIME REMAINING ; IS RETURNED IN THAT AREA C$MKT: ENSYS EMTRTI ;DO IT IN SYS STATE TO STOP CLOCK MOV #177377,SYSLIM ;SET SYSTEM ID LIMIT ;DV16 CMARKT: ADDR LKQUE+2,R4 ;POINT TO QUEUE HEADER 1$: MOV R4,R3 ;R3 -> PREV LINK WORD + 2 2$: MOV -(R3),R4 ;R4 -> NEXT ELEMENT BEQ 5$ ;END OF QUEUE ADD #C.JNUM,R4 ;POINT TO JOB NUMBER WORD CMP JOBNUM,@R4 ;IS ELEMENT FOR THIS JOB? BNE 1$ ;NO, SKIP IT TST R0 ;ARE WE CANCELING EVERYTHING? ;DV16 BNE 3$ ;NO ;DV16 CMP 2(R4),(PC)+ ;YES, THIS ONE A SYSTEM ELEM.? ;DV16 SYSLIM: .WORD 177777 ;HIGHEST ID TO CANCEL ;DV16 BLOS 20$ ;NO, DELETE IT ;DV16 ;NOTE: SINCE R0 = 0, CMP BELOW FAILS AND BRANCH GOES TO 1$ ;DV16 3$: CMP R0,2(R4) ;NO. IS THIS THE RIGHT IDENTIFIER? ;DV16 BNE 1$ ;NO. TRY AGAIN 20$: MOV -(R4),(R3)+ ;PUT OUR LINK INTO 000000.SOU00000/.OBJP0LST:000.4a aa4a4 e4( a^   //4 5P 2/  a& E/舨   a0a a`/舓c 0 ( 4 4 4  4 Fa&Z && 5$E$Hߋ*t// _M Z/鈀wZ  & Ca ^4>\Z *XXVUTSRNMDBP 0/鈤U dBATCH V01-04 ,&e@m@0B0mB00>0m>00D0mD0< 0/舾 UEʇ XU F(e%6b<PP2 Pe  ( a ~~ a4( H  aww :,舵 ( CAb(<H`2 f P&ef p Ew a a  ,5U 5Ew/0/ F@0 < 0舨z zUw  aw F % 4 U444FaN w/wƇ &0< 0da3 & = a5 a/ `@@, e0& ㈼0RKDT LPTT PRPPMTRFCTCR DS MMDPDX/ a d5-j j -jw F 55  X@Xw P_M_Mda & 04  a0 舂 e 5 w 5 ] aa" b "   ߋ*<A4 !0AaC@ 1 Q$ fa D  a ``ߋ*30F0}dS04 X Pa aH  aH ݇4 &-j5w&  a aHwP2 4 5 <68:2  < <5  ^LEwF@05w5  0  w  a a     a d0 %\ %C %\%  %  e PPPPPw ,w +w -w $,w +w B &ŰU5  EhU % % aPaP  H` a&L Lw nFw 4-w &',a a FaLN L5E B Ð  Õ  ,& Fa aH Fwn0 5" N5 å\Ð *Ð $@W U.& 5Ea(P Pw .+  w x *, ȥ$@w Bw + J5w =,  ȋ*4*& ew d ɋ ɋ.&  Nf5tU }5w*  w B,w N,ɋ v p 5% `ы S w 2  ̋  &%E&f@a0&   Pp5 @ &;`0 `e5U5 50 055&wj~0 ߊ* 5C 50 5= pP5)^,wVA & A e f Ee5@ @  j,w,, =2  , Aw r+ 0 "w 8$ T\@L\CD\D<\E4\F,\G$\H\I\J \K\L2 ET v p B vËÕ T  5l5hU    a a a %#"! ww ,5UE55U5/5*w "+ Õ1 Õ w ,w + ,ÕA zw + jÕ0 vw $,w ,wVw ,Uww 4 ,w ,w  *  w ,w ,U  w ,w Pw ,w @܀ bE@ 5@w , @ ,w -w -w - " w ~ - JU w .. Hw ,  w - w +w +5@ w  , E w f4. 5@E w R ȥ$wȥ*[w 4+ %' %%'%"5 -w -w "-w   w + vХ'  b Õ w +w +w + j%"w +w +ȥ.w + %:w + Е:%Õ  w 4+ | ȋХ  0-w P%-w L+-w E1-w C 8-w D;-w @-w ȥ% w *0w 1 ZХ= w +  <w +  4C T w D- w +  w (  tw Q- w X+ Х- : Ð Х) ZХ, NХ, Bw &b- ~ & 0% `  b%"& D0ȥ- ȥ+    *    ȥ  w Z+w <+ w i-_w @^w 4n-w w tG w @w `A zJw +w + \w s-?w -w \w (% xw 4.w n-Õ: w  "   F%: w v- w -w l+ w,5@w P+Õ? &Õ w b+   w 0- w 4+w &-w -w   w w @w w t5LSLC2’¥Z @¥90Х= Х"%" w - 5 UffE 5 Nȥ/X E ӥN ӥO5=U >+ & B) ¤w ( N w - B 5 @P+E `} w H-ȥ/ȋȥ   w b- !w -54&Uw rBw l+   Õ^ " fACы E 4& : Lw -?w -w  &  w +& w w~ w -5w +Õ1 ȥ$ w +  5@ *w <*w 2 *w (*w Õ 05w t+ E@  &w D- a Ta(P Ua(  &5@U@5 U&5U Uw t-?&5U Uw T-|&w B.?w 5U@ (5w j .w b.w  5pw $w   q5U w 5  >_w . a 5w !. Z55w +w +5 w .. a vw 4.w .$5`w|w $.w  5w (5@ + .w p+ ( w 5   w 55 w jC 5w w  5w   w x w l 5 8aʋ  w +. l p  55 8w ..w D w 4.0/ 0 E 5@"w l7.w +   w w B..+ w ,4. 5wL5wfwtw :.w ?. hw p w G.& w O.   85@w S. R Vw XW.8a w  *w X.w@ a4 Baeʥ9ʕ0 Ba &w D+ a : w f+ %= w :+ Õ9 w h.w 8v.w *+ Õ1 %:w ,w + a0/0& w B  Z  R R% Õ/ VC P   a$"  ab%`/E@E4   aȋ  V  %: %. w x~. A4  nE ]2 w R.R f A  B@ w 2.B ¥+ E  @% %,U@  w .w . %* 5  %: .w <+ w .(#%*U@%+ %/w .(  w .(w .(Аȋ w F.   f&  %" %!5 B% %   -$ & fw J+ ȥ  l. X^ZP&`nx!!""#%%EOJEODSEQUENCEJOBRUNDIRECTORYCOPYPRINTDELETERT11MOUNTDISMOUNTMESSAGECHAINCALLDATACREATEMACROLINKFORTRANBASICLIBRARYULLOLLARSAITUNATAAPHYSICALELETEASICREFORTRANACRONPUTIMEOGICALOURCEXECUTERITEIDISTBJECTUTPUTT11ANNERNIQUEIBRARY2 8 8 8 8 8 2 8 2 2 2 2 2 2 2 8 8  8 8 2 000000.SAVBATCH STACK OVERFLOW$$$$$$/R/BCOMMAND NOT UNIQUETIME'$' MISSINGUNKNOWN COMMANDINPUT ERROROUTPUT ERROROUTPUT DEVICE FULLOUTPUT FILE NOT OPENBAD SEQUENCE ARGUMENT!DUMMY!DUMMY0!DUMMY0!DUMMY1NO $EOJRUN NO FILEILLEGAL '+'/XLST:*.*/X/LCTYFFNLNOTTYTTYIOTTYINTTYOUTIFGOTOLETBAD VARIABLEBAD CONSTRUCTION ASS NO PHYSICAL DEVICENO LOGICAL DEVICE/SR BATCHBAD VIDSWITCH NOT UNIQUEILLEGAL SWITCH ,+SEPARATOR MISSING/M=R MACROR FORTRAN=/CR LINK/CR PIP/DR R BASICSCRATCHOLDRUNNO ',' IN $LIB!!DUMMY1!DUMMY1!LSTNO1NO FILE NAME BEFORE "."MULTIPLE SWITCHILLEGAL SWITCH COMBINATIONILLEGAL CHARACTERTOO MANY FILE DESCRIPTORS, LINE TOO LONGPLEASE LOAD LOG HANDLERPLEASE ASSIGN LOG,LSTILLEGAL LOG DEVICEBATCH HANDLER NOT RESIDENTBAD COPY OF HANDLERILLEGAL COMMAND LINEILLEGAL DEVICETOO MANY OUTPUT FILESBAD SWITCH!UNLOAD BA!RETURN FROM CALL ERROR END BATCHINPUT FILE?DISMOUNT ERRORILLEGAL DEVICEFILE NOT FOUNDBATCH FATAL ERROROUTPUT DEVICE FULLCHANNEL BUSYLOG DEVICE ERRORABORT JOBNO CONTROL FILEEOF WITH NO EOJ W a `  (  &N W-e E  C0Π a `  6; - SAMUEL JOHNSON, "THE IDLER" 10$: DEC (PC)+ ;THE RT-11 LIGHTS ROUTI ! 20$: 1 BNE 14$ ;NOT TOO OFTEN ADD #512.,20$ ;RESET COUNT, CLEAR CA6$: ROL 13$ ;GGLE THE LIGHTS BNE 11$ ;NOT CLEAR YE& TG C `%f  7 #  rf & f   r>wZ Xf Sfwhd pp p r lwewZwX f,5f 8  ( " * $V @ 7 7 ? E ,we5 5  5 UEA f   eww,^ ` 7 (J%P?: %$D?w %n%w? ` h ZBlRECT#TTA  l   0 ,,^ `,} 爃E ? b 9 ? ^ 7L!7 wpO%ILL PUT IT ; IN SW MODE AGA"`z$Trtv\`lpTz ; BLOCK NUMBER %   &U $,@(* W < n& _ *zz ""戃@&& Η*爀 _ҕ ҕ  U0__e__ U._e__ e_e<__x?BSW??NIF? 4 t!  B!   *   t! R R  t!  _f!!**?CORE?  5,   4U E ,   v " eb f&  c  v   S5,?ODF?e0?I/O ERROR ON CHANNEL ?A E ,  f  ~ 5,ŔE RW W{pU, W xW W W  ff&& l4O 4 ߋ*U,U, ,%B  v _plOp   1  !ߋ.U5.ex"  ! t b  6 " 2!"`"" " " " @! "t! #! #  "D` W! W! W!  "RE@5@ JU #t!"$ "_d "  U# "5,U@#D  " "U#@!:x" #΋35# `"%5^"" #5^"t! #7^"#  D!Bҕ v"D! Xt! #! # v"N?<D! %t!#5^" F!  #5^" M! 5?ʕ'5@ʕG D!"H H5^"<"ҕ "D! T! #BD! X? 5$^"  " ""#EB!_ ы #R"W" W!:/W!=_ 6_ )"  5U#  W!= W!:"6" '".4D"5 "EU P"5'"ʧ"  @!5 U#U5U#F8U#"#_ ""ff5@#:D5#U&4EU_"F ""U#" "55 U#5 # &  ^#2E_# & f  AfE,  Ί  1P  @E%P%E% 5E׭4  & *  ˋ  & (     4 $ ^U@  "<>" ERRILL ARGILL CMDCB FULLNO ROOMSRCH FAILILL MACEOFHDW ERRFILE FULLILL DEVFILE NOT FNDNO FILEDIR FULLILL NAME IN MACRORBVI>UMNSGFPW0W9DE  ea 5e  WE<  !!n!! [ NI! 84V' 2#e@ 2 x !*WM L \e@   J w&  WaWz .7}) WD#D%%~x` 7X7n7l7X7h\7aX 8V } *2!   p w77 !- !/+ w~ 7 w7qw 7f * 7 m &\ 7 :}7~47  : (ă     ! ǂ 2F * CB ALMOST FULL *  #   ~! wRw7^ w  \ w VRmLJB W W} W~ы , 77- -m7! 7!  w w﷊ t 7!    l7!݆    NJNmND7!T e7&7   b ^璉E    (     *   *b  7X H B-H@&:4,@7$ 60 V7!Z  wD,"( 07!!  7   <-~mr~b m`r=mTXPmP F6      (  :  * * x W!W! wU%w-vp w d`p nd Ҕ  @LL@>:,w7   &   L 7 %   7aw & 7a7a vz 7tllhbb TJ7F@ Ce8C  ы *    c $ j7&,z ~-m ӕ<(   鈇V02-12 U@$E@$v ^   ' L?OVR COR? & . 7 -6 $   JU0$w   L  B 7` t 7  t `  t j`f\7鷊 &R @% @P@P X7 7 v B  lh`"\TjPf-@%?8 45, - % e et    t NL!  N 2 S R r E ` =z 7a7a7a7a7aP7a7a7ay7a `w `w    - ∷ "&7 & "7 &  .Pz J{777-: -2      w       75 @z  Z  7 77 j bl   +{  N F7 &淊  |  e 7fg  T Z{7D 爇 wH @MF&C ' 5 HDnFB  p@@! %" " d"n"_!" %#"d"^" n"j"_"_2!# %"#& j5 +&j55EEUQa j55 ! +5@5ŧ5E5U5E4U44 ! $ ($ j5 + 5 |+ 3 X$_0, &35 :, T5 $j ($5L5T54T5 $ߋZ5\5@@5X 5 j5*4R55@5R5 +$ j%z "5 3 :, "5ɥa ҕ R5 " j5 " + j%ҕ 5 ҕ 5  *4 $*4 "45 n+ +u ,  ׍5 %@  @@`@%@@ @t@ @vD D J J Y    v @@ @ @P @ 0 eoovt P;  %  % %@ % @  ~@r~@~%@\!%z)&z'Kz( z42}s: s: :@@AK@K &@K8@K09@KK@KK@K@K@K@Kf@KK zQD @R@@R@8@ @RvS@S%@SS @pTpT@8 <D~~~@#-(w[M y%` QQR RK-[z =% R G @G&+=&-&*&/&&&!&+V(-^("`('z(%(<(^(C(D(O(B(F   @@@@@@@@@@@@@@@@@@@@@@@@@@ > T  !l  !f Jvp@Qd @@C DELN I:DA|0E]]$`rA0l|X$5@$% +_ * %& ,ff 5  *%"&  * C C 7| ?M-ILL NO DEVDIR IO ERRBAD FETCHOVLY ERRDIR OILL ADDRILL CHANILL EMTTRAP TO 4TRAP TO 10FP TRAPЋ D @ @eY= e7 w BaeC C ߐ*Uv  m?M-DIR UNSAFEH Ef&f&  D eEEZBl aE w   f &U $,@(~|  W ~v& _> * ""戃@&& Η*爀 _F ҕ ҕ  U _T _\ e_V _^ U _L e_N _>6 %) &   r2  | fU _l e_n e_F e<__ F ?BAD SWITCH? C 5 5@6& C 5 5& Z  $6# R| F ?NO INPUT FILE?| ~ " p F D ,fA A A E N%ҕ-Ee <,ҕ-EeH N% ,<5 2 : : & f : f : RRҕ:   @ E C! eŋe:/<,4 <,3 N% <,  N% <,,4 $ $ ` `,4 ` | .@ $ T1  5B5q  4    _ !!  F ?INSUFFICIENT CORE?  5 p   F D p U   8f   ,E f[   " eb f&  c   T \  S5 F ?OUTPUT DEVICE FULL?p e0F ?I/O ERROR ON CHANNEL ? ,E  f f  5 ŔE RW W{pZU W xfW W W  ff&& lp  O ߋ*U U f%B  _Lplp Op 3E~~H3~d313 3ߋ U5 e\5  3     5 , 35`55 5 5 5 3 5,4.6406  +D` W! W! W!  "6 5RE@ 5@5 N5e JU $6ߗt435N5t4,45 * 5_ 5 "6  5  P5nD zz5 t U$6 55 U@$6fD r 5  -ft5  'n5v5  ⋁_z5U,65A 4U@$6R , , l5U$6ߗ3t43I\5 $6(΋B5,6  D545B55065B5,406ߋ35B5E,67B5,6 5B5!33 <,ҕ  Z53 $,4.6406 #Z5T?#3 %,45B5a465B5 3 865B5 4 5?ʕ'5@ʕG 35H H5B5 N%5ҕ 53  4.6 <,3 $?# l5 #5$B5  +5 553 5H H5B5  N%4ʕ 4ҕ 465B5  ҕ 865B5  5?ҕ'5@Gҕ  l5 #$6E 32ы $6R@ () ) )5 5h5 J,5W6? (W!:cW!=_| l* J,_- b* J,_ V)W!$ *W!: 5 65U$6 v*@ *<5 2, 5U,6 (  .*0 *W!= W!: * b*5 '57 * X* D, + *5 5EU P55'5ʧ5  35 U$6U5U$6 ~+ U$6526_ *5ff '5@$6! +5$6U& X*EU_" ~+ 55U$6 D,5 555 U$65 (6 &  ^<6 "_G6E_&6 & f  AfE ) _G6 Ί R31P R3@E%P%E% 5E%pE%E%% A A 5U$6 ('5U$6E 'ߧ555   U$6E +& % (6   + " "    (' ('0U $6@ , + D6& D @*2H U$6U% &6  'UHW!( fU E jW!+ *U;5U5 * * 'W!(5( 5N5UU7 5U$6Effff fPU0  " U * W!)_*U$6 , +2 5˵@2Q˵ 1ы5, , +3˵@ Q5ыʋы & e gP355  53 g5  ыJ (6ԋ   4' Հ ) X*55U@5 ~+ D,U$6 % ' 5  54_2, 55  ( .+ ߗ35U 5 ~+ J,55 0,_*  5 55N5 ,55 6, .+ 4,_~+ $  " _"35 2* (U$6555 *4ҕ  J W! U ҋ .*ҕ  <, <,45 3 R9 .* 55 B5.ߋ\5+3 <, * ")55 -5   $   &e0J   l5"5 +5 &5 +U$6U$6 % % ,' ` EU5 5 % ,'  U$65_   ) %  "`ߋ3 5 5  " rBW!<% .*@B!  5E () D *U$6 &  D& "' D  (U $6& )e  W    " )T U$625L "  *6 *6 ,525:5! W *5A05%+%-*5 .*5 .5  V 0bab b b g,5.5 %._ ,5ށ%E  *5 5 "'5`.5@@T@T@Th .51"3 V 05 :e05 .5 05   t 5 t t t b  05 .5 05 e05ߋ15U$6 b(J  t 5N5*6  U25r 25  U $6g*5 5 *655 _ *" t 05  t t   la      b b b _2, > %, .*5 *5B5_.6 @6_ )55 B >6W"* ! ! 55C 6 5  56  5B5 2606U,6U$6 ) + 5 5 )IU$6 ('C (' ('  ( X* J, 55@  C BW!&W!!B * C C ) @6) @6 ( + B  >6PF50F5@B50 6 `D5 PB5U$6 5U,6B5H5 4,N5R5C )! + B  >6PP50P5@N5 PN55 U$6546@56566586@965:6 fAʕ RfA  eʕ Jҋ  ߋ R F$L5 !"5  !& l5 +&l55EEUQa l55 ! +5@5ŧ5E5U5E4U44 ! $ *$ l5 + 5 ~+ 3 Z$_2, (35 <, V5 $h *$5N5V54V5 $ߋ\5\5@B5X 5 l5,4T55B5T5 +$ l%z "55 !3 <, "5ɥa ҕ T5 " l5 " + l%ҕ 5 ҕ 5  ,4 $,4 "45 p+ +u ,  ׏5 3c <6 Č V5X5N5Tߧ56 Z$55ߗ56 '56  Z$5 $V5@av ) Z$V5_ v5N55 җ5@v 55 5ї5 ї5_V5 _a556ߕ6V5^%vV x 'X55N5 X54x. vV5xX5eX5&gX5x * $X5eX5Z5Z5\5Z5 ,ėZ5 Z5 W' 5$<5f 3453 <,5 N% 5ҕ+ 4 $5 $;3 $ ^tRŀɕ? ҥ ҕ ҕ 6߄ `"t鈄   &f R%e0R&5@ %( %@ %!5 &  e ee e  , H'"& +R @* &E5 5 U$6 U$6U&Cfffff &h5B X ,'$ ^ '  5db(5`5`ҵ@Ե@  5E SSST_4'J BR&  N &@   N &  & @    &   `@  H' % & '5@5  & '5`5 5 5U$65 , + r'E 55  5 D6_ * (;'5 X*& J,#5U$655@LU@$6E@Fh5 J,55 2, 8U 5 b*  X*U@$6 ~+ (5 V)'U $6W!. W!$U$6  * W!. v*U@$6 .* * @*  "'  * .*ɟ4 ŀ  "'U 'W!>_<' @*H "'L eee55 &5  ,555! ! W -- &) ) ` ")   *5& e .*@4 $ A @ ,  55C0   & N`  U` .*e_5 )  ( U$6 @  @65 D6U$6'5B6 .*> *U$6 * @6 D65B6E55  5 2* 5şn  $ 55 * * * * 6 6 65 65"U $6 *5@N5  65 6E 6 6 +C @ @` E   #1-Q$# +l5``B  + #`B +  #1-` _j5l5 s:,%   +j5 l5 +j5 l53`d3 J3@ R H3d3   +ud353h5 ,fh5AH3Bd3C35 5555f6 J  RRRRRRRRR⋇ߕ# ~ 3 ,ߥh555h5;3~ ѧh5 R l%җ5җ5җ5җ5 F6ʕ*   ('& t1 & &  + T/ F1 1  2*v5 $r5e 6_1U$6 ) )5555 l* 1 t1& l* ~+ D, $. @65U@,6  T/ (  5'55U$6 F1 2* 5& 1$55& b. 1z5@6 2* 0 $. (1 05 d. (1 t1 @6&  T/_,U$6 + @6 5 )%?S5 * ) p+    @6 t1& #'5@6& ) 5 %\0 0  5: F1 .* (1 5 @6 .* F1 F1E F1E 5B5 2606U,6 * ('f5 :/ F1 66e?f :/$ F1 F1 &f :/e0_F1 U@,6 5  %-5  "65 p2,45 2* ( .+ l5 5 F1 5 *  F1 ")W!' F1  5 .* )*x5! )$ 0  .* (1 ) )5ff  + 55_U$6~56U$6  0 *U$6 05  (1 0@B     .* C _(1 )< , 5<>C!W!^8 .* *C D .* C!D! UU$666P: 2*66 x H 5 *6 5f' ^1 55 t1R|5  p+T3p3V3|5   & |5|5 t1 n5fR %|5R ~5v5 1 1 @ ,, 1 ~5 p2+ 3% "  55 %- % )  l*  &- "6U@$6 "6 5_ )  l* ~+ "6 D,"6rI(3f#xKM*!lHXml[m.vKw+v N~,K~&X \0W]08r0ns0 ABDEILMNOPQRTUZ .MAIN.TABLE OF CONTENTS******SYMBOL TABLE PAGE 2Mp2| 2ZH62| 2z< 3 %5 4 H5oR5_35 %$65H5B5 4,R5N5_6_3$6 %H6A    w5@PP <. 47a7a7ad7a7a7a7a7a7a7apm, Pee  wh1 w^1B*e@eAD   6 ND SHOULD NOT BE CONSTRUED AS A C COMMITMENT BY DIGITAL EQUIPMENT CORPORATION. C C DIGITAL EQUIENT CORPORATION ASSUMES NO RESPONSIBILITY C FOR THE USE OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT C WHICH IS NOT SUPPLIED BY DIGITAL. C C C C C C C C C C C C C C C H.J. C C CALL PUTSTR ( LUN, AREA, CC ) C SUBROUTINE P%@  @@`@%@@ @t@ @vD D J J Y    v @@ @ @P @ 0 eoovt P;  %  % %@ % @  ~@r~@~%@\!%z)&z'Kz( z42}s: s: :@@AK@K &@K8@K09@KK@KK@K@K@K@Kf@KK zQD @R@@R@8@ @RvS@S%@S@S @pTpT@8 pTvT@pT@T%@OX OX OXOX%Y[q`"r@ r @r r sssw w ;wwww w%w@8wK wwy~Lyyyy@yh@y@y &@y&@y`'@y@y@y@yfyy} z@ z@ z%@Yz z d @ %@}j@x;1;B;|\EJ\XHHi}R ֯T ֯X֯x ֯-֯-ׯ}jگr2ޯp!^zPx$^,l!nnn!n%n+n,n.nKnKn Nn&XnHXn[n}n}nq%zd-zxd-鰼Ry  -  - ,2 |L01q/34/)@zppp@#-(w[M y%` QQR RK-[z =% R G @+-B*Z/8&>!+-"'%<^CD OB   @@@@@@@@@@@@@@@@@@@@@@@@@@bR v:`D vz)4d^ N?ILL CMD??ILL DEV??DEV FUL??FIL NOT FND?**"`ї5ERRORS DETECTED: FREE CORE: . WORDS RT-11 MACRO VS02-12 'X55N5 X54x. vV5xX5eX5&gX5x * $X5eX5Z5Z5\5Z5 ,ėZ5 Z5 W' 5$<5f 3453 <,5 N% 5ҕ+ 4 $5 $;3 $ ^tRŀɕ? ҥ ҕ ҕ 6߄ `"t鈄   &fR%e0R&5@ %( %@ % &  e ee e "`z$Trtv\`lpTz, L X ,'$ ^%   &U $,@(* W < n& _ ** ""戃@&& Η*爀 _ҕ ҕ  U0__e__ U._e__ e_e<__x?BSW??NIF? 4 t!  B!   *   t! R R  t!  _f!!**?CORE?U  5,   4U E ,   v " eb f&  c  v   S5,?ODF?e0?I/O ERROR ON CHANNEL ? E ,  f  ~ 5,ŔE RW W{pU, W xW W W  ff&& l4O 4 ߋ*U,U, ,%B  v _plOp   1  !ߋ.U5.ex"  ! t b  6 " 2!"`"" " " " @! "t! #! #  "D` W! W! W!  "RE@5@ JU #t!"$ "_d "  U# "5,U@#D  " "U#@!:x" #΋35# `"%5^"" #5^"t! #7^"#  D!Bҕ v"D! Xt! #! # v"N?<D! %t!#5^" F!  #5^" M! 5?ʕ'5@ʕG D!"H H5^"<"ҕ "D! T! #BD! X? 5$^"  " ""#E B!_ ы #R"W" W!:/W!=_ 6_ )"  5U#  W!= W!:"6" '".4D"5 "EU P"5'"ʧ"  @!5 U#U5U#F8U#"#_ ""ff5@#:D5#U&4EU_"F ""U#" "55 U#5 # &  ^#2E_# & f  AfE,  Ί  1P  @E%P%E% 5E%pE%E%% A A 5U# 5U#Eߧ"""   U#ED& #.  22      0U #@D #& D x(H U#UUDW!( <U ? >W!+"U65U0 'W!(5% 5j"UU705U#Effff <PU0.2 U" W!)_\U#Dp "˵@0Q˵ /ы"*Dv ˵@ Q"ыʋы & e g ""  " g"  ыJ #ԋ   Հ*45"U@"FU#  ".:"!_ ""  ߗ "U "F:""_ 8 " """   _L   2 _| "(U#N""P" T"ҕ  J W! U ҋ&ҕ  B"" @!R6& "5 ^",ߋx") B T"" d-" d  R   ze0J  J "V" " Z" U#U#8:  ` EU" "   U#"_ ,.2`ߋ  " ".2 BW!<&@B!  "U# #  &   (U #& be  W  .2 t %,&"$5^"_ # #_  )"" v t"W"* ! ! ""C " "  ""  5^" # #U#U#*  " ",IU#   C    4 5"@  C BW!&W!!B " C C , #( #  B  #Pb"0b"@^"0 Z``" P^"U# "U#^"d" j"n"C *!  B  #Pl"0l"@j" Pj"" U#"#@#"#"#@#"# fAʕ RfA  eʕ Jҋ  ߋ0R N" V"  & " &""EEUQa ""  5@"ŧ"E"U"E!U!!    "  "F @! &_  "B r"  ߋx"R5@^"N " "t!p" "@v "5  B "ɥa ҕ p"  "  @ҕ " ҕ "  t! Rt! 4" @ j  ׏" @!Y #8:Č r"Pߧ"" &""ߗ"" '"#  &" r"@a ) &r"_ " җ"@ "" "ї" ї"_r" _a""#r"! T 't" t" Tr"t"et"&gt" * t"et"v"v"x"v"ėv" v" R% ""<"f @!" B"< "ҕ+ " R" R R R? ҥ ҕ ҕ  `"鈄  T zf e0R&"@ T( T@ Z!" z  e ee e !& DR x E5 " U# U#U&Cfffff"B X $ ^  "db(5`5`ҵ@Ե@  "E SSST_J BR&  N @   N z  & @    &   `@ 5@"5`" " "U#"D E "5  " #_`.'"45U#55@;U@#E@5""  ,U )6 4U@#F ">U #W!.U#  W!.U@#&$ x  & Q UW!>_ xHL eee""""""! ! W -- b `  $"& e &@4 $ A @  ""C0   & N`  U`&e_",  U# @ #5 #U#'"# &>$U#" # #"#E""  "( "ş* $ """  HC @ @` E   #1-Q$ H"``B H #`B H  #1-` _"" s %  H" " " " ` @ R    Hu 5 "f"A B C " """"f6   RRRRRRRR⋇e|U#I!HX[.K+ N,K&X W ABDEILMNOPQRTUZ .MAIN.TABLE OF CONTENTS******SYMBOL TABLE PAGE ( *$ V"#` *( v) @! %" " d"n"_!" %#"d"^" n"j"_"_2!# %"#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: .BLKW 5 ;DEVICE INFORMATION BLOCK SSB: .BLKW 5 ;SAVE STATUS BLOCK FILDES: .BLKW 47 ;OUTPUT AREA FOR CSI FREE: ;FREE CORE ;HANDLERS ;EXPANDED INPUT LIST ;STATUS BLOCKS FOR INPUT LIST (/X & /R) ;BUFFER(S) .SBTTL INITIALIZATION CODE BEGIN: .IF DF MBUILD .SRESET%@  @@`@%@@ @t@ @vD D J J Y    v @@ @ @P @ 0 eoovt P;  %  % %@ % @  ~@r~@~%@\!%z)&z'Kz( z42}s: s: :@@AK@K &@K8@K09@KK@KK@K@K@K@Kf@KK zQD @R@@R@8@ @RvS@S%@S@S @pTpT@8 pTvT@pT@T%@OX OX OXOX%Y[q`"r@ r @r r sssw w ;wwww w%w@8wK wwy~Lyyyy@yh@y@y &@y&@y`'@y@y@y@yfyy} z@ z@ z%@Yz z d @ %@}j@x;1H;BF;4\E\XHi}Fv֯x֯֯xB֯ ֯ ׯ}گrޯp! P $^l!n nn!n%*n+n,n.nKnKn Nn&XnHXn[n}$n}0nq%zd zxd 鰼Ry   , | 1q 34  Y FOR ANY ERRORS THAT ; MAY APPEAR IN THIS DOCUMENT. ; ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR ; RELIABILITY OF ITS SOFTWARE ON EQUIPMENT WHICH IS ; NOT SUPPLIED BY DIGITAL. .MCALL .REGDEF,.TTINR .CSECT TT ; OFFSET DEFINITIONS: MONLOW = 54 ;POINTER TO RMON OFFSET = 270 ;OFFSET TO Q COMPLETION TTPS = 310 ;OFFSETS TO TT REGS. TTPB = 312 EOF$ = 20000 ;EOF BIT IN CHAN. STATUS WORD .REGDEF .ENABL LSB .WORD 0 ;SO FETCH LEAVES VECTORS ALONE .WORD 0,0 TTLQE: .WORD 0 ;LAST Q ELEMENT POINTER TTCQE: .WORD 0 ;CURRENT Q POINTER TT: BR TTSET ;DO SETUP FOR TRANSFER BR TTRD ;A READ INTERRUPT OCCERRORS DETECTED: ) ;SAVE R2; POINT R2 TO POINTERS ADD #RING+2-.,R2 ;R2 TO COUNT WORD MOV R4,-(SP) ADD @R4,R4 ;CHECK MONITOR'S ^O FLAG TST @R4 ;IS ^C STRUCK? BMI DON1 TST OPFLG ;DOING A TRANSFER? BPL COMX ;NO. LEAVE TT2: TST 20.(R4) ;IS ^O ON? BNE DONE ;YEP. IGNORE BUFFER 1$: TST (R2)+ ;MORE OUTPUT? BEQ 3$ ;NO. RESTORE R5 TSTB @(R2) ;IS CHARACTER NULL? BEQ 2$ ;YES. SKIP IT MOV R2,R5 BR COMX 2$: INC @R2 DEC -(R2) BR 1$ 3$: MOV R4,R5 ;NO MORE. RESET R5 TO MON. RING PTR. ADD #16.,R5 BR DONE ;LEAVE COMPLETION ALONE DON1: MOV TTCQE,R2 ;MAKE SURE WE DON'T RECALL A COMPLETION CLR 10(R2) ;ROUTINE BY CLEARING IT IF IT EXISTS DONE: JSR PC,FINIS ;CLEAN UP TIME MOV PC,R2 ;SEE IF FINIS QUEUED ANOTHER OPERATION ADD #RING+2-.,R2 MOV (SP),R4 ;MAKE R4 OK FOR BR TO TT2 ADD @R4,R4 TST (R2) ;ANY LEFT OR NEW TRANSFERS? BNE TT2 ;YES. SERVICE THEM CLRB 1(R4) COMX: MOV (SP)+,R4 MOV (SP)+,R2 OIGNR: TST (R4)+ RTS R4 .DSABL LSB TTRD: TST TTCQE ;WERE WE CALLED BY READ/WRITE? BEQ OIGNR ;NO. LEAVE JSR R2,(PC) ADD #RING+4-.,R2 ;POINT TO USER'S BUFF PTR. MOV R4,-(SP) ADD @R4,R4 ;SEE IF ^C STRUCK TST @R4 BMI DON1 1$: JSR R4,GETCHR ;GET CHAR FROM RING BUFFER BR COMX ;NONE WAS FOUND BR 1$ ;ONE WAS FOUND BR DONE .ENABL LSB TTSET: JSR R2,(PC) ;HERE FOR SETUP ADD #RING-.,R2 MOV R4,-(SP) MOV R3,-(SP) MOV @#MONLOW,R3 ;POINTER TO RMON MOV TTCQE,R4 ; >    6  D ͥ. &  f  j p  R   5  @aw  |55T ?! w J?m   LT "A 6ͥ:@vEDET@vv@v ͥ.w    @vww  @v$A. f e ` R P$H"    &o J n> 7RHF  h  4w &ԕ;w(e R  n lr bj X/h W' ӕW'T ӕ z   w Z E7  jw >2w 6@w .Hw j e l a!!Ԕ  r ! w ^    / > < w l$  bͥ. j  v    (  7  J . v 6nb wZ ` W,T   " w " f  jB W  0 ,, <+^:f v  , Z  Z,w > w 4ef 4<>    f  @v :T N@B v: @B vf  R  f e0R& @     ԕ;: Bѕ;D CDR#  "R  - 2J  < 6 .  d  PC .END T,A @(r W b& w~&UwLp w <w 6w 0/" b  b  " wV@a-w < 5 l  7 JF7VU  7 x  7 7 E     w DP7 nE   f  lŔE RW W{pU W xW W W  f ff&& lz O  ߋ*UU %B  plz Op?INPUT ERROR??MISSING END IN MACRO??INSUFFICIENT CORE?RLC: TST OPFLG ;DOING A READ? BPL 1$ CMP R0,(R1) ;NO. SEE IF THIS IS 2ND ^C BNE COMX ;NO. LET MONITOR HAVE IT 1$: ADD (R4),R4 ;THIS ^C GETS US OUT CLR (R4)+ ;CLEAR MONITOR LINE COUNT TST (R4)+ ;SKIP TO POINTER MOV (R4)+,-(SP) ;EQUATE POINTERS ; RT-11 MACRO EXPAND V02-02 LINE TOO LONGMISSING DOTSYNTAXNAME DOESN'T MATCHNESTED MACROSNO NAMEMACRO ALREADY DEFINEDLINE TOO LONGMACRO(S) NOT FOUNDTOO MANY ARGSMISSING COMMA IN MACRO ARGBAD MACRO ARG? *** ERROR *** EMAINDER OF BUFFER INC -(R2) CMP (R2),6(R2) ;DONE? BNE 1$ EOF1: MOV TTCQE,R2 ;SET EOF BIT BIS #EOF$,@-(R2) ADD (R4),R4 CLR (R4)+ ;CLEAR LINE COUNT CLR OPFLG ;UNBUSY IT BR DONE TTSET: JSR R2,(PC) ADD #PRING-.,R2 ;SETUP FAKE RING BUFFER MOV R4,-(SP) MOV R3,-(SP) ;NEED EXTRA REGISTE5$7 7 ?C-CHAIN-ONLY CUSP?H  , @(7?C-DEVICE?,V Xd\  @   & e7  w 77 aw7 L7& & w   mnwp warwaxerne jR\D7JmR78  e 7. w:zz=,7 7 7 7 g,0e,&4  e     ;,CROSS REFERENCE TABLE (CREF V01-04 ) PAGE -   d'mm@PPPPw-.@@m-tn5`U@.f e# @mNm e # e e U @ߋ*7@?C-CRF FILE ERROR?E7 C@%xDE`;D&  `B DE!N` fB `f%T  w lw%7 ^! % `` B<`T  (7" A!ۂBҕ Bw wew ` <[7m-ѭL7 @7Ee@7 U-   e @@fN% wpҕ-wbewRRe eU  D 46 . w67.?C-CRF FILE ERROR? ҕ ҕ   < Е # & l <b^Z U |xwr v0 h d%T Xȝ 482(,"7:?C-LST FILE ERROR?E ʕ @@c BbaBe0e0  zxSR  S -Rᓔ  - < T N  -   2 S - e e 7B->  e  ef&fe~B @& fE@ B  #T\_ @_ @ _ @ _ @ _ @ _ @_ @_ @_ @*_ @$,_ @$_ @$_ @$_ @$^vxQrf & f   r>wZ Xf Sfwhd pp p r lwewZwX Y 0 f,5f 8  ( " * $V @ 7 7 ? E ,we5 5  5 UEA f   ew^ ` 7 (J%P?:Tq>< %42$@K(@(@ TRANSFER ADDRESS = BAD OVERLAY AT SEG ##TTA  l   0 ,,^ `,} 爃E ? b 9 ? ^ 7L!7 wp%fw   f"  aCm*e wZ  C(& K# c w .m<c e:B s yeBMs  C  CU=HnH `T 4 w"T fK !&7= ,w3  S$  &fe B`   & f&& &ߋ*wp @  f 3b@!@ 7 m $  m7 "e7?SYMBOL TABLE OVERFLOW?Bw P  wv\ wl wbj B ѕ ! ~ѕ ѕ  & f 鈇7*?ERROR ERROR?& ! T! Hԋ    &!  ep >Nb&2E ' &f vwxrD 7wfw^\z7xH <w7n wwP e]w2  SM    C 5& k n & a tR L  0Ul& 8p6q4w8 eߋ*$s"ff\@ 7 ec7 w:R%w7?HARD I/O ERROR? $-ՀDAEDAEmNC! eA w<7 6ww `!B 7"c27 7 7 x t5Q wwSw@ `eP 7 `  7` eP eP e zw7T?SAV FILE ERR?lHxEw8m:2 @m.w$ mE  & &w e@ F  .e7  &    E7`  z&  j7\?LDA FILE ERROR? w n7 >f  &(R   e ee e  $ɕ@ Qɕ Iѕ ` B R n& f 7?MAP FILE ERROR? J   ) $ A  f e `   T   D D ĥ ĥ׭4  & *  ˋ  & (     4 $ ^U@  "<>" ERRILL ARGILL CMDCB FULLNO ROOMSRCH FAILILL MACEOFHDW ERRFILE FULLILL DEVFILE NOT FNDNO FILEDIR FULLILL NAME STACK ADDRESS = LIBRARY SEARCH: z'jL^/O IGNOREDBAD SWITCH IGNORED?CORE?eEe,5eEe w@`5w7@ w@@   W w 7  e    7N70  :  jRf FA Xw * B U $DLXHTDB R(!'(!w ,,!f @e @e 7?TOO MANY OUTPUT FILES?7?ERROR IN FETCH?ee @@Da 7l?FILE NOT FND? W!⃂wVT Zz7 7 w&wB 5 7?/B ODD VAL?%^y7?/B NO VAL?CAhA4bM  >V5 7?/M ODD VAL?GL - ;.7I1F+S%R7  4 6*-   7?BAD SWITCH?  w !SO S$ $ d !w W ) 7?FORLIB NOT FND? 7[O? #  ;&(1 DA    @eeDA  e  CU#  !!7?NO INPUT?U!7?CORE?!! 7x4$`L$ C>`L$ C I, ̋̊ e̊ @ _ (xe r N̋e A C g   !w$D7!T e7&7   b ^璉E    (     *   *b  7X H B-H@&:4,@7$ 60 V7!Z  wD,"( 07!!  7   <- zMMULT DEF OF  /   4w h!&    7?BAD GSD? ˋw&Ҋʋ  jȵ)ȕʋe& JQ$ lʋ 7 z v7 e" ʋ7 T P w0Nw & fw Z'L" @  L :DdJ.6 8 NP@   & 7 e 7 " wLf&$Ew T ~"7?DEV FULL?& fw E 1 w@@ AA Emf  d7h W0w7(hA m,   E6P27.U](~ w^@ &fpe" .Nf J  wDE!  C(SSK I! @`(a(f x5AhA mR  dHRId>f&&5  w B2@Em 5, PEU'   f A Xl (  x w wj`f\7鷊 &R @% @P@P X7 7 v B  lh`"\TjPf-@%?8 45, - % e et    t NL!  N 2 S R r E ` =z 7a7a7a7a7aP7a7a7ay7a `w &   .f& f w   wDE!  C(SSK I!   & fۇ & DχB ww@`(a(f7-: -2      w       75 @z  Z  7 77 j bl   +{  N F7 &淊  |  e  RT-11 LINK V04-04 LOAD MAP SECTION ADDR SIZE ENTRY ADDR ENTRY ADDR ENTRY ADDR HIGH LIMIT = UNDEFINED GLOBALS:UNDEF GLBLS OVERLAY REGION SEGMENT JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECTRANSFER ADDRESS UNDEFINED OR IN OVERLAYSTACK ADDRESS UNDEFINED OR IN OVERLAY0Z Lw   nѕ. ^ѕ ѕ ѕ ,   ѕ  w #!7   % eD `m 7?ILL ASECT?m5a EKѕ ѕ @  Sca)  w K v Ea E L Nsa(Jw e 7`4 #eK#  w t/ Dw fB  2 s  &#w . K  ѕ ѕ # x 2w 7` ~  H 2w 7`Xwt4 .7 w  7 ?OUTPUT FULL?Հ gUq e>z4w4 FZ   $Em85_    m|w W" Rw t@ F fw  wbwV & wZ&fe>B @& fE@ B e!0f rex&@ @ @ E *ѕ-EeM-EeH / dѐ + ;CALnҋ&ʋ7Z[L"@  L-C l`w@,B` C` ʋڀhd& fw P  w6 7s7 D7    8 w( w    @x7x &   Ce5 m   7?BAD RLD? $ <<& ~ w  Lw x Ze֋ ɐ0 @ @w % A   0w ^.$ H D ! > m5 !   ewVflADDITIVE REF OFAT SEGMENT #BYTE RELOCATION ERROR AT6F? U@e" wZLOADED AT TL77@e ߋ*! %   - # 3c  - D @&c%TdL!)t&b%0e )z%P4H@ <`$nҋ'ʋ8Z[L"@  L.C l`w@,w.^ C^ ʋـfb& fw N  w4 7s7b87 7 7 !7 ?  4 8 zDe feEm5e 4e ,  b  8  w| w    8@7wR H&  @ Ce5f m^  7?BAD RLD?& Z 7 H T >7@ C6 "&   <%<!&  w  <w   ^  e֋ ɐ0 @ @w  A  zd (7\7 h w wbw f* . e J &f&f     7 ;-.& j be e D  f &7Z ^ p  *&  7?REL FILE ERROR? 7ͥ  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 <. 47a7a7ad7a7a7a7af5$$  AEm(   <T!  m:5 w! j  ewv"2vADDITIVE REF OFAT SEGMENT #BYTE RELOCATION ERROR ATT (R4)+,@R5 ;IS BLOCKING BIT ON IN JSTAT ? BEQ 1$ ;NO, DO NOT SWITCH BIC -2(R4),@R5 ;YES, UNBLOCK THE TASK MOV R5,-(SP) ;SAVE IMPURE POINTER MOV I.@&fe~B @& fE@J  B J jJ J J _ @Z _ @x_ @_ @ Z _ @ _ @L _ @J _ @L _ @ ^^L R  ep u  >.V  ^W"@CRRRW$@U   .|   W3   W5Ë   .t#t-  t-RRe e @e (7?F_.IL NOT FN ?DEV FULL??CSECT ERR??IN ERR??OUT ERR??ILL CMD??ILL DEV??FIL NOT FND?ILL DEL?NO CORE??BAD LIBR?ILL INSILL REPL?BAD OBJ??LIBR FIL ILL REPL? MOD NAME: ENTRY POINT: RT-11 LIBRARIAN V03-03 BLOCKS MODULE ENTRY/CSECT ENTRY/CSECT ENTRY/CSECT  .   w( hheev.  X e<7   . `7 7  0 T  .>   \wx ppe  .d& z  FȀp  .e >  4wN > .ze #    燈 ". 5  v7 7 &fk  . : $meL W5W9[."Cwm < UNUSED > @ x.H P#P-P-dd@ v@.n p e 0@ Z  `.@ $  C   7 B# X FREE BLOCKS . N  qw@ 7 7 w' :/Z ARE YOU SURE ? .& %Y alz.BT   eTl.hA    # @  .w *7 7 L 8 w& f. Ha7   &Dw. fW3W-@'d JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC(@(@  w7  7  f Z   7&fT    `   ) $ A  f e `   T   ( JcT7 d & 7w - &+f&%& fߋ*wfɊW zwBwV7 e7.w(鈇\e"&fS  e B  .ы ( "   B  @ &B  @  AaB E єˋ # $ ."@SS% #@S .H   E,@,@ :].n&7 8Be!.7?DEV FUL?7.?OUT FIL?@7 d d  d d /cw &  a pwH!   & @ Ps w v w7 e7. ,           e  /   # w seA    wn ^ ~7=wPB & VS w,Ý wL ̋k w:f 3-- - (W,h  7 V$ $ L&C j7i x w wRSS ?U75 ,S 7$ "Ԋ96  , 7w C ^e     ̋Ā  78 eN 7 ȋ _s;v77 j7Ih 87\ , 6wv ~4 t   fwVef ѕ  ^ 鈂ww"u  > e   wn e  TTc Z&  e ee e  &@ @ @ E *ѕ-Eev-EeH t/ d 0ѐ 7  l.\ e|  D  eH H-J  | ^. AN-FEB-MAR-APR-MAY-JUN-JUL-AUG-SEP-OCT" -NOV-DEC-  +.  @   J .J ,e~   8 :qp ( Z Z F Z Z e  \7 tePJ 8& 8  ) -  w$eA     w  7w B  wwwf&B 0SB ffeS SS   wÝ  wL &j 7`w' 7e  w"t 5mmm(*&P73& EE$ O$5 -- W,h y7u w& wJ1S.׭*sW77 `7?^ 7Rvw78& j   \ 74w P  CCa7 m  pw7wv& rӕ j deS Z P J D0 B  | *S  l 4`B7V 7e 7!,f  (wawa7 7e7F;BD;2\E\XHi}Dt 0z7 7{&!w ,  Fѕ ѕ px ѕ ѕ L-we  ѕ e n 8 e  ѕ ѕ   ѕ ѕ ѕ ѕ rew  " w  ѕ  qwn wo 7gw`pєˋw,&  e ee e  &@ @ @ E *ѕ-Eev-EeH t/ d 0ѐ 7N ;SAVE IT TSTB F.MAv  B U $,@vf{ E @pe  e@de [ee @S@`ߋ*L  >(MwAew DwED6R  /G&Cu U  7`.A KUkw  SO Sه# # # , ⃁ W 냷f C    (,5e w wwˋ ˋ w6Y CUSP?H  , @(7?C-DEVICE?TPz R^V @  & e7  w 77 aw7 F7 & & w   mhwj walwarelhe d\D7JmR78  e 7. w:CH ROUTINE IF VOLUME SUPPORT .SBTTL SYNCH ROUTINE n &fe>B @& fE@  B  _   j Z, ^? rD n ׇ j  x  |& (U%@   C7Z?ILL SWT?006B`f |ABDnGKSPTrV WCEFILMNOQRUB XYZ7?ILL DEV? n> &e n70eV  J R ep   ^W"@CRRRW$@U   b&W3 nW5)Ët#$t-  t- w-   r? JRRRe e w  =@e ^  7f?FIL NOT FND?&p~   @  # > PPPP  @7?ILL REN?ww w  @ t e PRRRR |   H /w 6  @e  e      8   e[7   6 `f 7 7 F     & e $g,5 w pe $]  F  F p  #we 7  .     ewN ew@  wz 5  #  7L H J &fw   m8eW3[wmW5wm df< UNUSED > @ P#H-p-$  \ |w-  wc  @ ` C  <    @ PN!@  x &fW]D r -   FILES,  t BLOCKS  , T FREE BLOCKS   H qwr-P@N K :/Z ARE YOU SURE ? @ b ~ a XT  r eTlA  &  w׭ 7?ILL CMD? RT11ߋ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*   4 s  ee  w& f a7  5  e7wfD`we  & wr fW3W-  r  cD >N & eT e lW3ceem D  F 4   ? ?   p  wN  -`` ` z  ? 7 $7 JwPea% Np  T8e> R$: .ENDC TST OVFLG ;ANY OVE N jJ  w     <  em55---A*fU%m5 & 5!u#  ne` w ~ .pq7?EXT NEG?7?ROOM? D$ j M  `4  7   e  †w7f?BOOT COPY?鈴PIP V04-06 E]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?< * & 5 , ,z ^& ", P,77 B &7 2?NO .SYS/.BAD ACTION??REBOOT?1 @ 1 `? & e& f W- @ w 7F?ER RD DIR?76?ILL DIR?85 @w  f&De׭ n & (f`W#HDLU% fw HVw @RN & (fIW#EO;e<  H  U e LLhQ L` mw w e7 w w & f͋  w hՇ xeET W0 e  LL0A bAce) H w & jp&WW*  @.-  :e e    c ` z A0 b   d'   &5 @@  N^&E#? w e& e7B?ER WR DIR?t emq&  D 7! !e   < @e0    . @f( d@ ee0 & %Y   5  w @ @QЭ w xW! U%e͋ _ U xÕ@ ɕ0ɋ %¥@  q c     2@Ee (͝)% % 95 RROR IF UNDEF TRANS ADDR BEQ 13$ BIT @R0,#.OVR ;ERROR IF BEG ADDR IN OVERLAY BEQ 14$ 13$: LERROR MOV #1,BEGBLK+8. BR 15$ B wGw[ w,@7"w7777 t7 t7 n 1  W sE$B 7NU$M2O%   P*"7 7 7 7  7}&0 7E `w W w5 lw  4  !w  & wD6:7\ R 7L5wd)lw   7  vw  t5 w  -7    E `7 | xC wj W  R@ :B , L  www0wwB w:sf& w CW e  4 5 5  emK .BEf e  zv& B eB wfw^wzwwwzwrw .?l2& B 7 w,wFw  Dw  &w ww[w w 7 ( r7 v h" vZ5T9vF@`7 J", 0 eD 05 e e K e w&wwww.B&f&f w Ew B&E    e0 &feB @& fE@ B v PATCH V01-02 FILE NAME-- NO ADDR OPENMUST OPEN WORDODD ADDRESSINVALID RELOC REGINCORRECT FILE SPECBAD SWITCHNOT IN PROGR BOUNDSPROGR HAS NO SEGSMUST SPECIFY SEGINVALID SEG NOADDR NOT IN SEGREAD ERRORWRITE ERRORODD BOTTOM ADDRBOTTOM ADDR WRONGINSUFFICIENT CORE ?? ^U /\ ;/\@^BRFE,: :*v  ߗ "U "F:""_ 6 " """   _ BLOCK NUMBER * / * V02-02#L""N" R"ҕ  J W! U ҋ&ҕ  .t^( /b hz(zzl.z;  . 7( w, .     .6  w 7 #"& . w  7w "w tĝ$& < 7  .  WBw .8NOw @p^C Dp A N Op.^ &DCc N w w X P w < <.' 7< ( &w @ \k.w wZw w j fw   .w  7 wvwjw   % EC " y. e wj   Z =w i   .p w d w \ w T w L.Bw v 7y w h7r w `7l 7g  / ( .h H w7L   ww (bb  . " ww w A B`". % w~ 7.wtwj E 74b "4. E t4R 4K4&4E.&w J-%zw  =T.Lw >d\7 4=w r& 4.re0w ,w %2@w k04.e=w @w wtJU. S=w  w ~ w .RAe0w ,w w .. - 74   4.0w ^n?w <7 `L.Vw z7j7e7|    w J%0 %7.|E `  1  W ֆ  .> m.7, y r@" " $r&(~Ht.~  Ht$B Y.  $B .P47D  P4[.w*77%|.< tnw %b=w 0V.bw ( w w >ww> 0. ( 0$ 7$mw ".w $\/%w .    L eD (DC.  !RB !R=L !6mRR!. 4D4 V  !4Dh4 V D V D"h&V.F%h w 6 X @w @.l % % 6w  .ww . D  &.C@AEPA&fw w /w .w Tw 4  ` .E `   .* w w 7UvE.Pw l7NE .vPF  pV w ^׭ V.& Uld.b7w FLŝDŝ@.Ef P$ wL.t!D w w   w @e3D  .4%ĕtD7| VVw DV"V.ZBw .`e` w ;w :ĝDm.Dw Zw,"f&fD"e.  d4D (D.hFD pt7p7th Dpt"p&t.tw t5ppp9ttpp&p/. t  <hD !(thD.> %p &e N @ e0.d w &  4 4. tE%~ %% %'  tq. ?7vprE vprU.  {` w  g.  ۇw .ח/ w r ." ׭r^w ZUw RwXr (.H 7B ZV  z  .n 7,4("4-< 0w, 44k. 7$ %!  %h. ??   w   $ . %Jw J7w ^ e0w . ,w w .,  Cå å$ נA l.R  e` .x   Ëנe ee 8  1! e ѐ  @(  &- ODT V01-02 (    BE  . *;/\ $G _<^,OWEBP@>SRC-FI!XASPM CFRB     .<.?);d@Lp@Mw@.p@@@@L@G.V}@@Cq@Cv~@C@M.((6h29Xh>yhJ &BShnChh>Ch~,f  $%7 7 7 N*C MwLLp $#*$7 7 +  O*V} L C$L^.Ff & );d CqLCq(lf   wt$ CqCLp);d"Cv~.@Mw@L@Cv~@k.C@((B2;MhByhCqh*.f $  wf dCCv~$&1 e% C MwL.ALp@@p@l.@V}@@j@@.j@@(@(XRhP.zh@ѫWhHY@:@DX@z.E|@ǫ:@C@@(.쩀(YsKDX"E|$DX(.& pGDX(s:'.Lp  :(.rp  rǫ:f%: p.weww,>Y 8Y8Y{Z"yBxK '.f,5f   *9sKC>Y$>Y. $V 7 7 ? ;,8YZ{DX"p&>YT.E ,we5 5 sKsK >Y.4 5 UEA .Z f   e>YZ{(ww1{JwkfV.= JwkfHyBxH ƩHa.(쩀 (N{h);dhLph..Mwhf%:hphs:hsKhZ.{hZh8Yh>Yhh^=.:hFphh,hhLh&.DXh0E|h6ǫ:h̫F`h }h?.᫈h6V}hhCv~hCh2.jhhhjhh쩀 .,^ ` 7 I% 2%@.&,?r9 %\.DF"4.L?Twww"% %wS9.rw?$    d .#TT "|.A T@_?@K c.$@?_`__k(ththT(T(t,.J^ `D%  Z j.p.5 DE 7aS.$DEv 7anj  a.  b  .l ՐU  0$'.J   + -(.6,^ `,} ' 6 .NLIST ; 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. .LIST ;DEMOFG.MAC ;FOREGROUND DEMONSTRATION PROGRAM TO PRINT MESSAGE TO BACKGROUND,THEN ;QUEUE A MESSAGE EVERY 2 SECONDS FOR THE BACKGROUND TO RING THE BELL. .MCALL ..V2..,.REGDEF,.SDATC,.PRINT,.MRKT,.QSET,.SPND .REGDEF START: .PRINT #MSG ;PRINT INTRODUCTORY MESSAGE .QSET #QUEUE,#100. ;SET ASIDE 100 Q ELEMENTS FOR MESSAGES .MRKT #AREA,#TIME,#MKTC,#1 ;SET UP MKTIM FOR 2 SECONDS FROM NOW .SPND ;SUSPEND THE FG TILL MKTIM SATISFIED ;MKTIM COMPLETION ROUTINE MKTC: CMP MSGCNT,#90. ;90 MESSAGES QUEUED YET? BGT MKTC1 ;YES-NO SENSE QUEUEING ANOTHER .SDATC #AREA,#BUFFER,#1,#SDATC ;SEND MESSAGE TO BG INC MSGCNT ;BUMP MESSAGE COUNTER MKTC1: .MRKT #AREA,#TIME,#MKTC,#1 ;SET UP ANOTHER MKTIM FOR 2 SECONDS RTS PC ;RETURN FROM COMPLETION ROUTINE ;SDAT COMPLETION ROUTINE SDATC: DEC MSGCNT ;ONE OF THE MESSAGES HAS BEEN RECIEVED RTS PC ;RETURN ;ASCII MESSAGES MSG: .ASCII /FOREGROUND DEMONSTRATION PROGRAM/ .BYTE 15,12 .ASCII /SENDS A MESSAGE TO THE BACKGROUND PROGRAM "DEMOBG"/ .BYTE 15,12 .ASCIZ /EVERY 2 SECONDS, TELLING IT TO RING THE BELL./ .EVEN ;MESSAGE COUNTER MSGCNT: .WORD 0 ;TIME CONSTANT TIME: .WORD 0 ;HIGH ORDER .WORD 60.*2 ;60 TICKS A SECOND,2 SECONDS ;ARGUMENT AREA AREA: .=.+20 ;BUFFER FOR MESSAGES BUFFER: .=.+400 ;QUEUE AREA QUEUE: .BLKW 100.*7 .END START .NLIST ; 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. .LIST ;DEMOBG.MAC ;DEMONSTRATION PROGRAM TO PRINT DEMONSTRATION MESSAGE,THEN ;RING BELL IF FG JOB SENDS A MESSAGE. .MCALL ..V2..,.REGDEF,.RCVDC,.PRINT .REGDEF START: .RCVDC #AREA,#BUFFER,#400,#MSGIN ;POST REQUEST FOR MESSAGE .PRINT #MSG ;PRINT DEMONSTRATION MESSAGE BR . ;AND LOOP ;COMPLETION ROUTINE ENTERED WHEN FG SEBDS MESSAGE MSGIN: .PRINT #BELL ;RING BELL IN RESPONSE TO MESSAGEE .RCVDC #AREA,#BUFFER,#400,#MSGIN ;POST ANOTHER MESSAGE REQUEST RTS PC ;AND RETURN FROM COMPLETION ROUTINE ;ASCII MESSAGES BELL: .BYTE 7,200 ;MESSAGE THAT RINGS BELL MSG: .ASCII /RT-11 DEMONSTRATION PROGRAM/ .BYTE 15,12 .ASCII /IF INCORRECTLY EDITED,THIS IS THE LAST LINE./ .BYTE 15,12 ; .ASCII /WELL DONE./ .BYTE 0 ;RCVDC PACKET AREA AREA: .=.+10 ;RCVDC MESSAGE AREA BUFFER: .END START .TITLE KB.MAC V01-01 ; RT-11 V2 DEVICE INDEPENDENT TERMINAL HANDLER, KB. ; ; DEC-11-ORKBA-E ; ; COPYRIGHT (C) 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. ; ; MARCH 1975 ; RGB ;RT-11 V2 DEVICE INDEPENDENT TERMINAL HANDLER, KB. KB ;CAN BE USED BY EITHER THE FOREGROUND OR BACKGROUND (BUT NOT ;BOTH SIMULTANEOUSLY) TO READ AND WRITE TO ANY DL-11A OR KL-11A ;CONTROLLED TERMINAL. ; ;THIS HANDLER HAS THE FOLLOWING CHARACTERISTICS: ; 1)CARRIAGE RETURN CAUSES THE REMAINDER ; OF THE INPUT BUFFER FOR THE CALLING READ REQUEST TO BE ; ZERO-FILLED,AND THE READ IS COMPLETED. THUS,THE HANDLER ; TRANSFERS ONE LINE AT A TIME,NO MATTER HOW LONG THE ; INPUT BUFFER IS FOR THE READ REQUEST; THE UNUSED PORTION ; OF THE BUFFER IS ZERO-FILLED. CARRIAGE RETURN ECHOES ; CARRIAGE RETURN,/LINE-FEED, AND INSERTS CR AND LF CHARACTERS ; IN THE BUFFER IF THERE IS ROOM,ELSE ONLY CR IS PLACED IN THE BUFFER. ; 2)FORM FEED ECHOES 7 LINE FEEDS,AND INSERTS A FF CHARACTER IN ; BUFFER. ; 3)RUBOUT ECHOES "\" AND DELETES THE LAST CHARACTER IN THE BUFFER. ; IF THERE ARE NO CHARACTERS IN THE BUFFER,RUBOUT DOES NOT ECHO ; AND IS IGNORED. ; 4)TAB ECHOES ENOUGH SPACES TO POSITION THE PRINT HEAD AT THE ; NEXT TAB STOP,AND INSERTS A TAB CHARACTER IN THE BUFFER. ; 5)CTRL U ECHOES "^U" AND ERASES THE CURRENT LINE. ; 6)CTRL Z ECHOES "^Z" AND CAUSES THE HANDLER TO REPORT END-OF-FILE. ; THE CTRL Z CHARACTER IS NOT INSERTED IN THE BUFFER. ; 7)THE LOW-SPEED READER WILL RUN IF IT IS TURNED ON WHILE A READ ; REQUEST IS PENDING TO THE HANDLER. IF THE TAPE BEING READ HAS ; MANY TABS,HOWEVER,THE TIME NECESSARY TO ECHO THE TABS WILL ; CAUSE CHARACTERS FOLLOWING THE TABS TO BE LOST. TO DISABLE THE ; ECHOING OF TABS,THE "SET" COMMAND CAN BE USED AS FOLLOWS: ; "SET KB LSR" WILL DISABLE TAB ECHOING,ALLOWING A TAPE ; TO BE READ WITHOUT CHARACTER LOSS. ; "SET KB NOLSR" WILL ENABLE TAB ECHOING,FOR NORMAL KEYBOARD ; INPUT. THIS IS THE DEFAULT. ; 8)WHEN THE HANDLER RECIEVES A READ REQUEST,A ">" CHARACTER IS ; PRINTED IN THE LEFT MARGIN OF THE TERMINAL TO SIGNIFY THAT THE ; HANDLER IS READY FOR INPUT.THIS CHARACTER CAN BE CHANGED, OR THE ; PROMPT FEATURE CAN BE REMOVED, BY RE-ASSIGNING THE SYMBOL ; "PROMPT" TO THE ASCII VALUE OF THE ; DESIRED CHARACTER. SETTING PROMPT TO "0" WILL CAUSE NO CHARACTER ; TO BE PRINTED. ; 9)IF NO READ REQUEST IS ACTIVE,THE HANDLER WILL NOT ACCEPT INPUT, ; AND THE KEYBOARD WILL NOT ECHO. IF IT DOES ECHO,THE HANDLER IS ; ACCEPTING INPUT. ; ;THIS HANDLER CONTAINS CONDITIONAL CODE TO SUPPORT TERMINALS THAT ;REQUIRE FILLER CHARACTERS AFTER A PARTICULAR CHARACTER. TO ENABLE THE ;FILLER FUNCTION, DEFINE THE SYMBOL "FILCHR" EQUAL TO THE ASCII ;VALUE FOR THE CHARACTER TO BE FILLED AFTER,AND THE SYMBOL "FILCNT" ;TO BE THE OCTAL NUMBER OF NULLS TO BE ISSUED AFTER EACH OCCURANCE ;OF THE CHARACTER DEFINED BY "FILCHR". FOR EXMAPLE,TO PROVIDE ;12 FILLER CHARACTERS AFTER A CARRIAGE RETURN, SET "FILCHR=15" AND ;"FILCNT=14". ;THE HANDLER IS INSTALLED VIA THE FOLLOWING PROCEDURE: ; 1)ASSEMBLE IT AS FOLLOWS: ; DEFINE FILLER CONDITIONALS IF NECESSARY ; .R MACRO ; *KB=KB ; 2)LINK IT AS FOLLOWS: ; .R LINK ; *KB.SYS=KB ; 3)INSTALL IT AS DEVICE "KB:",AS DESCRIBED IN SECTION XXXXXX ; OF THE RT-11 V2 SOFTWARE SUPPORT MANUAL. REMEMBER THAT ; THE VECTORS FOR THE TERMINAL MUST BE PROTECTED IN THE BIT MAP ; AS DESCRIBED IN THAT SECTION. ; THE VALUES FOR THE VARIOUS TABLE ENTRIES SHOULD BE ; HSIZE=VALUE OF SYMBOL "KBSIZE" ON LAST LINE OF LISTING ; DVSIZE=0 (NON-FILE STRUCTURED DEVICE) ; PNAME=42420 (RAD50 FOR "KB ") ; STAT= HIGH ORDER BYTE=0,LOW ORDER BYTE=24 ; 4)ONCE INSTALLED, KB: WILL BE AVAILABLE WHEN THE SYSTEM IS REBOOTED. ; ;THE HANDLER ITSELF IS ACTIVATED WITH READ AND WRITE REQUESTS,AS ARE ALL ;RT-11 DEVICE HANDLERS. WHEN USING SYSTEM PROGRAMS WHICH OPERATE ON ;LARGE BUFFERS,SEVERAL LINES MAY ACCUMULATE IN THE BUFFER BEFORE ;THEY APPEAR ON THE TERMINAL,AND THEN ALL AT ONCE. TO AVOID THIS PROBLEM, ;EACH OUTPUT BUFFER CAN BE ZERO-FILLED AND SENT TO THE TERMINAL TO PRINT ;EACH LINE-THE HANDLER WILL IGNORE NULLS ON OUTPUT. ;IN FORTRAN,EACH LINE CAN BE FORCED IN OR OUT BY USING A REWIND ;FOLLOWING EACH READ OR WRITE TO THE DEVICE. FOR EXAMPLE: ; LOGICAL*1 INPUTL(80) ; CALL ASSIGN (7,'KB:/C') ; WRITE (7,1) ; REWIND 7 ; WRITE (7,2) ; REWIND 7 ; READ (7,3) INPUTL ; REWIND 7 ; . ; . ; . ;1 FORMAT . . . . ;2 FORMAT . . . ;3 FORMAT . . . ;THE HANDLER CAN BE "RE-CONFIGURED" FOR VARIOUS VECTOR AND ;REGISTER ADDRESSES BY CHANGING THE ASSIGNMENTS OF THE SYMBOLS ;"KBVEC" AND "KBCSR" ON THE FOLLOWING PAGE. EDITING THESE TWO ;SUFFICES TO CHANGE ALL FLOATING ADDRESSES. .MCALL .REGDEF,..V2..,.INTEN .REGDEF ..V2.. ;VECTOR AND DEVICE REGISTER ADDRESSES-EDIT THESE TWO TO RECONFIGURE KBVEC=300 ;KEYBOARD VECTOR KBCSR=176500 ;KEYBOARD CONTROL REGISTER ;OTHER DEVICE ADDRESSES TPVEC=KBVEC+4 ;PRINTER VECTOR KBBUF=KBCSR+2 ;KEYBOARD BUFFER REGISTER TPCSR=KBCSR+4 ;PRINTER CONTROL REGISTER TPBUF=KBCSR+6 ;PRINTER BUFFER ;CONSTANTS OFFSET=270 ;OFFSET TO MONITOR COMPLETION ENTRY EOF=20000 ;EOF BIT IN CSW PR7=340 ;PSW VALUE FOR PRIORITY 7 PR4=200 ;PSW VALUE FOR PRIORITY 4 HT=11 ;TAB LF=12 ;LINE FEED FF=14 ;FORM FEED CR=15 ;CARRIAGE RETURN=15 CTRLU=25 ;CTRL/U CTRLZ=32 ;CTRL/Z SPACE=40 ;SPACE DELET=177 ;RUBOUT EBLENGTH=20. ;LENGTH OF ECHO BUFFER PROMPT='> ;PROMPT CHARACTER ;SET LSR CODE ;THE FOLLOWING ID THE HANDLER INTERFACE TO THE MONITOR SET COMMAND. ;FOR DETAILS OF INTERFACING TO THE SET COMMAND,SEE THE RT-11 V2 SOFTWARE ;SUPPORT MANUAL .ASECT .=400 HT ;FOR NOLSR,SET LSROPT TO "HT" .RAD50 /LSR / .WORD /2+100000 0 OPLSR: MOV (PC)+,R3 ;FOR LSR,SET LSROPT TO 377 377 MOV R3,LSROPT ;MODIFY OPTION VARIABLE IN HANDLER RTS PC ;RETURN TO SET PROCESSOR .CSECT ;THIS IS THE HANDLER HEADER AREA,USED BY FETCH AND THE ;QUEUE MANAGER TO STORE VARIABLES CRITICAL TO HANDLER OPERATION. KBSTRT: .WORD TPVEC ;PRINTER VECTOR ADDRESS .WORD TPINT-. ;OFFSET TO PRINTER INTERRUPT SERVICE .WORD PR7 KBLQE: .WORD 0 ;LAST QUEUE ENTRY KBCQE: .WORD 0 ;CURRENT QUEUE ENTRY ;FOLLOWING IS THE TRANSFER INITIATION CODE. ;THE FIRST WORD OF THIS ROUTINE IS THE ENTRY POINT FOR ALL ;TRANSFER REQUESTS. THE KEYBOARD VECTOR IS SET UP (FETCH ONLY SETS UP THE ;PRINTER VECTOR),AND THE PARAMETERS FOR THE TRANSFER ARE ESTABLISHED. ;IF THE REQUEST IS A WRITE, CONTROL TRANSFERS TO THE PRINTER ROUTINE TO ;OUTPUT THE FIRST CHARACTER FROM THE USER BUFFER. IF IT IS A READ, ;THE ENTIRE USER BUFFER IS ZEROED,A FLAG (READFL) IS SET TO ;SHOW THAT A READ IS IN PROGRESS,AND A PROMPT CHARACTER IS ECHOED ;ON THE TERMINAL BEFORE THE KEYBOARD INTERRUPT IS ENABLED. MOV PC,R0 ADD #KBINT-.,R0 ;CALCULATE ABSOLUTE ADDRESS OF KEYBOARD INTERRUPT SERVICE MOV R0,@#KBVEC ;SET UP KEYBOARD VECTOR MOV #PR7,@#KBVEC+2 RETRY: CLR READFL ;INIT READ FLAG AND TAB COUNT MOV KBCQE,R5 ;POINT TO CURRENT Q ELEMENT CMP (R5)+,(R5)+ ;ADD 4 TO R5 MOV (R5),UBPTR ;SET UP POINTER TO USER BUFFER MOV (R5)+,UBPTR1 ;AND SAVE ORIGINAL POINTER FOR LATER ASL (R5) ;MAKE WORD COUNT INTO BYTE COUNT MOV (R5),BYTCNT ;AND SAVE IT BEQ DONE ;WORD COUNT OF 0 IS SEEK,WHICH IS NOP IN THIS HANDLER BCS TPOUT2 ;IF NEGATIVE,WRITE TO PRINTER MOV (R5),R4 ;BYTE COUNT TO R4 MOV -(R5),R5 ;USER BUFFER POINTER IN R5 3$: CLRB (R5)+ ;ZERO USER BUFFER BEFORE STARTING TRANSFER DEC R4 BNE 3$ ;BRANCH IF NOT DONE INCB READFL ;SET "READ IN PROGRESS" FLAG JSR R1,ECHO ;PROMPT INPUT WITH ">" .BYTE PROMPT,377 JMP KBIN ;ENABLE KEYBOARD INTERRUPT AND RETURN ;THIS IS THE ABORT ENTRY POINT-THE HANDLER IS ENTERED AT THIS ADDRESS ;IF THE MONITOR RECIEVES A REQUEST TO ABORT ANY IO TRANSFER IN PROGRESS BR ABORT ;THIS IS THE TERMINAL OUTPUT INTERRUPT SERVICE. AFTER ENTERING SYSTEM STATE, ;IT DETERMINES IF THERE ARE ANY CHARACTERS IN THE ECHO BUFFER TO BE ;PRINTED. IF NOT,IT THEN DETERMINES WHETHER A WRITE REQUEST IS IN PROGRESS ;OR NOT. IF SO,THE NEXT CHARACTER IN THE USER BUFFER IS PRINTED. ;IF NOT,THE INTERRUPT IS DISMISSED. ;IF THERE ARE CHARACTERS IN THE ECHO BUFFER,THE FIRST CHARCTER IN THE ;LIST IS FETCHED INTO R4,THE LIST IN THE ECHO BUFFER IS "SLID UP" ;BY ONE CHARACTER,AND THE CHARACTER IN R4 IS THEN PRINTED. ;IF THE FILLER CONDITIONAL CODE IS INCLUDED AT ASSEMBLY TIME, ;THE CHARACTER IN R4 IS COMPARED AGAINST THE CHARACTER TO BE FILLED AFTER. ;IF THE SAME,A COUNT OF NECESSARY FILLS IS STUFFED IN "FILCN1" AND THE ;CHARACTER IS PRINTED. THE INTERRUPT SERVICE THEN CHECKS THE NUMBER ;OF FILLS NEEDED AS THE FIRST ITEM,AND PRINTS NULLS IF ANY ARE LEFT TPINT: JSR R5,@$INPTR ;ENTER SYSTEM STATE .WORD ^C&PR7 TPOUT2: BIT #200,@#TPCSR ;IS THE PRINTER READY BEQ RTSPC ;YES-THEN WAIT FOR INTERRUPT TO PRINT ANYTHING .IFDF FILCHR ;CONDITIONAL CODE FOR FILLER TSTB FILCN1 ;ANY FILLS NEED TO BE OUTPUT? BLE 3$ ;BRANCH IF NOT DECB FILCN1 ;YES-DECREASE NUMBER BY ONE CLR R4 ;NULL IS FILLER BR TPOUT3 ;GO PRINT IT .ENDC 3$: MOV PC,R5 ;CALC ABSOLUTE ADDRESS ADD #RBSTRT-.,R5 ;OF ECHO BUFFER MOVB (R5),R4 ;GET CHAR TO ECHO FROM ECHO BUFFER BEQ 1$ ;BRANCH IF BUFFER EMPTY MOV #EBLENGTH,-(SP) ;NUMBER OF CHARS IN ECHO BUFFER ON STACK 2$: MOVB 1(R5),(R5)+ ;SLIDE ECHO LIST UP DEC (SP) ;DECREASE COUNT OF CHARS TO SLIDE BGT 2$ ;BRANCH IF NOT FINISHED TST (SP)+ ;DONE-CLEAN UP STACK BR TPOUT1 ;AND PRINT CHAR 1$: TSTB READFL ;ARE WE READING OR WRITING? BNE RTSPC ;BRANCH IF READING TPOUT: MOVB @UBPTR,R4 ;GET CHAR FROM USER BUFFER INTO R4 INC UBPTR ;BUMP BUFFER POINTER INC BYTCNT ;AND DECREASE TRANSFER COUNT BGT DONE ;BRANCH IF TRANSFER COMPLETE TPOUT1: TSTB R4 ;DON'T PRINT NULLS BEQ TPOUT2 ;BRANCH IF NULL .IFDF FILCHR ;CONDITIONAL CODE FOR FILLER CMPB R4,FILCR1 ;DOES THIS CHAR NEED TO BE FILLED AFTER? BNE TPOUT3 ;BRANCH IF NOT MOVB #FILCNT,FILCN1 ;YES-SET UP COUNT OF FILLS NEEDED .ENDC TPOUT3: MOV #100,@#TPCSR ;ENABLE PRINTER INTERRUPT MOVB R4,@#TPBUF ;PRINT CHARACTER RTSPC: RTS PC ;RETURN TO MONITOR ;REQUEST TERMINATION AND ABORT CODE ;THIS ROUTINE IS ENTERED WHEN THE I/O TRANSFER IS ;COMPLETED OR ABORTED. THE DEVICE INTERRUPTS ARE DISABLED,AND ;STANDARD MONITOR COMPLETION ENTRY CODE IS EXECUTED. ABORT: CLR @#TPCSR ;DISABLE OUTPUT INTERRUPTS DONE: CLR @#KBCSR ;DISABLE INPUT INTERRUPTS MOV PC,R4 ;STANDARD MONITOR ADD #KBCQE-.,R4 ;COMPLETION ENTRY MOV @#54,R5 ;CODE JMP @OFFSET(R5) ;KEYBOARD INTERRUPT SERVICE ;THIS IS THE KEYBOARD INTERRUPT SERVICE ROUTINE. AFTER ENTERING ;SYSTEM STATE,IT GETS THE TYPED CHARACTER INTO R4,THEN ;PROCEEDS DOWN A CHAIN OF CHECKS FOR THE SPECIAL CASE CHARACTERS ;(RUBOUT,CTRL U,CTRL Z,CR,FF). IF IT IS ONE OF THE SPECIAL ;CHARACTERS, THE ROUTINE "ECHO" IS CALLED TO ECHO APPROPRIATE ;CHARACTERS ON THE TERMINAL,THEN APPROPRITE ACTION FOR THE SPECIAL CASE ;IS TAKEN. IF A NORMAL CHARACTER IS TYPED,IT IS ECHOED AND PLACED ;IN THE USER BUFFER BEFORE THE INTERRUPT IS DISMISSED. KBINT: JSR R5,@$INPTR ;ENTER SYSTEM STATE .WORD ^C&PR7 MOVB @#KBBUF,R4 ;GET CHAR BIC #177600,R4 ;STRIP TO SEVEN BITS CMPB R4,#DELET ;IS THIS CHARACTER A RUBOUT? BNE 11$ ;BRANCH IF NOT CMP UBPTR,UBPTR1 ;ANY CHARS LEFT TO RUB OUT? BEQ KBIN ;NO-IGNORE RUBOUT DEC UBPTR ;BACK UP POINTER INTO USER BUFFER JSR R1,ECHO .BYTE '\,377 INCB TABCNT ;BUMP TAB COUNTER FOR "\" CLRB @UBPTR ;ZERO RUBBED OUT CHAR INC BYTCNT ;AND INCREASE TRANSFER COUNT TO REFLECT LOST CHAR BR KBIN ;RE-ENABLE INTERRUPTS AND EXIT 11$: CMPB R4,#FF ;IS THIS CHAR A FORM FEED? BNE 6$ ;BRANCH IF NOT JSR R1,ECHO ;YES-ECHO 7 LINE FEEDS .BYTE LF,LF,LF,LF,LF,LF,LF,377 6$: CMPB R4,#CR ;IS THIS CHAR A CR? BNE 7$ ;BRANCH IF NOT JSR R1,ECHO ;YES-ECHO CR,LF .BYTE CR,LF,0,377 MOVB R4,@UBPTR ;PUT CR IN USER BUFFER INC UBPTR ;BUMP USER BUFFER POINTER DEC BYTCNT ;ROOM IN BUFFER FOR LF TOO? BEQ DONE ;DON'T INSERT IT IF NOT MOVB #LF,@UBPTR ;ELSE ADD LF TO BUFFER BR DONE 7$: CMPB R4,#CTRLU ;IS CHAR CTRL U? BNE 8$ ;BRANCH IF NOT JSR R1,ECHO ;ECHO "^U" .BYTE '^,'U,CR,LF,0,377 JMP RETRY ;AND RESTART READ 8$: CMPB R4,#CTRLZ ;IS CHAR CTRL Z? BNE 9$ ;BRANCH IF NOT JSR R1,ECHO ;ECHO "^Z" .BYTE '^,'Z,CR,LF,0,377 MOV KBCQE,R5 ;POINT R5 TO Q ELEMENT BIS #EOF,@-2(R5) ;AND SET EOF FLAG IN CSW BR DONE ;STOP TRANSFER 9$: CMPB R4,#40 ;IS THIS A PRINTING CHAR? BLT 21$ ;BRANCH IF NOT INCB TABCNT ;YES-INCREASE TAB POSITION 21$: MOVB R4,20$ ;SET UP TO ECHO CHAR JSR R1,ECHO 20$: .BYTE 0,377 MOVB R4,@UBPTR ;PUT CHAR IN USER BUFFER INC UBPTR ;BUMP BUFFER POINTER DEC BYTCNT ;ANY MORE TO TRANSFER BEQ DONE ;BRANCH IF NOT KBIN: MOV #101,@#KBCSR ;ENABLE KEYBOARD INTERRUPT RTS PC ;RETURN TO MONITOR ;SUBROUTINE ECHO ;THIS SUBROUTINE SERVES TO PLACE THE SPECIFIED CHARACTERS IN THE ;ECHO BUFFER,AND START THE PRINTER IN CASE IT IS IDLE. ;THE CALLING SEQUENCE IS ; JSR R1,ECHO ; .BYTE CHAR1,CHAR2,CHAR3....CHARN,377 ;ON ENTRY,R4 CONTAINS THE CHAR TYPED AT THE KEYBOARD. ;NOTE THAT THERE MUST BE AN EVEN NUMBER OF BYTES IN THE ARGUMENT LIST ;AND THEREFORE THE NUMBER OF CHARACTERS EXCLUDING THE 377 ;MUST BE ODD. ;WHEN ENTERED,ECHO SCANS THE ECHO BUFFER TO FIND THE END OF THE ;ECHO LIST,WHICH IS MARKED BY A NULL BYTE. WHEN THE END OF THE LIST ;IS FOUND,IT IS DETERMINED IF THERE ARE AT LEAST 8 FREE SLOTS IN THE LIST ;TO ACCOMODATE A POSSBLE LINE FEED OR FORM FEED. IF NOT,THE ;CHARACTER JUST TYPED IS IGNORED. IF SO,THE CHARACTERS FROM THE ;ARGUMENT LIST FOLLOWING THE CALL ARE INSERTED IN THE BUFFER, ;THE PRINTER IS STARTED IF IT IS IDLE,AND THE ROUTINE RETURNS. ;NOTE THAT TAB IS A SPECIAL CASE; IF R4 CONTAINS A TAB CHARACTER ;WHEN THIS ROUTINE IS ENTERED,THE ARGUMENT LIST IS NOT USED. RATHER, ;AN APPROPRIATE NUMBER OF SPACES TO MOVE THE PRINT HEAD TO THE ;NEXT TAB STOP ARE PLACED IN THE ECHO BUFFER,AND THE ROUTINE RETURNS .ENABL LSB ECHO: MOV PC,R5 ;CALC ABSOLUTE ADDRESS ADD #RBSTRT-.,R5 ;OF ECHO BUFFER MOV R5,TEMP ;SAVE ADDRESS OF ECHO BUFFER ADD #EBLENGTH-1,TEMP;TEMP POINTS TO END OF ECHO BUFFER 4$: TSTB (R5)+ ;IS THIS END OF ECHO LIST? BNE 4$ ;BRANCH IF NOT DEC R5 ;YES-R5 POINTS TO FIRST FREE SLOT IN ECHO LIST SUB R5,TEMP ;FIND NUMBER OF FREE SLOTS IN ECHO LIST CMP TEMP,#8. ;IS THERE ENOUGH ROOM TO ECHO TAB OR FF? BGT 3$ ;BRANCH IF YES MOV (SP)+,R1 ;NO-IGNORE THIS CHAR THEN BR KBIN ;DISMISS INTERRUPT 3$: MOV R4,-(SP) ;SAVE CHAR CMPB R4,(PC)+ ;IS THIS CHAR A TAB? LSROPT: HT ;THIS COMPARE OPERAND CAN BE CHANGED BY SET LSR BNE 1$ ;BRANCH IF NOT 5$: MOVB #SPACE,(R5)+ ;ECHO A SPACE INCB TABCNT ;BUMP POSITION COUNTER BITB #7,TABCNT ;AT TAB STOP YET? BNE 5$ ;BRANCH IF NOT TST (R1)+ ;YES-ARTIFICIALLY BUMP RETURN CLRB (R5) ;END ECHO LIST BR 6$ ;AND START ECHO 1$: MOVB (R1)+,(R5)+ ;MOVE CHAR INTO ECHO LIST BPL 1$ ;BRANCH IF END-OF-LIST NOT SEEN CLRB -(R5) ;ELSE USE 0 TO MARK END OF ECHO LIST 6$: JSR PC,TPOUT2 ;PRINT A CHAR TO START PRINTER MOV (SP)+,R4 ;RESTORE CHAR RTS R1 ;RETURN .DSABL LSB ;DATA AREA ;ECHO RING BUFFER-EBLENGTH CHARACTERS LONG RBSTRT: .BYTE 0 .BLKB EBLENGTH-1 ;VARIABLE AREA .IFDF FILCHR ;FILLER CONDITIONAL FILCR1: .BYTE FILCHR ;CHARACTER TO BE FILLED AFTER FILCN1: .BYTE 0 ;NUMBER OF FILLS REMAINING .ENDC TEMP: .WORD 0 ;TEMPORARY BYTCNT: .WORD 0 ;USER TRANSFER COUNT READFL: .BYTE 0 ;FLAG FOR "READ IN PROGRESS" TABCNT: .BYTE 0 ;TAB POSITION COUNTER UBPTR: .WORD 0 ;POINTER INTO USER BUFFER UBPTR1: .WORD 0 ;POINTER TO START OF USER BUFFER ;MONITOR SYSTEM STATE ENTRY LINK $INPTR: .WORD 0 KBSIZE=.-KBSTRT .END &fe>B @& fE@  B  j  _  _ 8_ _   _  F_  _  _  _ P ^^L5 $5   r7 &, 7 ,&@7 &) 0 @$ :@m$ @`5$Gm, @m&55 @u$5 $ 5 &5 ,A&A @@@]&  Am& @&*  u 7 lFBD@a H ?DEV FULL??CSECT ERR??IN ERR??OUT ERR??ILL CMD??ILL DEV??FIL NOT FND?ILL DEL?NO CORE??BAD LIBR?ILL INSILL REPL?BAD OBJ??LIBR FIL ILL REPL? MOD NAME: ENTRY POINT: RT-11 LIBRARIAN V03-03 BLOCKS MODULE ENTRY/CSECT ENTRY/CSECT ENTRY/CSECT 55 7 x% E e( (& eC8'&(& Na>e>& &>Na^>  `E u 5 5 P 7 0hfd'u050u0$$ @  %  :%/ . $  | [%@@5 @m8@mT Z  u6 u6u65 @5 u5@ .@5.f :- .  : f  e0 .H & D?  5 -   7 Q fBmTA ぀    U̕ 7 yu'   5 @A6AmNumNPCD P  W-' # cW-u Nu(D aa 5@CNuN('d JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDEC(@(@  w7o  7 } f Z   7&fT    `   ) $ A  f e `   T   ( JcT7 $ & 7w - &+f&%& fߋ*wfɊW zwBwV7 eQw(鈇\e"&fS  e B  .ы ( "   B  @ &B  @  AaB E єˋ*TnB2 T4b z: $ PUNTERMINATED MACROUNTERMINATED COMMANDMEMORY OVERFLOW> NOT IN ITERATION; NOT IN ITERATION SRCH FAIL IN ITER SEARCH FAILURE FOR ""ILLEGAL COMMANDDELETE TOO BIGNO ARG BEFORE ILLEGAL CHARACTERILLEGAL Q REG NAMECAN'T CLOBBER COMMANDPUSH-DOWN LIST OVERFLOWPOINTER OFF PAGESEARCH STRING "" TOO LARGET FIL                                                      $$ $$ /cw &  a pwH!   & @ Ps w 6 w7 e7. ,           e  /   # w seA    wn ^ ~7=wPJB & VS w,Ý w ̋k w:f 3-- - (W,h  7 V$ $ L&C@ j7i x w wRSS ?U75 ,S 7$ "Ԋ96  , 7w CH ^e     ̋Ā  78 eN 7 ȋ _s;677 j7Ih 87\ , 6wv ~4 t   fwVef ѕ  ^ 鈂ww[5  > e   wn e  TT# Z&v   e ee e  &@ @ @ E *ѕ-Ee6 -EeH 4 / d 0ѐ 7PECIFIED ; IN THE COMMAND STRING. SWT.SL= 000001 ;ENABLE SOURCE LISTING SWT.SM= 000002 ;ENABLE STORAGE MAP SWT.GC= 000004 ;ENABLE LISTING OF GENERATED CODE SWT.OP= 000020 ;ENABLE OPTIMIZER SWT.FC= 000040 ;FILE CONTINUE IN PROGRESS SWT.ST= 000100 ;STATISTICS LISTING DESIRED SWT.SN= 00 N e  \7 tePJ 8& 8  ) -  w$eA     w  7w B  wwwf&JB SB ffeS SS   wÝ  w &j 7`w' 7e  w"t 5mmm(*&P73& EE$ O$5 -- W,h y7u w& wJ1S.׭*sW77 `7?^ 7R6w78& j   \ 74w P  CCa7 m  pwwv& rӕ j deS Z P J D B  | *S  l 4`B7V 7e 7!,f  (wawa7 7e7 STATISTICS LIST DESIRED? BEQ CSI ;NOPE CALL STAT ;ELS 0z7 7{@&!w ,  Fѕ ѕ p8 ѕ ѕ L-we  ѕ e . 8 e  ѕ ѕ   ѕ ѕ ѕ ѕ rew  " w  ѕ  qwn wo 7gw`pVєˋw,&v   e ee e  &@ @ @ E *ѕ-Ee6 -EeH 4 / d 0ѐ 7 06  B U $,@6f{ E @pe  e@de [ee @S@`ߋ*L  >(MwAew DwED6R  /G&Cu U  7`  +w  SO Sه# # # , ⃁ W 냷f C    (,5e w wwˋ ˋ w600D0mD0< 0/舾 UEʇ XU F(e%6b<PP2 Pe  " a ~~ a4( H  aww 2+舵 ( @Ab(<H`2 f P&ef p Ew a a  ,f5Uw/0/ F@0 < 0舨z zUw  aw F % 4 U44