@ȋ ȋ _V`ȋ _ `ȋ    '@@8 w Hw U!w  w  w  b`5@5%E`$* N7 J z5@w * w pd  w TF   %mp   ; ; THIS SOURCE IS CONDITIONIALIZED FOR THE DDC DISK, SECOND UNIT. ; ; TO GENERATE A VERSION THAT WILL HAVE THE SECOND UNIT DDC DISK IN ; INSTEAD OF THE STANDARD DEC RF11, DEFINE THE PARAMETER 'DDCDAR' ; AS POINTING TO THE BUS ADDRESS OF THE CONTROLLER'S DISK ADDRESS ; REGISTER (DAR) ; ;MONITOR SETUP AND INITIALIZATION ROUTINE (RM.005) ; ;VERSION NUMBER: V007A.014 ; ;DATE: 20-JUN-72 ; ; ;DIGITAL EQUIPMENT CORPORATION, MAYNARD MASS. ;COPYRIGHT 1972 ; ; ; ; SYSTEM ASSIGNMENTS ;COPYRIGHT:- DIGITAL EQUIPMENT CORP.,MAYNARD,MASS. ; 1971,1972 ; ;VERSION NO:- V07 ; ; .IFDF DVRRWD .TITLE DV.QT .GLOBL QT .ENDC .IFNDF DVRRWD .TITLE DV.MT .GLOBL MT .ENDC ; .CSECT R0=%0 ;DDB PTR R1=%1 ;LCMMD PTR R2=%2 ;CMMD REG R3=%3 ;SP FUNC BLOCK PTR R4=%4 ; R5=%5 ;SCRATCH SP=%6 PC=%7 ; ; ; MTS=172520 ;TM11 STATUS MTC=172522 ;TM11 COMMAND MTBRC=172524 ;TM11 BYTE/RECORD COUNTER MTCMA=172526 ;TM11 CORE MEMORY ADDRESS MTD=172530 ;TM11 DATA BUFFER MTRD=172532 ;TM11$; THIS BATCH STREAM WILL CREATE THE OBJECT MODULES FOR ALL $; OF THE SYSTEM CUSPS FOR THE DOS/BATCH V08 RELEASE ON SY: $; $JOB ASSEMBLE CUSPS [200,200] $RUN MACRO #SY:MACRO i/zkQx> m4}K> )2vLDK> _8&K> g"jLpK> }2kQrK> K'E%K> 3$G48K> Q"F4VBa> Q4WBa> M 94XBa> W>4YBa> JxeK> 'K"y ;COPYRIGHT 1972 DIGITAL EQUIPMENT CORPORATION ;MAYNARD, MASSACHUSETRAM LOAD ADDRESS SCW: .WORD 0 ; SYSTEM CONFIGURATION INDICATORS ; BIT 0 CLOCK CYCLE INDICATOR, USED BY CDT ; 60 CYCLE =0, 50 CYCLE =1 ; BIT 6 CLOCK TYPE INDICATOR ; KW11-L =0, KW11-P =1 ; BIT 7 NO CLOCK , INDICATOR ; NO CLOCK =0, CLOCK =1 ; BIT 13 SYSTEM LOAD BIT ; LOAD =1 OTHERWISE =0 ; BIT 14 PRIVILEGED USER BIT ; BIT 15 ^C INDICATOR, USED BY BATCH SYSTEM BAT: .WORD T READY TSTB (R1) ;CHECK IF DEVICE INITIALIZED BPL INITX ;BRANCH IF IS MOVB #DENB,10(R1) ;SET DEFAULT DEN=800,PAR=ODD CLRB (R1) ;CLEAR NON INIT STATE INITX: RTS PC ; SIMCOM: CLRB ERRSW ;CLEAR ERROR SWITCH TSTB INTENB ;BRANCH IF INT RET BNE MTEXIT TSTB -3(R0) ;BRANCH IF CALLED FROM QUEUE BNE MTEXIT ADD #20,SP ;REMOVE PC,PS AND REGS MTEXIT: CLRB INTENB JMP @14(R0) ;COMPLETION EXIT ; ; ; ; GO: MOV (SP)+,INTRET ;SAVE INT RETURN ADDR GOA: MOV CMA,@#MTCMA MOV BRC,@#MTBRC  .TITLE INPEC INPUT ALL FILES ON PEC DRIVE 0 ; ; (THEY GO INTO CURRENT UIC) ; ; (FILES ARE WRITTEN TO LOGICAL UNIT 'DSK', INE DISK SIZE IN 256 WORD BLOCKS ; 2. SET DENSITY INDICATOR IF RK02. ; 3. IF REQUESTED VIA /FO FORMATS RK02/03/05S. ; ; ;,7 &f,`d a,65b$5b5b$ d!6L@ , wF&M e v  ,&a( I D | j dN,LCCm  J,re & " ,  &  ^@ fB $  rO68w 6 e BfE͓͋ ; .TITLE DSKSIZ .IDENT /EDIT04/ ;LAST EDIT 10-AUG-72 .SBTTL DSKSIZ - GET DISK SIZE MODULE ; ; ; ; ;DIRECT ASSIGNM5b5hb,\ b " d0 b?F0& x s,( +0 ; POINTS TO DYNAMIC ASSIGNMENT TABLE DCO: .WORD 0 ; CHAIN OF INITED DDBS MUS: .BYTE 0,0 ; MONITOR USER SWITCH OSW: .WORD 0 ; OTHER SWITCH PSA: .WORD 0 ; PROGRAM START ADDRESS DSA: .WORD 0 ; DDT STARTING ADDVESS RSA: .WORD 0 ; RESTART ADDRESS WRA: .WORD WTL ; WAIT RETURN ADDRESS DAT: .WORD 0 ; DATE IN JULIAN - 70,000 TOD: .WORD 0,0 ; TIME OF DAY CLOCK CELLS UIC: .WORD 0 ; USER IDENTIFICATION CODE PGN: .WORD 0,0 ; PROGRAM NAME (MOD 40) .GLOBL MRT. MRT: .WORD MRT. ; START OF RESI CMPB (R1),#WRITE ;CHECK IF THIS IS A WRITE BNE GO2 ;BRANCH IF NOT GO1: BIT #WRL,@#MTS ;CHECK IF WRITE LOCK ON BEQ GO2 ;BRANCH IF NOT JSR PC,READY1 ;ISSUE ACTION MSG BR GO1 ;GO TEST IF LOCK STILL ON GO2: JSR PC,READY ;CHECK IF DEVICE READY BISB 10(R1),.MTC+1 ;SET DEN AND PAR BIS #INT+GOB,R2 ;SET INT ENB AND GO BITS MOVB R2,.MTC ;ISSUE INSTRUCTION MOV .MTC,@#MTC ;FOR REAL GO3: MOV @#46,-(SP) ;RESTORE REGS JSR R5,@(SP)+ RTI ;RETURN TO INTERRUPT ; INTJ: JMP INTH SPECJ: JMP SSSIGNMENTS ; .GLOBL FMTERR ;ERROR WHILE FORMATTING RK. .GLOBL ERROR1 ;ERROR MSG ENTRY POINT. .GLOBL NODKER ;ASCII ERp+!0w & v+p+9,@* D A  &DCc  ,w Dw  w  ' 7 e  |,0 .M $M "U%G',V$CE   e,| READ=1 ERR=4000 EOF=100000 BEOT=40000 OFL=20000 ; .MACRO SCOM ARG MOV #ARG,@#COM .ENDM .MACRO BITSTA ARG BIT !$) &.M $M "^N,U%G$^ &&eF, E]e( &^ "ROR MESSAGES. .GLOBL RCSZ,RFSZ ;SIZE ROUTINES. .GLOBL RKSZ,RPSZ .GLOBL SWITCH .GLOBL DENIND ;HIGH/LOW RK DENSITY INDI# p, Մ &w \w wXw w ,2 fw  w 7 wtwh,Xw  %-E$m A    e,$^ &&e E,]e( &^ &!DENCY TABLE DDL: .WORD 0 ; START OF DEVICE LIST SSP: .WORD 0 ; STACK POINTER SAVE (DUMP) BFS: .WORD 0 ; START OF BUFFER ALLOC. TABLE BFE: .WORD 0 ; END OF BUFFER ALLOC TABLE WTL: BR . ; WAIT LOOP FOR WAITS KBA: .WORD 0 ; POINTER TO KB IN DDL MSB: .WORD MSB. ; POINTER TO MAIN SWAP AREA STK: .WORD 0 ; STACK BASE (BASE + 2) DFU: .BYTE 2,1 ; SCRATCH UIC KBP: .WORD KBPTR ; KEYBOARD POINTER CIL: .WORD 0 ; CIL BASE KSP: .WORD KBI.-2 ; POINTER TO KEYBOARD SWAP BUFFER BKZ: .WORD 0 ; DISK "PEC CLOSJ: JMP CLOSE ; ; TRANS: JSR PC,INIT ;INIT CHECK DEVICE MOV 6(R0),CMA ;SET BUFF ADDR MOV 10(R0),BRC ;SET WORD COUNT ASL BRC ;CVT TO BYTE COUNT MOV 12(R0),R2 BIC #177713,R2 ;CLR ALL BUT READ AND ADDR EXT BITS BIT #4,R2 ;CHECK INPUT/OUTPUT BEQ TRANO ;BRANCH IF OUTPUT MOVB #READ,(R1) ;SET LAST CMMDSREAD SUB #2,R2 ;SET UP READ CMMD BR TRAN2 TRANO: BIT #EOT,@#MTS ;CHECK IF AT EOT BEQ TRAN1 ;BRANCH IF NOT MOV 10(R0),16(R0) ;RETURN WORD COUNT TRAN7: BR SIMCOM ;REJECT C-7 7  \,w7  ww (b ww =,ւw A B` %.1E 0 &* 0 * E?LQ 0( $ \d!xlN/ MOV #FILB-2,ZORK+2 CLR FILB+6 CLR FILB+10 MOV #FILB,R0 .OPENO #DSKLB,R0 .PAGE MOV #-1,LEOF RLOOP: MOV #BUF,@#MA 0 &#  ̋  NC ̋&͕ E m  E? ( & He t * f|&M $^ "U%fGe`f.   Ee E v2,<օ w| 7wr|wh,by E 7ӂwhb E V, tP Iw 03 RCDER=165310 ;DISC SELECT AND ERROR RCDBR=165312 ;DATA BUFFER RCMA=165314 ;MAINTENENCE RCADS=165316 ;ADDRESS OF DISC SECTO4 MOV #400,@#WC SCOM READ JSR PC,WAIT .WRITE #DSKLB,#BUFFR .WAIT #DSKLB BR RLOOP CLOSE: .CLOSE #DSKLB BR LOOP WA%BLOCK SIZE INDICATOR ; 4 = 64 WORD BLOCKS, 2 = 256 WORD BLOCKS M.IOMX: .BYTE 0 ; MAXIMUM I/O EMT M.EMAX: .BYTE 0 ; MAXIMUM EMT IPERMITTED TMNMRT: .WORD 0 ;ABSOLUTE DISK ADDRESS OF MRT COPY USED BY TMON MUOTBL: .WORD 0 ;FOR MUO .EOT ;DEVICE DRIVER LIST - DDL ; ;THE DEVICE DRIVER LIST WILL BE BUILT STARTING AT LOCATION DDL. AT ;SYSTEM INITIALIZATION TIME, AND WILL CONTAIN ENTRIES FOR ALL ;DEVICES IN &MMD - EXIT TRAN1: MOVB #WRITE,(R1) ;SET LAST CMMD S WRITE ADD #4,R2 ;SET UP WRITE CMMD TRAN2: JSR PC,GO ;GO INITIATE I/O MOV @#MTBRC,R2 CMPB (R1),#READ ;COME HERE AFTER INT ERR CHK BNE TRAN6 ;BRANCH IF NOT READ BIT #EOF,@#MTS ;IF EOF, SET INIT CNT IN RESIDUE BEQ TRAN6 MOV BRC,R2 TRAN6: ASR R2 ;CHECK IF ODD BYTES SHORT REC BCC TRAN3 ;BRANCH IF NOT MOV @#MTCMA,R5 ;PUT NULL IN NEXT BUFF POS CLRB (R5) INC R2 ;ROUND UP WORD COUNT TRAN3: BEQ .+6 ;BRANCH IF NO RESIDUE BIS #10000=CREMENTS OF 1K SECTORS ; RCSZ: CLR R0 ;R5 WILL CONTAIN THE NUMBER OF MOV #400,@#RCDCS ;SECTORS AVAILABLE RCSZ10: ADD #40>ERR!OFL!BEOT BNE ERROR RTS PC EOFIN: CLR @#STAT INC LEOF TST LEOF BEQ FILED SCOM REW .EXIT FILED: TST (SP)+ ?w Jz` C“`# 0 C B 7!~   p #`+ KP   w w @:a ͋,L wB ` 5 5 6   w w * w6  DAZTXw H- @D7v,> ,: 4,*w [,?w &7 w 7 77 B00,R0 ;UP 1K BCS RCSZ50 ;IF A CARRY, WE JUST OVERFLOWED MOV R0,@#RCDAR ;SELECT THIS DISK ADDRESS MOV #1,@#RCDCS ;WITH ACBR CLOSE ERROR: MOV @#STAT,-(SP) DEAD: MOV (PC)+,-(SP) .BYTE 77,1 IOT .EXIT GONE: CLR -(SP) BR DEAD LEOF: 0 0 DD`@a/ Ba+Aa B`A D@mE D p @B   w 0 , w )THE USERS HARDWARE CONFIGURATION. ; ;FORMAT:- ; 4 WORDS PER ENTRY (POSITION IMMATERIAL EXCEPT ; THAT THE ENTRY FOR THE SYSTEM DISK ; MUST BE FIRST) ; GENERAL FORM: ; ; WORD 1: DEVICE NAME (PACKED RADIX 50) ; WORD 2: CORE LOAD ADDRESS OR 0 ; WORD 3: INTERRUPT VECTOR ADDRESS ; WORD 4: RELATIVE DISK START BLOCK (BITS 15 - 6) ; NO. OF 16 WORD BLOCKS (BITS 5 - 0) ; ENTRY FOR SYSTEM DISK: ; (MUST BE IN FIRST 1024 BLOCKS) ; WORDS 1 - 3: AS ABOVE ; WORD 4: ADDR*0,R2 ;INSURE NEG WORD COUNT BIT #RLE,@#MTS ;CHECK IF LENGTH ERROR BEQ TRAN4 ;BRANCH IF NOT INCB ERRSW TRAN4: MOV R2,16(R0) ;RETURN RESIDUE WORD COUNT TRANX: TSTB ERRSW ;BRANCH IF NO ERRORS BEQ TRAN5 BIS #100000,12(R0) ;SET ERR BIT TRAN5: BR TRAN7 ;TAKE DONE EXIT ; ; READY1: MOV MT.NAM,-(SP) ;ISSUE ACTION DIAG - MOV #402,-(SP) ;DEVICE NOT READY IOT READY: BIT #SELR,@#MTS ;TEST IF DEVICE READY BEQ READY1 ;BRANCH IF NOT BIT #GAPSDN,@#MTRD BNE READYX BIT #TUR+RWS+SDWN,@#MTS , &$^ &NJ&e E]e( &^ & ݁ "u*$ N$ e^   ?X $ ht veaC$&pcF %$O "U%Ge@tf.  EeEv &&q$ d!{rP,& w %=w ,w $@, w w ww  :, 7mQST NON-EXISTANT ;ADDRESS, SO IT IS THE NUMBER OF BLOCKS RCSZ50: MOV #177777,R0 ;IF THERE ARE 65K BLOCKS, WE MUST RTS PR;COPYRIGHT:- DIGITAL EQUIPMENT CORP.,MAYNARD,MASS. ; 1971,1972 ; ;VERSION NO:- V07 ; ; .IFDF DVRRWD .TITLE DV.QT .TC%@`Գ Aa ,Ӌ(q%(  EUHQ̳ ({@&  Β ,^ 6^0a ͋,L TB ` % $w*< &TTB$W!"W!7 d-ESS OF LOCATION AFTER TABLE END ; (USED FOR SEARCH CONTROL) ;GENERATED AT SYSTEM BUILD TIME ;USED BY:- ; 1) .INIT ROUTINE TO DETERMINE WHEN & WHENCE TO ; LOAD A DRIVER REQUIRED BY THE USER ; 2) .RLSE ROUTINE TO CHECK CURRENT USAGE OF A ; RESIDENT DRIVER BEFORE RECLAIMING ; CORE IT OCCUPIES ; 3) KBD WAIT ROUTINE TO CHECK FOR I/O UNDERWAY .SBTTL ERROR CODE DEFINITIONS ;HERE STARTS THE MONITOR INITIALIZATION CODE ;FIRST WE DEFINE ERROR. BEQ READY1 READYX: RTS PC ;RETURN TO CALLER ; ; SPEC: JSR PC,INIT ;INIT CHECK DEVICE MOV 2(R0),R3 ;GET FUNC BLOCK ADDR MOVB (R3),R5 ;GET FUNC BYTE SUB #SPFST,R5 BMI TRAN5 ;BRANCH OUT IF NOT CMP #SPLST,R5 ;SUPPORTED FUNCTION BLO TRAN5 CMPB #3,1(R3) ;CHECK IF VALID FUNC BLOCK BHI ABORT ;ABORT IF NOT ASL R5 ADD PC,R5 ADD #SPECT-.,R5 JMP @R5 ;GO TO PROPER SP FUNC ROUTINE ; ; SPFST=1 SPLST=6 ; SPECT: BR OFFLIN BR WEOF BR RWND BR SKP BR BSP BR PARDEN BR TUSTAT];COPYRIGHT 1971, DIGITAL EQUIPMENT CORP., MAYNARD, MASS. ;VERSION NUMBER: V003A ; .TITLE RMON1 ;RESIDENT MONITOR VERSIO^ p HE  "װUCQ ` ( U (0 w &* 8 $$E e)U@_% % w  ww V, D  &4, C@AEPA&fw w /w `EIGHT RS11 DISKS CAN CONTROLLED BY RF11 CONTROLLER. ;EACH PLATTER CONTAINS: ; 1024. 256. WORD BLOCKS ; OR ; 4096. 64aAND MTBRC=172524 ;TM11 BYTE/RECORD COUNTER MTCMA=172526 ;TM11 CORE MEMORY ADDRESS MTD=172530 ;TM11 DATA BUFFER MTRD=172532bN 1 3 JULY 70 ; (REVISED 7 JULY TO ALLOCATE SYSTEM VECTORS 40-57 ; AND ASSOCIATED CHANGES) ; (REVISED 6 OCT TO SEGMENT FORc JU@2(   "Ő ea*ZT p Ő Ŋ& " E T (d6,Fڀw Lw   ` ,lE ` Z J ,ڰ w8^%w 71U1 CODES TO BE DISPLAYED ;WHEN THE INITIALIZATION FAILS CILERR=1 ;CILUS COMD PART HAS HIGH BYTE OF FIRST WORD NON ZERO SPCERR=2 ;NOT ENOUGH ROOM IN CORE CL3ERR=3 ;NO LINE WITH 3 FOUND CLCERR=4 ;CONFLICT BETWEEN CONFIG INFO AND CIL CONTENT DSZERR=5 ;BOOT'S BLOCK SIZE IS NOT 64 OR 256 CORERR=6 ;CORE DID NOT TIME OUT MRTERR=7 ;MRT FORMAT IS WRONG DX1ERR=10 ;FORMAT OF DX1 FILE IS WRONG SPEERR=11 ;SPECIAL EMT IN CONFIG UNKNOWN SQZERR=12 ;TOO MANY SUCCESSIVE MODULES ,9 SEQERR=13 ;SEQUENCE VERIFI2 ; ; ABORT: MOV R3,-(SP) ;ISSUE SP FUNC BLOCK BAD ABORT MOV #1433,-(SP) ;WITH ADDR OF SP FUNC BLOCK IOT ; OFFLIN: JSR PC,EOFCK ;WRITE EOF IF NECESSARY CLRB (R1) ;SET LAST CMMD=OFFLINE MOVB #1,.MTC ;ISSUE DISABLED RWV MOV .MTC,@#MTC ;FOR REAL BR TUSTAT ;GET STAT AND EXIT RWND: JSR PC,EOFCK ;ISSUE WRITE EOF IF NECESSARY JSR PC,RWNDC ;ISSUE DISABLED RWD BR TUSTAT ;GET STATUS AND EXIT RWNDC: MOVB #RWD,(R1) ;SET LAST CMMD=RWD .IFDF DVRRWD BR RWNDX ;BYPASS REWIND .ENDC BIT #BOm w p <@EE%A! װ4ME֊EEU%p!Ed  Qbep "nU,*ۮ7w Dŝŝ<,PEw$rt wft!,v oSS OF DISK SEGMENT. ; ; RFSZ: CLR R5 ;SET PLATTER COUNT. MOV #400,@#RFDCS ;ENSURE DISK CLEAR. RFSZ10: MOV R5,@#RFDAE ;Rp ; ERR=100000 DEN=60000 POWR=10000 PAR=4000 UNIT=3400 CUR=200 INT=100 ADEX=60 CMMD=16 GOB=1 ; ;MTRD BIT ; GAPSDq S.XIT ;START OF COMMON EXIT .WORD S.RSAV ;START OF REGISTER SAVE .WORD S.RRES ;START OF REGISTER RESTORE .WORD S.CDBrװ/ŀ Q 5lH!Oc Jp   ŌW  IװAa Q v(  s w w Jw @e:%ĕ ,t72 Ԩw Bw .w,e` w ;w ĝw tEFERENCE THIS DISK# BIT #4000,@#RFDCS ;IS DISK THERE? BNE RFSZ20 ;NO..DISK NOT THERE. CMP (R5)+,(R5)+ ;ADD 1 TO UNIT# 5CTION ERROR CSQERR=14 ;DISK BLOCKS IN CIL ARE NOT ASCENDING KBCERR=15 ;INDEX MODULE DOES NOT CONTAIN KEYBOARD COMMAND MODERR=16 ;MODULE ERROR ESSENTIAL MODULE NOT FOUND IN CIL SYSERR=17 .PAGE ;SYMBOL INTERFACE DEFINITIONS WITH : ;1 THE BOOTSTRAP PARAMETER BLOCK ;2 POSITIONS IN CILLINE OF INTEREST TO US ;3 POSITIONS OF INTEREST OF COMD INFO IN CIL INDEX ;ALL INFO IS RELATIVE TO LOCATION 0 OF THE SECTION CONSIDERED ;FOR CIL INFO IS THIS THE 1 BYTE POSITION OF A BINARY LINE .SBTTL SYMBOL6T+RWS,@#MTS ;IS IT REWOUND BNE RWNDX ;YES, BRANCH MOV #16,R2 ;ISSUE RWD JMP GO RWNDX: RTS PC ; EOFCK: CMPB (R1),#WRITE ;IF LAST CMMD WAS WRITE BEQ EOFCK1 ;BRANCH RTS PC ;ELSE RETURN EOFCK1: MOV #6,R2 ;SET CMMD=WRITE EOF MOV (SP)+,INTRET ;SET INT RET ADDR JMP GO1 ;GO EXECUTE ; WEOF: MOVB #EOFM,(R1) ;SET LAST CMMD JSR PC,EOFCK1 ;GO EXECUTE WRITE EOF BR TUSTAT ;AT INT RET, GET STAT AND EXIT ; ; PARDEN: BIT #CH79,@#MTS ;IF 9 TRACK TAPE BEQ TUSTAT ;BRANCH (IGNORE NEW SETTINGS}7$# #w S,Zr#5##g"b"9,V  <ӄ !%&, &~ R5 ;GET PLATTER COUNT. ASR R5 MOV R5,R3 ;SET COUNT FOR LOOP. MOV #4096.,R1 ;# OF DOSS-SIZED WORD BLKS. RFSZ25: CLR R ;SPECIAL STRUCTURE = MAG TAPE .BYTE 20 ;BUFFER SIZE = 512 BYTES .BYTE INTJ-MT ;INTERRUPT HANDLER .BYTE 240 ;PRIO FO; SYSTEM VECTOR TABLE (SVT) ; THIS TABLE CONTAINS SYSTEM CONSTANTS ; AND POINTERS TO VARIOUS MAJOR SYSTEM AREAS, ; WHERWORD 130 ;I.V. ADDRESS .WORD 0 ;DISK ADDRESS DDL.ND: .END MAGNETIC TAPE: .Re N @ e0w & ,  ",7~"r"n"E ,݃0 ;INIT BLOCK COUNT TST R5 ;ANY RF DISKS? BEQ NODISK ;NO - ERROR RFSZ30: ADD R1,R0 ;YES - COUNT THE NUMBER OF BLOCKS R INTERRUPT SERVICE .BYTE 0 ;NO OPEN ENTRY .BYTE TRANS-MT ;TRANSFER ENTRY .BYTE CLOSJ-MT ;CLOSE ENTRY .BYTE SPECJ-MTEIC INERFACE TO BOOT PARAMETERS B16=16 B0=0 B12=12 B14=14 WCODE=3 ;THIS IS A WRITE OPCODE FOR THE DISK RCODE=5 ;AND THIS IS THE READ CODE B10=10 ;THIS IS THE OFFSET IN THE PARAMATER BLOCK ;WHRER R1 POINTS ON ENTRY BOTINT=B10 BOTSYS=B16-B10 ;RELATIVE TO R1 OFFSET START BLOCK# OF CIL BOTMOD=B0-B10 ;MODULE SECTION START IN CIL BOTSIZ=B10-B10 ;SIZE OF BOOT BLOCKS BOTLOC=B12-B10 ;START ADDRESS OF BOOT BOTEPA=B14-B10 ;EXTERNAL PAGE ADDRESS OF BOOT DEVICE ;CIL DEFINITIONS .SBTF) MOV 4(R3),R5 ;GET NEW DEN/PAR BIC #176376,R5 ;CLR EXTRA BITS ASRB R5 ;SET INTO PROPER POSITION RORB R5 RORB R5 ROR R5 ROR R5 ROR R5 MOVB R5,10(R1) ;SET NEW DEN/PAR BR TUSTAT ; SKP: MOVB #SKPR,(R1) ;SET LAST CMMD=SKP MOV #8.,R2 ;SET CMMD BR SKPBSP ;GO SET COUNT AND EXEC BSP: MOVB #BSPR,(R1) ;SET LAST CMMD=BSP MOV #10.,R2 ;SET CMMD BIT #BOT+RWS,@#MTS ;TEST IF AT BOT BEQ SKPBSP ;BRANCH IF NOT MOV 4(R3),6(R3) ;REJECT CMMD RETURN REC COUNT BR TUSTAT ;SET STATUS AND K DENSITY ; ;THE DECPACK IS AVAILABLE IN TWO MODELS: ; RK02= 600,000 WORDS PER DRIVE ; RK03=1,200,000 WORDS PER DRIVE ; ; OPNFLG: .BYTE 0,0,0,0,0,0,0,0 ;SET BY OPEN ROUTINE,CLEARED BY CLOSE LCMMD: .BYTE -1,-1,-1,-1,-1,-1,-1,-1, ;1 BYTE FOR EABL MUS,OSW,PSA,DSA,RSA,WRA,DAT,TOD .GLOBL UIC,PGN,MRT,DDL,SSP,ENDM,MRT.,DDL. .GLOBL BFS,BFE,BF.STR,BF.END,WTL,KBA,MSB,MSB.; COPYRIGHT DIGITAL EQUIPMENT CORPORATION 1972 ; MAYNARD,MASSACHUSETTS. ; .TITLE CMDEVL .GLOBL CMDEVL .IDENT /ED""""""" """""""""""""""""""""""""""""""""""""""""""""""""DDDDDDD@DDDADDB B B CrkQmq`TkQ^$Dgfffffffff""""""""""""""""""""""""""""""""""""""""""""""a ͋,L  B8w&B ` % & }&*C$$Βe E%>k  aʋaՀ$ & * P$ ΋Ί   ΋   d Ί  ( 1'u  Q$f $5@ U C΋ Cb M΋U@ U &  B" .&0 M &0 & M 0 &ITL SYMBOLS INTERFACING WITH CIL INDEX CL20=20 CL7=7 CL10=10 CL16=16 CL22=22 CILL11=CL20-CL7 ;CIL LINE BYTE 20 # OF ENTRIES IN CIL CILL13=CL22-CL7 ;SIZE OF INDEX CILL16=CL16-CL10 ;SIZE OF CIL BLOCKS CI24=24 CI22=22 CI20=20 CI12=12 CI2=2 CIL20=CI22-CI2 ;FIRST WORD TITLE RADIX 50 CIL22=CI24-CI2 ;SECOND WORD OF TITLE IN RADIX50 CIL16=CI20-CI2 ;DISK ADDRESS OF CIL ENTRY .SBTTL SYMBOLS INTERFACING TO TMON COMMSK=177 CIL14=CI12-CI2 ;BYTE SIZE OF MODULE .PAGE .SBTTLJEXIT SKPBSP: MOV 4(R3),BRC ;SET RECORD COUNT NEG BRC JSR PC,GO ;GO EXECUTE CMMD MOV @#MTBRC,6(R3) ;SET RESIDUE REC COUNT NEG 6(R3) ; TUSTAT: MOVB 10(R1),R2 ;GET DEN/PAR MOVB (R1),R1 ;GET LAST CMMD SWAB R2 BIS R2,R1 ;SET DEN AND PAR MOV @#MTS,R2 BIT #CRE+PAE+RLE,R2 ;TEST STATUS FOR ERROR BEQ STAT1 ;BRANCH IF NONE BIS #100000,R1 ;SET ERR BIT STAT1: BIT #EOT,R2 ;TEST IF EOT BEQ STAT2 ;BRANCH IF NOT BIS #1000,R1 ;SET EOT BIT STAT2: BIT #BOT+RWS,R2 ;TEST IF AT BOT BEQ STAT? BNE SW.ER2 ;YES..CONTEXT ERROR. CKCN80: .SBTTL SET MONITOR NAME IF NONE GIVADY? BPL RKSZ25 ;NO..KEEP WAITING. MOV R1,@#RKDA ;SELECT ARG DISK. RKSZ30: MOV #RKBA,R3 ;BUS ADDRESS. CLR @R3 MOV #-  p ~`B<w<W  W w ZMODERR ^wdBe &Bm fBtCORE RESIDENT SWITCH (BIT 0 = 1) ; ; 3) ROUTINE IS NOT AVAILABLE: ; ; 000001 ; ;GENERATED AT SYSTEM BUILD TO SHOW COREE PRINTED. ; ;THE SYNTAX IS CHECKED FIRST( VIA CSX). IF OK THE DATASETS ;ARE BUILT VIA CSM. IF NULL DATASETS OCCUR COMPLAINEN. ; ; IF THE FIRST WORD OF THE NAME IS 0 NO NAME ; WAS GIVEN IN THE COMMAND STRING. INSERT THE MONITOR ; DEFAULT NAME IN1,-(R3) ;WORD COUNT. MOV #2003,-(R3) ;CONTROL STATUS.GO!FORMAT!WRITE RKSZ40: BIT #100200,@R3 ;ERROR OR CONTROL READY? BEQcB w z $"  eW$ B$U a(~ ~qw DX1ERR S M MACRO DEFINITIONS ;NOW DEFINE ERROR MACROS ;FIRST A COMMON MACRO .MACRO COMPAR A,ERR,?LABEL A ;CALLER PROVIDES THE TEST BEQ LABEL ;OKAY NO PROBLEM MOV #ERR,R0 ;GET CODE TO DISPLAY HALT LABEL: .ENDM COMPAR .MACRO WERRNE X,Y,ERR COMPAR ,ERR .ENDM WERRNE .MACRO BERRNE X,Y,ERR COMPAR ,ERR .ENDM BERRNE .MACRO TSTBEQ X,ERR COMPAR ,ERR .ENDM TSTBEQ .MACRO ERROR X JSR R5,ASCIM ;CALL MESSAGE PRINTER MESSZ ^\/X/<15><12>\ ;ERROR MESSAGE N3 ;BRANCH IF NOT BIS #400,R1 ;SET BOT BIT STAT3: BIT #EOF,R2 ;TEST IF EOF BEQ STAT4 ;BRANCH IF NOT BIS #200,R1 ;SET EOF BIT STAT4: BIC #177753,R2 ;CLEAR ALL BUT WRL AND 79CH BITS SWAB R2 BIS R2,R1 ;SET WRL AND 7,9 TRACK MOV R1,2(R3) ;RETURN STATUS BR COMJ ;EXIT ; ; ; CLOSE: JSR PC,INIT ;INIT CHECK ON DEVICE CLRB -10(R1) ;CLEAR OPEN FLAG JSR PC,EOFCK ;IF LAST CMMD WAS WRITE, WRITE 3 EOFS JSR PC,EOFCK JSR PC,EOFCK .IFDF DVRRWD ; ; ISSUE 2 BSPS INSTEAD OF RWD IF OUTPUWARE ERROR(FATAL). ; BIT #100,-(R3) BEQ RKSZ90 ;DISK ERROR DURING FORMATTING. RKSZ50: MOV #1,@R2 ;RESET CONTROLLER AGApf`>m(F"tn :TVumN zbe  ` wSITUATION) ; 2) EMT HANDLER: ; USED AS A DESPATCH TABLE TO RESIDENT ; ROUTINES OR TO PROVIDE ARGUMENTS FOR CALL ; TO STHIS ROUTINE SETS THE FOLLOWIN PARAMETERS: ; 1. SWITCH INDICATES WHAT SWITCHES WERE SET. ; 2. BLOCKS 0 OR VALUE SPECIFIED BY 3-WORD NAME. MOV (R2)+,(R1)+ SETN10: MOV (R2)+,(R1)+ SETN20: RTS PC ;EXIT. ; ; SETN30: CMP (R1)+,(R1)+ ;POP TO EXTENSIN RKSZ55: TSTB @R2 ;WAIT FOR CONTROLLER. BPL RKSZ55 RKSZ60: RTS PC ; RKSZ90: MOV #FMTERR,R0 ;HARDWARE ERROR WHILE FO 0 7`_ _ w ww7w h  2 <R l2 >P WAP AREA MANAGER. ; (NON-EXISTENT ROUTINES GIVE ERROR DIAGNOSTIC) ; 3) SWAP AREA MANAGER: ; INFO RECEIVED FROM EMT HANDLQ.EVEN JMP FATALM ;GO TO FATAL MESSAGE PRINTER .ENDM ERROR .MACRO MESSZ TXT .NLIST .ASCIZ TXT .LIST .ENDM MESSZ .PAGE .MACRO SBLINE ?LAB LAB: CMPB (R2)+,#1 ; A 1 BYTE STARTS IT BNE LAB ;SO LOOK FURTHER TSTBEQ <(R2)+>,CILERR ;A ZERO SHOULD FOLLOW IT!!! .ENDM SBLINE .MACRO UPMOVE FROM,TO,LENGTH MOV FROM,R0 ;GET SOURCE ADDRESS MOV TO,R1 ;AND TARGET ADDRESS MOV R1,R2 ;COPY TARGET SUB LENGTH,R2 ;TO COMPUTE LAST ADDRESS ADD LENGTH,R0 ;POINT TO TOP JSR PC,MOVEHI ;FORRT ; OR SKIP TO END OF FILE IF INPUT ; CMPB (R1),#WRITE ;IF LAST CMMD WAS WRITE BNE CLOSE1 MOV #10.,R2 ;ISSUE 2 BSPS MOV #-1,BRC MOVB #BSPR,(R1) ;THIS IS SOLELY FOR INT ERR CHK JSR PC,GO MOV #10.,R2 BR CLOSE2 ; CLOSE1: BIT #EOF,@#MTS ;SKIP TO EOF UNLESS ALREADY THERE BNE CLOSE3 MOV #8.,R2 CLR BRC MOVB #SKPR,(R1) CLOSE2: JSR PC,GO .ENDC CLOSE3: JSR PC,RWNDC ;ISSUE DISABLED RWD COMJ: JMP SIMCOM ; ; ; ; INTH: MOV @#44,-(SP) ;SAVE REGS JSR R5,@(SP)+ MOV MT,R0 ;GET DDfDDa m@ f& U"  ee x&z % w CLCERR  w % CN.B. COPY OF BASIC TABLE (PERMANENT RESIDENT MONITOR ONLY) ; WILL BE HELD ON DISK FOR RESTORATION ; OF CORE IMAGE AT PROGR.GET SEMANTICS. MOVB #'?,(R2)+ ;NO..ECHO LINE UP TO ERROR CHAR. MOVB #CR,@R2 ;LINE TERMINATOR. MOV #CMDTXT,R0 ;SET FOR ; ;WORD0: DEVICE NAME IN RADIX 50. ;WORD1: PTR TO DEVICE BOOTSTRAP ;WORD2: PTR TO DISK SIZE ROUTINE. ;WORD3: DEFAULT BLK%"U%Getf.$^ &&e E]e( &^ & ݁ "ucaD evab w 8   Fm  m rmBMg  AM TERMINATION) .GLOBL MRT.,EMT.,SAM.,M.IOMX,M.EMAX ; SECTION A - I/O CALLS .GTYPING. JSR PC,TTYLIN BR CMDER1 ;PRINT ERROR. ;THE SYNTAX IS CORRECT. SET UP TU MOVE UPWARDS .ENDM UPMOVE .MACRO SETABS REG,LOC MOV PC,REG ;MAKE IT ABSOLUTE ADD #LOC-.,REG ;BY SUBTRACTING POSHTION FACTOR .ENDM SETABS .MACRO LOW BASE,OFFS,RESULT MOV BASE,RESULT ;GET START ADDRES SUB OFFS,RESULT ;GET LOW ADDRES .ENDM LOW .MACRO RSLOT SLOTAD,COREAD ;CONVDERT TO BOOT FORMAT???? .ENDM RSLOT .PAGE .SBTTL INTERNAL SYMBOL DEFINITIONS ;SYMBOL DEFINITIOS STKLEN=100 ;THIS SEEMS TOO LARGE NO INTERRUPTS!! LSTLEN=RM.END-RM5LST ;LENGTH OF CODE TO MOVE MOVB ADDR MOV LASTAT,R1 ;GET LCMMD VECTOR ADDR MOV 2(R0),R3 ;GET SP FNC BLOCK ADDR MOV #MTC,R5 ;ADDR OF CMMD REG BIC #100,(R5) ;DISABLE DEVICE INTERRUPT MOV @#MTS,R2 ;GET STATUS OF DEVICE INCB INTENB ;SET INT FLAG BIT #ILC+NXM,R2 ;CHECK ILLEGAL CMMD, NONEXIST CORE BEQ INT1 ;BRANCH IF NOT INTF: MOV R2,-(SP) ;DISPLAY STATUS AND DIAGNOSE MOV #1432,-(SP) ;FATAL ERROR-MAG TAPE IOT ;ABORT ; INT1: TSTB TCMMD ;CHECK IF THIS WAS A RETRY BEQ INT3 ;BRANCH IF NOT BPL INT2 ;BRANCH IF WA .WORD EMT. ;.WAIT (IN EMT HANDLER) 1 .WORD RWN ;.WRITE 2 .WORD RWR ;.RLWR (NYA) 3 .WORD RWN ;.READ 4 .WORD RWR ; #OUTFIL,@R1 ;FILE BLOCK. CMDV15: JSR PC,CSMCAL ;GET SEMANTIC OF OUTPUT SET. MOV (SP)+,R2 BIT #4,R2 ;WAS DEVICE SPECIFIEE FOR FINDING DENSITY. .WORD 256. ;BLK SIZE .WORD 220 ;INTERRUPT VECTOR .WORD 5 ;INTERLEAVE FACTOR. DPDISK: .RADwReO$X  c ,J Mc! K C` J5 q V&*8 TERR hw.5 wN Xg N TI w"  W% w KBCERR @wB%.RLRD (NYA) 5 .WORD INR ;.INIT 6 .WORD RLS ;.RLSE 7 .WORD TRA ;.TRAN 10 .WORD BLO ;.BLOCK (NYA) 11 .WORD SPC ;.SPD? BNE CMDER2 ;NO... NO DEFAULTS,COMPLAIN. TST R2 ;IF 0, TOO MANY DATASETS. BEQ CMDER3 DEC R2 ;IF NOT 0, TOO MANY 50 /DP/ .WORD RPSTRT .WORD RPSZ .WORD 256. .WORD 0 .WORD 5 ;INTERLEAVE FACTOR. DFDISK: .RAD50 /DF/ .WORD RFYDSIZ=6 ;SIZE IN BYTES ENTRY IN REDUCED CIL TIMOUT=4 ;TIME OUT INTERRUPT VECTOR PDWNV=24 ;POWER DOWN VECTOR CILSZ0=7000 ;SIZE ORIGINALLY READ IN FROM CIL INDEX KBILOW=60 ;LOWER ALL ARE MSB. FILLERS KBIHIG=76 ;HIGHER ALL ARE OF THE SAME TYPE MRTBCL=35*2+2 ;IT IS EMT 35 MRTCOP=2002 ;LAST ADDRESS OF MRT COPY +2 IN SAVE MODULE PRI7=340 PRI6=300 ;PRIORITY LEVEL FOR THE CLOCK KBPRI=200 ;KEY BOARD RUNS ON PRIRITY LEVEL 4 PS=177776 ;ADDRESS OF PROGRAM STATUS .SBTTL EXTERNAL PAGE ADDRESSESZS NOT BSP OF RETRY CLR R2 BISB TCMMD,R2 ;GET CMMD NEGB TCMMD ;SET-NOT BSP JMP GOA ;GO TRY AGAIN ; INT2: BIT #BGL+BTE+CRE+PAE,R2;TEST IF ERROR THIS TIME BEQ INT7 ;BRANCH IF NOT INC RETRY BNE INT6 ;BRANCH IF TO TRY AGAIN BIT #BGL,R2 ;IF ERR=BUS GRANT LATE BNE INTF ;IS FATAL INCB ERRSW ;SET ERROR FLAG BIT #4,(R5) ;IF WRITE OR WEOF, ISSUE ACTION DIAG BEQ INT7 MOV R2,-(SP) MOV #412,-(SP) IOT BR INT7 ;GO TO SPECIFIC ROUTINE ; INT3: BIT #BGL+BTE+PAE+CRE,R2;CHECK IF ERR NPUT DATASET. MOV #INPFIL,@R1 ;INPUT FILE BLOCK MOV #INPLNK,-(R1) ;INPUT LINK BLOCK. BR CMDV15 ; ;ERRORS IN COMMAND LICSTRT .WORD RCSZ .WORD 64. .WORD 130 ;INTERRUPT VECTOR .WORD 5 ;INTERLEAVE FACTOR. ; ; ; ESCAPE: .WORD 0 ;ESCA A@W  @`ee$ɋ(0,e 0 ( "&* e ( &*  " EN\m | ep.e P eM6:v <2  L  24 .WORD 1,1,1 ;(SPARES) 25-7 M.IOMX=27 ;MAX. I/O EMT CODES ; SECTION B - CALLS NE. ; CMDER1: MOV #SYNERR,R0 ;SYNTAX ERROR. BR SW.ER0 CMDER2: MOV #DEVERR,R0 ;DEVICE SPECIFICATION ERROR. BR SW.ER0 CMPE WORD. .END CTOR. DPDISK: .RAD50 /DP/ .WORD RPSTRT .WORD RPSZ .WORc lU%M$ d!}w5pqF  A> BB`8$21 ] OF DEVICES ;EXTERNAL PAGE ADDRESSES NEEDED TO TEST IF STUFF IS THERE RKDA=177412 ;DK DRIVES RKDS=177400 ;STATUS TO FIND DENSITY .IIF NDF,DDCDAR, DFEPA=177476 .IIF DF,DDCDAR, DFEPA=DDCDAR+10 DCEPA=165316 DPEPA=177740 MTEPA=172520 QTEPA=172520 ;A SPECIAL MAGTAPE DRIVER DTEPA=177342 CREPA=177160 LPEPA=177514 PPEPA=177554 PREPA=177550 CPEPA=172540 ;PROGRAMMABLE CLOCK CLEPA=177546 ;LINE FREQUENCY CLOCK KBEPA=177564 .SBTTL KEYBOARD EXTERNAL PAGE ADDRESSES TPS=177564 ;PRINTER ST^OR BEQ INT7 ;BRANCH IF NOT CMPB #SKPR,(R1) ;BRANCH IF SKIP OR BSP BEQ INT4 CMPB #BSPR,(R1) BEQ INT4 MOV TRYCNT,RETRY ;SET RETRY COUNT BIT #12,(R5) ;IF CMMD IS WRITE BNE INT6 BIS #10,(R5) ;TRY WRITE WITH LONG GAP INT6: MOVB (R5),TCMMD ;SAVE CMMD MOVB #10.,R2 ;SET UP BSP MOV #-1,@#MTBRC ;COUNT OF 1 JMP GO2 ;GO EXECUTE ; INT4: BIT #EOF+BOT,R2 ;IF EOF OR BOT BNE INT7 ;SKIP OR BSP IS DONE TST @#MTBRC ;IF COUNT EXHAUSTED BEQ INT7 ;IS DONE MOVB (R5),R2 ;ELSE SET UP CMMD  ;INTERRUPT VECTOR .WORD 5 ;INTERLEAVE FACTOR. DCDISK: .RAD50 /DC/ .WORD RCSTRT .WORD RCSZ .WORD 64. .WORD 210 Xt&d& " 1ww @g w ,eew wl  #100,-(R3) BEQ RKSZ90 ;DISK ERROR DURING FORMATTING. RKSZ50: MOV #1,@R2 ;RESET CONTROLLER AGAIN RD 1,1,1 ;(SPARES) 35-7 ; SECTION C - OTHER MONITOR SERVICES ; .GLOBL GUT,CVT,FOP,FCR,FCL .GLOBL LUK,LBA,GMA,CBA,CKX,DL!LZED AND THE CIL DATASET TO BE THE ; FIRST AND ONLY FILE IN UIC [1,1]. IF THE /ZE ; SWITCH IS NOT USED, THE FILE STRU" ;INTERRUPT VECTOR .WORD 5 ;INTERLEAVE FACTOR. ; ; ; ESCAPE: .WORD 0 ;ESCAPE WORD. #!B (Z 5t_v͋UEw CIL IS WRONG CHECK ERROR LIST REBUILD CIL, dw AFTER CO$1 W W"Q$5@L0,e 0 ~&*  |e  q&* +$$D` R&aATUS TPB=177566 ;PRINTER BUFFER TKS=177560 ;READER STATUS TKB=177562 ;READER BUFFER .PAGE .SBTTL DEBUGGING FEATURE SWITCH ;THE FEATURE SWITCH BELOW MUST BE ON FOR ;DEBUGGING AS DOS JOB .IF NDF,FTDEBUG FTDEBUG=0 .MACRO FLAG .ENDM .IFF .IF NE,FTDEBUG TRACE=100 .MACRO FLAG MOV R0,-(SP) ;SAVE R0 STOP \TRACE TRACE=TRACE+2 MOV (SP)+,R0 ;GET THE REGISTER BACK .ENDM FLAG .ENDC .ENDC .MACRO STOP X MOV #X,R0 ;CODE TO DISPLAY HALT ;WHEN STOOPPED .ENDM STOP .P JMP GO2 ;CONTINUE SKIP OR BSP ; INT7: CLRB TCMMD ;CLEAR RETRY INDICATORS CLRB RETRY MOV INTRET,PC ;GO TO SPECIFIC ROUTINE ; ; .END - ! E?U&f&G i$ \}A$@ A4r\!\!&t*t&t*t:sroCyy.C`3K  * (" 5@E  U (  Xte # .^ 0 /WORD LUK ;FILE KOOK-UP 46 .WORD LBA ;FILE BLOCK ALLOC 47 .WORD GMA ;FILE GET BIT-MAP 50 .WORD CBA ;FILE CONTIG ALLOC 510S FOR THE CIL ABOUT ; TO BE CREATED. WITH THE NS SWITCH IT IS USED TO ; MAKE SURE THE CIL DOES NOT EXCEED THE # OF BL1d!B E %5 : 3B5-5* & # WWMU%Dff2z/N`Vq+fKqf@BEy/D' &&SNQK-|KKoTst~~ 35 E"@ `%͋͊G $ d!za ͋,L 4 .WORD CKX ;FILE CHECK ACCESS 52 .WORD DLN ;FILE DELETE LINKED 53 .WORD DCN ;FILE DELETE CONTIG 54 .WORD AP2 ;FILE APPeAGE ;BEGINNING OF MONITOR SETUP AND INITIALIZATION ;ON ENTRY REGISTERS ARE SET AS FOLLOWS ; ; R1 -POINTER TO BOOTSTRAP PARAMETER BLOCK+10 ; R4 -POINTER TO BOOTSTRAP I/O ROUTINE ; R0,R2,R3,R5 -AVAILABLE FOR GENERAL USE ; ;START TO ALLOCATE CORE BY: ;1 ASSIGNING STKLEN BYTES BELOW THE BOOT ;2 CLAIMING CODE SPACE BELOW THE STACK SPACE ;3 CLAIMING CIL INDEX AREA BELOW THE CODE AREA ;4 CHECK CIL AREA DOES NOT OVERFLOW IN CODE AREA ;5 FREE THE CORE LAY-OUT CONTROL DATA .SBTTL ENTRY FROM 9END PART II 55 .WORD CSX ;COMMAMD SYNTAX ANALYSIS 56 .WORD CSM ;COMMAND STRING MANIPUL. 57 .WORD XIT ;.EXIT PROCESSOR 6:; STRUCTURE.IF NS IS USED THE FOLLOWING MUST BE TRUE: ; A) THE VALUE GIVEN MUST BE 64., 256., ; OR ; B) THE VALUE GI %ς d   )   )5   %U%fD` N`5 &  5 <0f 8f< P3"<&`T*8.`m2= .TITLE RCBOOT ; ; DDC DISK BOOTSTRAP ; ; THIS IS A MODIFIED VERSION OF RFBOOT, SET UP FOR THE ; GULF DDC DISK ; ; CREA>0 .WORD LDR ;PROGRAM LOADER 61 .WORD LD2 ; - " - ,PT 2 62 .WORD MTO ;SEQ. MAGTAPE OPEN 63 .WORD 1,1,1,1 ;(SPARE) 64?VEN MUST MATCH THE ONE IN THE ; LICIL(SAME VALUE FOR CILUS/SYSLD REQUIRED). ; ; SWEVAL: MOV #SWITCH,R4 MOV R4,-(SP)@,?!=5@- 8 BBUBU8   * 0 &M  $^ "U%GA06:,>B0 FM]&P+$& ?08-02  rG TUvwxBTED ON MAY 14, 1973 BY DAVE MCMILLEN ; R0=%0 R1=%1 R2=%2 R3=%3 ;HARDWARE REGISTERS R4=%4 ;R5 ;SP PC=%7 ; CLEAR=400C-67 M.EMAX=67 ;MAX. EMT CODES (RE-ASSIGN IF EXTENDED) ; .EOT D ;SAVE POINTER. CLR (R4)+ ; SWITCH. CLR (R4)+ ; BLOCKS CLR (R4)+ ; NS.SIZ CLR (R4)+ ; NS.FB MOV (SP)+,R4 ;RESTORiBOOT SAVE BOOT DATA ;THERE ARE TWO POSSIBLE ENTRIES IN THE INITIALIZATION CODE ;ENTRY 1 IS AT LABEL MRT. ,HERE WE COME WHEN THE MONITOR HAS ; BEEN LOADED FOR THE FIRST TIME OR WHEN THE MONITOR ; CIL HAS BEEN MOVED AND REHOOKED TO THE MONLIB ; .SYS FILE ;ENTRY 2 IS AT LABEL HOKIT HERE CONTROL GETS TRANSFERRED WHEN ; THE MONITOR IS LOADED FOR AN INITIALIZED CIL ;--------AN INITIALIZED CIL HAS BEEN MODIFIED ON THE FIRST INITIALIZATION RUN ; ;THE VARIABLE INIV FLAGS THE STATE AT WHICH WE ARE IE PTR. MOV #OUTSW,R0 ;OUTPUT DATASET SWITCHES. SWEV10: MOV @R0,R2 ;#OF WORDS IN SW. BEQ CKCN ;NO. MORE SWITCHES ASL RJe( &^ & ݁ "u$ d!|a ͋,L Kv*}(vH (FS8 HHq菸`^R}p!!fyXaTITIDASABEKIMOASDUCOREWAECODMETEENEOPRSTOWLDE TO MOVE MOV BEGIN,R1 ;GET START OF DESTINATION MOV R1,R4 ;SAVE FOR TRANSFER MOVE: MOV (R0)+,(R1)+ ;MOVE CODE TO HIGH MD THEIR CURRENT ; LOCATION ;FORMAT:- ; 4 WORDS PER ENTRY (POSITION IMMATERIAL EXCEPT ; THAT THE ENTRY FOR THE SYSTEM DISN2 ;CONVERT TO BYTES ADD R0,R2 ;POINT TO SW. NAME CMP @R2,#"ZE ;ZERO? BEQ SW.ZE CMP @R2,#"HO ;/HOOK? BEQ SW.HO CMODnB ` % Z$7* &#LU%&& & * A<(|,M && =Pk2Eff `T`mxMdKPL>$ Xd!Tyb DqF & QCORE CMP R0,#END-START ;CHECK FOR END OF MOVE BNE MOVE ;LOOP UNTIL END OF CODE MOV R4,PC ;THEN TRANSFER TO BOOT INIRK ; MUST BE FIRST) ; GENERAL FORM: ; ; WORD 1: DEVICE NAME (PACKED RADIX 50) ; WORD 2: CORE LOAD ADDRESS OR 0 ; WORDSP @R2,#"BO ;/BOOT? BEQ SW.BO CMP @R2,#"BL ;/BLOCKS:NNNNN ? BEQ SW.BL CMP @R2,#"NS ;/NS? BEQ SW.NS CMP @R2,#"FO ;T ,+   e  *euF!%"U%$Gef. Dd6&mINITIALIZING ;WHEN: ;INIV = -1 WHEN THE CIL IS REFERENCED FIRST ; 0 ON ALL SUBSEQUENT CALLS ;TDATE IS 1 WHEN TMON CALLED THE INITIALIZER ; 0 WHEN A HARDWARE READIN WAS MADE ;THE DECISION WHETHER TMON CALLED RMON5 DEPENDS UPON THE CODE ;ENTRY ,AS TMON STARTS THE CODE WITH AN OFFSET OF 2 SO FIRST ;INSTRUCTION SHOULD BE A BRANCH-------------------------------- MRT.: RM.005: BR HWRDIN ;THIS SHOULD BE A BRANCH ; A HARDWARE READIN TMONST: CLR TDATE ;TMON STARTED US AND LEFT THE DATYU%fN8W)C$ N! eeH!    Z%D RC,e <[te cZM MJ f& NJ    A/& Ne %%d %i %U%%t[RESS BOOT: MOV EXTRPG,R0 ;GET EXTERNAL PAGE ADDRESS MOV #CLEAR,(R0) ;CLEAR OUT RF CONTROL ADD #10,R0 ;ADD DEFLECTION C\ SYSTEM DISK: ; (MUST BE IN FIRST 1024 BLOCKS) ; WORDS 1 - 3: AS ABOVE ; WORD 4: ADDRESS OF LOCA]DIRECT COMPARE, FOLLOWED BY ; A 'BEQ' DISPATCH). ; MOV #UNKN,R0 ;UNKNOWN SWITCH ERROR. SW.ER0: JMP ERROR1 ;ERROR ROUTINE^$B  D .M $^ &&e E]e( &^ &P _ ̋%$)&wE eAaW$  v  @W" gE  %  <Ub`LR (R0) ;CLEAR EXT. ADDRESS MOV (R1)+,-(R0) ;SET START BLOCK BOOT1: MOV (R1)+,-(R0) ;SET MEMORY ADDRESS MOV (R1)+,-(R0aTION AFTER TABLE END ; (USED FOR SEARCH CONTROL) ;GENERATED AT SYSTEM BUILD TIME ;USED BY:- ; 1) .INIT ROUTINE TO DETEb SW.ER1: MOV #SWER,R0 ;SWITCH ERROR BR SW.ER0 SW.ER2: MOV #SWCNER,R0 BR SW.ER0 c݁ "uL$ d!ja ͋,L wB ` 5 5 dt(*$^ pn7 A@W  @`, ze& Μe  wl & $e(qE INC TDATE ;SO FLAG IT FOR LATER BR INISET ;INIV SET HWRDIN: CLR TDATE ;CLEAR THE TMON FLAG INISET: MOV #PRI7,@#PS ;NO MORE INTERRUPTS MOV R4,BOOTIO ;I/O PART OF BOOT MOV R1,BOTPAR ;PARAMETER PART OF BOOT +BOTINT .SBTTL SET SVT ENTRIES SCW AND BAT ;******************************************************: CLR SCW ;NO CLOCK DEFAULT CLR BAT ;NO LOGICAL ASSIGNMENTS YET ;***********************************************************: .SBTTL RESERVE CORE FOR STACK AND HIGH CODE MOV BOTLOm &^ %&^ f (,^ %Cf e 3  4 A& NjW IT IS -WORD COUNT MOV R2,-(R0) ;SET FUNCTION AND GO WAIT: TSTB (R0) ;WAIT FOR READY BPL WAIT ;KEEP WAITING TST (R0)kIVER BEFORE RECLAIMING ; CORE IT OCCUPIES ; 3) KBD WAIT ROUTINE TO CHECK FOR I/O UNDERWAY l ;SET ZERO SWITCH. SW.ZE1: DEC @R0 ;ANY ARGS GIVEN? BNE SW.ER1 ;SWITCH ERROR SWNEXT: TST (R2)+ ;PT TO NEXT SWITCH INDIC &fTff ee   U p 8 E -e Ee vn  DC@ fB $  rO68w 6 e BfE͓͋o ;CHECK FOR AN ERROR BMI ERROR ;ERROR FOUND JMP @(R1)+ ;ELSE DISPATCH .=START+200-30 ERROR: HALT ;HALT ON ERRORp .GLOBL DDL.,DK,KB,PR,PP,LP,DT,CR,MT,DF,DC ; ;SYSTEM DISK: DDL.: .RAD50 'DK' ;NAME - PACKED 'DK ' .WORD DK ;COqATOR MOV R2,R0 ;SET FOR NEXT SW CHECK. BR SWEV10 ;KEEP CHECKING,. ; ; SW.HO: BIS #HOOKSW,@R4 ;SET /HOOK SWITCH BR Sre > Rf| E( pFU%E e<gE ,^ $)6@ "s7  7 @ D$ e B  @ǁP%H|aw eN10t CMP -(R1),-(R1) ;BACK UP THE R1 TST -(R1) ;PARAMETER POINTER BR INIT00 ;AND RETRY BLOCK: .WORD 0 ;START BLOCK LOuC(R1),R2 ;BOTTOM OF BOOT ROUTINE MOV R2,SP ;THERE WILL START STACK MOV R2,BOTBAS ;SET BASE ADDRESS SUB #STKLEN,R2 ;RESERVE STACK SPACE MOV R2,STKBAS ;SAVE THE BASE ADDRESS SUB #RM.END-RM5LST,R2 ;CLAIM SPACE FOR LAST CODE MOV R2,CODBAS ;BASE OF LAST CODE WHEN MOVED MOV BOTSYS(R1),R3 ;START BLOCK OF INDEX .SBTTL SET BASE OF CIL IN SVT!! ;****************************************************** MOV R3,CIL ;SET CIL BASE IN SVT!!!!!!!!!! ;****************************************************yAD: .WORD 0 ;LOAD ADDRESS COUNT: .WORD 0 ;BYTE COUNT XFER: .WORD 0 ;TRANSFER ADDRESS BSIZE: .WORD 64. ;BLOCK SIZE BEGIz KB ;NORMALLY NON-RESIDENT .WORD 60 ;I.V. ADDRESS .WORD 0 ;DISK ADDRESS ;P/T READER: .RAD50 'PR' ;NAME - PACKED 'PR{ARGUMENT ; ; FORMAT: .WORD 2 ;# OF WORDS . ; .WORD ADDR ;PTS TO ASCII DIGITSS. ; .BYTE B,L ;SWITCH NAME. ; SW.BL: BIS |g"M$ nd!UdBbF $  `% cN8  w}   w <v"&0 *0 84 &f&!( /"8G 'h~N: .WORD 37250 ;BOOTSTRAP START EXTRPG: .WORD 165300 ;EXTERNAL PAGE ADDRESS ;OF PROCESSOR STATUS REGISTER INDEX: .WOR ' .WORD PR ;NORMALLY NON-RESIDENT .WORD 70 ;I.V. ADDRESS .WORD 0 ;DISK ADDRESS ;P/T PUNCH: .RAD50 'PP' ;NAME - P#BLOKSW,@R4 ;SET FLAG BIT SUB #2,(R0)+ ;COUNT OK? BNE SW.ER1 ;NO..COMPLAIN. JSR PC,CONV00 ;CONVERT DEC TO BIN MOV (SP%$ D`);D` &*   y5|4- &&( $&& .^  e8f f" `DaJe "  E  D 4 ;MONLIB.SYS START END: .END ;HALT ON ERROR CMP -(R1),-(R1) ;BACK UP ACKED 'PP ' .WORD PP ;NORMALLY NON-RESIDENT .WORD 74 ;I.V. ADDRESS .WORD 0 ;DISK ADDRESS ;LINE PRINTER: .RAD50 'LPy***** MOV #2,R0 ;WE WANT TO SET SVT'S BKZ ENTRY NOW .SBTTL COMPUTE BKZ ENTRY IN SVT CHECK SIZE ERROR CMP (R1),#256. ;BIG BLOCKS?? BEQ SETBKZ ;YES SET THE ENTRY TST (R0)+ ;4 FOUR SMALL BLOCKS CMP (R1),#64. ;SMALL BLOCKS BEQ SETBKZ ;SET THE ENTRY ERROR DSZERR ;DISK BLOCK SIZE ERROR ;************************************************************** SETBKZ: MOV R0,BKZ ;STORE VALUE IN SVT ;**************************************************************** .SBTTL COMPUTE TOTAL FREE CORE A' ;NAME - PACKED 'LP ' .WORD LP ;NORMALLY NON-RESIDENT .WORD 200 ;I.V. ADDRESS .WORD 0 ;DISK ADDRESS ;DECTAPE: .R. ; ;THE /NS SWITCH CAN TAKE 0,1,OR 2 ARGUMENTS ; SW.NS: BIS #NSSW,@R4 ;SET /NS FLAG IS SWFLAG DEC @R0 ;ANY ARGS GIVEN .^ 8  e C@! &.^  U%g"G8$ d!v]gy$B`@a/ Ba+Aa B`A D@mE D p @B   w 0 , w COUNT: .WORD 0 ;BYTE COUNT XFER: .WORD 0 ;TRANSFER ADDRESS BSIZE: .WORD 64. ;BLOCK SIZE BEGIN: .WORD 37250 ;BOOTSTRAP SAD50 'DT' ;NAME - PACKED 'DT ' .WORD DT ;NORMALLY NON-RESIDENT .WORD 214 ;I.V. ADDRESS .WORD 0 ;DISK ADDRESS ;CARD  BEQ SWNEXT ;NO. GET NEXT SWITCH CMP @R0,#2 ;IF TOO MANY ARGS COMPLAIN BGT SW.ER1 BNE SW.NS2 ;2 ARGS GIVEN? TST (R$bF % A BB`$&( " C"@? EL05AaAa5EEd ej~ f7w `\fABCfDՋ/ ŀ 7W ewvW~W͊ NN`TART EXTRPG: .WORD 177460 ;EXTERNAL PAGE ADDRESS READER: .RAD50 'CR' ;NAME - PACKED 'CR' .WORD CR ;NORMALLY NON-RESIDENT .WORD 230 ;I.V. ADDRESS .WORD 0 ;DISK ADDR0)+ ;POP TO SIZE ADDR. JSR PC,CONV00 MOV (SP)+,NS.SIZ ;SIZE OF BLOCK. SW.NS2: TST (R0)+ ;POP TO FIRST BLOCK JSR PC,}ND BASE OF CIL AREA MOV R3,IN1BLK+4 ;GET START ADDRESS MOV #RM.END,R3 ;HERE WE LOAD INITIALLY CIL INDEX SUB R3,R2 ;THIS IS FREE NOW MOV R2,MAXCHK ;MAX PIECE FREE MOV R3,CILBAS ;REMEMBER THE BASE .PAGE ;BEFORE READING IN THE CIL INDEX THE SYSTEM DEVICE ;WILL BE DETERMINED FROM THE EXTERNAL PAGE ADDRESS OF ;THE BOOTSTRAP PARAMETER BLOCK ;AFTER THIS CORE SIZE AND EXISTANT DEVICES WILL BE CHECKED ;DETERMINE THE SYSTEM RESIDENT DEVICE ;BY MEANS OF THE TABLE DSKTBL,THIS IS DONE BY CHECKING CONV00 ;CONVERT DECIMAL TO BIN MOV (SP)+,NS.FB ;SET FIRST BLOCK BR SWNEXT ; CONV00: MOV (SP)+,R5 MOV @R0,-(SP) ;SET WOd!wiC cF %  `C@%&(44`  t#   C%@`Գ Aa ,Ӌ(q%(  EUHQ̳ ({@&  Β ,^ 6^0.$^ &&e E]e( &^ & ݁ "u$ <w0 ;DISK ADDRESS ;LARGE FIXED DISK: .RAD50 'DF' ;NAME - PACKED 'DF' .WORD DF ;NORMALLY NON-RESIDENT .WORD 204 ;I.V. RD TO CONVERT. MOV #2,-(SP) ;CONVERT CODE. JSR PC,CONVRT BVS CONV10 MOV (SP)+,@SP ;CLOBBER ADDR LEFT ON STACK. JMP @)g"G<a~B    < W,#1L,. ' #Bl 000 ;RETRY COUNT FOR ERROR RECOVERY TRYCNT: .WORD -15. ;INITIAL RETRY COUNT LASTAT: .WORD 0 ;ADDR IN LCMMD VECTOR FOR INT HAND,d!a ͋,L wB ` 5 5 >* F  &#*+U ; PDP-11 DOS SYSTEM MACROS V005A ;COPYRIGHT 1972 DIGITAL EQUIPMENT CORPORATION ; ; AUGUST 1972. .MACRO .PARAM R$L LL}8^> .,L@p LD77@77 h,r7 7 j7 7 7 z7 t7 .7 $ HvLD.> ,Baz vLIBaۜŨ~, 6 ;THE BOOTSTRAP EXTERNAL PAGE AGAINSTTHE UPPER AND LOWER ;EXTERNAL PAGE ADDRESSES OF ALL POSSIBLE SYSTEM DEVICES ;A FAILLURE TO FIND A MATCH RESULTS IN ERROR BSYERR, ;A CONFLICT BETWEEN BOOTSTRAP DEVICEV AND SYSTEM DEVICE ; .SBTTL GET SYSTEM DEVICE NAME FROM BOOT DATA ADD #BOTEPA,R1 ;POINTER TO EXTERNAL PAGE ADDRESS IN BOOT MOV #DSKTBL,R2 ;GET ADDRESS OF THE DISK TABLE FLAG NXTDSK: CMP (R2)+,(R1) ;IS THIS THE SYSTEM DISK?? BHI NENTRY ;NO FORGET IT CMP (R2),(R1) ;PERHAPS IF WE ARE<= , Ł`w, ƃEU5 ,2Ew*eTf nJJ  JJ  FILDMP V007A n,&  , NRRE,Z LIBR-11 V004A .MACRO .INIT .LBLCK .MCALL .AMODE .AMODE .LBLCK EMT <^O6> .ENDM .MACRO .RLSE .LBLCK .MCALL .AMODE .AMODE .LBLC,, @ 0-,0.L ѕ?ѕ ѕ w,,Vͮ>> w,X3 -7"7 07 J7 <7 7 0,~Ǝ7N7>7;7 ׭,0  #   &,L  . (OCTAL r) Vx (BYTES)   # ,E , .   (K EMT <^O7> .ENDM .MACRO .CLOSE .LBLCK .MCALL .AMODE .AMODE .LBLCK EMT <^O17> .ENDM .MACRO .READ .LBLCK,.L7w R,|w Fw : w .7 7 ,7 7 7 7 7 7 7 b7 Z7 Xl,ʳ! 0,ƼK,|! zpff,Ǵ(CHAIN)  (ASCII) y (RAD50) ,  END OF FILE , n$BHIS FNDDSK ;THEN WE BRANCH HAPPILY NENTRY: CMP (R2)+,(R2)+ ;GO TO NEXT SLOT OR NIL ELEMENT TST (R2) ;FATAL ERROR?? BNE NXTDSK ;NOT YET ERROR SYSERR ;GET ERROR CODE IN R0 FNDDSK: MOV 2(R2),SYSDEV ;GET RADIX 50 NAME ;NEXT COMES THE NON EXISTANT MEMORY AND DEVICE LOOPS ;THE TIMOUT INTERRUPT ROUTINE BACKS UP THE PC BY 2 ;AND SUBTRACTS 1K FROM R5 SO IT SEEMS AS IF TST(R5) ;ACTS AS: TST (R5) UNTILL ADDRESS EXISTS .SBTTL COMPUTE CORE SIZE AND SET CSA ENTRY IN SVT FLAG MOV #NXMSBR,TIMOUT! &, 7  ',2w.@07 . Օ?y,X͕7 7 7 ,7 7 7 7     .r, .~wZ~~E,er~ODE .LBUFF .AMODE .LBLCK EMT <^O2> .ENDM .MACRO .OPENO .LBLCK,.FBLCK .MCALL .CODE,.OPEN .CODE .FBLCK,<^O2> .OP,:˖͒/ ^3 ,`5\X/5,5&  Ń,Da@w,h- Be,:T  7U,~:6/5 @,w  H/ w\~6,(@~0' ,NՒ׭ ׭ ,t(EN .LBLCK,.FBLCK .ENDM .MACRO .OPENI .LBLCK,.FBLCK .MCALL .CODE,.OPEN .CODE .FBLCK,<^O4> .OPEN .LBLCK,.FBLCK .EN--n^ K,-hX-bR--H* ,-B$-<--e,-  - wb,ǖ%877zI!, ȷH @8l,F$w,H5wR R%5J,w\ 8a%BLw4%FATk,%FB%CH w. Օ?Օ Օ .OPEN .LBLCK,.FBLCK .ENDM .MACRO .OPENE .LBLCK,.FBLCK .MCALL,j̤   -B w {,̊-0 ,-FR(-@L$-:,F -4@ X.j*,ȷJe\87 4la,@7/*   ,%~7  LX,"@["47 7 ,_" B :P 2 q,55,X   r w w ,~  dww B w\ C,w w .CODE,.OPEN .CODE .FBLCK,<^O3> .OPEN .LBLCK,.FBLCK .ENDM .MACRO .OPEN .LBLCK,.FBLCK .MCALL .AMODE .AMODE .FBLCK&@,$ 5,  ͤ,( 6n ,*:7 7Xeh8E7,PF(@w>, 7fF,vɠ5` 5 zzwY,  5 w %,F"N  W   & ,*j ֙, \& Μ ,  .AMODE .LBLCK EMT <^O16> .ENDM .MACRO .WAIT .LBLCK .MCALL .AMODE .AMODE .LBLCK EMT <^O1> .ENDM .MAE ;DID TMON CALL BEQ 3$ ;NO TAKE DEFAULT TIME MOV (R5)+,(R3)+ ;COPY DATE MOV (R5)+,(R3)+ ;COPY FIRST WORD OF TIME MOV (R5)+,(R3)+ ;COPY SECOND WORD OF TIME MOV (R5)+,(R3) ;COPY UIC TOO BR 4$ ;THAT'S IT 3$: MOV #1000.*2+1,(R3)+ ;DEFAULT DATE JAN 1,1972 CLR (R3)+ ;TIME 0 CLR (R3)+ ;AFTER MIDNITE CLR (R3)+ ;ZAP UIC TOO 4$: ;NEXT WE WILL FOUND WHAT DEVICES ARE PHYSICALLY THERE .SBTTL CHECK ALL POSSIBLE PERIPHERALS IF THEY ARE ATTACHED MOV #DVNXST,TIMOUT ;CHANGE TIMOUT MOV #CRO .WAITR .LBLCK,.ADDR .MCALL .AMODE .AMODE .ADDR .AMODE .LBLCK EMT <^O0> .ENDM .MACRO .BLOCK .LBLCK,.BBLCK .b@=b,EEdEi,E@ww8. z@,w t? "+,4/ 55  ^, y tX"l^",f b-^Z B P ?,*,ׄ D 5 К, 0 5 , ~wMCALL .AMODE .AMODE .BBLCK .AMODE .LBLCK EMT <^O11> .ENDM .MACRO .TRAN .LBLCK,.TBLCK .MCALL .AMODE .AMODE .TBL(, ,2 # EDIT-11 V006A LS}XP OFF? b * xe,Zʲ"/E N J ,K7E |t jw,5&577 44 0 67 -"Ӄ,Pـ: 7 wn,v ^en5@    N, \  Da&e%DZ,  w J " M ,FLC?CK .AMODE .LBLCK EMT <^O10> .ENDM .MACRO .SPEC .LBLCK,.SARG .MCALL .AMODE .AMODE .SARG .AMODE .LBLCK EMT <^Ol($*0xؼR&8**U|ԖX@`:,vj:ДWHPMXROF0BEMRIFVUH!,GTDEVADR,R1 ;GET ADDRESSES OF EPA'S MOV #DEVLNG/2,R5 ;GET NUMBER OF ENTRIES FLAG TSTDV: TST @(R1)+ ;SEE IF HE LIKES IT BR DVXIST ;IT EXISTS BR CNTDV ;COUNT THIS DEVICE DVXIST: INC DEVTBL-DEVADR-2(R1) ;FLAG ITS EXISTENCE CMP R1,#DKPOS+2 ;DID WE ACCESS DK DEVICE?? BNE CNTDV ;NO ALL SET CLR @-2(R1) ;SELECT UNIT 0 BIT #4000,RKDS ;TEST IF HIGH DENSITY BEQ CNTDV ;IT IS A LOW ONE INC RKDENS ;HIGH DENSITY DISK CNTDV: DEC R5 ;ONE LESS TO DO BNE TSTDV ;BUT THERE ARE MORENSPCDWLAKXJ0123456789/+@- <Hx,7 | 7,>u 7o wn0r<w,d I D7=7# 2_,  n^r, Q    e,4%.e    y,Z @(  ~ H  ,  w* %R%I9M,  %I0&"  .MCALL .AMODE .AMODE .N .AMODE .FBLCK .AMODE .LBLCK EMT <^O15> .ENDM .MACRO .DELET .LBLCK,.FBLCK .MCALL .AMODE7 p ,@&  w  ,f   @  f e  pwl ,w LhD@wTT,BLODTRTAdCC\OVID  n , `  ^x n  ,  d0 b . L!,eJ,* @%w  ,P=w /  ( wg,v< nw )z .AMODE .FBLCK .AMODE .LBLCK EMT <^O21> .ENDM .MACRO .RENAM .LBLCK,.OFB,.NFB .MCALL .AMODE .AMODE .NFB .AMOD7 , ~@` -tnm ,   7 LF   9,-4. e , %"n ɥ ɥ 'b#,"\   S  6 4 \,H2 PD <12>\ .EVEN JSR R5,ASCIM ;FOR THE FREQUENCY MESSZ ^\/IS YOUR LINE FREQUENCY 50 HERTZ?/\ .EVEN CLR FREQ ;60 SET GETCH: BIT #200,TKS ;DID HE TYPE ARESPONSE? BEQ GETCH ;NO WAIT FOR IT MOVB TKB,R5 ;GET CHARACTER TYPED IN BIC #177600,R5 ;CLEAN EXTENDED PARITY BITS CMP R5,#"R 7O h,n̷.  f N` R :w ,%(7 72 @w ,dn  p n @,۔n  X5 R ,8&""tB,4"  D ? AMODE .LBLCK EMT <^O22> .ENDM .MACRO .LOOK .LBLCK,.FBLCK,.OP .MCALL .AMODE .AMODE .FBLCK .IIF NB,.OP,CLR -(SP) ` c,pw&  w ,ъ  rw  d4  .ENDM .MACRO .KEEP .LBLCK,.FBLCK .MCALL .AMODE .AMODE .FBLCK .AMODE .LBLCK EMT <^O24>, \$PL H,D @$ 5$Q,$7  7 "  ,48 x 7r  ,Ze% ۠ ,ێ $ ׭Te7!x," JeN%  &z R,HW!> : B h,n'Y ;START OF YES BNE POSSNO ;POSSIBLY NO INC FREQ ;SET THE RIGHT VALUE BR FRSET ;ALL OVER POSSNO: CMP R5,#15 ;CARRET THEN DONE BNE GETCH ;NOT YET GET MORE FRSET: JSR R5,ASCIM ;TYPE CR LF .ASCIZ <15><12> .EVEN .PAGE .SBTTL SET UP TRAP LOCATIONS STRAPS: MOV #RM.TRP,R0 ;ADDRESS OF ERROR TRAP MOV #356,R1 ;OLD STATUS CODE MOV #60,R2 ;KEYBOARD VECTOR MOV #KBD.,(R2)+ ;KEYBOARD LISTENER MOV #200,(R2)+ ;LOWER FOR KEYBOARD MOV #KBD.,(R2)+ ;THAN FOR PRINTER MOV #201,(R2)+ ;SO peff"eD', vɕEы @ fk  ы1, P @D J  T$ T$  S,>   > 2  ,dw$,w$( nN 7 ,7 V #^O1,-(SP) EMT <^O41> .ENDM .MACRO .STFPU .STUS,.ADDR .MCALL .AMODE .AMODE .ADDR .AMODE .STUS MOV #^O3,-(SP) 7 2,7 2w 7, 7|7z 7pwY-ff ,\ ,ww 7   F,Ξ7  D    8&>w $o - e<, ̕0-nnW, eC eNC ,,zњі/5w& 8w   ,  J   ,  % EMT <^O41> .ENDM .MACRO .RECRD .LBLCK,.RBLCK .MCALL .AMODE .AMODE .RBLCK .AMODE .LBLCK EMT <^O25> .ENDM  TLFԔ 7)$,Ӆ1ww   &"׭,8P &w  #1/PD Z^W,^Fۖ  $,>7l 7 h %7$P 7$L Ћ7S ׭O , ww  65,R  %OC%BY,xݔ %AS%RAz,zz,%  %z @,"ܷk ~%Q%,H`\7 @ WE NOW I OR O MOV #61,R3 ;# OF VECTNRS FLAG STRPA: MOV R0,(R2)+ ;SET TRAP LOCATION MOV R1,(R2)+ ;SET STATUS DEC R3 ;FOR ALL DDVICES BNE STRPA ;SET ALL ADDRESSES MOV #TIMOUT,R1 ;TIME OUT VECTOR MOV #342,R2 ;STATUS MOV R0,(R1)+ ;SET TIME OUT ERROR MOV R2,(R1)+ ;AND STATUS CMPB (R2)+,(R2)+ ;INCREASE STATUS BY 2 MOV R0,(R1)+ ;RESERVED INSTR. TRAP MOV R2,(R1)+ ;AND THE STATUS CMPB (R2)+,(R2)+ ;NEXT STATUS .IF NDF,FTODT MOV R0,(R1)+ ;TRAP FOR TRACE MOV R2,(R1)+ ;AND ITS STA%@, jb,nh t%%@,wv  .e z, efT .ADDR .MCALL .AMODE .AMODE .ADDR MOV #^O2,-(SP) EMT <^O41> .ENDM .MACRO .CORE MOV #^O100,-(SP) EMT <^O41> LF ,m7< 7ʹW .,Ӯ͚͢< w^fw ,w   @ @ 5 %d $,B$Ћ7 ׭ @w>? :  wwW"'< &  \w &  ,6Hw r&  4w ^& ,\ w FE wfffe & ,c% ( e bS,   % %,, .ENDM .MACRO .MONR MOV #^O101,-(SP) EMT <^O41> .ENDM .MACRO .MONF MOV #^O102,-(SP) EMT <^O41> .ENDM w w 7 g,Bԅ7& &  wω,h̢ ̋#ˋ ׭  l,! ,WAf& "b "Z  ,f"D   ,Ϸ  : "7 ,7 7 D@7 7 .7],  &, 5 #  Da%DL %Dwb ,R݁ 1 <%,x$wX ,%z $.MACRO .DATE MOV #^O103,-(SP) EMT <^O41> .ENDM .MACRO .TIME MOV #^O104,-(SP) EMT <^O41> .ENDM .MACRO .GTUICTUS .IFF TST (R1)+ ;DON'T BUMP OUT ODT TST (R1)+ ;BUT BUMP R1 .ENDC MOV #S.ERR,(R1)+ ;IOT TRAPS MOV #PRI7,(R1)+ ;AT PRI7 MOV #PDOWN,(R1)+ ;POWER DOWN INTERRUPTS MOV #PRI7,(R1)+ ;AT THIS LEVEL .GLOBL EMT. MOV #EMT.,(R1)+ ;SET ENTRY TO EMT HANDLER MOV #PRI7,(R1)+ ;AND ITS PRIORITY CMP (R2)+,(R2)+ ;PLUS 4 SO OLD VALUE MOV R0,(R1)+ ;TRAP TRAP MOV R2,(R1)+ ;AND THE STATUS FLAG ; ;NEXT SET UP SOFTWARE COMM. VECTOR ; MOV #COMVEC,R0 ;COMMUNICATIONS VECTOR MOV #COMLST,R2 ;L) MOV #^O105,-(SP) EMT <^O41> .ENDM .MACRO .SYSDV MOV #^O106,-(SP) EMT <^O41> .ENDM .MACRO .RADPK .ADDR .*f,7w 6w w 7 ,&-pw 6w >5@P - ,L͢  w +@w<; 3  i$r^ l y@$b7 0 y",$ L8,kQrS@n> &005A(  %0 %0 %h A-w,7 вѮ/5 ,6wz   (.  ,\4&.MCALL .AMODE .AMODE .ADDR CLR -(SP) EMT <^O42> .ENDM .MACRO .RADUP .ADDR,.WRD .MCALL .AMODE .AMODE .WRD .AMO/j w d& ,r wx  - g-I,Հfw  w 2 ( w  D,w l 0,b = ^,Бe &e %ze %w,whe %r܃1BEILMNOPQRTUZySwQuSs2" e && ," & "  @ *,7 'wZ,3DE .ADDR MOV #^O1,-(SP) EMT <^O42> .ENDM .MACRO .D2BIN .ADDR .MCALL .AMODE .AMODE .ADDR MOV #^O2,-(SP) EMT <4% g ~w  t ,G  .w w F-o, >w 5@37!(  ,0֥AST WORD TO GO JSR PC,MOVELO ;SET UP LOW CORE .PAGE .SBTTL HERE READ IN CIL INDEX COME BACK TO REREAD .SBTTL WHEN INITIAL SIZE(CILSZ0) WAS TOO SMALL MOV CILLEN,R5 ;INITIAL SIZE FOR INDEX AREA REREAD: MOV #IN1BLK+2,R1 ;GET THE DISK INFO BLOCK MOV R5,4(R1) ;STORE SIZE IN I/O BLOCK MOV R5,CILLEN ;REMEMBER THE SIZE MOV CILBAS,R2 ;CORE ADDRESS WHERE TO READ MOV #RCODE,IOFUNC ;STORE READ FUNCTION JSR PC,RBOTB ;READ A BOOT BLOCK .PAGE ;AFTER READ95@ޒ7 -,V& ,| wZEww :5eH,ї#- e& e  ^Xe.ՄbrphHx>Հ`ԘԤ6,;=iKؤ ׬El@؄ C؄&ؤA<(  6Է6 z PAGE C&8fff5@L Tw h T X 칍= .MACRO .O2BIN .ADDR .MCALL .AMODE .AMODE .ADDR MOV #^O4,-(SP) EMT <^O42> .ENDM .MACRO .BIN2O .ADDR,.WRD .M>,w 7 HT "Df,zDt-pHw 2 & &`, 7Xw (7?֤h2 ֬Fל~?,ţƋ׌׉׊׍,׎ƏƐƖƆƓƃƄƅ@ذռAؽ0P9ծ= 0ߘ*,>  .A"0 5ҕ & *ͦ6e ҕ 6edчm .MAIN.,^ f e0BCALL .AMODE .AMODE .WRD .AMODE .ADDR MOV #^O5,-(SP) EMT <^O42> .ENDM .MACRO .CSI1 .CMDBF .MCALL .AMODE .AMODEC mBs,- -m(w :,:Z!R#!67,`Д D,Dƫƴ&:\K,j@ZT),PL@@` : ING THE CIL INDEX IN CORE THE RELEVANT INFO ;WILL BE EXTRACTED FROM THE CIL LINE THE RESULTWILL BE ;R2 POINTS NOW TO THE START OF THE CIL INDEX AREA ; ;1 R1=START OF CIL INDEX AREA ;2 R2 POINTS TO FIRST ENTRY AFTER CIL LINE ;3 CILNUM IS THE NUMBER OF CIL MEMBERS MINTS ONE ;4 CILSIZ WILL BE EQUAL TO THE LOGICAL SIZE OF CIL BLOCKS .SBTTL EXTACT INFO FROM CIL LINE AND REREAD IF NOT ALL IN CORE PRBIL: MOV R2,R1 ;HERE STARTS THE SLIDING POINTER SBLINE ;SEARCH THE FIRST BINARY LINE CMP (R2)+I F`w`,Ҿ! w`w`w`w`w`w`w`,w`w`  %T7 D7 JN,!BJ,! S! Sf.,.0ŗn. ҕ&8?  7_K`,  "& R  0E,5  U  U U@Ȁ n2,n&LDDR .MCALL .CVTDT .CVTDT #^O0,.ADDR .ENDM .MACRO .TMCVT .ADDR .MCALL .CVTDT .CVTDT #^O1,.ADDR .ENDM .MACROM,@727!6&  & & ,&  wj \& פ , HZԔע ԕ N l 4$( t^  B^j,FF7 7wB!edt,lO p$X &f  ,vff 5џі% ,_ f PCfffff XԡB X Ȕ$ _ ֯+-*/&@ 4!, r  ϔdb(Q .CVTDT .CDE,.ADDR,.VAL1,.VAL2 .MCALL .AMODE .IF NB,.VAL2 .AMODE .VAL2 .ENDC .IF NB,.VAL1 .AMODE .VAL1 .ENDC .R(%w/,D"& & &  w ,j @:&  3 wA,؀ r Snh\@Fw,! wwwwwwww ,Ӂ $  W"W"T _§ }d  ا _ _ Ҥπ  N  C,(R2)+ ;INCREASE IT BY 4 BERRNE <(R2)+>,<#3>,CL3ERR MOV CILL11(R2),CILNUM ;GET NUMBER OF CIL ENTRIES MOV CILL13(R2),R5 ;GET SIZE OF INDEX CMP R5,CILLEN ;COMPARE WITH WHAT WE READ BLOS CILLIN ;WE HAVE IT ALL CMP R5,MAXCHK ;THIS SIZE REASONABLE? BLOS REREAD ;YES READ AGAIN ERROR SPCERR ;NO STNP CILLIN: MOVB (R2)+,R4 ;WORDS TO FOLLOW IN INDEX ELEMENT MOV CILL16(R2),CILSIZ ;THIS IS THE SIZE OF CIL BLOCKS ASL R4 ;BYTES ADD R4,R2 ;BYPASS REST OF THE CIL LINE CMPB (R2)+,(R2)+ ;TY R  ^"  ^ S8 R  ;$N > < Z N  , & @    & ,F  `@  F f ,l [.STPLA .ADDR .MCALL .AMODE .AMODE .ADDR MOV #^O5,-(SP) EMT <^O41> .ENDM .MACRO .GTCIL MOV #^O111,-(SP) EMT <\077 $-3 ,(+7  @,Nt n@iw] %,N7 7 $ e ,t۷E5,Ծئ^l   5  ؐB  >P.$8׵Hh _5@   5`7 ,7 U    E7 .,5   w N7 -`^O41> .ENDM .MACRO .GTSTK CLR -(SP) MOV #^O4,-(SP) EMT <^O41> .ENDM .MACRO .STSTK .ADDR .MCALL .AMODE .Aa,txJ ZßB >  ޓ,ß ,-  b77$  Y,R: 7 ,  >  c , ERRORS DETECTED: FREE CORE: .  WORDS # MACRO VR05A &@sz%9d,Ȧr  5U@ 55@GU, E@A  8U 5 ,*  x U v ( HIS TOO .PAGE ;NOW THE CIL INDEX IS IN CORE AND WILL BE PROCESSED TO ; A REDUCED FORM ,THE RDUCED INDEX WILL BE LOCATED ;AT THE BOTTNM OF THE CIL INDEX AREA ;FOR EACH CIL MEMBER A FOUR WORD BLOCK WILL BE SET UP ;THE ONLY EXCEPTION BEING RM.001) ;THE FOUR WORD BLOCKS HAVE THE FOLOWING CONTENT ; 1 A TYPE IDENTIFICATION 4,10,14,20,...... ; 2 THE SECOND PART OF THE MODULE'S TITLE ; 3 A DISK BLOCK NUMBER EXTRACTED FROM THE CIL INDEX ; 4 BYTE SIZE OF THE MODULE ;THE REDUCTION IS DRIVEN BY ATABLi`'U,P` W!. W!$UJ   ,v W!. DU &  :@  j .MACRO .FLUSH .CDE .MCALL .AMODE .AMODE .CDE EMT <^O67> .ENDM ; THE MACRO .AMODE ACCEPTS ONE ARGUMENT AND ; AS k* rׯn $ׯf ׯo,X^ VX7 LHJ!ׯ@ (ׯ,~8 $ׯ0 ҟ( 7 @7w z8,ڔl 7,~Մ NΕ @w,  Ëנ,e ee mR0 r C  ԟ  " T ρW_  .,. ~  $) n:X+-"'%N<^,   ɟn ŀ  3(ɬU W!>wX oA FUNCTION OF THE ADDRESSING MODE OF ; THE ARGUMENT GENERATES THE APPROPRIATE ; MOV TO -(SP). ; ADDRESS MODES THAT ARE TROUpנ R׭h I vwj& ,& & I7 t7@p7 3,\ >7 77 qe ѐ  v(,@(  3,m\ -R/@7 @,<rRTR J& bb &t,ff   2   6n"sHXCDOBFn, L eee> : H2 ,  \ ! ! Wn tBLESOME (E.G. ; X(SP)) OR UNLIKELY (E.G. SP) WILL RESULT ; IN A .ERROR TO CMO INCLUDING THE ; VALUE OF THE ADDRESS MODE (E.E CALLED CILTB0 ;THE ENTRIES BELOW POINT CILTBL WILL BE ;PROCESSED IN A SPECIAL WAY AND WILL NOT RESULT ;IN A FOUR WORD CONTROL BLOCK ;ALL MODULES HAVING A NAME NOT OCCURRING IN ;CILTB0 WILL BE IGNORED,THUS SUPERFLUOUS ;MODULES CAN BE THERE ;NOTE----- NAME IS THE FIRST WORD OF THE RADIX50 TITLE .SBTTL NOW REDUCE THE CIL INDEX TO ELEMENTS OF 4 WORDS .SBTTL AND DISCARD UN INTERESTING ONES CLR CILNM0 ;NUMBER OF USEFULL CIL MEMBERS CLR CILCHK ;SEQ CHECK COUNTER CLR R3 ;HERE WE COUNT CIL yG. X(SP) ; IS REPRESENTED AS 000066), THE ARGUMENT ITSELF ; AND THE TEXT "ADDRESSING MODE ILLEGAL AS SYSTEM ; MACRO ARGUMENzr :7!2, ӕ?ӕ ӕ ew l7,ۄ   &  $ % , $ p{&,ևe&e,&e .e , ~e z.|'ϼ  _ 6h XJ 4 ؜4џ h :_::v }@  , | | C0   & N` ", U` ew  *, 7 P ~T". ; .MACRO .AMODE .ARG SP=%^O6 .NTYPE .SYM,.ARG ;.SYM=ADDRESS MODE. .IF LE,.SYM-^O5 MOV .ARG,-(SP) ;R0 TO R5 . N `  G,ۀ77T} w0&  & & , & w<Ґ&  7 7r,F܀|e 7!, Z  #2-7!be Z,F0e  !!!!!,l @` 7 &h XkQ4dr lPA"nP*P . 7N  7`7 t7 7  7 U @n  5,  U -  F>n ,&FUf   x 7 x p E,nMEXIT .ENDC .IF EQ,.SYM&^O70-^O10 .IF LE,.SYM&^O7-^O6 MOV .ARG,-(SP) ;@R0 TO @R6 .MEXIT .ENDC .ENDC .IF EQ4  %"%-$%152%,lZ%-%/) %- ~,  Ew5 ENTRIES FLAG PRELM: MOV #CILTB0,R4 ;GET TABLE TO OPERATE ON SBLINE ;GET AN ENTRY MOV R2,-(SP) ;BUILD POINTER TO NEXT ENTRY ADD (R2),(SP) ;POINT TO NEXT SLOT CHKELM: TST (R4) ;HAVE WE CHECKED THE WHOLE TABLE BEQ NXTELM ;YES FORGET THIS ENTRY CMP (R4)+,CIL20(R2) ;SEE IF NAMES AGREE BNE CHKELM ;NO GO TO NEXT CATAGORY SUB #CILTBL+2,R4 ;GET TYPE VALUE ASL R4 ;2 TIMES TABLE INDEX MOV R4,(R1)+ ;STORE IN FIRST CIL SUBENTRY WORD BLT TRM001 ;RMON OR TMON BEQ CFTBCS ;THIS IS THE &,~E f ee !ZϚ׭~ ,j   W!W!  N,  Dw 7 (7 , w & , &&E,D D` W! W! W!  2,RE@n 5@5@e JV,.U| p P^5@@@@@@@@@&f   n ş˨ xK , $  ^O7-^O5 MOV .ARG,-(SP) ;[@]-(R0) TO [@]-(R5) .MEXIT ;[@]X(R0) TO [@]X(R5) .ENDC .ENDC .IF EQ,.SYM&^O67-^O67 MO 0 7 . ,*7w 7 } 'Zp7w5,P 41. R PׯJ  BO,vׯ< w~7xw:E,jw&&&<,@$45EE*T7BR  w ,xR! ! f88Q$ ", D +ff  -=, j ` V 7  6,"U $ Mr$5 V .ARG,-(SP) ;ADDR AND @ADDR .MEXIT .ENDC .ERROR .SYM ;.ARG ADDRESSING MODE ILLEGAL .PRINT ;AS SYSTEM MACRO ARGUMׯ4 ׯ, w  ,7Z wwhwz wS0SMxQM=f,bfyfT8Fy,(b@T],NٽCONFIGURATION SPEC DOREST: INC CILNM0 ;COUNT HIM FOR LATDR MOV CIL22(R2),(R1)+ ;MOVE SECOND PART OF TITLE MOV CIL16(R2),(R1) ;MOVE THE DISK ADDRESS CMP (R1),CILCHK ;IS THIS ENTRY FARTHER IN CIL BHI CILOK ;THIS ASPECT IS OKAY ERROR CSQERR ;SORRY CILOK: MOV (R1)+,CILCHK ;SAVE THE BLOCK NUMBER MOV CIL14(R2),(R1)+ ;STORE MODULE SIZE MOV #SPCTAB,R5 ;TABLE OF SPECIALS 10$: CMP CIL22(R2),(R5)+ ;A SPECIAL?? BEQ CHKTYP ;CHECK TYPE TOO TST (R5) ;NOTE==REG INCR MODE BEQ NXTELM ;END OF TA@`'t,dr +,*XK +E5v  55Pb5zRӴ hTa5fE<=Zl #`B ,̀ #1-` wR 7P  s͢,%   * 7 (  v&IN A REGISTER (R0 TO R5) .MACRO .CODE .FBLK,.N .NTYPE .SYM,.FBLK .IF LE,.SYM-^O5 MOVB #.N,-^O2(.FBLK) ;R0 TO R5 $F FX%S@u> VF CREF V005 T88 %8\T$ %8Q4 %8ޞ%E,$,6 Ν5Hf" ҕ   a" R(½ ZEL?" %R5,  `ص @ R .,  3e" 7 7w M.MEXIT .ENDC .ERROR .SYM ;.FBLK ADDRESSING MODE ILLEGAL .PRINT ;FOR .OPEN FILE BLOCK .ENDM 7531/0?,ښ0ӫyzqQ[< CC TRANSFER AnDDRESS: 0 LOW LIMIT: : HIGH LIMIT:  ,Y $   + , 5?ʕ'5@ʕG "@H H,05 " ҕ BLE FOUND BNE 10$ ;CHECK THE REST CHKTYP: CMP TYPCOD(R5),R4 ;IS THE TYPE CODE GOOD TOO BNE NXTELM ;NO SORRY MOV R1,-(SP) ;SAVE POINTER SUB CILBAS,(SP) ;TOCIL START SUB #6,(SP) ;SUBTRACT LAST INCR MOV (SP)+,CILLOC-SPCTAB-2(R5) ;STORE THE SLOT NXTELM: MOV (SP)+,R2 ;POINT TO THE NEXT AREA INC R3 ;COUNT CIL MEMBERS CMP R3,CILNUM ;AND SEE IF WE ARE READY BEQ ALLSET ;CIL INDEX PROCESSED!! BR PRELM ;DO NEXT GUY .SBTTL SAVE INDEX OF CONFIGURATION MODULE CFTBCS: CMP CIL22(R2),TBVAL ;" 2|,Vb N" <?R  5$`,|  7 7" M,@H H5 RE,RRRRRRRR⋇ & (8, & & @ d @ LF,  Ԉ $5e ',֟^_ 4_ ' _  ^, GJ,_  _  *. _  &% ( #*!,cD ********** H ,<UNDEFINED REFERENCES 55 LO,bAD MAP XXXXXX.XXX 00:00:00 v(  )Ӡʕ ,Ⱦ)ҕ 5  ҕ ,5  5?ҕ'5@,Ge7 FwH B ذ Uԇ  *ʱ,   & $Ȿˌ  _ _ _ x,RNO CIL OUTPUT DATA SET CILUS V0 x1A69 ѰѪ*ј$ўѶҚ~.&TF0 `  5*tϊ V    ,$ F 00-XXX-70 H,SECTION ADDRESS SIZE   5,* 7( ?LOAD MODULE EOM ҕ   ~ m:ĸ*ĸE ы R@ z d  d  _.U@S    *' ,U ˇp  2,2 Ϻ& $(.&IS IT RADIX50 TBL BNE NXTELM ;NO FORGET THIS MODULE CMP R3,#1 ;CHECK IF THIS IS THE SECOND ;MODULE AS THE LINKER WANTS THIS BEQ SEQOK ;NO PROBLEM ERROR CFTERR ;CONFIG MODULE IN THE WRONG PLACE SEQOK: SUB CILBAS,R1 ;GET POINTER RELATIVE TO CILBAS MOV R1,CFTBLP ;STORE POINTER TO CFTBL MODULE ADD CILBAS,R1 ;RESTORE POINTER BR DOREST ;AND STORE REMAINING INFO .SBTTL SAVE HERE INFO OF TMON MODULE TRM001: ADD #4,-(R1) ;FORGET THIS ENTRIES AND FIND OUT WHO BEQ RMONCS ;IT WAS THE RM ,X 0ϟ ԒԒ ˇ  @ &~ ( l  *& _ͺ (Tf <Fk PT=,dEdEEdE=@=K,. ҕ',$?  "7@  d,J & 2 ` 5 ,p 7 ` & ,׼$d d0d%>  d *  ._ :_ ,~_ # _ 0b. ҕ?f*ʕ, W!: 5U   $ z, n(  5UFֿ 쯏,  Uԇ &²8  . %?S. ,n  ̡    & ~,#'(&  bcb,b{z, w B!e ,ЎX7 2 eeE U,з  ! B  X, U2_ tE2_ &  $b  ۟ *_b,e,_  7LO_ 4 ۟ *7+ n 0n rW!= W!: n  -,-l(   r 5 E,U P. %\0 $  "..:   . &J  E E 5s&j U: P ^ lz&o~E  ~,_ WARN MODULE MOV CIL16(R2),TMNADR ;ADDRESS OF TMON MOV CIL14(R2),TMNSIZ ;SIZE OF THE ANIMAL BR NXTELM ;THAT&S IT .SBTTL HERE WHEN RM. MODULE FOUND RMONCS: FLAG TST INIV ;CHECK IF THIS IS THE FIRST TIME BGE NXTELM ;NO FORGET THE REWRITE MOV R2,-(SP) ;SAVE ADDRESS POINTER MOV CIL16(R2),2(R1) ;STORE THE DISK ADDRESS MOV CIL14(R2),4(R1) ;AND THE SIZE MOV #EMT.,R2 ;AND GET START OF RMON CODE INC INIV ;CHANGE THIS VARIABLE IN CIL JSR PC,WCILB ;AND WRITE IT OUT WITH INIV=0 MOV (SP)+,R2 ING: _@_Ե,_ ABORT _ x_ :_ ^__ Nլ,D &_ vp&h SA$D,$ѷ     H&,J/5w &&&   +,pp &~_ _ P_  ,  . ,*__ *ۚ_ TOO MANY INPUT, DATA SETS ,  % U& ˌEU_"T ~U@ Ç,T 55 U>5I,z 8 0_  $ ZU@ ܿ5  % -*  5 R0 &.  ,$ 5@e _ JCOMMAND INPUT ERROR V`ԇ< pP_,Ԧ@beE    (, RR    & &, &&  %    %,% e ,_ y,B_ _ TOO MANY OUTPUT 6DATA SETS ^,B&  wV8 w'E,w & f` A^fE J , Lw Ί 1P @t  & &N & f  tW!' Wn  & , *! $   @_ ND, &&_ v &,4 0_  P+,88_ , L 1e-``&7:  F ,ҕ 7  pR  n(. 7    w ;GET BACK THAT REGISTER DEC INIV ;NOW IT SHOULD BE -1 FLAG BR NXTELM .PAGE ;ALLSET GETS CONTROL WHEN THE WHOLE CIL INDEX AREA ;HAS BEEN PROCESSED,CORE LOOKS NOW AS: ; 1 RCODE RESIDENT CODE ; 2 RM5CD RESIDENT PART OF RM005 ; 3 RM5CP USELESS CODE OF RM005 ALL USED ; 4 R5USE DATA BASE AND CODE OF RM005 WHICH HAVE TO BE UPSTAIRS ; 5 GAP01 SPACE UP TO REDUCED CIL INDEX AREA ; 6 CLRD THE REDUCED CIL INDEX ; 7 GAP02 SPACE UP TO STACK SPACE ; 8 STACK STACK SPACE STKLEN BYTES LU[,P 7 : 6   >  wB,v"P F %%%% ,%%T BL+'OCK VALUE ON /NS SWITCH IGNORED ,ʡ&_ ͍ .۟ &&_ N&,_ &&&_~~~~D~T~h~JJ~^~JR,L 05UTE -*r( {[,d  $ rUԇ $0  , @B     ˁ C _T, < V 0Ԧ<_ TCeeRRRR,RRRR_ NDe^`ہ , ` eB! " T > 8j vI$  z7 Z  R P -L ,hD `f  D e$ , C  &_ ," .&_ ΡKNS_ 4_ ^ ,H_ ^P &_ v#:nJ+nn5@'  U,E ؔ, l& ǟ —  8   ,  >C!W!^,D8n 2 C D C!D!,j UU2ԐP:8, 7, `_ STACK OVERFLOW,: _ ND^`ۀ   ,`` "_ NDCC %-  ʇ - Ň-: , -d - -3,F <7 V  BU],l  _ NOT CIL L"&_ 3lp _ ,NON-CIL DEVICE l&n+n' ONG ; 9 BOOTR BOOTSTRAP CODE ;CORE WILL BE REDUCED NOW TO: ; RCODE SAME LOC ; RM5CD SAME LOC ; GAP03 SUM OF RMCP,GAP01 AND GAP02 ; CLRD MOVED UPWARDS BELOW NEXT ELEMENT ; R5USE MOVE TO HI CORE ; REST IS THE SAME ;NOTE----CORE LAY OUT GOES FROM LO-HI!!! ;---------------------------------------- .SBTTL HERE THE CIL INDEX IS REDUCED SAVE CIL PARAMETERS ALLSET: FLAG MOV CILNM0,CILNUM ;NUMBER OF INTERESTING ITEMS SUB CILBAS,R1 ;NUMBER OF BYTES IN REDUCED CIL MOV R1,CILLEN ;LENGTH OF _ CIL NOT FOUND g,&_ HO_ 4 BO_ 4 ,"̟TO_ 4& _ ^MT_ 4 ,H̟& U%   ZU, SW!( U P W!+ D UF,05U@ 5 W!(53 7   & ,( ԦfR %"R,NϷ Ԁ   @ ,Baz4VBa4WBa,4XBa4YBa_ N^۵*< lB  j \, V && e F,5 &     HN ѕV,$# ѕ@ e7 ' -BL_ 4(_ ^_ NOH,n ARGUMENT ON BLOCKS SWITCH  %  &_ ) ,V 5 5@/ 5r U,|U7 ~5UEffff ,PU0 $ ^ U* t * B < J8D8 ,Z ܿ5 %  % 5,̴  ^`ۇ_ NCD|,`je b_ TOO MANY EDIT COMM,ANDS jh """*,hۇÃ",JԷ .f  wm%@,p feft P h  ,*m "ҕ- _ . _ NO OUTPUT , 8' '   _ ,OUTPUT CIL DATA SET NULL _ _,  W!)wUI ke , 3 J˵@2Q˵ 1ы ,- v ` 9˵@REDUCED CIL SAVED HERE .SBTTL FIRST CHECK IF ALL VITAL MODULES ARE IN CIL MOV #CILLOC,R1 ;GET START ADDRESS 67$: CMP R1,#DSPTBL ;AT THE END OF THE TABLE BEQ 70$ ;YES ALL DONE TST (R1)+ ;MODULE IN CIL BNE 67$ ;YES NO PROBLEM CMP R1,#BCLLOC+2 ;BUT BCL MAY BE ABSENT BEQ 67$ ;NO ERROR IN THIS CASE ERROR MODERR ;A MISSING MODULE 70$: .SBTTL MOVE CODE TO HIGH CORE DATA BASE MOVES TOO!!! UPMOVE <#RM5LST>,STKBAS,<#LSTLEN> ;THERE GOES CODE .SBTTL NOW MOV REDUCED CIL JUST BELOW HIGH COD Q ыʋы,& & e mX7J 7H  m,LN 7 6  ы5 ɋ / W 9f,rW 9  4ԇ6xz~zkQx ئnNBaz8|حHbװ8".,<Շ_$ _ _ l,4 &_ v$ && ,Z %&E@r_ -,READ &6;*7<7m7 7   &f \,2ՠ ҕ ҕ ҕ ҕ ,Xl 9rwe_ N&_ ΄K&C(_   &_ v&,&_ t_ Nڇ &_ U0J .ԋ t   Հ3 $|  5U@ &,أ%@  @@,`@%@@ @t@ @vD O,4ـ D J J  ERROR  ؀# _ [,<   _ <&&ef,~&_ NBle$B` CROSS REFERENCE Tk~ABLE S-,SMPCE @ X f&f, ^ w |  ,NDNS_ 4_ ^ 4_ ^,4 &_ 4$  &_ ,:v/5@ l nnU  rȟ 4  _C ԟ ̫ PՆRՈ @"૲  ߗ؋ ,ZY    W, v @@ @ @P @, 0 E UPMOVE CILBAS,CODBAS,CILLEN ;NOW MOVE CIL INFO MOV R1,-(SP) ;SAVE BASE ADDRESS (CILBAS) .PAGE ;NOW READ IN THE KEYBOARD COMMAND TABLE AND TRANSFORM ;THIS TABLE IN SET OF CIRCULAR LISTS: ;AN ENTRY IN EACH LIST OCCUPIES TWO WORDS ;1 WORD 1 POINTS TO THE NEXT MEMBER IF ZERO ,THE LIST HAS ONLY ; ONE ELEMENT ;2 WORD2 IDENTIFIES A KEYBOARD COMMAND IN ASCII ; ;THIS FORMAT IS EASY TO PROCES .SBTTL NOW READ DX1MODULE INTO CORE MOV R1,R2 ;BUILD ADDR TO DX1 AREA MOV DX1LOC,R1 ;BUILD A eoov,t ,P;,ڳ D4 3 ,d $ 3 #$ $ _ N!,   _ N _ N,~!&  <&0f (  A$ # EEt(V   P7,x#  MISSING &W@_ ND, $  _ Nb 4,_ ` _ N,bb v < < ~   V_̅* <   _ Uԇ (϶   ,>%9,d  % %_ _ ND &f, 5 ff,_ NBD&f_ C,"   ҕ ҕ # ,5  "H޷ , f !84 _ "/" SWITCH I,DLLEGAL _ ND$ _ ,jΕΕ_ ϐfJҋ "B˗ 45ѡɕ _b ,ΩT R8 ˗ 5 -ߋH*? f t:,@ % @  ~@rX,~@~%@\!42}s:7,ڀ s: :@@&_ v  f_ N&&,H&_ ND&_ v&,n_ ND  & 5DD (SP),R1 ;POINTER TO CIL ENTRY SUB 4(R1),R2 ;GET THE READ ADDRESS MOV R2,DX1BAS ;COPY FOR THE NEXT LOOP MOV R2,-(SP) ;SAVE THE ADDRESS (DX1BAS) TST INIV ;THE FIRST TIME?? BGE RM5 ;NO FORGET IT JSR PC,RCILB ;READ THE BLOCK .SBTTL TRANSFORM DX1 FORMAT TO A SET OF CIRCULAR LISTS .SBTTL COMMANDS ON A CIRCULAR LIST SHARE MODULES FLAG DX1CRC: CLR R3 ;COUNT OF SHARED COMMANDS 2$: TST (R2) ;SHARED??? BNE 1$ ;APPARENTLY 4$: CMP (R2)+,(R2)+ ;POINT TO NEXT SLOT CMP (R2),#-1 ;TABLE EN W, tڟrڟn nE_ ,&&  lڟpڀ5ee, 0 E9f_ V U@ ,E,  : ;f_ _ MAY NOT BE,2 DELETED _ N_>D$ $ ,X:ށ%E  nF F |ȟ,ȵF`@@T@T@Th 1"3 , e    ;r,fޯp!P$^|l!,\nhn\n!\n%n5,+\n,\n.\<2 ,_ ND3&& _ %, TRAN ERROR _ ND &_ ;,އ_ NDCB =f},|ABC8 f6,@  RRRRRRR    a,f   R⋇5DЀ& "!D$)>&_ r6~6⋟DkΥ?, 5  U*:ϟ  eߋUS,^ b(J  5@nK\nK\,@n N\n&X\nHX\n[\n},fނn}n\q%*zdrzxd,p鰼RA  aJ J`",> _ ND' &&,d _  % _ ,~B RE, ހe-Bw r7v ,& b^e 7 1 /,e@7 *C$  Lj } > B" _ dD  N m,($< >& _ l_?5@_ I,ND , Uϱr  Ugϔ,  π0 _r" 0],ж B $ RROR CORERR ;CORE DOES NOT TIME OUT!! $22: SUB (PC),(SP) ;STAY WHERE YOU ARE RTI ;NOTE---RTI=2 DVNXST: ADD (PC),(SP) ;SKIP A BRANCH RTI ;SEEPREVIOUS RTI======--- .PAGE ;THE FOLLOWING TABLE IS NO LONGER NEEDED AFTER THE CIL REDUCTION .SBTTL TABLE USED TO ANALYZE CIL INDEX AND COMPUTE TYPES CILTB0: .RAD50 /TM./ .RAD50 /RM./ CILTBL: .RAD50 /CF./ EMTYP=.-CILTBL*2 EMPTR=EMTYP+2 .RAD50 /EM./ KBTYP=.-CILTBL*2 .RAD50 /KB./ .RAD50 /DV./ CLTYP=.-CILTBL*2 .RAD50 /CL./ .WOI 4 $ lN,a      b b b  _?,* %, 0 r5_,ެѱձ@Q|ձ g,Ω)~$ q֬,$,f _ އ_ ND4&_ & &$"_ @&_ އcГYxx1 އXMB,Af_ V_ l %U@,_ _  _ _ 5@,   _ , N,P _> )φ p fLW"*J,v ! ! JJC L H  ,HL  5 O$ YM> 2*( _X' ' p,N_  _ ` _ ʅ _!P&N N*xe#B:> 6,NEE8,tQ^w 4 w $,>ۅw 2& Νq^w  w -,dۅ Е ^ V , R_ _ & MI>,2SSING MODULES: &' ! +&X_D $& _ ,xf fS,°UԇUԇ  j ρ " H f_U !HX[.KT,_ _ >`W!_ _ _ ,_ "_ &_ B _ `_ INPUT NOT _,CIL OR LICIL  RD 0 TBVAL: .RAD50 /TBL/ ;FOR CF.TBL CHECK ;TABLE DSKTBL IS USED TO COMPUTE THE SYSTEM DEVICE FROM ;THE BOOTSTRAP PARAMETERS ;DSKTBL IS USED TO FIGURE OUT WHAT SYSTEM DEVICE WE ARE USING ;THIS IS DONE BY USING THE EXTERNAL PAGE ADDRESS OF THE ;BOOT ROUTINE BY COMPARING THIS VALUE WITH THE LOW AND HIGH ;EXTERNAL PAGE ADDRESS OF ALL POSSIBLE SYSTEM DEVICES ;NOTE 1 THE DK SHOULD COME LAST ;NOTE 2 THE TABLE SHOULD END WITH A ZERO .MACRO ENTRY3 A1,A2,A3 .WORD A1,A2 .RAD50 /A3 / .ENDY _ ,@_ _  _ 0̅& i,f_ ؅e_ lۅ _ N>&K,_ :܇Q$ZWDSUb,PRALVEUIFRRWRU,BBRDIFAFBUAUB,hINTA[, e0ЋЕ:Е[׭,"Е* \v v ,H eЕ,׭\0_hf_ Bf_ l%_ NON-CIL CONTIGUOUS FILE p,0Fۦ_ ~ε, _ NS SWITCH ER V]&W!P!B n C ,NC  (  j a,tB  P0 @ϗ0`^_ Ne *!_ _ ڇ_ N,   ,_COT# # PIP-11 V7A01,`Е* ݢ p,n"< BЋԕ Е],&"8&"&Õ , &0aROR (\ɵ 8۾ 4 4 0 F4`ʢ ~@@< 8Ef FE,l 0:^  01B bH  PUԇ pLI rPNLvN :Uԇ&ՙw[M y%` QQR RK-[zMc _ ILLEGAL BLOCK SIZE _.("    _  _ G,DSMALL BLOCKS VALUE _ڟڃdH!B,4Hj!7 H7 7 PZ,Z  w H!H $, z  (M .SBTTL TABLE USED TO DETERMINE SYSTEM DEVICE DSKTBL: .IIF NDF,DDCDAR, ENTRY3 177460,177476,DF .IIF DF,DDCDAR, ENTRY3 ,,DF ENTRY3 165300,165316,DC ENTRY3 177710,177740,DP ENTRY3 177400,177416,DK .WORD 0 ;DEVADR IS A TABLE USED TO TEST WHETHER DEVICES EXIST PHYSICALLY ;WE DO THIS BY CLEARING THE CORE LOCATION ADDRESSED BY THE TABLE ENTRY ;NOTE----RKPOS IS THE ENTRY OF THE DK DISK .MACRO GENDEV S .MACRO EPATAB .IRP P, P'POS: .WORD P'EPA .ENDM .ENDM EPi7 7 7 &7 ,͆7 7 7 7 7 7 7 7 7 u,w 8ZZ@0-;,ͻ5j7,X ^ R S,w w w : !,w `w fke4 ,0<ۇ 0 _ ~_ɷV%>R*_ ,nND&_ e 0 _ l T &r xEN zDS ~׾CR ؤk,   j Pm,_ ه_ _ ؅_ ޅ_ g,N,_ ܇_ އ_ `,_ ׬׬׬n'|. ЋЕ?Е 7,tPP7w6w \5,>|̔7 .w o<w  ,`T`m".  ,$w ,JpBAD IN,PUT FILE ee  6&&_ ,rև_ ND <-<&_ ȇ %, e4 q 5(ʹχ'ϘX Uԇpv@Qd@,÷ " E   w v &R- Br& c,D&>_ &_ ޳&_ ~,j_  &_ ل _ `,_  _ s,d΄w w ׭~,w -zw -V G, `w $ 8tղ&ː7T&&$ ,p:-E׭z,pp1׭s_TATAB .MACRO DEVNAM .IRP P, .RAD50 /P/ .ENDM .ENDM DEVNAM .MACRO TBLDEV .IRP P, P'XIST: .WORD 0 .ENDM .ENDM TBLDEV .ENDM GENDEV DKEPA=RKDA GENDEV .SBTTL TABLE OF DEVICE EXTERNAL PAGE ADDRESSES DEVADR: EPATAB DEVLNG=.-DEVADR ;THE NEXT TABLE IS USED TO COLLECT DISK ADDRESSES ;OF KEY MODULES .SBTTL TABLE OF SPECIAL MODULES FOLLOWED BY A TABLE .SBTTL CONTAINING THEIR CORRESPONDING TYPES SPCTAB: .RAD50 /033/ ;KByUe,# l-f*-^-Z-T*,-L  $(w  7 z      _ NCq,x_ le _ v,&'  _ ND&_ 4{7^%z Rҕ ЎNĢ" w 7 `  Q Ր׈Лz2 &@| e Ee&_ 0z,(&_ ޅ& &_ %&_ <N&_ <ք,X' "_ _ `}w w @w ,HϚ   A D`#H! ,n7#7#   P $ ',z(,*L, 0&_ _ &_ F_ Nh,CD &&& $ $,&&&&l"ۀ! , @  fAʕ Rn,fA  e;ʕ Jҋ _ ,~DATA SET NOT A CIL _ `&p,_ _  _ b _ _ , vn  {,  50 [,  50$ „Z&B>> ,wwXw7 7 Fw \ w b ׭  „* w  w w 2LÀ _ F6WRITE ERROR ,Ḋ_ ND<e 0`D_ ,jˇ F 4'f_ q_ -I MODULE .RAD50 /060/ ;XIT MODULE .RAD50 /077/ ;HERE WE COPY MRT?? .RAD50 /035/ ;BCL MODULE .RAD50 /DX1/ ;KB.DX1 MODULE .RAD50 /KI / ;THAT'S A KILLER .WORD 0 ;TERMINATES TABLE TYPVAL: .WORD 4,4,4,4 ;EMT'S .WORD 10,10 ;KB MODULES TYPCOD=TYPVAL-SPCTAB-2 COMVEC: .WORD SVT. .WORD S.XIT .WORD S.RSAV .WORD S.RRES .WORD S.CDB .WORD S.CDQ .WORD S.GTB .WORD S.RLB COMLST: CILCHK: .WORD 0 CILNM0: .WORD 0 TDATE: .WORD 0 ;SET WHEN TMON CALLED RMON5 .PAGE ;HERE S,1~f_ :@&_ <_ N,f_ <D&_ f_ ܇_ NDi,D< ۟ Nہ W  G,   & a,@ X'EEUQa #,f p XICE BOOTSTRAP ,HA@epPۑ \ _ NT,n\ے@&_ ݇` b,rD w"&,x,-*-* rrw ,Т w dw w F,Bw  w .w |,|ø ˊ-w TA ,&w 7f -L-F!$Êw <-*-D!ړO,͓C!  e    *(W W  '". "R$L $D_ ۏ5@ŧE*UEU 6 $" b   X ̮ V I Xu,e `D  p `` H  ͠ȋ Y a( @>0s$w Pw *,зw &w  7w ,&" %&,6ђ* Dw Tw j ˼@w 0& w w r 7 j w o(z˔w \-*Z-*Vw _ W  ,j DD_ ˇ],rD X ( ,HL  eH` H  c,45,xeKBazNaOa PaQa"w Vˮ  Į6x,Ċw  Xw f ,- 4w   _  _ ߇,H r  r r  ,nr·&_ `_ NC &  ׬ҕ ڇ 2 ( X( |ҕ  ҕ   $ίR RӇ 4B =ȋ Ya( @>&|,rD Xe,:C  e w w "0w "w ˀT,0Ҁˀw Hw Vw . ^ z ЕK,V?Е Е w w 4  , wZ Lwf,0w w  ,V77w <w fX,#׬Y_ N &  ,e ҕ: ҕ. χ$[,  ;  % R G @Vf******SYMBOL TABLEM,  .{ N  S  ,>D i  L \Č ^5 ee r,`` `` H  ȋ Ya( >,rD Xs;GET START ADDRESS FOR CONFIG INFO MOV (SP)+,R2 ;AND GET IT IN CORE ADDRESS POINTER JSR PC,RCILB ;READ A CIL BLOCK MOV R2,R3 ;HERE IS THE START ADDRESS ADD (R2),R3 ;SKIP THE LINKER INFO MOV (R3)+,R2 ;GET LENGTH OF PROTOTYPES MOV (R3)+,-(SP) ;GET ADDRESS OF PROTO DDL ADD #MRT.,(SP) ;SO HERE IT STARTS MOV R3,R0 ;GET SOURCE ADDRESS MOV #MRT.,R1 ;THIS DID NOT MOVE!!! ADD R0,R2 ;GET LAST ONE TO GO .SBTTL HERE GO TO CODE IN HIGH CORE MOV CODBAS,PC ;JUMP NOW HIGH .SBTTL MOVE PROTOTY,ȋ ȋp"  $, H` H  ȋ Ya( >J,n6Bw >e8( ,-<*-4 -0-**-" L, l w e.>w \ ˊw B$Ŗ 7/w h ˼w :w`4e, # ,$ w   %$ &  ,xϪ  %&R ҋ f|,"eҋf"eҋf,*@ W 5  ҝ&ŧ @      ѝ ѝ} w wa ~ lD  $ ,:CBV`ȋ 5@PYe`YN|>R,: E!I,`՞ ~ ׭,~~׭l C*J 5B `  (Ǻ Ǻ, &   "0Е ҕ ҕ П &&&  &2  $" ,w! 3f4*2 %w eȭk "b,e Z ^HRw ,6,(# , PE DATA DOWN RM5LST: FLAG JSR PC,MOVELO ;GET IT DOWN NOW MOV (SP)+,DDLBEG ;SAVE START ADDRESS MOV R5,SHKBCM ;NUMBER OF SHARED COMMANDS MOV (SP)+,DX1BAS ;IN THIS WAY LESS CODE IS IN HICORE MOV (SP)+,CILBAS ;SEE ABOVE SUB SHKBCM,KBTYP(R0) ;DECRESE BY SHARED NUMBER TST INIV ;IF FIRST TIME THEN BLT 1$ ;THEN ALL HAS BEEN DONE CLR KBTYP(R0) ;ELSE ZAP ALL DONE 1$: MOV R0,CFTBAS ;CONFIG HAS HERE CONTROL DATA MOV 2(R0),R1 ;POINT TO PRODDL REL TO RO ADD R0,R1 ;POINT TO .SBTTL STORE  T e,e 7w ,DԜ A @` $  (  ,j57h  f,@ ,&5@- (|,fɩ< el ,Ƀ *H J0 ٷ"0 &  #e $$ $ -  2, R  5@ B  t c Ĝ A  |  """<8fd z ">< ^ǟ >ҕ+ b ZT  Ɓ_E w w ƀw ˮ (U R% L?Dw (ƾ 82~E,Ԏwb 5X, ~-x* d-b*g( ǃB;,d\EVRHw X,>w ,-- r 2 w Xw No7,Ʒ J w p  Rŀɕ,?nҥ ҕ ҕ #  $w $7 w X 7nw 8 ˊw L ˼w  D .˜  w n, ^ w lw :7 "C,F Lw(׭V׭Ih$Ե  ,w X& Ν,ɷ 7   KK^4d(M,$kQw w w  SU "w.ON,J .OFw7 7  EMT LIMITS AND SCRATCH UIC IN SVT TABLE ;******************************************************** MOV (R1)+,@#M.IOMX ;STORE EMT LIMITS MOV (R1)+,@#DFU ;STORE SCRATCH UIC ;********************************************************* .SBTTL EXTRACT VERSION INFORMATION FROM USER AND DEC ;THIS IS ANASCIZ TEXT OF MAXIMAL 5 NON ZERO BYTES ;HERE IS ASSUMED THAT THE CONFIG MODULE ;GENERATES 3 WORDS OF INFO TO BE APPENDED TO THE V ;IN THE MONITOR MESSAGE.THIS TEXT SHOULD CONTAIN ;AT MOST 5 NONZERO BY P  BE U    v0 %  rU%g"G$^ e e0EMP&&,EUw P # &Ā Tw PFw h&w ^ w 0 .w 75@%&Ɣˊw -w,{wB!e@,.7 w 0 7 w  *^-$d"^  f^ 6 ,Zw> z^ (^  & Е .w 75 E w  7|w 5 E .w \ĝZ77N J p( &^ &  &S%  o$ d!pV&^ , - . - $w ˻,  T`Tw tվ,Ff 7 H8HD,T  mmz- M,zdžw7 v7 xw ~w | 7vZc,^UZ P%mDHm (^& 6g -,,bwfw . |w '^&R^  l  ^ ^ 5,r $(p. !0w & 20 $2(0#.@p D A  &  @moef@ OWҕ^J@A Օ E  Iҕ\͋͊W  @ CQ Rʋ| %@: ,lm,m(m$  - ),e ,  TES MOV (R1)+,MONVER ;STORE FIRST PART OF MESSAGE TSTB -1(R1) ;DONE? BEQ MONVDN ;YES A ZERO BYTE MOV (R1)+,MONVER+2 ;NEXT TEXT TSTB -1(R1) ;ZEO BYTE THERE? BEQ MONVDN ;YES MOV (R1)+,MONVER+4 ;LAST TEXT CLRB MONVER+5 ;GIVE NO CHANCE MONVDN: MOV R1,USRVER ;LEAVE THE ADDRESS TO USER TEXT .SBTTL CHECK IF BATCH IN CIL IF NOT THE REDUCE MRT IN CFTBL TST BCLLOC ;SEE IF BCL IN CIL BNE DDLPRC ;YES PROCES DDL NOW MOV #MRT.,R2 ;GET START OF MRT CLR MRTBCL(R2) ;CLEAR THE BCL ENTRY IN ^ |f,* fn V ?,p  jw  ~ ,*w vw l7 <ww,8-  "7 ww,^m  w @ xw f,2e.7 *O  6], i݃   ЕCi,0Ep6. fw  w 7 wtwhR.w o  % E e wh o   .h D$ E&^ %v CA ,e$Q$ ~-0lR b f0,P H ADDB C$,vDw w vw rw ,w Hw $`$v,tw  @D,: w ,%,," w pX ,Vɇ00-XXX-00z݃Е<E 6(| <Е>   n b ^  nP H 1 =w XH A w Lh 1 *.: w D3 w < w 4w < 7 w ..7 w &7 7 EC %@ ߓp K @ .|5w8ILL CMDINV CMDSYN ERRILL DEVNO FILE,nw d CONFIRM: fƶ,Pw @w` ^ɥLV,ɥHu ɥ oɥ l w ,  7 m,-w $67 ,B -THE PROTO MRT MOV CFTBAS,R2 ;GET BASE OF CONFIG SECTION DEC EMTYP(R2) ;DECREASE THE NUMBER TO BE FOUND ADD EMPTR(R2),R2 ;ADD POINTER RELATIVE TO SECTION CLR MRTBCL+2(R2) ;CLEAR THE PRIMARY .PAGE ;FIRST WE REDUCE THE PROTOTYPE DDL TO CONTAIN ONLY EXISTING DEVICES ;AND WE FINILIZE THE DDL WITH ONLY LACKING DISK ADDRESSES .SBTTL HERE PROCES THE DDL REMOVING ALL NON EXISTING .SBTTL DEVICES DDLPRC: MOV DDLBEG,R2 ;GET THE START OF THE DDL FLAG MOV R2,-(SP) ;SAVE STARTING POINTER MOV $w  - &hwvw ɷw d,5n m`^  X,5J I I," DIRECTORY TOTL BLKS: TOTL )HFILES: FREE BLKS: FREE FILES:2&l^ v w . w| 7wr|wh.y E 74whb E T 4.&^ e $` :w8ILL CMDINV CMDSYN ERRILL DEVNO FILEILL ADRNO COREe & &T  Q  L   |, h <   QOb, ` %` `ѕ G,C mF    ,8 BLOCK WORD ,$  w  & +"^  F w fw N$^ B^   &\ ~ bzL , i  t4P 4Iw 0-"3 44a.% w  =w (7f.&$ 4=w J| E؏7eAa w L  F$ d!   &  W &(7 6w ,wzw 7 *Ȟ, 7w J- 7  ,F7 - w >7 ,l $w 8zw 7`.  "4w  Bw ( $mp  7,i }*(z   w (SP),R2 ;GET SAVED VALUE BACK CLR R4 ;FLAG SYSTEM DEVICE NOT THERE SDEVIC: MOV #DEVLNG/2,R1 ;LENGTH OF DEVICE TABLE SETABS R3,NAMDEV ;AND POINTER TO IT CMP (R2),SYSDEV ;IS THIS THE SYSTEM DEVICE?? BNE SCANT0 ;NO FORGET THIS ONE MOV (SP),R4 ;SAVE ITS POINTER ;THE PROTOTYPE DDL CONSISTS OF FOUR WORD SLOTS ;AT THIS POINT R2 POINTS TO THE START OF AN ENTRY ;EACH ENTRY HAS THE FOLLOWING LAY-OUT: ;WORD 1 RADIX50 DEVICE NAME ;WORD 2 THIS IS A FLAG,BEING: ; .1 =0 WHEN THIS IS A STANDARD DEVwND=w . w  vw <Ae0w ,w 6.ZTXw H- @D7.4> ,e.|  4 Peԕ 6 <eԕ ̕  H@m44e `fEe0 (. r7 ^7X,Xw V zw nw @ 7= =&:w *w **w .˷^F !*ˠ Е 2   _#&˴  FILE REORD DƓLER CMA: .WORD 0 BRC: .WORD 0 .MTC: .WORD 0 ;LOCATION WHERE COMMAND IS BUILT UP ; INIT: MOV 12(R0),R1 ;GET UNIT NUM BI: 4,*w Y 4. ?w &7 w 7 77 .0   w %0 %7E  IAWFS$  te e CW&w 2 2 ?   )* z 7 7,Dw w 7-v*:-r*6׭l D @e      % % E4   :@eJ!!! E0" lC #174377,R1 ;CLR EXTRA BITS MOV R1,@#MTC MOV R1,.MTC ;AND SAVE FOR A BUILD SWAB R1 ADD PC,R1 ADD #LCMMD-.,R1 ;ADD` @.V 1S  W ֆ m78 S "| y(8R4.  ICE ; .2 .NE.0 WHEN IT IS A USER DEFINED DEVICE ;WORD 3 INTERRUPT VECTOR ADDRESS ;WORD 4 A ZERO ; ;STANDARD DEVICES WILL BE DELETED FROM THE DDL WHEN THEY ;DO NOT EXIST.THE NONSTANDARD DEVICES WILL BE LEFT SCANT0: TST 2(R2) ;IS THIS A STANDARD DEVICE BEQ SCANT ;YES,CHECK IT'S EXISTENCE CLR 2(R2) ;CLEAR THE FLAG BR SDSLOT ;SET THE SLOT SCANT: CMP (R3)+,(R2) ;COMPARE NAMES BEQ $7 ;FOUND A MATCH DEC R1 BNE SCANT ;NEXT ONE FORGET: ADD #10,R2 ;ADDRESS NEXT SLOT TSTSYS: TST (R2) (8R4NJ,dl. N J,dl .\  6 5@:e $؋ hߋt v  @m $ (w Jw],׭,8w׭&ww v>w D w H8w @ˮw ˀw "ʔˊw $ EI̕U%&^ '$ ,E&-&^ %ea'W0$  MOV R5,-(SP) MOV @#44,-(SP) ;SAVE REGS JSR R5,@(SP)+ MOV R4,-(SP) ;RESET CALLING PC MOV R1,LASTAT ;SAVE FOR INT HANDLEl7gNK*\  (.D D 7@7:%2. .d&^ %ע9&  c cDeU@f&&5@,̥# ̥$EO  w .w 7"8>7-*,-*(w (Tʼw \  w "$vʼ 07- dU6Ul"L && x>|$e   & &f& R JSR PC,READY ;CHECK IF UNIT READY TSTB (R1) ;CHECK IF DEVICE INITIALIZED BPL INITX ;BRANCH IF IS MOVB #DENB,10(R1)& w %=w ,w $. w w ww  .B 7mw  S j| tE@&^ %b.E5E@ U 4   0& ;A ZERO ENDS THE TABLE BNE SDEVIC ;SCAN THE REST TST R4 ;SEE IF THIS SYSTEM CAN RUN BNE 33$ ;YES NO PROBLEM ERROR SYSERR ;SORRY IT CRASHES 33$: MOV DDLBEG,R3 ;POINTO TO START OF DDL SEQUENCE MOV (SP),LODADR ;HERE WILL LOADING START MOV (SP),DDLEND ;SAVE THE END OF THE DDL MOV (SP)+,6(R3) ;THAT'S IT .SBTTL INSERT ADDRESS OF DDL IN SVT ;*****************************************************: MOV R3,@#DDL ;SET SVT ENTRY!!!!!!!!! ;******************************************************$ d! |&^ %&B A!-W D ,W   -&:D, ˮ:wl"0˃wbP n o eKT,:m5C m_},`m̋ &eE  TSTB INTENB ;BRANCH IF INT RET BNE MTEXIT TSTB -3(R0) ;BRANCH IF CALLED FROM QUEUE BNE MTEXIT ADD #20,SP ;REMOVE PC.  !RB !R=L !6RR!.4D4 V  !4Dh4 V D V^ %V5 & `eB<Uh ZZa 達 g" )l@mF ($^ `  K#X<@I/: `A dT  T   e,m   R<,m   02 Ba < Q ,m #$R  !,PS AND REGS MTEXIT: CLRB INTENB JMP @14(R0) ;COMPLETION EXIT ; ; ; ; GO: MOV (SP)+,INTRET ;SAVE INT RETURN ADDR GOA" D"h&V*.% w .  @w @.& % % w  ww .L # Hl<((&(  $ R,E^DApSA]$$ ,E%)0&^ %I@W0=&& & K<0 ,<<Qz2 B: e  `!** CMP R3,R4 ;READY NOW!! BEQ DDLFIN ;YES GO AWAY MOV (R3),(R4) ;WE NOW THE CONTENT OF TARGET MOV SYSDEV, (R3) ;DEVICES DONE MOV 4(R3),-(SP) ;SHUNT IVA MOV 4(R4),4(R3) ;ONE DONE MOV (SP)+,4(R4) ;SET HIS IVA BR DDLFIN $7: TST DEVLNG-2(R3) ;DOES DEVICE EXIST??? BEQ FORGET ;NO BOY FORGET IT SDSLOT: MOV (SP)+,R1 ;GET OLD POINTER MOV (R2)+,(R1)+ ;THERE GOES MOV (R2)+,(R1)+ ;THE SLOT MOV (R2)+,(R1)+ ;ONLY 4 SO MOV (R2)+,(R1)+ ;WHY NOT THIS WAY MOV R1,-(SP) ;SET IT BACK BR TSTS) `  d L b $ $< A!  2 " Kr1X<*  @e,PHwZee  @e. fN e `ee 8Mt U0 &2 &Ee+S ;CHECK IF WRITE LOCK ON BEQ GO2 ;BRANCH IF NOT JSR PC,READY1 ;ISSUE ACTION MSG BR GO1 ;GO TEST IF LOCK STILL ON GO2, q.E ` Z J p. w8w 71U&&E . w .STJDU NOW$ d!U@ ACBc%DUe ``/ LLI/: `A d    $ ,E}+&e~ epw eRA!ʕ eee7 e.5 e/E -0: JSR PC,READY ;CHECK IF DEVICE READY BISB 10(R1),.MTC+1 ;SET DEN AND PAR BIS #INT+GOB,R2 ;SET INT ENB AND GO BITS MOVB1f7HE ".0  pVw Z׭0V`.V2; UPDATE: 12-JUL-72 LPDOS.S3D ; DATE: 14-OCT-71 ; VERSION: V003D ; LINE PRINTER DRIVER 3E  l@PHU% && ,- / |$^ ( &^ 4&^ %ea'W0$  dU6Ul"L && %YS ;SEE IF THRU .PAGE .PAGE ;AFTER ALL HAS BEEN MOVED WE CAN READ IN THE ;THE PROTOTYPES MOVED DOWNWARDS HAVE THE FOLLOWING LAY OUTS ;1 THE DDL ALL WORDS ARE ZERO ; ;2 THE MRT PROTOTYPE CAN HAVE THE FOLLOWING ENTRIES ; 1 A CORE ADDRESS BIT 0=0 OF LINKED RESIDENT EMT ; 2 A ZERO EMT DOES NOT EXIST ; 3 A NUMBER 3 INDICATING LOAD THIS MODULE RESIDENT ; 4 A ZERO FILL IN DISK ADDRESS ;NOW START PROCESSING THE REDUCED CIL ;AND CHECK IF THE CONFIGURATION INFORMATION ;CAN BE SATISFIED BY9x>|$e   & &f& @w 0u ~H2@I/: :INTERRUPT ; INTJ: JMP INTH SPECJ: JMP SPEC CLOSJ: JMP CLOSE ; ; TRANS: JSR PC,INIT ;INIT CHECK DEVICE MOV 6(R0),CMA ;wft!DT&Dt. w w JF G w @e:%ĕF G .tD72 V<IONS MADE TO: 1) RE-PRINT CURRENT LINE IF PRINTER ; TAKEN OFF-LINE; AND 2) RE-SET THE CONTROLLER WITH COMMAND ; ={͕&^  &@ 5@ f<5D9 7ȋ   * W"d h U@e&>`A dT  T  $ ,E~;.n0&^ %I@W0=&& & ?;SET BUFF ADDR MOV 10(R0),BRC ;SET WORD COUNT ASL BRC ;CVT TO BYTE COUNT MOV 12(R0),R2 BIC #177713,R2 ;CLR ALL BUT RE@Vw Bw .yDVV.e` w ;w ĝDw  $D.:w"f&ABIT #6 ON OPEN. ; THIS VERSION CONTAINS OPTION FOR DOUBLE SPACING, CONTROLLED FROM ; THE COMPUTER CONSOLE. IF THE SWITCH REB^ D |W" >ehp#. M%E  ZeX)W#ASUȵ@W"e,"TT C ?< 8 ,<2[z2 B: e  ` `  d L b $ $< A!  2 DAD AND ADDR EXT BITS BIT #4,R2 ;CHECK INPUT/OUTPUT BEQ TRANO ;BRANCH IF OUTPUT MOVB #READ,(R1) ;SET LAST CMMDSREAD S) THE CONTENT OF THE CIL .SBTTL NOW PROCES ALL MEMBERS IN THE REDUCED CIL DDLFIN: FLAG MOV CILBAS,R1 ;POINT TO CIL MEMBERS MATCH: MOV (R1)+,R4 ;GET TYPE OF THE ENTRY BLE IGNO ;THIS CONFIG INFO ONLY MOV CFTBAS,R5 ;POINT TO CONTROL SLOT FOR THIS TYPE ADD R5,R4 ;COPY POINTER DEC (R4) ;THIS IS THE NUMBER OF ENTRIES OF THIS TYPE BLT IGNO ;ALL HAVE BEEN SATISFIED ADD 2(R4),R5 ;GET GET POINTER TO THE COUNT MOV (R5)+,R0 ;GET LENGTH OF THE TABLE AND R5 ;POINTING TO PRIMARY TABLE BEQIUB #2,R2 ;SET UP READ CMMD BR TRAN2 TRANO: BIT #EOT,@#MTS ;CHECK IF AT EOT BEQ TRAN1 ;BRANCH IF NOT MOV 10(R0),16(R0)J7p7ttw ptpt"t.rt5ppgpbt@tppp$t/KPACING. ; V003C MODIFICATIONS: ; RE-PRINT FIXED TO CLEAR [R.AD] BEFORE RE-PRINT TO AVOID ; GARBLED LINES. ; ALSO, ADDITIL )5&3S $  & ffMEUT|EH"WA-"CO%H"ST M$ ,E!0b&^ %   W W,W  a %& N ;RETURN WORD COUNT TRAN7: BR SIMCOM ;REJECT CMMD - EXIT TRAN1: MOVB #WRITE,(R1) ;SET LAST CMMD S WRITE ADD #4,R2 ;SET UO.V  <hD !%& hD%. &e N @ e0w & ,. PON MADE TO SHIFT THE TABS TO ACCOMMODATE ; THE OUTPUT FROM PAL11R-V004B, WHICH HAS LINES SET UP 2 BEFORE ; THE STANDARD "EVEQ+W!AS(eTKIע; פ  8v˕   & & (  G$ ReU@ &^ $ ,ESQ3&^ %;7  W:A!) D01!SP WRITE CMMD TRAN2: JSR PC,GO ;GO INITIATE I/O MOV @#MTBRC,R2 CMPB (R1),#READ ;COME HERE AFTER INT ERR CHK BNE TRAN6 T 4 t4(t .D 7vprE vpra.j - IGNO ;IGNORE TABLES OF LENGTH ZERO MOV R5,-(SP) ;SAVE IT MOV R0,-(SP) ;SAVE LENGTH IN BYTES ASR R0 ;TABLE SIZE IN BYTES .SBTTL SEE IF MODULE IS NEEDED IN THIS CONFIGURATION SEEK: CMP (R1),(R5)+ ;DO WE FIND IT NOW? BEQ FOUND ;THEN WORK TO BE DONE DEC R0 ;THIS MEANS LENGTH IS IN WORDS BNE SEEK ;WEFOUND IT .SBTTL FORGET THIS MODULE NOT NEEDED INC (R4) ;RESTORE THE COUNT ADD #4,SP ;NO +,+ INCREASE!!!!!!! IGNO: ADD #6,R1 ;SKIP THE REST OF THE ENTRY DEC CILNUM ;PROCES ALL ENTRIY w   w ׭r (rU. ^w Uw wn n . jZONS: ; CORRECTION MADE TO WAIT UNTIL PRINTER READY WHEN CHANGING ; MODE BETWEEN AUTOLINEFEED AND FIRST-CHARACTE[EH%&^ G ?ȵ@|%e4!"" & &E e0U \$ ,ES5:&^ sɌ3 o m7R A!B0Z0W W]TES SHORT REC BCC TRAN3 ;BRANCH IF NOT MOV @#MTCMA,R5 ;PUT NULL IN NEXT BUFF POS CLRB (R5) INC R2 ;ROUND UP WORD COU^  7,4XR4-P i44S. Dw@ 78 %(! {.  %?_R. .TITLE DV.LP .GLOBL LP R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 PS=177776 SWR=177570 `@m$dEt $  Pe#;&^ % W#d!a   B   •/|  :  A ߋp͗rŀ^UWI•\ ͋BabNT TRAN3: BEQ .+6 ;BRANCH IF NO RESIDUE BIS #100000,R2 ;INSURE NEG WORD COUNT BIT #RLE,@#MTS ;CHECK IF LENGTH ERROR BEc?Q  $Q p.( R P w N%w 77yR P '.N w Z e0w ,d ; DEFINITIONS OF LINE PRINTER CONTROLLER ADDRESSES R.AD = 165010 ;MEMORY ADDRESS REGISTER R.LF =1ES BNE MATCH ;NEXT ONE PLEASE FLAG .SBTTL ALL CIL ENTRIES PROCESSED CHECK IF THE SYSTEM IS COMPLETE MOV CFTBAS,R4 ;GET THE NUMBER OF TYPES MOV (R4)+,R3 ;IN R3 AND R4+2 NTYPE: CMPB (R4)+,(R4)+ ;INCREASE TO NEXT REQUIRED COUNT TST (R4)+ ;TEST IF ALL FOUND BLE CFCLOK ;OKAY ALL FOUND IN CIL CMP #1,R3 ;CHECK IF CLOCK MODULES BEQ CFCLOK ;THERE MIGHT BE LACKING ONE ERROR CLCERR ;SORRY YOU CAN LOOSE CFCLOK: FLAG DEC R3 ;ALL REQUIREMENTS MET? BNE NTYPE ;NOT YET BR LOADED ;ALL Li 165012 ;LINE-FEED CONTROL REGISTER R.WC = 165014 ;WORD COUNT REGISTER R.CM = 1650j A@ U  - e>M"M%EW!ASU  A@  @ 5@GECHFIJO ASRUk%@& aoB: ( $W[7e Zc p  K!# bRK l c 2|l BEQ TRAN5 BIS #100000,12(R0) ;SET ERR BIT TRAN5: BR TRAN7 ;TAKE DONE EXIT ; ; READY1: MOV MT.NAM,-(SP) ;ISSUE ACTIOm  e`    $ .  Ëנe ee e ѐ+  @( n16 ;COMMAND REGISTER (ON DATO) R.ST = 165016 ;STATUS REGISTER (ON DATI) $RSAVE = 44 o$  x%&^ e $ A5E5 EU%E` eGp A! ,  J W. ScA!W]W0W9@WAͥZfᕕW,W VA!N qN DIAG - MOV #402,-(SP) ;DEVICE NOT READY IOT READY: BIT #SELR,@#MTS ;TEST IF DEVICE READY BEQ READY1 ;BRANCH IF NOT r  . ODT-11R V004A F BE L .L *;/\ $G _<^,OWEBP@>SRC-FI!s ;MONITOR SAVE-REGISTER ROUTINE $RSTOR = 46 ;MONITOR RESTORE-REGISTERS ROUTINE .PAGE t%Hҕ ʕ &^ M RRe0@ B<|e QC$QTT T$ 5OADED START WRING PART OF MODULE .PAGE .SBTTL MODULE IS NEEDE DO FIRST ALL COMMON OPERATIONS FOUND: CLR -(R5) ;NO DOUBLE MODULES PLEASE MOV R5,R3 ;COPY POINTER ADD (SP),R3 ;AND LET IT POINT TO SECONDARY TABLE MOV (R3),R2 ;GET ITS ENTRY MOV (SP)+,R4 ;NEEDED?????? ADD R4,R3 ;POINT TO THIRD TABLE MOV (R3),R3 ;GET ITS CONTENT MOV (SP)+,R4 ;GET BASE SUB R4,R5 ;GET MRT INDEX MOV -2(R1),R4 ;GET THE TYPE OF MEMBER ASR R4 ;BUT LESS WIELDY SETABS R0, ;GET DISPATCHER ABSOLyd!6([@  ##`F U%M 5   5"5"f656 | eX%!  D b aB !|  p & . 'Ȋ% W, 6{,INIT ;INIT CHECK DEVICE MOV 2(R0),R3 ;GET FUNC BLOCK ADDR MOVB (R3),R5 ;GET FUNC BYTE SUB #SPFST,R5 BMI TRAN5 ;BRAN}ITIES INDICATOR .BYTE 0 .BYTE 5 ;STANDARD BUFFER/16 .BYTE LP.INT-LP ;OFFS~ 5" f5H6Ht~ C;  ae>Ò` (E` fS@  e .TITLE DC ; ; DISK DRIVER (DDC) IS A MODIFIED VERSION OF SDF FOR SYSLOD ; CREATED ON MAY 14, 1973 BY DAVE MCMILLEN ; RESICH OUT IF NOT CMP #SPLST,R5 ;SUPPORTED FUNCTION BLO TRAN5 CMPB #3,1(R3) ;CHECK IF VALID FUNC BLOCK BHI ABORT ;ABORT I e !  e 5 0   f @mt$ ,EY }=ET TO INTERRUPT RTNE .BYTE 200 ;INTERRUPT PRIORITY:4 .BYTE LP.OPN-LP ;OPEN ENTRY  E (EECDe0 f `$UgzxeNaK> -~xeOaK> xePaK> yxeQaK>  t^^> %wK@ )!x Z2  9UTE ADD R4,R0 ;POINT TO OFFSET .SBTTLNOW DISPATCH TO EMT KB CL AND DRIVER MODULE HANDLERS CALTYP: ADD (R0),PC ;FROMTHIS LOCATION ;ONDISPATCH THE REGISTER SETUP IS: ;R0 INDEX IN DOIT TABLE ;R1 POINTS TO SPECIAL CIL WORD ;R2 CONTAINS THE CONTENT OF THE SECONDARY TABLE ;R3 CONTAINS THE CONTENT OF THE TERTIARY TABLE ;R4 TYPE OF ENTRY BLOW IT ;R5 HAS THE TABLE INDEX .PAGE .SBTTL NEXT COPY MRT AFTER INSERTING ONES FOR .SBTTL NOT EXISTING EMT'S TO LDR2 LOADED: ;FIRST THE DEFINITE MRT I&^ % @e e' L%e  ʕ ʊ $͋#C( . '$ FLIN BR WEOF BR RWND BR SKP BR BSP BR PARDEN BR TUSTAT ; ; ABORT: MOV R3,-(SP) ;ISSUE SP FUNC BLOCK BAD ABORT SP=%6 PC=%7 .GLOBL DC,S.RSAV,S.XIT ;TABLE OF STANDARDS AND POINTERS DF: ;LEFT FOR REFERENCES DC: .WORD 0 ;CURRENT DDB  ;SPARE LP.NAM: .RAD50 'LP' ;***********************************͋ WUWe ee e TZ  W#e1$ 'd (dĜ %`(t|  ( ͋,^ (  ! e   ͋e K MOV #1433,-(SP) ;WITH ADDR OF SP FUNC BLOCK IOT ; OFFLIN: JSR PC,EOFCK ;WRITE EOF IF NECESSARY CLRB (R1) ;SET LAST CMMADDRESS (0 IF IDLE) .BYTE 37 ;STANDARD FACILITY INDICATOR .BYTE 200 ;(NORMAL & FILE-BASED) .BYTE 4 ;STANDARD BUFFER S********************************** ;********************************************************************* LPER01 = 0 4@c  W3 e % E0 @c ` V%  $g"H @ U$e)   $ ,EH@&^  )$A!@ ,D=OFFLINE MOVB #1,.MTC ;ISSUE DISABLED RWV MOV .MTC,@#MTC ;FOR REAL BR TUSTAT ;GET STAT AND EXIT RWND: JSR PC,EOFCK ;=WILL BE BUILTFROM THE PROCESSED ;PROTOTYPE,THE ONLY THING TO DO IS TO CHANGE ALL ZERO ;ENTRIES TO A ONE,====NOTE----DDLBEG ENDS THE MRT MOV #MRT.,R1 ;GET THE START OF THE MRT MRTFIN: CMP R1,DDLBEG ;IS THIS THE END OF THE MRT BEQ MRTSET ;YES COMPLETELY READY TST (R1)+ ;IS IT AZERO BNE MRTFIN ;NO SO THIS IS RAEDY INC -2(R1) ;MAKE EMT NON EXISTANT BR MRTFIN ;DO THE LAST ONES MRTSET: TST INIV ;SEE IF UPDATE NEEDED BGE NOUPD ;DID IT FIRST TIME MOV LDRLOC,R1 ;GET CIL SLOT OF MRT COPISSUE WRITE EOF IF NECESSARY JSR PC,RWNDC ;ISSUE DISABLED RWD BR TUSTAT ;GET STATUS AND EXIT RWNDC: MOVB #RWD,(R1) ;SET  w EU E& Ne&& ee 1Xl *Be`  $$PEN ROUTINE MOV #100,@#R.CM ;HIT CONTROLLER RESET MOV @#R.ST,R0 ;CHECK STATUS...  }&*C$$Βe E%>k  aʋa|Հ$ & * P$ ΋Ί   ΋끃  $w M @C#  m e%A $ LAST CMMD=RWD .IFDF DVRRWD BR RWNDX ;BYPASS REWIND .ENDC BIT #BOT+RWS,@#MTS ;IS IT REWOUND BNE RWNDX ;YES, BRANCH eBeH& Neee&ey &e} e6e| ed& 6eBIT #40031,R0 ;...FOR ERRORS OR BUSY BNE LPER01 ;AT LEAST ONE SET BIT #2,R0 ;TEST "ON-LINE"   d Ί  ( 1'u  Q$f $5@ U C΋ Cb M΋U@,EhB &^ %7 Ll֋NVi *fE E  @ E N  Q%MOV #16,R2 ;ISSUE RWD JMP GO RWNDX: RTS PC ; EOFCK: CMPB (R1),#WRITE ;IF LAST CMMD WAS WRITE BEQ EOFCK1 ;BRANCH RTSNUU@& Ne eYыW W & ee #N we D f#>"AY ADD CILBAS,R1 ;MAKE IT ANADDRESS MOV #MRT.,R2 ;STARTING ADDRESS OF MRT MOV DDLBEG,R3 ;FIRST ADDRES AFTER MRT SUB R2,R3 ;GET LENGTH IN BYTES MOV R3,4(R1) ;STORE IT IN CIL SLOT FLAG JSR PC,WCILB ;WRITE THE MRT COPY OUT MOV DX1BAS,R2 ;BUILT INDICES MOV DX1LOC,R1 ;WHERE IS CIL ENTRY ADD CILBAS,R1 ;HERE JSR PC,WCILB ;AND WRITE THE MODULE NOUPD: MOV LDRLOC,R1 ;CIL MEMBER OF MRT COPY ADD CILBAS,R1 ;ADD RELOCATION FACTOR MOV 2(R1),R2 ;GET RELATIVE BLOCK NUMBER ADD @#CIL,R2 ;ADD BA7W!4J,, " U@W7 % 0p * e 04 wH&&  ;GO TO TOP-OF-FORM ON OPEN LP.EXT: TST (SP)+ ;POP RTN ADDR OFF STACK MOV LP,R0 JMP f. $^ &C`EQe( &^ & "u u$ d!@  :  F* $ ,EiE&^ % : MOVB #EOFM,(R1) ;SET LAST CMMD JSR PC,EOFCK1 ;GO EXECUTE WRITE EOF BR TUSTAT ;AT INT RET, GET STAT AND EXIT ; ; PARDE    UE 0$&& `̵@ JwFff Je@  @14(R0) ;TAKE COMPLETION RETURN ;*************************************/a ͋,L JB ` 5 &TT! #  H #(tL$ ,EXaGx&^ %   W W,W  a  N: BIT #CH79,@#MTS ;IF 9 TRACK TAPE BEQ TUSTAT ;BRANCH (IGNORE NEW SETTINGS) MOV 4(R3),R5 ;GET NEW DEN/PAR BIC #176376, RTN ONLY .BYTE 0 .BYTE 0 .BYTE 0 ;SPARE DF.NAM: .RAD50 'DC' .WORD DF.DIR ;MFD BLOCK .WORD 0 ;REQUIRED FOR BIT M******************************** ;********************************************************************* LP.TFR: ;TRANSESE TO GIVE ABS BLOCK NUMBER MOV R2,@#TMNMRT ;FOR USE BY TMON FLAG MOV LODADR,R4 ;FREE CORE FENCE .SBTTL SET ADDRESS OF BIT MAP START IN SVT(BFE) ;************************************************************** MOV R4,@#BFS ;START OF BUFFER BIT MAP ;**************************************************************: .SBTTL COMPUTE NUMBER OF 16 WORD BUFFERS AND MAKE BIT MAP MOV @#CSA,R2 ;GET CORE SIZE CLC ;CLEAR C BIT FOR ROTATE ROR R2 ;SIGN BIT IS NOW AWAY!! SUB LODADR,R2 ;FREE FOR BUFFFER ROUTINE MOV (SP)+,SAVRTN ;POP STACK NOW IN CASE OF NO RETURN... ;FROM THEe  3&fK ( ǁ'  E   ?͕* F0 *U "U%R@$"x"5&?"E8b$^ B 5  2j "uU 7 |fEW DEN/PAR BR TUSTAT ; SKP: MOVB #SKPR,(R1) ;SET LAST CMMD=SKP MOV #8.,R2 ;SET CMMD BR SKPBSP ;GO SET COUNT AND EXEC00,@#DF.DCS ;CLEAR DISK IN CASE OF ERROR MOV DF,R0 ;GET DDB ADDRESS CMP (R0)+,(R0)+ ;BUMP POINTER TO BLOCK NO. MOV #DF. PRINT SUBROUTINE ; DO BUFFER CALCULATION HERE IN CASE OF NO OPEN CLRB FORMFD ;FLAG TO EJECT AFTER A Gef.fntC& %$^ &&e E]e( &^ &5r $ +z   | E    $ & BSP: MOVB #BSPR,(R1) ;SET LAST CMMD=BSP MOV #10.,R2 ;SET CMMD BIT #BOT+RWS,@#MTS ;TEST IF AT BOT BEQ SKPBSP ;BRANCH DCS+10,R2 ;SET HWR POINTER MOV (R0),-(R2) ;MOVE BLOCK NUMBER IN AS SECTOR ADDRESS MOV (R0)+,@#177570 ;SHOW IT ON THE LIGHT LINE TST BUFBGN ;SEE IF BUFFER CALC'N NEEDED BNE LP.TF1 ;NOT NEEDED MOV PC,R1 ADD #LP.BUF-.,R ݁ "u$ d!2Z&M Q$NE `ee B_ Z$ zIERS SO A LITTLE ASR R2 ;WORDS ARE BUFFERS ASR R2 ASR R2 ;DIVIDE BY ASR R2 ;GUESS ASR R2 ;16 FREE: SUB #20,R2 ;A COMPLETE SET OF 20 FREE BMI PARTIAL ;NO ONLY APART CLR (R4)+ ;CLAIM WORD AT THE SAME TIME BR FREE ;MORE TO DO PARTIAL: FLAG .SBTTL SET END OF BIT MAP ADDRESS IN SVT ;***************************************************************: MOV R4,@#BFE ;SET THE END ADDRESS ;***********************************************************:*****: CLR (R4)+ ;GIVE SOME EXTRA  "L  U TEE& N D%& | ef e % DebϠ ( 5> 7 4. N"u͋55uM55 &$ $UNT NEG BRC JSR PC,GO ;GO EXECUTE CMMD MOV @#MTBRC,6(R3) ;SET RESIDUE REC COUNT NEG 6(R3) ; TUSTAT: MOVB 10(R1),R2 OV (PC)+,-(SP) ;AND ACTION MESSAGE WITH .BYTE 77,1 ;THE WORD COUNT IOT ;TELLING THE WORLD SETWC: MOV (R0)+,-(R2) ;MOVE R1,BUFEND ;SAME FOR END OF BUFFER LP.TF1: MOV LP,R0 ;DDB MOV 10(R0),R1 ;(NEG) WORD COUNT ASL R1 ;(NHD! m f K!K a)f.^ e)Q DDie3̊> ddd)d 0 .M Nu    ED    $  &A` aEA;GET DEN/PAR MOVB (R1),R1 ;GET LAST CMMD SWAB R2 BIS R2,R1 ;SET DEN AND PAR MOV @#MTS,R2 BIT #CRE+PAE+RLE,R2 ;TEST  IN WORD COUNT ... MOV (R0)+,-(R2) ;& MEMORY ADDRESS MOV (R0)+,R1 ;GET FUNCTION BISB @PC,R1 ;ADD INT ENB & GO BIC #17EG) CHAR COUNT DEC R1 ;DUE TO FIRST "INC R1" @LPXF02 MOV 6(R0),R2 ;MONITOR BUFFER START JSR PC,LPTR00 ;GO XFR MON  $& ΒM "U%GCfa `I TC$e$E Nt   e7Db ! ea L$$E0d$^ lABrD5x W xU  5.MCMP (R4)+,(R4)+ ;KEEP 2 SPARE WORDS .SBTTL SET THE END OF MONITOR ADDRESS ;***************************************************************** MOV R4,@#EOM ;SET THE END ADDRESS ;***************************************************************** ADD #40,R4 ;INCREASE FREE ADDRESS .SBTTL SET THE TOB ENTRY IN SVT ;****************************************************************: MOV R4,@#TOB ;SVT READY NOW???????? ;******************************************************************: MOV #107070,( 7 $ >"u͋55uM55 &$ M%ANCH IF NOT BIS #1000,R1 ;SET EOT BIT STAT2: BIT #BOT+RWS,R2 ;TEST IF AT BOT BEQ STAT3 ;BRANCH IF NOT BIS #400,R1 ;SE!!! USED AS LITERAL BY PREVIOUS INSTRUCTION ;INTERRUPT SERVICE DF.INT: .IFDF SYSDV ***************************** ;********************************************************************* LPER02: JSR PC,E d!4  EeRRRR J%  22 2    BX TJߓ1$:Ó C"""E8b$^ 0B 5 >b T BOT BIT STAT3: BIT #EOF,R2 ;TEST IF EOF BEQ STAT4 ;BRANCH IF NOT BIS #200,R1 ;SET EOF BIT STAT4: BIC #177753,R2 ;CL JSR R5,S.RSAV ;GO SAVE REGISTERS .ENDC .IFNDF SYSDV MOV @#V.RSAV,-(SP) JSR R5,@(SP)+ .ENDC MOV #DF.DCS,R1 ;ERRORRMES ;ERROR MOV #100,@#R.CM ;ISSUE RESET BEFORE RE-TEST LP.INT: ;INTERRUPT ENTRY POINT CLR @#R.CM 2 F&USw& | p 4,0E  2% e 0 0"uU   7 xf5n $ 4@ 2V4@  VEAR ALL BUT WRL AND 79CH BITS SWAB R2 BIS R2,R1 ;SET WRL AND 7,9 TRACK MOV R1,2(R3) ;RETURN STATUS BR COMJ ;EXIT ; QR4) ;SET THE FENCE FLAG SETABS R5,VERSION ;GET RETURN ADDRESS MOV R5,-(SP) ;FOR RETURN FROM CFTBL MOV USRVER,R5 ;AFTER PRINTING THE USER IDENTIFICATION JMP ASCIM ;PRINT IT NOW VERSION: .GLOBL EMT. TST BCLLOC ;SEE IF BATCH IS THERE BNE BATMES ;SHOUT BATCH IS THERE JSR R5,ASCIM ;HERE SAY ONLY DOS .ASCIZ .GULF/DOS V. .EVEN BR VERPRT ;PRINT THE VERSION BATMES: JSR R5,ASCIM ;HERE TELL ABOUT BATCH .ASCIZ .GULF/BATCH V. .EVEN VERPRT: JSR R5,ASCIM ;PRINT VERSION INFORMATION MON ; ; CLOSE: JSR PC,INIT ;INIT CHECK ON DEVICE CLRB -10(R1) ;CLEAR OPEN FLAG JSR PC,EOFCK ;IF LAST CMMD WAS WRITE, WRITRN MONITOR ;ERROR ROUTINE: DF.ERR: BIT #11000,R2 ;PARITY OR MISSED? BEQ DF.OFF DF.AGN: ASL #0 ;YES - RETRIED 8 TIMES? DMOV @#$RSAVE,-(SP) JSR R5,@(SP)+ ;SAVE REGISTERS ON STACK BIT #30,@#R.ST ;ANY PARITY ERRORS? BNE LP0%%% p b Wbt$^ &&e E]e( &^ gW``!? ef m`ae57 x;7tpȋ&5$^ E 3 EOFS JSR PC,EOFCK JSR PC,EOFCK .IFDF DVRRWD ; ; ISSUE 2 BSPS INSTEAD OF RWD IF OUTPUT ; OR SKIP TO END OF FILE IFF.RTC=.-2 BCS DF.PER ;IF SO FORCE CONTINUE JSR PC,DF.RPT ;OTHERWISE TRY AGAIN DF.REC: .IFDF SYSDV JMP S.XIT+4 ;TAKE CIN06 LPIN05: BIT #2,@#R.ST ;HOW ABOUT "ON-LINE"? BNE LPIN04 ;IT'S SET, SO O.K. TO PREPARE NEXT LINE LPIN06: CLR @#PS ;DR& ݁ "u$ Td!7$AcfNl & E CD JB( ! @  x p 8 qH 7DpD7 77 INPUT ; CMPB (R1),#WRITE ;IF LAST CMMD WAS WRITE BNE CLOSE1 MOV #10.,R2 ;ISSUE 2 BSPS MOV #-1,BRC MOVB #BSPR,(R1)OMMON EXIT .ENDC .IFNDF SYSDV MOV @#V.XIT,R5 JMP 4(R5) .ENDC DF.PER: BIS #100000,12(R0) ;RETURN PARITY FAIL FLAG UVER: BR 1$ ;SKIP ILLEGAL INSTRUCTIONS BR 1$ ;DUE TO VARIABLE VERSION LENGTH BR 1$ ;OF MESSAGE 1$: JSR R5,ASCIM ;PRINT CR LF NOW NOTE MONVER HAS ;2 NON ZERO BYTES .BYTE 15,12,0,0 .SBTTL CALL TMON ALL IS REDY TTMON: CLR @#PS ;LOWER IS DIFFICULT EMT 60 ;CALL TMON .PAGE ;HERE WE DO FINISHING OPERATIONS FOR EMT MODULES .SBTTL HERE EMT CIL MEMBERS ARE PROCESSED EMCASE: TST R2 ;A SPECIAL EMT?? BEQ NOSPEC ;NOT A SPECIAL FLAG .SBTTL HERE XIT AND KBI MODULE ARE MODIFIED BR DF.XIT ;LEAVE WITH PARITY ERROR SHOWING ;ERROR IS NOT IMMEDIATELY RECOVERABLE: DF.OFF: .IFDF SYSDV CLR DF ;FREE DISK AR CONDITION MOV @#R.ST,R0 ;GET STATUS COM R0 ;INVERT FOR TEST BIT #6,R0 ;OF [READY] AND [ON-LINE] BNE LPIN03 ;ONE & N.^ 0 E e E `eD#E &.^ 0 &`$^ &&e E-KMNPѠ$ݻ+ABDGH.<ɶ$ `T@  ؠ`Tp.THERE BNE CLOSE3 MOV #8.,R2 CLR BRC MOVB #SKPR,(R1) CLOSE2: JSR PC,GO .ENDC CLOSE3: JSR PC,RWNDC ;ISSUE DISABLED RFOR EDP .ENDC MOV -(R1),-(SP) ;DISK STATUS IS EVIDENCE MOV #DF.ENO,-(SP) ;SET UP ERROR NO. IOT ;GO TO DIAG. PRT. ;DOF THEM IS STILL OUT MOV WCSAVE,R4 ;GET PREVIOUS WORD COUNT... BEQ LPIN02 ;DON'T PRINT IF BLANK LINE JSR PC,LPPR01 ;...]e( &^ & ݁ "u$ d!k9e&8 E_Rwaef$^ &w ɋ` 7e7x VTW5WD COMJ: JMP SIMCOM ; ; ; ; INTH: MOV @#44,-(SP) ;SAVE REGS JSR R5,@(SP)+ MOV MT,R0 ;GET DDB ADDR MOV LASTAT,R1 ;EFINITIONS: DF.DCS=165300 DF.DIR=1 DF.ENO=1426 V.XIT=42 V.RSAV=44 .END AND GO PRINT LINE AGAIN BR LPIN02 ;...AND EXIT LPIN04: TSTB FORMFD ;DID A FORM FEED END LAST LINE? Y SETABS R4,SPEML ;SPEM LOADER GETCS: CMP (R4)+,(R1) ;LOOK UP IN TABLE BEQ UPDATE ;GO TO UPDATE TST (R4) ;LAST ONE?? BNE GETCS ;NO GET SPEC ERROR SPEERR ;SPECIAL EMT ERROR UPDATE: MOV LODADR,R2 ;WHERE TO LOAD IT?? JSR PC,RCILB ;HERE IT COMES DSPEMT: ADD SPDISP(R4),PC ;DISPATCH KBICSE: MOV R1,-(SP) ;SAVE THE CIL SLOT POINTER MOV R5,-(SP) ;AND SAVE THE EMT INDEX MOV KILLOC,R1 ;GET RELATIVE ADDR OF KILL MODULE ADD CILBAS,R1 ;POINT TO REAL SLOT MOV #KBILOW-2,R5 ;KILL IS DEFINITELY NO BEQ LPIN01 ;NO JSR PC,NEWPGE ;YES; EJECT NOW LPIN01: MOV MONCNT,R1 ;RESTORE CHAR CO e&T&T 0d%aT $Q$K "@U%G$^ &&e E]e,(  e hT0W5@P V U5PU 5@P5Z5 P NTERRUPT MOV @#MTS,R2 ;GET STATUS OF DEVICE INCB INTENB ;SET INT FLAG BIT #ILC+NXM,R2 ;CHECK ILLEGAL CMMD, NONEXIST COR ;UPDATE: 16-MAY-73 CR.MAC - MODIFIED FOR DOS-8 ;UPDATE: 19-DEC-72 CRDOS.S2D ;12-19-UNTER MOV MONBUF,R2 ;CURRENT MONITOR BUFFER POINTER JSR PC,LPTR00 ;GO GET ANOTHER LINE A&^ & ݁ "u$ d!;&M  WE&  Œ%⇸ aeM -AE.[ 0 VRRM  Hɕ5"PwWE BEQ INT1 ;BRANCH IF NOT INTF: MOV R2,-(SP) ;DISPLAY STATUS AND DIAGNOSE MOV #1432,-(SP) ;FATAL ERROR-MAG TAPE IOT 72 ;UPDATE: 17-DEC-72 CRDOS.S2C ;12-17-72 ; UPDATE: 12-JUL-72 CRDOS.S2ND PRINT IT LPIN02: MOV @#$RSTOR,-(SP) JSR R5,@(SP)+ ;GO RESTORE REGISTERS SAVED ABOVE RTI e&p  E eE`E& & 0pf$EA B`| 0   v& &].KSB JSR PC,DADR ;MEMBER GET MRT ADDRESS MOV (SP)+,R5 ;GET EMT INDEX BACK MOV (SP)+,R1 ;POINT AGAIN TO KBI SLOT MOV R4,4(R2) ;DUMP THE MRT FORMAT ADDRESS BACK: JSR PC,WCILB ;WRITE MODULE BACK .SBTTL HERE EMT'S ARE LOADED OR MRT ENTRY IS MADE NOSPEC: MOV #MRT.,R0 ;START OF PROTOTYPE MRT ADD R5,R0 ;ADD INDEX BIT #1,(R0) ;ALL OKAY??? BNE 11$ ;YES NO PROBLEM ERROR MRTERR ;MRT MESSED UP 11$: BIT #2,(R0) ;SWAPPABLE MODULE BNE LOADEM ;NO LOADING REQUIRED ;HERE WAS STRANGE CODE IND &  ` ic J1  6!'   6!6  L ",Z APP52U5UJ5"U5@UEPs  n1 6 2 . w$^ @RE@ CLR R2 BISB TCMMD,R2 ;GET CMMD NEGB TCMMD ;SET-NOT BSP JMP GOA ;GO TRY AGAIN ; INT2: BIT #BGL+BTE+CRE+PAE,R2;TESTD ;UNIVAC "FIELDATA" CARD CODE WHEN ASSEMBLED WITH "DEFALT" DEFINED. ;IN ADDITION, CHANGES TO OPERATION OF TRAILING BLANK SU TO PRINT ONE LINE FROM MON BUFFER MOV CURBUF,R3 ;LOCAL POINTER FROMLAST TIME BNE LPXF02  BaBa6A c JQ   0  ! t$ P#5  7wp593 55( #59 ɥɥ5 Uw  IF ERROR THIS TIME BEQ INT7 ;BRANCH IF NOT INC RETRY BNE INT6 ;BRANCH IF TO TRY AGAIN BIT #BGL,R2 ;IF ERR=BUS GRAN!PPRESSION ;AND OF SEQUENCE NUMBER (COLS. 73-80) SUPPRESSION ARE MADE ;AND ARE DESCRIBED BELOW. ;CARD READER DRIVER (CR) ; " ;STILL IN MIDDLE OF LINE LPTR01: MOV BUFBGN,R3 ;LINE WAS PRINTED: BEGIN NEW ONE LPXF01: MOVB #8.,TABPTR #" r" "c  T&"@U%G 0  4   B .  $• Tw65 @ TBw$77n $ `m|-@  ؠ`mWa ORIGINAL AEQUIVALENT ;WITHOUT ACOMMENT ;INTHE RANGE 60-76 EMT'S GOT A SIZE 128 JSR PC,DADR ;GET DISK ADDRESS IN MRT FORMAT MOV R4,(R0) ;AND STORE IT AWAY IGNORE: JMP IGNO ;ALL DONE .PAGE LOADEM: MOV LODADR,(R0) ;STORE CORE ADDRESS JSR PC,RRCILB ;RREAD A CIL BLOCK BR IGNORE ;READY XITCSE: MOV TMNADR,4(R2) ;STORE TMONS ADDRESSABSOLUTE ADD @#CIL,4(R2) ;MAKE IT ABSOLUTE MOV TMNSIZ,6(R2) ;STORE ITS SIZE BR BACK ;AND BACK .PAGE ;HERE WE FIND THE KEYBOARD MEMBERS OF THE CIL ;R2).8 E_Rwaef$^ &w ɋ` 7e7x * R2,-(SP) MOV #412,-(SP) IOT BR INT7 ;GO TO SPECIFIC ROUTINE ; INT3: BIT #BGL+BTE+PAE+CRE,R2;CHECK IF ERROR BEQ INT+PASSED TO THE ; CALLING ROUTINE AS SPECIFIED BY THE WORD ; COUNT GIVEN. (IF THIS IS > 41, REMAINING ; BYTES WILL BE CLEARED,Y: LEAVE BUF AS IS & RTN TO MON MOVB (R2)+,R5 ;FETCH NEXT CHAR BIC #177600,R5 ;CLEAR POSS- E 6 &M  $o|^ "zU%Gwf&  p ,M 'p.VTW5P  wuUAlhR&^ w>ww P7D7@ < E5ɕ/7 ;BRANCH IF NOT CMPB #SKPR,(R1) ;BRANCH IF SKIP OR BSP BEQ INT4 CMPB #BSPR,(R1) BEQ INT4 MOV TRYCNT,RETRY ;SET RET0. ; ALL ERRORS (INCLUDING 'HOPPER EMPTY' UPON ; AN 'OPEN' CALL) WILL BE TREATED AS 'DEVICE ; NOT READY'. USER CAN RESUME OP1IBLE PARITY BIT CMP R5,#40 ;<40? BGE LPXF03 ;NO CMP R5,#11 ;2 pT e TTTTT%L&M 0   E Cae3 5P0ɕe hT0W5@P V U5PU 5@P4RY COUNT BIT #12,(R5) ;IF CMMD IS WRITE BNE INT6 BIS #10,(R5) ;TRY WRITE WITH LONG GAP INT6: MOVB (R5),TCMMD ;SAVE CMMDe POINTS TO THE BOTTOMOF THE SPACE WHERE WE BUILD THE ;KEYBOARD INDEX TABLE .SBTTL HERE KEYBOARD MODULES ARE HANDLED KBCASE: CMP R2,#"TI ;IS IT A TIME COMMAND? BNE 1$ ;IN THIS CASE NO FREQ CHECK CMP (R1),TSIXV ;SEE IF THIS IS 60 HERTZ MODULE BNE 2$ ;NO SO CHECH IF 50 HERTZ FREQ TST FREQ ;HAS 60 HETRZ BEEN DEFINED BNE IGNORE ;NO SO IGNORE THIS MODULE BR 1$ ;SET DX1 TO POINT TO 60 HERTZ MOD. 2$: TST FREQ ;IS THIS A 50HERTZ SYSTEM? BEQ IGNORE ;NO SO IGNORE 50H MODULE 1$: MOV DX9 MOVB #10.,R2 ;SET UP BSP MOV #-1,@#MTBRC ;COUNT OF 1 JMP GO2 ;GO EXECUTE ; INT4: BIT #EOF+BOT,R2 ;IF EOF OR BOT B:E DETERMINED BY ; RECOGNITION OF A TERMINAL CONTROL CARD:- ; 12-11-8-9 PUNCHED IN C.C.1 ; ; XXXXXXXXXXXXXXX; ;YES: END OF THIS LINE CMP R5,#14 ;FORM FEED? BNE LPXF02 ;NO: ILLEGAL, SO IGNORE <d!N@ l&^ %T&e  E eE`E& & $) EfdCCm  J=5"PwWwɕ .(5P*E   qɕ ɕ 5"P >NE INT7 ;SKIP OR BSP IS DONE TST @#MTBRC ;IF COUNT EXHAUSTED BEQ INT7 ;IS DONE MOVB (R5),R2 ;ELSE SET UP CMMD JMP G?XXXXXXXXXX ; X X ; X NOTES X ; X X ; XXXXXXXXXXXXXXXXXXXXXXXXX ; .PAGE ;*************************@ INCB FORMFD ;YES: FLAG FOR HOME AFTER PRINT BR LPPRNT ;GO PRINT LINE LPXF03:AMve & "   &   B7 T3 BAPP52U5U>5"U5@UEPs' l1 6 2 .W CO2 ;CONTINUE SKIP OR BSP ; INT7: CLRB TCMMD ;CLEAR RETRY INDICATORS CLRB RETRY MOV INTRET,PC ;GO TO SPECIFIC ROUTINE D*********************************************** ; 0) IN THE FOLLOWING, ALL REFERENCES TO '026' CODE NOW SHOULD ; BEi1BAS,R5 ;GET INDEX TO INDEX MODULE SCRKBI: CMP (R5)+,#-1 ;REACHED THE DELIMITER?? BNE 25$ ;STILL IN TABLE ERROR KBCERR ;COMMAND NOT IN KEYBOARD INDEX 25$: CMP (R5)+,R2 ;NOW WE POINTED TO COMMAND BNE SCRKBI ;SEARCH !!!!!!! CMP -(R5),-(R5) ;BACK TO SLOT MOV R5,-(SP) ;STACK LINK ADDR MOV #KBILOW+2,R5 ;THIS IS .KSB MEMBER JSR PC,DADR ;COMPUTE THE DISK ADDRESS MOV (SP),R5 ;GET THELINK BACK .SBTTL COMMAND WAS IN INDEX TABLE FILL IN MRT ADDRESS 26$: MOV (R5),-(SP) ;SAVE LIST LINK I INTERPRETED AS UNIVAC 'FIELDATA' CODE. ;************************************************************************ ; 1) THJO SET EVEN PARITY MOVB R5,(R3)+ ;PUT INTO LOCAL BUFFER DECB TABPTR ;...AND KEEP TRACK KmLA %%n  . $) &.M $M "^U%G$^ &&e E]Lw8593 55( #59 ɥɥlB5 Uw~• Tw5 @ TBw7ZM dU&&7 E ew4 7  4v VE@ D &  4-(U(l>5UNIS DRIVER CAN BE ASSEMBLED FOR USE ; IN CONNECTION WITH EITHER '026' OR '029' ; PUNCHES OR BOTH AS INDICATED BY PARAMETER ;OOF POSITION BNE .+10 MOVB #8.,TABPTR ;RESET POINTER CMP R3,BUFEND ;END OF LOCPe( &^ H& ݁ "u$ d!6L@  wF&Q7XP$ | 43 8 @mp $ $7 !7vvR5 U eee   U ee|w 4  5 t xwl EeS SPECIFICATION AT START OF SOURCE INPUT ; AS FOLLOWS:- ; ; A) "ONLY26=0" - READ ONLY '026' CODES. ; B) "ONLY29=0" - RTAL BUFFER? BLOS LPXF02 ;NO: GET ANOTHER LPPRNT: MOVB #240,(R3) ;SPACE IN POSSIBLE ODD BYTE mMOV R4,(R5) ;STORE THE DISK MRT FORMAT ADR MOV (SP)+,R5 ;GET LINK BEQ 27$ ;ZERO IS NIL CMP (SP),R5 ;SEE IF DONE BNE 26$ ;DO THE WHOLE CIRCLE 27$: MOV (SP)+,R4 ;BACK TO CLEAN STACK TST R3 ;TEST SEQUENCE NUMBER BEQ IGNORE ;NO FORGET IT CMP R3,#9. ;BAD BLOS 47$ ;NO OKAY ERROR SQZERR ;I ONLY HANDLE 9 MODULES .SBTTL CHECK THE SEQUENCE NUMBERS OF OVERLAYING MODULES 47$: MOV (R1),R2 ;NAME OF FIRST ONE ADD #37,R2 ;ADD RADIX 50 1 48$: DEC R3 ;DONE SO ONE WORKS TOO! BLE IGNOY MOV R1,MONCNT ;SAVE CHAR COUNTER MOV R2,MONBUF ;SAVE MON BUF POINTER MOV BUFZ! & e#  E   eDbeA LA   ! 0[ߕ $^ $ )ɐ ǁ $^ f5ɕ &M \X ' r' |& v &&%  V0 ew pe0]S OF CODE ; WITH '029' AS DEFAULT ; ; IN CASES (C) & (D), DRIVER WILL USE DEFAULT ; UNLESS DIRECTED OTHERWISE BY ENTR^BGN,R4 ;LOCAL BUFFER SUB R3,R4 ;GET (NEG) CHAR COUNT ASR R4 ;(NEG) WORD_ e e  | .M $M "U%G$CE   `58a@5 -8JU ѐB`Ѱ `L7 & ,$ Ea4 w8ee%zAB I#  % Bff& f a( wֵX fbY OF A ; CONTROL CARD PUNCHED IN C.C. 1:- ; ; 12-11-8 = '029' CODES FOLLOW ; 12-11-9 = c COUNT BNE LPPR01 ;SOMETHING THERE: GO PRINT IT CLR R3 ;PRINT BUFFER EMPTY: REdt em A    e$^ &&e E]e( &^ &qRE ;OKAY BOY INC R2 ;CHANGE NAME ADD #10,R1 ;TRY IT DEC CILNUM ;ONE LESS CMP (R1),R2 ;NEXT ONE IN SEQUENCE?? BEQ 48$ ;YES NO PROBLEM ERROR SEQERR ;SEQUENCE ERROR .PAGE ;DVCASE PROCES THE DRIVER MEMBERS OF THE CIL ;THE FOLLOWING STEPS ARE MADE ;1 IF DEVICE IS A RK AND RKDENS=1 THEN FORGET RKL ;2 IF DEVICE IS A RK AND RKDENS=0 THEN FORGET RKH ;3 IF DEVICE IS SYSTEM DEVICE THEN LOAD AT LOADAR AND SET DDL ;4 ELSE PRODUCE DISK ADDRESS .SBTTL HERE COME DRIVERS REPLACE RKH AND i ?݁ "uU$ Pd!E6&M &&  &j wb3f7 *CW0t Հ |7 7 p$ B߳tՀߕ@t97 k  @ wbU V w ze   %W!DUe e& n -  ZlF' FOLLOWING LAST VALID DATA. ; IF THE CARD FILE IS PRECEDED BY CTL CARD WITH ; 12-11-0 ; PUNCHED IN CmOVB #201,ONECHR ;YES - SET UP TO SINGLE-SPACE CMPB @#SWR,#2 ;IS DOUBLE-SPACE SELECTED? BNE LPPR04n  mm$S # $m |# f0 Zeo"D672G7 FՀh  %& n (   7 Nߓp2|߳t&^ pz4 WPWRWLWAI f" " % U&&e wq.C.1, THE TRAILING SPACES WILL NOT BE SUPPRESSED. ; IF A CONTROL CARD IS READ WITH C.C.1 CONTAINING: ; r ;NO INCB ONECHR ;SET UP TO DOUBLE-SPACE LPPR04: JSR PC,PRTONE ;GO UPSPACE ONE OR TWO BR LPTR01 ;...AND GO BACK FOR MOs $M "JU%G-B8< v! eeH! 6^$^ &&e Et F#ʔ `Z 7 & 7 2 ~   j ꀣw e@@ uRKL BY DK .SBTTL AND IGNORE ONE OF THEM ACCORDING TO RKDENS VALUE DVCASE: CMP (R1),RKHVAL ;IS IT RKH MODULE BNE 30$ ;NO RKL PERHAPS TST RKDENS ;DENSITY HIGH? BEQ IGNORE ;NO INTEREST 34$: MOV RKVAL,(R1) ;OVERWRITE NAME 30$: CMP (R1),RKLVAL ;LOW DENSITY MODULE BNE 31$ ;NO OTHER DEVICE TST RKDENS ;LOOK AT DENSITY BNE IGNORE ;FORGET IT BR 34$ ;SET TABLE NAME 31$: MOV DDLBEG,R3 ;POINT TO DDL CHAIN .SBTTL SEE IF DEVICE EXISTS 32$: CMP (R1),(R3) ;DOES DEVICE EXIST?? BEQ DEVFND ;Ay tA @ w pe 2̓@ p @ d e6B @%w"CY7z z" &  .  6$ s>^C . JDATE:- Z gbTIME:-{CE COMPRESSION WILL BEGIN AT CC. 72 AND MOVE DOWNWARD. ; 3) IF THE NUMBER OF COLUMNS READ AT CARD DONE IS ODD, | R3,BUFEND ;CHECK FOR BUFFER END BHI LPPRNT ;YES: PRINT NOW DECB TABPTR ;}e(   e&  L̥ ̥ ̥̥̋ ̥ H  ^ ˥*{ k D ˥~, ^ ~ht>e  ߓp4 w|   e r W E $Eg .:> EeRRRR J% ;12-17-72 ; THE CARD IS NOT PROCESSED AND THE "NOT READY" MSG IS OUTPUT. ;12-17-72 ; THIS FORMS A TRAP FOR MORE TO SPACE? BNE LP.TAB ;YES CMPB @#SWR+1,#1 ;SEE IF "PAL" SPACING SELECTED BNE LPXF01 ;NO MOV Z˥* U R ˥]MPK W G Q&       ˥:?R ˥,U% 1˥*i ˥. ! xex w!Dw!FehL@  \e: ׋' j%'   22 2    2 F&USw& ^ p 4,0E yPPARENTLY SEE BELOW ADD #10,R3 ;NEXT SLOT IN DDL LIST CMP R3,DDLEND ;DID THE END SHOW UP? BNE 32$ ;TRY NEXT ONE IGNOB: BR IGNORE ;FORGET THIS ONE TOO DEVFND: CMP (R1),KBVAL ;IS IT THE KEYBOARD?? BNE 35$ ;NO FORGET THIS .GLOBL KBD. .SBTTL INSERT KBA VALUE IN SVT ;************************************************************* MOV R3,@#KBA ;SET POINTER TO DDL ENTRY IN SVT ADD #2,@#KBA ;ADD 2 TO THIS ENTRY ;************************************************************* 35$: CMP (R1),SYS  2% e 0 00 0 & 0" 6U%G E S DEFINED AT ASSEMBLY, ; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ; ; THIS VERSION WILL ALSO ALLOW READING OF CARDRE YET BGT LP.TA1 ;PAST IT: MAY NEED FURTHER WORK MOVB #6,TABPTR ;SET TO SPACE OVER SIX MORE TO LINE UP BR LP.TAB ;AND"U%G!   " ˥: ˥.˥$& ˥0 ˥Z˥9˥A    N͕eBbC 5  & ͓ N N"7 0 V7 Gbq w &  #ccD  fNUVU00%%% p b b$^ && .TITLE RCBOOT ; ; DDC DISK BOOTSTRAP ; ; THIS IS A MODIFIED VERSION OF RFBOOT, SET UP FOR THE ; GULF DDC DISK ; ; CREA GO INSERT THE SPACES .PAGE LP.TA1: BIT #7,R5 ;ARE WE AT AN EVEN-8 TAB BOUNDARY? BNE LPXF01 ;NO: DON'T SWEAT $ d!Jx& & ACB$2  Ae ! ! ! ! ! `.lHO 7e: e ABCh#eh}  $ f!,e E]e( &^ & ݁ "u{*2*8TU  KI TED ON MAY 14, 1973 BY DAVE MCMILLEN ; R0=%0 R1=%1 R2=%2 R3=%3 ;HARDWARE REGISTERS R4=%4 ;R5 ;SP PC=%7 ; CLEAR=400}DEV ;IS IT A SYSTEM DEVICE BNE SDVADR ;NO SET THE DRIVER ADDRESS .SBTTL HERE LOAD SYSTEM DEVICE AND SET SYSTEM DEVICE BIT MOV LODADR,-(SP) ;SET THE CORE ADDRESS .GLOBL S.DDB MOV (SP),@#S.DDB-2 ;STORE DRIVER ADDRESS IN RMON1 MOV (SP),@SYSDRV ;SET ADDRESS OF SYS DRIVER FOR RMON2 JSR PC,RRCILB ;AND READ THE BLOCK MOV (SP),2(R3) ;PATCH DDL MOV (SP),R4 ;GET IT IN THE REGISTER BIS #10000,2(R4) ;TO FLAG THE DRIVER AS SYS DEVICE MOV 4(R3),R2 ;GET INTERRUPT ADDRESS MOVB 5(R4),R3 ;OFFSET O ;DISK CONTROL CLEAR COMMAND READ=5 ;READ COMMAND ; .GLOBL RCSTRT ; RCSTRT: START: MOV #INIT-START,R0 ;GET START OF CO MON BUF CHAR FORM FEED? BEQ LPEMTY ;NO: EXIT WITH NO ACTION JSR PC,NEWPGE ;YES: EJEC% %2U"4U%G  1 K Ӌc j2 & Β | r˥  h |$ f.<7 f^7 7C "p8D & 7PLb`$^ Pĝ@5@$5Ee@ ы&^ '*DE TO MOVE MOV BEGIN,R1 ;GET START OF DESTINATION MOV R1,R4 ;SAVE FOR TRANSFER MOVE: MOV (R0)+,(R1)+ ;MOVE CODE TO HIGH T TO TOP BR LPTR01 ;...AND GO BACK FOR MORE LPPR01: MOV BUFBGN,@#R.AD ;LOAD MEMORY ADDRESS REGISTER MOV R4,@#: ˥.˥$D U    F` 0˥: ӥ*@ Xv & Β0 e& ˥0> l  ߟn U@l$_ 4n lx f7e~TvJ#$T*  -&f. & e`feDˋ ` je `CORE CMP R0,#END-START ;CHECK FOR END OF MOVE BNE MOVE ;LOOP UNTIL END OF CODE MOV R4,PC ;THEN TRANSFER TO BOOT INIR.WC ;OUTPUT WORD COUNT MOV R4,WCSAVE ;SAVE WORD-COUNT FOR POSSIBLE RE-PRINT MOV #1,@#R.LF ;SET FORF INTERRUPT CODE ADD (SP)+,R3 ;ADD START OF MODULE MOV R3,(R2)+ ;SET THE TRAP ADDRESS CLR (R2) ;ZERO STATAUS SO MOVB WORKS MOVB 6(R4),(R2) ;STORE THE PRIORITY LEVEL JMP IGNORE ;THAT'S IT .SBTTL COMPUTE DISK ADDRESS OF DRIVERS FOR THE DDL SDVADR: MOV 4(R1),-(SP) ;SIZE IN BYTES ADD #30.,(SP) ;COMPUTE CHUNKS ASR (SP) ;IN WORDS !!!!!!! ASR (SP) ;SIFT AND ASR (SP) ;SHIFT SWAB (SP) ;FOR OTHER TYPE OF DISK ADDR BIC #1777,(SP) ;CLEAR OUT JUNK FLAG BIS 2(R1),(SP) ;SET DISK ADDRESS AUTOLINEFEED CMPB @#SWR,#2 ;HAS CONSOLE SELECTED DOUBLE-SPACING? BNE LPPR03 ;NO: LEAVE IN SINGLE-SPACE MODE MOV #3,@#R d!>4M   D  5 &f ezH5  e$wew  t @ 5@W$^ 55  @@ 5  weTyL$)Ce K & N  S KEH&5  f f RESS BOOT: MOV EXTRPG,R0 ;GET EXTERNAL PAGE ADDRESS MOV #CLEAR,(R0) ;CLEAR OUT RF CONTROL ADD #10,R0 ;ADD DEFLECTION C.LF ;SET FOR AUTO-DOUBLESPACE LPPR03: MOV #144000,@#R.CM ; /////PRINT ///// CLR CURBUF ;FORCE NEW& &   e"D(&( *e * ߕ7 ^7 X9$   J &^ xty uEW! W! 3W! W! RW!` SA9   ^ v  C` F ^  |   J   b  ,  ׯ, LR (R0) ;CLEAR EXT. ADDRESS MOV (R1)+,-(R0) ;SET START BLOCK BOOT1: MOV (R1),-(R0) ;SET MEMORY ADDRESS BIT #1,(R1)+ ;I LINE NEXT TIME RTS PC LPEMTY = . ;MONITOR BUFFER IS EMPTY MOV R3,CURBUF d!?On&^ %(e% % E%h%  EV   &  NcN  FLAG MOV (SP)+,6(R3) ;DUMP IT IN DDL SLOT BR IGNOB ;NEXT CIL MEMBER .PAGE ;THE SECONDARY TABLE HAS THE SCW SETUP PROPERLY SO: .SBTTL HERE THE CLOCK MODULE CALLS FOR HELP CLCASE: FLAG ADD FREQ,R2 ;ADD CORRECT FREQUENCY MOV LODADR,-(SP) ;STACK LOAD ADDRESS JSR PC,RRCILB ;READ THE MODULE IN CORE MOV (SP),@(SP) ;SET FIRST WORD OF CLOCK MODULE ADD #2,@(SP) ;TO POINT TO SECOND ONE ADD #4,(SP) ;POINT TO THE INTERRUPT CODE .SBTTL HERE DO CLOCK DEPENDENT WORK CMP R3,#'P ;IS IT ! !P  U%D|C aU%  (  & fe& f ff fvΊ%4 h 7 קx 7 zwH7{fwrdo 7dJ%u#U%(kQ4dxl 7V7N   & ) TO ԕ ԕ 77&  ADC R3 ;&ROUND UP IF NEEDED MOV R3,-(R0) ;PUT IT IN EXTERNAL NEG (R0) ;REGISTER ADD 2(R0),R3 ;ADD IN BASE ADDRESS MBERED UNTIL NEXT BUFFER TRANSFER, SO THAT ; CURRENT LINE CAN BE CONTINUED TO A LINE TERMINATOR. THE ABOVE EXIT ; PROVIDES  @ SF%N$^ "U%G, !ԋ !  e  7D5  e, 5$ $Hn & pe$    ̕<ׯ<7 7 mׯ 7 7 wf r  2& 0Z 9A MOV (R3)+,T1 ;AND SAVE THREE WORDS FOLLOWING MOV (R3)+,T2 ;THE XFER MOV (R3),T3 ;FOR OUR MUST BE FOUR WORD MULTIPLE XFERA STACK-POP, WHICH IN THIS CASE REMOVES THE CALL TO THIS ; SUBROUTINE.) PARI um5 ,,t F%$^ e 5@ ~fʊ U n (AQ$ 6e D%  UN @@$  K@  0 EQ| eA KW11-P BNE CHCLL ;NO FORGET IT FLAG TST CPXIST ;DOES THE CLOCK EXIST?? BEQ IGNOCL ;NO FORGET IT SETABS R3,CPDAT ;POINT TO THE CP DATA MOV #1,@(R3)+ ;SET COUNT SET BUFFER REGISTER MOV #1,@(R3)+ ;SET COUNTER MOV #115,@(R3)+ ;SET STATUS SIVAC: MOV (SP)+,@(R3)+ ;POINTER TO INTERRUPT CODE MOV #PRI6,@(R3) ;AND THE INTERRUPT PRIORITY ;*************************************************************** MOV R2,@#SCW ;SET UP CLOCK INFO ;*******************************************************ʋ5@ffMDe"@  H P  @`$    eee J- )  &   7e 6  f t   A f  BPL WAIT ;KEEP WAITING TST (R0) ;CHECK FOR AN ERROR BMI ERROR ;ERROR FOUND MOV T3,(R3) ;UNSAVE WORDS MOV T2,-(R3) MOVB #7,SHFTCT ;TEST LOW SEVEN BITS ONLY MOV R5,-(SP) ;DO WORK ON STACK PARIT1: RORB (SP)w`! eE! $5 $5fNl P(5d5 CCh(5@ Hp p pp e d%   e& e  C, 2 (( e$)  Q$fQ$f (AP M R|ҕSҕYҕ:\   f  W: Ҕ  ee ;WE SAVED MOV T1,-(R3) JMP @(R1)+ ;ELSE DISPATCH T1: 0 T2: 0 ;SAVE AREA T3: 0 .=START+200-30 ERROR: HALT ;HAL ;SHIFT OFF LOW BIT ADCB PRTYCT ;ACCUM COUNT OF SET BITS DECB SHFTCT ;MORek 555YU 4!dddQ$B e0 H""I&NHAt & $ $ ea(e| e & KEewE-V 7  eeBe     E MACROkQrE,I/CR WORD 1, BITS 15-4 ; C.C.2 > WORD 1, BITS 3-0; WORD 2, BITSveGҕ ҕ W#AS4 0eR#"e  w(& : 5er  e\ wQ$ POINTER BR INIT00 ;AND RETRY BLOCK: .WORD 0 ;START BLOCK LOAD: .WORD 0 ;LOAD ADDRESS COUNT: .WORD 0 ;BYTE COUNT XF PC .PAGE PRTONE = . ;SUBRTNE TO PUT OUT ONE CHARACTER BIT #4,@#R.ST ^ , .b|e 8 9&e2E? c  Tc8$)  E g S  15-8 ; C.C.3 > WORD 2, BITS 7-0; WORD 3, BITS 15-12 ; C.C.4 > WORD 3, BITS 11-0 ; ; THE PACKED FORM WILL BE TRANSFERRED  Jv 5E F\w. w \ wD E F$&& &  ( U `ER: .WORD 0 ;TRANSFER ADDRESS BSIZE: .WORD 64. ;BLOCK SIZE BEGIN: .WORD 37250 ;BOOTSTRAP START EXTRPG: .WORD 177460 ;EX;TEST "PRINTER READY" BEQ .-6 ;WAIT TILL THRU SO WON'T CLOBBER MODE CLR @#R.LF MINUS ONE CILLEN: .WORD CILSZ0 ;FIRST VALUE TRIED MAXCHK: W ;MAXIMAL FREE CILSIZ: W ;SIZE OF CIL DISK BLOCKS CFTBAS: W ;BASE OF CONFIG CONTROL DATA CFTDAT: W ;DATA PART OF CONFIG MODULE CFTBLP: W ;POSITION OF CONFIG MODULE IN REDUCED CIL NXTDRV: W ;USED FOR DDL SET UP SYSDEV: W ;NAME OF SYSTEM DEVICE IN RADIX50 RKDENS: W ;DENSITY OF DK0 0=LOW 1=HIGH LODADR: W ;ADDRES USED TO LOAD MODULES DDLBEG: W ;SAVE HERE POINTER TO START OF DDL DDLEND: W ;SAVE HERE END ADDRESS OF DDL IOFUNC: W  ;MODETO FIRST-CHAR MOV #-1,@#R.WC ;ONE WORD MOV PC,-(SP) ;BUILD ADDRESS... ADߕ$v"U%Gszx$ d!AU&^ %&  aef& T READ REQUEST. ; ; TREATMENT OF ASCII READING WILL STILL FOLLOW PATTERN ; DESCRIBED IN THE PREVIOUS PARAGRAPH WITHOUT EXCEN ,lHV  L w&Te:'7, 0ߓp |    w\7 7 &e .p,`( qh+.rD X.D #ONECHR-.,(SP) ;...FOR THE ONE/CHARACTER WORD MOV (SP)+,@#R.AD ;LOAD MEMORY ADDRESS REG MOV )ɋȕ ` | 5& e  s~ K $  PTION. ; ; THE ONLY CONTROL CARD WHICH WILL HAVE ANY EFFECT ; IN BINARY READING WILL BE THAT INDICATING E.O.F. (IN ; THIS # `%TI%NE%LOU   w6U   e,A>e<e &e ``C  b g.LEȋ Ya(  r@> #4000,@#R.CM ; START : NO INTERRUPT TST @#R.ST ;WAIT FOR DONE BPL .-4 BIT   0, & E  I, 5ȕ &  ȕe ;READ OR WRITE FUNCTION NEEDED FOR BOOT DX1BAS: W ;BASE ADDRESS OF KB.DX1 MODULE PRGCLK: W ;ONE IF CONFIG HAS PROGRAMMABLE CLOCK LCLCLK: W ;A LINE CLOCK SHKBCM: W ;NUMBER OF SHARED KEYBOARD COMMANDS FREQ: W ;FREQUENCY SET DURING FIRST PASS USRVER: W .PAGE ;TEST CNSTANTS RKHVAL: .RAD50 /DKH/ ;RKH DRIVER RKLVAL: .RAD50 /DKL/ ;RKL DRIVER RKVAL: .RAD50 /DK/ ;SUBSTITUE VALUE KBVAL: .RAD50 /KB/ ;KEYBOARD IDENTIFICATION TSIXV: .RAD50 /TS/ ;TITLE OF 60H MODULE .GLOBL S.DRVR SYSDRV: .W  Հ e 0  "U%M&0 &.^  2 v  4 ( ' ; CALL WILL NOT CAUSE READING OF A CARD TO ALLOW THIS ; TO BE TRANSLATED AS REQUIRED BY THE READ MODE ; SPECIFIED BY THE Bc   5   < ef  e $Y     X] 4 4 0 % Lk,zEȋ Ya(  @>,( +++ 7 w,NԮ+ TS PC WCSAVE: .WORD 0 SAVRTN: .WORD 0 CURBUF: .WORD 0 BUFBGN: .WORD 0 .TITLE PATCH EXAMINE/CHANGE DISK WORDS ; ; WRITTEN ON MAY 14, 1973 BY DAVE MCMILLEN ; .MCALL .INIT,.OPENO,.OPENI,.READ,.USER. ; ; C) DRIVER CAN ALSO BE USED FOR 80-COLUMN MARK ; SENSE READER. FOR 40 -COLUMN READER, ECONOMIES ; IN BUFFER SIZE "5p   & &"u e $^ ( f&^    w  % p P D@ e~ e wh wf   F f BUFEND: .WORD 0 MONCNT: .WORD 0 MONBUF: .WORD 0 ONECHR: .BYTE 0 .BYTE 0 FORMFD: .BYTE 0 TABPTR: .BYTE 0 PRWRITE,.WAIT,.CLOSE .MCALL .RLSE,.TRAN,.EXIT,.CSI1,.CSI2 ; .PARAMS ; ; PATCH: .INIT #CMOLB .INIT #CMILB ;INIT THE KEY CAN BE OBTAINED BY DEFINITION ; AT ASSEMLBY OF PARAMETER "MARKS". THIS WILL ; ALSO PREVENT AUTOMATIC REMOVAL OF COLS 33-40 ORD S.DRVR ;INIV IS THE KEY VARIABLE SEE COMMENT AT LABEL MRT. INIV: .IIF DF,FTODT .WORD 0 ;ALLWAYS CALLED SECOND .IIF NDF,FTODT .WORD -1 ;FIRST TIME ONLY ;HERE DEFINE CLOCK ADDRESSES FOR KW11-P CPDAT: .WORD 172542,172544,172540,104,106 CLDAT: .WORD 177546,100,102 .PAGE ;HERE STARTS THE TABLE AREA OFTHE HICODE ;DOIT IS USED DISPATCH WHEN PROCESSING THE REDUCED CIL INDEX ; .MACRO SOFF X .IRP P, .WORD P-CALTYP-2 .ENDM .ENDM SOFF .SBTTL DISPATCH ADDRESSES FOR CIL M ; IN 'BLANKS-SUPPRESS' MODE OF USAGE. ; XXXXXXXXXXXXXXXXXXXXXXXXX ; X X ; X C EE E& Nee '&$|&et&ffe$)&ff EU !w* $  et X   ref  >& < a(t $  v Rf ;RESERVE SPACE FOR BUFFER .END ET UP INPUT EXTENSION .OPENI #CMILB,R0 ;AND OPEN IT UP MOV DEFDSK,DSKLB+6 ;SET UP DEFAULT DISK AS 'SY:' JSR PC,NEWDSK ;I NOTE X ; X X ; XXXXXXXXXXXXXXXXXXXXXXXXX ; ; PARAMETER DEFINITIONS CAN BE MADE DURING PASS 1 ; OF THE ASSEMBLY ONL qF e"(U%M !$B! $ d!CAZaBqF V)͋ ;SPECIAL CASE PROCESSING: ; A) ERROR ROUTINE: CR.ERR: CLRB @#CR.CSR ;STOP INTERRUPTS JSR PC,CR.NRY ;INFO'&&kQ@ /)LxKA 5  kQ> ~?IK> Ncw @ Qzz}kQ@ )NPAkl"NITIALIZE THE DISK ; INPUTC: .WRITE #CMOLB,#PROMPT ;PROMPT THE USER .READ #CMILB,#COMAND ;AND READ A COMMAND .WAIT #CMIL#Y IF REQD AS DESCRIBED IN ; PAL-11R MANUAL, SECTION 9-2, E.G. ; ; #CR,LP:,/PA:2 ;THE NEXT TABLE CORRESPONDS TO TABLE DEVADR ;IN THE SENSE,THAT DEVTBL FLAGS WITH A 1 THAT ;THE DEVICE CORRESPONDING WITHE THE ;ADDRESS ENTRY IN DEVADR EXISTS PHYSICALLY ;----CORRESPONDING MEANS ENTRIES WITHE THE SAME INDEX ;----IN THE RESPECTIVE TABLES ;A ZERO IS USED TO FLAG NONEXISTENCE .SBTTL TABLES OF DEVICE NAMES AND CORRESPONDING .SBTTL TABLE FLAGGING THE DEVICE EXISTENCE NAMDEV: DEVNAM DEVTBL: TBLDEV ;THE NEXT TABLES ARE) f@  /K |  p   &$ !"$U%G{$v  7  *F: MOV CR,R1 ;GET DDB ADDRESS .IFNDF BINARY ;FOR SIMPLE VERSION ... MOV 10(R1),16(R1) ;... NO DATA READ ON EOF .ENDC +  f E$ Ae"$   U w% ft 4 ( e:e ,CK IS WRITTEN .EXIT ;IF MODIFIED, AND THEN EXIT DECODE: MOV #COMAND+6,R0 ;SET UP TO ACCESS THE COMMAND CMPB (R0),#40 ;I-STANDARD PARAMETER DEFINITIONS: BLANKS = 0 ;ENABLE BLANK SUPPRESSION DEFALT = 0 .  & &  &ff P0e@1& & 2%"U%e/ .IFDF BINARY ;MAYBE SOME IF BINARY ... ADD #16,R1 ;SO MOVE TO UNUSED COUNT STORE MOV R0,@R1 ;... & COMPUTE VALUE REQD 0 U w 8e p le b (4   2  wJ7  4(w Eee1S IT A TERMINATOR BLT INPUTC ;YES - GET ANOTHER LINE CMP (R0),(PC)+ ;IS IT "B ;A REQUEST FOR A BLOCK? BEQ BLOCK ;2;READ "FIELDATA" CODE BY DEFAULT R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 ;INTERFACE TABLE: CR: .WORD 0 ;3f.GbeP $^ ( &^ E $  (&  U ( "  4 SUB CR.UBE,@R1 ASR @R1 ;... AS WORDS! .ENDC COM @R0 ;SET UNDERWAY FLAG TO PREVENT READING MORE CARDS CLRB CR.CDN  USED TO STORE: ;1 POINTERS TO SPECIAL CIL MEMBERS(CILLOC) ;2 A TABLE WITH SPECIAL EMT NUMBERS ;3 A ND A TABLE WITH DISPATCH OFFSETS .SBTTL TABLES FOR SPECIAL MODULES DO NOT REARRANGE SPEML: .RAD50 /033/ ;KBI EMT .RAD50 /060/ ;XIT EMT .WORD 0 ;TABLE END CILLOC: KBILOC: W ;POINTER TO CIL SLOT XITLOC: W ;XIT EMT MODULE LDRLOC: W ;HERE WE SR;TORE MRT COPY BCLLOC: W ;INDEX OF BCL MODULE ZERO IF NO BATCH DX1LOC: W ;KEY BOARD COMMAND INDEX TABLE KILLOC: W ;KILL MODULE TMNADR: W ;CIL A9;BYPASS END-CARD PROCESSING FOR E-O-F CR.EXT: BISB #2,@#CR.CSR ;ALLOW REST OF CARD THRU BR CR.CXT ; C) CONTROL CARD SEEN: T Ve  + 5U f &  7P - PU e > N 2   ;L ;A REQUEST TO LIST A LOCATION? BEQ LIST ;YES - GO TO LIST MODE CMPB (R0),(PC)+ ;IS IT 'C ;A CLOSE REQUEST? BEQ<0 ;ALLOW BINARY IF REQD. .ENDC .BYTE 3 ;STD BUFFER SIZE = 96 BYTES .BYTE CR.INT-CR,300 ;INT'RUPT SVCE AT PRL 6 .BYTE=0ECEDVONTCOPESGUALUJNUJYAMRPARAMBEFNAJ e~0 B `e”tf !>: .IFNDF ONLY26&ONLY29 ;FOR DUAL PUNCH DRIVER ... CR.026: MOV #104,CR.TOS ;... SET TABLE OFFSET ... BR CR.EXT ;... & IGN% v 5       w: `w e& ee | #N@eT$ @ CLOSE ;YES - NO LONGER WORK WITH THE CIL CMP (R0),(PC)+ ;IS IT "EX ;AND EXIT REQUEST? BEQ EXIT ;YES CMP (R0),(PC)A CR.OPN-CR ;OFFSET TO OPEN .BYTE CR.TFR-CR ;OFFSET TO TRANSFER .BYTE 0,0,0 ;(NO CLOSE OR SPEC. FUNC.) CR.NAM: .RAD50 'CRB  --[{   3a 7kV%p2e $  " M eCORE REST OF CTL CARD CR.029: CLR CR.TOS BR CR.EXT .ENDC .IFDF BLANKS ;IN SUPPRESS VERSION CR.ZON: CLRB CR.ZSW D .TITLE ZAP ZAPS THE DISK .MCALL .PARAMS,.INIT,.TRAN,.WAIT .PARAMS BLOCK: 0 READ: MOV BLOCK,TBLK .INIT #DSK .TRAN #DDDRESS OF TMON MODULE TMNSIZ: W ;SIZE IN BYTES OF TMON DSPTBL: .WORD .WORD UPDOFF=CILLOC-SPEML-2 SPDISP=UPDOFF+DSPTBL-CILLOC ;END OF DO NOT SEPARATE .PAGE ; IN1BLK IS USED TO SIMULATE A REDUCED CIL ENTRY ;WHEN READS ARE MADE IN IN UNITS OF BOOTBLOCKS .SBTTL I O BLOCKS IN1BLK: .WORD 0 ;JUNK .WORD 0 ;JUNK .WORISK,#TB .WAIT #DSK HOLD: HALT BR HOLD WRITE: MOV BLOCK,TBLK2 .INIT #DSK .TRAN #DSK,#TB2 .WAIT #DSK BR HOLD 0 DJM: .WRITE #CMOLB,#BADCMD ;NONE OF THE ABOVE - TELL USER NO-GO BR INPUTC ;AND GET ANOTHER COMMAND OPEN: JMP XOPEN LIST: JMK ;12-19-72 CLR @#CR.CSR ;GET ACTUAL STATUS, MINUS TRANSITION BITS ;12-19-72 LF "RU%M:/  `$ &d!EP_xEW! +MH TO IGNORE CC.73-80 BR CR.EXT .ENDC ;READER NOT READY SUBROUTINE: SK: 0 .RAD50 /DSK/ 1 .RAD50 /DC/ TB: TBLK: 0 BUF 64. 5 TB2: TBLK2: 0,BUF,64.,3 BUF: .BLKW 400 .END HOLD OP XLIST CLOSE: JMP XCLOSE DISK: JMP XDISK EXIT: JMP XEXIT HELP: JMP XHELP BLOCK: JSR PC,CBLOCK ;WRITE OUT CURRENT BLOCK IP BIT #400,@#CR.CSR ;IS READER READY? ;12-19-72 BNE CR.ONR ;IF NOT TELL USER TO READY .IFNDQqF   Rȋ W! F& e& c e aeU@&E@r~5@3 (RCR.NRY: MOV CR.NAM,-(SP) ;IDENTIFY DEVICE MOV (PC)+,-(SP) ;12-17-72 S$T T r( > |,TB<,z*xTF ANY IS IN JSR PC,GBLKNM ;GO PICK UP THE BLOCK NUMBER MOV R0,CURBLK ;NOW GO GET THE JSR PC,RBLOCK ;NEXT BLOCK BR INPUD 0 ;DISK BLOCK NUMBER .WORD 0 ;BYTE COUNT ;IN2BLK IS ABLOCK USED TO RREAD AND WRITE DISK DATA ;THE BLOCK CONTAINS THE SAME INFO AS THE FIRST 4 ;WORDS OF THE DISK PARAMETER BLOCK IN2BLK: .WORD 0 ;DISK BLOCK NUMBER .WORD 0 ;MEMORY ADDRESS .WORD 0 ;BYTE COUNT .WORD 0 ;RETURN ADDRESS ON I/O READY .PAGE ;HERE WE DEFINE ALL UTILHTY ROUTINES ; ; ;THERE ARE TWO READ ROUTINES ;1 RCILB THIS READS A BLOCK WITH AN ADDRESS GENERATED BY CILUS ;2 RBOTB THIS READS BLOCKS WITH NUMBERS ASSIGYTC ;AND ANOTHER COMMAND OPEN: TST (R0)+ ;OVER THE 'O ' TO THE FILE NAME MOV #AFNAM,R1 ;SET UP FOR THE MOVE MOV #7,R2 ;Z ;TABLE OFFSET IF NOT DEFALT .ENDC ;12-17-72 .IFDF [E@  U0eȊN$ d!ma$ ,E(!y\776 ;DROP CPU LEVEL TO LET IN KB: INTERRUPT;12-19-72 BIT #2000,@#CR.CSR ;WAIT FOR TRANSITION TO "ON-LINE"]\ĝZ7x+7N J x+G,p+!0w & v+p+9,@* D A  &DCc ^MAX SIX CHARS OPELP1: MOVB (R0)+,R3 ;PICK CHAR CMP R3,#40 ;SPACE? BEQ NOGOCM ;NO-GO IF SO BLT OPENEX ;IF TERMINATOR,_DEFALT ;... AS APPROPRIATE MOV #104,(PC)+ CR.TOS: .WORD 104 ;OFFSET FOR 'DEFALT'. INITIALIZED IN ; `&^ %0el&A-l&"B& Ne  vUU vJla ;12-17-72 BEQ .-6 ;12-17-72 RTS PC ;TRY AGAIN IF COMEb ,w Dw  w  ' 7  p, Մ &w \w wXw w ,2 fw  w c NO EXTENSION CMP R3,#'. ;PERIOD? BEQ OPEFIL ;YES - FILL WITH SPACES IF NEEDED MOVB R3,(R1)+ ;NO - PUT IT AWAY DEC Rd ;CASE OF NO OPEN. .ENDC ;12-17-72 NED IN BOOT STYLE ; ;BOTH ROUTINES CALL WITH THE SAME REGISTER SETUP ;R1 POINTS TO A 4 WORD DISK BLOCK IDENTIFIER ;R2 IS THE CORE ADDRESS WHERE THE BLOCK HAS TO BE LOADED ; ;THE FOUR WORD DISK BLOCK IDENTIFIER HAS THE FORMAT ;1 WORD 1&2 JUNK ;2 WORD 3 DISK BLOCK # ;3 WORD 4 SIZE OF BLOCK IN BYTES .SBTTL READ AND WRITE ROUTINES RCILB: MOV #RCODE,IOFUNC ;READING!!!!! COMMIO: MOV R0,-(SP) ;SAVE IT OR LOOSE IT JSR PC,CILBOT ;CONVERT IT JSR PC,RBOTB ;READ (OR WRITE) THE BOOT BLOCK MOV Ri .ENDC ;12-17-72 .IFDF BLANKS ;IF BLANK-SUPPRESS VERSION ... j c `@@ @)#&%7 2JANFEBMARAPRMAYJUNJULAUGSEPOCTNOVDECdvrL e `  %@kCR.TBL: ;PARITY ASCII CONVERSION TABLE FOR 029 PUNCH .IFNDF ONLY26 .BYTE 240 ;SPACE .BYTE 261 ;1l< w 4w < 7 w ",.7 w &7 7  \,w7  ww (b ww =,m UP EXTENSION MOVB #40,(R1)+ ;NO - CONTINUE BR OPEFIL OPEGEX: MOV #4,R2 ;MAX THREE CHARS CMP R1,#AFNAM+9 BLO OPELP1 n MOVB #1,CR.ZSW ;FORCE SPACE-SUPPRESSION ON MOVB #2,CR.ESW ;...BUT DON'T SUPPRESS CC. 73-80 o 44W-& 5"< de#N#e % $J$ ,EI0~p .BYTE 262 ;;2 .BYTE 63 ;3 .BYTE 264 ;4 .BYTE 65 ;5 .BYTE 66 ;6 .BYTE 267 ;7 .BYTE 270 ;8 .BYTE 240 ;Eqw A B` %.,<օ w| 7wr|wh,by E 7ӂwhb Er ;IF NOT SECOND '.', CONTINUE BR NOGOCM ;SOMEONE TYPED XXXX.XXX.SOMETHING!!! OPENEX: DEC R2 BLE OPENCH ;FILL WITH SPACEs .ENDC .IFNDF BINARY TST (SP)+ ;IGNORE INTERIM RETURN BR CR.DXT ;... & TAKE COMPLETION .ENDC .IFDF BINARY ;FOR BtV&^ %w6DECNOVOCTSEPAUGJULJUNMAYAPRMARFEBJANXXX E 5 @`e 0,2(R1) ;GET OLD CIL VALUE BACK MOV (SP)+,R0 ;GET IT BACK RTS PC ;READY RBOTB: MOV 2(R1),IN2BLK ;SET UP AN I/O BLOCK FOR BOOTIO MOV R2,IN2BLK+2 ;STORE CORE ADDRESS MOV 4(R1),IN2BLK+4 ;BYTE SIZE OF THE CHUNK JSR PC,READ1B ;READ ONE BLOCK RTS PC CILBOT: MOV 2(R1),R0 ;SAVE CIL NUMBER ADD @#CIL,2(R1) ;AND CHANGE CORE TEMPORIRALY RTS PC ;MAKE IT NOOP .IF NE,FTDEBUG ;BUT LEAVE ROOM FOR PATCHING .BLKW 20 .ENDC READ1B: JSR R5,SAVREG ;SAVE OLD VALUES SETABS R1,IN2BLK ;MAKE AN ABy/: >|W: "` @0- Lx $ ,EJz ;0 .BYTE 257 ;/ .BYTE 123 ;S .BYTE 324 ;T .BYTE 125 ;U .BYTE 126 ;V .BYTE 327 ;W .BYTE 330 ;X .BYTE 1{0w ,w %,@w ke=, w @w jwww=w  ,F w  |,R2 ;NO - NULL FILL BR OPENEX OPENCV: CMP R3,#40 ;WAS THE CHAR A TERMINATOR? BLT OPENUP ;YES - DO IT CMPB (R0),#40 ;}N ;... BEFORE EXIT .ENDC ;SUBSIDIARY ROUTINES: ; A) RESTART AFTER ERROR: CR.AGN: .IFDF BINARY ;IN BINARY VERSION ... ~H&^ % & & NU%ef&f6DECNOVOCTSEPAUGJULJUNMAYAPRMARFEBJA31 ;Y .BYTE 240 ;EMPTY .BYTE 335 ;] .BYTE 254 ;, .BYTE 245 ;% .BYTE 137 ;_ .BYTE 276 ;> .BYTE 77 ;? .Bvw <Ae0w ,w ,l׀ZTXw H- @D7v,> ,: 4,*w [THEN IS THE NEXT ONE? BGE NOGOCM ;NO - ERROR OPENUP: MOV #AFNAM,-(SP) ;NOW CHANGE THE NAME TO RAD50 CLR -(SP) EMT 42  TSTB CR.ISW ;... CHECK IF BINARY READ BEQ CR.TFR ;IF NOT CAN JUST START OVER BR CR.ERD ;ELSE LEAVE USER BUFFER ALONE NXXX E Jf|5 @`e /: W:T`T@w-T  T*YTE 132 ;Z ; .BYTE 55 ;- .BYTE 312 ;J .BYTE 113 ;K .BYTE 314 ;L .BYTES POINTER SETABS R3,IORET ;SET RETURN ADDRESS MOV R3,6(R1) ;AND SET IT MOV IOFUNC,R2 ;GET THE FUNCTION MOV BOOTIO,PC ;JUMP TO BOOT IORET: JSR R5,RESREG ;RESTORE SOME REGISTERS RTS PC .PAGE ;RRCILB READS IN REDUCED CIL BLOCKS AT LOCATION LODADR ;AND UPDATES THIS LOCATION .SBTTL MODULE LOADER RRCILB: MOV R2,-(SP) ;SAVE IT MOV LODADR,R2 ;GET CORE LOCATION ADD 4(R1),LODADR ;UPDATE LOAD PLACE JSR PC,RCILB ;READ THE BLOCK MOV (SP)+,R2 ;AND GO BACK RTS PC ;AS WE CAME WCILB: 115 ;M .BYTE 116 ;N .BYTE 317 ;O .BYTE 120 ;P .BYTE 321 ;Q .BYTE 240 ;EMPTY .BYTE 41 ;! .BYTE 44 ;$ .m79 * y2jx؂XՀLD<`ְNDւ,Xx 6ך׸>ׂԬԃl7gN>,~؋+,FILNAM+4 TST (SP)+ LOOKUP: MOV #FILNAM,-(SP) CLR -(SP) MOV #DSKLB,-(SP) EMT 14 MOV (SP)+,CILBLK MOV (SP)+,MAXCBBS: .WORD 0 ADD #CR.BSZ,@SP ;NOW GET END MOV @SP,(PC)+ ;STORE AS CONTROL CR.IBE: .WORD 0 MOV (SP)+,(PC)+ ;... & AS INIT$ ,Ew$<&^ %l@E l<4$ JR> [RA!&. BYTE 252 ;* .BYTE 251 ;) .BYTE 273 ;; .BYTE 134 ;\ .BYTE 322 ;R ; .BYTE 246 ;& .BYTE 101 ;A .BYTE 102 ;D D 7@7:%2. n,& w %=w ,w $@, w w ww K ADD CILBLK,MAXCBK DEC MAXCBK ;SET UP CIL BEGINNING AND END OF CIL MOV (SP)+,R0 ;GET INDICATOR BIT #200,(SP) ;IS THE. PTR CR.IBP: .WORD 0 .PAGE INCB @PC ;MUSTN'T COME HERE AGAIN! .ENDC MkQ> 2-cK@ % $ 4@  vLIBa>H K@ 3 p,` @ p,`^@ {B .BYTE 303 ;C .BYTE 104 ;D .BYTE 305 ;E .BYTE 306 ;F .BYTE 107 ;G .BYTE 110 ;H .BYTE 240 ;EMPTY .BYTE  :, 7mw ,w %/w \,<  n.߽ MOV #WCODE,IOFUNC ;SET FUNCTION BR COMMIO ;DO THE REST .PAGE ;MOVEUP AND MOVELO ARE MOVERS GETTING THE FOLLOWING INFO ;R0 POINTS TO FIRST SOURCE ADDRESS ;R1 POINTS TO FIRST TARGET ADDRES ;R2 IS THE LAST ADDRESS TO BE WRITTEN IN! .SBTTL UTILITY ROUTINES MOVING CORE MOVEHI: MOV -(R0),-(R1) ;UP ONE WORD CMP R1,R2 ;ALL WENT?? BNE MOVEHI ;MOVE HIGH MORE RTS PC ;DONE MOVELO: MOV (R0)+,(R1)+ ;MOVE IT DOWN CMP R0,R2 ;MORE TO GO BNE MOVELO ;THERE IS THE REST RTS PC ;BYE ;  L eZ,b  !B !=L !64,44 Ԥ .!44  b,%1,CILSET ;SHOW THAT WE ARE WORKING WITH A CIL JMP INPUTC ;AND GET ANOTHER COMMAND NOTFND: TST FILNAM+4 ;WAS AN EXTENSION PXT ;... CORRECT INIT. BR CR.ISP .ENDC MOV CR,R0 ;GET DDB ADDRESS ADD #6,R0 ;... & MOVE TO BUFFER STORE MOV (R0)+,"&( @ %  A$ ,E wB vzv;PARITY ASCII CONVERSION TABLE FOR "FIELDATA" PUNCH: ; COMPRESSED CARD CODE: ; BYT w .  @w @*,ـ % % w  ww V, D  &4ROVIDED? BNE NOTFER ;YES - ERROR MOV DSKLB+2,FILNAM+4 ;NO - PROVIDE 'CIL' BR LOOKUP ;AND TRY AGAIN NOTFER: .WRITE #CM-(SP) ;GET BUFFER POINTER MOV @SP,-(SP) ;... & BUILD BUFF END SUB @R0,@SP SUB (R0)+,@SP MOV (SP)+,(PC)+ ;SAVE RESULT .@K"  `Be (e E T%T%T%TTTT $ (a%E BIT POSITIONS: 7 6 5 4 3 2-1-0 ; CARD ROWS PUNCHED: ^ 12 11 ^ 0 9 8 ^ 1,2,3,4,5,6,OR 7 , C@AEPA&fw w /w 6,Fڀw Lw   ` ,lE ` Z OLB,#NOFILE ;TELL THE USER XINPUT: JMP INPUTC ;AND GET ANOTHER COMMAND XLIST: JSR PC,GBLKNM ;GET THE NUMBER MOV R0,R4 ;SASCIM PRINTS ASCIZ MESSAGES ASCIM: BIT #200,@#TPS ;READY FOR NEXT ONE BEQ ASCIM ;NOT YET WAIT MOVB (R5)+,@#TPB ;BUMP CHAR IN BUFFER TSTB (R5) ;MORE CHARACTERS THERE? BNE ASCIM ;INDEED CMPB (R5)+,(R5)+ ;SKIP ZERO BYTE BIC #1,R5 ;CLEAR ODD BIT RTS R5 ;AND GO BACK FATALM: JSR R5,ASCIM ;GO TO PRINTER MESSZ ^\/CIL IS WRONG CHECK ERROR LIST REBUILD CIL,/<15><12>\ .EVEN JSR R5,ASCIM MESSZ ^\/AFTER CORRECTING AND TRY AGAIN SYSTEM WILL MAKE/<15><12>\ .EVEN JSR R5,ASCIM MESSZ AVE FOR ADDRESS PRINTOUT TST MODSET ;ARE WE IN A SPECIFIC MODULE? BEQ NLIST ;NO - NORMAL LIST MOV R0,R1 ;YES - MOVE TASCII CLEAR SWITCH BEQ CR.RDC ;IF BINARY WANTED ... MOV (SP)+,R0 ;... SET PTRS & SWITCH MOV CR.IBP,R1 CLR R2 ;SET INAAcDD   Q!  &0 h   T&& 3e0CH ; CODE CHARACTER (OCTAL) CODE .BYTE 240 ; SPACE 0 BLANK .BYTE 26p%w Z׭,$U,*ۮ7w Dŝŝ<,PHE LOCATION OVER SUB OFFSET,R1 ;SUBTRACT CURRENT BLOCK OFFSET BLO BLKCHG ;LOWER LOCATION - CHANGE BLOCKS MOV R1,R0 ;SETERRUPT FLAG CR.BIN: CMP R1,CR.IBE ;INTERNAL BUFF EMPTY? BNE CR.BLP CR.ERD: MOV CR.IBS,CR.IBP ;IF SO RESET INTERNAL PTR  ߕߋtߕ$v0 Yb& "U%.$)&&&cA!\*D 5@ 7j& 3$ 1 ; 1 1 1 .BYTE 262 ; 2 2 2 .BYTE 063 ; 3 3 3 Ew$rt wft!,v w w Jw @e:%ĕ ,t72 Ԩw Bw .T THIS AS THE LOCATION SUB BLKSIZ,R1 ;WITHIN RANGE OF THE BLOCK? BLO NLIST ;NO TREAT THIS AS NORMAL LIST BLKCHG: JSR PC,MOV R0,-(SP) ;SAVE USER BUFF PTR ... CR.RDC: .ENDC MOV @SP,(PC)+ CR.UBP: .WORD 0 CLR @(SP)+ ;ZERO UNDERWAY FLAG MOV #^\/A HALT NOW RELOAD A BACKUP SYSTEM/<15><12>\ .EVEN HALT BR FATALM ;NO CHANCE ;DADR COMPUTES IN R4 AN ADDRESS IN MRT DISK ;FORMAT FOR THE REDUCED CIL BLOCK,POINTED TO BY R1 ;WITH AN OFFSET OF 2 AND RETURNS THE RESULT IN R4 .SBTTL ROUTINES TO COMPUTE MRT FORMAT ADDRESSES DADR: MOV 2(R1),-(SP) ;GET THE DISK ADDRESS DADRC: ASL (SP) ;AND MOVE IT TO INC (SP) ;ADD AONE FOR NONRESIDENT CMP R5,#KBILOW ;MSB. OR KBI. MEMBER?? BLO 13$ ;MSB. IS HIS AREA CMP R5,#KBIHIG ;CHECK UPPER LIMIT101,@#CR.CSR ;ENABLE INT & GO FOR CD READ RTS PC ;RETURN USER FOR NOW .IFDF BINAMf F$ ,EP 1&^ %SP  6 6 .BYTE 267 ; 7 7 7 .BYTE 270 ; 8 10 8 .BYTE 240 4ӧ,4 0#.#7$#7$# #w S,Zr#5##g"b"9,V  <ӄ  BKLGOT INC R1 ;UP A BLOCK BR BLKLOP BLKGOT: ADD BLKSIZ,R0 MOV R1,CURBLK ;SET UP THE CURRENT BLOCK ADD OFFBLK,CURBLK RY ;WITH BINARY DATA ... CR.BLP: SWAB @R1 ;... COMPLETE CONVERSION MOV (R1)+,(R0)+ ;... & GIVE TO USER CMP R0,CR.UBE ;U I W W,CAנ> ` ` g E A((X|eE eE ΊE`e  ; EMPTY 11 8-1 .BYTE 246 ; & 12 8-2 .BYTE 275 ; = 13 8- !%&, &e N @ e0w & ,  ",;WITH THE MODULE OFFSET JSR PC,RBLOCK NLIST: CMP R0,BLKSIZ ;IS ADDRESS WITHING BLOCK RANGE? BHIS NLISTB ;NO - BAD ADDRESSER BUFFER FULL? BNE CR.BIN ;IF NOT GET NEXT WORD MOV R1,CR.IBP ;OTHERWISE SAVE INT PTR TST R2 ;COME HERE ON INTERRUPTEN W= EC@@@PN [$ ,E`^&^ %  BHI 13$ ;MSB. FELLOW MOV #256.,R4 ;128 WORDS!! BR 14$ 13$: MOV 4(R1),R4 ;GET THE SIZE 14$: ADD #126.,R4 ;TO GET A MULTIPLE ASR R4 ;SHIFT TO WORDS CMP R4,#256. ;OF 64 EXCEPT HERE BLO 12$ ;NO CHANGE NEEDED CLR R4 ;MAKE IT ZERO 12$: SWAB R4 ;SWAP IT BIC #37777,R4 ;CLEAR RUBBISH BITS BIS (SP)+,R4 ;ADD IN THE REST RTS PC ;AND GIVE THE RESULT .PAGE ; ;THESE ARE SPECIAL REGISTER SAVE AND RESTORE ROUTINES ;USED WITH MONITOR INITIALIZATION; THEY DO NOT CHECK ;FOR STACK OVERF a WR  WK [%@eJ!!! ̋ee|&^ ߓp< 16 8-6 .BYTE 300 ; @ 17 8-7 .BYTE 071 ; 9 20 9 n!,dj  7,XR-P ,Dw@ 78 %(! ,݄  %?PERATOR JSR PC,TWOOUT MOV BUF(R1),R5 ;FOLLOWED BY THE DATA JSR PC,NUMOUT MOV #": ,R5 JSR PC,TWOOUT ;FOLLOWED BY SEPE ;... & DUMMY SAVE REGS. CR.ODN: TST (SP)+ ;IGNORE RETURN PC BR CR.DXT ;... & TAKE COMPLETION EXIT .ENDC $ ,EH S&^ %2 ɊA!@ , 0"3  BEB WS .BYTE 060 ; 0 40 0 .BYTE 257 ; / 41 0-1 .BYTE 123 ; S ?,w N%w 77,w Z e0w ,w ,"ްw pRATOR .READ #CMILB,#COMAND .WAIT #CMILB TSTB COMAND+3 BNE XEXIT ;IF EOF OR ERROR, EXIT MOV R0,R1 ;SAVE R0 MOV #C;INTERRUPT SERVICE ROUTINES: ; A) CHECK FOR ERROR & COLLECT INPUT: CR.INT: MOV R0,-(SP) ;SAVE  Ɍ  3U%## Al| =A! #!E[ &  `Ll@$,e4 42 0-2 .BYTE 324 ; T 43 0-3 .BYTE 125 ; U 44 0-4 .BYTLOW: SAVREG: MOV R4,-(SP) MOV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) MOV R5,PC RESREG: INC (SP)+ MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R2 MOV (SP)+,R3 MOV (SP)+,R4 RTS R5 RM.END =. .IF DF,DOSDBG .=.+12000. .ENDC .IIF DF,FTODT .END .IIF NDF,FTODT .END RM.005 GIVE THE RESULT .PAGE ; ;THESE ARE SPECIAL REGISTER SAVE AND RESTORE ROUTINES ;USED WITH MONITOR INITIALIZATION; THEY DO NOT CHECK ;FOR STACK OVERFLOW: SAVREG: MOV R4,-(SP) MOE 126 ; V 45 0-5 .BYTE 327 ; W 46 0-6 .BYTE 330 ; X 47  Ëנe ee e ѐ  @(, ODT-11R V004A^ BE R1,-(SP) ;SAVE ASL R1 MOV R0,BUF(R1) ;REPLACE MOVB #-1,BLKMOD ;SHOW MODIFIED BLOCK MOV (SP)+,R1 ;RESTORE NLIST0: CMP BCS CR.ERR ;GO RETRY IF ERROR BMI CR.DUN ;CLEAN UP IF DONE MOV R1,-(SP) ;NOW SAVE USER R1 .IFDF BINARY ;IN BINARY fwl  %eJ   & e4   $)3U%l@ @  ,| ( e&^ d 0-7 .BYTE 131 ; Y 50 0-8 .BYTE 240 ; EMPTY 51 0-8-1 .BYTE 137, *;/\ $G _<^,OWEBP@>SRC-FI!XASPM CFRB.,=B (R0),#12 ;ADVANCE TO NEXT? BNE XINPUT ;NO - JUST TAKE ANOTHER COMMAND MOV #15,R5 ;YES JSR PC,TWOOUT ;PRINT A CR MOVERSION ... CR.ISW: BR .+4 ;... USE APPROPRIATE CONVERSION BR CR.ASC ; B) BINARY CONVERT & STORE: MOV CR.IBP,R1 ;GET  p+$ ,Ei ]{&^ %l@Au  H D! ! f h eeɋaE ^ ; _ 52 0-8-2 .BYTE 254 ; , 53 0-8-3 .BYTE 050 ; ( 54 <rѶV R3,-(SP) MOV R2,-(SP) MOV R1,-(SP) MOV R0,-(SP) MOV R5,PC RESREG: INC (SP)+ MOV (SP)+,R0 ;TO SPECIFY A DOS-11 CONFIGURATION, THIS ;FILE HAS TO BE EDITED, ACCORDING TO THE ;INSTRUCTIONS GIVEN IN THE FOLLOWING ;COM ERROR JSR PC,CBLOCK ;YES - WRITE CURRENT IF NEEDED INC CURBLK ;UP A BLOCK SUB BLKSIZ,R0 ;SUBTRACT ONE BLOCK'S WORTH  ASL @SP ;IF SO SHIFT INPUT TO HIGH ASL @SP ASL @SP ASL @SP CLRB (R1)+ ;MAKE NXT INSTR = MOVB CR.BST: BISB 1(SP),5    U%֌ ܁ LɌa M &&&A$ ,Ej 042 ; " 57 0-8-7 .BYTE 132 ; Z 60 0-9 MENTS. ; ;INSTRUCTIONS PRECEDE EACH OF THE LINES TO BE EDITED. ;THIS MODULE HAS SIX SECTIONS: ; 1. SPECIFICATION OF A BR NLIST ;AND TRY AGAIN NLISTE: .WRITE #CMOLB,BADLOC ;SHOW A BAD LOCATION JMP INPUTC ;AND TAKE ANTOHER COMMAND -1(R1) ;SET HIGH BYTE AS REQD. MOVB (SP)+,(R1)+ ;THEN LOW BYTE MOV R1,CR.IBP ;SAVE PTR CMP (SP)+,#7400 ;NOW LOOK FOR EOF&^ %  e0e K" A  W$@ $` @  F e 8  @ P$0 .BYTE 055 ; - 100 11 .BYTE 312 ; J 101 11-1 .BYTE 113 ; DEFAULT UIC FOR BATCH ; 2. SPECIFICATION OF CLOCKS ; 3. SELECTION OF DOS STANDARD DEVICES ; 4. SYSTEM IDENTIFICATION ; 5. CTAL NUMBER OF THE EMT. ; E.G. EMT 166 HAS A TITLE STATEMENT: ; .TITLE EM.166 ; 5 THE LOAD MODULES SHOULD BE INSERTED IN CARD BNE CR.BXT DECB @R0 ;... PUNCHED 12-11-0-1 BPL CR.BXT ;... IN CC 1 THRU 8 ASLB @R0 BPL CR.EOF ;IF FND IGNORe Œ^| A% W)E(H$I1 e Ō(D      $ K 102 11-2 .BYTE 314 ; L 103 11-3 .BYTE 115 ; M 104 11-4 SPECIFICATION OF USER DEFINED EMT'S ; 6. SPECIFICATION OF USER DEVICES ;THE USER SHOULD BE AWARE THAT THE CONFIGURATION MO THE CIL. ; THE EMT CODE SHOULD BE POSITION INDEPENDENT AND ; LINKED AT A BOTTOM OF 0. ;AFTER THE MACRO DEFINITION, VALE REST OF CARD BR CR.CXT ;OTHERWISE TRY NEXT TIME .ENDC ; C) ASCII CONVERT & ,ERk&^ % =9:6Uv: f  .BYTE 116 ; N 105 11-5 .BYTE 317 ; O 106 11-6 .BYTE 120 ; P DULE ;SPECIFIES A MAXIMAL SET OF DEVICES.WHEN DOS IS BOOTED, ;THE INITIALIZER TRIES TO REFERENCE ALL DEVICES SPECIFIED ;IN UES OF USER DEFINED EMT'S ;CAN BE INSERTED BETWEEN THE ANGLE BRACKETS. ;NOTE SEE RULES: ;E.G. .IRP P,<140,146> ;DEFINES EMSTORE: CR.ASC: MOVB @#CR.DB2,R1 ;GET COMPACTED INPUT TSTB @R0 ;IF FIRST C.C. ... BNE CR.CVT CMPB R1,#xLW W   e&|zUl 2X$ ,E}  107 11-7 .BYTE 321 ; Q 110 11-8 .BYTE 240 ; EMPTY 111 11-8-1 THE CONFIGURATION MODULE AND CONFIGURES THE SYSTEM ;TO THOSE WHICH RESPOND.THUS ANY DEVICE WHICH IS EITHER NOT PRESENT OR ;T'S 140 AND 146 .MACRO GEMU0 VAL .IRP P,<> .IIF EQ,PHASE SUBST>,VAL .IIF NE,PHASE R50>,P .330 ;... LOOK FOR E-O-F BEQ CR.EOF .IFDF BLANKS ;FOR BLANK SUPPRESS ... CMPB R1,#340 ;... LO .RAD50 /FOP/ .RAD50 /FCR/ .RAD50 /FCL/ .RAD50 /LUK/ .RAD50 /LBA/ .RAD50 /GMA/ .RAD50 /CBA/ .RAD50 /CKX/ .RAD5 .BYTE 240 ; EMPTY 112 11-8-2 .BYTE 044 ; $ 113 11-8-3 .BYTE 252 IN THE CONFIGURATION MODULE WILL NOT BE USED BY DOS. ;REASONS TO OMIT A DEVICE FROM A ;CONFIGURATION CAN BE TO RESERVE IT FOENDM .ENDM GEMU0 ;AFTER THE MACRO DEFINITION, VALUES OF USER DEFINED EMT'S ;CAN BE INSERTED BETWEEN THE ANGLE BRACKETS. ; OK FOR SUPPRESS OFF BEQ CR.ZON CMPB R1,#350 ;OPTION TO SUPPRESS CC. 73-80? BEQ CR.EON 0 /DLN/ .RAD50 /DCN/ .RAD50 /AP2/ .RAD50 /CSX/ .RAD50 /CSM/ .RAD50 /XIT/ .RAD50 /LDR/ .RAD50 /LD2/ .RAD50 /MTO ; * 114 11-8-4 .BYTE 335 ; ] 115 11-8-5 .BYTE 273 ; ; 116 R OTHER PURPOSES OR ;BECAUSE IT IS FAULTY. .PAGE ;BATCH USES A DEFAULT UIC WHEN NO UIC ;WAS SPECIFIED, THE DEFAULT UI NOTE SEE RULES: ;E.G. .IRP P,<140,146> ;DEFINES EMT'S 140 AND 146 .MACRO GEMU1 VAL .IRP P,<> .IIF EQ,PHASE SUBST>,VAL .IIF NE,PHASE R50>,P .ENDM .ENDM GEMU1 ;AFTER THE MACRO DEFINITIONE VALUES OF USER DEFINED EMF 029 CONTROL BEQ CR.029 CMPB R1,#320 ;... OR 026 CONTROL BEQ CR.026 .ENDC CR.CVT: CMPB #140,E NEXT LINE GLOLST: ;IF NO NON STANDARD DEVICES HAVE TO BE ;DEFINED, THE EDITING OF THIS FILE IS READY. ;OTHERWISE IINCE THE [11-0] SERIES IS OMITTED, THE DRIVER STRIPS ; AN OCTAL 40 FROM THE FOLLOWING COMPRESSED CODES BEFORE INDEXING. LOCKS: ; 1 KW11-L THE LINE CLOCK ; 2 KW11-P THE PROGRAMMABLE CLOCK ;THE PROGRAMMABLE CLOCK WILL BE RUN IN LINE MODE. ;TO DT'S ;CAN BE INSERTED BETWEEN THE ANGLE BRACKETS ;NOTE SEE RULES: ;E.G. .IRP P,<140,146> ;DEFINES EMT'S 140 AND 146 .MACRR1 ;IS CHAR [!]? BNE CR.CV1 ;NO MOVB #41,-(SP) ;YES:LOAD ASCII CODE... NSERT THE NUMBER (OCTAL) ;OF NONSTANDARD DEVICES ON THE NEXT LINE. UDDEV=1 ;REPLACE THIS BY OCTAL NUMBER ;OF NON STA; THUS, THE LETTER 'C' IS INTERPRETED AS OCTAL 143, EVEN THOUGH ; THE CARD READER COMPRESSED CODE IS OCTAL 203. ELETE THE LINE CLOCK FROM ALL POSSIBLE ;CONFIGURATIONS, DELETE THE NEXT LINE FTCLL=1 ;TO DELETE THE PROGRAMMABLE CLOCK FROMO GEMU2 VAL .IRP P,<> .IIF EQ,PHASE SUBST>,VAL .IIF NE,PHASE R50>,P .ENDM .ENDM GEMU2 ;AF BR CR.CV2 ;...FOR BUFFER BELOW CR.CV1: CMPB #240,R1 ;IS CHAR [?]? BNE CR.CV3 NDARD DEVICES. ;FOR EACH NON STANDARD DEVICE,THE ;MNEMONIC AND INTERRUPT VECTOR ADDRESS ;HAVE TO BE SPECIFIED. ;THE SPEC .BYTE 053 ; + 200 12 .BYTE 101 ; A 201 12-1 .BYTE 102 ; B  ;ALL POSSIBLE CONFIGURATIONS, DELETE ;THE NEXT LINE. FTCLP=1 ;PROGRAMMABLE CLOCK ;IN THE NEXT LINES ALL STANDARD PD!TER THE MACRO DEFINITION, VALUES OF USER DEFINED EMT'S ;CAN BE INSERTED BETWEEN THE ANGLE BRACKETS. ;NOTE SEE RULES: ;E.G. ";NO MOVB #77,-(SP) ;YES: LOAD AS ABOVE... CR.CV2: MOVB (SP)+,(R0)+ ;...AND POP FROM STACK TO KEEP I#IFICATION OF THESE ITEMS HAS TO BE DONE ;BY MEANS OF THE MACROS GDVUO, GVDU1 ;AND GDVU2 USING THE FOLLOWING RULES. ; 1 STAR$ 202 12-2 .BYTE 303 ; C 203 12-3 .BYTE 104 ; D 204 12-4 %P-11 ;DEVICES ARE DEFINED. THIS IS DONE BY MEANS ;OF DEFINING A SYMBOL FTXX, WHERE XX ;IS THE DEVICE MNEMONIC. ;TO DELETE &.IRP P,<140,146> ;DEFINES EMT'S 140 AND 146 .MACRO GEMU3 VAL .IRP P,<> .IIF EQ,PHASE SUBST>,VAL .IIF NE,'T HONEST BR CR.ST1 ;THEN SKIP TO END OF CONVERT LOOP CR.CV3: ;I COULDN'T THINK(T DEFINING BY USING GDVU0, NEXT ; GDVU1, AND THEREAFTER GDVU2 ; 2 IN EACH MACRO, SPECIFICATIONS ; FOR ONLY 3 DEVICES CA) .BYTE 305 ; E 205 12-5 .BYTE 306 ; F 206 12-6 .BYTE 107 ; G *DEVICE XY DELETE THE LINE ;FTXY=1 BELOW. DO THIS FOR ALL ;DEVICES NOT WANTED IN YOUR CONFIGURATION. FTDC=1 ;RC DISK FTKB+PHASE R50>,P .ENDM .ENDM GEMU3 ;AFTER THE MACRO DEFINITION, VALUES OF USER DEFINED EMT'S ;CAN BE INSERTED B, OF A BETTER WAY TST R1 BPL .+6 ;CONVERT CODES >200 ... ADD #340,R1 ;... TO RANGE >140 MOV R1,-(SP) ;STACK CODE FOR-N BE GIVEN ; 3 IF THERE ARE 3 OR MORE SPECIFICATIONS ; TO BE DONE, SPECIFY 3 IN THE CURRENT MACRO. ;THE MACROS GDVU0, GDV. 207 12-7 .BYTE 110 ; H 210 12-8 .BYTE 240 ; EMPTY 211 12-8-1 /=1 ;TELETYPE FTPR=1 ;HIGH SPEED PAPER TAPE READER FTDT=1 ;DECTAPE FTCR=1 ;CARD READER FTMT=1 ;MAGNETIC TAPE FTDF=1 0ETWEEN THE ANGLE BRACKETS. ;NOTE SEE RULES: ;E.G. .IRP P,<140,146> ;DEFINES EMT'S 140 AND 146 .MACRO GEMU4 VAL .IRP P,<1 INDEXING CR.CV4: SUB #40,R1 ;FOR EACH 40 IN CODE ... BMI CR.STO ;... ADD 21 & STRIP 40 SUB #17,@SP ;... TO GET TABLE 2U1 AND GDVU2 ;PROVIDE THE FACILITY FOR 9 DEVICES. WHEN ;MORE DEVICES HAVE TO BE ADDED, ADD ;ADDITIONAL MACROS WITH NAMES S3 .BYTE 240 ; EMPTY 212 12-8-2 .BYTE 056 ; . 213 12-8-3 .BYTE 251 ; ) 4;RF DISK FTDK=1 ;RK DISK ; REPLACED BY PER DATA PRINTER*** FTLP=1 ;LINE PRINTER FTPP=1 ;HIGH SPEED PAPER TAPE PUNCH .P5> .IIF EQ,PHASE SUBST>,VAL .IIF NE,PHASE R50>,P .ENDM .ENDM GEMU4 .PAGE ;AFTER THE MACRO 6INDEX BR CR.CV4 ;...AND KEEP LOOKING CR.STO: .IFNDF ONLY26&ONLY29 ADD CR.TOS,@SP ;PICK APPROP. TABLE7TARTING ;WITH GDVU3,-.... ;HAVING THE SAME LAYOUT AS ;GDVU0, GDVU1 AND GDVU2. .PAGE ;HERE THE MNEMONIC AND INTERRUPT VE8 214 12-8-4 .BYTE 333 ; [ 215 12-8-5 .BYTE 074 ; < 216 12-89AGE ;THE SYSTEM GENERATED CAN BE IDENTIFIED ;BY A USER DEFINED IDENTIFICATION LINE PRINTED ;WHEN THE SYSTEM IS INITIALIZED.:DEFINITION, VALUES OF USER DEFINED EMT'S ;CAN BE INSERTED BETWEEN THE ANGLE BRACKETS. ;NOTE SEE RULES: ;E.G. .IRP P,<140,14; .ENDC ADD PC,@SP ;COMPUTE ADDR OF BYTE REQD ADD #CR.TBL-.,@SP MOVB @(SP)+,(R0)+ ;... & STORE IN BUFFER CR.ST1: CMP <CTOR ;ADDRESS OF UP TO 3 DEVICES CAN BE SPECIFIED. ;IF THE MNEMONICS AND INTERRUPT VECTOR ;ADDRESS ARE RESPECTIVELY: ;X1,X=-6 .BYTE 243 ; # 217 12-8-7 .BYTE 311 ; I 220 12-9 ; ALSO NOTE: > ;INSERT THE IDENTIFICATION LINE BETWEEN ;THE ANGLE BRACKETS (NOTE: INCLUDE ;NO ANGLE BRACKETS IN YOUR TEXT) ; ON THE NEXT?6> ;DEFINES EMT'S 140 AND 146 .MACRO GEMU5 VAL .IRP P,<> .IIF EQ,PHASE SUBST>,VAL .IIF NE,PHASE R50 ,,>BTHE CHARACTERS [?] AND [!] HAVE COMPRESSED CODES OF ; OCTAL [240] AND [140], RESPECTIVELY, MAKING THEM UNIQUE ; CHARC LINE. IDENT <> ;I.E. IDENT ;IN THE NEXT LINES THE IDENTIFICATION PRINTED AFTER THE V ;IN THE MDRIM+>,P .ENDM .ENDM GEMU5 ;IF EMT'S HAVE BEEN ADDED AND THE LINKER SHOULD ;BE ABLE TO LOAD THEM RESIDENT, THE TABE ;SAVE NEW POINTER MOV (SP)+,R1 ;RESTORE USER REGS. CR.IXT: MOV (SP)+,R0 RTI ;... & EXIT F .MACRO GDVU0 .IRP P,<> UDEVG P .ENDM .ENDM GDVU0 ;HERE THE MNEMONIC AND INTERRUPT VECTOR ;ADDRESS OF UP TGACTERS OUTSIDE THE EVALUATION RANGE OF THE DRIVER. THUS ; SPECIAL CODE HAS BEEN INSERTED IN THE DRIVER TO DETECT THESE HONITOR MESSAGE IS DEFINED. DO NOT CHANGE THIS. MONVRS <08-02> .PAGE ;IF NO USER DEFINED EMT'S OR NON ;STANDARD DEVICESILE ;STARTING AT LABEL GLOTAB HAS TO BE EXTENDED. ; THE TABLE GLOTAB DEFINES THE RADIX50 NAMES OF EMT'S. ;WHEN THERE REMAIJ; D) CARD COMPLETED: CR.DUN: CLRB @#CR.CSR ;STOP INTERRUPTS TSTB @R0 ;IF NO PROCESSING YET ... BEQ CR.RPT KO 3 DEVICES CAN BE SPECIFIED. ;IF THE MNEMONICS AND INTERRUPT VECTOR ;ADDRESS ARE RESPECTIVELY: ;X1,X2,X3 AND IVA1,IVA2 ANDL; TWO CHARACTERS. .ENDC ;INTERNAL BUFFER FOR BINARY STORAGE: .IFDFM ARE TO BE ADDED TO THE ;SYSTEM, THEN THE EDITING OF THIS FILE ;IS FINISHED. ;IN THE NEXT SECTION NON-STANDARD EMT'S ;ARENN UNDEFINED GLOBALS,THE LINKER SEARCHES ;THE TABLE GLOTAB, AND THE TABLE INDEX ;DIVIDED BY TWO OF ANY TABLE ENTRY MATCHING AO ;... CONTINUE BIT #1,R0 ;SEE IF ADDRESS IS EVEN (SHOULD BE FOR CC.81) BNE CR.ERR ;SOMETIMES MISSED INT ON FIRST CARD P IVA3 ;THEN EDIT THE LINE AFTER THE MACRO DEFINITION TO READ: ; .IRP P,<,,> .MACRO GDVU1 .IRP BINARY CR.BUF: .IFNDF MARKS CR.BSZ=120. .ENDC .IFDF MARKS CR.BSZ=60. .ENDC .=.+CR.BSZ .ENDC .END R DEFINED. THESE HAVE TO FALL IN THE RANGE ;140-177. ALL OTHER VALUES ARE RESERVED ;FOR DEC. ; ; ;IN THE NEXT LINE THE SYMSN UNDEFINED ;GLOBAL WILL BE THE NUMBER OF A EMT TO BE LOADED ;RESIDENT. ;TO ADD THE GLOBAL NAMES OF USER DEFINED EMT'S ;USTMOV (SP)+,R0 ;OTHERWISE RESTORE USER R0 MOV @#CR.RSV,-(SP) ;... & NOW SAVE ALL JSR R5,@(SP)+ CR.CDN: BR .+12 ;SWITCH CLE P,<> UDEVG P .ENDM .ENDM GDVU1 V;DEFINE HERE THE MACROS WE NEED .MACRO ZERO1 LOC,TABLE SUBST >,0 .ENDM ZERO1 .MACRO SUBST LOC,VAL ZWBOL UDEMT ;MUST BE EQUATED TO THE DIFFERENCE ;BETWEEN THE HIGHEST EMT VALUE DEFINED AND ;77 (ALL NUMBERS ARE OCTAL). ;A ZEXE THE FOLLOWING RULES: ;1 SUBTRACT 100 FROM THE LOWEST DEFINED EMT ;2 IF THIS NUMBER IS X,THEN EXTEND THE TABLE WITH X ZERYARED UPON E-O-F MOVB #4,CR.CDN ;AND IMMEDIATELY RESET BR CR.DXT ;BYPASSES USUAL END-CARD PROCESSING MOV CR.UBP,R0 ;SET Z ;MAXIMUM I/O MODULE CLNUM=2 ;WE DELIVER 2 MODULES!! DVNUM=0 ;MACROS WILL GENERATE THE NUMBER .MACRO RSEM0 .IRP P,<<[ZZ=. .=LOC .WORD VAL .=ZZZ .ENDM SUBST .MACRO PSUBST LOC,VAL .GLOBL VAL SUBST >,VAL .ENDM PSUBST \RO MEANS THERE ARE NO NON STANDARD ;EMT'S. ;E.G. IF THE HIGHEST EMT IS 166 THEN UDEMT=67. UDEMT=0 ; ;TWO DIFFERENT TYPE]OES ;3 ADD NEXT .RAD50 /EMX/ ; WHERE EMX IS THE GLOBAL NAME ;4 IF MORE THAN ONE EMT HAS BEEN DEFINED,REPLACE 100 BY THE ^USER BUFF PTR .IFDF BINARY ;FOR BINARY VERSION ... TSTB CR.ISW ;... CHECK IF BINARY READ BNE CR.BDN ;IF SO ACTION ACC_0,>,<1,>,<2,>,<4,>> PSUBST P SEQ1=SEQ1+1 .ENDM .ENDM RSEM0 .MACRO RSEM1 .IRP P,<<30,>` .MACRO EMSPEC S .MACRO SPECEMT .IRP P, SUBST >,1 .ENDM .ENDM SPECEMT .ENDM EMSPEC .MACRO aS OF EMT'S CAN BE ;DEFINED! ; 1. SWAPPABLE EMT'S ; 2. EMT'S LOADED RESIDENT DURING ; SYSTEM INITIALIZATION ;FIRST DEFIbVALUE ; OF THE EMT JUST DEFINED +1, AND TAKE THE NEXT EMT VALUE AS ; LOWEST EMT VALUE, AND REPEAT STEP 1. ; ;NOTE: ALL cRODINGLY .ENDC MOV CR.UBE,R1 ;FOR ASCII, SET END PTR .IFDF BLANKS ;... & PERHAPS CHECK SUPPRESS CR.ZSW: BR .+4 ;SWITCd,<40,>> PSUBST P SEQ1=SEQ1+1 .ENDM .ENDM RSEM1 RESEMT=6 .MACRO CFNOEM TAB .IRP P,<3,5,23,26,27,36,37,70,eGSLOT DEV,IVA .IF DF,FT'DEV .RAD50 /DEV/ ;DEVICE NAME RADIX 50 .WORD 0,IVA,0 ;CORE ADDR,INTERR. VECT ,DISK ADDR DVNfNE THE TOTAL NUMBER OF SWAPPABLE EMT'S ;(IN OCTAL) IN THE NEXT LINE (UDEMSW=...). UDEMSW=0 ;REPLACE 0 BY NUMBER OF SWAPPAgNUMBERS ARE OCTAL ; GLOTAB: .WORD GLOLST-GLOTAB ;LENGTH OF TABLE HEADER INCLUDED .RAD50 /EMT/ ; 0,WAITR .RAD50 /EMThH ON? BR CR.ADN ;IF NOT NO SUPPRESSION CR.ESW: BR .+6 ;SWITCH INITED TO ALLOW CC. 73-80 SUB #8.,R0 ;OTi71,72,73,74,75,76,77> SUBST >,0 SEQ=SEQ+1 .ENDM .ENDM CFNOEM .MACRO SPECEM .IRP P,<33,60> SUBST B120=B123-D3 B12=B120/10 D2=B12->,1 .ENDM .ENDM SPECEM .MACRO RESEMP .IRP P,<0,1,2,4,30,40> ZERO1 P,EMPRIM .ENDM .ENDM RESEMP .MACRO IDENo10> D1=B12/10 RAD53 \D1,\D2,\D3 .ENDM RAD50N .MACRO RAD53 X1,X2,X3 .RAD50 /X1'X2'X3/ .ENDM RAD53 .MACRO DFU P2,p 0 BY NUMBER OF ;USER EMT'S TO BE LOADED ;RESIDENT. ;AFTER THE DEFINITION OF THE NUMBER OF USER EMT'S, ;THE VALUES OqET INITIALIZATION .RAD50 /RLS/ ; 7,DATASET RELEASE .RAD50 /TRA/ ; 10,TRAN PRCESSOR .RAD50 /BLO/ .RAD50 /SPC/ .RADrN DONE CR.ADN: .ENDC CLR -(R1) ;CLEAR REST OF BUFFER CMP R1,R0 BHI .-4 MOV (PC)+,@R1 ;FINALLY MOVE IN CR-LF .BYTE sT TXT .MACRO USRTXT .ASCIZ /TXT/<15><12> .EVEN .ENDM USRTXT .ENDM IDENT .MACRO MONVRS TXT .MACRO MONVER .ASCIZtP1 .MACRO DFUG .WORD P2*400+P1 .ENDM DFUG .ENDM DFU .MACRO NUMMAC MACRO,SEQU,ARGL MACRO'SEQU ARGL SEQ=SEQ+1 .uF THE EMT'S MUST BE SPECIFIED. ;THIS IS DONE IN THE MACROS GEMU0-GEMU5 ;DO THIS IN THE FOLLOWING WAY: ; 1 DO NOT DEFINE MORv50 /STT/ .RAD50 /DIR/ .RAD50 /ALO/ .RAD50 /OPN/ .RAD50 /CLS/ .RAD50 /REN/ .RAD50 /DEL/ .RAD50 /APP/ .RAD50 /GAw215,12 CR.DXT: MOV CR,R0 ;GET DDB ADDRESS JMP @14(R0) ;TAKE COMPLETION EXIT .IFDF BINARY CR.BDN: MOV CR.IBS,R1 ;FOR BI /TXT/ .ENDM MONVER .ENDM MONVRS yENDM NUMMAC .MACRO UDEVG W1,W2 .RAD50 /W1/ .WORD 2,W2,0 DVNUM=DVNUM+1 .IRP P,<\USEQ> .MACRO DEV'P .RAD50 /W1/ .zE THAN 13 (OCTAL) ; EMT'S IN A SINGLE MACRO. .PAGE ; 2 DO NOT DEFINE BOTH RESIDENT EMT'S ; AND SWAPPABLE EMT'S IN THE{R/ .RAD50 /PRO/ .RAD50 /REC/ .WORD 0 .WORD 0 .PAGE .WORD 0,0,0,0,0,0 ;EMT'S 30-35 .WORD 0 .WORD 0 .RAD50 /|NARY, INIT INT PTR MOVB @R0,R2 ;EXIT IF EOF SEEN BMI CR.DXT ;ALSO SETS INTERRUPT FLAG JSR PC,CR.BIN ;ELSE GO MOVE DATA}@&^ %  o5 U@$ ,E(F!O͕~ENDM DEV'P .ENDM USEQ=USEQ+1 .ENDM UDEVG STDEMT=100 ;77 OCTAL STANDARD EMT'S UDEMT=0 UDDEV=0 ;NUMBER OF NONSTANDARD SAME MACRO ; 3 START BY DEFINING THE VALUES OF SWAPPABLE ; EMT'S IN MACRO GEMU0, IF THERE ARE ; MORE THAN 13 (OCTAL) VSPE/ ; 40,MSB OVERLAY PROCESSOR, RESIDENT .RAD50 /GUT/ ; 41, GENERAL UTILITIES .RAD50 /CVT/ ; 42,CONVERSION PROCESSOR  TO USER MOV @#CR.SXT,R5 ;IF COME BACK, MORE READ REQD. JMP 4(R5) ;SO TAKE SYSTEM EXIT .ENDC &^ %  dߋt  5 & aW-Y5U 0& e T! - E|U DEVICES UDEMSW=0 ;THE NUMBER OF USER DEFINED SWAPPABLE MODULES UDEMRS=0 ;USER DEFINED RESIDENT EMT'S NTYPES=4 EMTIO=27 ALUES CONTINUE ; THE DEFINITION IN MACRO GEMU1 ; 4 THE TITLE OF EMT MODULES MUST BE .TITLE EM.XXX, ; WHERE XXX IS THE Ow 7w  7|w ,tw \ĝZ7x+7N J x+G,p+!0w & v+ .TITLE RCBOOT ; ; DDC DISK BOOTSTRAP ; ; THIS IS A MODIFIED VERSION OF RFBOOT, SET UP FOR THE ; GULF DDC DISK ; ; CREA;COPYRIGHT 1971, DIGITAL EQUIPMENT CORP., MAYNARD, MASS. ;VERSION NUMBER: V003A ; ;FILENAME - XIT .TITLE EM.060 ;EXIT (rvL4>mE:K> m :K> ip,`KAp,`@ {|kQ@  W}K@ 3iV .TITLE CF.TBL START: .WORD LPROTO ;LENGTH OF PROTOTYPE PART .WORD PRODDL-PROMRT ;OFFSET OF DDL PROTOTYPE ;NOW THE PRp+9,@* D A  &DCc  ,w Dw  w  ' 7  p, Մ &w \w TED ON MAY 14, 1973 BY DAVE MCMILLEN ; R0=%0 R1=%1 R2=%2 R3=%3 ;HARDWARE REGISTERS R4=%4 ;R5 ;SP PC=%7 ; CLEAR=400PROCESSOR VERSION 1 DEC 70 ; ; CALLED FROM USER PROGRAM AT END OF JOB BY:- ; EMT 60 ; ; MERELY LOADS TRANSIENT MONITOR  5@  `%5beNa  搎NMW W  װΌeΌ%H OTOTYPE MRT WILL BE DEFINED ;THERE ARE 4 POSSIBLE ENTRIES ;1 A CORE ADDRESS SET BY THE LINKER ;2 A ZERO MEANING EMT DOES NOwXw w ,2 fw  w 7 wtwh,Xw  %-E eӂ wh,~H ސ ;DISK CONTROL CLEAR COMMAND READ=5 ;READ COMMAND ; .GLOBL RCSTRT ; RCSTRT: START: MOV #INIT-START,R0 ;GET START OF CO(TMON) INTO ; TOP OF MEMORY, ON THE ASSUMPTION THAT THIS ; IS STORED AS THE SECOND ENTRY IN THE MONITOR ; LIBRARY ON DISK.  p HE  "װUCQ ` ( U (0 w &* 8 $$E e)U@T EXIST ;3 A 3 WHICH MEANS LOAD THIS EMT RESIDENT ;4 A ONE MEANING SWAP THIS GUY PHASE=0 NONLEM=STDEMT+UDEMSW+UDEMRS PR =w XH A w Lx,: w D3 w < w 4w < 7 w ",.7 w &7 7  \,ՕDE TO MOVE MOV BEGIN,R1 ;GET START OF DESTINATION MOV R1,R4 ;SAVE FOR TRANSFER MOVE: MOV (R0)+,(R1)+ ;MOVE CODE TO HIGH A SATISFACTORY LOAD CAUSES ; TRANSFER OF CONTROL TO TMON. ; ; TMON WILL BE RESPONSIBLE FOR USER PROGRAM TIDY-UP ; AND FOR  JU@2(   "Ő ea*ZT p Ő Ŋ& " E T (OMRT: .REPT STDEMT .WORD 1 ;ALL CANDIDATES FOR SWAPPING .ENDM .REPT UDEMT .WORD 0 ;ALL NOT EXISTING .ENDM SEQ=w7  ww (b ww =,ւw A B` %.,<օ w| 7wr|wCORE CMP R0,#END-START ;CHECK FOR END OF MOVE BNE MOVE ;LOOP UNTIL END OF CODE MOV R4,PC ;THEN TRANSFER TO BOOT INIACCEPTANCE OF NEXT TASK VIA KEYBOARD ; COMMAND. ; ; ON EXIT TO TMON, THE STACK WILL BE SET IMMEDIATELY ; BELOW ITS LOAD POP $bc H  U  "b UE T0 0 ŋU  70 pU2"װ0 CFNOEM PROMRT ;ZERO NON EXISTING ONES NONLEM=NONLEM-SEQ SEQ=0 SEQ1=0 .REPT RESEMT+3/4 NUMMAC RSEM,\SEQ .ENDM Nh,by E 7ӂwhb E V, tP Iw 0-",% w  =w T: SUB #20,R1 ;POINTER TO PARAMETERS MOV #READ,R2 ;DO A 'READ' INIT00: RESET ;CLEAR THE BUS MOV PC,R4 ;SAVE START ADDINT & R5 WILL BE SET TO SVT.+14(DCO) ; ;REGISTER ASSIGNMENTS: R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 CDB w p <@EE%A! װ4ME֊EEU%p!Ed  Qbep "ONLEM=NONLEM-SEQ1 SEQ=0 .REPT UDEMSW+12/13 NUMMAC GEMU,\SEQ,1 .ENDM .REPT UDEMRS+12/13 NUMMAC GEMU,\SEQ,3 ;LOAD RES(7,$ =w e0w ,w %,@w ke=, w @RESS BOOT: MOV EXTRPG,R0 ;GET EXTERNAL PAGE ADDRESS MOV #CLEAR,(R0) ;CLEAR OUT RF CONTROL ADD #10,R0 ;ADD DEFLECTION C=50 CDQ=52 DCO=14 DDL=50 HICOR=4 PSW=177776 SVT=40 TRMNL=400 .WAIT=EMT+1 ; .GLOBL XIT .BYTE 0,-1 ;IN USE/NO SHװ/ŀ Q 5lH!Oc Jp   ŌW  IװAa Q v(  IDENT .ENDM ;NOW THE MRT PROTOTYPE IS THE THERE ;START HERE THE DDL PROTOTYPE PRODDL: GSLOT DC,130 GSLOT KB,60 w jwww=w  ,F w  vw <Ae0w ,w ,l׀ZTXw H- @D7vLR (R0) ;CLEAR EXT. ADDRESS MOV (R1)+,-(R0) ;SET START BLOCK BOOT1: MOV (R1)+,-(R0) ;SET MEMORY ADDRESS MOV (R1)+,R3 ;ARE SWITCHES. XIT: BR XIT00 ;BYPASS PARAMETERS TMNADR: .WORD 0 ;DISK ADDRESS OF TE(g b c   KаPe$d d ( cj Ċ  l GSLOT PR,70 GSLOT PP,74 GSLOT LP,200 GSLOT DT,214 GSLOT CR,230 GSLOT MT,224 .IF DF,FTMT .RAD50 /QT/ .WORD 0,22,> ,: 4,*w [,?w &7 w 7 77 ,   w %0 %7E PICK UP BYTE COUNT INC R3 ;IN CASE ODD, GO UP ONE ASR R3 ;AND DIVIDE BY 2 MOV R3,-(R0) ;PUT IT IN EXTERNAL NEG (R0)+MON TMNSIZ: .WORD 0 ;SIZE OF TMON (BYTES) XIT00: MOV @#SVT,R1 ;GET SVT MOV DCO(R1),R4 ;GET FIRST INITED DDB XIT05: BEQ X "    E f ы   D"ᆃ עJ` فרJ b @( 4,0 DVNUM=DVNUM+1 .ENDC GSLOT DK,220 .IF DF,FTDK DVNUM=DVNUM+1 ;COMPENSATE DKH AND DKL MODULE .ENDC .IIF NDF,DDC ` , 1 W ֆ m79 * y2jx؂XՀLD<`ְNDւ,Xس ;REGISTER ASL R3 ;BACK TO NUMBER OF BYTES ADD (R0),R3 ;ADD IN BASE ADDRESS MOV (R3)+,T1 ;AND SAVE THREE WORDS FOLLOWIT20 ;NO MORE DDB'S TST @R4 ;THIS DDB BUSY? BEQ XIT10 ;NO-BRANCH MOV -2(R4),R5 ;POINTER THE DRIVER BIT #TRMNL,2(R5)&^  & ) wB w H ( L T 3 T D w : & r ?< INT,GSLOT DF,204 .IIF DF,DDCINT,GSLOT DF,DDCINT GSLOT DP,254 ;PROTO TYPES OF USER DEFINED DDL SLOTS DIFFER THAT THE SECx 6ך׸>ׂԬԃl7gN>,~D D 7@7:%2. n,& w %=w ,ING MOV (R3)+,T2 ;THE XFER MOV (R3),T3 ;FOR OUR MUST BE FOUR WORD MULTIPLE XFER BIC #3,-(R0) ;ROUND WC UP TO NEXT MULT  ;THIS DEVICE A TERMINAL? BEQ XIT15 ;NO-BRANCH CLR @R5 ;FREE DRIVER AND DDB, CLR @R4 ;THUS CANCELLING THE I/O XIT10:  M 0 l yl 7  7 7 w 7 7 B @ | COND WORD IS ;NON ZERO THIS ALLOWS THE INITIALIZER TO DIFFERENTIATE BETWEEN ;NON STANDARD AND STANDARD DEVICES SEQ=0 SEQ1w $@, w w ww  :, 7mw ,w %OF 4 MOV R2,-(R0) ;SET FUNCTION AND GO .PAGE WAIT: TSTB (R0) ;WAIT FOR READY BPL WAIT ;KEEP WAITING TST (R0) ;CHEC MOV -10(R4),R4 ;GET NEXT DDB BR XIT05 XIT15: MOV R4,-(SP) ;SAVE DDB ADDRESS MOV SP,R5 ;...AND POINTER IT MOV R5,-(SP)W"  W"@ w DSZERR B w 7 F < e0$" $ w \ SYSERR \ wf  =0 ;# OF USER DEFINED MNEMONIC USEQ=0 .REPT UDDEV+2/3 NUMMAC GDVU,\SEQ .ENDM .WORD 0 ;TO TERMINATE PRODDL LPRO/w \,<  n.  L eZ,b  !B !=L !64,44 ԤK FOR AN ERROR BMI ERROR ;ERROR FOUND MOV (PC)+,(R3) ;UNSAVE WORDS T3: .WORD 0 MOV (PC)+,-(R3) ;WE SAVED T2: .WORD 0 ;FOR THE WAIT .WAIT TST (SP)+ ;CLEAN UP THE STACK BR XIT10 ;GET NEXT DDB XIT20: MOV PC,R0 ;GET POINTER TO DDB ADD7  wE SSSK   bJ   W L9 5<   wzP w ANSWERTO=.-PROMRT ;HEADER SHOULD NOT MOVE PART2: ;HERE STARTS THE SECOND SECTION OF CF.TBL ;ITS CONTENT CONSISTS OF 2 PARTS: ; .!44  b,% w .  @w @*,ـ % % w  ww V MOV (PC)+,-(R3) T1: .WORD 0 JMP @(R1)+ ;ELSE DISPATCH .=START+200-30 ERROR: HALT ;HALT ON ERROR CMP -(R1),-(R #XITDDB+4-.,R0 MOV TMNADR,(R0)+ ;MOVE IN START BLOCK NUMBER MOV HICOR(R1),@R0 MOV TMNSIZ,R4 BIT #1,R4 BEQ XIT25 ;C WITH CARRET OR 'Y'CARRET w IS YOUR LINE FREQUENCY 50 HERTZ?72$7 r5Bŝ>EW!Y XW! w ` wR1 GENERAL INFO AND POINTERS TO ENTRIES IN THE SECOND PART ;2 A SET OF TABLES NEEDED TO PROCES THE THE REDUCED CILS ;THE GE, D  &4, C@AEPA&fw w /w 6,Fڀw Lw   1) ;BACK UP THE R1 TST -(R1) ;PARAMETER POINTER BR INIT00 ;AND RETRY BLOCK: .WORD 0 ;START BLOCK LOAD: .WORD 0 ;LOOMPUTE BUFFER ADDRESS SO INC R4 ;THAT TMON IS LOADED AS XIT25: SUB R4,@R0 ;HIGH AS POSSIBLE MOV @R0,SP ;SET UP THE STA( 01R 4 D $ qw6NERAL INFO SECTION HAS THE LAY-OUT: ;1 WORD 1 NUMBER OF TYPES HAVING TABLE INFO INSECOND PART OF THIS SECTION ;2 A TY` ,lE ` Z J ,ڰ w8^%w 71U&&E,w f7HAD ADDRESS COUNT: .WORD 0 ;BYTE COUNT XFER: .WORD 0 ;TRANSFER ADDRESS BSIZE: .WORD 64. ;BLOCK SIZE BEGIN: .WORD 37250 CK POINTER CLR -(SP) ;LOW PRIORITY PSW MOV (R0)+,-(SP) ;START ADDRESS OF TMON ASR R4 NEG R4 ;CONVERT BYTES TO -WORDS" dҋ$!( v w!p w!l؃w SPCERR 4wR a7 ^PE HAS BEEN DEFINED IN RMON5 AS A NUMBER REPRESENTING ;3 AN ENTITY SUCH AS EMT,DRIVER .. THESE NUMBERS ARE MULTIPLES ; OE&%O,ڊ  p%w Z׭,$U,*ۮ7;BOOTSTRAP START EXTRPG: .WORD 165300 ;EXTERNAL PAGE ADDRESS ;OF PROCESSOR STATUS REGISTER INDEX: .WORD 4 ;MONLIB.SYS BIC #3,R4 ;MAKE CERTAIN THAT IT IS A MULTIPLE OF 4 MOV R4,(R0)+ ;AND ENTER IN DDB TST (R0)+ ;POINTER COMPLETION RETUR7 X ҋ>Nb 12%$ F. &w" w 0CSQERR \w:wf, D-F 4 STARTING WITH 4 AND ARE USEDTO ADDRESS THESECOND PART ; INFO BLOCKS ;2 WORD 2 POINTS TO A TABLE OF VARIOUS DATA NEEDEDw Dŝŝ<,PEw$rt wft!,v w w Jw @e:%ĕ START END: .END ;HALT ON ERROR CMP -(R1),-(R1) ;BACK UP THE R1 TST -(R1) ;PARAMETER POINTER BR INIT00 ;AND N MOV PC,R4 ADD #XIT30-.,R4 ;COMPUTE COMPLETION ADDRESS MOV R4,@R0 ;AND ENTER IN DDB SUB #16,R0 ;POINTER TO DDB-2  f 6,d  w CFTERR wwme   BY RMON SUCH AS MAXEMT ;3 WORD3 AND 4 ARETHE THE FIRST WORDS BUILDING A SECOND PART INFO BLOCK ; A SECOND PART INFO BLOCK ,t72 Ԩw Bw .w,e` w ;w ĝw ,wf&fRETRY BLOCK: .WORD 0 ;START BLOCK LOAD: .WORD 0 ;LOAD ADDRESS COUNT: .WORD 0 ;BYTE COUNT XFER: .WORD 0 ;TRANSFER ADDMOV DDL(R1),R4 ;POINTER SYSTEM DRVR IN DDL MOV 2(R4),(R0)+ ;ENTER CORE ADDR IN DDB MOV #10,R1 ;SET CODE TO TRANSFER MOV  p ~`B<w<W  W w ZMODERR ^wdBe &Bm fBt IS DEFINEDAS: ; WORD 1OF THE PAIR EQUALS THE NUMBER OF ENTRIES TO BE CHECKED ; I.E. ALL EMT'S SHOULD BE THERE ; WORD 2 OF :,4ӧ,4 0#.#7$#7$# #w S,Zr#5#RESS BSIZE: .WORD 64. ;BLOCK SIZE BEGIN: .WORD 37250 ;BOOTSTRAP START EXTRPG: .WORD 177460 ;EXTERNAL PAGE ADDRESS  R0,-(SP) ;SAVE DDB POINTER MOV @#CDB,-(SP) ;CALL THE DRIVER JSR PC,@(SP)+ MOV (SP)+,R0 ;RETRIEVE DDB POINTER BR . ;WcB w z $"  eW$ B$U a(~ ~qw DX1ERR S  THE PAIR POINTS TO THE PRIMARY CONTROL TABLE FOR THIS TYPE ; THE NAMES OF THESE TABLES ARE:EMPRIM,CLPRIM,ETC ; IT IS UP T#g"b"9,V  <ӄ !%&, &e N @ e0w & ,X& "u > U@ &^  $ d!1AIT FOR INTERRUPT XIT30: ADD #20,SP ;CLEAR RETURN STATUS TST 12(R0) ;TRANSFER SUCCESSFUL? BPL XIT35 ;YES-BRANCH IOT w w CORERR 9 wc$rd!,E .\}0>x@.J >tLlhPPO THE SYSTEM INITIALIZER TO DETERMINE ; WHETHER IT NEEDS DATA FROM ADDITIONAL TABLES. ; ADDITIONAL TABLES ARE FOLLOWING TH  ",7~"r"n"E , w   w ׭{͕&^  &@ 5@ f<5D9 7ȋ   * W"d h U@e& ;CAUSE A HALT (@(SP+2)=0) XIT35: MOV @#CDQ,-(SP) JSR PC,@(SP)+ ;FREE THE DRIVER MOVB #340,@#PSW ;RAISE PRIORITY CLR Xpf`>m(F"tn :TVumN zbe  ` wE PRIMARY ONE ; ;THE FIRST OF APRIMARY TABLE IS ITS LENGTH PHASE=1 .MACRO R50 LOC,R5V ZZZ=. .=LOC .RAD50 /R5V/ .=ZZZ4"l,>ݕ ^w Uw wn n!,dj  7,XR-P ,Dw@ 78 %^ D |W" >ehp#. M%E  ZeX)W#ASUȵ@W"e,"TT IT-2 ;FREE MSB CLR XIT-4 RTI ;PASS CONTROL TO TMON .WORD 0,0,0,0 XITDDB: .WORD 0,0,0,0,0,4,0,0,0,0,0,0 .END  0 7`_ _ w ww7w h  2 <R l2 >P  .ENDM R50 .WORD NTYPES ;NUMBER OF TYPES IN THIS SECTION .WORD GINFO-PART2 ;GENERAL INFO EMSLOT: .WORD NONLEM ;NON L(! ,݄  %??,w N%w 77,w Z e K GECHFIy JOASRU'$  ^&^ %  e.5Ce  MOV (SP)+,R0 ;RETRIEVE DDB POINTER BR . ;WAIT FOR INTERRUPT XIT30: ADD #20,SP ;Ce|"6 2 -$( e  w 6SYSERR 6w@ 3  INED EMT'S ARE ONLY INTERESTING .WORD EMPRIM-PART2 ;POINTER TO PRIMARY TABLE KBSLOT: .WORD KBNT .WORD KBPRIM-PART2 DVSLO0w ,w ,"ްw p,H Cå å$ נA  |,n )5&3S $  & ffMEUT|EH"WA-"CO%H"ST LEAR RETURN STATUS TST 12(R0) ;TRANSFER SUCCESSFUL? BPL XIT35 ;YES-BRANCH IOT ;CAUSE A HALT (@(SP+2)=0) XIT35: MOV fDDa m@ f& U"  ee x&z % w CLCERR  w % CT: .WORD DVNUM .WORD DVPRIM-PART2 .IF NDF,FTCLL .IF NDF,FTCLP CLNUM=0 ;WHEN BOTH CLOCKS ABSENT ZERO CLOCK MODULE COU  e`  , Ëנe ee e ѐ  @(,+W!AS(eTKIע; פ  8v˕   & & (  G$ @#CDQ,-(SP) JSR PC,@(SP)+ ;FREE THE DRIVER MOVB #340,@#PSW ;RAISE PRIORITY CLR XIT-2 ;FREE MSB CLR XIT-4 RTI ;PASy} Cm}CҺ뫲˫~罼KfO罼o}r]o ~z˽]oH9}'b}ciY}}\<˽P˽P{>͕3_ M-˽P˽P{͕S_ M-yj[Cr]o({xr{Y}Oتr˧KŪoEr]oh˽P{͕oÿ˽P{o{>͕o%wZ@ M V+5-|E[ZMFQ@m @ D H h+`0h @ M +Jd,%oV4jYMDРJGJDt%:7V4jLhtЕH(}X}LhJm @ D H h+`0h @ M +T@ E:, >U|huLZ jE "RZА[V4@ A\ @ @ 9Z zVW9L ax@ A AuB@ Z yL 8}@L CIt|Th* V4@  Au9M *)@ M W+ @ M @ @ @/Hu@SjL TDIX) )iZ͕3_ M-˽P˽P{͕S_ M-yj[Cr]o({xr{Y}Oتr˧KŪoEr]oh˽P{͕oÿ˽P{o{>͕o%w_スÃעEτzwoC(꟨?v w㽟?v+c[罼Kfzj9қ(_*zg_DzhK}[Y_D״_Ȋ?SKD8j([Y_Dl?עEh?zwok(8{jݟz/ڟʍ\kң}Ki8}'k8}/KZs[أci[fZEȻ;{kYӽS9꟨?cwS?c?c?zwok(8\r𥉉]o[1꟨?{͕C˽oP {>͕#%@ M\ XJD EZNb4U TDF: @  `4J@Z9A: Ep +)@ M V+  N@  hh@  yL | *M@t-d@KH@4M@AEEV4@  Au@@ @8@D@*\h9M *)@ M W+ P@ M\ XJD A "(}dRlttC( *-@ M V+z rH[T@̘4pzV4@ A yL | u@4MTU @Evn @Yl@ ڔH^ dLIZ AU @EZ@OLMl\Yhl9LC X@ AR H Jd,%Z͕# 﫽˽oP zwoC(꟨?'_Y_D?cw_J?K_{?xc_? Y_N_OK_D?'_Y_D'?zwok(8スòj'6KWڟʍ\kң}Ki({>}eXKrE?{kYӽS9]}_*{scC_sYE_*5Ҽr_*TBk|[_CkeK⟈_fQs_ʏX?^_s{kΟڟʍ\kң}KiKL9TrR}}[}ZEX7{kYӽS9r@ M +[|IpT@ E:, %z 9l*-r@X@)9V40LquiL eHLxLhnHM`0ШA:MBAYtz U|huLZ jE "RZА7V40%9<TJ@*LIr| \U}eXKrE?{kYӽS9]}_*{scC_sYE_*5Ҽr_*TBk|[_CkeK⟈_fQs_ʏX?^_s{kΟڟʍ\kң}KiKL9TrR}}[}ZEX7{kYӽS9O꟨?{Z.[[}_*Mrʞ_?Ҽrzǟ^_䔼?lk}-祃k}b.ZҼr_*17}Cc&W˫{Z_\[KҼr|ƿzwoC(꟨?[__*(E\so]rʞ_ď]d[}}kM.ZҼrb7_ *R[_R?Ҽrqzwok(8Ҽr_*laK^_?9{.ZҼr_*#^Z_ďK_D?Ҽr_*l`_K"_JҼr[ߢoCEuV4@3 M\ XJ9 HŜ Z7 DAZ@,A(V4@4 M z @S EĢA "Tw˽P˽ʽҜr'kM﻽]o=^r]oҜr Jk﻽oҬr]@ A @ @ TB " "A @)|E +} X@ AR H  )@  H  @ A И X@ AR H z@ M +[|Ih EFT@0 M f+T@ E:, z , HŜ F,  {8|L-UyxM(MExHؖx RqLHؑxT R\D(E rO*\NhHLHhGLéD|TJ@*Ed mT b(HLHdШLKOJ@*T Iu[$@TQtYtz  !(}[T@̘4h[zCd8,@jJR- 4 +@ M V+h@ A A}@@  \E=X09*- r@t|LU #@ J@ @ | E}Ls |E@4MC mED,Bh@ M V+@ @ @/IILΈ@ÔFJd,%kJLD0jLdHhJGJDt% u@ MR\  p?@ D Z AgJSK@R D SF@9R J[V4@ A yL@ @ /D-,*yL 2ZT "UZ.{@ J@ @ z DM@0@ UhJd,%0iLGH<ELJGJDt%5/Ҽr_*dBڣ}-^r'JZYr^_ ׷r-j^.ZҼr_*`?ߢoKNEs_z?}KҼrtkM﻽]oVkb^rjKWrTr]^r]nҼr=rkM﻽]oٚCEռ+d}}~[K۽]o7yC8b£kh})~kM﻽]ou7K}߳}ز~Cͽ]ocLw[{߳}Ҫ}X^r]oҼr>w˽P˽ʽҜr'kM﻽]o=^r]oҜr Jk﻽oҬr]yC8b³jkslZkM﻽]oyj\CCkM﻽]o^K}߳}ز~Cͽ]ocLw'kM﻽]o}/Ϋ+kkoLH߳}~g﻽wkM﻽]o}9CÍoSLf߳}~g﻽Ҭr|7sͽo&Zc+koҺ]crEE]_l˽ʽZcQCMELy{jK}-rQKNn^}~\r﫽]o)7wXjkrO{[[LrQKNc-﻽woH` H@ ^ @XRIΙP4A[T@̙dE5LéDLTpT@.T zE r CHLHdؑTP8xKO%yL *|rL r@d r@ @ Z - z TDFdttI,h Y, H-Zh<@ Z @ @ @ lEj~@ Z @ @ @ R18F; 2Hi "R<-f@ Z A}@@ @@ UI "UZ IM D@ Z x Hl |@T TDIXhx@ Z i4G@h *@ƈyLԚ rV5e KL@M(`9@ A `0@ ^ Bz @ lUh {@ AR\ Qx @ MR\ @@ 謞 d4F O)@ 8u9p JSK@R 4%FgTRJSJ^@*J$&,@9R JrY@ AZ @ @ EZS|TU  ~@ A hm9MA@ M V+@5@ ^ "ZS|@ S*\ @@ ZbX- 9l*-r@I(hm @ D H h+`0h @ M +Jd,%oV4jYMDРJGJDt%:yC8b³jkslZkM﻽]oyj\CCkM﻽]o^K}߳}ز~Cͽ]ocLw'kM﻽]o}/Ϋ+kkoLH߳}~g﻽wkM﻽]o}9CÍoSLf߳}~g﻽Ҭr|7sͽo&Zc+koҺ]crEE]_l˽ʽZcQCMELy{jK}-rQKNn^}~\r﫽]o)7wXjkrO{[[LrQKNc-﻽wjKrIWk{CjK}gEsoҬrJzkM﻽]oy[ ﻽oҬr#kM﻽]o9k}KjjCz~rj{Cuҋ^kEsnҼr}w{]Cs^}[Y[EJ79k}CYz ^[[[Ҽr_*gkM﻽]o=} g﻽^ؒ}߳kڣj{(˟~kM﻽]o7g﻽Ҽrj\C.ZҼr_*?{RѢ}O}ZEM@ A\ @ @ @ R28F:\EO@LI}E8Иc@ ͔H^ J@ TDIXh *@LT(a@ A  x dttAYI @YENؔZh1ʑx@/@ EJ|A4uT*EJx@/@ @8h%} fhx@/R3jF:x}@d|T rH Рx@/@ (iM " zHTZ< x ox@/@ (TT *x,@U QD4$x@/@ $-TI@ERDF|I8 !x@/@ h*fx@/R4JO@0@tD Р>kV4j M  @@ (}X}Lpm @ D H h+`0hJ @ M +T@ E:, >U|huLZ jE "RZАXV4@ A J@ @ 8}@$-TbH9L ax@ A AueC@ Z yL@ @ /D-IIM9IMI \h V4@  Au9M *)@ M W+ H@ M ,@ @ /, HŜ C( *-Iu@̈*M=@  `4@ ^ NrLtC( %-  +)@ M V+  N@  hh?jKrIWk{CjK}gEsoҬrJzkM﻽]oy[ ﻽oҬr#kM﻽]o9k}KjjCz~rj{Cuҋ^kEsnҼr}w{]Cs^}[Y[EJ79k}CYz ^[[[Ҽr_*gkM﻽]o=} g﻽^ؒ}߳kڣj{(˟~kM﻽]o7g﻽Ҽrj\C.ZҼr_*?{RѢ}O}ZEMǽ[h})k k.ZҼr_*jw_K""CS}Oscy}KҼrrvx@/@ @X@,Hu "@Έnx@/@ [T@̘4p x@/R59X0$-I Ӛ\Eh탑x@/@ 9t` bUZ EI pHb M XELTtBh4@҈H\h @  f5ho@ M [$1@ƈH@4MP4S<  @  j5h)@ M [$4@ƈH@4MMZuyL. @  l5h}@ M [$j3J9A: E9, bOEu @ M\ tSJDFIDN(l\hv@@ M [$1@ t H-@[t@TH\h=}@  yL@ @ /2IDNrLtC( $-I(JV4@  Au@@ @8@D@*\h9M *)@ M W+ q@ M ,@ @ /, DtIt@E ,LDAZS@ M V+@@ @/ @ΈHŜ F,. QSV4@ A yL@ @ / 2DIJU bTn7v@LMl\Yh]@ J@ @ | u@4MF8e@IҨҙ ,pl9LC X@ AR H $`@ M +@@ /.T@ E:, U|huLZ jE "RZА>