Æ@ÀæþÈàìàÈ‹þ€à ñ€Ð ÈÈ‹þ€È ê�_ÚßàþÿÀVõÈàØà`È‹þ€Ð �_ÚÈÿÿà `È‹þ€ç  ÿÿ €ž ºº'@@8ÿÿÿßàþÿÆ÷ öw Hw øU!w ð‡ w èœÆ÷ Ðw н÷ bÀ`ÿÀ5@À5€÷”ÿÚû÷ŠÿÒû÷%€ÿ÷¾û÷‹ºûý€ÀEáÿ`$ÕÒ*ÐÍÌÊÉÈ÷ NÿÈ7 Jÿ÷ zÃ÷5@öþ¿»wÞ÷ *ÿ¶÷ž üþ÷ôþw pd˜÷¾ èþ ÷ž Þþ÷ºÚþw TFšÀ¬È ð ÷ äþ÷%Èþ�ÈmÒþp ÷ ºþùÈíºþ° ðí´þ; ; 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/»zkQÔx> m�4œ›é}¡K> )ž2“›vLÀD¡K> _Ÿ8²›ô&¡K> g "›jL€p¡K> }¡2›kQØr¡K> K'‰E›•€%¡K> 3˜$G›48†¡K> Q¡"F›4V†Ba> Q·›4W†Ba> M 9›4X†Ba> W>¬›4Y†Ba> J®›xe¡K> '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,6Ñß5Àbï$ß5€bïüß5€bïü$ üd!Á6L@ œ,ÿö €wFÅ&M ¦Áe ‘v Éüÿ ,&a(… I D |÷ j‰ Ä ûþÿ°dN,LCCmà æä÷ J榲,ræÎeŠÿƒ Ì&Œ÷ "‚¦ Á¾,˜ðüÿ‚а °÷ & î ^@ fB·’ í$ ª¶ ¤rOÀÄ6è8‚w 6 �Áe BfÎEÿ¥Í‹€Í“ ; .TITLE DSKSIZ .IDENT /EDIT04/ ;LAST EDIT 10-AUG-72 .SBTTL DSKSIZ - GET DISK SIZE MODULE ; ; ; ; ;DIRECT ASSIGNMß5€bïß5hbï,\ч bï· "÷ ßdï0ˆÖ Úæbïæ?F‚Ñ0ˆ& ú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 „ &DCƒcà ÷ì ½,æÔw Dw à„·Šî w   '  7ŠÚ Áeã÷ „°°÷ |°Æ,0 æÅ.M Å$M Å"÷‹´þU%G€',V$óCÃEðÿÄà �Ä ü� � � � Á Á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Õ,XÕw žÄß  Ä%-ßû‚À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� ÀÒÞÁßÞ÷ \ÄæÂ¦,ðÕwð7Šê  wèw (‚b‚ ‚ ·Àwúw =,Ö‚øw �A�Á � � B`ï÷ „÷%–Â’.1ðEè 0Ó ÷ &æ*Þ €0 °*ú ÅEÿ?®LQ¬° Á0æ(Þ §Åù$ \d!xÀlèN/ 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—¢‡—¢ †ÄÂÍÓã&”# Ì €Ì‹ ” NÎC �•Ì‹¤&À“Í•€Á ËEÀ‹ ÓmÊ  ËEÿ?‹ Ë ÷ �€¦(ø ƒ& ð ®�H€Æe ÷ tð æ*ˆ f‚|Å&M ¶¶æ$^ Å"U%÷‹fÿGæÎe`ÿæfÇ.ÂÆå Â Ñ E¥�勯e ÃEà v2,<Ö…Ö w|÷‹–û 7Іwr÷•ÿÿ|wh·Š,bÖy ÄEøÿÄ 7âÓ‚wh÷‹b ÄEøÿÄ V,ˆÖà tâÓPà õôÿÿâÓ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 JÿæzÀ…`À ĘC“`†# †�0 C ø†B 7!~ó‡ à öä Ãp ‹#‡�`É+ K¡ŒP † ä àÍ ÷�w ÿ…w àþÅ@:‚ÿÅaå Í‹æÄ,L ƒw€ÄB“Œ ýƒàÇ` 5 þÿð5€ 6 ö ö wö w æ*ˆð w6  þÿD�AZ÷TÀXw ·H-À ÷@D7ìv,’×âÓ>€ â÷,÷‹: À4üÄ,üÃ*üw è[,¸×÷ðÀ?w &7 w 7Š 7Š7Š 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ŠÁÁ@ÁmÄEþà 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¶ÛÀ’ã Š$Ú h·¶tÿ™ ¾ÿ¶v‚Ä÷ŠüþˆŠþÿˆˆÆeÿÅaCÐ$È&püÿcF ý–%æ$–O Å"U%÷‹”þGæÎeÈ@tŽþæfÇ.Â Ñ É Ñ EÆe¥�å‹ÄÄEv ×&&qù$ þd!{ÀãrP,¤ØÀ&ÀŸ w æ÷%‹À•=w ,ÀŸw $@,ÊØÀ• w wúþ÷ ÚwêþwÞþ·Šð÷ âù÷ Ä:,ðØ÷ â÷ÖÒ7ŠÖ÷mÈÈ÷ÄÄQST 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 .TÅCÁ“%@`Ô³� Aa ŠÁÄ,Ó‹€(q±%( à àEä‹€ÈUHQ̳ˆ ({‚@&  Î’È ˆãÈ þ†æ,^  öÿ6^æ0âèÆ‚ÿÅaå Í‹æÄ,L ƒTÄB“Œ ýƒàÇ` % $�öÿÿwæ*ˆ<Æå &ˆ…ƒæÎTÖTBÓ$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 þÿH‡úÿÅEÿ¿ È  "‚‡×°ÃUCQ ` (È €ÃU (â0 úÿwö÷ &Å*Í €ð‚8 Ð $$’ÅEùÿð e)ÈU@ à_À%€ÿ À%÷ äw ¬· ÜwÜýwÈý� V,úÙ à ù÷ÄÂÎùÄÈùD · Æù¼‚€Á &4, ÚC@AƒEPA&f¦æw –€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…ò �J€ðU@û2(� ÷‡÷Ê Ç "�Å�ŒŒÁ‡‹€ Îe§a*ZŠüÿTÁ £p þÿ Å�ÅÅâ‚´ ÅŠ&ìÐ "üÿ E”È T‘È (d6,FÚ€w Lƒ‚�„w âÒ Û åƒ`ƒ ƒ Å ßô,lÚÀEÿ�¯À € € €` Õ÷‹Z·à µ÷•J… ó,’Ú°‡Å w8ù÷•à^%w ´7Š1÷U1 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 þÿ½<úÿ@¹EöÿìöÿÅåE%ŠA!ýÈ ×°4Mæ�ÎEÖŠŠÁEEU%p!þÿ˜†Eà…d‘ ׂ¬ Q¦˜b¥…epá "È•n·ŠÃ÷U¸øÐ·°ø·®ø÷•,*Û®7¼÷‹¥·w D÷‹˜ø€Å��øÅ�Œø¯ŒŒ<,PÛŒŒÅEw‘¢$Årø÷‹t�å wføÄt!òÓ�,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!îÿO½Ác Jp þÿ†ð  ÝÿÿÅŒW¡ Åå IŠ×°¡ŒAaÞ Q‘Þ v( Çœûâ sÄ úw ¼w JÄôÞÃõÞw ž@÷e:ø%Ä• ,œÛtòÓ7‘2ô Ô¨ôÔ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,ZÜr÷‹#ý€÷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, ; WHER�WORD 130 ;I.V. ADDRESS .WORD 0 ;DISK ADDRESS DDL.ND: .END MAGNETIC TAPE: .R‚Äe 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 EA�BL 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@DDDADD€€B B B C–rÀÚkQÑmqÍ›`TkQѼ^›$Dgffffffÿfff""""""""""""""""""""""""""""""""""""""""""""""ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅaå €�Í‹æÄ,L ƒÖ B8Žw&Ä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 GIVÎADY? 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 ’‚^wdÀÄÁBÂåæÀeæ÷ &ÀøÁòBÂíòÀmî÷ fBÁtÐCORE RESIDENT SWITCH (BIT 0 = 1) ; ; 3) ROUTINE IS NOT AVAILABLE: ; ; 000001 ; ;GENERATED AT SYSTEM BUILD TO SHOW COREÑE PRINTED. ; ;THE SYNTAX IS CHECKED FIRST( VIA CSX). IF OK THE DATASETS ;ARE BUILT VIA CSM. IF NULL DATASETS OCCUR COMPLAINÒEN. ; ; IF THE FIRST WORD OF THE NAME IS 0 NO NAME ; WAS GIVEN IN THE COMMAND STRING. INSERT THE MONITOR ; DEFAULT NAME INÓ1,-(R3) ;WORD COUNT. MOV #2003,-(R3) ;CONTROL STATUS.GO!FORMAT!WRITE RKSZ40: BIT #100200,@R3 ;ERROR OR CONTROL READY? BEQÔ�cBì·ò¦÷ w÷ z Ê ’$—"ÿÿú¦¦ƒ öÅà eÁ‚W$ÿÿ B$U Úûa(~ó â~qè‰îw ¾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 OUTPUÝWARE ERROR(FATAL). ; BIT #100,-(R3) BEQ RKSZ90 ;DISK ERROR DURING FORMATTING. RKSZ50: MOV #1,@R2 ;RESET CONTROLLER AGAÞpþfÿ`õÉÀ>ÁmÁËÀß(FÍ"tn :T„ÊìVu–Áè�m¦Ë‚¢Nì‚÷ zƒƒbÂæÎe¶ ÀÁ¶ `Ç®÷ Þ·ÀwÈßSITUATION) ; 2) EMT HANDLER: ; USED AS A DESPATCH TABLE TO RESIDENT ; ROUTINES OR TO PROVIDE ARGUMENTS FOR CALL ; TO SàTHIS 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ñ‹ÿÿ wñ‹ÿÿw7Šw‚÷ ê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 DDí‘‘‘fÒÁ¨DŪDaÌ m@ f&€ U"À üŒ ÆeÁe÷ x&þæÄz¥Ô Ã% w ˜CLCERR Ý‚ w¢à ï% CîN.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%÷‹˜þGæÎe’þ時tfÇ.ÅÅæ$^ &‚&¦ÁÃe ËE“]ËËeæ(Þ ˆžæ&^ ‡&æð Ý�Ö Å"uòƒc„aÄáDþÿ„ ÀÀevabÁ¶ w 8Ñ û± þÿø÷ FÁœÁm¶ Ãàñ÷ ÂÁ‚Ámè÷ ÁrÁmÜBM‚œÂgª Ÿ² óAM TERMINATION) .GLOBL MRT.,EMT.,SAM.,M.IOMX,M.EMAX ; SECTION A - I/O CALLS .GôTYPING. 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 SPECIFIEÿE FOR FINDING DENSITY. .WORD 256. ;BLK SIZE .WORD 220 ;INTERRUPT VECTOR .WORD 5 ;INTERLEAVE FACTOR. DPDISK: .RADwRÆeO—¢é샄Ó$Á’X�æ޲Ž ‹ÕÁÓÁ þ†c Á Â,æ“J ‹M�c! K ýÁC`‹ä J�Ì5 q÷ V&æ*8‚øÞ €ÁTERR Ñh”w.È5÷ ¸wNþÈÞ÷ ÒùòXògª òNØ— TI w"Ö÷ Äæ÷ ¼âÅ®W%ÿÿ w ÀKBCERR @øwÊB%.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 Á @`ÿÆe€Æe$É‹(€0,†ÁÂÂe° 0 æ(Þ Å"&æ*Þ €ÁÂÂe° æ(Þ í&æ*Þ  Å"Ž Ž ÎÎEÿN\³ÌÂmœæˆ÷ |¾£ þep.Îe× P÷ Ü ÃÃeŠÛÛÛM›ûÀî6:Ÿ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 .WOR÷‹”ÿc lU%M»ù$ Æd!}À¥wè5‚ÿpqF üÁ A> BÜB`„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ÿ&÷ "÷ 1€‡wÚÿ·ØÿwÔÿ÷ ‡@ñgª ‡w ,ÁÁe¸ÿÃÃeñÂÿÇîþw ‡¦Âÿ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¢ý‡ ý‡ß5€tÿü_•vÿÍ‹øU¥ÅE…w äÿCIL IS WRONG CHECK ERROR LIST REBUILD CIL, Ädøw ²ÿ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‚:srÑoCyôy.C`�äó3úÿK‹Ë ò üÿÍ Âã �* ã(×"³ âÈ5@ÌEË € ÌU à æ(Þ  ÀªXtÅÅeŠþ ¨òãò# ¦ææ.^ 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 BL1öd!£Àèó‚BÑ E¡† ý–%5Šð :þÿò 3€BÂ5ù-Â5*‚ ‚ †&ñ #€Ñ W¢W£M¢U%Dff2z/N`³VqÔÐú+ßfKqf@BEy/Dè' &&SNQKÉ-�î†àÐÅ|—²KÀKoTÖst~Ú€Ú½~Ú˜ ‚3š€Ì5 ÌE„"@àÁ `É%ˆÍ‹áÍŠG ù$ ¨d!žÀzè‚ÿÅaÆå å Í‹æÄ,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 <0ÄÐfº 8´€f<¨ ¤ŒP�3"˜<&`T*”8.`mû2= .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%÷‹ÿGæA”06¸î:�,>ð¯B„0 F€M€]&P+$& ¦À?08-02  rG€ª ‚TÀUÀvÀwÀxÀBTED 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 RJËeæ(Þ ˆžæ&^ ‡&æð Ý�Ö Å"uöÿÞù$ d!ŸÀŽ|èê‚ÿÅaÆå å Í‹æÄ,L ƒK‚v*øð}(èvH (F˜S8 HHqè�¸`^RÈ}p!˜!ÐfàyXaTITIDASABEKIMOASDUCOREWAECODMETEENEOPRSTOWLDE 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 CMODÃnÄB“Œ ýƒàÇ` % ð‹ Z�$Ã7€æ*ˆð æ&ˆÅ—#ýÿL†U%„¦&& & *ˆÖ Aô‹<æ(‚|Å,M ‚Ë&&à =�Pk2òÀÄEÐf€f �`T`mðx€MdKÀ€PL>ù$ Xd!TÀybè ‚ÿ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%÷‹$ÿGæÎeÿæfÇ.Å Ñ DÂøÃd‘ä‹6Ö&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 DATYæ…U%fNéÃ8W)CÓ$Å N! ÅeÄeH!²÷‡ƒ ôæ�   ÷ Z%ÔDŒ÷ RC€,ˆÆeŒ¤÷ <…[‚tÅeƒÖ ƒcZM üMÎJ f& N�J Ð ÁåÅ Å ý†Ž Áá A/Å& N�…eÕ Â%ÑÂ%�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ðð _  Ì‹–%$)&æwöþEœÅ ÅeAaW$ÿÿÌá ̉ óvñ ÅÑ @W" gÀEÂÒ ‚Âå³ %‡ ùÒ €<Î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Ý�Ö Å"uöÿLù$ ød! Àèj‚ÿÅaå Í‹æÄ,L ƒwúÄB“Œ ýƒàÇ` 5 þÿð ð5€ d‚tÃÀ(*Ãúÿûæ$^ Àpþ÷‹nþ7Á A@W Á @`, ¨zÂe×ç& Μƒ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& NÜjW 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°÷ ÔÃeÁ‹£e³üÿ÷ ¼Î €Á € ðU pƒ‚ø÷ ª8÷ œðE Ö €-ˆÆe EÃÃÆe vn î DC@ fB·’ í$ ª¶ ¤rOÀÄ6è8‚w 6 �Áe BfÎEÿ¥Í‹€Í“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 Sr�eÉ €>�Ö – R‡f¶‚|Å E(Õ pþÿ…ƒFU%ÍÍEüæ Îe<•gÃEÿÃæŽ Ž æ,^ •$)Î6@ÍàÍ Õ ÕÍ"Õås„Ã7¡‹ ‚ 7¡‚ ‚ã @ÍÕàÈ D±ˆ�“á$Ä Äe¶ü ‡‡¡ôŽæ‹BÒ •á @„ŒÇ�‡P%H‚| aw Іe¦N1èÄ0t 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!UÀíd耂ÿB°bF ý$à à ÄÜÄ`�%�Œü†Ö c°N8  w}÷ ¾ ÷Š w <v"Ë&0� *þÆ0 £84÷Šüý ˆ&æ¦f&·!( ƒ×/"8ŽG– €�‚ƒ„…÷'Êýò‚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`÷ &æ*Þ   yŒä5é‚|4-üÿ †&‚&¦æ(Þ €ˆž$&& Žœæ.^ â �ÁåÂô� ÆþÆeÀÿ8Žôfæ fƒ"ŠÍÕàÄ �•Á`DÒaÇJ�¢“æ�’ÄeúÿÍÕà ­üÿõ†Þ ã" �•‡ ¦Î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À]gèy‚$BŒ€“‚`@aÂ�à/�Å Ba+Aaà ýB`AრDŠÁÁ@ÁmÄEþà 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 SŽAD50 '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 BÜB`�€$�Œü†&æ(ð‹ €" C‚"@‡Â““‹? �ÁEùÿL05AaAa5ÊEçËEÿø“d ËÓeìj~ ‘…f7Œ”w `‚Ü\þÅfABCfDÕ‹/� �ÍÅ€Á 7ŠøÿÁ–W£ À¶ˆˆ…å¥ewîûÁv÷�ŠW£~W£·ŠÀÿÍŠ NœN`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 ADDR”0)+ ;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 WOšd!wÀ­ièé‚CÓ ÄcF ý–%à à ÅÜÅ`C@%ƒŒü†&æ(4ŠÅ4`þÿ ÁÜÁ Á Á Á t#   ˆÅCÁ“%@`Ô³� Aa ŠÁÄ,Ó‹€(q±%( à àEä‹€ÈUHQ̳ˆ ({‚@&  Î’È ˆãÈ þ†æ,^  öÿ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 ƒw´ÄB“Œ ýƒàÇ` 5 þÿð5€ >æ*ˆð Fþÿõ €Æå &ˆ—#ýÿ*†…õ‹+õU¢ ; PDP-11 DOS SYSTEM MACROS V005A ;COPYRIGHT 1972 DIGITAL EQUIPMENT CORPORATION ; ; AUGUST 1972. .MACRO .PARAM R£$LÉ LÉäLÉé}8^> .,LÉß@pÿ þÿÆLÉÀDÉ7ª7¨Àå@7œ7 h«,rÉ7 À7 j7 7 7 œ÷z7 t7 .7 ¤$šÁ šÁ–HÆvLÀD�.> †,šÅBa¨z vL·IBa›ÿۜŨŚÁ~,ÀÅÀ¶í€ ú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¸ÿæ¸ÅæœÅˆ, ƃÃåÒE€úÉU€‰æœÅˆ÷5À’ÿ æŒÿü,2ÆÎEÿÎæ‡w*‰Îe‡ªT¾fÒ´ nÔJJ ¼Ô JJ¦ Õ  FILDMP V007A n,&Õ « ,Ñ NRRìŽÑÑEº’,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”,XÆ3÷¥ -€Šø€Š7"7 07 J7 <7 ˆ7 0,~ÆŽ7ŠN7Š>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,.L²ˆæ7ˆÃìÍÄöÍw RÃúÍÄ“,|ÊÎw FÃÎÄÎw :ÃÎÄ Îw .7 ú7 ,¢Ê7 7 7 ö7 à7 ø7 þ7 b7 Z7 X’l,ÈʳÆÒ·¾æºæ!ˆÖ ·°æ0,ÊÆ¼·ª·¨·¦·Ä÷žƺ·Š÷‹œK,ðÆÆšæ|æ!ˆÖ ·zÆåÈ·p·f·fÞ,Ç´(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 ôûæ ÒæÐшæÐш÷µ'ßûƒ,2ÖæØûw.÷µ@Ïû0ˆ7 ¶ûæþÑ.ˆ…… Õ•?y,XÖÍ•º7 Þÿ7 Üÿ7 ÿ,¶ÔÂû7 Èû7 Òÿ7 ü7 üÅžÓ    ÷•.Èþr,ÜÔ÷ îý÷•.Ðýæ~ÒˆwæZÒæ~Òˆæ~ÒˆE,Õ÷eèÿærÒæ~Òˆ»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Î-À‡Ö ‰·¸·B¦Îe·ý,ÔÇ:�ÑT÷‹¬÷‹¬ñ¾ · °û÷¨ûæ ÒæÚшæÚшæ7ˆÄU,~ÖæÐшæÚш÷ˆÑ:ÿ÷ôÑ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­,úÇ–%·ŠË8‰7ŠÅ7й÷¨z´æ¾ØˆæI!ˆ·ú…, È·Hæî¡Ž ·@÷Û8ælÙæ¾Øˆæ¾Øˆ¤,FÈÀÛÁ$ÃwØ,ÊÖHÖ5wRæˆÑˆæˆÑ ˆ·Rþ–%÷5Jþè,ðÖw\À�ÑÄ 8aÈ%BLw4È%FA÷Tûk,×È%FBÈ%CH·Š þwÄ.ˆ…… Õ•?Õ• Õ• Åå<Ñw¦û÷žûo,šÕæ6Ñæ~Òˆæ~Òˆæ7ˆ7 „û©æ~Òˆ÷¬,ÀÕfûæÒÒ‚Ò ÒzÐÊôÐâ /ˆÖ5ÀwÐÒ‰ ;SETUP THE VECTOR CLR TIMOUT+2 ;CC ETC ALL ZERO MOV #1024.*28.-1*2,R5 ;NOTE YOU DON'T NEED BRACKETS TST (R5) ;IS IT THERE ;****************************************************************** MOV R5,CSA ;SET UP LAST CORE ADDRESS ;******************************************************************** .SBTTL NEXT WE SET THE TIME AND DATE BIC #COMMSK,R5 ;CLEAR LOW ORDER BYTEEXCEPT BIT 7 ;THIS GIVES ADDRESS OF ;INFO COMMUNICATED BY TMON MOV #DAT,R3 ;GET THE SVT ENTRIES TST TDATÉ9,æÕäÐÊÑâ æÒÒ/ˆÎ5Àw²Ö5wøÄ, Ö7 ûÒ„ÐÊÑâ æÒÒ/ˆÖ5Àw†ÒÔÐú,2ÖÊÑæÒÒ/ˆÎ5 wl÷ ŽúÊLBLCK,.FBLCK .MCALL .CODE,.OPEN .CODE .FBLCK,<^O13> .OPEN .LBLCK,.FBLCK .ENDM .MACRO .OPENE .LBLCK,.FBLCK .MCALLË,j̤͈÷ ®æ’͈÷  ×-Bæ wÌþ· {,�ÌŠ÷-0÷­ù ,÷-FR(÷-@L$÷-:Š,¶ÌF ÷-4@· X÷é.÷j*Ì,¸È·J÷e\æ¸æ²Žå·87 4ælÙæ¾Øˆa,ÞÈæ¾Øˆ÷µ@‰7‰÷/*üÿíö  ÷ Ü,É÷%÷üô·Š~÷Ú7 ÖÍ�æôÑæˆÑˆ÷ ÀæLúæXÕæõ,®×"ˆæ@úæ[Õæ"ˆæ4ú7 ”ý7 ’ýÖ æØ,Ô×_Õæ"ˆ ÄBÕ÷ :ÄPÕ÷ 2ÅÉ æôÑæq,ú×ÎÖ5Ö5,XÖî÷ Ð÷ ú÷ rú wª÷ úÀwœ ,~ÖÁ ú÷ dúÀwŠwä÷ BúÁ ìw\÷ C,¤Öäùw¶Á ãwÏ .CODE,.OPEN .CODE .FBLCK,<^O3> .OPEN .LBLCK,.FBLCK .ENDM .MACRO .OPEN .LBLCK,.FBLCK .MCALL .AMODE .AMODE .FBLCKÐ÷&÷›@,ÜÌ$æúÍæ¤Í ˆÖ Ö5€æúÍæ¤ÍˆæúÍæ¤ÍÛ,͈÷ æìÍæ’͈÷ œæ®ÍˆæÎæ®Í¤,(͈÷ �æ¸ÍˆæÑ6‰÷‹n· ,*Éî÷ê:Ð7 æ7ŠXæ¾Øˆ÷eh8÷•E÷7,PÉF(@‰w>ø÷‹,æÚÀ¬× ‰7Šf€æF,vÉ Øˆæ Øˆð5`ÒˆÑ ˆÖ Ö5 æˆÑˆæzшæzшwØþæôÑY, ØæˆÑ ˆÖ Ö5 æˆÑˆæˆÑˆwææˆÑ ˆ–%,FØÁ÷"N ƒ� ÷ úW ÷ Ó÷ƒüÎÖÄžÓ÷ Ž& æ‹,ÊÖü*ÑÑôÐÑjÔ÷¦îû÷ ð÷‚âûÎÖ™,ðÖÄžÓ÷ \& ΜæÌû÷„Äû÷ àÛ÷‹¸ûŒ,× Ô .AMODE .LBLCK EMT <^O16> .ENDM .MACRO .WAIT .LBLCK .MCALL .AMODE .AMODE .LBLCK EMT <^O1> .ENDM .MA�E ;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Ð,ÀÍÑE×E�dEi,æÍE›ÛÔ@‰w¢÷w8‰‰æÚ.ˆ÷ z@‰è,ÊwŠ÷÷‹�÷ ˜t? ê÷‹š÷àòæ"Ù+,4Ê/ˆ÷ ЉÎ5·Š�Î5‰– ‡‰ÿÜÖ Ä é÷Œ”÷•^,ÞØ yü÷ tüæ¢øæXÕæ"ˆælæ^Õæ"ˆ,ÙæfÙæˆÑˆ· b÷-^Z‚ ÄBÕ÷ üÄPÕ÷ ?,*ÙôæˆÑˆ÷Ýæý,ˆ×„Ј÷ DùæÑæÔÐ ˆÖ Ö5 æÔЈæ„К,®×ˆ÷ 0ùæÑæäÐ ˆÖ Ö5 æäЈæÑæ,Ô×äЈæäЈ÷ œúæ~ÒˆwÞMCALL .AMODE .AMODE .BBLCK .AMODE .LBLCK EMT <^O11> .ENDM .MACRO .TRAN .LBLCK,.TBLCK .MCALL .AMODE .AMODE .TBLß(, Λ›¶,2Î # EDIT-11 V006A LS}XÎP OFF? bÎ * xàe,Zʲ÷®Àæ"Ù/ˆ·¦÷Eþÿ ÷ N÷ J– °,€Ê‡‰÷‹K7ŠE÷ |÷tÀ ß ‰æjwÚ,¦ÊýÎ5·Š&Î5‰7Š÷7 á44ù÷ 0ùÿ 67 ¤ü· ÷-"Óƒ¨,PÙ€•Ä:Õ÷ Ä7 ÖwÎþnÒ,vÙÄŠÕ÷ ž÷âÿÁ^üÁeÀnÒ÷5@Öÿ÷â¬üÂžÓ    N,ú× ‡÷ \÷ ŠÄŒÐÅ Da&ÎeÌ%D„Z, Øô… Å Àw„þ÷ J÷ "Å úð÷‹Mü÷ ­,FØL·ŠCüÜ÷‹?üãCK .AMODE .LBLCK EMT <^O10> .ENDM .MACRO .SPEC .LBLCK,.SARG .MCALL .AMODE .AMODE .SARG .AMODE .LBLCK EMT <^OälÎ(�ÈÎ$Ð*Ð0ÐxؼÖRÕ&Ò8×*Ô*ÔUÜÎ|ÕÜÔ–×üÓÓXÓðÕ@Ò`Ð:ÓØ,ðÎÓvÐâÕÜÓîÓØîÐjØ:ДÑWHPMXROF0BEMRIFVUH!,ÏGT‘DEVADR,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 MOREéNSPCDWLAKXJ0123456789/+@- Û<ÏãHÏΰÏxÐ,Ðê÷‹‹÷‹§7Š¡÷ | 7Š·,>Ëu 7Šo÷ ÈwÐþ·Šn0÷‹rË÷‹<wØ,dËî ‰÷‹I÷ DÊ7Š=7Š#ÁÆØÉ ÀòÏ2‰_,ŠËÀ ë÷ n÷å^ør,Ú÷ ¦Q¤÷ þö‡ÄÊû÷ ü÷ È÷ æëÁ¸ûÁeÀ,4Úè÷%ÿÿ.øÁe÷ ‚ Äœû÷ Î÷ ÿÄy,ZÚÎÕ÷ À‡÷µ@øìÞÒËãã(÷ ÷ ~÷ HÊ÷ ˆ÷ ¶Àß,ÞØ÷ üÄÜÐ w*þÅ Ì%RÌ%I9ÄÿÿM,Ù÷ ˜Ô Ì%I0&æ"ˆ„„ Ö ð÷ í.MCALL .AMODE .AMODE .N .AMODE .FBLCK .AMODE .LBLCK EMT <^O15> .ENDM .MACRO .DELET .LBLCK,.FBLCK .MCALL .AMODEîÀèÿ…Àäÿ…7âÿ·Šàÿ…÷ pý ,@Ðæ®ÍˆæÎæ®Íˆ…& æÏÖ w Á Ï,fÐÀ¨ÿ� À¤ÿ …Á ó÷ Ðþ @à †ï‰È fÎ �eÑ ñ÷ pwlþ·Š÷‹ì ë,°Ëwæû÷‹Ò ÷åL÷åhDæ@w¶ýTTÌÁ,ÖËBŽÌLÞÌODàÏTR€ÏTAdÏCC\ÏOVºÌID„Ìÿÿ·Šð÷ žñì÷ îÀnÒ÷ ”Äç,€Ú÷ ˆ¿Ä`û÷ ’÷ ^¸ÄxÕ÷ „ÀnÒ÷ Ò÷ ±,¦ÚÄ÷÷ � ÷ d÷‡Ä0û÷ b÷ .÷ LìÁû!,ÌÚÁeñüÃJ,*ÙØÒ÷ Âóµ@÷% ùÑwÌý÷ Ä÷ Ž÷È÷‹,PÙ=ûwöþ÷ îæÒÒ/ˆÖ ÷ °÷ (·Šû´ wg,vÙ<ý÷ n÷wû÷ úö)æzÐò .AMODE .FBLCK .AMODE .LBLCK EMT <^O21> .ENDM .MACRO .RENAM .LBLCK,.OFB,.NFB .MCALL .AMODE .AMODE .NFB .AMODó7 „ÿ,ŒÐ ‚À~ÿ…@` ƒÀ-tÿ‚Ànÿ…Ám¦þæ÷ žþ¢,²Ð ¨ ý‚¢ ú‡7 Lÿ‚ÀFÿ ¤ ‚¬ÿÿ 9,ØÐ†À-4ÿö‚À.ÿ Á â€e…ôÙ Ã,üË÷‹Ñ %‰"‡Ãn É¥ É¥ '‰æb·#Ê,"Ì\ ƒ‰Ñ ÎåÎ ‚Sü‰Ö é‰ã ÷6 ÷4 \,HÌ÷2 ÷P‰‡÷‹D <‰f• FLAG TST INIV ;ONLY ONCE ASK BMI ASKFRQ ;AK FOR THE FREQUENCY JMP STRAPS ;NOT NECESSARY .SBTTL HERE ASK LINE FREQUENCY ASKFRQ: JSR R5,ASCIM ;ASK THE QUESTION MESSZ ^\/ANSWER WITH CARRET OR 'Y'CARRET/<15><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 7ŠO h,nÌ·.– †‰Ö fÎ N` ‡·ŠR :‰wî÷‹ ¾,”Ì<‰fæ"ˆ·Š 7Š · – †‰wÂwÀÿ,ºÌ·ŠÍ ÷åh¼ ÷‹úw,>Û÷%ÿÿ(÷7 èù7’äùÀ2Õ÷ �÷µ@÷wÿ÷ Ì,dÛþÀnÒ÷ ¤Î÷ ˜ÉÄpú÷ ¢÷ nÂÄœÕ÷ @,ŠÛ”ÀnÒ÷ â÷ Ôö÷ XÁ5øûäЈÂÑIJÒ÷ RàÒÀ÷ ,ÚÅ8&æ‘Òæ"ˆæ€÷æ˜Òæ"ˆæt÷æ›ÒB,4Úæ"ˆÃ†Ò÷ ÎÅ ÷ à÷‹Dú ÷‹?úÅ ÝÃAüMODE .LBLCK EMT <^O22> .ENDM .MACRO .LOOK .LBLCK,.FBLCK,.OP .MCALL .AMODE .AMODE .FBLCK .IIF NB,.OP,CLR -(SP) ý`æ¤Íˆ÷ Àþæ’͈æà͈æc,pÑÖ͈æÌ͈æÂ͈wÈ÷& æÏÖ wÜ ÷ ¯,–ÑŠþö÷ ‚þæ’͈æ¤Íˆ· rþw …÷ dþ4žþÔ ö<‰fæ"ˆ·ª wš·Š,àÌæ ·Šæ w :‰· ÷‹¨ æ¾Øˆ÷Í@ ÷ D ¤Í÷< Å Í^¨,ÍæFÙæ¾Øˆn÷%, ÿÁe÷ ló‡Ä¼,°Û8ú÷ j÷ 6÷ TèÁ&úÁeå÷µ@›öw”þ•,ÖÛ÷ ŠÀnÒ÷ 0Ø÷ $ÓÄüù÷ .÷ úÌ& ä,üÛìùÃeÓ Ž —#,ZÚpÔ÷ °ÃÀÒÒ÷‹%ú÷ |ö ÷%LOvöæäЈ®,€ÚÀw,üæ„ЈæäЈ÷‹õùæÑæ„Јæª,¦Ú„ЈæäЈwæù·Š×ù7ŠÔù÷ òÃ.AMODE .LBLCK EMT <^O14> .ENDM .MACRO .KEEP .LBLCK,.FBLCK .MCALL .AMODE .AMODE .FBLCK .AMODE .LBLCK EMT <^O24>,¼Ñ÷ \þæìÍæ’͈$÷üPü÷üLü÷³ Hü÷,âÑüDü÷ ü@üæ$Îæ’Í ˆÖ Ö5€æ$Îæ’͈Q,Òæ$ÎæìÍæ’͈æìÍæúÍæ¤Íˆ7  7 " ñ÷ íÿ,4Í8‰÷ÛØ æÛæ¾Øˆæ¾Øˆ÷‹x 7Šr æº à,ZÍÎeà—%öÛ ƒæÛæ¾Øˆ÷Û  æöÛæ¾ØˆÛ,€Í÷öÛŽ æ$ú‡Ö ‡×­TöÎe‡7!x,"ÜÆù ôJÃeNã% Ë ú&æzш… R,HÜW!> Ä:Õ÷ ÊÿÄ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 ˆÑˆ‡ÁpùÁeæfùfæ"ˆÁeD÷µ'Ü,”ÜÕõ÷ vÿÉ•EÑ‹· @ù÷ fÿÀkÒ÷ à Ñ‹1,ºÜ÷ P¤÷ ö÷µ@¡õDÄå÷ Jÿ÷ Á ù Á¢ÑT$ T$ ÷ ð÷‹Sù,>Û÷ ̇÷ ‡÷ ”÷ >ùèÂàÒ÷ 2ù Á¢Ñ ,dÛw$,ùw$(ù÷ nò”Ô÷¥N÷ÄžÓ÷ Ì7 ,ŠÛø7 V #^O1,-(SP) EMT <^O41> .ENDM .MACRO .STFPU .STUS,.ADDR .MCALL .AMODE .AMODE .ADDR .AMODE .STUS MOV #^O3,-(SP) 7 ¦ æ2ÞæÌ͈æÌ͈æÐ, Ò7 � æ2ÞæÌ͈æÌ͈……w ¤ý÷ �ü7ˆüœ,ÆÒÄ 7|ü…7züÀ 7pü…wŠYü÷-füfü ƒÃ›,ìÒ\üƒ ,òÍwÒw¶÷‹â 7ŠÜ ·ŠÚ ÷Ü ¡÷‹Î F,Ξ7ŠÈ ›÷‹À D÷‹¼ æâ ÷¶ Ü ·° 8Æ&>Îw $÷‹o -‰‰æ¾Øˆ÷ ô ÷Áe<,à܇· ùä‹Ì•0‡×-öønÔ÷¾Ôìø÷nÔäøW,Ý÷ îþ‡ÃÚøÃeC ‡ÃÎøÃeNC ‡÷Ôô÷Ã,,ÝzÑšø÷æÑ–øæÈÕ/ˆÎ5wø& æ8÷wˆû÷ Ї÷‹ìø÷‹çø Ä ð,°Û ÷‹×ø÷ Ї÷ J‡Ä  ó÷ åê,ÖÛÂàÒ÷¤îöÏÁ ÑÚÑ÷ ä÷ ÀÉ%÷‹“ø EMT <^O41> .ENDM .MACRO .RECRD .LBLCK,.RBLCK .MCALL .AMODE .AMODE .RBLCK .AMODE .LBLCK EMT <^O25> .ENDM Äýä˜÷ Tüü‚…ÃLüÄFüÔ”÷ ýü‡7Š)ü$,Ó…÷‹1üwžw šÁ ÷ &üÀ"ü×­üð,8ÓÃPÏÁ &w ý÷ ü#€1£/ÃPÏDì ¦ZÎ^W,^ÎæFÙæ¾ØˆæÛæ¾Øˆæ¾Øˆ÷Û– À’ $õ,„Î>‰7l 7 h Ð%ê7$P ç7$L äЋ7”S ×­O È,ªÎÝ ‰wÒþw ö÷ 6ôÖ5ò¢,RÝ ‡Ö ÁøÙ‚ÑÒ Ê%OCÁøÙÊ%BYÁÄ,xÝ”Ú Ê%ASÁ„ÛÊ%RAÚÁüÚ÷‹›÷ÁzÙæú,žÝzшææÑæzÑý,üÛÉ%ó÷ Ê÷ ¦É%·Š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,nÜ÷åhööÃØÒ÷ tÁÞÒÉ%èÉ%óµ@,”ÜòwvúÉ÷ ö÷�÷ .Æe÷êÓ÷ Ãz,ºÜØÒ÷ ‡ÁefT .ADDR .MCALL .AMODE .AMODE .ADDR MOV #^O2,-(SP) EMT <^O41> .ENDM .MACRO .CORE MOV #^O100,-(SP) EMT <^O41> Lü÷í„ûFü÷ €ûž,ÐÓÀm€û7<ü…÷ Îù7÷®Í´·ŠWû÷ ¼ù.÷™,öӮ͢÷’Íš·Š<û÷ üw^fÁÿÿw ÖÁú,Ôw º�÷ ûÛ ÷µ@Õ Ç÷µ@Í 5‰Ð È%âÁd Ð $Ý,BÏ$ÛЋ7”­ ×­© Ô@‰w>ò·Š? :‰ <‰f­,hÏæ"ˆ·ŠA ·> wüüwúüW"'‡<‰÷‹€ ‡÷ š& æ†÷ \wÞ÷÷ †& æ…÷ ›,6ÞHwÊ÷÷ r& æƒ÷ 4w¶÷÷ ^& 殀,\Þ÷ w¢÷æô÷ FÎEÿÎæ‚÷ wfffÁe· Â÷Ë& îÓÎò,àÜ‹cË%º †‹ãã(÷ àÃeËã ÃbÃåS”Â,ÝÎ ýÖ ‡ÁÞÒÃØÒ÷ ¸É%‡÷ ÌÉ%û¸,,Ýô .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,ŽÔà! ÷ô,ŽÏW®A‡f& "ˆ·b æ"ˆ·Z ·Š ·Š ,´Ïáfæ"ˆ·D – †‰·Šö ·Šâ Ò÷‹Ä Ñø,ÚÏ·Šå ηŠë ÷‹´ É:‰·ŠÐ "†÷7 Œ,‚Þöò7 ó7 Dó÷@Øó7 àú7 Èö÷•.¾ö7Š�öæÐÑ],¨ÞˆæÚш‡÷ óæÐшæÐш÷ Àò÷&ó£,ÎÞæôÑæˆÑ ˆÖ Ö5 æˆÑ# ČЇŠDaÌ%DL Ì%DÀwbù ,RÝ� Ô î·Š1÷ûæ„ЈæÑæ„ЈÚÑ÷ <÷%º,xÝ$ôwXù÷ ,÷%ôø‡æzЈ÷ êò$.MACRO .DATE MOV #^O103,-(SP) EMT <^O41> .ENDM .MACRO .TIME MOV #^O104,-(SP) EMT <^O41> .ENDM .MACRO .GTUIC¡TUS .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,Õû7ûÁÿÿw âÿ¥ 6úw Œw û7ðú÷ ú³,&Õ×-p®Íw 6w >÷5@P ÷-ÌúÈúÎ ,LÕØŽ¥…÷¤Í¢÷ Æúà w +@‰w<ñ÷‹; ‰÷‹3 À¶Ú ‰i$rÐ÷‹^ l÷šÐàæÙˆ÷ Þ÷ÖœŒÐây@$�ÐæbÙæÙˆ7 À·Š0 ÷ À÷¸¬ªÐây",$ä¦ ä¦L8,ºkQØrSÀ@n> &ä¦ä¦0ß05A(ÔÔ÷ À„Ï À%ÔÔü‚âÕÀ0Ô À%ÔÔü‚0ÕÀ²Ô À%ÔÔü‚hä× A-Úôwù‡æÔÐ×,ÞˆæÔЈ7 ó÷Ôвô÷Ñ®ôæÒÒ/ˆÎ5 �,6Þwzø÷ œòÖ ò‡Ö ‡æ(Ñ.ˆÖ ‡Åò �,\Þ4Ц&æ.MCALL .AMODE .AMODE .ADDR CLR -(SP) EMT <^O42> .ENDM .MACRO .RADUP .ADDR,.WRD .MCALL .AMODE .AMODE .WRD .AMO/j w d…& æ¶,rÕÑÖ wô÷¤Íx÷ œúÖ ñ×-ø g×-øI,˜Õ€fw Á ì…w ÷2 Ä( w Ä ûD,¾Õw l÷ …0,®ÐæbÙæÙˆ‰Âº· º=†Ñ ˆ ˆ ‘‘‘‘^,ÔБÈe &Îe —%z‚¦Îe ·%Œ‚ì‰÷‹¤w,úÐwh¦Îe ·%r܃æ˜ÎåÑ1BEILMNOPQRTUZ҈ؗ¦ØyÄØSŠØ•¨ØwÆØQŒØ“ªØuÈØSŽØ‘¬Øs2"ˆÅ Ä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 READ9àÞæÄˆæ¾ˆ÷5@ž÷æÞ’7 ”×-¦¸ÍÂ,VÖæ¸Íˆæ¸ÍˆæÎæ¸Íˆæ¸Íˆ…& æÏ,|ÖÖ wìÎZÎEÿÎæ‚wÒów÷ :Îå¦Î5Îe¾H‡Î剠,’Ñ—#-‚Î ÎeÒ& ¦Îeþ Ö ‡¦^X¸ÑÎe.Òû¤Õ„ÕbÕrÕúÕÖpØh×H×xÐÑ>Õ€ØôÓ`Ô˜Ô¤ÔÚÔ6Õ,Õ;=˜Ø‡¶ØiÔØKšØ¤× ¸Øä׬ÖØEœØl×@ºØ„× ØØCžØ„×&¼Ø¤×èÚØA<(Çè æÒæ Òˆ‡6ôÔ·Šü·Šü·Šü6 zØ PAGE C&8ÇffˆfˆÝ5@…ÁLÕ÷ Tów hó‚ß Õ÷ TòÚ XÇß âØì¹�= .MACRO .O2BIN .ADDR .MCALL .AMODE .AMODE .ADDR MOV #^O4,-(SP) EMT <^O42> .ENDM .MACRO .BIN2O .ADDR,.WRD .M>´øö,¢Öw 7 ªøææÌ͈æÌ͈…ÄHÏT "÷Dùf,ÈÖzø÷íDùtø×-pøH‚w Ì2ùÔ Ã&ùà Ãí&ù`Š,îÖÌ” 7Xøw àûÄå(7?ÆÖ¤äÑhÖîÖ2ÖÔÖ Ö¬ÖFÕלÕ~Ò?,øÑÌÓÒÓÜÓîÅ£–Æ‹Ò׌Ò×ÔˆÒ׉Ò׊Ò×�ç,ÒÒ׎–Æ�–Æ�–Æ––Ɔ–Æ“–ƃ–Æ„–Æ…–Æò@ Ø°Õú¾ØÐռܨA¢ØèؽÀØ0ßPÞØ9¤ØÐÕÖÂØÚÕ®àØ= îÖä¦0ߘ*,ºÁ>Õ É ý÷ šæ.×A"ì¹ß�Ø0Ôß „Ë÷ ÿÂ5ÑÒ• Á&Øß Š*º¬Í¦æ6ˆÂe Ò• ¦æ6ˆÂeŸdчm �Ø.MAIN.,^Çà ÷ ¸f÷ ðÿ�Áe0BCALL .AMODE .AMODE .WRD .AMODE .ADDR MOV #^O5,-(SP) EMT <^O42> .ENDM .MACRO .CSI1 .CMDBF .MCALL .AMODE .AMODECù…Ôù ¤÷mBøs,×üøÀ-üø ‡×-ø·îø÷m(øæø€w ¨û…Ä:,:×ÐøÃÎøáZÄíÊø!RƒÄÂøÃ¸ø#™!ý‚÷67œ,`×â÷æøÐ”÷ D,DÒÒ¨–Æ«–ÆÓÕ­–Æ´×Ø&Ø:Ø\Ø÷‹K”,jÒ‰æ¾Øˆðµ@ÿÿø…‰÷üZ÷íôT÷î),�ÒP·áLÄäÁ@@`� Â:‚ ©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,Ó!÷B÷‹»êJ,ì¦æ�ºæ!ˆÁØß žÆÁ¤ÐáS! áSfæ.×À,§ˆæ.׈ñ‹0ˆÅ—¤Ðõ‹nÖæ�Ð.ˆ‚ Ò•&8§? ŠÁ¤Ðß žÆæ7ˆ_�ºÁ�ÐÂK�ÐÞÒÓ`,ÊÇ÷ °÷ Ð"& ÷ ’ÎRÀ Ö÷ ®÷ 0õÎEþÿù,ðÇÌ5øÿ· ’ †Î ÷U¨  ÷Už ‹U@È€‡ß âØn·2,n·&LDDR .MCALL .CVTDT .CVTDT #^O0,.ADDR .ENDM .MACRO .TMCVT .ADDR .MCALL .CVTDT .CVTDT #^O1,.ADDR .ENDM .MACROM,Ò×@72ø7!6ø‡…& æÃ & æÐ& æÈæ,ø×& æÆÖ wj÷ \&Ãü÷÷ ú÷†×¤ úÃí,Øì÷× HÃâ÷ÄZÏÔ”×¢ üÔ• Næ¾Øˆ÷ l÷‹¯÷‹¦ 4$(Ó÷òÒ÷ ÷t^ ÷ ÷¶BÓ^j,FÓæFÙæ¾Øˆ7 î7ŠwæB!ˆ·ª÷ed¤·tù,lÓ÷íOøÐß p$X§œÍß�ÐÀÖß ¬º&f€ ‡ÀÖß ‹,v§¬º€fˆŸŠÑf ˆÖ5ßÑŸŠÑ–%€ ‡è,œ§_ ¾º„�€€fˆß îÏæ×ˆÁPCfffffß XÈÁÔ¡¡B¡¡¡Ž ‡ú”·¤Xß †È”$Î ¦_äØ Ö¯·+¥·-ö·*¸/ì·&@ 4Öò·!,¤·ß rÈ  ŽÏ”dŒb¤(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÷  ÷wæü÷’ÍÂA,�Ø€÷· ¨öÀr÷Àå‚€ Sœn÷åh†‰„Á\@àFàwàêæææÈ,’Ó!ˆÖ wàêwàèwàÔwàÒwàÐwàÎwàìwàÞ ,¸Ó� Â$‚  ý‰‡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 <\·Š0ö…Àþö7÷7 $ö…÷-º´3÷ ²É,(Ù+7 ª÷ öæÖÝæà͈æà͈÷µ@�÷Ú,NÙÜÝtÿ• næÖÝæÖ͈æÖ͈÷µ@iw]•æÛæ¾Øˆ ÷%¨,NÔ7 ð7 öè÷îä¦Â®€$Ñ Âeà— »,tÔöÛƒÂÛ·”¦æ¾ØˆœÿÿÂEØÿ5‰‚‡æä,šÔ¾Ø¦^ôl¨ ÍÁÐÒß žÍÁ×ß  ÍÁ©€¨„Ðß žÍæøÖ5ˆ‡  ¦ºß âØ�¨¹�¨BÊ ¦ˆ¦ˆÉ ÷‡•>ÕP×.×$×8××µHÕhÑÞÒ Ò_÷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…,tÙx÷÷ÜÝJ÷ ZßB· >…·Š¬õ…÷ þ æŽÞ“,šÙæˆæøÿˆ÷”ÞàßÜ· Ø…æÈÙæà͈À,ÀÙæà͈…‚÷- ÷ bˆˆ‡7Š™À¸Ü7$ Ñ ÷‹÷Y,ÀÔR÷Ù÷: ÷Ù‡ÀØ7м ¸ÜÕ,æÔ ÷ ðæ>Ýæèˆ÷�¿  ÷ Øæ¸Üæc ,ó× ERRORS DETECTED: FREE CORE: . ï ØWORDS # MACRO VR05A &øÖ@××Ös¨z•€%9d,ÞȦr ÷ ÂË5÷U@¼ Ë5Ë5@G÷UÄ,É ª ËE@AÁ–φÏ÷ ˆ ŠË 8ËU 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!$À‹÷U€J — ÷ òÂË,vÉ åW!.÷ D÷U & ÷ ð÷ Þ€‡À:Ö@œÉ÷ òú È ôÆ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 îô· L÷¯HJ!ׯ@ (ׯ±,~Ú8 $ׯ0 ÒŸ(· Âôé7 @7ºôw zþ÷‹8,¤Ú”ôl¶ €�‚ƒ7,~Õ„…‡æ˜À NŒý†‘“ΕÎ ø†Ö ‡@‰wöë…,¤Õ‰ÄþÿÅýÿÂôÕ ‡€âƒ ûË× Ð,ÊÕÃe ÃeÃe mßRÓ0Ôß rË C ©²Ô ÎÔŸ  Ï ŠÏ߈Ïü"©ŒÏß TÀß  Ï�ÅW²ÔÌ_ ¾ºƒ€‡ß ²ºß âØ.¸ÿ,.¸ß ~ÍÐ Ë $)Ò¸ºÒ�Ê n:ÖXÈ+¨É-°É"²É'ÌÉ%õNÖÖÉ<äÉ^å,¨É÷ Ðþ ‡‚ ÷ ®÷ ÄÉŸn Ñŀ ÷à÷ 3(ÎɬþËU‡÷ †þW!>Öw²þÀXÖ÷ oA FUNCTION OF THE ADDRESSING MODE OF ; THE ARGUMENT GENERATES THE APPROPRIATE ; MOV TO -(SP). ; ADDRESS MODES THAT ARE TROUp×  R×­hõ I÷ ŽôÅvôwj& æÊõ,ÊÚ& æÎ& æÃI7 tô7Š€ýß@pÿ7 ê3,ðÚÆõÆåÀ\ô÷ >ô7 ŒÀõ7õ7 ÐqÃe Ñ�Ò … è€Ð „ ßv(,ðÕ‰‡@(ö �‘Ä‘ö €Ä3‰Ž‡Ã,ÖĈÄm’‡æ\Îå Ö-R‡/‰‡‰À@7 @©,<Ö‡rÁ¢ÏRT¸RÊ J&æˆ ¸ºß âØb¸Åb¸ &戇t,¾ºfÎ忦fã÷ · ²÷ 2÷ Ò÷ ¦÷ 6n"äº÷êœ÷s¦ùHÆXÖðÉCøÉDüÉOÊBÊFn,ðÉ÷ ˆþL ‡ÂeÂeÂeæ> ·: ÷ Hþ·2 ‡ ,Ê÷ ¦ùâ‡÷ \÷ ÁŠÏ! ! W½nÖ Â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ƒ,ˆÛ•· âòùÓ•?Ó• Ó• ÷eÎòw òúlÎ7Šºü··,®Û„ À Ï £ Ïû& ÏÁ $÷ €ó% ,ÔÛÏÁ $÷ pó{&‰õ,®Ö‡ô¥ô¥÷Îe‡&‰‡Îe‡¯,ÔÖ&À¤÷e –.‰€‡‰Ä†‰÷e ,úÖ ~÷e z””””.‰‰‡|�ß'¦Ï¼ ‚¸„Ïó _ 6ÔæhÑˆß ÒÂXÕJ 4»ß âØœ¸œ¸ß4»þÑŸÒ þÑßÒæ�´¸ÒæhшŸ :Ô_:»Ô:»ÀvÑ }ÒÿÀå@‡÷ Ò Û,®Ê ÷| | CÃå0× ‚ ‡€ „& „ †N`Ä ",ÔÊÁ ù†ÀU€ö�Á`÷ ˜Àeäwš‡÷  *,úÊ÷ ÿ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,úÛ€7¸7Tó} ôÎw0& æÏ & æÍ& æµ, ÜÌ& æË w<ÿÒ�&  7 ó7ŠöòÄrÁ,FÜ€‰Ä|Äe 7! , ×Z †­ #‚ô‡2-ðƒ7!b‚÷e Z,F×׉À0Áe  ‚‰‡!!!!!ö‰‘,l×Á @`� 7 �à„&æhш‡ˆ XÕkQ4dr l×PA"n×P»§*P»÷ . 7N‡÷ ÷ ÎÀÔ7`Ð÷ÿÿÌ7 ¼t»Ä7 Æ7 Æ÷ 7 °Â�‚÷U¦ ‡@�nÖ ÷ ´ À5Š, Ë÷ ¬ ÷U„ ÷-þœ ÷ Fõµ>nÖú÷ ,¿&FË÷Uf á÷ · x 7 x ÷Òp ÀE€ÿ‡—,nÖƒMEXIT .ENDC .IF EQ,.SYM&^O70-^O10 .IF LE,.SYM&^O7-^O6 MOV .ARG,-(SP) ;@R0 TO @R6 .MEXIT .ENDC .ENDC .IF EQ„À4Ï £ ÏûÛÀ%"ÏÀ%-Ï$À%1Ï52Ä%ã,lÜZÏÎÀ%-ÏÀ%/Ï)· Îò%ÁþÿÎ-Šó ‚· ¾ò~,’ÜÁ Å ¸£EwÿÁ5ð²Å ¸¹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Á Á �e�e¤�£…„ º!ZÏš×­~ò �,ÞÜj£ ôÅ ‘Åå ÏW!W!Á �÷ Nòˆ¤,ÝÁ ‚÷ DòwúþÁ ÷‹òŠ7 ÀúÙÁ(߉7 ÷Ì®,ø×ÀúÙÁ߉Àß ‰wˆî€ÁðÞ‰ÀèÞ ‰& ›,ØæÀ‡‰ ‰Äå&æÁ‰‡&þÿÎEÿΜ,DØæ‹ D` Š™W! ‚W! ‡W! õ· 2–,¼òR‘E”@�nÖ À5@ø÷5@ÈÅe Åå ïJ‘V,.¼÷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 .ò€ ,*Ý7Šw‘òÅ 7 ò} ÆÎ÷‹'û÷ZÏp7Šûwäþ5,PÝ÷ ôñ4÷‹ïñ1÷‹æñ.· R· PׯJ · BO,vÝùׯ< �‚÷‹‚w~ÿ7Šxw:îæÎEÿÎæ‡à,jØw&î&æªØˆæªØˆ‡&æ´Øˆæ´Øˆðµ<,�Ø@ô$·Š45‰ÑE×E�*T¼7ŠB÷RÓÒ÷ ÷ ÒwôþÀ ‡Áô,x¼RÓ! ! á„fæ8׈æ8׈÷�»ž×Q$Ñ ¥",ž¼÷ Dý€˜ ƒÿ+ƒfÁfÑ ƒ ×-‘=,®Ë÷ j‡À÷ `‡À÷ V‡÷ Ê7 Ä· 6,ÔËÂÀ†ÏкȪ"ƒ÷UÂÀ÷ $‡  ×úMúËr$úË÷5€ä ’V .ARG,-(SP) ;ADDR AND @ADDR .MEXIT .ENDC .ERROR .SYM ;.ARG ADDRESSING MODE ILLEGAL .PRINT ;AS SYSTEM MACRO ARGUM“ׯ4 ׯ, w þ÷‹Îú ÷ ­,œÝÊú7ŠÂú÷ZÏ w„þwhý€îwzüƒ ÂÝw¨ýSÑ0ÞS�”M¶ØxQ€M=Ðf,Ù˜b€fây€fÙTÙ´Ø8Ù¾ØFÙy,(ÙÙ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Ù‹,–Ùdš÷�„r÷ +,*½XK÷ €+÷‹ÖEÎ÷5v ÷ ”5÷5ÂP½ˆ÷Öb÷5z÷RÓ´ h½T÷‹a÷5f÷E<÷=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Ï FÏêXÏ•€%SÀ@Äu> VFÏ CREF V005 T8ÞÀ8Û À%8Þü‚\TÞÀ$Þ À%8Þü‚Q†ÞÀ4Þ À%8Þü‚âÞž%¼ÙE,ÜÙ$ÚÿŸ,‚½6 Î�‚÷5HÁfØÂ"Ó÷ Ò• ÷ Å ¨½† Š·“aÁ"Ó÷ ê÷RÓþ÷ÖÓê(½ú÷ Z·“EL?ŠìÂ"ÓÒ Â%RÓû÷5ó ,ÖÌ ÷  µŠÅØõ`¦Øµ ŠØ�Æà‚@à€ RÀ ý.,üÌõàˆØõà¦ØÅåù€ƒ à ý€æ3Îe€çÀå¼"Í ‡7 è†7â‡w ˆí�M.MEXIT .ENDC .ERROR .SYM ;.FBLK ADDRESSING MODE ILLEGAL .PRINT ;FOR .OPEN FILE BLOCK .ENDM ¢7üÞßúäÞ5þÞßøæÞ3ßßöèÞ1ßßôêÞ/£ Ú0?,¢ÚšÁ0ßÓ«… ây¨zqQà[<  CC TRANSFER AnÈÚDDRESS: 0ÖÚ LOW LIMIT: :éÚ HIGH LIMIT: øýÚ ¤,ä½öYÁÄÔÉ Â$Ó÷ Ì ÁÈÔÉ Â+Ó÷ ¶ì, ¾É5?Ê•'É5@Ê•G Â"ÓÀ@ÔH H¬,0¾÷5¦÷ " ·Ò• · üûƒÂÁ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Ó|,V¾Áb÷ NÁ"Ó÷ <?ŠR÷ ˆ÷ ®÷5$`¢,|¾¥óÖ À ÷ ®À7 ƒ7‡Â"Ó÷ ŽM,¢¾À@ÔH H÷5ª„À ‡RE,œÍRRRRRRR‡R”þ⋇÷ Êú&÷ îö÷ (8,ÂÍ & &÷ @ïÀ÷ dÿ÷ @Å�ÿ÷ Ü÷ L’’F,èÍ ’÷ ”ýÀÔˆ $«5ˆÆeÁ ÷',âÐßìÖŸ^Û_ 4×_ ºÖ×' Û_ ºÖÁ Û^,ÑÁ Á GÑJÑÑÑ,ÑÑ_ ºÖß èÒ_ ºÖß º*.ÑÛß Û_ ºÖ¬ &ßêôÞ%ß (ß æöÞ#ß*ßìøÞ!ß,ßìúÞÞÞcßâÞD­ÜÝ ********** H ,<ÞUNDEFINED REFERENCES 55 LOÆ,bÞAD MAP XXXXXX.XXX 00:00:00 v®( „÷ ¢À)Ó ˜Ê• „ Ã,Ⱦû‚Â)ÓÒ• ÁÄÔ÷5É ÷ ÞÒ• ÁÃ,î¾ÈÔ÷5æ¯ÄÉ ÷ ¼É5?Ò•'É5@,¿ò•G¯ÈÈe‡7 FwHß B ÎâØ°±þ °±ßU²Ô‡ß ôÊùß Ë߆Ï*ÔߘʱˆÏ,Ôß ¾Ëß Ïß êÎ&ß û$Ȿˌß ÐÌß ÌÃ÷ Ê Ò°æ¼Ñ_ ¤Þ_êÓß èÒë_ x,RÑÆÓNO CIL OUTPUT DATA SET CILUS V0È xÑ1A69 ¤Ñ°ÑªÑÒ*ÒÚîÑøÑ˜ÑäÑÁ$’ўѶÑâÒšÓúÒ~Ó±.ßæ&TÏFÏ0ß· `÷ ÖæÌÞˆ�ÂöÜ÷ à Â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ß žÎß êÎ æÕ*ž²ÎÔæ&ß ½ß ÎÅ‚ÿ_Üͺ (ÒšÒTÓf <ÒŽÒFÓk PÒšÒTÓ=,dÒÑE�dE×E‡dúŠÒE=@=K,ÈÒ»æØÛ.ˆ‚ Ò•',$Ð? ŠÀÁìÛ÷ "æ7ˆ¹ÁØÛÂ@Ü÷  ÷d,JЊ & Ä2×÷ Ò Ž`÷•ð Ã5÷•ä ÷•®,pÐß 7 ` & Ä,×¼$dÈ dÈ0dÈ%Ë¢>  dÈ *Û Û .Û_ :ÙæÒ_ ôÏŸ,~ÈÒ_ ÆÔ# æ¤Ñ_ úÓ0ˆæbÔ.ˆ‚‚ Ò•?f*¤ÈÊ•½,Š¿÷ à W!: ÀÀíþÀ5ÿ÷U ÷  $÷ z,°¿´ õ‹nÖÁ(߆Ï÷ Þ Ø÷ �À5Ò÷UFÖ¿â ‡ß âØì¯�,ì¯ß Ê õµ¾ßU²Ô‡Àß Ñ&²8Í ÎÔ .Ôæ€ß ËÅ%?ŸS.Ôß ,â²nËß úÊÀß ÂÌ¡ íÖ ‡  ÎÔß êÎ&à ~,³#ß'(ÔÎÔ&ƒß Ëß ¿èbc˜b,îÒÀb˜{¨zº,ÓÀ÷ ¨w �†æB!ˆ‚eŽ ƒ¨,–ÐŽæX܈7 ¶ � ê†Ä2×÷ ÌŽeÎeÎE·Ø U,¼Ð·Ö †æÎ æ!ˆ÷ €ÁÑBÊ ¦ˆ— XÜË,âÐÁ ßU2Õ_ ÜÔtÔßE2Õ_ &Õàß Û  Ï$ÈÈbÔ ß ÛŸ *Û_ÐÉßbÔß,Ûæe,æÈÒ_ Íîß Û7æLO_ 4Ðß ÛŸ *Ûæ7+ ÉÂnÖß €Ëõµ0nÖúß rËW!= W!–°:ß nËèß ´ËÀŠÏ€ ‡-,â¿÷- l(÷  ÷ ¸ ÷ Ö÷ r Ë5 À–ÀEß,ÀÀU PÌŠÃ.Ô Å%\0ß $ÎÅ ß ½".³.Ô:�ß ¼Îß €Ëúß žÎß .Ô០Í&J³ÎÔß €Ëß ¼Î ß ¼ÎõE ß ¼ÎE ß5€s&j³ÜÏ ÀÀÔ¾ÔßU€ºÔÄì:Óà PÓÒ ^ÓÄ lÓ¶zÓ&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Ë &_ vÚ ¦âæˆÀpÔ&hÊ ÞÞSA¦àÞ$ÑD,$Ñ·  ‡ ð•æ÷ € Ö ðH&½,JÑ/ˆÎ5w Âÿƒ&&ˆ& ˆƒÖ ‚÷ +,pÑp€�À Ë€&~É_ îÎæÒ_ PÏ_ Ïß ,Û ß .Ûß ¹,žÉ*Û_€È_ ÞÖß *Ûš_ ÆÓTOO MANY INPUT,ÄÉ DATA SETS ß,ÛÂ Û Â% ÃÌËUæ&ß ªËŒËE¿ÿ‹U_"TÕß ÐÌ Ÿ¢­~©›ÏœÏßU@²Ôß ÌÇ´,TÀÄŠÏ ÂœÏÁ5€Ê5Š ÷U>Á5I,zÀ· 8Á �Í0_¼Î Îß âØì³Ì$ì³ ß Z»ßU@ºÔß Ü¿À5 ƒ ß% Î-* ´ŒÏ à à €‡ß °ÔÀ5÷ òßRÓ0Ôß œ&.´„Ëß ÊÀß €ÌÎ,$ÔÐ Šæˆæˆ’À5@öe‡À _ ÆÓ³JÔCOMMAND INPUT ERROR V`Ô‡< pÔP_,ÆÔ¦öªÑ@bÅeÅEχ÷ ´Ô Ë  (Ò²ÑÒ�¬,–ÑÊ RRÊ  ä ÷  &æˆ &戇’,¼Ñ && æ ˆÖ –%òÖ ÷ ¶  ì‡÷¬ è±ÐþÿÂ%,êÉÂ%Á ÁÃeß ,Û_¸ÌÁ y,ÊÇÊËØÊBÊ_ Ïï_ ÆÓTOO MANY OUTPUT Ø6ÊDATA SETS ^,BÊÑ&  ¦wV÷þ8÷ €w�'ÁÁEÛ, À€ÿwÁ Á & f`ÕÖ A^ÕfÎÁEÿ÷ J ¢,ÆÀ ñ LÁwŒóÀ Ίý Á¶1PÖ �êÁ¨@tÒ ÅöÖ ß &Ôß &N´¼Îß &Ôß fËÄ ß ¼Îß tÊùW!'ß Wn´¼Îß ½»Ÿ &Ôß €Ë×, «ß ôÊ*ÃÔ!ß ôÊ$ß ÎÅ ƒ ß €ËÓ¦öªÑ@_ NÕDˆ,ìÔË &&_ vÚ  ôþÿ&戀Áì,Õ4Õ æ0Õæˆæˆ‡_ ÆÔ …P+,8Õæ8Õ_ Ô,âÑ÷ L÷ Ô 1Äe-Ä`Ä`&7: À÷ F Ï,Ò–ÝÒ• à 7 ÷  ÷ põR‘û Š÷–Ýö 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 LÙÌþƒ‡U¾Þ[,PÒ÷ 7 Ê ÷: 6 À÷ ˜÷ >÷ ¦÷ ¶ wB,vÒ"ÄPÛ÷ FÅ Å%Å%Å%Å% ª,œÒÅ%‚Å%ÚT BL+'´ÊOCK VALUE ON /NS SWITCH IGNORED ,ÖÊ¡ÄäÑ&_ Í�‘Ÿ .ÛŸ &Û&_ ÊÎ N&æŒÐâ,üÊ_ Ú&ˆðþÿ&&ˆ_ÊÛ~~~~D~T~Ü„Õh~JJ~^~JR,LÁ‡÷ 0À5øÿ÷UTÀEøÿ‡÷ ÷­-Àí*rÁ(€ Ü{±[,d± ß $Îß rËßU²Ô‡ûß $ÎÁ0Ôà ß ‘,бžÎß Îð@’B   Å ß €Ë� ôC _žÎT,Î÷ îü<÷ Vÿ Â0Ô¦Ã<ÄÝ_ TÙCÁÂeÁeR”RRÁR,ÈÕRRRR‡_ NÕDÄeÃ^ÛÂ`Û�ƒ €�†,îÕ `øàö€ Àe‡‚€áæB!ˆ ƒ´Þ"†÷ šT‘÷ >ã÷ 8ú÷j vI$ÂÒÀ÷ Ö· z7 Z î· R · P ÷-L õ,àÒhæƒ÷D `âf÷ ÷ D€ÀåÀ ÀeÃ$ ‹,Ó C  ßĘÑ&_ ÍÇ,"Ëßߟ .Û&_ ÊΡKæNS_ 4Ð_ ^ÐÀÀ ý,HËðÚ_ ^ÐÀÛP Û&_ vÚ#:ßnÚJ+nËðÚßnÚÛÀ5@×'à‡À � ÷U,ÀÿÀEÿ‡ß âØ”©,”©ß lÍ&ß ÊÇŸ ¶Ôß Ú—¢€Ö ‡À ß 8ͺ©ß ÅË€ÎŒß Å ‡˜,–Á÷ ´ÿÃüÿ÷ á>C!W!^õµŸ,DÎ8nÖ÷ 2ýù÷ ýŽC D÷ ý C!D!ù™,jÎÁ Á � õ€Ž ÅU€÷U2ÀÀ Ô�P:Š8,�Ί÷ ìü7â,Ö� �ü`Ûë_ ÆÓSTACK OVERFLOW,:Ö _ NÕDÁ^ÛÂ`Û€„  ‡Âà� ƒ Ä,`Öú�Ÿ`Û "ü†‡_ NÕDCãC ÷ ê%÷-€  ʇ ‚÷-ú Ň‚÷-: ,Óò À‡÷-d ø ¼‚ ‡÷-úð ·‚‡÷-3,FÓòè ²†÷ <7ê÷ V� ÁÜÑ B…þÿÅU],lÓÅà… ä Û_ ÆÓ NOT CIL L"”Ë&æŒÐ_ Ú3ßlÚÛßpÚÛ _ ¨,°ËÆÓ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ò÷% º÷ À÷ ZÎU´, ÂSW!(÷ ªÎU P÷ ¤W!+÷ D ÎUF¦,0ÂÎ5ÎU@ 5÷ ÷ W!(Ë53Êë’ 7 ‡° ‡ð  €&È üÈ,(Ïø·ô‡÷ ¶ÿâ ÁÔ¦fR Á%"Ôû‚R’,NÏ· Ò‡ÂÔ€÷ ¼ÿ€÷ ®ÿ�â @÷ ìÞÖü…‡ÿ,ðÖôÖBa¨z4V†Ba4W†Baî,×4X†Ba4Y†Ba_ NÕÃ^Ûµ*<×Á ÛÂlÛB  íj÷ \,æ¸ ÀVÐ &&÷ ü÷ êÂeƒÎ F,þÓÃ5ÃðÿÓ Áæ&     ÷ HN †Ñ•V,$Ô#Ö è€Ñ•@åÖ ÷ ¦ÍÀ�Àe7 î×' Û-æBL_ 4Ð(_ ^Ð_ ÆÓNOH,nÌ ARGUMENT ON BLOCKS SWITCH ß ÛŸ%«”ÌÛƒÛ Û Û&æŒÐ_ Ë)¬Ì ÚŸÛï,VÂÎ ÷5ˆ Ë5@·¢/ ÷5r ÎU,|ÂÎU7÷ ~Ë5÷UËEffff÷ ,¢Â¡¡¡¡PÎU0÷ $÷ ^ €Uð*þ tÏ÷ ¤ÿ÷ ¨‡Õ*‚´÷ ’Bß „Ï< J׿8׈æD׿8׈ ß À,¦´Z»ß Ü¿À5øÄŒÏà Ì% Îòƒ ƒ Ã%íß 5,Ì´ôÊ ß ñüß^Ûß`Û‡_ NÕCDÀ|,`×jÛÂeŸ bÛ‡_ ÆÓTOO MANY EDIT COMM”,†×ANDS ŸjÛÁhÛ """úÑÑ*,¬×hÛ‡òÃ",JÔ· øÁ.ÞÂÞf÷ ú– ‡wêý¦Îmà—%–Û@,pÔƒ÷ fÂe¦fÀt P þ‚à èÀíh � � ÷ Ó,–Ô*Âm¬à÷ "Ò•-�÷ ó_Êß .Û _ ÆÓ NO OUTPUT Æ,ÐÌ 8Õ×' Û×' Ûß ÐÒß èÒ_ ÆÓš,öÌOUTPUT CIL DATA SET NULL _ Ð_œÉÀ‹,Íô‡÷ ª÷ †þªÈÂW!)wœ÷UÚ‡Ûˆ×I »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©,LÃN à7 6 Ì Ñ‹÷5† É‹ ·¢/ W 9Øf,rÆW 9Øú°Ôß ÌÃóÀ 4µ°Ô‡6×Ôx¨z~Ï»zkQÔx× âØ¦‡‡nN×Ba¨zä¦8©|«Ø­ì¯Hb×°±8µ"·.¸,ºÃ<Õ‡_û$ü æ„_ ÒÕæ„_ l,4ØÒÕ &_ vÚ$ȳ &‚â& ,Z؈Áß ÈØÂ%&ˆ�œÁE@rÀ_ ²Ó -,€ØREADü &À6;*Õ7<7œ˜Õm7 º7 ´€÷ ° €÷ &f· \,2Õ ÁœÂ‡Õ÷ „Ò• Ò• Ò• Ò• ŠÀÁã,XÕlÕ÷ ø÷9r�€wêýöe‡›’_ NÕÄîÑ&_ Ê΄K&æŒÐC(¦Í_ Ú Û Û&_ vÚ &ˆßÛÞ,ÈÍøÑ&æ_ ¢ÕߎÍtÓæ_ NÚ‡�Ÿ Û&ˆ‡_ æþ†÷U0J’÷ .Ô‹“€ —¢t˜Ã—¢ ÷ ê ŠÊÕ€‡3Ø ²$|«ß ôÊß ªËß5ŠÏßU@ŠÏß ÐÌß ë&š«ÌÃÿ,èØ£€�€ñ£€%€�€ñã€�@ 〠€�@‹ä@‚ý,Ù`ä@‹ôä€%@‹ô@ @‰t@ À@‰vD O,4Ù€�À D € €�ÀŒJ €�€ J € €�€Œ ERROR îÁã³ß ÈØ€‡æ‹# _ [,¦Ø<Öò öÓ æ _ <Ö&ˆ&ˆöe‡fÑÿ,ÌØ~É&ˆ‡_ NÕBƒƒlÂeÓ$�”�”B` CROSS REFERENCE Tk~ÕABLE S-©,˜ÕSMPCE Á@ÜÂØÛ÷ šÁXÜÉ f&¾ÕˆfˆÄ,×÷ ^û w |÷  ÷ÿÿ,îÍNÕDæNS_ 4Ð_ ^ÐÀÀ 4þÿ_ ^ÐÀ”,Î4 &_ ôÏ4‡Ó$Ë  ˆÐ&_ ’,:ÎvÚ/À5@ ôlÚ ônÚþÿônÚïßU²Ôë‡ß ÊÇŒ ß rÈŸ 4Ôß º«ÚÂß ¬ÄÁ†Ï¬Ï_¢ÍC äÔŸ ²ÏÌ«ß ²ÃßPÕ†ÏßRÕˆÏß @"૲Ãß ÊÀß €Ì ß—ÍØ‹Ïû „† Þ,ZÙ„‡Y „� „¬ „É „‚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 °e„o„‡oÀvÉ,ÌÙ„ƒt„‘„�µ„ „€í,òÙ€P„ó„„„…;€¯þ,Ú³À D4 þÿ3 þÿæ,dÙ Ó$ 3 #Š$ $ ‡_ NÕÄŠÑÁ–Ñæ˜Ñ!,ŠÙ†Î ß ÛøÂò ôæ_ NÚðÖ ‡_ NÕÊ,°ÙÄ~ÑÁ–Ñ!†& ‚ <Ö&0ŠfÜ÷ (÷ ´ÿ÷–ÝÔ÷ ¢‡A$ÀÞ # ×EÑEt(VÖ÷ Ø· ö†æÌÞˆ· ê†æøÜˆœPÜ7´,xÖÚ#  MISSING ô&µW@_ NÕDÄ,ÒÎË ËÆÎóÈÎÓ$Ë  ‡_ NÕÃbÛË 4,øÎ‡ÂЦ_ ÒÕ`““ ‡_ NÕÄ¢Ò‘,ÏÄbÄb ¬Ãv ²Ãß âØ<¬ô <¬ß ~ÍÁ–φÏß ¦ÍÀß €Ìß  V¬¤Í_ÐÌ…*¹ß <Æ ä ß Å _Åß ÊßU²Ô‡· (¹´Ï߈϶Ïß €ð£€¡®€¨²€� ²€ €�ó,>ÚŠ²€�ñ²€%€�ñ¶€¢º€¤Ø9,dÚ‚ Ø€ ‚ Ø‹÷Ø€%‹÷ €¬%_ ÆÙú‡_ NÕDÉ &fê,ÖÙ ˆÖ Ö5 fˆfˆ‡æ,üÙüÙîÙ_ NÕBDÁÚ&f_ ¢ÕCƒ,"ÚÂÝ ƒ÷ æò¥ ÿÿ†Ò• Ò• Âà£# �,žÖÄ5 æÝæøÜˆ„ †æøÜˆæÝæÌÞˆ‡"HÞ·Šþ·Šþ· þ‚,ÄÖà ÷ øf÷ òÿ!8Ïø4 þÿ_ ²Ó"/" SWITCH I,DÏLLEGAL ç‡_ NÕDÓ$æÂ À_ ¶Ïé,jÏΕÿÿ�Ј‡þÿΕÀ_ ¶Ï�ÐfËÂÑŠJ‘Ò‹ß "B¹€Ë— 4Ñø‡Á5Ñ¡˜þÉ• _bÑ ‡¥,ΩÂTÔß „Ï R‘8ß €Ë— “Ôù‡â‹÷ß5 ÜÏ-ß‹Hô©Ñ*Á?Øß ¬Íß fËß tÊ:,ŠÚ€�@ %€ €�@ŠË€�À Ë€ €�ÀŠ~@‡rX,°Ú~@‹ù~€%@‹ù\!†ˆ42}€s:€�7,ÖÚ€ s:€ €�€Š¬:€˜@�@³&_ vÚ  f_ NÚæó•›&&ˆÉ,HÚ&ˆ‡_ NÕD&_ vÚ&æˆæˆ‡š,nÚ_ NÕDË æˆ &æ ˆÖ Ö5ÝDD (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Úß nÚÀEÿ_ €Û,ºÚ&& æ ˆŸlÚŸpÚ€À5€öeöe‡ç,àÚ ô÷ââÁ<Û! ! Â--÷ @ ô,\×÷ ‚ ü‡ `÷ &‚ ø‡úÑ ó÷ jÀº‡À ¤,‚×À À &À À €e‡÷ ^@ðµ4XØ $‡ ¹À‡_ NÕD&ˆ& ˆ–%€À &ˆ‡ ÐúÒšÓæÐÄîÑ&_ ¢ÕߊÐfÓˆ,(Ð8Õ_ �Í…_ NÕBÄ¢ÒË ÄbÄb%ù$ À,NÐ0Ðß2ÐöÖ¼ÏÀ ß XÌҌϗ ÀÏ÷‡ÒÀ  ‚¬ß 8͇Q,^¹ßU²ÔßU²Ôß ˜Äß ÊÇß ¬Ä‡CßU&„¹²Ô‡ß €ËÅ ß ½ß Z»ù‡C!ðzQÀDŠ @R�@�@R@8�ƒ,nÛ@ œS@‹óœS€%@‹ó®S@‚®S€ @‚�pT–,”Û€�€�pT@8€�€ ”T@‡p”T@‹ò”T€%@‹òOX¾,ºÛÎ Û ,lÛ_ NÕD&_ òÜÁ&_ :Ýöe‡€•™,’Û Á óðÁ ð Ó Óæÿÿ&_ :Ý¡,¨×A‡À €ÀåÀå÷ÿÀåÒÿÀå@‡æ& Î ¯,Î×Á @  ÀàŽ ö ö€Ö ‡&  Î ù q,ô׆Á`@ à ø÷ ÷ 2ÿw ùAöe‡_ NÕÄ0Ð!2Ðöem&tЇææ"ˆ€Ö 0Ї¡K„K³ bÔšÒTÓdÈÍ!ô_nËa,ˆ¬ƒ ß ÊÇŒ ß †È `ƒ ý‡‡Š ÊE‡ÊU‡Â,®¬FÔß FÔß ‚È  ßU²Ô€FÔ_”Ô¬¬Ä ÕßFÔô"€� OX€ €�‹OX€�ÀñOX€%€�ÀñèY€ ¢,àÛ[q`"€är€�@ är€ €�@Œêr€� êr€ €�¡,ÜŒ©s€³s€ƒ€´s€w€�€ w#,¸Û瀕àÁ ÁEÿÁåÀå�ìÖ‹ _ ©,ÞÛ²ÓCHECKSUM ERROR ‡_ NÕCDÓ$æž,ÜËeÁ& ã &_ òÜ”Žà¦&_ @Ý$ ‡@�XØv,Ø÷ À5÷-ú ÷ Àõ¥XØú†÷ ¦w (,@ØÖøAç÷ –· æ÷ÒâÀ ‡X,fØáD? BNE 2$ ;NOT YET BR 11$ ;YES FINISH IT 1$: MOV R2,-(SP) ;STACK ADDRESS MOV (R2),-(SP) ;AND COMMAND CODE INC R3 ;COUNT LIST MEMBER CLR (R2) ;ONLY FIND IT ONCE BR 4$ ;GET THE REST 11$: MOV R3,R5 ;USE R5 TO SAVE NUMBEROF SHARED ;COMMANDS UNTIL CODE TRANSFERS TO ;HIGH CORE STACK CANNOT BE USED!! 3$: DEC R3 ;ALL DONE? BLT RM5 ;OKAY MOV DX1BAS,R1 ;POINT TO MODULE START MOV (SP)+,R2 ;GET COMM CODE 6$: CMP (R1)+,#-1 ;END OF TABLE ?? BEQ 7$ ;YES TOO BAD!! CMP (R1)+,R2)  °,ŒØ ¿,²Ø "ØØ÷J*,ÄÎà„€$ü@” A‡ Zùƒ á‹_DÐÌ ,êÎÁDÐÉ‹ÊÑ•?Ñ• Ñ• ÀvÔà`_ ÜÔtÔ¼,Ïþ,ÏI$ÏRèÏDœÎE€ÎPßFÐ+zÊ÷ ,íß =,H­nËõ‹nÖã à & €Á '÷ ô&ß |ÈŒ÷ h,n­íà € (‡ßU²Ô&ß dÊ€e � W K,”­ ß ÚÂß Å ‡,ây€»€ðãyð@Œ5,žÜüãyh@Œûãyà@Œûãy &@Œüãyè&@Œûãy`',ÄÜ@Œûäy@Œøåy€˜@Œúæy@Œøæyøf€�€ðñyT,êÜ€»€ðóy}€�-Àå3çÉeÒ É%~¥,œÜáÉ ßÀ‡_ NÕCDÓ$ÂôÂå&_ òÜ:,ÂÜæ”&_ @Ý_ ²ÓADDRESS OUT OF RANGE†,èÜ ‡.F · @ÅŸ<õµXØø· *,ôØ.ÅŸ*‡÷ æÁàƒCà ±@ @ý � ƒ #´,Ù1- ‚à`€ ÀEðQ$ƒ'÷ ÎÀ?,@ÙZ/ßFÐ æü,6Ï_ HÐ× :)& f_ rÖæFÐf_ V×ÄhÛÌ'd,\ÏFÐê „æÌf_ ä×_ ÆÔWILL BE RE,‚ÏTAINED IN CIL 0ßU²Ô¤ƒ ƒ Ã ß ËžæÕ$º­ªÕÞ ßU²ÔÂÁÌÏLß Å ûí. ¬Õ¼Ã¸Ãz ”×( »s¸Ã· ü· øß âØ8µK$8µß ~Íæ0ÔÃÌÏ1Àð z@‚à z@‹ö z€%@‹öS,ÝYz€ €�À”z€�À Ñd†‰ €�À €€ �¶,6ÝÀ‹ €�@ñ €€%�@ññ�}€j˜@…x;¯1O,\Ý2 ê‡_ NÕDÔ Ô å‡€å‡öe�,݇ã(“eã‡� ücÀó@às ,4Ý3 ‡ÀÀ_ NÕDò üÿ 3`À`B ‡÷ ¼ € #Á`B ú‡ ‡ z,fÙs\Ú÷ ž � € #1-Á`õ w·,ŒÙ 7s\Ú’$spÚ÷ h·ò7 ð÷ 4,’ÏРhÛæ�æƒf_ V×Ä Äe× B,¸Ï;»× ,¹‡f_ ä×_ ÆÔIS ALREADY INSu ÞÏERTED º,æÏç& _ HÐÉ å ;FOUND THE BASE COMMAND BNE 6$ ;NOT YET CMP -(R1),-(R1) ;BACK UP POINTER MOV (R1),@(SP) ;POINT TO ROOT BNE 10$ ;STARTING FROM ONE ELEMENT LIST? MOV R1,@(SP) ;YES ,THEN WE DO IT ELSE 10$: MOV (SP)+,(R1) ;LINK TO NEW MEMBER BR 3$ ;DO THE REST 7$: ERROR DX1ERR ;HALT .PAGE ;THE FOLLOWING TWO TIME OUT ROUTINES ARE USED TO ;FIND MEMORY SIZE AND EXISTING DEVICES .SBTTL INTERRUPT CODE FOR NXM LOOP AND DEVICE EXISTENCE TEST NXMSBR: SUB #1024.*2,R5 ;1K LESS BHIS $22 ;CORE STILL>0 E9æf_ V×¢ ÈU@× ,E, Ðí× :ê× ;ç‡f_ ä×_ ÆÔMAY NOT BEø,2Ð DELETED ‡_ NÕ_>ÐÄDÐ$ $ Æ,XÐÂ:ÆÏÞ�Å%E ß nËæFÔß FÔß |ÈŸ”,ȵFÔ`ÈÏÁ@@T@T@Thß ÈÏ1×"3‚÷ öŸ ¤,îµÊÏ÷ ÐßeÊÏß ÈÏìß ÊÏ÷ Ë ú€æ ÷ ‚;êrÖ,ÎÝf¹Þ¯p!ž¬ü¯‚®­ü¯P‚¬­$°^|«l°„!í,ôÝ\¬n°h°n°ð\°n°è!\°n°€%ˆ°n°5,ÞÀ+\°n°ˆ,\°n°à.\°<2 ‡ÀÓ,ÌÝÀ_ NÕD3æ&ˆ&ˆÁœ _ ²Ó%,òÝ TRAN ERROR ‡_ NÕDË &_ ÌÝ ;,Þ‡_ NÕDCBÒ =fÅ},Ú|AâÞBüÞC�ßÄ8ÛÈ …‡æ¦f¦6,@ÚÞ �‚ƒ„À ‡RRRRRRR‡    a,fÚ   ‡R”þ⋇Â5DЀ’¦& "ˆ”‚!DÐø$)æ>Ð&_ rÖ6~Ð6ƒ”⋟DÐö‡k†Î¥?,¶ê÷ Î5÷ Ü÷ Ø÷ Ô÷ ¾Î óÖ ßåU*:¶ÊÏŸ ÈÏÌß ÊÏ÷ Äû†ße€ÊÏß‹ËÏßU€S,^¶²Ô�á b(J’ʃ û÷ Œ ß5èÏ@n°K\°n°ÈK\°,@Þn° N\°n°&X\°n°HX\°n°�[\°n°}ç,fÞ‚°n°ð}ްn°€¢\°q°€%*°z°dr²z°xdæ,ŒÞp²é°¼RA�à à aJà‡² þÿûJ`",>Þõ‡À _ NÕDþÿ'ü &ˆ&û,dÞ ¦_ ÒÕ‰‘ % €æ„_ ÒÕÈÇ,ŠÞ~BÂå¦÷ R‡E,ŒÚÀ’ ”ހÊeÊ-B‚w rö�7v ‡,²Ú&È üÈb·^‡ÀÊÀe 7 1‡À /,ØÚÀe@7 *‚C$ Ç Lj Çé}¤ > B" Ç_  ÎÄÛdÊDÛß Û NÛ m,(Ç$Ûßÿÿ<Û >Û& _ lÊ_ÌÇ?Â5@_ °×I,NÇD¸Ԡ,„¶‚  òUÿÌϱr ÌÏ  ûË €ßU²ÔËgÄÏ”,ª¶ ŠÏ ¸Ôߌπ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÷ $÷ ¢l�N,ö¶a þ‡ƒ ù‡¡Á    ‡â b b b ‡Á ·_¢Í?,*°÷ ¤Ã �Å%,ß €ËÁ0Ôß rËß5ÜÏ_¼Ô,þÞ¬¬Ñ±–­Õ±@Q|¹Õ± g´Íú±,€Î©)²å~´$ß¹§² qÖ¬�,ºÓ$ª,üÞæf _ Þ‡_ NÕD4&_ òÜ& &$"ß_ @Ýû&_ Þ‡c–Гñ˜üÞñYxÞxâÞ1ŠßÁ Á õ€¡’Þ‡XÏÒMœËËB,ÀÇæAf_ V×Õæ_ lÊ È%�ÈU@æ¥,æÇ_ œËïæ_ ®Ëê _ Þ×_ Æ×È5@ú, Èà ƒ æªÑ_ äÔ,ÈÒ ¦NÞ,P° ÎÔ_>¿ )߈φÏ÷ p÷ fÁLÔW"*J,v°‰ à ! à ! ÃJÔÃJÔC ß LÔß HÔà  �,œ°HÔÁLÔÉ É á á ß5ÜÏ O$„È „È„ÈYM„> 2*„ÈÀ(Û _XÌÄÒ×' Û×' ÛÄp,¨ÈîÑñNÛ_ üÈ _ ÌÉ` ÃàÚ_ ÚÊ… _!P&NË NËâ*Íxe#B:> 6®,NË×EÑE8,tËQ¯À^Ýw 4÷ ÆÁ®Ëw Ä$,>Û…w 2& Î�qðæ¯À^Ýw ÷ ŽÁ¼Ëw ž-,dÛ…÷‹ ñ÷ ªÐ• …÷‹’ñ…À^Ý÷ V÷ �½,ŠÛ÷ R_ ä×_ &Õê MI>,2ÈSSING MODULES: ß &Û×' Û! ÛÁîÑ+&XÈ_DÛÂÛÃøÑæˆæˆß Û$Û& _ ,xÈÖÌfˆÂ æfSÀÀÔ¾ÔÏ,°ßUºÔ‡ßU²Ô‡ß ôÊÀß jÌ ÁˆÏ� ƒ Í"è°Á ß HÔß Ëf_äØßU²Ô ‡Â¤×è!±HX±€¢±�[±à.±ÈKüT,ÎÈòÚ‚_ Ë_ >Ë`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$ZÄÑWDÆÑSUºÑb,ÌPRÌÑALÀÑVEÎÑUI¾ÑFR¾ÑRW´ÝRU,BÌØÝBR¾ÑDI¾ÑFAFBUAUB•,hÌINTA[×,üÛÁ†Ë÷��ïàÿ÷ Üà�ØÿÈe0ЋЕ:‡Ð•[×­íø»,"ÜÿЕ* ÃÝÝø÷ \÷ûÿv÷ vÀåÐÅ ü,HÜÐÅ ÐÅ ÀeЕ,×­²øÿ\ÿÿ0Û_hÉf_ BÞf_ lÛàò¥™%É_ ÆÓNON-CIL CONTIGUOUS FILE p,0ÉôÿÿFÛ¦_ ~ε,þÿ _ ÆÓNS SWITCH ERï VÉ]&W!ÝP±!B ß nËäÁ C ‡Ç,NªC à ƒ ß Ëß ÎÔ(Ÿ ÎÔß ÊÀß jÌ a,tª±B À ýß  ÏŸPàÏŸ0àÏ Ÿ@ÜÏ—0€ß`^ɇ_ NÕÄêÚÃe ÂþÚÁˆ*²ÉðÚ!Ôü_ ðÚ_ðÚ øÚ‡_ NÕļÑí,ÖÉÛÂðÚƒ ÁøÚ— €ÁúÚ— §,üÉÁüÚ_COT�ŽÌ�#æÌ # PIP-11 V7A01ÜÍ,Í`Е* ÃÝ¢ø÷ p,nÜ"÷ûÿ<÷ BÀåЋÔ• ûЕ]‡æñ,”Ü&æ"ˆ÷8‡æ&æ"ˆ÷&‡Ã• ¨,ºÜ &¢0aROR Ë(\ɵ ´8Û¾ô 4Û 4 0Û€ô FÛ4`Ê¢ ~É@Û@Û<Ûô 8ÛEfô FÛEæÕ,˜ÉlÛô 0Û€Î:Ü^ ô 0Û1€B€Ð ÐÐbHšªÞÏ÷ à €ŸPÜÏÕßU²Ô‡× p×LI r×PªNLv×Nª²²ªŸ :ÔßUºÔ‡‰&°Õ™w[Mö “y%` àQ¸QR Rô K-€[µzMc _ ÆÓILLEGAL BLOCK SIZE _øÚÀ.("ÊÛ †ß Û æ˜Ñæ³ _ Ú Û_ G,DÊÆÓSMALL BLOCKS VALUE ´þÿ_öÚŸðÚƒdæHËæ!ˆB,4ÍÆHËæjÍæ!ˆ7 Hÿ7 þ7 þæPˈæZˈ¢,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 EPiüƒ÷þ7 þ7 þ7 &þ7 °,¦Í†7 †7 „7 „7 „7 Øý7 Àý7 Æý7 Òý7 Ðýu,ÌÍw 8æÌæŠÌæZˈæZˈ÷µ@¥þ0ˆ×-žþ;,òÍ»÷5j7,æXÝæ€Ëˆæ€Ëˆ‡÷ –ÿ÷ ÞÿÀ^Ý÷ ŠÿöRÝ÷ Òÿ‡S,²Ýw „òw Šò÷”Ëòöæîöˆw :æäöˆÀ ñ…!,ØÝw `òw fò÷”Ëk…öe4 ¾,0Ê<Û‡ô 0Û �¦_ ~Îò¥¢ò¥Î_ŽÉ·VÊò%ÍÏ>ÒRÒîÑøÑÒ*Ò_ ü,nÊNÕD&_ ¾Êöe‡ô 0Û €_ l îÔ÷ßøúT &Õ÷Âú¼úr x×EN z×ÀªDS¢ ~×¾ªCR¢‚ׯà ÆÃß âØ¤¹k,¤¹ß �Ðß ôÊ Àß jÌ À ýƒPm,ÒÊþÿ_ Ù‡æ¼Ñæ_ øÛæ_ ØØ…æ¼Ñ_ Þ…_ g,øÊNÕ×,æÐÑæ_ ¦Ü‡æÐÑ_ Þ‡_ `ÉÚ,Ë_ É׬ö׬ò׬n'’þæ|Ì.ˆ€À ЋЕ?Е Àå�Ì7,ÎtþæŠÌæPˈæPˈæ7ˆw6ÿ÷‚âþw \5,>Î|Ì”ËÊËÀÍ7 .þ÷ƒÈþw ªÀÍ÷þ÷oÎöæÊöˆ÷•<w æºöˆÀ ˆ,þÝî…`T`m÷•"æ.Þæ ö ˆæšöˆ…÷• ä,$Þó÷•ï÷úôÒöw õ÷ÿÿÞ÷,JÞpÆÓBAD INÝ,”ÊPUT FILE Àe¢ïÀe  6&&_ ä,ºÊrÖ‡_ NÕDô <Û-<Ûÿÿ&_ žÈ‡Ä ß%¦,àÊ Ûöe‡4 qñà 5(ʹÃ÷ÿßîχ×'†Ï˜XŸ øÏãßU²Ô‡pÐÕÀv@QdÀ@î,Ì÷Šò÷ " E÷ ¤  ÷  Áw ÷ vÁ &òÃR�÷-ú Brñ…&ô þÿc,DË&ææ>Ò_ ÔÞļÑ&_ Þ³&ææÐÑ_ ~,jËÔÞæÐÑ_ ßæ &þÿ_ Ù„… Á_ `ÉÎ,�Ë_ ÉÁ _ ÚÊs,d΄´þw –÷ ®þ÷ƒ¤þw ×­‡þ÷‹~þ¨,ŠÎ÷„Œþw ×-Žþ÷šzþw ô÷-ðüV ÃG,°ÎúËÓ ÷™`þw ÚÓ$× 8Ìõ‡Ãtºö÷Õ²öÀ&߈Ë�7Tö&&$���ˆ÷ ,pÞîõˆ÷ŠË:öÂÕ×-ˆöE×­ªôÿ÷�Žözö÷•®,–Þpî÷­pö€ö1×­�ôÿ÷�sö_ö÷•Tî÷­õATAB .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/ ;KByUöeöÔ,¼Þ#÷ lô×-fô*Ê-^ôò-Zô×-Tô*£,âÞò-Lô ·Üì·Øì·Ôì·ÐìÕ …÷ÿÿÜ$ß(ÿw ÿ›· ˜7 ÷•ÿÿz   Œô³öÿ  “ “î_ NÕCæq,xË_ lÊöe‡ æ_ ®Ëðv‡À,žË&Û×' Û À_ NÕD&_ ÖÌô 4Û{7Š^‡Â%zЂ÷ ÂÐR�‡Ò• ¦ÂÐŽàN„Ä¢" w ¬úÏ×üÏ7 ` ‡Ô Qئ ÚÕ�Ð׈Л×–¨z2˜Ä÷þ &÷Õ@|ÁÛ ÎeÿÁ üÎEÿÎe¨Š‡&_ 0Ìz,(Ì&_ ¤Þ…&ô þÿ&_ ÆÙ%&_ <Ö›NÌ&_ <Ö„…,XÌļÑ×' Û"_ ÆÌ_ `É}ú‡…w àw @w ê· ÞýóÄ‚,HÏšËÃìËÔ Á …· ÂýA D`#æH!ˆÖ í,nÏ7#žü7#¶ü ‹ ÷ žý× øË‡× PÌ‚· –ýÓ$× ',”ÏzÌêí…(ßð,ßë*ÍL,ÄËô 0Û€‡&_ ¾Ê_ˆÊÁ ñ&_ FÌí_ NÕh,êËCDü &ˆ&‚â&ˆß $Û $Û×,Ì&ˆ&ˆêæ&ˆ&ˆßl"Û€!÷ô ‡÷,®ÄÚ ÷Õ@÷Ð ‡É �fAÊ•Á RŒÀn,ÔÄfAœÀ ���ÁŒ¡ ÀÀÀe;úÄÊ•Á JŒÀŠüÒ‹�¬ _ ÆÓ·,~ÌDATA SET NOT A CIL _ `Éï¬ë&p,¤Ì_ ÎË_ Íß Û_ bÍß Û_ „Í_ ÞÖü Ý,ÊÌôðÚþÿ‚䇨÷ âûæ€Ëˆævýæný÷ Ìû÷ ôû{,ºÏ æ®Ëæ€Ë ˆÖ Ö50æ€Ëˆæ€Ëˆ÷ ¬û[,àÏ÷ Øû æ¼ËæŠË ˆÖ Ö50æŠËˆæŠËˆƒ$È ȄÈÂÞZ&B>> ú,ÈÂwwXwœ7 ˆ7 Fw \ w b ×­  ÷Íî„* w¤ ÷ƒ w š w 2”ËLÃ€Ëæ„Áœ _ ²Ó F6ÌWRITE ERROR ž,Ḋ_ NÕD<ÛÀÀ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æ_ ¦Ü‡_ NÕDi,ÜÌÃDÛ<ÛÂÁ ÛŸ NÛ� W æŠß Ñß G,®ˆÆÁ´ÏÂÑ÷ ¶Á¼Ïñ ÷ ¨& ŸöÖÀa,@®ß XÌ'æöÖÁŠÏEŠÅÉEßÿÑUQa öÖ#,f®Á†Ï÷ pÀß XÌà‹ICE BOOTSTRAP ,HÍA@ÁepÂPÛ‘— \ÛüÑ ‰‡_ NÕæÛT,nÍÎ\Û’ÒÒ@&_ Ì݇À€`àÀ ýb,”ÍÀÁrDŒÀ ò÷¢¨üw"ÿ&,xÐ÷‹Œü,×-¬*×-¨* …·Šrü÷šrw ­,žÐ¢÷”Ëæ ˆw Ð÷™düw Þþw ”÷‹Fü,ÄÐ�÷Bûw �¢ w Ü ÊË.Ów |,|ø ”ËŠËæŠËˆ÷- w ®TAÀ ,þÿªÀ&¢Ãw † À ¥�7f ÷-ÜL÷-ÔF!÷¦$ÂÊËîw <×-ü*×-øŽD!ˆÃêÚ“O,Í“æC!ˆ“Ó  ËðÿÓeÓ    æÚß’*(ÍæÚÛW ÛW  ×'"Ûà.‡ "ÛßR$LÍ Û$ÛæDÛ_ ÛæÛ�ß5@ŠÏ÷ŧ‹ÏôßE—ÿŠÏê*Œ®ßUŠÏéßEßÿ°ÏßU°ÏÁ¬Ï÷ 6ß $Æß’"°® Ñß bÆß Ñ öÖÀß XÌ ²Ì®ŒÏß ÐÌöÁVØß žÆI� €üÁåÂÄÀXÈu,ºÍÀe `ÃDƒ ‡È p ú``¡ H  àÍ È‹þ€È �Y üÍa(á Ö@¨>0ÿs‘$w Pÿw ·Š*ü·àú,êзÜú·Øúw &w è 7Šþû…w ÿØ,ÑÀ…&æ"ˆ…€Ö …Àÿÿ–%…&æóû,6Ñ’*· Dw àÃTw j Ê˼Ë÷@w 0÷‹ö&øÃ w ”w r 7� ÷‹üj�÷‹÷ w o(Äz÷ŠË”w \ ×-ž*Z×-š*Vw “_ æËW  Ã,jÍôÚß DÎæDÛæàÚ_ æË‡<ÛÃe Ë Ãeæë�Í_ ä×_ ÆÓ HAS 0 SIZE –,¨Íß DΟ òÚ&_ FÌô FÛCÃžÑæ_ NÚ”VØ END OF PASS 1p"Ü®‡— Ôƒß $Æ_¢ÍÂöÏß xÄÁø®mØÂTÔß ¬Íß Ñß <Æßׯ Ñß bÆß5èÏÀÑвÏýTARTS THE CODE ,WHICH WILL BE MOVED TO HICORE .SBTTL NEXT READ IN THE CONFIGURATION BELOW THE CIL RM5: FLAG ;AFTER MOVING CODE AND REDUCED CIL WE HAVE TO READ IN ;THE CONFIGURATION MODULE,HAVING DONE THIS THIS MODULE ;WILL SPLIT UP IN TWO PARTS ;1 THE LOWER PART WITH PROTOTYPE MRT AND DDLMOVES TO MRT. ;2 THE UPPER PART STAYS JUST BELOW THE REDUCED CIL INDEX MOV CFTBLP,R1 ;POINT TO SLOT ADD 2(SP),R1 ; NOW ADD UP RELOC FACTOR MOV 0(SP),-(SP) ;BASE OF DX1 MODULE SUB MODSIZ-2(R1),(SP) ™ (¯Ñß <Æß‹ÑRß5@ÜÏN 8Ô ü$B¯öÖÂRÓÀß XÌ$ß |ÇÃàÕ÷ |Á,`¯ŠÏÉ5ß ÄÄÁfØß ¬Í÷ `Á‹ÏÉ¥a¨f,†¯ß ša(á Ö¨>ÿ],”ÎÀÁrD €üÁåÂÄÀX ( ,ºÎHÃLƒ ƒ ƒ ƒ ƒ ƒ ‡È üÀeH`¡ H àÎ ›ðÑ÷c,¨Ñ4æÐÑ5ˆ…´ÝØÝÛ,ÎÑÜÑèÑxe¡KBa¨zNaOa ôÑPaQaÍ"øÑw VÿÊË®Ë÷ œæ› ¤Ä®Ëæ€Ëˆ÷÷6Åæ¼Ëæx,¾ÄŠËˆw â÷ Xw f æŠËˆ÷ „æ€Ëˆ™,äÄ÷‹-Œ÷ 4wðþ÷ Ù÷ ŒæŠËˆ÷‹�Á æ_ ÒÕÉ‘ Ó æ_ ߇ÂøÚÙ,HÎÀðÚß rÎ À€ß rÎÀß rÎ À€ß ,nÎr·æ&_ Ù`‡_ NÕCß &Û ß îÏ׬žØÄÒ• — „ÓÚ‡÷ 2Õ öÖ÷ (Àß XÌ(¬¯ß |ÇÒ• ÁŒÏß ÄÄÒ• Á‰Ïß ØÄê ŠÁÉ$ίRÓß šÆÂRÓ‡÷ Àß4ŠÏÀ�‡BàÕ =Ÿ È‹þ€È �YôüÎa(á Ö@¨>&ÿ|,ÏÀÁrD €üÁåÂÄÀXÀe«,:ÏC Ãåȇˆ ûÃeÈÐ Ãå ‡ ªù÷œûw Šý…w Â"Ò0þ÷¶ùòw "w ÿ”Ë€Ëæ€Ëˆ÷T,0Ҁˀw H…÷™Üúw Výw . ÁÊËÀ^Ý÷ z ЕK,VÒ?Е Е w ª w 4 ¡ , ÅwZþ÷ Læ€Ëˆæ€Ëˆ÷‹ä…w¦ýÐfá,0Åw æ×w æ€Ëˆæ®Ëæ€ËˆæŠËˆ÷ Ç,VÅ7Š»7жÂw <…w Æf¢X,”Î#׬Y‡_ NÕß &Ûß îÏÁÏß ŠÏÁÒò,ºÎÁeß šÏÒ•:ÁÒß –ÏÒ•.ß šÏß ÖχÁ$Ï[,àÎß ŠÏÁß ÏÁ;Ïß ŠÏÁß £% R G @VfØ******SYMBOL TABLEM,ÅÀ ÷ ¢‡À ÷ .{÷ N  ÄÝS �… ÷ Ñ,>ÅD i· †�÷ Lÿ÷ \ÿÄŒ÷ ´ ^÷5 ¤ÈeúÃe r,`ÏÈ`à ``¡ H   È‹þ€È �Ya(á ֆϨ>Ìýâ,”ÏÀÁrD €üÁåÂÄÀXÈs;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,Ð÷ÿÿnª6Bw >÷eÙ8…÷(ãÊ �,îÒ×-<*Ê-4 ò-0×-**ò-" L,ÓÊ ·l úù· øùw úáÅe….«>w \ ”ËŠËw B$àÅ– 7�/w h ÊË¼ËæŠËˆw :w`4÷‹e,þÅîæŠËˆ÷‹àææ®Ëæ€Ë ˆ—#ÿÿ¹Ö î,$Æ÷ ‚w  …æŠË ˆ–%¬ÖÏÓ$æŽ & ß ˆÏÎÁß ‡,xϪÏö Î ô÷–%&R”þâ• ‡Ò‹ß šÏf¦|,žÏæ"ˆÂe‡Ò‹f¦æ"ˆÂe‡Ò‹f¦æ¤,ÄÏ­*¾ÅÔó‚Á@ W ìÒ÷5 ÑÑÀ Ä †Ò�Õ&âŧ @ÀåìÒ�Ä †Ò’ Ò� Ä †ÒŒ · Æ Ñ�„ Å Ñ�} wò … wa‚ ÷»Æ~ ®ÂÁlD‘— €üÁå— $Ñ ,:ÐCBÀVõÈàþà`È‹þ€È €ß5@PõYÃeƒ`ÐÂåë‚YN|Ðþþ¨>Rõ¯,:Ó÷ ÈæE!ˆ·¼…÷‹²ùI÷®¢,`Ó÷Õž÷ ö÷¬’÷¦~÷ æÂÕ×­²ÿÿš,†Ó÷•~ù·’~×­¡ÿÿ÷•lù·œ°€Á€ Á ýæ¼ËC*JÆæŠË ˆ�Ö5€B �`À ý………ºº‘ (Ǻº� èǺºÍ,¨È & ÷ ¤„ ÷ ¢Ž „ ÷ žÎ"ˆ€¢0óЕ úÒ• Ò• Âå П ÐæÐã&êÏ&ˆÄäÑ&ˆÂ“Ðâ• — Ðû‚‡† Ç&²2€‡·à ÷ ÂØ ‡$ðÕ À Ààà€àà" ,ÕwŠ!ÿÓ ˜×3f4Æó*2Æÿ÷•ÿ‡ÀèÒÐȾ %ÈåìÒw äæÒe„È­´kÊ ·"bº,¬ÓÂe· Zã‡÷ ^Ö÷‹Hù÷›Rùw Ìû÷•ÿÿ¨,ÒÓ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· ê ‡÷ ì7ŠÕøw ¼ÿÖ …Õ …Àÿ,DÔœËÈ A @` $ø  (Õ …÷¢÷ Ó,jÔ÷5€º7ŠáÁhÆ  fæŠËˆ»,@É ,òµ&5òµ@òµ-ò (·Š|,fÉ©—< €Àe€là‹ò ¦æ€Ëˆ÷‹ó,ŒÉƒà »*ÊÊH ÷J0 ÷ Š ÂÙ·"0 &Á Ê #Âe· Ý$îÊ$ ô‡÷ $êÁ ÷-ô ÷ìø ÷ 2, ËR Ñü ÷5@Î ÑBÑ  ÷ t …�÷¼c Äœ ÑAƒ ÷ | ß âØ"·Û""·ß<8ÔfÂdÑß „Ï ÁzØß ¬ÍÁ–">·<Ôß ^ÇŸ >ÔÒ•+ ŠÁbÑß šÆÁ¼Z·TÔß šÆÁØß šÆ�_ÄÆÙ½EüÀ ÷„†w w ˜ ”Ë  Æ€Ëw ¬ ÊË®Ëæ€Ëˆ÷ ú·ŠÒ(¸ÆUæ€Ë ˆ·R–%÷ L÷‹?÷œDw ’(ÚÆ¾÷Êæ®Ëæ€Ëˆ¾˜ ‡æÕæ8ˆæ2ˆ‡÷~”ø÷Eÿƒ,�ÔŽø÷Šø÷‡€øwúú÷b÷ Êÿ÷5ÀXê‡,¶Ô÷ ~þ×-xþ*÷ôöäö÷ðöàö÷ dþ×-bþ*¿óµgæÎ(Ç ÎèǃB�;,²ÉÂ…·d÷\÷EÿV÷R÷‚Hw ÂX,ØÉ÷´>w ¸÷,ÂÊÊ-ÐÒ-¼Ê ø…r 2ËÎ ¾Ø÷¡Þw X÷ªÔw NŸÈÂo7,ÄÆ· J †w p ÒÒÂÒ ƒR”þ€˜áÅ€ùÉ•ø,êÆ?ö€˜ðµnÖûÒ¥ Ò• Ò• Âà£# „ †ØÇ÷ æ$׈w Ò$×Ò7¶Â÷‹ w X 7nw ‚üÆ8 ”ËŠËw L Ê˼Ëw ¿ ÇD ÊË.Ó÷ŠËœ æ˜ ˆw n, Ç^ ÷™òw lw :÷‹ÔûæŠËˆ7ŠÇ÷ "C,FÇÒ÷ Lw(ÜÔ÷ÞöÎö×­Vþÿ÷�ÒöÂö×­Iþÿ÷�Åöh$þÔµö…Ù × Ù,Ûw X& Î�‰ðæ±,þÉ·Š ö…7  Êìö ¡K²K^4d®(M,$ÊkQw w w  SUÀ "‚w²ø.ON,JÊ· ….OFw˜ø7 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° ÷ B‡ðE ðU •ö Ž ú÷ ú‚vÊÿñ0° –%  ÷‹rþU%Åg"GÁÁæ$^ Åe ÍÍe0åEèMP&‚&Ê,”ÄEÎU€w Œ À �Pæ®Ëæ€Ë ˆ—#ÿÿ Π&ºÄ€Ëˆ…Ö ÷ƒTw Î ·P÷ Fw À h&ÚÄw ^ w 0 ÷ ä÷ª.w ¨ 7�÷5@%Ë&èÆ”ËŠËæŠËˆÃ°Èw ”÷-ˆ�w÷­±,Ç{ƒwæB!ˆÎe·Î·Ð÷å@Ê·åÆÕ,.Ç7 Âw øôÉÕ÷0¶÷ °7 ¬w ÕÌ´Ç *À^Ý÷-Î$÷­Åd"ÊÇÀ^Ý÷ ÷ fÀ^Ý÷ 6÷ ,æÇZw>· zÿ÷¸ÿ¼À^Ý÷ øÁ(ÊÀ^Ý÷ ÷ & ÈÜЕ ÷ Íþÿ¬. þÿ‚ÿw æ7’ÆÄ5 ÃE w Ä 7|w ‹þÿ5 E ö.Æw \Ä�ZÿŒŒŒ7‘þÿ7ŠN ÷•ÿÿJ ÷à÷p�ΦÁæ(Þ ˆžæ&^ & �Ö ‡&ÅöÿÕ�S–%˪ ò ‡où$ d!ÇÀpèV‚ÿæ&^ Å Ï,úÄê ÷-æ . ÷-Þ $÷žw ‚ ÷  æ€Ë», ň÷‹ïÛ…÷ Tö`T¸w ñ÷€Ët÷Õ¾�,FÅ÷¼f÷ ò7 H÷8H÷¦ÅDÀÐöÉ÷ê,TǨ÷œ÷ ’ ÷††÷m’€÷mŒz÷- M,zdžw„7 v7 xw ~w â÷‹| 7Šv÷Zc, Ç^÷UZ÷ P%÷mDH÷mÑ÷ (æ^Ý& 6ˆÀgÝ÷ ÷-®,,ÈbÒwfw ¼ .÷ |w ¤ 'À^Ý÷¸ÿ‡&RÈ^÷ žÊ �·l ´· ²À^Ý÷ ^÷ 5,rÈÔ÷ ŽÒþÿ$(p.ì ×!ò÷0wæÆ ÿ& ÷ ÿæ2æ0¡ ò$2(0#.÷•@pÿà D÷‹ A „ &Ó æˆÀ @ÀmâÿoÎef•@ä O©W£Ò•^J“ÒÕ@A’�ˆ Õ• E  �ŠI£€Ò•\Í‹�ÍŠW£ À @ CQ• ŠR™Ê‹€û‚| %Ô@÷:˜ø –,lÅÀm,À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Æ÷ø,ÞÅÒñ*÷ f‡ÁnÆ÷¼÷ V‡÷  ‡Á?,ÆpÆ÷ ¦÷ ÁjÕÑÿÿw ôû÷ ~÷Š÷ ,*Ƈڪüw v÷°òw l7 <ww‚,8È÷-÷í · "ö…7 wwŠ,^È÷m ÷ ú…w @÷ xw f…çÛ,äÈ2÷eÈÿ.7 *ÁOÊà ÷ Š÷ 6àÁ]ÊÙÀæ, Éi݃ ÷ �÷üÿ˜÷ ˜ò €Ð•C‡·i,0É÷EðææpÝæ6ˆ…‡ÀÜ.„�Ä øfw Ž÷•† €w –7Š’ wtwhR.ªw žÄo   Ä% û‚ÀEøÿÄ Äe‚ whÄåà o   �.Ðh ÝøÎ·Dù$ E´Øèã‚ÿæ&^ –%ÄvÿÅ CA ,€ÃÃeâÿÀÂã•$�Q$õ �~-0Þ÷€lÿÂÕR÷ bÿü‡ÂÕ ÷ fü‡0,PÆ÷ Úÿ÷ H÷ æÿ‡ADDB C$¢,vÆDÿ÷•¦w €÷•œw vw rw ß,„Èw Hw ´…÷$ô÷`…×$ÿÿ÷÷žv÷Üõ,ªÈtw ê @ÿÿ÷•D÷,:÷ŠËê w ,…%,ÐÈ÷•,÷"÷€ËÒ w …÷•àpÝÁXÉ÷ Ȇ,Vɇ00-XXX-00Àz݃Е<ÃEÿ÷ ÷ýÿ6(|É÷ <Е>‡÷ ”÷ ÷üÿ÷ ‡÷n ËžÉb ÷Ù^  ÷ ´ ÷nP á÷ÀH Á1 ÷ øÀ=w X·ŠH À�A w LÀ�øh 1 *.ö: w DÀ�3 w <À w 4w <  7� w Ÿ..7� w &7Š 7�â õE€Có €–%ä@‚ ß“pÿ÷ž Kà ä@÷Á Á Á à .‚|óµ5w8ILL CMD¡INV CMD¡SYN ERR¡ILL DEV¡NO FILE¡ãú,œÆn÷•Šw d‡ CONFIRM: fæªÆ¶,ÂÆæPˈw Ð÷µ@‰wÅ` ÂÁ^ÝÉ¥LV,èÆÉ¥HuÅ Ò � É¥ o‚É¥ l‡ä÷€ËÀ w ž,öÈ…æüÉæ² ˆæ¬ ˆ…÷ìà7 Ü÷mÞÖ ,É÷-ÒÔ÷ÒÖ…w $ÿÕòÉ÷6ÿÆ·ŠÔ…7 ´,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 · ô÷- &hÉ–wv÷‹�w ŒØÉ·Š‘w ¨þdÉð,ˆÉÕÃàþ÷5n Ãm`À^Ý÷ î÷ûÿ÷ X,®ÉÞþ÷5Jêƒ IŒ‡ƒ IŒ½,"ʇƒ ãDIRECTORY TOTL BLKS: TOTL Ÿ)HÊFILES: FREE BLKS: FREE FILES:2&lÊÀ^Ý÷ v÷ Ê÷ÿÿ¶w ë–Â’«.Ž…Ö w|÷‹–û 7Іwr÷•ÿÿ|wh·Š‹.´y ÄEøÿÄ 74‚wh÷‹b ÄEøÿÄ T 4ª.Úìÿæ&^ ÆeÎå ÂÜ’$Â`Ê :w8ILL CMD¡INV CMD¡SYN ERR¡ILL DEV¡NO FILE¡ILL ADR¡NO CORE¡�eÆå„æ & 怦&¦T”þ€Ì í… Qà ü÷ „L Ñ  |,€ÇÑ ÷ h ŒÃ< ‘   … QÑ‘O¡b,¦Ç†Ñ Á`á —%` ‡Á`ÑüÑðÑ•ÿÿà G,ÌÇüîC ÃmF ÷ Î÷ûÿè÷ è÷ ÷ –,ÔÉ8… BLOCK WORD ,úÉÀœË$ Ð úw À & ïÒ÷‹„€…À+"ŒÊ^Ý÷ ˆ÷ F÷ Žñw fw ’NÀ‡$¨Ê^Ý÷ºÿ÷ B�À^Ý÷ ÷ † ÷”&ÆÊ\ ~þ÷ bþÀzÝÃL ÷ �þ÷‹, ÀiÝ÷ ðà t4Pà õôÿÿ4Iw 0Û×-"É3 44a.Â% w ¤ ÿÿÀ=w (ÀÁü7f.&$Ä í4À=w ñJ|÷ ‚ óÕóEØ�7ÅÅeŽÿAaÅ w ô‹þÿý€L”‡Í þ€�Í Í Ö ÷Fážù$ d!ÈÀ© èò÷ Œ  Ü& æì…‡Õ “òÇW ×ü‡&æ€Ëˆæ€Ëˆ‡Ü(È7 6w ,÷‹ò÷…wzw î 7�ì÷ ™*Èž÷œèó, Ê7Ž·Šíw J÷-ÐÿÒÿ· ÷‹Ùõ7 ò· ,FÊþ7 ü÷ ôë×-ìþÿæ÷ ”w >7 Š…,lÊ÷ƒª÷ $÷€ÿ„ÿw 8þ÷€ÿzÿw ô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 DEVÀwNýÌDÆïú=w ¨†.˜ w  ÿÿÀvw <AÀe0w ˆÀ,w 6.¾€æZ÷TÀXw ·H-À ÷@D7ìó.ä4>€ â÷,ûÂe‚.‚|Ô ”’ �Ý4÷ PÄeÔ• Â�6÷ <ÄeÔ• Ì• „ ÷ HŠþÿ@Àm4ÿ÷ˆ4óÅÆe ¬„`fÎEøÿÎe0 ü(˜È.ÓÊË÷ r…7 š÷‹^É7ŠXæ€Ëˆ÷‹ß,ºÈX±…w V· zàw 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Š 7Š7Š Œ.0   w À%0 ‚À%7‡ÀEøÿÄ Ä Ä � � ¤• õ„ø‡IAWFSøù$ ð´èñ ÿ×tÿ“‚Æe‚„÷ ¼�ÆeÅ CW æ&ÉÌw 2ÿ÷‹�÷ 2 ? Ü ÷Õè ÷Ô )* Éà ÷ z 7 ÷‹Üã7ŠÖ÷‹ÛÊæ€Ëˆ…¹,DÉw ôw Æ7�Å×-v*:×-r*6×­lÿ D @Àe Ì € ð³ ô � ° % % EÏÁ4Ñ   Á:@ÀeJ!Š!! ÎÎEÿ†÷0ˆ"÷Áþÿ ÀÿÀl”C #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 1 S � W Ö†ø÷‹Þ ÷‹»ÄmÎ7Š8 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) (ªÒ8R4�–޲NJ ,dl–.޲ N J ,dl– .ªÊ\ˆì �Ô ¶6 µöµ5‹@:ÀåÈe $Ø‹Ò� h�Ïß‹tÿý€Â •vÿø‡æ� ÿÀ @Àm ÿù$ ð(´w ÷ªJwÄ],ÖÉ×­,÷…8w²×­÷„&w w vüÉ>w DÀ õw HÊË8Ów @ÊÊË®Ëw ”Ë€Ëw "ʔˊËw $ ôEIÌ•ôU–%æ&^ ì'ù$ ,Eø›&è-‚ÿæ&^ –%æÀÃea£'W£0$À ðµ MOV R5,-(SP) MOV @#44,-(SP) ;SAVE REGS JSR R5,@(SP)+ MOV R4,-(SP) ;RESET CALLING PC MOV R1,LASTAT ;SAVE FOR INT HANDLEþƒ·Šl7Šg´÷NK*Ê\ˆ ì �Ôþ(.ÐD ÷D 7@7:÷%2Ä.„ î‡ë.öèd‚ÿæ&^ –%×¢9†& ÎÜÀÐ €c ÎÜÁ�cÂDÄeóU@Šþÿf&ˆ&ˆñ5@,ÎÌ¥# Ì¥$êô¥Eô¥OâÎ ‹À Øw ÊË.Ów 7"8Ê>7�××-ˆ*,×-„*(w ÊË(TʼËw \ æ€ËˆæŠËˆ÷ w Ôæ"$vÊ¼ËæŠË ˆÖ η07Š-æ®ËæÁþÿ ·Îd€ðU€À޶6¨ŠæˆóU€êÿÀœÿÀl"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úþ÷ ÚwêþwÞþ·Šð÷ âù÷ Ķ.B÷ â÷ÖÒ7ŠÖ÷mÈÈ÷ÄÄw ñ ÁS‚ õj|””Á ýŸ•tÿóE@æ&^ –%¶¶÷b.óE€ó5õÐÿõE@  ¶ó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˃èwbÿûÿûÿý¥PÄå× næ oˆ ÄÀêÌÃÆêÅeKÌT,:mÌ5øCÌ ßÈêß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® !6‚µRR!.Ú4D4 V¤ À€ !ž‚4Dôh4 VÔ éD V^ %Vü‡Àð5 & Ü`Îež°ŠÀ�ÿBÁÿÿ<Uh„à ÐÿîÿZZÿÿÿÿÿÿÀòÿÀaÌ é�” ü‚ààg" )Äl@ÄmFÿ (æ$^ `� ÷€õ ÀK Œ†¶#ºXã¾<ý@ÂÎÿIÂÅ/:…Š€à� Áâû€€`A ÁdT‘ÅÎ ñ†û€Å� T‘Åý€�å÷   ù ü†ÅeÐ,†mÀ… … … áÀ„ÿò æƒ � ÒRÒ<Â,¬m Ä ÷ 0ÿó2 úÿÄ€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 ¬· ÜwÜýwÈý� Ò.L #„ HÄl<àÃ((Ð&‚¦æ(Þ ¬Êô η„šù$ R,Eß^è¦DApSA]$$ ,E€%)è0ÿæ&^ –%I£@W£0=&& & „÷À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ÀÁÀ � ÷"€õ ÀK Œr¨1¬Xñ°<*Ö ÛÁ @Áe,PHwZÉeáe÷ ÄÁ @Áe.Ð fNè ‰e÷ ¨`ÈeÈe ø8ŽM‚t ‡÷ ÄÉU€0 þÿ&ˆ2 üÿ¦&ˆÉE€‡æÎeŠ+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.䰇Šw8ù÷•àþÿw ´7Š1÷U&ù÷‹&÷E þÿá. ùw .STÞJDU NOWÿÿù$ þd!ÊÀÆèí‚ÿÍU€…@ ACÍåBc%DUÀÀeŒ `…`/ L´ô‹þÿý€L‘‡ÎÿIÂÅ/:…Š€à� Áâû€€`A Ád÷ ØÿÅÎ ð†ú€Å� ÷ ÈÿÅü€�å · Äù$ ,Eð}§+è&•€ˆ‡æÎe~ˆ‡÷ æÿæÎepw ÂÂeÌR•A!ýƒÊ• ÁÁeøæÎe¢‘æÎeÎ7 Æ‘ÎÎ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 MOVB1f7Hæùæù æùÎE·þÿ÷‹ "þÿÏ.0ŠÀ�öÀ‹† „à pV÷•àþÿw Z×­Ø0Vþÿ`.VÏ÷‹Î2; UPDATE: 12-JUL-72 LPDOS.S3D ; DATE: 14-OCT-71 ; VERSION: V003D ; LINE PRINTER DRIVER 3ÈEøà ð“ÃààÈ Ðl@àPöÿHøÿU%Ê &&÷ žÍ,ËÕ-õ“÷ /¸ |æ$^ ‚¦æ(Þ ˆæ&^ ‡ì¤Àÿ”4‚ÿæ&^ –%æÀÃea£'W£0$À ðµÁþÿ ·Îd€ðU€À޶6¨ŠæˆóU€êÿÀœÿÀl"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 BY9Üx>|$€eÈ ÚÆå „æ & æ�&f&ÀÁÀ � ÷@w ¿0uý¶¸ ~ºôH¾2@ÂÎÿIÂÅ/:…Š€à� Áâû€:INTERRUPT ; INTJ: JMP INTH SPECJ: JMP SPEC CLOSJ: JMP CLOSE ; ; TRANS: JSR PC,INIT ;INIT CHECK DEVICE MOV 6(R0),CMA ;wføÄt!DTþÿ&Dt.ÈÄ Ä úw ¼w JÄF ÃG w ž@÷e:ø%Ä•ŠF G .îtD7‘2ô 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£@W£0=&& & „÷?;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¶ Ö ÀZÿ€e÷ˆX)W#ASÈUȵ@íW"ÑÍéÅÃe,Ä€—"TƒÊT‹Ó … ¦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)J”7Špÿ7Štÿ÷‹tÿý€…w pÿtÿpÿtÿ"tÿ.¬r÷‹tÿý€÷5pÿ÷‹pÿý€÷�gpÿ÷�btÿ…÷‹@tÿpÿpÿpÿ$tÿ/KPACING. ; V003C MODIFICATIONS: ; RE-PRINT FIXED TO CLEAR [R.AD] BEFORE RE-PRINT TO AVOID ; GARBLED LINES. ; ALSO, ADDITILÉ )È5&æˆ3ˆSÆå æ$ æ æ& æ‚f¦f÷ ¦öåMˆEÈUÆåææTæè‡‚|ÈEÁHÀ×"WA-×"CO%HÐ×"STÅ MÄù$ ,E˜!Ç0èµbÿæ&^ –%ÁþÿÀ ðµ Á 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(àÃeTËKIÅ×¢; פ úÁà Š÷ˆ8ÄvÿË• ðÁþÿ ÷ & & Á(ôó•  øGÚÛù$ R€eÐU@ æ&^ íØù$ ,E˜SQ3èö‚ÿæ&^ –%À;ðµ7Á  W£:A!)† DÕÄå01�!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Àÿÿ …÷‹tÿì4(tÿ .D ý€7�vÿ…÷‹pÿý€À�rÿÀE€ÿÀ¥÷‹Ð  ðvÿpÿrÿa.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ÿÎ (rÿU.� • À•^w ¤ÿÀ•Uw œÿÆwnú… ÷ÿÿn À.¶ ÷ÿÿjZONS: ; CORRECTION MADE TO WAIT UNTIL PRINTER READY WHEN CHANGING ; MODE BETWEEN AUTOLINEFEED AND FIRST-CHARACTE[ÈEH–%æ&^ ÷”GÁ ?�ȵ@ñ‚|„%‚Âe4úÿ!ü"šÊå"œ�ƒ‚úÿâ ‹Åþÿ& &ÈE€ÀÙã ÁÁe0œ¢¨ÅžU¥À \$ ,E¸Së5è:‚ÿæ&^ Ö ÷ s�ÉŒ3 o‚‚ m‡7Rô‹þÿý€Œ�‡ Âýÿ¡�A!B•Âå0— Z‚0àWÀ À À €Ð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,4X‚ÁRì4Á-P‚Ð ði44S.Ü ÀD…w@€ 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$ÿ„ä¤d¶ŽÈE€Á÷ˆt ø ðù$  P´e#è;‚ÿæ&^ –%„ „ †W#�d!’¤a îÂ Þ Â˜Á BŒý†È ŠÂÕ ÷†óƒÁÞ Â•/Í‚|È ÁÞ Â: Î È ÂA� ŠÈ ß‹pÿý€Í—rÿÍÅ€Â^UW£î�ŠI£€Â•\È Í‹€Bœÿÿé�a“æbNT 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!ASóU Á A@Á À ÿ@à„ ˜‡ó5@”ßGECHFIJO€ øASRUÂk–%ÄÀ@ƒ& „ ý†a£oB—¤:� û‡ã(÷ ˜$†ÃåW¥[7ÆeÁýÿ ÷ºZcæ÷ p‡Î ûÖ K!ì# b¥R©K…÷ 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 ÃeÃe Ãe Ñ�+ Ò … è€Ð ‡@( n16 ;COMMAND REGISTER (ON DATO) R.ST = 165016 ;STATUS REGISTER (ON DATI) $RSAVE = 44 où$  x´Ë%è«‚ÿæ&^ Æe÷òÁ $Á Añ5ñE¦üÿƒò5üÿ‚ EÜU%E`Í ÂeGpã A!Ú÷ ,‡Â ù÷ Jã ÎW£.Ë… SÂícA!ÆW¥]ûÜÄW£0‡W£9ƒÄ@W£A‡Í¥Z‡f“á••‡W£,W£ ùV¥A!¥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× RƒÃR„Áe0@•à B<|ý„ÆåƒÁÁeÁ ýQCÓ$ÑQÑTÑÑT ÷ 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 ABSOLyìd!ïÀ6(è[‚@à ÄÐ ##`F ý÷‹ÞÿU%MÉ 5ñÉ Ã¨êÉ È 5"‚5"ƒf656ˆÜÉ |Þ Å òÆeÁýÿ÷¶X%!‚¢¨‚ ÷ Þ þ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" ‚f5ˆÏH6ÌHt~É ÇCÃå;× × ¦æÃaÃe>Ã’Å`× (E`× �ƒfS@ ýõ× Èe� .TITLE DC ; ; DISK DRIVER (DDC) IS A MODIFIED VERSION OF SDF FOR SYSLOD ; CREATED ON MAY 14, 1973 BY DAVE MCMILLEN ; RESI€CH 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ÿÀ ø@Àmþþtù$ ,EY }=‚ET TO INTERRUPT RTNE .BYTE 200 ;INTERRUPT PRIORITY:4 .BYTE LP.OPN-LP ;OPEN ENTRY ƒ£×  ÈEÿ¿� (‚EáECDæÎe0× ƒfÎåæà Ç`$Ugz�xeNa¡K> -~»›xeOa¡K> ³ô›xePa¡K> yÀ›xeQa¡K> Á ø›t^^> Ã%w›î¡K@ )!›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' ;***********************************�‚Í‹ W£ÉUW£‚Íe ÍeÍe Íe T“�Z�éƒ Þ  ‚W#™‚‡ ‚Îeò‰Š‰ŠÂúä‹1Â’$ 'è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 CMM�ADDRESS (0 IF IDLE) .BYTE 37 ;STANDARD FACILITY INDICATOR .BYTE 200 ;(NORMAL & FILE-BASED) .BYTE 4 ;STANDARD BUFFER S‘********************************** ;********************************************************************* LPER01 = ’À0Ê ø4�@c÷ã Þ  ä‚W3ààÍ Îeõå % •ÀE€ÿÀå0Þ Í Í Í @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 COP™ISSUE WRITE EOF IF NECESSARY JSR PC,RWNDC ;ISSUE DISABLED RWD BR TUSTAT ;GET STATUS AND EXIT RWNDC: MOVB #RWD,(R1) ;SET šü† ‡ÎþÿwÄ ÉEûÿÉU¦÷ ÊEíÿ‚‡& Nœ�e‡&ðÿ´ðÿ¶‡& Žœ‚eÂe‡÷ 1Xl *BÁÁe`‘‘  ‘‘‘‘$‘$›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 Ÿ�ÀÀeBÂÂeH‡& Nœ�e‡ÀÀeÂÂeð‡&ÎeþÕyÀ Ö ‡&üÎeþÅ}‚Ò öæÎe”æ6ˆÂÂe|÷ î‡æÎed& 6ˆÂÂe BIT #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@¢,Eh“Bè ‚ÿæ&^ –%7 æLÿl�Ö‹û€�Nÿ‡ViÅ µ*fÁEÿÀ Ø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 RTS¤NôñUñU@& Nœ�e‘Ñ æÎe‘Y‡Ñ‹‰”W¢ û‚W¢ ø‡‡& Žœ‚eÂe‡Ì #‚N wÊþÂeÎþÿÊ 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 BA©‡…7W!ÿ4†J‘ò‹¦—§,,Ž ê—" òU@èÿ…W£7åƒÖ –%Ö Ÿ0ßpÿôþÿ÷ *ÿ÷ ÿæÎ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`ËEQËËeæ(Þ ˆžæ&^ ‡&æð ™�Ö Å"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Ö �   òU€‚òE÷ ªþˆ0ˆ‚‚’$šŠ&æ&¦„ ˆ€à `Šþÿ€ƒ̵@ý„÷ JäwÚóÆ‚Fff÷ JþÁeÂ@�øÿ €¯ @14(R0) ;TAKE COMPLETION RETURN ;*************************************°�/è‚ÿÅaå €�Í‹æÄ,L ƒJÄB“Œ ýƒàÇ` 5 þÿŠ&ˆ…ƒæÎTÖT!Ó … #… … ÅHÄ �#(ˆ±tLù$ ,EXa�GèÈxÿæ&^ –%Áþÿà Ãóµ Á 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 BUFF¹FER ROUTINE MOV (SP)+,SAVRTN ;POP STACK NOW IN CASE OF NO RETURN... ;FROM THEºÆe ö 3&fK÷ ‚ø�(ˆ¦ØÖ Ç�'ˆÅ•••Ö Ä ÕEð •  Í?�•Í•›„Âæ*ˆ÷ F0÷ *ððU€ Å"U%»÷Rß@ÀêÀàÿ$ÂÈê"xÿ"È5&æ?"ÁÓÁE8ÿb‡æ$^ ÁÀêB�À¤ÿ Â5 × ©2j‡÷ ¦ÿÅ"uðU€ î7 |ÿfæ¼EW DEN/PAR BR TUSTAT ; SKP: MOVB #SKPR,(R1) ;SET LAST CMMD=SKP MOV #8.,R2 ;SET CMMD BR SKPBSP ;GO SET COUNT AND EXEC½00,@#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¿ ÷‹¤þGæÎežþæfÇ.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!óÀ2èZ‚ÿÅ&M Q$NœÎEðÿÎ Î`Îe…ÅeÄ 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 ÷ TñE‰ÉEøÿ& ±N É ý€ Š Š D%&Î ­‚|‰ Šãý€Šef eŽ ´%úÿ÷ DÄe„bŒÅÏ ÷ ¢(ʦæðµ ÷5>ÿ 7 4ÿ·.ÿ÷ NÿÅ"uÍÍ‹þ€Á5€Á5uÍMíÂ5ÎÂ5 Ô&æþþæÚ…ù$ $Ë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 ;(NÎH�ƒD! mÑ f ÃK!ýK÷ Þ‰a)¦fææ.^ ²e)Q÷ ÄDDiÄeÌÅ3‚øÀÌŠ£> ŠÄ ddd)d÷ šŽ0 æÅ.M NόĘèu„Š  ò ¸‚ ÷Œœ ÁEøÿD�    $ÃÃ Ä ý†Â — À‡&æA�`‚ ‚ a„ÄEðÿAÐ;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 #17ÒEG) 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%GCÄfañþÿ÷ `I÷ TCÓ$‰„eáæÓ$EÉ ýÉ�¼N‚t ƒã à à ĉ Ãåøû€Ñe7Db÷ ƒæÔ÷! ÄeaÄ ÿL$$ÁÓÁE0ÿd‡æ$^ ÀlÿÅÿABrœD�Ä5x Ä �W x²†ðU€ ß ÿó¦æðµ ÷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ÍÍ‹þ€Á5€Á5uÍMíÂ5ÎÂ5 Ô&æîþæÚÅù$ šŒð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è ‚ÿ€�Ñ E‚ÂeRRRR J“Âå%“Ô ¦Ì 22 2 Å ý‚ò Ä Þ€B X ðßT÷Jß“1ÿÀâÿ$Â:ÿÓÄ CŒý†â"""ÁÓÁE8ÿb‡æ$^ Á0ÿB�À¬ÿ Â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 ;ERRORáRMES ;ERROR MOV #100,@#R.CM ;ISSUE RESET BEFORE RE-TEST LP.INT: ;INTERRUPT ENTRY POINT CLR @#R.CM â2 F„&USwþÿ&Ö °‚|€… p÷ ö4,0ö�ÅEÿÅ Å Å Ô 2% ÄeÅ ù0þÿÞÌ 0ãÅ"uðU€ É í÷ âÿ¡ ò7 xÿfæ÷5nÿ ‚ù$ Œ�À4@ 2”VÀ4ü@ �÷ VäEAR 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, WRITêRN MONITOR ;ERROR ROUTINE: DF.ERR: BIT #11000,R2 ;PARITY OR MISSED? BEQ DF.OFF DF.AGN: ASL #0 ;YES - RETRIED 8 TIMES? DëMOV @#$RSAVE,-(SP) JSR R5,@(SP)+ ;SAVE REGISTERS ON STACK BIT #30,@#R.ST ;ANY PARITY ERRORS? BNE LPì0…%%%à çp¹Ö bÀÖ âWbtþÿ¼ÅÅæ$^ &‚&¦ÁÃe ËE“]ËËeæ(Þ ˆžæ&^ ‡íÈgW Ð`Á¥`æ•!Á¥ æ•?�•Á €ÁeàfÁå �ÎåúÎm`ÿÎaÎe¼5‚È�—7 xÿ;ÈÓ7tÿ�€ŠpþÈ‹&À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 IFïF.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 CðIN06 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Ä òÀJÿÁBÿÀå(  ýÐ ! @ ý‚É� ÀÜþx Špþ÷ 8÷ ÿÑÁÆþqH 7Š‚D¬ÿßÕpþÂ÷DÎþø7 Èþõ7Фÿò7Š¢ÿïæ þæó 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ü-ÊKÌMNÏPÑ  $ªÝ»ÞÒ+ABÃDÅÆGH  .©Û<£É¶ù$  Œ`T‰@ Ý Ø äàÜ`Tpÿÿÿÿÿÿÿÿã.ñÿýTHERE BNE CLOSE3 MOV #8.,R2 CLR BRC MOVB #SKPR,(R1) CLOSE2: JSR PC,GO .ENDC CLOSE3: JSR PC,RWNDC ;ISSUE DISABLED RþFOR EDP .ENDC MOV -(R1),-(SP) ;DISK STATUS IS EVIDENCE MOV #DF.ENO,-(SP) ;SET UP ERROR NO. IOT ;GO TO DIAG. PRT. ;DÿOF 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!Ák9躂ÿ€�Áe&ðÙ‚8 ÁEÿø_RõwîÿÁÁaÁeÊÿ„…æþÿfæ$^ &wÊÿ÷ É‹€ñ•` Ї7Нÿ÷‹§ÿð‹ýÿÆe7Š—ÿx ·�ÿß–ÿVõß’ÿTõW¢ß5WD 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÷ hÿÂTõã‚0W¢ß5@PõÂòþ‚ †ÅVõ Š‚ ÂU€ß5Põ·ŠËþ°÷‹ÃþðU€ Öæ–þæß5@Põ÷ß5Zõß5 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 × WþÿEœ& … … … ‡„ ü†ÎÅ’Ååå�Å%⇸‚¬ó¥ ‚Å ÅaÅeM -AE.[ææ÷ 0 Š÷•VþßRþRõM÷ ÷ HÉ•ß5"PõÂwŽþ‡W¢‡E 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ð A’Â�PÂPõÂ52ÁU€Â5ÁUJ‚¤Â5"ÁUÂ5@ÁU€ÂEëÿÂ�Ps ÷ ný1Šøÿ÷ 6ÿ÷ 2ÿ÷ .ÿ÷ ÿw–ýæ$^ ÀýÁ@ýÅRõÍE@ 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 ÿ ôþ…þÿBaBaÑ6AÁ �cÑ JQÄ Å ûÒ � ‡ÿ Äþ0ÿ ¾þ‚Ò !†ÅéÒÿÿÄåêÿ œþЂt’$’’ÊÀÿÿ †þÎåÂPõ·Š#ýÂ5€€¦æ÷‹ý€ ÂÝ ý�‚ 7‹ýwpýÂ593· úüÂ5è·ŠíüÍ5(¦æ #Â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�‚ .ð‚ ‚ º‡ö ö ù—$¶ü• ßÿÿTõw6ýÂ5 @ß TõB“w$ý7Š’ü7Š�ün œÇˆüîù$ ØŒ`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ÿø_RõwîÿÁÁaÁeÊÿ„…æþÿfæ$^ &wÊÿ÷ É‹€ñ•` Ї7Нÿ÷‹§ÿð‹ýÿÆe7Š—ÿx ·* 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‚|^ Å"÷‹zÿU%Gw‚fþÿ& ŽÜÅ …ãÅ þ†pŽ Å,M …'p.�ÿß–ÿVõß’ÿTõW¢ß5Põ÷ Ü‚´¼ù÷ ÀwÜuÿÂUA·�lÿßhÿRõæ&^ w>w¶wä÷ Pÿ7Dÿ7@ÿ÷ <ÿ ÂEËÿÂ5É•Âå/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Ä Ä ýpß„‚…T Ô Åe TTTTTŒì%‚øLÅ&M ¶Ž¶0 õð‹ ò�þÿœ ÅEøÿÅ CaÃeÄ3 ß5Põ0¬É•Âe÷ hÿÂTõ©‚0W¢ß5@PõÂòþ‚ †ÅVõ Š‚ ÂU€ß5Põ·ŠËþ°÷‹ÃþðU€ Öæ–þæß5@Põ4RY 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"PõÂwŒþ‡W¢‡Â·þwŒþÉ•÷ ìÿ.¹‚(ß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:Aæ¦M‚væÎeŠÿƒ Ì&Œ÷ "‚¦ Áðüÿ‚а °÷ üÁ ÷°°öŽ& °Á‚°÷ ÌÁ ùÖ ÁBÂý7 ¾ý÷ þóTõ3 BœA’Â�PÂPõÂ52ÁU€Â5ÁU>‚¤Â5"ÁUÂ5@ÁU€ÂEëÿÂ�Ps'÷ lý1Šøÿ÷ 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 K„mLAÁ ×–%%”Ë‚nÖ ”ÌÀÿ÷ .Ö $)””÷ &æÅ.M ŒÅ$M Å"÷‹^þU%GÅÅæ$^ &‚&¦ÁÃe ËE“]LÎüw8ýÂ593· ÂüÂ5è·ŠµüÍ5(¦æ #Â59 ɥɥ÷’ülBœŽüÍ5 ÍUw“~ü• ßÿÿTõwþüÂ5 @ß TõB“wìü7ŠZüM÷ ”ý÷ dýÉU€&ˆ&ˆ7 àÉE€÷ ¦ýÁewš4 úÿ7Ž÷ ˜üô†òÿ÷ 4üv ·V¤…ôE@øÿÌ D÷ ÿ& Ñ 4-(ÎU(l>É5ÎUNIS 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 LOCPËËeæ(Þ ˆžæ&^ ‡Hê&æð Ý�Ö Å"uöÿø$ üd!Á6L@ œ‚ÿö €wFÅ&Q7ŠXüÇPü¡ø$ |Œ 4è3ÀÈà 8 @mp ÷$ÀØÿÁæþ $7‚ !7ŠŒ÷vvÃRÉ5 ÎUÎ ÅÅe´ÁÁe¢É¾‰e÷ € ÷ ÆýÊU÷ ¬ûÀÀeŽÂÂe|w–øÖ 4 ÷ ¤ýÊ5÷ „üüt‚¦÷ xüwlò÷ ýôÿÀEÃeS 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ðÿÅÄ �Å ü„„ „ „ „ Ä ÄeDbÂe€�A LAÁ Å ûÔ ! ‡÷ ®0µ‚ø[ºã·Šß••‚ÄâþóÓßÅ þÿæ$^ À$ÿÁâþÃÉ )�É� ß àþÇ�ßÅ þÿæ$^ ÁàþfæÑ5ÎöôþÉ•÷ ÿÅ&M \X '÷ r'�÷ |ü&ˆÌ Àv &ˆ&ˆæˆæˆ–%À ˆ÷ ôúVÁûÿæ0Ä ÄewÁýÿÁüÿ÷ °ûÌ �‚žŠpÿæÎeôŸ0]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€$óCÃEðÿÄà �Ä ü� � «`æˆÿæÁâþðá58âa@Ñ5�× -8Jê†ðU€ Ñ�BÈÀ`äÂѰ ·`Lÿ7 Úÿ÷ ÆþØ&æ Ï,ù$ °ŒEa4 þÿw8ýÅ�ÁeÅeÍ%¨zAÁåB ‡I#úÅèÁæ ‡Áüÿ‡÷ –%Ö ±üÿBfˆf& f ˆa(‘Ö w€‘Öµ‚X‚ fˆ‡bY 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: REd‚t� � Á Áe�m 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ð ?ðÝ�Ö Å"uöÿUø$ Pd!Á¬Eè6‚ÿÅ&M Ãå &ì&÷ ž°÷ Ø&°j wb3fÚý7 *CW€0tÊ ÷Õ€†ÿ÷Å€ÿ÷ |Ó7 7 ÷¸ÿ—Π×p$¤÷ ¦ÿBß³tÿýÍՀߕ@tÿ97 ì×°kÔ Ô Ã@ Ð wb÷U VÜÌ Áþÿwºþ÷ zúÁe  Å %W!DUðÀÀe ÂÂe&ô÷ n´ -ü‚À Ð ÷ Zù÷¥lF' 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æì¦÷ €°÷ º„„mƒmÅ$S Å ü¶# Å$„m Å ý†‚|°°¶#÷ f0°÷ Z°Æeo"ÄDÄÅ÷÷Å6ÿ7Ñ2ÿG€7 FÍÕ€—òhâ÷ · %& ÷¬ÿ÷nÿÁ À”÷(Î   õ  ò÷ð7 Nÿß“pÿ÷à÷2ÿ·|ÿß³tÿ»æ&^ pzœ÷4˜¡ W¥PW£RW£LÃW©AÀI ÅÊfæ"ˆ …‰Îæ"ˆ…¡Ö Å»–%¬÷ ÚùÉU€&ˆ¦&æÎe ²üÿˆòþÿwù«q.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 Å"÷‹JÿU%G—-Bö8ö<Å v! ÅeÄeH!²ö‡¶ ò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¡ ÄtÿÔA �¸@ ‚Â×w –þÀŸ–þÄpÿÁÁe�þ�¡ ¡ ÷‹2þé�Ì“@ ‰ p @‡÷ dþè÷ ôÄÄe6Å B Å@þ%wÑìý"CY7Šz »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 û˥‚~, ^ Ä ò~øÿ †  ·Šèÿ�à�Áåh”t>Áe   �÷Ö •ù÷œÁß“pÿÃüý©æ4þ� w|þ÷ Ôý’ÃþæÐý· þ„ ÄÄe±ÂÀ”÷ŽÖ r W‚€â ÑEŠ $ÿÿEg .ÿÿ´:¥‚>ÿ€�Ñ E‚ÂeRRRR 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 íË¥]M„PKƒ WÎ GŽ ƒ ÈQ&   „ ÷ òÎ ù‚ øŽ öÖ Ë¥:?R Ë¥,áU%à ÷ Èä1Ë¥*i‚úØÕ Ë¥.ƒÎ !€ ÷ xeÅÂx®  w!Dåw!FÅehL©ö@“ “  … À•\Äe:•ÅÏ Í Ë À• ׋' “÷ jý% '  „Ô ¦Ì 22 2 Å ý‚ò Ä 2 F„&USwþÿ&Ö ^‚º€… p÷ ö4,0ö�ÅEÿÅ Å 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 CARD‹RE 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Í•àÁeBébžCà Ñ5Ô „ŽöþÿÆå & Í“É €N N"÷æ7 0üÑ‘ V7 ÀÿGbq øÿ‡w &ÎŽÅ  ƒ …ã…#ûƒ�c�cDð  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!Á²Jèx‚& & ACB’$2Š„… Ä  AÁe ! ! ! ! ! À`Ã.’‡lHO 7ŠèÿÁÁe:Âå e‚ ý†ûABC…Îåh·#ÔÿÎ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›%Œœÿÿ %2“ÿÿöUÅ"÷‹4ÿU%Gƒ÷ à ÷ Ú1¯ƒ÷ ¨ýKŠƒ÷  Ó‹á‚ú²€cŠ÷ j2�ÿÿ§ƒ & ÁÎ’÷ |ö’÷ rýË¥œ æšÿæß hÿø�Ö À|ÿò˜ù$ œŒ€fÈ.è¶Ú<€††7 €f^Àèÿ7ôÿÄ 7�ÿËCÓ ×"×Ňp8D ä& 7ˆÈPLæbÿæ`ÿæ$^ ÂPÿÅÄ�¬þˆˆæ@ÿˆÊ5@øƒÓ$Ê5ÃÀ’ÀE€ÁÁe@¢êÅ Ñ‹ûæ&^ '*ž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ýË¥:½³ Ó¥*@ X‚v‡ã¨÷ û& Î’Îå0À À À €eô& ƒ Ë¥0¡èÿ÷•àÿ¦öþÿß>þÿß lÿ�÷ Êÿ· ÄÿߟÂÿnÿ÷‹¸ÿ· ¶ÿßU@lÿ÷$_ Å4n lÿÀŠÿx æ€fæÛ7Š„ÿæÎe‚ÿ·~ÿ÷TÿvÿÉJ¢#$T*¤÷ ÿ‡÷ÿ÷ òþù€Á-&f‚.À & ÜÁe`fÂÂešƒDË‹ ¥üƒÂ`õÁÿÿƒ ÷’jÿÂe ·`ÿ£CORE CMP R0,#END-START ;CHECK FOR END OF MOVE BNE MOVE ;LOOP UNTIL END OF CODE MOV R4,PC ;THEN TRANSFER TO BOOT INI¤R.WC ;OUTPUT WORD COUNT MOV R4,WCSAVE ;SAVE WORD-COUNT FOR POSSIBLE RE-PRINT MOV #1,@#R.LF ;SET FOR�F 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ˆÖ ÷ÀÀezÐÂÿHļÿÄ5„ á« ÁÁe$wÁe…wÀ¢ÿÁ Á ÷ tÇê÷ –ß@ê êß5@êõW‚ˆæ$^ ß5êß5ê þÿ êß@êÀê@ À5÷Äž¬÷ ÀÀ w®ÿ÷•ÖþùÄÄeØÅÈþTyL$)…CÁÁe¾þ K”‚ ˜‚&æ÷ NÖ — Sƒ ô“¤K’µþÿ�ÑÉEH&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 Xÿõº9ù$ ܰ÷ ð ÷‹¢÷ JÁ’Â�÷ æ&^ ÃxÃt÷•y� u…”ÅE€ÿW! W!§‚ 3W! W! ï·ŠRW!`é÷ ÄS‘÷ŠA÷•9±Ž �Ã÷ ¬Í •¾Ã^þƒ ÷ 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!?Á·Oèn‚ÿæ&^ %(¦Ãe% æ%©¥Ž Ž Ž ÎEøÿ—%h‚% ó òÿ�ÍE€V €Ã Ä & Å N�…cNÎ … 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%Ð � (Õ É …& fÎe&Î fÅ÷ ffÎŽŠ ÷ f¦¶vΊõ—%4…ºÀ÷ h›ßªê ê7šß ê×§xÿß êßÈê7 €‡÷zwHþ7Š€÷•{fŒw‹r÷Š¡düoúÖ Å 7ŒdŒ‡æüýæ‡÷•ÀJ»–%u�#ûU%÷®(ãkQç4dåx‚lÝ÷ ì7Vý7NýÄ ¥ Ä &÷ ðÖ )„ õ¥Tõ¥Oò¥ ïÄåÔ• Ô• ÷ ª7ý7ý&÷ ¸Ö €¼ 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ðÿ…�… Å ¿÷ 7ŠD‡ß5êü êßÿÿ êæÎe,Ÿêßêß êý€ß5êü‡œù$ Æ$éH‚nè ‚& ßpÿÃÃe$À„ ùÄ £ „ Ì•<ׯîü<7 æü7 æüm‚èׯÜü 7 Ôü7 Ôü ÁÊüwÎüf÷ r� Ö ú÷�÷ 2‡& ¶ þ¥0‚þ¥Z ‡þ¥9†þ¥A‚Á MOV (R3)+,T1 ;AND SAVE THREE WORDS FOLLOWING MOV (R3)+,T2 ;THE XFER MOV (R3),T3 ;FOR OUR MUST BE FOUR WORD MULTIPLE XFERÂA STACK-POP, WHICH IN THIS CASE REMOVES THE CALL TO THIS ; SUBROUTINE.) PARIÃ÷ Ôÿ…Î冧umüÿòÿÊ5 µ,ðÿµ,îÿ‚tÍ åFÄ%òæ$^ ‚ÂeŠ� ú5@üÿ ÷ ~ÿfÊŠú…’Å U¥÷ nÿ ¢(�AQ$ÄÅ µ6Åe D%÷  ÑU€NÎ @�Â@$ ü øÿóK@ð‹ €þÿñ €æˆæˆ0 æˆÜ€àE€ÂQ‚| Âe‰A 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@ßfÿÂfõâââMDÄe"@ È H P œÁ @`$õ    Åeöÿ¦Âe•Âe � J- •) š‚øÊÄüÂü„ &÷ ¸ÿ€•ù�À ••÷ †ÿ7øû·òû‹‚à‡ÅÅeèû÷‹ìûÕ ‡¦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`! Å �¡ü¡Áeøÿ‚E¦! ’$Î5 ’$Î5f‰N䔂l‰À Ð P(ƒÎ5±düÿÎ5 �CChá(Î5@Ð ‚Hp pá ppÎý Åe d%   Õe�æ& Àeâ � ÎC£,üÿÎ ù2 üÿ¢(ˆ(íÖ ƒÂÂe$) Ý€ Q$fQ$f ¢(æˆAÏPÿ€� M·šû‡À úR”ñÁŠûÁ|û‚ûÒ•SÒ•YÒ•:í‚\Á Á  f÷ ¬þýà úƒø�W¢:òà Ò”Á ý‡Õà ÃÃeÁÁeòÐ ;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 ;MORÒÁeÄ¿ÃkÐ È ø‚Ž †Î5Î5É5YU„Õ öåý‚èÆå4øÿ!üƒdddQ$B‚Ꭰ†Àe0Ž †H"†"I‡&Nâ¶åHAÓ‚t¦æˆæˆò €& $ $ Äeîÿ‰a(‰æˆÃÃe|÷ î ÂÂe€÷ & �KEæÎew·þEõ-V 7¼ô ÷ È �ÂÂeÔÀÀeBæÂÎåâ€e ÔÂû”Ä ý·û‡¦÷ ®þ€�À ‡¶ ‡ ØôÀE âMACROƒêkQØrE,I/CR WORD 1, BITS 15-4 ; C.C.2 > WORD 1, BITS 3-0; WORD 2, BITSívÂeGÒ• Ò• W#AS4 þÿÂ0‚àÂeR#"ý‚ÂÂe�ü÷  w(þ¦&÷ : Ê5ÂÂerü÷ †÷  À°ÂÂe\ü÷ ² €‚‡wÒ�Q$É î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&‚e—2ø¦ÎEÿ?Ž ÎÎ Œc  TŒcÜ8Ž$)Ž ÓÓ ‹Ë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÷ ìÊ5ÊE÷ 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!AÁUèþ‚æ&^ –%&â ¦ðùÿœ aÁef& æÿÿûT READ REQUEST. ; ; TREATMENT OF ASCII READING WILL STILL FOLLOW PATTERN ; DESCRIBED IN THE PREVIOUS PARAGRAPH WITHOUT EXCEüN•—£ —£,÷‚lH‡V ò L Ì wÊ&‚TÎe:—'÷7, ôþÿŸ0ß“pÿ÷ |÷  ÷ ÈÁ €w\7 ú 7 ô &ÀÀe ý.úp,`¯”(€ qäh¯”+÷æ.ÀÁ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Ê%LO÷UÌ ÷ Ò Áÿÿ€ß÷ Ì·¸ ‚Ѐw6÷U¨ €Ð ÛˆæˆæˆÅ Åe,AæÎå>ÂÂe<‚eæÈÎåŽ &Àe ``Cƒ ƒ à à b÷ ÷÷g.LàE È‹þ€È �Ëãã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ˆ·– –%÷ L€k,zÓàE È‹þ€È �Ëãã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æÎ÷ "ö5¿†p� Á ööÁ &æþÿ÷ &Å"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Ð ÂEÃEƒà‚ ÀE& N�…eÅeÍ '&æ¦$€|&ÄÄetÔŒ&ÎåfˆfˆÆeŒä$)&fˆfˆÅ EõUá !w*‚ ’$Ê ù÷ ôþ÷ žúÿÁetúÿ÷ X÷ ÷ ‚÷ rÁeÉf òþÿ÷ >&÷ é‚< úÿa(túÿ÷ $  v÷ R�f ;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!CÁAZè¶‚ÿÅaBqF üV)Í‹ ;SPECIAL CASE PROCESSING: ; A) ERROR ROUTINE: CR.ERR: CLRB @#CR.CSR ;STOP INTERRUPTS JSR PC,CR.NRY ;INFO'&ï&kQ@ /„)Lx¡KA 5° º ›¸¢kQ> ~?I¸¢¡K> Nß›cw³ @ Qzþ»zÕ}kQ@ )äNPAŒkl›"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Á$ AÂÂe"æ±$ Î ûÖ ƒ‚�‡Ë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 .Ä öž‚ & & Ħ &Áäÿá�fˆfˆ P0þÿ‹žÁÁe@È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ü÷ 8ÂÂeÊ ÷ p÷ lÂÂe ÷÷ b÷ (4 ÷ ¢�÷ 2�·  wJ7 Î ô 4(wø‚° ñEÁeÂÂeÞ1S 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 ;3æfÇ.G£b„ÌæÎeP° æ$^ ‚¦ÁÈæ(Þ ˆæ&^ ð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�÷ VÁe÷ ÷ „+÷ äÊ5òU f÷ ¾Þ&÷ ÷ ê7PÒ ÷-¦ PÊU · ÂÂ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& Žœ‚eÂe Êæ|É ‰#‡NÅ@e‰¥T$ @ 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 ‹7žƒkV©�‚ú%ŠÄÄÿp2Äe $Ó Â� ‚È" ñ‹Á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 #D©DDRESS 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 ýÅ"÷‹RþU%Mæ:/¶ŠÀå û€Ž­Îå `¥“Î¥•‡�ù$ &d!EÁP_èx‚EW!ƒ¦ æ+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Å ÅaÅe†ÁðU@&¦ˆ¦ˆðE@»r~ô5@3Í (RCR.NRY: MOV CR.NAM,-(SP) ;IDENTIFY DEVICE MOV (PC)+,-(SP) ;12-17-72 S$TÑ TÑÜ rÑ(Ô¸¢ > |,TÑ÷úÿBæ–шæžÑæ–шæ–шþ÷Úÿ<,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 INPU­D 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@ ‚Á ¬ðUæ0ˆÀÀeäþæÈŠN·ù$ d!mÁ½aèù$ ,E(!yè\776 ;DROP CPU LEVEL TO LET IN KB: INTERRUPT;12-19-72 BIT #2000,@#CR.CSR ;WAIT FOR TRANSITION TO "ON-LINE"]\Ä�ZÿŒŒŒ7‘x+7ŠN ÷•ÿÿJ ÷àx+÷ÛG,šÔp+×! Ô÷0wæÆ ÿ& ÷ ÿæv+æp+9,ÀÔ÷•@ª*à D÷‹ A „ &DCƒcà ÷^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 ; `‹‚ÿæ&^ –%Á0ÃeÀèÿÀl&A£-Àl&Åöÿ"Bõµ& NÝ…eõ ¦¶Å v­ŠòU€óU€îÿň ÄvÿJÅøÀla ;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� ÀÒÞÁßÞ÷ \ÄæÂ¦,ðÕwð7Šê  wèw (‚b‚ ‚ ·Àwúw =,Ö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€ 4¤ï4¤ìW¥-î„& »Î5×"<‹ ÁdÎe�#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 ;Eq‚øw �A�Á � � B`ï÷ „÷%–Â’.,<Ö…Ö w|÷‹–û 7Іwr÷•ÿÿ|wh·Š,bÖy ÄEøÿÄ 7âÓ‚wh÷‹b Ä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‚ÿæ&^ –%wö÷6šDECNOVOCTSEPAUGJULJUNMAYAPRMARFEBJANXXX Å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ÅÁ-÷ Å ç‡ù�Á”ùô‹þÿý€L�‡xôÁ� ÷ ®ÿÁü€¢ù$ ,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 �k÷‹ÐÄÊüÂeÀ=÷, רw Æ@w jw¬üw’·Š¾w¢À=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‚ÿæ&^ –%÷ ôÆå„æ & æ€Åöÿ& N�U%…ef&f÷6šDECNOVOCTSEPAUGJULJUNMAYAPRMARFEBJA31 ;Y .BYTE 240 ;EMPTY .BYTE 335 ;] .BYTE 254 ;, .BYTE 245 ;% .BYTE 137 ;_ .BYTE 276 ;> .BYTE 77 ;? .B€ÿÿÀvw <AÀe0w ˆÀ,w ¹,l×€æZ÷TÀXw ·H-À ÷@D7ìv,’×âÓ>€ â÷,÷‹: À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 .BYTE¹S 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 ;$ .Š»ÄmÎ7Š9 *ØÌÁ y2ØjØxØ‚ØÖØXÕ€ÚæØÖâØLDØ<Ù`Ö°ÙüÙøÙNÙÚÚÖÖDÖ‚,XØxÖ ×6ך׸×>ׂÕÈÔ¬Ôƒ·Šl7Šg´÷N>,~Ø‹+,FILNAM+4 TST (SP)+ LOOKUP: MOV #FILNAM,-(SP) CLR -(SP) MOV #DSKLB,-(SP) EMT 14 MOV (SP)+,CILBLK MOV (SP)+,MAXCBŒBS: .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á‚>Ȉ [‚R•A!ûâŠ&.ˆÖ Ž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úþ÷ ÚwêþwÞþ·Šð÷ âù�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-c†¡K@ % $›¼ 4@Œæ ·œ ›vL·IBa>Œ²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 ”÷ Ä:,ðØ÷ â÷ÖÒ7ŠÖ÷mÈÈ÷ÄÄw ¾æ¸÷,Ù²À°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‡Å ÄeòÓZ,bÙ  !ÔB†Ô ù!Ô=‚L® !6‚4,ˆÙ4òÓ4 Ô¤ À.ß!ž‚4òÓôÔ4 ÔÔ b,®Ùô÷%š1,CILSET ;SHOW THAT WE ARE WORKING WITH A CIL JMP INPUTC ;AND GET ANOTHER COMMAND NOTFND: TST FILNAM+4 ;WAS AN EXTENSION P›XT ;... CORRECT INIT. BR CR.ISP .ENDC MOV CR,R0 ;GET DDB ADDRESS ADD #6,R0 ;... & MOVE TO BUFFER STORE MOV (R0)+,œÒÿÒÊ"Êå&‚¦Áæ(Þ ˆ€@ð –%Ö  A’Ôù$ Ð,E wBèË þvzþv�;PARITY ASCII CONVERSION TABLE FOR "FIELDATA" PUNCH: ; COMPRESSED CARD CODE: ; BYTžÀ w .à ÅíÅ Å @w Æ@*,ÔÙ€ ‡À%€ÿ À%÷ äw ¬· ÜwÜýwÈý� V,úÙ à ù÷ÄÂÎùÄÈùD · Æù¼‚€Á &4ŸROVIDED? 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%TTT÷Š„TÔ Ó$Ò ÒÊâ(¦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@AƒEPA&f¦æw –€w ¤À/w ¨6,FÚ€w Lƒ‚�„w âÒ Û åƒ`ƒ ƒ Å ßô,lÚÀEÿ�¯À € € €` Õ÷‹Z·à ¤OLB,#NOFILE ;TELL THE USER XINPUT: JMP INPUTC ;AND GET ANOTHER COMMAND XLIST: JSR PC,GBLKNM ;GET THE NUMBER MOV R0,R4 ;SÁASCIM 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 TªASCII CLEAR SWITCH BEQ CR.RDC ;IF BINARY WANTED ... MOV (SP)+,R0 ;... SET PTRS & SWITCH MOV CR.IBP,R1 CLR R2 ;SET IN«Íå€AAcDDã  ÷ ŒQ!Ô ûƒ Äí&Ä„‚0¤÷ h òà ää÷ T&€ˆ&ˆà 3ÅõµÃe0¬CH ; CODE CHARACTER (OCTAL) CODE .BYTE 240 ; SPACE 0 BLANK .BYTE 26­pÔ÷•à%w Z×­Ø,ÛÏ÷‹ÎÌ÷•àì$·ŠÃ÷U¸øÐ·°ø·®ø÷•,*Û®7¼÷‹¥·w D÷‹˜ø€Å��øÅ�Œø¯ŒŒ<,PÛŒŒ®HE LOCATION OVER SUB OFFSET,R1 ;SUBTRACT CURRENT BLOCK OFFSET BLO BLKCHG ;LOWER LOCATION - CHANGE BLOCKS MOV R1,R0 ;SE¯TERRUPT 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ÿý€ß•$vÿÁ0é Yb&ææ Å"U%Ç.$)&&ˆ&cA!\*¬ããD„åÔ Ô5@Ô 7jÿÔ‡& æ3ù$ ±1 ; 1 1 1 .BYTE 262 ; 2 2 2 .BYTE 063 ; 3 3 3 ²ÅEw‘¢$Årø÷‹t�å wføÄt!òÓ�,vÛÄ Ä úw ¼w JÄôÞÃõÞw ž@÷e:ø%Ä• ,œÛtòÓ7‘2ô Ô¨ôÔ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 LIMIT¹101,@#CR.CSR ;ENABLE INT & GO FOR CD READ RTS PC ;RETURN USER FOR NOW .IFDF BINAºååMßfÿ ÷’Fíù$ ,E¸P è1‚ÿæ&^ –%÷ôæþÿÀðµSó‹PÎ ¡“ » 6 6 .BYTE 267 ; 7 7 7 .BYTE 270 ; 8 10 8 .BYTE 240 ¼4òÓÔüüòÓ§,4ÜÄ Ä ÷…÷�0#™÷�.#”7Š$#7Š$#÷‹ #ý€…w S,ZÜr÷‹#ý€÷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£,C•ÃåA× >†ƒŠÀ À À `À À À`‰Šçà 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 ADDRESÃSER BUFFER FULL? BNE CR.BIN ;IF NOT GET NEXT WORD MOV R1,CR.IBP ;OTHERWISE SAVE INT PTR TST R2 ;COME HERE ON INTERRUPTÄEN 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£Ò W£R Ò W£K� ÷¼[–%¶�@ÀeJ!Š!! ä Ì‹þ€óÃeËËe÷ˆ§|æ&^ ß“pÿ<ÉùÊ 16 8-6 .BYTE 300 ; @ 17 8-7 .BYTE 071 ; 9 20 9 Ën!,dÝ÷ÿÿj  ‚7,âÓX‚ÁRìâÓÁ-P‚Ð ðê,ŠÝÀD…w@€ 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 W£SÏ .BYTE 060 ; 0 40 0 .BYTE 257 ; / 41 0-1 .BYTE 123 ; S Ð?‘‡ÃÿÞÃã,ÖÝßÄþÞw Nÿ…÷%øõw ªþ…÷Ú77ú,üÝÐw ZÿÀ Àe0w àþÀ,w Øþæ²÷¬À,"Þ°w pþ· ÷ÑRATOR .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 Ó ɌΠΠΗ3ÅU%•#‚�#†Ö A’Îl| ÷€=A! ¡À#ðµ!ðE[Ï & ÜÐ `ÀLÿÀl@$×,ÄÄe4Ô 42 0-2 .BYTE 324 ; T 43 0-3 .BYTE 125 ; U 44 0-4 .BYTÍLOW: 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) MOÙE 126 ; V 45 0-5 .BYTE 327 ; W 46 0-6 .BYTE 330 ; X 47 Ú‡€âƒ ûË× Ãe ÃeÃe Ã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 ÝßfÿwlÎ Ö –%€Ä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 MOáVERSION ... 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 Ô e€ÁeÉ‹a€E ^ã ; _ 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ñèÝ‚ÿæ&^ –%à Ää ÅÅe0ÁÁe 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 IGNORö‚ŠÁe ÂŒý†Ä^|â …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, VALúE REST OF CARD BR CR.CXT ;OTHERWISE TRY NEXT TIME .ENDC ; C) ASCII CONVERT & û,ER„èk‚ÿæ&^ –%ÁþÿÀ =òµ9¦¶:6¬ŠòU€Ävÿæ: ¦¦¦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 EMÿSTORE: CR.ASC: MOVB @#CR.DB2,R1 ;GET COMPACTED INPUT TSTB @R0 ;IF FIRST C.C. ... BNE CR.CVT CMPB R1,#xý€L“W£ ‡W£ ƒ… ôÁ …Æeîô‹€&|þÿý€Á÷ˆzðU€÷l 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}@ÿæ&^ –%ÁþÿÀ ÷æ oð5÷ ð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 & Ýa…W-ÑYÌ5ÌUŠþÿÅ 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 O…‚ÿw æ7’ÆÄÓÄãÞÃóÞw Ä 7|w ¯,tÔw \Ä�ZÿŒŒŒ7‘x+7ŠN ÷•ÿÿ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> i››úp,`¡KÑA›úp,`é@ {�à|—kQ@ ‚ ›ÑW€}„K@ 3iªV›‰ .TITLE CF.TBL START: .WORD LPROTO ;LENGTH OF PROTOTYPE PART .WORD PRODDL-PROMRT ;OFFSET OF DDL PROTOTYPE ;NOW THE PRŠp+9,ÀÔ÷•@ª*à D÷‹ A „ &DCƒcà ÷ì ½,æÔ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=400ŒPROCESSOR VERSION 1 DEC 70 ; ; CALLED FROM USER PROGRAM AT END OF JOB BY:- ; EMT 60 ; ; MERELY LOADS TRANSIENT MONITOR � à Ð5@ ƒÐ Ð`%Ê5bƒÎÎeþNaÅ Þ æ�ŽŒ‡ÎÅúŽŒ‡N‘ÅÅM‚¼€‡W¡ ‡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 NO�ÈwXw Ìw ¥,2Õ�Ä øfw Ž÷•† €w –7Š’ wtwhÕ,XÕw žÄß  Ä%-ßû‚À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 þÿH‡úÿÅEÿ¿ È  "‚‡×°Ã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 X·ŠH À�A w LÀ�x,¤Õ: w DÀ�3 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 —…ò �J€ðU@û2(� ÷‡÷Ê Ç "�Å�ŒŒÁ‡‹€ Îe§a*ZŠüÿTÁ £p þÿ Å�ÅÅâ‚´ ÅŠ&ìÐ "üÿ E”È T‘È (˜OMRT: .REPT STDEMT .WORD 1 ;ALL CANDIDATES FOR SWAPPING .ENDM .REPT UDEMT .WORD 0 ;ALL NOT EXISTING .ENDM SEQ=™wð7Šê  wèw (‚b‚ ‚ ·Àwúw =,Ö‚øw �A�Á � � B`ï÷ „÷%–Â’.,<Ö…Ö w|÷‹–û 7Іwr÷•ÿÿ|wšCORE CMP R0,#END-START ;CHECK FOR END OF MOVE BNE MOVE ;LOOP UNTIL END OF CODE MOV R4,PC ;THEN TRANSFER TO BOOT INI›ACCEPTANCE OF NEXT TASK VIA KEYBOARD ; COMMAND. ; ; ON EXIT TO TMON, THE STACK WILL BE SET IMMEDIATELY ; BELOW ITS LOAD POœP ó‹$bc… Háà ä ÃU�Ê  "ƒâ„bÄ ÃUE”Þ T‘×0 ×0 Å‹€ÃU Ê ¬…Š€È Ä Þ 7‚0 p¤ÃUø2"üÿà×°�0 CFNOEM PROMRT ;ZERO NON EXISTING ONES NONLEM=NONLEM-SEQ SEQ=0 SEQ1=0 .REPT RESEMT+3/4 NUMMAC RSEM,\SEQ .ENDM Nžh·Š,bÖy ÄEøÿÄ 7âÓ‚wh÷‹b ÄEøÿÄ V,ˆÖà tâÓPà õôÿÿâÓ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 ADD INT & 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 þÿ½<úÿ@¹EöÿìöÿÅåE%ŠA!ýÈ ×°4Mæ�ÎEÖŠŠÁEEU%p!þÿ˜†Eà…d‘ ׂ¬ Q¦˜b¥…epá "È•¢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 �k÷‹ÐÄÊüÂeÀ=÷, ר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!îÿO½Ác 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 jw¬üw’·Š¾w¢À=w ¨ ,F× w  ÿÿÀvw <AÀe0w ˆÀ,w ¹,l×€æZ÷TÀXw ·H-À ÷@D7ìv©LR (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 T« àE€Áôÿ(…g€ò b�Î Å €„cÀÊ €  Kаüÿð³PˆÂe²ƒÒ$Ä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Š 7Š7Š ,Þ×   w À%0 ‚À%7‡ÀEøÿÄ ®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 Ö†ø÷‹Þ ÷‹»ÄmÎ7Š9 *ØÌÁ y2ØjØxØ‚ØÖØXÕ€ÚæØÖâØLDØ<Ù`Ö°ÙüÙøÙNÙÚÚÖÖDÖ‚,Xس ;REGISTER ASL R3 ;BACK TO NUMBER OF BYTES ADD (R0),R3 ;ADD IN BASE ADDRESS MOV (R3)+,T1 ;AND SAVE THREE WORDS FOLLOW´IT20 ;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 SEC·xÖ ×6ך׸×>ׂÕÈÔ¬Ôƒ·Šl7Šg´÷N>,~Ø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†·ˆ Âå@·‚ Âåæ·| C»OND WORD IS ;NON ZERO THIS ALLOWS THE INITIALIZER TO DIFFERENTIATE BETWEEN ;NON STANDARD AND STANDARD DEVICES SEQ=0 SEQ1¼w $@,ÊØÀ• w wúþ÷ ÚwêþwÞþ·Šð÷ âù÷ Ä:,ðØ÷ â÷ÖÒ7ŠÖ÷mÈÈ÷ÄÄw ¾æ¸÷,Ù²À°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 ÷< ÁeÂ0‰$‚‰" †’$Ê ù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‡Å ÄeòÓZ,bÙ  !ÔB†Ô ù!Ô=‚L® !6‚4,ˆÙ4òÓ4 Ô¤Â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 ADDÄ7 –òÅþßÍ wøþÅEÈ ÷ SSSKÓÑ   ÷bòÁJÅÙ  ± ”W L9 þÿ÷5<ñ· ¾Å î÷ Ø�wzãPØ w Ò ANSWERÅTO=.-PROMRT ;HEADER SHOULD NOT MOVE PART2: ;HERE STARTS THE SECOND SECTION OF CF.TBL ;ITS CONTENT CONSISTS OF 2 PARTS: ;Æ À.ß!ž‚4òÓôÔ4 ÔÔ b,®Ùô÷%À w .à ÅíÅ Å @w Æ@*,ÔÙ€ ‡À%€ÿ À%÷ äw ¬· ÜwÜýwÈý� 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 r÷5€BñüÅ�>ñÅE€ÿW!Y· XW! ïw ` w‚RÀÊ1 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@AƒEPA&f¦æw –€w ¤À/w ¨6,FÚ€w Lƒ‚�„w âÒ Û åÌ1) ;BACK UP THE R1 TST -(R1) ;PARAMETER POINTER BR INIT00 ;AND RETRY BLOCK: .WORD 0 ;START BLOCK LOAD: .WORD 0 ;LOÍOMPUTE BUFFER ADDRESS SO INC R4 ;THAT TMON IS LOADED AS XIT25: SUB R4,@R0 ;HIGH AS POSSIBLE MOV @R0,SP ;SET UP THE STAÎ( ÁîÂ0ÒÖÒ€ÒÖÒ�Ã1Rà üÁÂâ‘’¤‘’¤‘Ñ4 ÑàÑD ÑàÑÑà’$‘À€Â�÷ êŸÁqw¬Â6ÏNERAL INFO SECTION HAS THE LAY-OUT: ;1 WORD 1 NUMBER OF TYPES HAVING TABLE INFO INSECOND PART OF THIS SECTION ;2 A TYЃ`ƒ ƒ Å ßô,lÚÀEÿ�¯À € € €` Õ÷‹Z·à µ÷•J… ó,’Ú°‡Å w8ù÷•à^%w ´7Š1÷U&ù÷‹&÷E,¸Úùw f7HæùæÑAD 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 ¾4w¤„”·RÄ a’¤7 ^ÔPE HAS BEEN DEFINED IN RMON5 AS A NUMBER REPRESENTING ;3 AN ENTITY SUCH AS EMT,DRIVER .. THESE NUMBERS ARE MULTIPLES ; OÕù æùÎE·&%÷‹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 RETURØ7 X Ä—¤ýÒ‹À>N¦ŽbÌ 12%ûÄå$Ä F.· &‘‰w" ‚w 0CSQERR Ë\ˆw:w‘Åf•,Í úD-ÙF 4 STARTING WITH 4 AND ARE USEDTO ADDRESS THESECOND PART ; INFO BLOCKS ;2 WORD 2 POINTS TO A TABLE OF VARIOUS DATA NEEDEDÚ¼÷‹¥·w D÷‹˜ø€Å��øÅ�Œø¯ŒŒ<,PÛŒŒÅEw‘¢$Årø÷‹t�å wføÄt!òÓ�,vÛÄ Ä úw ¼w JÄôÞÃõÞw ž@÷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 ä‚àwâÁíŒw–Ám„»áe·· Ù÷  Ö¦±±ÂÞ BY RMON SUCH AS MAXEMT ;3 WORD3 AND 4 ARETHE THE FIRST WORDS BUILDING A SECOND PART INFO BLOCK ; A SECOND PART INFO BLOCKß ,œÛtòÓ7‘2ô Ô¨ôÔw „ÀBw .À�w,ÂÛÀe`€ w À;w ÷ðÄ�úòÓw ú,èÛwÜû·â·Ü÷ÆÐÓf&æ¦fàRETRY BLOCK: .WORD 0 ;START BLOCK LOAD: .WORD 0 ;LOAD ADDRESS COUNT: .WORD 0 ;BYTE COUNT XFER: .WORD 0 ;TRANSFER ADDáMOV 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 ’‚^wdÀÄÁBÂåæÀeæ÷ &ÀøÁòBÂíòÀmî÷ fBÁtã 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,ZÜr÷‹#ý€÷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 . ;Wç�cBì·ò¦÷ w÷ z Ê ’$—"ÿÿú¦¦ƒ öÅà eÁ‚W$ÿÿ B$U Úûa(~ó â~qè‰îw ¾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!ËÀ1ëAIT FOR INTERRUPT XIT30: ADD #20,SP ;CLEAR RETURN STATUS TST 12(R0) ;TRANSFER SUCCESSFUL? BPL XIT35 ;YES-BRANCH IOT ìwÈÅåú †w ¦CORERR 9 w°ÎãÎc$¤rÌd!,EŒ¼£ .\}0ÿ>ÿðÀêÎêxÈÿàÿ€ÿÿ¸@.J ÿÎê>ÿtÿàÿLÿlÿhÿâþPõPõíO 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 Xñpþfÿ`õÉÀ>ÁmÁËÀß(FÍ"tn :T„ÊìVu–Áè�m¦Ë‚¢Nì‚÷ zƒƒbÂæÎe¶ ÀÁ¶ `Ç®÷ Þ·ÀwÈòE PRIMARY ONE ; ;THE FIRST OF APRIMARY TABLE IS ITS LENGTH PHASE=1 .MACRO R50 LOC,R5V ZZZ=. .=LOC .RAD50 /R5V/ .=ZZZó4"l,>Ý• À•^w ¤ÿÀ•Uw œÿÆÄÓwnú… ÷ÿÿn!,dÝ÷ÿÿj  ‚7,âÓX‚ÁRìâÓÁ-P‚Ð ðê,ŠÝÀD…w@€ 78À ô÷%ô^ ÷ŽD… †‚|W"ÑÜë÷ >ÅÅehp#. M%û‡E¶ Ö ÀZÿ€e÷ˆX)W#ASÈUȵ@íW"ÑÍéÅÃe,Ä€—"TƒÊT‹Ó … ¦õ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ñ‹ÿÿ wñ‹ÿÿw7Šw‚÷ ê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.È5CÁe ú MOV (SP)+,R0 ;RETRIEVE DDB POINTER BR . ;WAIT FOR INTERRUPT XIT30: ADD #20,SP ;CûÃÃe|·"6„ò 2 -Ê$(Á üÂeÊ éÄ w 6SYSERR 6‚‚w@÷ü·ü³ß– Ä ÌËâæ3´ ó ×�‘üINED EMT'S ARE ONLY INTERESTING .WORD EMPRIM-PART2 ;POINTER TO PRIMARY TABLE KBSLOT: .WORD KBNT .WORD KBPRIM-PART2 DVSLOý0w àþÀ,w Øþæ²÷¬À,"Þ°w pþ· ÷ÊœÀÆ…ÀÀ÷ºŒÓÄýÿ‡,HÞ C”Ã¥ Ã¥$ × A‡Ãå ÃåÃå Ãå |,nÞþÉ )È5&æˆ3ˆSÆå æ$ æ æ& æ‚f¦f÷ ¦öåMˆEÈUÆåææTæè‡‚|ÈEÁHÀ×"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 ‘‘‘fÒÁ¨DŪDaÌ m@ f&€ U"À üŒ ÆeÁe÷ 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 ÃeÃe Ãe Ñ�®ºÞÒ … è€Ð ‡@(‘,ÎÞ+W!AS(àÃeTËKIÅ×¢; פ úÁà Š÷ˆ8ÄvÿË• ðÁþÿ ÷ & & Á(ôó•  øGÚÛù$ @#CDQ,-(SP) JSR PC,@(SP)+ ;FREE THE DRIVER MOVB #340,@#PSW ;RAISE PRIORITY CLR XIT-2 ;FREE MSB CLR XIT-4 RTI ;PAS¿ßÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿyö} êCmÒë}íªC¨Òºƒî뫲ÿìË«ÿØãŸ~ç½¼÷ïû½ÿÛã½ïæõKfO•·þÿÿÏþç½¼÷ïû½ÿÛó½oïý½ÿ×þ}örêïë½ÿ]²½oïý½ÿ ¿þ~özÓï˽ÿ]²½oïý½ÿH¿þúÿª9Ó}'í½b̺ªïßâ}ÅciY³}‰Øâ½ïýŸþÛ×}\ò½ïïý½ÿ<ú·þÿÿòØï˽ÿÛó½ïïý½ÿP‹¿þÿÿòØï˽ÿÛã½ïïý½ÿP‹¿þúÿ{>ïÍ•ÿÛã½ïïý½ÿô3¿þ›Æ_ M-ÿÿÿòØï˽ÿÛó½ïïý½ÿPù¿þÿÿòØï˽ÿÛã½ïïý½ÿP‹¿þúÿ{ïÍ•ÿÛã½ïïý½ÿôS¿þ›Æ_ M-ÿyöj[ÃC¨ïû…þýÖrêïë½ÿ]²½oïý½ÿ(Ë÷ÿúÿ{xØÂrËëË{ìYý}Oتr˧ýK—’ŪoßâEýÖrêïë½ÿ]²½oïý½ÿ·h·þÿÿòØï˽ÿÛó½ïïý½ÿPù¿þúÿ{ïÍ•ÿÛó½oïý½ÿôÿþÿÿòØï˽ÿÛó½ïïý½ÿP‹¿þÿÿòØëË{¨’õªoã½ïý½ÿîý{>ïÍ•ÿÛó½oïý½ÿ%€wÿZ�@  MŒ V+5ø†-ê|¤E™œÎ[ÒZM¦FQ¢‚®Ð@m @ ¦D ˆ H h+ƒ`0h ê¨@  MŒ —+�œ�éJˆÆd,Œ%…€oÜV4j´YM¦DР¾ÇèJˆÎКGéJªÆDtŒ%…€:7V4j´©LÓhtЕH¨Ó(}ˆ X}ŠLh¾ÇèJˆÎÐm @ ¦D ˆ H h+ƒ`0h ê¨@  MŒ —+�çT@ ”E:, >UÅ|žÃhu¦ÒùLZ j‚E "žRZžÓÐ�ü[V4@µ †A\ ”¸@ @ ú¨Å9œÕZ¤¨ zVW‘Š€«î9LÁ ax@ †A† Au€B—@ šZ¦ yL 8}@ÔéL’ÔÄ žCIt’Ôä|žTh¦Ìá*€ àV4@¶ ´Ó† Au€«Þ9MÐ *)@  MŒ W+ «ò@ ¦Mˆ ‰œ@ @ @/ªÏHu@Òô¤�SjL¨ TDœIX¤¤Å)¦Ôø )iZïÍ•ÿÛã½ïïý½ÿô3¿þ›Æ_ M-ÿÿÿòØï˽ÿÛó½ïïý½ÿPù¿þÿÿòØï˽ÿÛã½ïïý½ÿP‹¿þúÿ{ïÍ•ÿÛã½ïïý½ÿôS¿þ›Æ_ M-ÿyöj[ÃC¨ïû…þýÖrêïë½ÿ]²½oïý½ÿ(Ë÷ÿúÿ{xØÂrËëË{ìYý}Oتr˧ýK—’ŪoßâEýÖrêïë½ÿ]²½oïý½ÿ·h·þÿÿòØï˽ÿÛó½ïïý½ÿPù¿þúÿ{ïÍ•ÿÛó½oïý½ÿôÿþÿÿòØï˽ÿÛó½ïïý½ÿP‹¿þÿÿòØëË{¨’õªoã½ïý½ÿîý{>ïÍ•ÿÛó½oïý½ÿ%€wÿ¿_ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÏþï½½ÿÜÃï×¢EÉÏ„¿þúÿzwoãCý«Ÿ(ÃÿþÿÿóØ꟨ƒ?ÿúÿŸvå ÿúÿ¼w㽟¶…?ÿúÿ¼v+ücéþÄì[ç½¼÷æ×Kf¾zþúÿj9Ò›Ÿ(ÒÝ_*¶zÿþgÇ_¬�Œÿ“DzhéËK}þÄê[Y»_Då¿þÿÿÏþ×´_ÈŠð?ÿÿÿÏþSÍKDëý‹8²j(þÄú[YË_Dl?þöÃÛ×¢EÉh°?ÿúÿzwoãk¼ëŸ(8ÂÿþèÆ{¤šõj†áý¤ïÝŸþÞzÃ/ÊòÚŸÊ�Ø\õk¨Ò£}‡êKiŸó…þÍé÷þúÿ³8’ãœîí�}‰'¥½ÿùÖk8î«}/²KÏZ¢sŽèû[¨Ø£ciÓô[fZªEÈ»;·þ{ökŽYÓ½ïý½ÿS9ÿþÿÿóØ꟨ƒ?ÿÿÿÏþÿ´cw•S?ÿÿÿÏþø´c÷”Ã?ÿÿÿÏþù´c÷“Ã?ÿúÿzwoãk¼ëŸ(8ÂÿþÿÿÏþ\ºrÉï«•ÿ]²½oïý½ÿ[1þÿÿóØ꟨ƒ?ÿúÿ{ïÍ•ÿÛó½ïïý½ÿôC¿þÿÿòØï˽ÿÛó½oïý½ÿP ¿þúÿ{>ïÍ•ÿÛó½ïïý½ÿô#¿þ…%@ ¦M\ X”ÄJŠÒD °EZ¤‚Nb‚È”ŠÔ4•œU™¤¨ TD’F:• §€@ ˆÁ¦ ƒ`4J@ éZÎÈ–Î9¤A: ¤EÐp +)@  MŒ V+  N@ ˆÁ¦ ƒh²hÿ@ ´Ó¦ yL ˜|Œ *M@Ôùt„-d@Kˆ‚ÒH@Ò4M@AEE¬µ©V4@· ´Ó† Au@ @ @ 8@Ôù’D™¤@Î*¥\Åh«Þ9MÐ *)@  MŒ W+ ŒP@ ¦M\ X”ÄJŠÒD œA "œÇ(}‚ ÄdŠRl’Îtt�C( ¨Ã*-�ò@  MŒ V+‰z’ rŠH[ŠTè”@̘4ˆÌÐpzV4@¸ †A¦ yL ˜|’ u@Ô4M¤TU¬¦ ú¤@Ev»n· º@ÎYl¤ÏáÊ€Ó@ ‚Ú”H^ dLœIZ…’ š˜AUœ¦ ú¤@EZÔ@OäLŠMúl\Yh«l9LC X@ †ARˆ H œ�éJˆÆd,Œ%…€ˆþZïÍ•ÿÛó½ïïý½ÿô#¿þ¿ÏÿÿÿÿÿÿÿÿÏþ ¥¤”﫽ÿê½ïïý½ÿ»ÓþÿÿòØï˽ÿÛó½oïý½ÿP ¿þúÿzwoãCý«Ÿ(ÃÿþÿÿóØ꟨ƒ?ÿ'Ï_¬Á„ÿÿÿëÙYË_D?ÿöcwž×_ìîJ?ÿúÿKž×_è{?ÿxöc÷ž×_ìíÊ?ÿÿÿäØ ¥¢•Yß_N_OÿþúÿKž×_èD?ÿ'Ï_¬Á„ÿÿÿêÙY»_D'?ÿúÿzwoãk¼ëŸ(8ÂÿþÿÿÏþï½½ÿÜòî’Ãj'6¿þ“ÇKW»òÚŸÊ�Ø\õk¨Ò£}‡êKiŸó…þ”Ç÷ÿÿÿóØ(ú{>èÍ}eXºK’ýr¬ÝÃEäõ?þ{ökŽYÓ½ïý½ÿS9ÿþÿÿëÙ]ó}¯ÒÝ_*Ç{ÿþ–Ïsê’ýc­Ÿ«CÝ_ÚsúY£ŸˆÚãE§’õ_*€5÷ÿÿÿôÙÒ¼ríÒý_*TBÿþúÿk|’£[Ï_“CôïËkeÓKýÙ⟈Ôß_f÷ÿQÏs”ü_Ê�X?ÿÿÿüÙ^ü_ŽÚãs§þþÿþ{ökΟ»òÚŸÊ�Ø\õk¨Ò£}‡êKiŸó…þKL÷ÿúÿ²9TërÏÜú›ïRû}­ê�ï’Ë}£²ªï[³�ïª}¯Z²E®X7ÿ{ökŽYÓ½ïý½ÿS9ÿþr@  MŒ —+‰[|¨IÐpçT@ ”E:, %ó¥z¤ 9l¬Î*-žÉr@­X”@Ä)…ŠÃ9�Ò¹�V4¤0ÈLÃqu€i°©LÓÚ „eHLÃxL¨ÎhnòHMÄ`0ШšA:MBAèœ�Yt¥z îU|žÃhu¦ÒùLZ j‚E "žRZžÓÐ�7†V40©%’‰9<TõJ@*èL†Ir†­å|ž ’\ UèÍ}eXºK’ýr¬ÝÃEäõ?þ{ökŽYÓ½ïý½ÿS9ÿþÿÿëÙ]ó}¯ÒÝ_*Ç{ÿþ–Ïsê’ýc­Ÿ«CÝ_ÚsúY£ŸˆÚãE§’õ_*€5÷ÿÿÿôÙÒ¼ríÒý_*TBÿþúÿk|’£[Ï_“CôïËkeÓKýÙ⟈Ôß_f÷ÿQÏs”ü_Ê�X?ÿÿÿüÙ^ü_ŽÚãs§þþÿþ{ökΟ»òÚŸÊ�Ø\õk¨Ò£}‡êKiŸó…þKL÷ÿúÿ²9TërÏÜú›ïRû}­ê�ï’Ë}£²ªï[³�ïª}¯Z²E®X7ÿ{ökŽYÓ½ïý½ÿS9ÿþ¿OÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóØ꟨ƒ?ÿ{öZË.âê[[“}§ÒÝ_*Mœ¿þÎrÊžõ_ìð?ÿÿÿÏþúÜÊÒ¼rízŽÿþžÇŸ¨^Ý_䔼?ÿÿÿÏþÛã¬îl´k‰�ý}-祃þé«k}ëûbÎ.ôÜZÒ¼ríÒß_*1–7ÿÏ}åâ¥Cíëc‰&ý½÷WË«¹ßã{üè«ßZÝ×_ì\·ÿÿÿÏþÙóÕ[ÛóÜKÒ¼rí|Æ¿þúÿzwoãCý«Ÿ(ÃÿþÿÿóØ꟨ƒ?ÿÿÿêÙ[“_¦ÒÝ_*(Eÿþö¼¹\õsÎüƒoÜâƒî]³ŸÞrÊž×_ìÄ�÷ÿÿÿÏþ¨¤š×]ë¥ïdõ¼[“}§Â}­ç•kM.²ßZúÜÊÒ¼rí�b7ÿÛÇ_ *ÿúÿ¼R[“_¦•R?ÿÿÿÏþúÜËÒ¼ríq�ÿþúÿzwoãk¼ëŸ(8ÂÿþÿÿÜØÒ¼ríÒß_*laÿþúÿK^ß_ä»?ÿúÿ«9ßã{ü.¢ÜZÒ¼ríÒß_*û#þÿÿÅÙ^ë«ïóßZÝ×_Ä�¿þúÿKž×_èD?ÿÿÿÜÙÒ¼ríÒß_*l`ÿþÝÇ_K"ÿÿÿãØË_†ÛóäJÒ¼ríž[¿þÿÿÏþߢªoßÃC¶”ý«îúEðâþÏuV4@3 ¦M\ X”ÄJŠÆ9¤Š HÅœÒÄ Z7š† D†AZ¤@,ú”¨AÐ(÷¢V4@4 ¦Mˆ †œ‰zš ¹š@S ºŒEÄ¢œA "¤ÅT<�C( ¨Ã$-œIñ¤€ œŠ@ ˆÎ´ v»`0hèÏ@ ¤O\ ˆÒJ@ Ê® ÀÔ@ †A˜ И 9Š@ ´Ó† :D iê@ ´Ó† Au@ @ žÃIuªÎ *¨ÎÄL˜Ab‚È”ŠÔ4•‚HT´ŠBá,€µôV4@5  M` ”H@ ^ ŠRD œA "†AX\.¦î@ ®AZ ”¨@ @ øŠÈ´�C( ¨Ã$-žCꬂ DtŒIȦÓIœAh=@ ˆA† :D zŒ hM† D†AZ¤@SD@EX@΄ŠËÄ"‚P±€…l@ ‚Í”H^ ˜Bé @Ó꬘IÚ˜« š@ÓY5\Lhë@  MŒ f+RõJ@*‰@®xL¨Îh* ß•@ ¦M¨ Ú”¦Ìh ¬»@ šZ˜ Иœ�éJˆÆd,Œ%…€oßV4j±YM¦DРz~jL1èËÈLÃCf0Шž(HLÃ5�›kILDz~jL1¾ÇèJˆÎКGéJªÆDtŒ%…€ U­V4j± †A† ƒj3@ ^ ùŠVD•‚R º¨Îx,@Òl’T8�¨ zžLI ŽÎhl³@ †AR\  @ @ @  œÉᢀ ju@ ¦MR\ A€¾ÇèJˆÎÐ ~÷@ †AŒ i”@G@ ^ ªCd@EYm’TÉ„¤Å Š× ’@ÆY¤z H’ÃÐh�Ñ@ ¦M† m@ @ @ Ø@Ì8œŠÌh¨Ã$}˜(”š’MZuœ Ø¬¤Eø åf@ ˆA˜ ”˜@ @ ô@ ˜$¨Éš¨Æ$-ŠD™˜Á œÉ¢ŒSÈ4z©ú„. Gp@ †A  A}€«m9MA+¿?ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿóØ꟨ƒ?ÿ{öZË.âê[[“}§ÒÝ_*Mœ¿þÎrÊžõ_ìð?ÿÿÿÏþúÜÊÒ¼rízŽÿþžÇŸ¨^Ý_䔼?ÿÿÿÏþÛã¬îl´k‰�ý}-祃þé«k}ëûbÎ.ôÜZÒ¼ríÒß_*1–7ÿÏ}åâ¥Cíëc‰&ý½÷WË«¹ßã{üè«ßZÝ×_ì\·ÿÿÿÏþÙóÕ[ÛóÜKÒ¼rí|Æ¿þúÿzwoãCý«Ÿ(ÃÿþÿÿóØ꟨ƒ?ÿÿÿêÙ[“_¦ÒÝ_*(Eÿþö¼¹\õsÎüƒoÜâƒî]³ŸÞrÊž×_ìÄ�÷ÿÿÿÏþ¨¤š×]ë¥ïdõ¼[“}§Â}­ç•kM.²ßZúÜÊÒ¼rí�b7ÿÛÇ_ *ÿúÿ¼R[“_¦•R?ÿÿÿÏþúÜËÒ¼ríq�ÿþúÿzwoãk¼ëŸ(8ÂÿþÿÿÜØÒ¼ríÒß_*laÿþúÿK^ß_ä»?ÿúÿ«9ßã{ü.¢ÜZÒ¼ríÒß_*û#þÿÿÅÙ^ë«ïóßZÝ×_Ä�¿þúÿKž×_èD?ÿÿÿÜÙÒ¼ríÒß_*l`ÿþÝÇ_K"ÿÿÿãØË_†ÛóäJÒ¼ríž[¿þÿÿÏþߢªoßÃC¶”ý«îúEðâþ¿¿ÿÿ~öbNš²îçíC�^ÚrOê«C¦—£eôŸˆÒ¼ríÒý_*ÍQwÿ~öc=éÍ}Kªrä²îëûrÌ諾ÙÓr‰WÛKùûßZ²üKÒ¼ríÎÁ÷þúÿC}¢ªïë»KNšÓEì�×kg”ü_Êï{?þÿÿëÙ^Ã}-’ÍZåéë}K׫{øÜÂkÍÙô£oïÛ²ÐÓËŸˆÝ×_p•7ÿSÏ}O²s¶\õsÎü²nÓ˺ïU߈²}íÛóìJÒ¼rí$$wÿúÿ[tX“äZÒ¼ríÒý_*í9¿þúÿKžõ_ì{u?ÿösÈ’õ_*â?ÿ|ö}éÛó½oïý½ÿý=ÿþÿÿäØÒ¼ríÒý_*dCÿþÙÇ_O"ÿÿÿÏþÅ}©ß²CõêZgéë}‰Ã}ß⋹X²E×ßrLžõ_è®7ÿÿÿÚØëûkÍÛ}mŸëj™–õ»n–³Ce_ò{”﻽×âk¶¢ŸˆYêc§žõ_ìÞ ·þÿÿÏþ_ó}‡Ú£C&oâªïžÓzi_“C¶ïëC”^ÊŸˆß½©ÛãäËÒ¼rí'Ü÷þúÿs\ÝÃsÄòª¹ßÃC¶”ýªïëûs¨.òË[^âs¦^ý_äúãwÿyök—³j—Ó}mÚÃsJ_ëC¼(üE(ûÖ½©ÛóôJÒ¼ríÖgwÿ ax@ †A† Au€ #@ ´ÓŒ f+� L@ †A¦ ƒ`4h *@ †A\ ˆÒ )@  MŒ f+ ÝåV4¤6ÈLÃxL¨Î•HTª˜œÃ¢` ˜‚ 9l¬Î r@ÒaL€ Ï9MA”H@ õ@*ºŠGr�q©LÐV46õJ@*ôt–Sè„@®j¨Åi¦Ò¢‚Èä’œI .¨n©LÓ9%LõJ¦*˜D@TŠ-‚R)@Ôh|  ¿V4¤7©LÓ9%7õJ@*‰œ¨ÆÈ¨Æù@Eˆ\ÒhóÈLÃ1e€�âLD›n1и¼â(MÌÛ HLÃY¤pÐhóÈLÃ1e€-_LDvÓ`´Ð€šû‰MÒY¤pÐhsHLÃ1e€ךLÚxL¨Î”H@ õ@*꬘I)¦K r@ÎXdT `©LÐV4¤7•HTªh«Þ9Mн7V4@6 ¦Mˆ ‰œ È|¨Æª¨ÓkL¨ zn¯’ÃJ¤Ol./w@  MŒ V+@ @ ’/ 2¨OëŒ 4 –O’­áš€«í9MÁ D¼@  MŒ V+@ @ ’/ 2¨Ozt`. b˜Õ䢂F@YY¤P ú„@)™¤¦ÅÐpœ�éJˆÆd,Œ%…€/ÇYM¦DР0ýjLdHh›kILDÇlHLžLQt€¾ÇèJˆÎКGéJªÆDtŒ%…€SÉ@ ¦MR\ a@ @ ŒÉ \ÔEeX08ŠÖh@ÃäL‚HˆÎɈÁ0û+@ ¦MŒ ñ @ @ @ ™žTh@ÃÚjŠH r˜Õš¤²Lh@ÔŠTÐpùº@ ¦D ˆ ÉŠÎ@ ^ Z(ú„@)™¤¦ÅIž HœÉI’Öúœ.¾ÇèJˆÎÐ Fp@ †A  A}€«Þ9MÐ .°V4@² ¦M† m€ ax@ †A† Au€ åfV4@³ ¦Mš š…œEh 2æ@ ´Ó† Au€0¿¯ÿÿ~öbNš²îçíC�^ÚrOê«C¦—£eôŸˆÒ¼ríÒý_*ÍQwÿ~öc=éÍ}Kªrä²îëûrÌ諾ÙÓr‰WÛKùûßZ²üKÒ¼ríÎÁ÷þúÿC}¢ªïë»KNšÓEì�×kg”ü_Êï{?þÿÿëÙ^Ã}-’ÍZåéë}K׫{øÜÂkÍÙô£oïÛ²ÐÓËŸˆÝ×_p•7ÿSÏ}O²s¶\õsÎü²nÓ˺ïU߈²}íÛóìJÒ¼rí$$wÿúÿ[tX“äZÒ¼ríÒý_*í9¿þúÿKžõ_ì{u?ÿösÈ’õ_*â?ÿ|ö}éÛó½oïý½ÿý=ÿþÿÿäØÒ¼ríÒý_*dCÿþÙÇ_O"ÿÿÿÏþÅ}©ß²CõêZgéë}‰Ã}ß⋹X²E×ßrLžõ_è®7ÿÿÿÚØëûkÍÛ}mŸëj™–õ»n–³Ce_ò{”﻽×âk¶¢ŸˆYêc§žõ_ìÞ ·þÿÿÏþ_ó}‡Ú£C&oâªïžÓzi_“C¶ïëC”^ÊŸˆß½©ÛãäËÒ¼rí'Ü÷þúÿs\ÝÃsÄòª¹ßÃC¶”ýªïëûs¨.òË[^âs¦^ý_äúãwÿyök—³j—Ó}mÚÃsJ_ëC¼(üE(ûÖ½©ÛóôJÒ¼ríÖgwÿ¿/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäÙÒ¼ríÒý_*dBÿþÿÿóØÔë…ïÚ£}-^ër'ëòJÐâßZYêr¬^ý_ä ×·ÿÇr-ëëj†^ÛÃÊ.ÂôZÒ¼ríÒý_*ç`?þÿÿĨߢªoë»KNšÓEìþÖsÈÙõ_z?þÿÿÏþ²}íÛóôKÒ¼rí†t¿þÿÿÏþçµkM﻽ÿ]²½oïý½ÿî£þÿÿÅÙV»kb^ýrÍëûjKWÃr—TërÏÜú«ï]ó½‰^ßrÍïû½ÿ]²¼nÒ¼rí=r·þÿÿÏþçµkM﻽ÿ]²½oïý½ÿî£þÿÿòÙšëCE“Õ¼+d´}é’Å}ÃèýŸ~[ÃKæïÛ½ÿ]²½oïý½ÿŠ7ÿyöC8•ÓbÍ£ïëËk¨hü})èýŸ~çµkM﻽ÿ]²½oïý½ÿºu7ÿÿÿÏþ’ÍK®ª}ßß³}زŸ~“£CÉïͽÿ]²½oïý½ÿcLwÿÿÿÏþ[³{Žß³}Òª}©X£½‰^ßrÍïû½ÿ]²¼oÒ¼rí>èwÿÿÿòØï˽ÿÛó½ïïý½ÿPù¿þÿÿòØï˽ÿ“ʽïÒœríÁ—¿þ'ÏkM﻽ÿ]²½oïý½ÿ=™¿þ^ÏrÍïû½ÿ]²½oÒœrí J¿þökâ﻽ÿ–“½oÒ¬rí]¿þÁÇ@ †Aš ”˜@ @ úžÔT”žB "¤Ï "’A ’@Î)|†E ¢šÅ+}® X@ †ARˆ H  )Â@ ´Óˆ H  ¿Ô@ †A˜ И X@ †ARˆ H Õz@  MŒ —+‰[|¨Ih EFÚT@0  MŒ f+�çT@ ”E:, å¥z¤ ,Š HÅœÒÄ ’FÈ,‚ š¨ÃÁ € {8|˜ÌèL¦ -œÅU­öy™x¦M(M°Eñ¤€xH”¨Ø–x RqÈLÃH”¨Ø‘xT¯ R\D(°E ¢„Õr¤O*\Nh´HLÃH”¨ØhGÈLéDÓÚ|œTõJ@*Ed” mžTø‚Ô b˜Õᢀ(ÓHLÃH”dØÐ¨à©LÐK”OõJ@*ÚT’ Iu¤ [$@Tú”’ÔQt€Yt¥z  !’(}ˆÁ[ŠTè”@̘4ˆÌh[z‚CÉdŽÎ8ªÑè,@ÅÔjšJ”˜ˆRŠ- 4 +©@  MŒ V+�h@ †A  A}@ @ ŒÉ \ÔE=X09¬Î*-žÉ r@Óút† Ú|ŠLU¤ #@ ‚ÍJ@ @ ˜|  E}¨Ls† ê|¤E™œ@Î4MžC m¨ED,²Bh¦@  MŒ V+@ @ @/¬IILŽÎˆ@Ô‚Fလ�éJˆÆd,Œ%…€škJLD0ýjLdHh¾ÇèJˆÎКGéJªÆDtŒ%…€ u@ ¦MR\ ‘€ p?@ ¦D Z A£€÷gèJ‚SK@¯¥R® D ŠSF…@9¥R ¾ÇèJˆÎÐ[•V4@´ †A¦ yL@ @ ¦/D-†,*¦ yLž 2œÏZ´ŠT "šUZ.¥{@ ‚ÚJ@ @ z„ DM@0ê@ ¦Uhœ�éJˆÆd,Œ%…€0ÌiLG•HŠÎ<EûÞéLоÇèJˆÎКGéJªÆDtŒ%…€5¿/ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿäÙÒ¼ríÒý_*dBÿþÿÿóØÔë…ïÚ£}-^ër'ëòJÐâßZYêr¬^ý_ä ×·ÿÇr-ëëj†^ÛÃÊ.ÂôZÒ¼ríÒý_*ç`?þÿÿĨߢªoë»KNšÓEìþÖsÈÙõ_z?þÿÿÏþ²}íÛóôKÒ¼rí†t¿þÿÿÏþçµkM﻽ÿ]²½oïý½ÿî£þÿÿÅÙV»kb^ýrÍëûjKWÃr—TërÏÜú«ï]ó½‰^ßrÍïû½ÿ]²¼nÒ¼rí=r·þÿÿÏþçµkM﻽ÿ]²½oïý½ÿî£þÿÿòÙšëCE“Õ¼+d´}é’Å}ÃèýŸ~[ÃKæïÛ½ÿ]²½oïý½ÿŠ7ÿyöC8•ÓbÍ£ïëËk¨hü})èýŸ~çµkM﻽ÿ]²½oïý½ÿºu7ÿÿÿÏþ’ÍK®ª}ßß³}زŸ~“£CÉïͽÿ]²½oïý½ÿcLwÿÿÿÏþ[³{Žß³}Òª}©X£½‰^ßrÍïû½ÿ]²¼oÒ¼rí>èwÿÿÿòØï˽ÿÛó½ïïý½ÿPù¿þÿÿòØï˽ÿ“ʽïÒœríÁ—¿þ'ÏkM﻽ÿ]²½oïý½ÿ=™¿þ^ÏrÍïû½ÿ]²½oÒœrí J¿þökâ﻽ÿ–“½oÒ¬rí]¿þ¿¯ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿyöC8•Óbͳî’ÛjÈêËkäÒËslüZÌïý½™çÖkM﻽ÿ]²½oïý½ÿêÁ·þyöj\ÛÂC¨ëûCïý½™çÞkM﻽ÿ]²½oïý½ÿ^�·ÿÿÿÏþ’ÍK®ª}ßß³}زŸ~“£CÉïͽÿ]²½oïý½ÿcLwÿ'ÇkM﻽ÿ]²½oïý½ÿ}‘¿þ/Ϋ¸+Êk¨ÂkâýƒoÜâªï—ã²øªLHß³}ØâŸ~g¥¼÷﻽ÿÜã½ïïý½ÿ›üwþçÎkM﻽ÿ]²½oïý½ÿ}™¿þúÿª9êÛC¦Ã�oS³Lfß³}ØâŸ~gµ¼÷﻽ÿÜã½ïÒ¬ríÒ|7ÿ–ÏsêïͽÿÛó½oïý½ÿ&¿þÿÿÏþZêcË+ükâü…oÒºƒïØê³îÔëªï]òc‰×ÍrÝÊEÊùÖE‡]ô_lù·þÿÿòØï˽ÿ“ʽïïý½ÿ ¢¿þÿÿÏþZêcËQýCM×ËELå¿þyö{õjKò}-Ûêƒîî«r†QÛKNý«n^ª}¥èýŸ~\ºrÉ﫽ÿ]²½oïý½ÿ)7wþÿÿÏþX³jÍßÂk¶‘ãrOë«{¨[ý[Lîër†QÛKNïý½™×c-﻽ÿÛó½ïïý½ÿÀwþo‚H”¨Ø˜Á` ”H@ ^ ‰¤@ÓX�žRI­ŠÎ™ªP4¥œA[ŠTè”@Ì™dE‚5ÈLéDÓÚLŠT•pTªÈ@.ÚT¨ z†E r˜Õᢀ CÑHLÃH”dØ‘¨T¯ÐP8xK”O©%¦‰yL *|ŒÆrˆL r@Æèd�Ô r@®Š šÄ ä»@ šZ¦ Š- z¨ TDžFÉd’×tt¨IÚ,� h „ Y,ˆ H-ZÒh<±@ šZš ”˜@ @ ô@ ™lˆEÑj€~@ šZ˜ ”˜@ @ ô@ R18˜FÖ;’ 2ŠHi˜Å "¦Á’RŠ<-ýf@ šZ  A}@ @ @ @ ¦U˜¤ŠI "šUZ® IMž ’¨ÉúDÔ‚ê@ šZˆ ú„‰”x‚ H’Ãl  ™|@Tè ¨ TDœIX¤¤Åhx @ šZ¦ i4Gñ@ hªÌ *@ƈ¤ˆ yL¦Ôš’  rVÓ5e ïKL@M(ŒÍÐ`9Ä@ †A® ƒ`0@ ^ ’B¢z @ ™l¦Uh {�@ †AR\ Q€x @ ¦MR\ �@ @ žÒ謞 d4‚F ®O)@Ôè ’ 8u¨Ò9œÇÐp ôèJ‚SK@¯¥Rˆ 4%ŠFgT ¡R€šÈèJ‚SÖJ^‰¥@*J$Œ &,@9¥R ¾ÇèJˆÎÐrY@ ®AZ ” @ @ ú¦E¢œÏZ´’Sä|²TU„  ~@ ˆA¦ h«m9MA»@  MŒ V+@5@ ^ Ø"œÏZ´’Sá|€Ùä@ ¨S*\ � @ @ ZÅbX-úŽ 9l¬Î*-žÉr@­I�ŠÒ(˜Áhm @ ¦D ˆ H h+ƒ`0h ê¨@  MŒ —+�œ�éJˆÆd,Œ%…€oÜV4j´YM¦DР¾ÇèJˆÎКGéJªÆDtŒ%…€:¿ŸÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿyöC8•Óbͳî’ÛjÈêËkäÒËslüZÌïý½™çÖkM﻽ÿ]²½oïý½ÿêÁ·þyöj\ÛÂC¨ëûCïý½™çÞkM﻽ÿ]²½oïý½ÿ^�·ÿÿÿÏþ’ÍK®ª}ßß³}زŸ~“£CÉïͽÿ]²½oïý½ÿcLwÿ'ÇkM﻽ÿ]²½oïý½ÿ}‘¿þ/Ϋ¸+Êk¨ÂkâýƒoÜâªï—ã²øªLHß³}ØâŸ~g¥¼÷﻽ÿÜã½ïïý½ÿ›üwþçÎkM﻽ÿ]²½oïý½ÿ}™¿þúÿª9êÛC¦Ã�oS³Lfß³}ØâŸ~gµ¼÷﻽ÿÜã½ïÒ¬ríÒ|7ÿ–ÏsêïͽÿÛó½oïý½ÿ&¿þÿÿÏþZêcË+ükâü…oÒºƒïØê³îÔëªï]òc‰×ÍrÝÊEÊùÖE‡]ô_lù·þÿÿòØï˽ÿ“ʽïïý½ÿ ¢¿þÿÿÏþZêcËQýCM×ËELå¿þyö{õjKò}-Ûêƒîî«r†QÛKNý«n^ª}¥èýŸ~\ºrÉ﫽ÿ]²½oïý½ÿ)7wþÿÿÏþX³jÍßÂk¶‘ãrOë«{¨[ý[Lîër†QÛKNïý½™×c-﻽ÿÛó½ïïý½ÿÀwþ¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇjKúrIWëk¶ž£{¦ŸÓC¼üjK�Ó}gëE†ûÖs¨ïû½ÿÛó½oÒ¬ríJz·þçÇkM﻽ÿ]²½oïý½ÿ½�¿þyö[ ﻽ÿ–“½oÒ¬rí#¥¿þ§ÏkM﻽ÿ]²½oïý½ÿ½˜¿þúÿƒ9ÜÂk¦ª}ÝòK̪jûÓjÜÛÂC¨ïû…þüÖz‰ïë½ÿÛó½ïïý½ÿ~÷·þÿÿÏþêƒïÛÂrÊ×Ëj—êÛ{¤ë»CuÒ‹ï^òkéëEÊûÖs¨ïû½ÿÛó¬nÒ¼rí£}wþ{öš×]ëƒïêÛC¤ßósšÜêÅË^ª²ïíË}�ëû[ËYõ[ÏÖôEÈJ¡7ÿúÿƒ9ÜÂk¦ª}âCýêë½Yªz ^ü[È[óªïÊì[Ò¼ríÒý_*—÷þgÇkM﻽ÿ]²½oïý½ÿ=‘¿þÛÇ}œ²½ïïý½ÿ¦ ÿþÿÿÏþg½¼÷﻽ÿÜã½ïïý½ÿ^ÎþÿÿòØ’Ë}£ß³küÚ£j§”õ{(˜ËŸ~§¥kM﻽ÿ]²½oïý½ÿšæ7ÿÿÿÏþg¥¼÷﻽ÿÜã½ïÒ¼ríþ»þúÿj\ÛÂC¨ïûƒ¸.ÂìZÒ¼ríÒý_*þ?þúÿ{RÑ¢}O²}íZ²E®M¨¿þ�å@ †A\ ”¸@ @ ô@ R28˜Fé:\E‚¤O@LI}¤E8ŠÓИßc@ ‚Í”H^ J@ è ¨ TDœIX¤¤ÅhªÌ *@ÓäL�TÐ(a@ †A„ ê ”xŒ ød’Ôtt†AY˜ÕI @ÒYEžNØ”ZÌh1Ê‘x@‰/@ ›ˆEJˆÎʆ ê|’A4u�T*†EÑJ€Ä‘x@‰/@ Ø@Ì8œŠÌh¨Ã%} fh‘x@‰/R3j˜F:  x}@Òd|ŠT r‚H ¢¦ÕРöû‘x@‰/@ (ˆ iMŠÄ "¨Î zŠH™ŠTZ<¨ Ðx o‘x@‰/@ (ªÄT�T *¨Îx,@Ò´ŠUø¨ QD€4$‘x@‰/@ ê„Í$-žTI@EúŠRD˜F|œIÐ8 à!‘x@‰/@ hªÌá*€Ðf‘x@‰/R4J¦OÔ@0ˆ¼@ÎôtŠD™˜Á œÉР>k“V4j´ ¦MŒ  @ @ ¨Ó(}ˆ X}ŠLÐpm @ ¦D ˆ H h+ƒ`0h¾ÇèJˆÎÐ ê¨@  MŒ —+�çT@ ”E:, >UÅ|žÃhu¦ÒùLZ j‚E "žRZžÓÐ�XV4@µ †A® J@ @ 8}@Ôú¨Î$-žTŠb«ÐH«î9LÁ ax@ †A† Au€eC@ šZ¦ yL@ @ ¦/D-œIIM˜Á9ˆÎIMœÏIŒ Ê \Åh àV4@¶ ´Ó† Au€«Þ9MÐ *)@  MŒ W+ ÀH@ ¦M¤ ,@ @ ¤/,Š HÅœÒÄ �C( ¨Ã*-ª Iu@̈¤Œ *MÔ=@ ˆÁ¦ ƒ`4@ ^ žNØr‚L´t�C( ¨Ã%-  +)@  MŒ V+  N@ ˆÁ¦ ƒh²h?¿ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÇjKúrIWëk¶ž£{¦ŸÓC¼üjK�Ó}gëE†ûÖs¨ïû½ÿÛó½oÒ¬ríJz·þçÇkM﻽ÿ]²½oïý½ÿ½�¿þyö[ ﻽ÿ–“½oÒ¬rí#¥¿þ§ÏkM﻽ÿ]²½oïý½ÿ½˜¿þúÿƒ9ÜÂk¦ª}ÝòK̪jûÓjÜÛÂC¨ïû…þüÖz‰ïë½ÿÛó½ïïý½ÿ~÷·þÿÿÏþêƒïÛÂrÊ×Ëj—êÛ{¤ë»CuÒ‹ï^òkéëEÊûÖs¨ïû½ÿÛó¬nÒ¼rí£}wþ{öš×]ëƒïêÛC¤ßósšÜêÅË^ª²ïíË}�ëû[ËYõ[ÏÖôEÈJ¡7ÿúÿƒ9ÜÂk¦ª}âCýêë½Yªz ^ü[È[óªïÊì[Ò¼ríÒý_*—÷þgÇkM﻽ÿ]²½oïý½ÿ=‘¿þÛÇ}œ²½ïïý½ÿ¦ ÿþÿÿÏþg½¼÷﻽ÿÜã½ïïý½ÿ^ÎþÿÿòØ’Ë}£ß³küÚ£j§”õ{(˜ËŸ~§¥kM﻽ÿ]²½oïý½ÿšæ7ÿÿÿÏþg¥¼÷﻽ÿÜã½ïÒ¼ríþ»þúÿj\ÛÂC¨ïûƒ¸.ÂìZÒ¼ríÒý_*þ?þúÿ{RÑ¢}O²}íZ²E®M¨¿þ¿�ÿÿÿÿÿÿ�ǽ÷ê[h“û«î²}‡)£k éýk.’ìZÒ¼ríÒý_*jwÿÝÇ_K"ÿ"ÆCìSË}O²s¶þÄcyÝÃ}�ÛóìKÒ¼rír<÷ÿ§ÏkM﻽ÿ]²½oïý½ÿ½˜¿þÿÿÏþ“Ńní«sÍQò ¯Ê½×’Å}ÃèýŸ~[ÃKæïÛ½ÿ]²¬nÒ¼rí‹é÷þúÿª9ØÂ}gÚÃsJ_ëC¶ëëk†ë«Cïý½™§×kM﻽ÿ]²½oïý½ÿMÿ÷þÿÿÏþ’ÍK®ª}ß[³{Žß³}زŸ~“£CÉïͽÿ]²½oïý½ÿÌz7ÿ^ÏrÍïû½ÿ]²½oÒ¼rí *¿þÿÿÏþè½}e*ü})\£…£_â�öÂ�oYăn­üŸÛ×síÒß_*‰7ÿÿÿÏþÒ[¼Ôý}¨ÜßZÝ×_öTþÿÿÏþÛÃCŽnüŒØ¡ôkëëŒv­üŸ[ÞCŽYß_NÆ­·ÿ*ÎCE^üsäëËcN_ê[¼âý•.Ôü[ç½²öYß_NWB·ÿyöC8•Óbͳî’ÛjÈêËkäÒËslüZÌïý½™ïý½ÿïýòÚï˽ÿÛó½ïïý½ÿ/ÜwþzöC¦ÃÅK^³ŸÒ¼ríÒý_*1%þçÏC�^ÛKÍßõ[ô–õŸÙ×_Š„þ>v‘x@‰/@ ˆ@ÓX@Îè,ªÏHuŠÒ "@Έ¤�Ön‘x@‰/@ [ŠTè”@̘4ˆÌÐpö ‘x@‰/R59œÇÔX0ê„Í$-¦I ’Óš¤\Eh탑x@‰/@ 9œÇèt`® bšUZ’ šŽEI ŠÖÐp©úH”bØ ¦M„ X”Äø¨E„’LTtªBh4@Òˆ‚ÒH\Òh Ë@ ˆÁ¦ ƒf5hºo@  M¤ [$1ù@ƈ‚ÒH@Ò4M˜P4­’Så<  Ë@ ˆÁ¦ ƒj5hØ)@  M¤ [$4ù@ƈ‚ÒH@Ò4M’MZu¦ yL. Ë@ ˆÁ¦ ƒl5hš}@  M¤ [$j3JŒÉ9¤A: ¤Ešˆ 9,‚Í b’OEu š@ ¦M\ Út¨SJŠÔD�žF’¤ID�ªN(l\Òhv@@  M¤ [$1ô@ õtŒ H-@È[t@Tˆ‚ÒH\Òh=}ÿ@ ´Ó¦ yL@ @ ’/2¤ID�žNØr‚L´t�C( ¨Ã$-¦I¨(ÁJ€µ©V4@· ´Ó† Au@ @ @ 8@Ôù’D™¤@Î*¥\Åh«Þ9MÐ *)@  MŒ W+ q@ ¦M¤ ,@ @ ¤/,‚ DtŽIút@EÉ ¤ Ø,œÉèL† D†AZ¤Sìï@  MŒ V+@‰@ @/ @Έ¤Š HÅœÒÄ ’FÈ,. QSV4@¸ †A¦ yL@ @ ’/ 2 ÎD­¦IJŠU bžÔT”n7v»@·äLŠMúl\Yh]ï@ ‚ÚJ@ @ ˜|’ u@Ô4M‚F8e@¬I�ŠÒ¨žÒ™š Ù,²ÒÐp«l9LC X@ †ARˆ H $`@  MŒ —+@‰@ Š/šÄ.çT@ ”E:, îU|žÃhu¦ÒùLZ j‚E "žRZžÓÐ�>