YS ; UPDATE 8/15/72 ROS3.SYS ; UPDATE 8/1/72 ROS3.SYS ; UPDATE 7/31/72 ROS3.S„÷ X÷€η÷ H ‡÷ vÿÃüÿ÷ ‚ÿ� ÷ „Ãøÿ÷ zÃÀÿÀ0÷Uô"À@‡7 h· #& W!@ Î5÷UÔ"ÎU÷ k~§�fSz×.&÷ ˜ 3óêôs ÷ bM0•ó Ž  &W.LM³ ×,ÄP~à³.9€˜:¯”̵;@4Þ@{7@H.¼M:@€}@""ø€@›:à_@«:<}@�._M€Q@ee;@YeÞ@hf€p@�fSz@Ñ.�fTz@[gÐ4@9mQŠ@imR@�m„@Ê.Tq€@[qj@þv@@@z(d@ƒ…4f@Ä.L©C @(> E„:húäf„:h\)€Êh–.)€bh9€p:h9€ahŒ4²¶�(^)€üXh÷¯”‘÷æpÿ€àˆà�à˜à à¨à°à- çtÿ„àŒà”àÌ�`Ì:Î~ ßVZ€ßà‚÷ I÷ ÚI‡@k€{€{ ÷ tÀâÿ6V2Š*rœ · p~x· ¡ ¡ r†Àeçæd÷ !‡À0€ ŠÁ‹@Ð7 J÷J÷ J ÀÀ þ÷ öI€‡7 H7 F7 D7 F7 >7 <À>À À �~ðÀpÁà0Š› ñ†ð•*0Š á À ð7Š#ÀÁZ!ÙÀ ü‡w ,À $  ¤$ü‡Áw`À¼$HÀe ø$ú‡Àþ$Š %ü‡Àþ$ò~hÂÿÿ�� ÿ$ü‡Š %ü‡À %P� %ü‡w à‡ŸÆdê÷ þ÷ .; UPDATE ROSBPT.S02 5/16/73 ; UPDATE ROSBPT.S01 5/11/73 .TITLE ROSBPT ;*********************************************************************** ; * ; R O S B P T * ; * ; PROGRAM IDENTIFICATION: ROSBPT * ; .ër¯”̵;@W„!@t^Ì:@y.�fSz@ërt!@ërt^@€ƒ±@ë¨K"@ð.L©C @(ª„!h@ërh`¯Œ(»Ì:h¯”ô÷æ.fæêô—-÷µ@æ÷ �±$"êô€ƒ±ë¨K"̵; �fSzU"&·ö·êô�‡6 ùºW„! L©C êô`¯ŒW"ÀÈ ß@ ßà7 ‡F"t^Ì: @W„!@$ œà¤à¬à´à  årÿ‚àŠà’àšà¢àªà²à ãvÿ†àŽà–àžà¦à®à¶à÷ á&0DXl€”¨½*0DXl€” ¨Ñ0DXl€”¨¼*0DX l €”¨¼ŸDXl€”¨¼Ðz*DXl € ”¨¼Ðý0XêFXê0A00 ÷T.úê÷àöêßüÿÁà÷š(pêwnê÷ü%jêwhê÷Ü9„ê÷à€êß”(~àßà–÷> ê÷àœê÷ÊF ê÷àê÷Ðê÷àÌê÷–/ê÷à0üé÷ ÿ÷ ~þ÷ ÞýÚé7 Ôé7Š�)æ¨?÷º?€)÷ |÷%f)ü÷•s)7ŠæP@÷ b÷%Ó~Xô)ü÷•û7Š÷væd÷ B÷%èü÷•õ÷ Ðý      ß•€ëw¶ ÀÁÀô‚~ÁàôÀ‘Âe€~÷ Þ÷€$ÞŸ zÿ‡R~ÐX‡Ž‡ÿÿæþÿŸ· ôÿ&ææ&B„&�*ô•*Ä ÷àÝÒÿ&†÷ p„7 ß50þÿ3ã£Ö £´÷¦ÿ°Ý„Æ ß^~Hþÿæ¦f&æ’Ýæ�ÝæŽÝÀ&&&& * ; PURPOSE: THIS MODULE IS DESIGNED TO SUPPORT ROS TASK DEBUG * ; PACKAGE. THIS REQUIRES TWO SERVICES. * ; 1) AN EMT, CALLED BY A TASK'S DEBUG INITIALIZATION, * ; TO DECLARE THE LOCATION OF THE TASK BPT ENTRY POINT* ; 2) A BPT TRAP HANDLER TO DECIDE WHEITHER ROSODT OR * ; TASK DEBUG IS BEING REQUESTED BY THE 'BPT' JUST * ; .@ö5À÷ ¦F €    &† ÎUðj W„!È.fÎEææ^Àœ”vÿß‹tÿý€ùÑ W„!ërt^œÊ&Œß‹tÿý€€Ÿxÿþ BPT ERROR kó Xê1XêD-D0XêXêXX0XêXêll0XêòXê€ñ€0XêÝXê”Ý”0XêÈXê¨É¨0Xê³Xê0A00Zb¾ZbD´D0Zb©Z& ßþÿM¦)ƒ „ßF ´÷LÿVÝæ ó÷ FÿÀ(     ·>Ý·8Ý·2Ý€�‚Ÿ·à~Àÿ…·•ÿ·PP÷50 ÿ=CDwúþwøþFÅ4÷ <3õ�êþ*Åâþ÷ æþ(÷­*$ƒ÷50Ôþ·Æþ·ÄþF ·ÄþŽ F ·¼þ÷U€¶þ÷rç¸ÜƬþæ¢þJ~8æœþæ€æ÷ Øw …Á7 Ðõ•*ÆÊæ¶÷ wæ ƒ„Ö …—#ˆ#Îe&€tüÿ7XÜ€À À ÀEÀÿÀU 6€‡&€|~°tüÿ74Ü€À À ÀEÀÿÀUÀ6€‡&f€ÁWtüÿÁEñÿAàôWt€ € ÀEø`v�€‡&f€#À æÚÛ&†÷ lÿ€�ÁWtüÿÁEñÿ EXECUTED. * ; * ; USAGE: THE LINKAGE TO THE EMT IS AS FOLLOWS * ; CALL * ; MOV #ADD,-CSP) ; ADD OF DEBUG 'BPT' ENTRY PT * ; EMT ROSBPT * ; * ; ; UPDATE TSTBUG.S03 5/17/73 ; UPDATE TSTBUG.S02 5/11/73 ; UPDATE TSTBUG.S01 5/10/73 .TITLE TSTBUG ; ; TEST TASK FOR DEBUG ; ; ; ; EXTERNAL DEFINITIONS FOR TASK RELOCATION REGISTERS, ; CONSTANT REGISTER AND LOG. TTY DEV. NO. ; .DEF $R0,$R1,$R2,$R3,$R4,$C,$TTY ; ; EXTERNAL REFERENCES ; .REF DEBUG ; ; TASK EQUATES ; R0 = %0 R1 = %1 R2 = %2 bX X0Zb”ZblŒl0ZbZb€x€0ZbjZb”d”0ZbUZb¨P¨0Zb@Zb¼<¼0Zb+ZbD´D0\( Û\( XÖX0\( Æ\( ~(@`$Wt·´Û€€ € ÀEø`v�€Ž‡¦÷ xÿ¶õ&f€&À &†÷ ÿ€�ÁWtüÿÁEñÿ@`7$`Û€ÀEàtúÿ7`PÛ¶@~ öEÀÿöU �€Ž‡¶ø&f€&À &†÷ Úþ€�ÁWtüÿÁEñÿ@`7$Û€ÀEàtúÿ7`ôÚ¶öEÀÿöUÀ�€Ž‡¶[~ø ÿÿÿÿÿÿÿÿÿÿ��‘’“”•–—˜vª ~� RETURN * ; MOV (SP)+,TASKNO ; TASK # OF CALLER. 0 IF ERROR * ; * ; THE LINKAGE TO BPT TRAP HANDLER IS VIA A JSR DURING IPL.* ; * ; JSR PC,BPTIPL * ; ALL OTHER LINKAGE IS VIA A 'BPT' INSTRUCTION. * ; R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 ; ; ; EMT NOS. FOR ROS PROGRAM CALLS ; TTYOUT = 11. TTYIN = 12. LPRNTR = 21. NOCKPT = 24. EXIT = 4 ; ; DEVICE CODES ; TTY = 0 LP = 3 .PAGE ; ; ; TASK HEADER ; TSTHDR: .WORD 1 ;THREAD .WORD 6 ;TASK NO. .BYTE 120 ;SYSTEM TASKlÂl0\( ±\( €®€0\( œ\( ”š”0\( ‡\( ¨†¨0\( r\( ¼r¼0\( ]\( Ð^Ð0\( H\( XÖXÿÿÿÿÿÿÿÿ– _Š_� `‰`Œ×~^~€æ~øn~p * ; METHOD: THE EMT INSURES THE CALL IS LEGAL AND, IF SO, SAVES * ; THE PASSED, TASK VIRTUAL ADDRESS. THE TASK NUMBER IS * ; RETURNED. IF THE CALL IS ILLEGAL THE RETURNED TASK * ; NUMBER IS ZERO. * ; THE IPL ENTRY SETS UP THE BPT TRAP. THEREAFTER, ANY * ; BPT TRAPS WILL FIRST COME TO IT. IF THEY ARE FROM *  WITH DEBUG .BYTE 4 ;PRIORITY .WORD TSTBUG-A ;TASK ENTRY .WORD 0 ;MAX TIME .WORD 0 ;TIMER .WORD 50. ;STACK SIZE .WORD 5. ;CPU STATUS .REPT 20. .WORD 0 .ENDR .WORD 0 .WORD 0,0,0 .CSECT DBGTST A: .WORD 250. .BLKW 50.-1 .PAGE ; ; ; TASK ENTRY ; TSTBUG: EM aˆa‹ b‡bŠ c†c‰ d…dˆ e„e‡ fƒf† g‚g… h�h„ i€iƒ jjz l}lx n{nõ~è}~`~Øw |æ׿××þÿ& „u6 7!„üp‚Ÿô‹* ô¥*kô‹›göÿÿÄ †„ — [ô•*ß�þÿ��� W  Á• !3~PQ†¦÷ *ú‚r�ŸÊ BÁ Á Ä f:÷ 6ú†1†:„ ô•; A TASK, CONTRO GOES TO THE TASK'S DEBUG. OTHERWISE * ; CONTROL GOES TO ROSODT. * ; TASK REQUESTING DEBUG WHICH DO NOT HAVE IT (BIT 6 OF * ; ACESS CODE) WILL GENERATE A 'BAD ENTRY' IN ROSODT. * ; ROSODT REQUESTS WHEN ODT (OR OTHER ROS BPT HANDLER) IS * ; NOT PRESENT WILL CAUSE AN ERROR MESSAGE AND THEN HALT * ; THE SYSTEM. T NOCKPT ;DISALLOW CHECKPOINTING SCC ;EXERCISE TRACE PRINTOUT BY CHANGING CCC ;COND CODES AND REGS CLR R0 CLR R1 CLR R2 CLR R3 CLR R4 CLR R5 MOV #111111,R0 MOV R0,R1 MOV R0,R2 MOV R0,R3 MOV R0,R4 MOV R0,R5 TST -(SP) TST (SP)+ NOP v pypt rwrr tutp vsvn xqxl zozj |m.| !"w æêôæìô÷ Ð ÷ ’$ !"[gÐ4êôìô .¢|÷ tñ‹_&Ÿ•þÿ¬·ìô·êôw ލ *4Š›2 ²7­ ”û†7� ŒûÖ ß�þÿ·@Ö·:Öw ¸ö ¶Æe‡öþÿ½~ȶÆeæ÷ HwvŽ Ž Ž Ž Ž Ž Ž 6 ¶×æ&&f¦÷ –-€ƒ•„À Âç妶¶æ—þÿŸ÷ ôúl7 îúŸ•þÿ÷åðúÿªÕ[~@êúæ¦f�vÂÈú ¦†÷ &ù‚² 6 €6Á‹€÷U€¦ú²„×þÿŸ7 Žúò��ú7 ŠúÆ�úò„ú 7 ~úÊÁ ô•*!H~¸!‡ô•*ß�þÿæ$Õ&&÷ 3€·Õ�ô•*�œÁ Á Ä J81†:1†8ß�þÿ·æÔHŸ•þÿŽŽŽ‡æþÿ& ÷ øþw4—þÿŸÀöù!&÷ Ñ~0 Rø€1Š*7 àù7 Øù * ; * ; PROGRAMMER: 53 * ; DATE: 10 MAY 1973 * ; CATALOGUE NUMBER: * ; REVISION: * ; * ;********************************************************* NOP NOP ; ; TYPE MSG TO OPERATOR ; MOVB #TTY,DEVICE ;TTY DEVICE NO. TO LIST MOV #MESG1H,BUFADR ;MSG BUF ADDR TO I/O LIST MOV #MESG1E-MESG1,MESG1H ;NO. CHARS TO BUF HDR MOV #IOLIST,-(SP) ;TTY OUTPUT REQUEST EMT TTYOUT TST IOERR ;ERROR? BNE . ;YES ; ; GET NAME FROM TTY KBD ; MOV #NAMBFH,BUFADR ;GET IMPUT BUF ADDR TO HDR MOV !_ìô"êô&hf€p‹.ȇ,ˆ ò¬î·ìô·êôw öþÿþìô êô$hf€p.î& ÷ w±Š_5lõêôpñ‹^Ѐñ•^}* 9mQŠ€}_lêôp ^(^Œ.Ÿ•þÿ÷ jÊw æêôæìô÷ >ÍÄ÷ è÷ 2[gÐ4êôìô*:àñ‹`¶±Š`5nõêôrñ‹^¬€1Š^Ül*``nêôr^"^4²¶�º,w À  ü‡ÁwÀHÀe |,[gÐ4  P,"7 Úù7 Øù0 ÆØùW  ‡ñ‹› ±Š*·�–ßf÷ ^/wâñŠ*ûw ä€P7 þùM‚æ—þÿŸœ*Á yž !!!!!² !Ì l~¨ Æ !!!Ì Ÿ“þÿ&÷ ªŸÖ . 7^ù) ‡ð‹›ð•ýÿ*ð•*Ÿ“þÿ&&÷ ê2€Ÿð•*�Z!W"Âåø1f÷ Ÿ•ˆ~ !þÿw Fއccc,!Lf|. afœg¸ ì"2$>&L(f &¨x†”¨°ÂÐⱊbW¬bH†@q.x†” ¨ °ÂÐâbb.ÆlwpêôD&~":¡2 :¡2 :&÷ ‚ö„Lr:¡2 :¡2 :É€� †1 ð‹›ð•*Ÿ“þÿ&&÷ p1€ Ÿ0Š*Ÿ•þÿv·jÒ·dÒw 7~ˆ"⇅ … … ñÅ ð•þÿ*ìw ¾æDÒ×þÿ& „K7!Î÷H‚Ÿô¥*Eô•*!‡ß�þÿæÒæ�&&÷ V0‚ƒ•„·Ò -Ä †¦÷ ˆõ…Í ü~#A�Á Á f:÷ tõž±:„ ´Š*ß�þÿ¶·ÂÑw @ö އöþÿæ÷ Þûw Ž Ž Ž 6 ä˜÷ ÆöÄÊöÄ Ä Â8„`ßÂ`Ê ![~x#û—!÷ÿÿ¨ö˜äþ…Õ ¦÷ êô�J�¡ ¡ Bò•*wœtö˜ÉCÃeÄ€ÿÔÔÔÔÔÔÔÔÄ ÿ'PSR "T" BIT ; TPB = 177566 ; ADD. OF TTY BUFFER REG. TPS = 177564 ; ADD. OF TTY STATUS REG. DSPREG = 177570 ;DISPLAY REGISTER ; ; EMT HANDLER ; ROSBPT: MOV R1,-(SP) ; SAVE R1 .IF NZ $KT11C MOV $KPAR5,-(SP) ; IF HAVE KT11C, SAVE KPAR 5 .ENDC ; CMP 2+2*$KT11C(SP),#TSK.PC ; CALLED BY A TASK? BNE ROSB00 ; NO BITB #DBGACS,$ACESS(MOV #IOLIST,-(SP) ;PRINT NAME EMT LPRNTR ; TST IOERR ; BNE . ; EMT EXIT ;EXIT .PAGE ; ; DATA ; .BOUND IOLIST: .WORD 1 ;THREAD DEVICE: .BYTE 0,2 ;LOG. UNIT, EXIT TYPE .WORD 0 ; .BYTE 0,0 ;ERROR TASK, PRIORITY IOERR: .WORD 0,0 ;ERROR PARAMETER BUFADR: .WORD 0,0,0 )twxìô´  -†m=�"lp êôtxìô(Ð.ì­ ý• ñ• fwÔf÷ Ö =ŠÕf $¼M:Œ.=ŠœÄñ‹^ ÷ ¬‚‡÷ ƒ^f.8Øw && ÷ w @lwpêô J$ [gÐ4›:à_hf€pl p"êôà.^ôŠ&÷  Â÷ þ1Š^÷  x ÄeD«:<}Tq€^$xÉ.„xÄå xŸþÿ±Š^&÷ €õêô/xx^"�fSz*ÔÔÔÔÔÔÔÔ· ~ð#:öñ A@Cf Î ßU0þÿ† æÀfŸ÷ö·üõò•* ·†òõwœêõwœèõñ ABCD fÎE€ÎeßU0þÿ† f÷‹¼õ€M~h$ÎUÀ÷E€°õfEEw$dÐÅU€C @ u õEÿ Ÿ¼pÿtÿrÿvÿ¼$Ð$ä$0ø$Š-0ú$¿~à$,0ü$È-ÿG H I J w 0 æ¶Ïæ´Ï÷ Ð ÷ |÷ tñ‹ÿ$&Ÿ•þÿ¬:~X%·ŽÏ·ˆÏw  އ,ˆ ò¬î·jÏ·dÏw â öþÿ& ÷ Œùwºý±Šÿ$5 %õ+ ; DEBUG IN THIS TASK? BEQ ROSB00 ; NO .IF Z $KT11C ; MOV ACTIVE,R1 ; GET ADDRESS OF TASK HEADER .IFF ; MOV ACTIVE,-(SP) ; JSR PC,PPASV5 ; MOV (SP)+,R1 ; .ENDC ; MOV 4+2*$KT11C(SP),DEBUG(R1); SET ADD. OF ENTRY IN HEADER MOV 4+2*$KT11C(SP),DBGENT ; SET ADD. IN SLOT TO SAVE MOV $CTASK,4+2*$, ;BUFFER ADDRESS ; ; MESSAGE TO OPERATOR BUFFER ; MESG1H: .WORD 0 .WORD 0 MESG1: .ASCII /THIS IS TSTBUG C1/ .BYTE 015 .ASCII /TYPE YOUR NAME AND IT WILL BE PRINTED ON THE LP!/ .BYTE 015 MESG1E: .EVEN ; ; OPERATOR NAME INPUT BUFFER AND LP BUFFER ; NAMBFH: .WORD 0,0 NAMBFD: .BLKB 50. ; ; DEBUG INITIAL REGISTER ASSIGNMENTS ; $R0 = TSTHDR $R1 = TSTBUG $R2 = IOLIST $C -(êôu.ªp5l1Š_ÄexŸ•þÿ&÷ €õêô pl_x"�fSz(êô.Ðr5n÷ ¬w1Š`ñŠ^Ÿ•þÿ÷±Šbf÷ \$rn[qj`^"b&p.öÖ @nwrêôBvwzìô¦ÎEàÊ5 Ž,ù$¼M: nrêôvzìôk.†Ö ÛN÷ Ö wÔþñ•f1ŠbÙý• =¼M:f"b@.Bñ•fÇñ‹iý• ñ•f½1Šiý•¼ fif$iµ.hUñ•f±Š.DÏ%ñ‹þ$Ѐñ•þ$Ÿ•þÿ÷ jÊw ž æ$Ïæ"Ï÷ >Í—~Ð%Ä÷ è÷ àñ‹%¶±Š%5%õüÎ%ñ‹þ$¬€1Šþ$Üw äðÁþÿÁEðÿEÅ æ€ñ‹%D¸$ô• Ÿ•þÿñ•%Dœ%Ä |<&1Š%wJX&Œ'Ò'Þ'ì'( ~H&(&(4(H(P(b(p(‚(±Š%W¬%H†@ %w%|ÎD%w%tδ  -†m=�¦$­ ý• ¦$ñ• %wÔf¸$÷ $ðÖ =Š $=Š¢$œÄÈ~À&ñ‹þ$ ÷ ¬‚‡÷ Øw € && ÷ ºw ~ @ %w%òÍ ôŠ›&÷ :- Â÷ þ1Šþ$÷  % Äe%Äå %Ÿ>~8'þÿ±Šþ$&÷ @ñ€õ Í%5 %1Šÿ$Äe%Ÿ•þÿ/KT11C(SP) ; SET TASK # UP FOR RETURN ROSA00: .IF NZ $KT11C ; MOV (SP)+,$KPAR5 ; RESTORE KPAR 5 IF KT11C IN USE .ENDC ; MOV (SP)+,R1 ; RESTORE R1 RTS PC ; RETURN TO CALLER ROSB00: CLR 4+2*$KT11C(SP) ; SET ERROR CODE BR ROSA00 ; GO RETURN .PAGE .CSECT .BPTPL ; THIS CODE IS PART OD IPL. ; ; BPT IPL ENTRY ; BPTIPL: MOV #ODTIPL,R0 ; = TSTBUG $TTY = 0 .END TSTBUG 1b±ý•^ñ•fö}œdñ•â" fbf$d&Œ.Žfﱊbý• ñ• få1Šfwþý• cf bf fâ.´1Šbñ• fŒý• ñ• f…1Šb@nwÖ"bff"b&n4.Úrêôw$þñ‹jwêþý•ñŠjwàþw Á�� rêôjj&þv@].þÿœÁEðÿEÅ Dô• @nwrêôBvwåþÿn r"êô&vò.&zìôÊ €fæ÷ Ö DŸ+ÄÅ€¡ÿu2&÷ ñ€õzÍ%5%÷ ¬wð1Š%ñŠþ$Ÿ•þÿ÷±Š%f¸$÷ :ïÖ @%w%FÍB%w%>ͦÆ~°'ÎEàÊ5 Ž,†Ö ÛN¶$÷ ïÖ wÔþñ•%1Š%Ùý• ¦$ñ•%Çñ‹ %ý• ¦$ñ•%½1Š %ý•U¦$ñ•%±Š%±ý•^¦$ñ•%ö}œR~((%¦$ñ•%ﱊ%ý• ¦$ñ• %å1Š%wþý• ¦$1Š%ñ• %Œý• ¦$ñ• %…1Š%@%w%lÌw$þñ‹ %wêþý•¦$ñŠ %wàþw FîÁ�b~ (\לÁEðÿEÅ D¶$ô• @%w%*ÌB%w%"ÌÊ €f¸$æ÷ úíÖ DŸ¤$+ÄÅ€¡ÿ¡ z¡ *¡-ƒÃeƒl¡.ñ‹%B¦ÎE~)à–,I†²  ‘Ê €3GET ADDRESS OF ODT IPL ENTRY BEQ BPTI10 ; ODT NOT IN SYSTEM JSR PC,(R0) ; GO TO ROSODT TO SETUP AT FIRST BPTI10: MOV #BPTENT,@#14 ; SETUP"BPT" TRANSFER VECTOR AT MOV #340,@#16 ; LEVEL 7. CLR DBGENT ; CLEAR ADD. OF TASK'S DEBUG 'BPT' ENTRY RTS PC ; DONE WITH SET UP. .CSECT ; BACK TO UNAMED CSECT .PAGE ; ; ; BPT HANDLER ; BPTENT4. €Ï¯”ÊX„@±«@²«@Æ.ô«@œH(@®«hW €(x8©hdŒ¯«hd°«hèW €(d|÷æ.Pd2Ø"&´W €ê úø d….dˆ¿¯      ÀI’æ Ö  �.Š  ÷•V÷úZ÷CZæè ˆ÷ Fÿ÷B úè(Bm.°B÷2Šæè ˆ÷ .×-(5zìôimRå.L¡ z¡ *¡-ƒÃeƒl¡.ñ‹cX (ce.rB¦ÎEà–,I†²  ‘Ê €Ê5@Ä =‘ (Â.˜Có• Ê5@@wÄ• ñ•fîý•^é[qj f(A.¾ñ•f2 ïò äò Ê Þ�à ñ‹c ±Šcf"c(ch.äÄ•\ñ•fñ’dÐÄ’Î1Šc²  ‘1‘dÄ•\ fdc$dö. ñ•fÁñ‹eÀ±Šef÷ Ö ¸¦ÎEàÊ5èfe6Ê5@Ä =‘¦$C¶$ó• Ê5@@wLîÄ• ñ•%îý•^¦$ñ•%2 ïò äò Ê Þ�à ñ‹% ±Š%Ä•\ñ•%ñ’§~�)%ÐÄ’Î1Š%²  ‘1‘%Ä•\ñ•%Áñ‹%À±Š%f¸$÷ íÖ ¸¦ÎEàÊ5 Ž,‡wæýÖ ½Š $±=‘¦$ñ• %f¶$÷ ÚìÖ ¦Ä•=‘¦$ñ•…~*%ò€÷ ¨È /Ÿ•þÿœw H/‚Á W<12><12> ; .ASCII /BPT ERROR/ ; .ASCII <15><12> ; .END ; T 21. ;LP PRINT REQUESTS ; ; EXTERNAL REFERENCES FOR TASK RELOCATION REG, C REG AND ; LOGICAL TTY DEVICE ; .REF $R0,$R1,$R2,$R3,$R4,$R5,$R6,$R7,$C,$TTY ; ; EXTERNAL DEFINITIONS ; .DEF DEBUG ; INITIALIZE ODT ; USE O.ODT FOR A NORMAL ENTRY ; USE O.ODT+2 TO RESTART ODT - WIPING OUT ALL BREAKPOINTS ; USE O.ODT+4 TO RE-ENTER (I.E. - FAKE A BREAKPOINT) DEBUG: JSR 0,O.SVR ;SAVE REGISTERS (MAINUv .šó•ÿÿ^3Š_3Š` Ÿ•þÿõ}�fæ÷ # ^ _` (imRß.ÀÖ 3Šg‡ó‹hñ³Šh÷ ì×-,÷æ÷ Üghh&R.æ‡Á�j÷EÅ =бŠi7ŠZ÷@nwrêôð' ""ø€in"r$êô]. ý•^ñ•f‡¦öþÿŸ‡f&Á�,÷Á \ fe2 � ±Šj„�‡Å j~óV€ ·tÍ·nÍ·hÍÂàô°,°.°0·xÍ·rÍ·l͘‚€‡¦&æžÂŸæÎç÷ .æ€÷(Íð÷‚Â<Íð|Â*˜Àå@6]~x2·l€‡¢ £ ¤ ¥ ¦ „2†2ÿÿÿ²2÷~ð2@�*j�k�o�‡~h3æXLY SP) MOV #O.UR0,SP ;SET UP STACK MOV #O.BRK,-(SP) ; PROVIDE BPT/T-TRAP ENTRY POINT TO ROS EMT $TDBUG MOV (SP)+,R3 ; GET TASK NO. MOV #O.IDT,R2 ; ASCII TASK NO TO ID MSG JSR PC,BIN2O3 MOV #3,R0 O.TSKN: MOVB O.IDT-1(R0),O.CRN-1(R0) ;ASCII TASK NO. TO PROMPTER MSG SOB R0,O.TSKN MOV #O.RELT,R2 TST #$R0 ; SET RELOCATION REGISTERS AS SPECIFIED Z~à3n~X4õ~Ð4}~H5*3ÀêÂêÄêÆêÈêx5<d‡ˆ5[.ÊX„¯”8©@®«@¯«@U.°«@±«@²«@³«@´«@«.µ«@ô«@œ@(DÊX„h~(~ ÷~h.~7Æ Ææ.=ˆƒÂ ÷ 4 À0œ © ~ÂÍ . " $© 7.¤8× Ê× ò× ò× f.8®«®«¯«¯«°«$°«æ,Êò× ò× ò × !*±« ±«²«²«³«"³«%\ BEQ O.RR1 ; BY TASK MOV #$R0,(R2) O.RR1: TST #$R1 BEQ O.RR2 MOV #$R1,2(R2) O.RR2: TST #$R2 BEQ O.RR3 MOV #$R2,4(R2) O.RR3: TST #$R3 BEQ O.RR4 MOV #$R3,6(R2) O.RR4: TST #$R4 BEQ O.RR5 MOV #$R4,8.(R2) O.RR5: TST #$R5 BEQ O.RR6 MOV #$R5,10.(R2) O.RR6: TST #$R6 BEQ O.RR7 MOV #$R6,12.]Ì�`Ì:Î~ ßVZ€ßà‚÷ I÷ ÚI‡@k@{@{ ÷ tÀâÿ6V2Š*rœ · ð~x· ¡ ¡ r†Àeçæd÷ !‡À0€ ŠÁ‹@Ð7 J÷J÷ J ÀÀ þ÷ öI€‡7 H7 F7 D7 F7 >7 <À>À À �~ðÀpÁà0Š› ñ†ð•*0Š á À ð7Š#ÀÁZ!ÙÀ ü‡w ,À $  ¤$ü‡Áw`À¼$HÀe ø$ú‡Àþ$Š %ü‡Àþ$ò~hÂÿÿ�� ÿ$ü‡Š %ü‡À %P� %ü‡w à‡ŸÆdê÷ þ÷ .^ÿÿ&À@&À€& æ*¿i~À5æ(¿f¦æ&f�¶æ"ÊŸÉ xŸ•þÿ1�ÀDœ7!vøk‚Ä n.ÅÅŠeÅ€ Bœ`— ]€ BœYµ „2V€ Dw¾¾N€ÃE€p~86× /H€ ­‡B‚W¬>1 4 @À ž2æ˜ÉŸµ ¬2†µ�¬2  ƒ`f÷ Râ„æ÷ $â  —-ÜGÄãñ ³Š›°  25Š­2Ÿþÿå~°6 5ñäþ ñ< fæÖþ÷ àÖ wtwxw€wÌœ2Ó$Áýf÷ –á�p¢2Dwî½0¤2ð佦2ðཨ2ô ãK�Â*þ2 5+Âe úù~(7Å Bf5À  Àå �ƒ ûÀe 1Ðò Àƒlt°2… ôô<ôÕ@_,îò × ò× ÷$ÿ× Ó*´« ´«µ«µ«8©"8©.÷•" Ä Ã w B 7ŠÌ 7ŠÉ ÷•ÿÿÅ wSô«@œ ô«@œ  ‡.8Þà B÷‹½ ? „ &DCƒcà ÷˜ w  w a.^– „·Š� w    %  7Љ Är „ ‚ `.„¦&w t „‚À•\w v wlw Œ �Ä úfš.ªw H ÷•6 €w F 7ŠE w~wrw b ÄË  Ú &Ë ò.Ð Ä%Ý û‚ÀEøÿÄ Äe‚ w~ÄåÄ ÷Àø ÁÕÝ  Ä ×`(R2) O.RR7: TST #$R7 BEQ O.CREG MOV #$R7,14.(R2) O.CREG: TST #$C ; SET CONSTANT REGISTER AS SPECIFIED BY TASK BEQ O.TTYD MOV #$C,O.CNST O.TTYD: TST #$TTY ; SET TTY LOG. DEV. NO. AS SPECIFIED BY TASK BEQ O.ODID MOVB #$TTY,TTY O.ODID: MOV #O.ID,R4 ;TYPE ID MOV #O.IDND,R3 JSR 5,O.TYPE O.RST1: CLRB O.S  ;DISABLE SINGLE INSTRUCTION FOR NOW CLRB O.TRC ;DISa÷T.úê÷àöêßüÿÁà÷š(pêwnê÷ü%jêwhê÷Ü9„ê÷à€êß”(~àßà–÷> ê÷àœê÷ÊF ê÷àê÷Ðê÷àÌê÷–/ê÷à0üé÷ ÿ÷ ~þ÷ ÞýÚé7 Ôé7Š�)æ¨?÷º?€)÷ |÷%f)ü÷•s)7ŠæP@÷ b÷%Ó~Xô)ü÷•û7Š÷væd÷ B÷%èü÷•õ÷ Ðý      ß•€ëw¶ ÀÁÀô‚~ÁàôÀ‘Âe€~÷ Þ÷€$ÞŸ zÿ‡R~ÐX‡Ž‡ÿÿæþÿŸ· ôÿ&ææ&B„&�*ô•*Ä ÷àÝÒÿ&†÷ p„7 ß50þÿ3ã£Ö £´÷¦ÿ°Ý„Æ ß^~Hþÿæ¦f&æ’Ýæ�ÝæŽÝÀ&&&&b -w’w�ƒœ5ÃE€ÿñ ÎÂe5÷ @À ñ�— Âå~ 7ôÕ€ úÀE€À À `‚`Âe*3Ê ãÀÕõ• ®2õ• ¯2Å =p5= p5¦&÷ äàƒ —v—tµª2ÂEüÿƒPýr5‚=t5‚œh5ÂUñ~8AµPª2C 5óvý æÒÇŸ}ª2n5… õ‹­2 �Ÿ•þÿwR߉ ÷  ‰ À÷ ñ¥Ÿ•þÿ…„ƒ‚�·x¼·r¼€Ö ‡5Š¢5Ÿ•þÿ‡¶…„~�8ƒ‚�·R¼·L¼€& ÷ næwªê��wâþôµÂôÅ€�Âùñ‹ �€œÀE€ÿæÇŸ7 ¾ü[Ÿ•þÿñµ@ô‹!´€tð~94Àe 4ô‹ò‹€ñµÀ1 ‡´c.ö ÷ ¨ À=w ·Šû À�ô w þÀ�í w öÀ�æ -  ß.w îÀ w æw   7�Ê w ò7�à w ê?.B7н 7�¸ Àð Á ÷ Ä– Âw7Š�  að  Â.h wþw (‚b‚ ‚ ·p ww ‚øw �-.ŽA�Á � � B`ï÷ 0 ÷%F ÂB …Ö w†÷‹;.´I û 7Š8 w|÷•ÿÿ. wr·Š,  ÄEøÿÿ.ÚÄ ô 8€wR78¶ wt÷‹  ÄEøÿÄ 88a.à t8Pà õôÿÿ8Iw ØÖ×-È Ä¾dALLOW TRACE MOVB #-1,O.P  ;DISALLOW PROCEED JMP O.RALL ;CLEAR BRK PT TABLES ; ; O.ALF REXP;NA TYPE N CHARACTERS STARTING AT REXP; ; THEN-- ; ACCEPT A STRING OF ASCII TEXT. STORE IT IN ; SUCCESIVE BYTES STARTING AT THE INDICATED ; LOCATION. TEXT TERMINATED BY COUNT, N. ; OR CR OR LF. ODT PRINTS THE ADDR OF ; THE NEXT AVAILABLE LOCATION IN CORE ; O.ALF: TST R3  ;WAS REXP TYPED? BEQ O.ELF1  ;BR IF NOT TSTB O.SMFD ;WAS ; TYPED? BEQ O.ELF1 ;BR Ie& ßþÿM¦)ƒ „ßF ´÷LÿVÝæ ó÷ FÿÀ(     ·>Ý·8Ý·2Ý€�‚Ÿ·à~Àÿ…·•ÿ·PP÷50 ÿ=CDwúþwøþFÅ4÷ <3õ�êþ*Åâþ÷ æþ(÷­*$ƒ÷50Ôþ·Æþ·ÄþF ·ÄþŽ F ·¼þ÷U€¶þ÷rç¸ÜƬþæ¢þJ~8æœþæ€æ÷ Øw …Á7 Ðõ•*ÆÊæ¶÷ wæ ƒ„Ö …—#ˆ#Îe&€tüÿ7XÜ€À À ÀEÀÿÀU 6€‡&€|~°tüÿ74Ü€À À ÀEÀÿÀUÀ6€‡&f€ÁWtüÿÁEñÿAàôWt€ € ÀEø`v�€‡&f€#À æÚÛ&†÷ lÿ€�ÁWtüÿÁEñÿfåÀ ‡ +À5%÷ z2 ‚ƒƒlm €l ‚€m 44 ÀeÉ~€9À‡À ‡À ‡À‡À‡À$&†÷ ߀Àe&æf÷ ß„÷ âôw fWtúÿÀ5?� @�‡w Ýæþÿ…æ ÅEðÿõ‹¢5Ÿ•þÿ~ø9wœÝõ•­2Å C 5ó�û Ÿ•þÿA¢2D¤2w¦2ʺw¨2ƺý5€n5wVôµ@qô‹€wW¬f & ÷ HèÖ Â@œ2Dž2Cœà à Ä``¢~p:… æþÿŸKÌ¡ ¡ ‰$È ‚ µ „2ùÂÿÿµ�¬2B òŠ›Ÿ“þÿ¦÷ �ŸþÿW¬fff ÷ Øó… @À Ÿð  2€ 5ñž5 õ‹x~è:­2 �ð  2€Ÿ•g 88Y.&Â% w F ÿÿÀ=w ÐÀª Á¢ 7¤.LX Ä í8À=w ²ÀF Àe0w ¦À,w žÂ%   8®.rÀx @w 8q÷‹y ĨüÂkÀ=÷„.˜N w n@w wŠüw’·Šò w®À=w Pš.¾ w ° ÿÿÀ w äGÀe0w 0À,w l.ä(æ ÷úÀþw À·î3À ÷æê7ì‰. 8ä€ â÷Ò÷‹ã ÀüÄüÃüw Š 8´.0÷´ðÀ?w ÎÀ w Æ7 žw ˜7Š«7Š.V¦7ŠH 7ŠhF NOT, ERROR TST R2  ;IF N NOT TYPED, ASSUME 1 BNE O.ELF4 INC R4 O.ELF4: MOV R4,-(SP) ;SAVE COUNT ;SET UP TO TYPE N CHAR. MOV R5,R4  ;ADDR OF 1ST BYTE IN R4 MOV R5,R3  ;ADDR OF 1ST BYTE IN R3 ADD (SP),R3  ;ADD N TO R3 DEC R3 ;SUB. 1 TO GET LAST ADDR MOV R3,O.XXX ;SAVE LAST ADDR. JSR 5,O.TYPE ;TYPE THE CHARACTERS JSR 5,O.CRLF ;TYPE CR/LF MOV (SP)+,R4 ;RECALL N TO R4 ;NOW ACCEPT INPUT STRING INCB O.SCRN ;ALLOW SPACES VIA O.GET JSR 5,Oi~(@`$Wt·´Û€€ € ÀEø`v�€Ž‡¦÷ xÿ¶õ&f€&À &†÷ ÿ€�ÁWtüÿÁEñÿ@`7$`Û€ÀEàtúÿ7`PÛ¶@~ öEÀÿöU �€Ž‡¶ø&f€&À &†÷ Úþ€�ÁWtüÿÁEñÿ@`7$Û€ÀEàtúÿ7`ôÚ¶öEÀÿöUÀ�€Ž‡¶[~ø ÿÿÿÿÿÿÿÿÿÿ��‘’“”•–—˜vª ~�jþÿwœÜŸ•þÿ5Š¢5‡Ä wTýŸ•þÿwDýŸ•þÿôÅ@BœÂEÀÿƒ×p ÂBm°2Ê $÷ �ýÀ b@… u¬¬2wXýwˆûôµòw Ë~`;þõ愹悹ff ÷ 0ó·t¹·n¹w ìõàÀ?@€ ý52n5ý5v5ðŠ®2 ýn5Bª2‚ ÂEüÿ ‚œk5wüÀ ÷ œB†52rœ2Ù~Ø;rn5 rv5 ¦÷ bôtn5tv5ýn5ôÅÀw>þ… ÷ Tõ‹­2øÅ w@þB@Å °Š¢5ð•ÿÿ­2A¢2D¤2w¦2°¸w¨2¬¸ðН2 ýn5¦æº~P÷ ®À �÷52þ÷-¦À:þ�ææ÷5þ6  ·åþ·eþwXÿ÷-zÀþù€éwÄ÷-þþã÷ÿÿîý÷oÀŸ w ¥.N¾À• w ¶wôþ÷ nwäþwÐþ·ŠŠ÷ zù÷ <.tX÷ |÷nj7Šp÷m``÷\\w `æPì.š÷JÀHw X·>Ö%À/w T¯À\õ.Àú÷ $Ô÷ ÷íÜÀBÄ Ã … L‡Å ÄeÈ B†.æH  !VB†Ô ù!V=‚L® !ëHVVÄ. 6‚4H4 Z¤ ÀB!ž‚4Hôl4 ZH ZBH$l(ZE.2Ô ô÷%®À w Èà ÅížÅ Å @w `}.X@€ ‡À%€ÿ À%÷ pINT BACK SLASH JSR 5,O.FTYP JMP O.BYT O.ELF3: JSR 5,O.GET ;GET NXT CH. O.ELF7: MOVB R0,(R5)+ DEC R4  ;REDUCE COUNT. IS IT ZERO? BEQ O.ELF2  ;BR IF YES BR O.ELF3 O.ELF2: MOV R5,-(SP) ;PRINT NXT AVAIL LOC: JSR 5,O.CRLF ;CR,LF MOVB #2,O.BW  ;FORCE WORD MODE MOV (SP)+,R0 ;THEN, ADDRESS JSR 5,O.RORA  ; O.ELF5: CLRB O.SCRN  ;MAKE SPACE INVISABLE TO O.GET JMP O.DCD  ;RETURN TO COMMAND DECODER O.ELF1: JMP O.ERR ; ; SPECIAL NAME HANDLqõ~è}~`~Øw |æ׿××þÿ& „u6 7!„üp‚Ÿô‹* ô¥*kô‹›göÿÿÄ †„ — [ô•*ß�þÿ��� W  Á• !3~PQ†¦÷ *ú‚r�ŸÊ BÁ Á Ä f:÷ 6ú†1†:„ ô•rìýàý÷èýPÀæäý÷ 4Úƒ —v—t%~¨>÷E0Àý·P¼ýÂÆýÂEüÿƒP÷&ÀÒ÷ ÀQ� ÷•ÀW¬f & ÷ ¼ãÖ Äj<Ãh<ŸKÌ¡ ¡ ÉB òŠ›·“îÀ¦÷ .·“äÀ1 W¬ ~ ?f¦÷ vïŸ÷ 8ý�wþw�þ÷ ž¿‚�÷5–¿÷�¿÷ŠýwþÀÎÁý÷ 0³÷58p¿÷j¿÷5�b¿îè7 ýwÜþüæ„<÷ ¸ðw6þy~˜?1À@¿‡éº?~@€ds|w F· twÖýwºý.~�  à ù÷\šùÄ”ùD · ’ù¼‚€Á -.¤&C@AƒEPA&f¦æw 8€w <À/w ¹.ÊB€w 惂�„Ò Ý çƒ`ƒ ƒ Å áÀE·.ðÿ�¯À € € €` ×÷‹ù¹à ·÷•é… ²‡Ä.Å wùw Ö7ŠÖ÷Uüø÷‹Ê÷‹Å÷Eêø5.<w @7"æÞøæØø÷‹­“À�£À‹� �à Ú.bpZw Š×­‹Ö÷‹€Ó·Š|÷U¢øÝ÷‹… ZŽ.ˆuw¨ü÷�œøL÷@VÄŒøÄ5óÅ„ø!ï‚;.®÷•<Œ÷ ÷ îÂe÷ ätER ; DEPENDS UPON THE EXPLICIT ORDER OF THE TWO TABLES O.TL AND O.UR0 O.REGT: JSR 5,O.GET  ;SPECIAL NAME, GET ONE MORE CHARACTER MOV #O.TL,R4 ;TABLE START ADDRESS O.RSP: CMPB R0,(R4)+ ;IS THIS THE CORRECT CHARACTER? BEQ O.SP  ;JUMP IF YES CMP #O.TL+O.LG,R4 ;IS THE SEARCH DONE? BHI O.RSP  ;BRANCH IF NOT BIC #177770,R0 ;MASK OFF OCTAL MOV R0,R4 O.SP1: ASL R4 ADD #O.UR0,R4 ;GENERATE ADDRESS INC R2  ;SET FOUND FLAG JMP O.SCAN  ;GO FIND NEXT CHARu*4Š›2 ²7­ ”û†7� ŒûÖ ß�þÿ·@Ö·:Öw ¸ö ¶Æe‡öþÿ½~ȶÆeæ÷ HwvŽ Ž Ž Ž Ž Ž Ž 6 ¶×æ&&f¦÷ –-€ƒ•„À Âç妶¶æ—þÿŸ÷ ôúl7 îúŸ•þÿ÷åðúÿªÕ[~@êúæ¦f�vÂÈú ¦†÷ &ù‚² 6 €6Á‹€÷U€¦ú²„×þÿŸ7 Žúò��ú7 ŠúÆ�úò„ú 7 ~úÊÁ ô•*!H~¸!‡ô•*ß�þÿæ$Õ&&÷ 3€·Õ�ô•*�œÁ Á Ä J81†:1†8ß�þÿ·æÔHŸ•þÿŽŽŽ‡æþÿ& ÷ øþw4—þÿŸÀöù!&÷ Ñ~0 Rø€1Š*7 àù7 Øùv\3\3!ApBöDþDEG~ˆ@¢@¢@@±~Aw ,ð w $ðÀ w ðÀw ðÀ�f÷ r×…1�æþÿÀŸÉ FŸ“þÿ€ O~xAñ%?†ñ%ô;€ ÷ — 5‚€ ƒœb@ÃEàÿñ� à ó n.*�€ —-ÜG%ÃdØ³Š›ñŸæàý÷ àÖ^wÖý· ¢þŸ•þÿw �ïöþÿ& ÷ :ÝæT#æþÿ–~ðAŸ÷ vþŸ•þÿ‡w¬· fþŸ“þÿæ–ý÷ rÖ�wwÂe!‚ÀE†.ÔðÿõÀD÷ Õ!çƒwVü÷‹wDü×=4ø/.úú÷-.ø*øö‡·Šñ7Šì÷�"øÐ÷HÚ÷•<"÷G.  øø÷øÊwòþ·ò÷·ð÷÷•¿7÷‹¶.FwÖþw J÷‹Ö÷€ Å�Î÷¯ŒŒŒŒwÑþÿŸ÷Ÿ $þÿÍ.l÷‹ˆ�÷‹ƒ@å w¦÷Ät!HÄ Ä úw dô HŒ.’Ä  á w Ì@÷e~÷$Ä•tH7‘Gô Zð   ¡  H(ZŒ.¸w®þôZÀBw BÀ�+Àe`€ w 4À;@ Zˆ.Þw ,÷Ä�xACTER O.SP: SUB #O.TL-7,R4 ;GO FIND NEXT CHARACTER BR O.SP1 ;RETYPE OPENED WORD IN ANSCII (CONVERTED FROM MOD40) O.MOD: MOV O.CAD,R0 ;CALL MOD40 UNPACK MOV #O.ALF1,R1 JSR PC,UNPA00 ;ASCII CHARS GO INTO O.ALF1,2,3 MOV #'=,R0 ;PRINT "=" JSR R5,O.FTYP INCB O.SCRN  ;SET FLAG TO ALLOW SPACES MOVB O.ALF1,R0 ;PRINT 1ST CHAR JSR R5,O.FTYP MOVB O.ALF2,R0 ;PRINT 2ND CH JSR R5,O.FTYP MOVB O.ALF3,R0 ;PRINT 3RD CH JSR R5,O.FTYP MOV #' ,R0 ;PRINT SPACy7 Úù7 Øù0 ÆØùW  ‡ñ‹› ±Š*·�–ßf÷ ^/wâñŠ*ûw ä€P7 þùM‚æ—þÿŸœ*Á yž !!!!!² !Ì l~¨ Æ !!!Ì Ÿ“þÿ&÷ ªŸÖ . 7^ù) ‡ð‹›ð•ýÿ*ð•*Ÿ“þÿ&&÷ ê2€Ÿð•*�Z!W"Âåø1f÷ Ÿ•ˆ~ !þÿw Fއccc,!þwHþ‚ 7 Àü7ºüÀÖü÷ ¬~ÐC÷´ü{Hw wHû÷ ÔÃô÷ ¨± H”. ÂeÅ÷À wÄ €Ò•KÒ•SÒ•ó.* U~‚  wÄe0‘‚  w wÄe0‘Î.P ‚  wÄe0‘‚ À wÄe0‘~Ò Ä.v ÷ .Âe!"øƒÀT÷ P ÷-^–ö÷>"�.œ †öTw|ýw˜úwŒúÀ`â�ÊÅøÊÕ0ƒ ÃE€D. ƒ ƒ ~‡ÀðÂ>â• — ÷ û‚‡×­þ)â>÷ k.è ÷• ×­N< ·ŠFæà ˆ÷ äÎe‡÷•Õ à ë. . D ÷|E JSR R5,O.FTYP JSR R5,O.GET ;USER MUST NOW TYPE: CMPB R0,#' ;IF CHAR IS LESS THAN SPACE, BLT O.MOD1 ;PREPARE TO ENTER COMMAND DECODER MOVB R0,O.ALF1 ;OTHERWISE READ 3 CHAR JSR R5,O.GET ;2ND CH MOVB R0,O.ALF2 JSR R5,O.GET ;3RD CHAR CLRB O.SCRN  ;RESTORE O.GET TO NORMAL MOVB R0,O.ALF3 MOV #O.XXX,R0 ;TELL MOD40 TPACK TO PACK MOV #O.ALF1,R1 ;INTO O.XXX JSR PC,PACK00 MOV O.XXX,R4 ;MAKE IT APPEAR AS IF THE MOV #1,R2 ;PACKED # WAS TYPED }~":¡2 :¡2 :&÷ ‚ö„Lr:¡2 :¡2 :É€� †1 ð‹›ð•*Ÿ“þÿ&&÷ p1€ Ÿ0Š*Ÿ•þÿv·jÒ·dÒw 7~ˆ"⇅ … … ñÅ ð•þÿ*ìw ¾æDÒ×þÿ& „K7!Î÷H‚Ÿô¥*Eô•*!‡ß�þÿæÒæ�&&÷ V0‚ƒ•„·Ò -Ä †¦÷ ˆõ…Í ü~#A�Á Á f:÷ tõž±:„ ´Š*ß�þÿ¶·ÂÑw @ö އöþÿæ÷ Þûw Ž Ž Ž 6 ä˜÷ ÆöÄÊöÄ Ä Â8„`ßÂ`Ê ![~x#û—!÷ÿÿ¨ö˜äþ…Õ ¦÷ êô�J�¡ ¡ Bò•*wœtö˜ÉCÃeÄ€ÿÔÔÔÔÔÔÔÔÄ ÿ~÷ôC¸ü÷•µü7Š¿ü7 Âüæ�@÷ Æñ‡÷ ¸÷ Äð@÷xzü÷ œ÷`rüË ÅœÅE€ÿ… À`üZó-\ü÷Rü÷Hü÷rü@üÃe ÷ <üä· û~HDbü÷-^ü:üÌ÷ ,ü ƒØ?„Ä?áÀü À1 wjþ‚ ÷ ü8÷ Dü÷• ü÷•ü÷èûüæ�@÷ ñ‡÷ ÷ ÃÒû÷ÊûómÎûóíÈû÷Â~ÀDÆDÐû‡÷ æ÷ òñ²û w$þ3 ¯7¢û÷˜û÷Âû�ûÅÀwØ÷€E€û÷žExû÷¦Epû@÷ ÷:Ezû÷•wû÷•û÷\û€ûæ�@÷ |ðŸ•þÿ~8E‡÷ r÷ ~ÃBûË Hÿ .ûó‹ €@÷ ”ÿ ûæP@÷ Hð÷pE&û‡÷ <÷ H÷ *wâý œÂE€ÿòµ@b@ól3 ‡óÕ€‡óÅ€ Îæà ˆ÷ò Â÷ ºèä÷ à ò ›.4 \ ´ò÷• ¶æà ˆÜ·¤·ÒõÆ"f&æ1\ à ""6.Z ¦fæŽæ €Ö ·„�‚ƒ„…ƨõær€˜.€ Ä4Hlü´HÄ Ä ÷…÷‹\ ÷‹W  @ H lHÂ.¦ <lH„ „ !ø…ÃÄþÿ÷%$ÃåƒlH).Ì „ À&Äe N @ Ä üÀe0w &à óÀ• Ö ±.ò Á8Àÿÿ …÷�,Î÷¾ 8°. Ø7�Øæà ˆ÷ € JMP O.SCAN ;LET COMMAND DECODER DO THE REST O.MOD1: CLRB O.SCRN CLR R4 ;MAKE IT APPEAR CLR R2 ;AS IF NO NUMBERS WERE TYPED IN O.MOD2: JMP O.SCN1 ;TYPED IN ; "BACKARROW" HANDLER - OPEN INDEXED ON THE PC (BACK ARROW) O.ORPC: JSR 5,O.TCLS ;TEST WORD MODE AND CLOSE ADD @R2,R2  ;COMPUTE INC R2 INC R2  ; NEW ADDRESS O.PCS: MOV R2,O.CAD ;UPDATE CAD JMP O.OP2A  ;GO FINISH UP O.ORAB: JSR 5,O.TCLS  ;TEST WORD MODE AND CLOSE �ÔÔÔÔÔÔÔÔ· ~ð#:öñ A@Cf Î ßU0þÿ† æÀfŸ÷ö·üõò•* ·†òõwœêõwœèõñ ABCD fÎE€ÎeßU0þÿ† f÷‹¼õ€M~h$ÎUÀ÷E€°õfEEw$dÐÅU€C @ u õEÿ Ÿ¼pÿtÿrÿvÿ¼$Ð$ä$0ø$Š-0ú$¿~à$,0ü$È-ÿG H I J w 0 æ¶Ïæ´Ï÷ Ð ÷ |÷ tñ‹ÿ$&Ÿ•þÿ¬:~X%·ŽÏ·ˆÏw  އ,ˆ ò¬î·jÏ·dÏw â öþÿ& ÷ Œùwºý±Šÿ$5 %õ‚‡‰ Ú~°EŸ•þÿ1�w °ëއ÷ Ôú‡Ö À1�÷ ÐwŒýÀ 1�÷êE¬ú‡÷ Âñ Ã*þÀ €ÄE€Wq Ca 3 5„ Ãe ù‡À Åœ5ÅE€ÿq¡r~(F òÃe5‡¦À 7 Lú —r ·@ú×p Ãe°@÷6úCœ ÷�8úà ÷œn.@ú· <ú‚‡Kó úsœ ³�ñ‹€óÕ€s òµ@b@óàùól­~ F‡BœÂE€ÿ‡ÁØù÷Öù0®‡wNwT÷ NÓûö5À÷¦f&F ‚ÂU€ß ÿèô�a €Õå ;âÁ ÓÁEàÿ¼¬HÛœèH7œ$IªÿÀ ´~G74H ÿz@WtüÿÀEðÿÁEðÿÂå·†ÿÀ ’~€��‚��·ÜÒÆhÿæfÿ¦ææ�`ÿœþÿþÿ‚“\ÂE€ÿ‚aƒÀÿ…÷�°÷ ºæà ˆ¯ à &à ß.> À¦ ÷ÿÀ¤À• À�š÷‹£À¥6.d â…Ä Þ‡•w šÿú ÷ÿÿr÷ÿÿn  ‚.Š 7,8\‚ÁVì8Á-T‚Ð ðÀH…wD€ Å88c.° 7<À ô÷%,!ùƒ… �„ ú ÷%.Ö ‚? ?‘‡Ã­ Ī w vÿ…À w �­ ª F.ü ÿ…÷%0ôw ¬þ…÷Ú’7�7Ðw VÿÀ .." Àe0w âþÀ,w Úþæ²÷¬À°w rþ·¼.H  ÷XœÀT…ÀN÷HŒÓ„ MOV @R2,R2  ;GET ABSOLUTE ADDRESS BR O.PCS O.ORRB: JSR 5,O.TCLS ;TEST AND CLOSE MOV @R2,R1  ;COMPUTE NEW ADDRESS MOVB R1,R1  ;EXTEND THE SIGN ASL R1  ;R2=2(@R2) INC R1  ; +2 INC R1 ADD R1,R2  ; +PC BR O.PCS O.TCLS: JSR PC,O.CLSE ;CLOSE CURRENT CELL CMP #2,O.BW  ;ONLY WORD MODE ALLOWED BNE O.TCL1  ;BRANCH IF ERROR MOV O.CAD,R2 ;CURRENT ADDRESS IN R2 RTS R5 O.TCL1: TST (SP)+ O.TCL2: JMP O.ERR  ;POP A WORD AND SHOW THE E…DÏ%ñ‹þ$Ѐñ•þ$Ÿ•þÿ÷ jÊw ž æ$Ïæ"Ï÷ >Í—~Ð%Ä÷ è÷ àñ‹%¶±Š%5%õüÎ%ñ‹þ$¬€1Šþ$Üw äðÁþÿÁEðÿEÅ æ€ñ‹%D¸$ô• Ÿ•þÿñ•%Dœ%Ä |<&1Š%wJX&Œ'Ò'Þ'ì'( ~H&(&(4(H(P(b(p(‚(±Š%W¬%H†@ %w%|ÎD%w%tδ  -†m=�¦$­ ý• ¦$ñ• %wÔf¸$÷ $ðÖ =Š $=Š¢$œÄÈ~À&ñ‹þ$ ÷ ¬‚‡÷ Øw € && ÷ ºw ~ @ %w%òÍ ôŠ›&÷ :- Â÷ þ1Šþ$÷  % Äe%Äå %Ÿ>~8'þÿ±Šþ$&÷ @ñ€õ Í%5 %1Šÿ$Äe%Ÿ•þÿ†ƒœ×tüÿÃEñÿß ÿêôƒÃEà×túÿß`êô~~�GÊEÀÿÊU Ö‹€‚ƒœ ×tüÿÃEñÿò ÿƒ ÃEà×túÿò`Ÿìôƒ ÃEÀÿÃUÀòƒ‚Þ ŸÆJÒ&&7Ôþ7ÎþÁ 0C~ÀeÀEà&À¶þÁ$~H´þßU0þÿ† Ö €�‚Þ·Ö ØæòѦ÷ ,Ñ^à ž" f!x ÔÒ,%¾%”<†1à-L0¸5"Y¤Q¬Rì~€H0A8ABAÜ1°5&HD2°6B!=~øH0033 ˆˆˆ‡Äýÿ C”Ã¥ ñ.n Ã¥$ × A‡Ãå ÃåÃå Ãå    ¦n.”   ‚eÂ`„ ä�‡ÅýÿÂä  ‡€âƒ û� ä ä.º Ë× Ãe ÃeÃe Ãe Ñ�Ò … è€Þà Ð ‡@(, ì ñ+ì DEBUG 8  Ì. H PC CP R L T NZVC R0 R1 ¿.6 R2 R3 R4 R5 SP h.\ @ LOCN CONTENTS ß+‚ ˆRROR ; PROCESS S - SINGLE INSTRUCTION MODE O.SNGL: TSTB O.SMFD ;DONT REACT IF ; NOT TYPED BEQ O.TCL2 TST R2  ;SEE IF TURN ON OR TURN OFF BNE O.SI1  ;BRANCH IF TURNING IT ON CLRB O.S  ;CLEAR THE FLAG JMP O.DCD  ;CONTINUE THE SCAN O.SI1: MOVB #-1,O.S  ;SET THE FLAG O.SI2: JMP O.DCD ;COMMA PROCESSING. N IN R4 IS THE RELOCATION REGISTER NUMBER ; O.COMM: INCB O.CMFD ;SET "COMMA FOUND" SWITCH TO ON TST R2  ;WAS A NUMBER TYPED IN? ‰&÷ ñ€õzÍ%5%÷ ¬wð1Š%ñŠþ$Ÿ•þÿ÷±Š%f¸$÷ :ïÖ @%w%FÍB%w%>ͦÆ~°'ÎEàÊ5 Ž,†Ö ÛN¶$÷ ïÖ wÔþñ•%1Š%Ùý• ¦$ñ•%Çñ‹ %ý• ¦$ñ•%½1Š %ý•U¦$ñ•%±Š%±ý•^¦$ñ•%ö}œR~((%¦$ñ•%ﱊ%ý• ¦$ñ• %å1Š%wþý• ¦$1Š%ñ• %Œý• ¦$ñ• %…1Š%@%w%lÌw$þñ‹ %wêþý•¦$ñŠ %wàþw FîÁ�b~ (\לÁEðÿEÅ D¶$ô• @%w%*ÌB%w%"ÌÊ €f¸$æ÷ úíÖ DŸ¤$+ÄÅ€¡ÿ¡ z¡ *¡-ƒÃeƒl¡.ñ‹%B¦ÎE~)à–,I†²  ‘Ê €Šˆˆˆ ˆˆý~pIÿÿÿÿ¶~èIhVøIøI2JøI ÿÿhVTJTJŽJTJ ½~`JÿÿÿÿÛ~ØJ BE ¦ 6.¦ *;/\ $G._<^,OWEBP@>SRC-FI!XADTSÌ PMDTCFRB¸ à üà ò ïò >‰ >¢ B™ BŸ Ó.ÿÿÿÿÿ·<ÿÿÿÿÿÿÿÿÿÿÿÿ¸óŒ BEQ O.COM1  ;NO,USE CURRENT BIAS; I.E.,EXIT BIC #177770,R4 ;MAKE SURE THAT N IS LESS THAN 10(8) ASL R4  ;YES, LOCATE RELOC. REGISTER TST O.RELT(R4) ;HAS RELOC REG BEEN SET? BPL O.COM0 ;YES JMP O.ERR ;NO, ERROR O.COM0: MOV O.RELT(R4),O.BIAS ;PUT BIAS IN O.BIAS O.COM1: JMP O.DCD1  ;GO BACK TO DECODER ;R PROCESSING. SEVERAL POSSIBILITIES- ; A. ;R WAS TYPED. ZERO OUT ALL RELOCATION REGISTERS ; B. ;NR WAS TYP�Ê5@Ä =‘¦$C¶$ó• Ê5@@wLîÄ• ñ•%îý•^¦$ñ•%2 ïò äò Ê Þ�à ñ‹% ±Š%Ä•\ñ•%ñ’§~�)%ÐÄ’Î1Š%²  ‘1‘%Ä•\ñ•%Áñ‹%À±Š%f¸$÷ íÖ ¸¦ÎEàÊ5 Ž,‡wæýÖ ½Š $±=‘¦$ñ• %f¶$÷ ÚìÖ ¦Ä•=‘¦$ñ•…~*%ò€÷ ¨È /Ÿ•þÿœw H/‚Á WÃà þ÷ 0 �÷‹*€Ÿ“þÿð‹/Î�Ôw†üÁ BL÷ (�„ôÿ‚øÿ—¢ôÊÕ&÷ ¶Ç„Ÿ“þÿÁ w¦üò%äÿ¦Îeäÿ÷ äÅÖ ž~ðPò‹ÿÿ¯¦ôÿ÷ †Ç·¸ ÷U¶ ÷ è 2Šÿÿ2 ôÿwêþæ—þÿÁüÈ÷ 4 ð‹L3ƒ’à 0À L€ Ÿ÷ ˜÷ rfƒøÿ×¢Ã׬*÷ x÷ RÐ~hQð�CƒàÅeÀÿõ�‚øÿ� w´ý÷ PÞÁŠÈ÷ �´ ñ•*wDü÷ xÈ5×-nÈ1æþÿ怟×\È÷ NÍÁöÿñ•*ŠþÿæT#& & ÷ F�~àQð‹/�÷ <ŸÊ•ñ•*Á À À 8p†:p†8Ö ·•ê­‡›3) ; INCREMENT OUTSTANDING REPLY ; COUNT BR DLAB22 ; CONT ; .ENDC ; ; 11$: .IF NE,.CITGOM ; .IFT ; ; MOVEA MESG2+HDRL+THDL+HDRLID,MESG2+HDRTO,HDRLTO ; USERS TO RTE CODE MOVEA DLAX18,MESG2+HDRACT,HDRLAC ; TERML ACTION CODE œMOV O.TMP1,R0 ; PREPARE INPUTE FOR O.FTYP ADD #60,R0  ; CONVERT N TO ANSCII JSR 5,O.FTYP ; TYPE N MOV #',,R0  ;PREPARE INPUT FOR O.FTYP JSR 5,O.FTYP ; TYPE COMMA CMP #0,R2  ; CHECK IF R BNE O.REL7  ; IF R MOV O.XXY,R0 ; THEN PREPARE INPUT FOR O.CADV O.REL7: MOV R1,R0  ;TYPE THE VALUE (@O.CAD)-($NR) O.REL9: JSR 5,O.CADV BR O.DCD1 ; ;C PROCESSING. ; A. REXP;C WAS TYPED� w æ–Äæ”Ä…æþÿf÷ jè„ŸÍ æhÿ÷ 4è7^ÿÜéõ³Š›· œÿ Ÿ•þÿ·TĤ~˜0·NÄw ÌŽ‡� ô7 |ÿæ(ÿ÷ Ðç…=wÿ ÷Ø/ÿ¡7 ÿ¡7 ÿŸ“þÿÄ0f&÷ ¦C÷ VÌ ú÷• ÿÅå ŸÍAñŠ›Ÿþÿf÷ ®~12#Ÿ•þÿæÜ/÷ ô÷ ÿ¸‡· þþæþÿŸ½÷ÿÿòþŸ•þÿ‡À‚ â�ÊÅøÊÕ0ƒ ÃE€ƒ ƒ À ô‡&æ¦f&MÖ €�‚ƒ„…'èd w ¯~ˆ1Öÿ„…À|1Ä �Õ•+Á•  â€d Á0B`•�È ôÄe0 ‘¶ w ¢ÿ–%‡Õ•- äÒ‹å÷ <è0&¦Ÿæ4è÷ ”æ€ÂÀô°°°~2 ðU€ðU€ðUž…CÀÿÀð‹/€ Á BL �� ÁE€ÿÂeö€ êÎ AB~XRÆ çÍ•Aw²Ÿ�ÁE€ÿ�AœmÁEÿC Ãð 'L Ö A÷ dŸ“þÿŸ�þÿ¾Ÿ�þÿÍ÷ pÇw ªÞÁbÇW  æþÿŸ÷ \Ê•Ÿ•ë~ÐRþÿw –Þ‡�Žæþÿæ÷ <² —¢Ê•ð‹/€wÿÀ LÃeäÿ3 ææþ÷ ¸ÃÖ ñ•*Ö w¾úÊ•ð‹/èô�6 æþÿ@œ ÷ j~HSþ € ÷ ôüð‹/ÄLÄeäÿŸô ¶ Úô•ÿÿ Ÿ“þÿ&÷ PÃÖ Á ŸD†Êå2 � ñ•*à &÷ ÞÄ æ:÷ ÔÄ3:·—¢… � —~ÀSC÷ â& fæ€ðŠLw"ù2 ¥Ÿ ; (.3C) BR DLAB22 ; CONT ; .IFF ; ; MOVEA DLAX92,MESG2+HDRACT,HDRLAC ; HUB ACTION CODE ; (.AB) INC OUTEMP(R3) ; INCR MSG COUNT ; OF OUTSTANDING  - PRINT THE VALUE OF REXP AND STORE IN $C ; B. ;C WAS TYPED- SAME AS C., BUT REXP=0 BY DEFAULT ; C. NO SEMICOLON HAS BEEN TYPED-REPLACE R4 WITH THE CONTENTS OF $C O.CNS: TSTB O.SMFD ;WAS A SEMICOLON TYPED? BNE O.CNS1  ;REXP TYPED PRIOR TO ; CASE A MOV O.CNST,R4 ;CASE C. REPLACE R4 WITH ($C) MOV #1,R2 BR O.SCAN ;RETURN TO SCAN MORE O.CNS1: MOV #'=,R0 ;PRINT VALUE MOV #2,O.BW JSR 5,O.FTYP MOV R5,R0 JSR 5,O.CADV MOV R5,O.CNST  ;AND STORE IN $C O.H1:¡€ ·tÍ·nÍ·hÍÂàô°,°.°0·xÍ·rÍ·l͘‚€‡¦&æžÂŸæÎç÷ .æ€÷(Íð÷‚Â<Íð|Â*˜Àå@6]~x2·l€‡¢ £ ¤ ¥ ¦ „2†2ÿÿÿ²2÷~ð2@�*j�k�o�‡~h3æ¢�Žæþÿ@œ ÷ Z € ÷ PüŸ„Ÿ“þÿðÄE€ÿ!Ê•wÐùð‹/�Ê•Á D†&÷ Z„w¬ûð‹~8T/ì€ ðŠLèw Ýæž æœ €æ œ* �Ö ·Š ·„ w ÝŽ‡&W þÿöð•*÷ Tÿ€°•*æ÷ 6ûâ6 ðæþÿÁe8f÷ ¾�ù~°TDÁ ÷ vŸ—¢bô ÐÿÊåò ÊeŸ“þÿÄÿ�ÃÿÁ ÄeÀÿw’øüEÄÿ4�Ãÿð‹/�À L€ f&Ÿ÷ Ê÷ ¤Ÿ�þÿ…øÿµ-òâ~(U„�C…àt‘ÂÿÂò #À À Ÿ &÷ †Ã„&:÷ 0Ã0:Ê•ñ•*Á 1†Ÿ“þÿ� ÄŒLt&÷ ÎÚwføÊ•ôð‹/¥€ ðŠL¡æþÿÁe8ó~ Uf£ ; REPLYS .ENDC ; ; ; ATTACH AUDIT TAPE ; DLAB22: 2$: MOVB #ATTACH,DLAV50+MPLCMD ; SET CMD IN LIST CLRB DLAV50+MPLTYP ; CLEAR TYPE FIELD IN LIST ; MOV #DLAV50,-(SP) ; ISSUE JSR PC,MTIO ; I/O FOR ATTACH TST DLAV50+MPLERR ; ANY ERROR ? BEQ 4$ ; NO- CMP #M¤ O.CNS2: JMP O.DCD ; ;MINUS PROCESSING ; O.MIN: INCB O.MINS  ;SET MINUS FOUND SWITCH ON JMP O.DCD1 .EOT   ;END OF TAPE #1 ; ;REPRINT LAST OPENED ADDRESS RELATIVELY. ; A. N! WAS TYPED--PRINT N,((O.CAD)-($NR)) ; B. ! WAS TYPED. FIND THE CLOSEST BIAS LESS THAN ;  (O.CAD) AND USE ITS "N" -- THEN DO CASE A. ; O.RCMP: MOV #'=,R0  ;FIRST TYPE A "=" JSR 5,O.FTYP  ;WAS N TYPED IN? TST R2  ;WAS N TYPED IN? BNE O.RCM1  ;BRAN¥~à3n~X4õ~Ð4}~H5*3ÀêÂêÄêÆêÈêx5<d‡ˆ5¦÷ Æ�@œÃÿÀ  BÜÂÿlL „—¢Kô¥*Gñ Ðÿ:ff÷ öƒ×tüÿÅñ ñ`$Ñ Gƒ�À Ä Ÿô†„ Ê‹� &:÷ tÂÞð:±*~V€ € 1�2 ô•*Ê•w²÷ 8ð:ð8ñÅlL5f÷ øÙô•*€ D�Ÿwxù± æþÿB�÷ ªÅ|Luf÷ ÂÙŸñ‹›ë~�Vñ•*wDùñ•ýÿ*wB÷ ÅÜmœ'LÊCa‡�öÿfÑQr úÿ�üÿröÿ�°ŠL‡�øÿC DEr úÿ�üÿrøÿðŠL‡É•…ÊÅÊÕ±~WEõ•*Å f†÷ nƒ5 †… ‡Á f†÷ Z„�À  ÝÂÿlL� € ‡à ÂL …… r Ê Âeõ ‡¦÷ \Á÷ §PLBSY,DLAV50+MPLERR ; BEQ 3$ ; ; DEBUG ; 3$: MOV #DLAV70,-(SP) ; WAIT MOVB #3,-(SP) ; A CLRB 1(SP) EMT QTIME ; SPELL TST (SP)+ ; FOR AUDIT TAPE BR 2$ ; TRY AGAIN ; 4$: MOVEA MESG1,TRLG1,MESG3-MESG1 ; MOVE DATA TO M/T BUFFER MOVEC 0,DLAY10,3¨CH IF YES JSR 5,O.LOC  ;ELSE, FIND BEST N CMP R0,#-1 ;IF REL.REG FOUND, BNE O.RCM2 ; BR; ELSE-- MOV O.CAD,R0 ;PRINT ADDR IN ABS. JSR 5,O.CADV BR O.DCD1 O.RCM2: ADD #060,R0  ;CONVERT N TO ANSCII JSR 5,O.FTYP ;TYPE N MOV #',,R0  ;TYPE COMMA JSR 5,O.FTYP MOV O.BW,-(SP) ;SAVE O.BW MOV #2,O.BW  ;ARTIFCIALLY SET MODE FOR WORDS MOV O.XXY,R0 ;TYPE RELATIVE AMOUNT O.RCM3: JSR 5,O.CADV MOV (SP)+,O.BW ;RESTORE MODE BR O.DCD1  ;EXIT TO SC©ÿÿ&À@&À€& æ*¿i~À5æ(¿f¦æ&f�¶æ"ÊŸÉ xŸ•þÿ1�ÀDœ7!vøk‚Ä n.ÅÅŠeÅ€ Bœ`— ]€ BœYµ „2V€ Dw¾¾N€ÃE€p~86× /H€ ­‡B‚W¬>1 4 @À ž2æ˜ÉŸµ ¬2†µ�¬2  ƒ`f÷ Râ„æ÷ $â  —-ÜGÄãñ ³Š›°  25Š­2Ÿþÿå~°6 5ñäþ ñ< fæÖþ÷ àÖ wtwxw€wÌœ2Ó$Áýf÷ –á�p¢2Dwî½0¤2ð佦2ðཨ2ô ãK�Â*þ2 5+Âe úù~(7Å Bf5À  Àå �ƒ ûÀe 1Ðò Àƒlt°2… ôô<ôÕ@ª2Á¶÷l�ª~€Wh�÷å€b�‡¦ò�‚„‡ˆ �‹À�Ž                 !"£$¥¦'(©ª+¬-.¯0±²3´56·¸9:»<½¾?ÀABÃDÅÆGHÉÊKÌMNÏPÑÒSÔUVרYZÛ\ÝÞ_'ABÃDÅÆG~øWHÉÊKÌMNÏPÑÒSÔUVרYZ     ;~pXB^�Ü[ L/P 1 â~èXPARITY ERROR L/P 1 NOT READY L/P 1 ABORTED.X²X&f¦æ&fæêôæìô«2.*2 ; CLEAR M/T HEADER MOVB #1,DLAV50+MPLTYP ; WRITE CLRB DLAV50+MPLCMD ; DATA MOV #DLAV50,-(SP) ; TO JSR PC,MTIO ; AUDIT TAPE ; TST DLAV50+MPLERR ; ERROR? BEQ 8$ ; NO - DEBUG ; YES - 8$: MOVB #DETACH,DLAV50+MPLCMD ; DETACH CLRB DLAV50+MPLTYP ¬AN ROUTINE O.RCM1: MOV R4,R0  ;GET N. THIS CODE SIMULATES O.LOC ASL R0  ;TIMES 2 FOR INDEXING MOV O.CAD,O.XXY SUB O.RELT(R0),O.XXY ;COMPUTE DIFFERENCE ASR R0  ;RESTORE N. BR O.RCM2  ;PRINT RESULTS ; ;FILL MEMORY WORDS. LIMITS ARE THE SEARCH LIMITS. ; O.FILL: MOV #2,O.BW ;SET MODE TO "OPEN WORD" O.FIL1: TSTB O.SMFD ;DONT REACT UNLESS ";" WAS TYPED BEQ O.ERR ;IF NOT TYPED, ERROR. MOV O.CNST, R­ -w’w�ƒœ5ÃE€ÿñ ÎÂe5÷ @À ñ�— Âå~ 7ôÕ€ úÀE€À À `‚`Âe*3Ê ãÀÕõ• ®2õ• ¯2Å =p5= p5¦&÷ äàƒ —v—tµª2ÂEüÿƒPýr5‚=t5‚œh5ÂUñ~8AµPª2C 5óvý æÒÇŸ}ª2n5… õ‹­2 �Ÿ•þÿwR߉ ÷  ‰ À÷ ñ¥Ÿ•þÿ…„ƒ‚�·x¼·r¼€Ö ‡5Š¢5Ÿ•þÿ‡¶…„~�8ƒ‚�·R¼·L¼€& ÷ næwªê��wâþôµÂôÅ€�Âùñ‹ �€œÀE€ÿæÇŸ7 ¾ü[Ÿ•þÿñµ@ô‹!´€tð~94Àe 4ô‹ò‹€ñµÀ1 ‡´®€÷ º 7¬ŒÿÄŸìôŸêô…„ƒ&~`Y‚�€Ž‡œ— ÂÉ Ä çÄ ä÷ hæþÿŸÈ :&÷ 2¿¦X÷ ¿ž²Xìô ö%ÜGÄZÀ´Š›0 ó X$Ÿþÿ ð¥Y~ØYð ¶Æe…„ƒ‚�€& ÷ $ÅwRÉ0Ÿþÿ£ˆ ŸþÿÄ�³ XŸþÿsX3 X3 "X³(Xs$X3 &X÷ ÖÂ�W÷ îŸ÷ ô ~PZÂw0w м Řó XMœÂ(X¦X÷ ¾€ìôÁX÷ ˜å÷ ŠÂ�W÷ ¢÷ ¨MæþÿÂ(XŸ2X „ÄeX¡ ¡ 2XÈŸþÿÄš~ÈZ XôŠ›&÷ lù¬ æ X& ÷ °ÇÖ fæ&æ X¯ ; THE MOV #DLAV50,-(SP) ; AUDIT JSR PC,MTIO ; TAPE ; TST DLAV50+MPLERR ; ERROR ? BEQ 10$ ; NO - DEBUG ; YES - ; 10$: DLAB24: CLRB DLCPRI(R1) ; CLEAR PRIORITY JSR PC,DLAS50 ; SET UP MSG CONTOL LIST FILEC MSAT,DLAV10,R0,#0,#0,DLAB55; MESSAGE TO DISC (TYPE I) DL°0 ;ACTUAL VALUE MOV O.LOW,R4  ;USE SEARCH LIMITS FOR MOV O.HI,R3  ; FILL LIMITS. JSR 5,O.ST BR O.DCD  ;EXIT ; ;INITIALIZE MEMORY BYTES. ; O.INIT: MOV #1,O.BW BR O.FIL1  ;LET O.FILL DO THE WORK ; COMMAND DECODER - ODT11X ; ALL REGISTERS MAY BE USED (R0-R5), O.ERR: MOV #'?,R0  ; ? TO BE TYPED JSR 5,O.FTYP ; OUTPUT ? O.DCD: MOV #015,R0 ;TYPE JSR R5,O.FTYP O.DCD4: CLR O.BW ;CLOS±åÀ ‡ +À5%÷ z2 ‚ƒƒlm €l ‚€m 44 ÀeÉ~€9À‡À ‡À ‡À‡À‡À$&†÷ ߀Àe&æf÷ ß„÷ âôw fWtúÿÀ5?� @�‡w Ýæþÿ…æ ÅEðÿõ‹¢5Ÿ•þÿ~ø9wœÝõ•­2Å C 5ó�û Ÿ•þÿA¢2D¤2w¦2ʺw¨2ƺý5€n5wVôµ@qô‹€wW¬f & ÷ HèÖ Â@œ2Dž2Cœà à Ä``¢~p:… æþÿŸKÌ¡ ¡ ‰$È ‚ µ „2ùÂÿÿµ�¬2B òŠ›Ÿ“þÿ¦÷ �ŸþÿW¬fff ÷ Øó… @À Ÿð  2€ 5ñž5 õ‹x~è:­2 �ð  2€Ÿ•²÷ ¤Óƒ…Â(XÂ÷ æÄò XÂe(¦X÷ Z½€ìô÷ Âð ó~@[wVÿsX³(X3 X3 "XÂ�Ws$X3 &X÷ Î÷ ª÷ ÒM÷  3 XæÈX÷ Ö M³ &Xó%&X÷ X÷ z÷ ¢MæÜX÷ `ñwèþæôXª~¸[÷ N÷ V3 &XÄÈX&ôÜ[æd÷ |Ö MC fÁXÂ(XæX÷ ’¼€ìô÷ Ö …Ä,XÅ÷ ³ &X×,&X´æd÷ 2Ö ‡ðÖ ?~0\…wfþæ&ff& ÀYÅ"XAaÁes!$XB3 *X DÔ! ! 3 Y³ *X Ä% !3 Y ÷ ^Ä• Îå÷ R … s!$XßÀ5Е s"XP~¨\ÀìY„ Ö …�€Ö ‡3 Y³AB25: FILEC MSAT,DLAV10,R0,#0,#3 ; ATTACH TO QUE TST DLAW21 ; IS THERE A SEQ NO. ERROR TO REPORT? BNE DLAB30 ; YES - GO SEND MSG TO INTERCEPT JMP DLAB70 ; GO SEND ACK ; ; ; ROUTE SEQ NO. ERROR MSG TO CONSOLE VIA INTERCEPT ; DLAB30: MOVEC 0,MESG1,TYPHL ; CLR MSG HDR MOVEA DLAXB0,MESG2,DLAXB5-DLAXB0 ; GET MSG TO MSG AREA CLR DLAW21 ´E ALL JSR 5,O.CRLS ;TYPE WHERE N IS THE TASK NO. O.DCD3: CLRB O.SMFD  ;SEMICOLON FOUND FLAG CLRB O.CMFD  ;COMMA FOUND FLAG CLRB O.MINS  ;MINUS SIGN FOUND FLAG CLRB O.TRC ;TRACE MODE FLAG O.DCD2: CLR R3  ;R3 IS A SAVE REGISTER FOR R2 CLR R5  ;R5 IS A SAVE REGISTER FOR R4 O.DCD1: CLR R4  ; R4 CONTAINS THE CONVERTED OCTAL CLR R2  ; R2 IS THE NUMBER FOUND FLAG O.SCAN: JSR 5,O.GET  ;GET A CHAR, RETURN IN R0 O.SCN1: CMPµþÿwœÜŸ•þÿ5Š¢5‡Ä wTýŸ•þÿwDýŸ•þÿôÅ@BœÂEÀÿƒ×p ÂBm°2Ê $÷ �ýÀ b@… u¬¬2wXýwˆûôµòw Ë~`;þõ愹悹ff ÷ 0ó·t¹·n¹w ìõàÀ?@€ ý52n5ý5v5ðŠ®2 ýn5Bª2‚ ÂEüÿ ‚œk5wüÀ ÷ œB†52rœ2Ù~Ø;rn5 rv5 ¦÷ bôtn5tv5ýn5ôÅÀw>þ… ÷ Tõ‹­2øÅ w@þB@Å °Š¢5ð•ÿÿ­2A¢2D¤2w¦2°¸w¨2¬¸ðН2 ýn5¦æº~P÷ ®À �÷52þ÷-¦À:þ�ææ÷5þ6  ·åþ·eþwXÿ÷-zÀþù€éwÄ÷-þþã÷ÿÿîý÷ºþz^6 ‡÷Eð„÷U0~÷Eÿ|÷Uv÷Eðj÷UPd÷Eÿb÷U„\ ÷EðP÷U@Jå~_÷EÿH÷U„Bw PÒÀ¦ÿ7  ÿ7МÿŠÀ   D˜^ € „  ‚ Â5øq˜^Ñ W !îÄ5 îƒ ÷ ^ÿêƒÂíVÿ‚ ÂÂÝNÿ·Nÿ÷E€Jÿ„  Á~x_ƒ Ã5úq˜^w äч÷U€.ÿùÔhÔhÔhàh��¤.¼F`I@kølkkkkkkkkkE~ð_ ÷蟢ÿ÷òŸàŸæ·”ÿ÷•ÿÿ’ 7ŠŒ wà÷ÈŸ‚ÿw â7ŽÆª_ÄÅjÃÕjw À 7x»OVE ID TO ERROR MSG 2$: .WORD 0 .WORD DLAXB2 .WORD HDRLTO MOV R3,R5 ADD #OUTSEQ,R5 MOV R5,4$ JSR R5,BASCNV ; MOVE PREVIOUS SEQ NO TO ERROR MSG 4$: .WORD 0 .WORD DLAXB3 .WORD HDRLSE CNVBA1 DLAW20,DLAXB4,HDRLSE ; MOVE NEW SEQ NO TO ERROR MSG JMP DLAB18 ; ; ; SEQ NO. = SEQ NO. OF PREVIOUS MSG RCVD -- SEND MSG TO INTERCEPT ; ¼1  ; SET INDEX FOR NEXT SEARCH CMP R1,#O.CLGT ;IS THE SEARCH DONE? BHIS O.ERR  ; OOPS! BR O.LGL1  ;RE-LOOP O.LGL2: TSTB O.MINS  ;IF MINUS WAS NOT TYPED BEQ O.LGL4  ;DO NOT NEGATE K NEG R4  ;OTHERWISE, TAKE 2'S COMPLEMENT. O.LGL4: TSTB O.CMFD  ;IF A COMMA NOT TYPED, BEQ O.LGL3  ;SKIP NEXT INSTRUCTION. ADD O.BIAS,R4 ;OTHERWISE, ADD RELOC. BIAS TO (R4) O.LGL3: CLRB O.MINS  ;REINITIALIZE MINUS-TYPED SWITCH FOR NXT SCAN ASL R1  ;MULTIPLY BY TWO ½ìýàý÷èýPÀæäý÷ 4Úƒ —v—t%~¨>÷E0Àý·P¼ýÂÆýÂEüÿƒP÷&ÀÒ÷ ÀQ� ÷•ÀW¬f & ÷ ¼ãÖ Äj<Ãh<ŸKÌ¡ ¡ ÉB òŠ›·“îÀ¦÷ .·“äÀ1 W¬ ~ ?f¦÷ vïŸ÷ 8ý�wþw�þ÷ ž¿‚�÷5–¿÷�¿÷ŠýwþÀÎÁý÷ 0³÷58p¿÷j¿÷5�b¿îè7 ýwÜþüæ„<÷ ¸ðw6þy~˜?1À@¿‡éº?~@€d¾w w XÄ�ZÿŒŒŒ,~h`7‘’Ÿ7ŠJ ÷•ÿÿF ÷à’Ÿ÷gŠŸ×!†`÷0wæÆ ÿ& ÷ ÿæ�ŸæŠŸ÷•@Äžà D÷‹ A „ &DCƒcà ÷è w @w Ü„·Šê w þ ¸~à` '  7ŠÖ Ä „ ‚ ¦&w Ä„‚À•\w ÄwXw Èw �Ä øfw Š÷•‚ €w ’7ŠŽ wtwhw šÄÿj  Ä%kû‚ÀEøÿÄ Ü~XaÄeª_‚ whÄåøj÷ÀD ÁÁj÷ ôÀ=w T·ŠD À�= w HÀ�6 w @À�/ w 8À w 0w 8  7� w *7� w "7Š 7� À´jÁÁj÷ XÄ ~ÐaâÂwð7Šæ  wèw (‚b‚ ‚ ·¼wúw ‚øw �A�Á � � B`ï÷ €÷%’¿ AND ACK TO TERMINAL ; DLAB45: JSR PC,INTHDR ; CHANGE HDR FOR INTERCEPT JMP DLAB70 ; GO SEND ACK TO TERMINAL ; ; ; SEND NAK ; DLAB50: JSR PC,RELBUF ;RELEASE ALL BUFFERS JSR PC,SNDNK ; SET CONDITION TO SEND NAK JSR PC,BDREP ; ACCOUNT FOR ERROR JSR PC,ERRPT ; REPORT ERROR À JMP @O.LGDR(R1) ;GO TO PROPER ROUTINE O.LGDR: O.SEMI ; ; SEMICOLON O.WRD ; / OPEN WORD O.BYT ; \ OPEN BYTE -BACK SLASH O.CRET ; CARRIAGE RETURN CLOSE O.REGT ; $ REGISTER OPS O.GO ; G GO TO ADDRESS K O.OP1 ; O.NEXT MODIFY, CLOSE, OPEN NEXT O.ORPC ; "BACKARROW" OPEN RELATED, INDEX - PC (BACK ARROW) O.OLD ; < RETURN TO OLD SEQUENCE AND OPEN O.BACK ; ^ OPEN PREVIOUS (UP ARROW) O.COMM ; , COMMA. SEPERATES REL.REG. FROM INCREMÁ\3\3!ApBöDþDEG~ˆ@¢@¢@@±~Aw ,ð w $ðÀ w ðÀw ðÀ�f÷ r×…1�æþÿÀŸÉ FŸ“þÿ€ O~xAñ%?†ñ%ô;€ ÷ — 5‚€ ƒœb@ÃEàÿñ� à ó n.*�€ —-ÜG%ÃdØ³Š›ñŸæàý÷ àÖ^wÖý· ¢þŸ•þÿw �ïöþÿ& ÷ :ÝæT#æþÿ–~ðAŸ÷ vþŸ•þÿ‡w¬· fþŸ“þÿæ–ý÷ rÖ�wÂÂŽ…Ö w|÷‹’û 7Š‚wr÷•ÿÿxwh·Šq~Hbu ÄEøÿÄ 7È_~wh÷‹^ ÄEøÿÄ Ã tÈ_Pà õôÿÿÈ_Iw ,Û×-ÉÂ% w   ÿÿÀ=w $ÀÁø7 Ä íT~ÀbÈ_À=w ÀÀe0w úÀ,w òÂ%ÀÎ@w Œk÷‹ÌÄÊüÂeÀ=÷¤w Â@w fw¬üw’·Šºw¢À=w ¤ w  ÿÿ!~8cÀrw 8AÀe0w „À,w |æV÷PÀTw ·D-À ÷<@7ìÈ_:€ â÷(÷‹6 À4üÄ,üÃ*üw ä÷ ðÀ?w "7 5~°cüw 7Š7Š7Š    w À%0 ‚À%7‡ÀEøÿÄ Ä Ã JSR PC,DLAS15 ; CLEAR ERROR FLAGS JMP DLAC55 ; GO START OUTPUT ; ; ; SET STATE TO DISCONNECT ; DLAB55: JSR PC,STPLNK ; STOP THE LINK INTERRUPTS JSR PC,RELBUF ; RELEASE ALL BUFFERS ; MOV DLCTM1(R1),-(SP) ; STOP EMT DQTIME ; THE SHORT TIMER TST (SP)+ ; AND JSR PC,DLAS26 ; LONG TIMER MOV DLCTÄENT O.OFST ; O OFFSET O.WSCH ; W SEARCH WORD O.EFF ; E SEARCH EFFECTIVE ADDRESS O.BKPT ; B BREAKPOINTS O.PROC ; P PROCEED O.ORAB ; @ OPEN RELATED, ABSOLUTE O.ORRB ; > OPEN RELATED, REL. BRANCH O.SNGL ; S SINGLE INSTRUCTION MODE O.REL ; R RELOCATION PROCESSING O.CNS ; C CONSTANT REGISTER PROCESSING O.MIN ; - MINUS, NEGATES NUMBER TYPED IN O.FILL ; F FILL MEMORY WORDS FROM THE CONSTANT REGISTER O.INIT ; I INITIALIZE MEMORY BYTES FROÅtþ÷βpþ÷ „Ÿ· |ó òÕ€b@Ÿ“þÿ@œÀ xn@À$&†÷ `րР&æÅLý÷ HìwLÀwf�~hBÀw^ñ‹€ ÷ tñ÷öý7ôý@÷ ¤÷®Bþ÷•ýý7Šþ÷äýþæ�@÷ ó¥÷ þ÷ ÿ ÎýÖ÷ æ@ }òµ@b@` ƒØ?„Ä?á o‚~àB7˜ý2`Ä?‚ æ¨?÷º?Äü7 ¾ü÷ ´ò÷C’ý÷•�ý÷•—ý÷tý˜ýæ�@÷ ”ò‡÷ Ž÷ š÷ |ÃZý÷ 8÷:C\ý‡÷ r÷ ~÷ `ñ‹ €Ã(ý÷ æP@U~XC÷ Tòñý1ŠòÅ€b@@&& ÷ &ßÎþÿŸw"ü ÷¤?ü¡7 ü¡7 üÉðŠ›Ÿ“þÿ&÷ šŸ÷ Æü7 ¶üw>þwHþ‚ 7 Àü7ºüÀÖü÷ ¬~ÐC÷´üÆÄ `‚ ð 1 ãj� W Ö†ø÷‹Ú ÷‹·ÄmÊ7ŠÈÁ ydPd^dhd¼d>affÌdæa~(dÈd"eFb–eâeÞe4eÀføab*b^bðbc€cžc$cha®`’`ƒ·Šh7Šc´÷JD ÷@ 7<76÷%.Ä*„ î‡À"ÀŸw â÷%‹ ~ dÀ•=w (ÀŸw À• w wúþ÷ ÖwêþwÞþ·Šì÷ Þù÷ À÷ Þ÷ÒÎ7ŠÒ÷mÄÄ÷ÀÀw ºæ´÷®À¬w ¼·¢Ö%À/w ö~e¶¯À\ú÷ ˆÔ÷ j÷í~~ÜÀkÄ Ã … L‡Å ÄeØ_  !æ_B†Ô ù!æ_=‚L® !6‚4Ø_4 ê_¤ Àk!ž‚4Ø_ôü_4 h~�eê_Ô ô÷%À w *à ÇM1(R1),-(SP) ; START MOV #ALTMR,-(SP) ; THE EMT QTIME ; SHORT TST (SP)+ ; TIMER BEQ 2$ DEBUG ; ERROR 2$: MOVB #DISCON,DLCSTE(R1) ; SET STATE TO DISCONNECT JSR PC,DLAS15 ; CLEAR FLAGS JMP DLAA55 ; GET NEXT LINK ; ; ; PROCESS EOT RECEIVED ; DLAB60: MOV #ALTM2X,DLAW45 ; START THE JSR ÈM THE CONSTANT REGISTER O.RCMP ; ! PRINT CURRENT OPENED ADDRESS IN REL. FORM O.MOD ; X RETYPE OPENED CONTENTS, MOD40 O.ALF ; A ACCEPT ASCII INPUT O.DMP ; DUMP ROUTINE O.TRAC ; TRACE ROUTINE O.LGL = .-O.LGDR ;LGL MUST EQUAL 2X CHLGT ALWAYS ; SEMI-COLON PROCESSOR O.SEMI: MOV R2,R3 ;A SEMI-COLON HAS BEEN RECEIVED MOV R4,R5 ;NUMERIC FLAG TO R3, CONTENTS TO R5 INCB O.SMFD ;SET SEMICOLON FOUND FLAG CLRB O.CMFD ;RESET COMMÉ÷ôC¸ü÷•µü7Š¿ü7 Âüæ�@÷ Æñ‡÷ ¸÷ Äð@÷xzü÷ œ÷`rüË ÅœÅE€ÿ… À`üZó-\ü÷Rü÷Hü÷rü@üÃe ÷ <üä· û~HDbü÷-^ü:üÌ÷ ,ü ƒØ?„Ä?áÀü À1 wjþ‚ ÷ ü8÷ Dü÷• ü÷•ü÷èûüæ�@÷ ñ‡÷ ÷ ÃÒû÷ÊûómÎûóíÈû÷Â~ÀDÆDÐû‡÷ æ÷ òñ²û w$þ3 ¯7¢û÷˜û÷Âû�ûÅÀwØ÷€E€û÷žExû÷¦Epû@÷ ÷:Ezû÷•wû÷•û÷\û€ûæ�@÷ |ðŸ•þÿ~8E‡÷ r÷ ~ÃBûË Hÿ .ûó‹ €@÷ ”ÿ ûæP@÷ Hð÷pE&û‡÷ <÷ H÷ *wâý œÂE€ÿòµ@b@ól3 ‡óÕ€‡óÅ€ÊÅíÅ Å @w Â@€ ‡À%€ÿ À%÷ àw ¨· ØwÜýwÈý�  à ù÷ÀÂÎùÄÈùD · Æù¼‚€Á &Cr~f@AƒEPA&f¦æw ’€w  À/w ¤€w Hƒ‚�„w ÞÒ Û åƒ`ƒ ƒ Å ßÀEÿ�¯À € € €` Õ÷‹V·à µ÷•F… °‡Å w8ùÆ~€f÷•àx™w °7Š-÷U&ù÷‹"÷Eùw b7Dæùæù æùÎE·@™÷‹üŠÀ�òÀ‹† „à pê_÷•à™w V×­ÔÏ÷‹ÊÌ÷•à™ ~øf·Š¿÷U¸øÐ·°ø·®ø÷•ª7¸÷‹¡·w @÷‹˜ø€Å��øÅ�Œø¯ŒŒŒŒw‘À˜Åvø÷‹t�å wjøÄt!Ø_Ä Ä úw ¼w JÄÖjÃ×jw ÝË PC,DLAS25 ; REPLY PERIOD JSR PC,RELBUF ; RELEASE BUFFERS ; MOVB #IDLE1,DLCSTE(R1); SET STATE TO XMT IDLE 1 ; JMP DLAC10 ; SEE IF OUTPUT MSG AVAIL FOR TERMINAL ; ; ; SEND ACK TO TERMINAL ; DLAB70: ; JSR PC,SNDAK ; SET COND TO SEND ACK JSR PC,OKREP ; UPDATE MSG COUNT JSR PC,ERRPT ; REPORT ANY ERROÌA FOUND FLAG BR O.DCD1  ;GO BACK FOR MORE ; PROCESS / AND \ - OPEN WORD OR BYTE ;INPUT - IF R2 IS NON-ZERO A NEW REXP HAS BEEN TYPED IN ;INPUT - -ADDRESS OF WORD TO BE OPENED IS IN R4 O.WRD: MOV #2,O.BW  ;OPEN WORD BR O.WB1 O.BYT1: ROL R4  ;GET THE ADDRESS BACK O.BYT: MOV #1,O.BW  ;OPEN BYTE O.WB1: TST R2  ;GET VALUE IF R2 IS NON-ZERO BEQ O.WRD1  ;SKIP OTHERWISE - REOPEN PREVIOUS LOCATION MOV R4,O.DOT ;PUT VALUE IN DOT MOV R4,O.CAD ; ALSO IN CAD O.͇‰ Ú~°EŸ•þÿ1�w °ëއ÷ Ôú‡Ö À1�÷ ÐwŒýÀ 1�÷êE¬ú‡÷ Âñ Ã*þÀ €ÄE€Wq Ca 3 5„ Ãe ù‡À Åœ5ÅE€ÿq¡r~(F òÃe5‡¦À 7 Lú —r ·@ú×p Ãe°@÷6úCœ ÷�8úà ÷œn.@ú· <ú‚‡Kó úsœ ³�ñ‹€óÕ€s òµ@b@óàùól­~ F‡BœÂE€ÿ‡ÁØù÷Öù0®‡wNwT÷ NÓûö5À÷¦f&F ‚ÂU€ß ÿèô�a €Õå ;âÁ ÓÁEàÿ¼¬HÛœèH7œ$IªÿÀ ´~G74H ÿz@WtüÿÀEðÿÁEðÿÂå·†ÿÀ ’~€��‚��·ÜÒÆhÿæfÿ¦ææ�`ÿœþÿþÿ‚“\ÂE€ÿ‚aÎ~pgž@÷e>ø%Ä•tØ_7‘2ô ê_ªôê_w „ÀBw .À�Àe`€ w À;w ÷ðÄ�úØ_w úwàû·â·à÷ƶ_f&æ¦fæÌš~ègæ €Ö ·Â�‚ƒ„…ƶ÷æ°€Ä4Ø_ü_üüØ_Ä Ä ÷…÷�N—™÷�L—”7ŠB—7ŠB—÷‹>—ý€…w r÷‹2—ý€÷5&—÷‹ —ý€÷�g—÷�b—…q~`h÷‹V  <ü_Ø_„ „ !ø…ÃÄþÿ÷%&Ãå„ À&Äe N @ Ä üÀe0w &à óÀ• Ö ÁÈ_Àÿÿ …÷‹ –ý€7�¥~Øhœ–…÷‹�–ý€À�Œ–ÀE€ÿÀ¥÷‹Ð  w Ðÿí÷‹¾À¥ ç…Ä ã‡•w ¶ÿú×­R–• À•^w ¤ÿÀ•Uw œÿƪ_wrúÏRS TO OPERATOR JSR PC,DLAS15 ; INIT FLAGS JMP DLAC55 ; START OUTPUT ; ; IDENTIFY CALLER ; DLAB80: JSR PC,DLAS40 ; GET USER ID BRJ DLAB55 ; DISCONNECT IF CANNOT IDENTIFY CNQRTE MESG2+HDRL+THDRTE,R0,DLAB55; GET ADDR OF QUEUE MOV R0,DLCQU(R1) ; AND SAVE IT ; MOV DLAW13,R0 ; CALC MOVB R0ÐWRD1: CMP #1,O.BW  ;CHECK BYTE MODE BEQ O.WRD2  ;JUMP IF BYTE MOV O.CAD,R4 ASR R4  ;MOVE ONE BIT TO CARRY BCS O.BYT1  ;JUMP IF ODD ADDRESS MOV @O.CAD,R0 ;GET CONTENTS OF WORD BR O.WRD3 O.WRD2: MOVB @O.CAD,R0 ;GET CONTENTS OF BYTE O.WRD3: JSR 5,O.CADV ;GO GET AND TYPE OUT @CAD CMP #1,O.BW ;CHECK IF BYTE MODE. BNE O.DCD3  ;IF NOT WE'RE DONE. ELSE: MOVB #'=,R0 ;TYP "=" AND THEN THE ASCII BYTE JSR 5,O.FTYP MOVB @O.CAD,R0 JSR 5,O.FTYP MOуœ×tüÿÃEñÿß ÿêôƒÃEà×túÿß`êô~~�GÊEÀÿÊU Ö‹€‚ƒœ ×tüÿÃEñÿò ÿƒ ÃEà×túÿò`Ÿìôƒ ÃEÀÿÃUÀòƒ‚Þ ŸÆJÒ&&7Ôþ7ÎþÁ 0C~ÀeÀEà&À¶þÁ$~H´þßU0þÿ† Ö €�‚Þ·Ö ØæòѦ÷ ,Ñ^à ž" f!x ÔÒ,%¾%”<†1à-L0¸5"Y¤Q¬Rì~€H0A8ABAÜ1°5&HD2°6B!=~øH0033 ˆˆˆÒ… ÷ÿÿn÷ÿÿj ~Pi ‚7,È_X‚ÁRìÈ_Á-P‚Ð ðÀD…w@€ 78À ô÷%(!ùƒ… �„ ú ÷%‚??‘‡ÃájÃâjÄàjw Nÿ…÷%Ú~Èiüõw ªþ…÷Ú77Ðw ZÿÀ Àe0w àþÀ,w Øþæ²÷¬À°w pþ· ÷ÊœÀÆ…ÀÀ÷ºŒÓÄýÿ C”Ã¥ Ã¥$ × A‡£~@jÃå ÃåÃå Ãå    ¦  ‚eÂ`„ ä�‡Åýÿ¨j ‡€âƒ ûË× Ãe ÃeÃe Ãe Ñ�Ò … è€Ð ‡@(6x6xž~¸jÿ@€ ODT-11R V003ABEøl–m–m *;/\ $G _<^,OWEBP@>SRC-FI!XASPMÓ,DLCTRM(R1) ; SAVE TERML INCB DLCTRM(R1) ; NUMBER (INDEX+1) ADD #QUDTC+NSLINK,R0 ; QUEUE MOVB R0,DLCQNM(R1) ; NAME FOR TERMINAL MOV DLCQU(R1),R0 ; GET QUE ADDR BIT #MSQF2,MSQIE(R0) ; INPUT INHIBITED JEQ DLAB90 ; UPDATE CONNECT COUNT ; ; ; SEND CANCEL TO ABORT CALL ; DLAB85: JSR PC,SNDCN ; SETÔVB #' ,R0 JSR 5,O.FTYP JMP O.DCD3  ;GO BACK TO DECODER ; PROCESS CARRIAGE RETURN O.CRET: JSR PC,O.CLSE ;CLOSE LOCATION O.DCDA: JMP O.DCD4 ;RETURN TO DECODER O.ERR3: JMP O.ERR  ; INTERMEDIATE HELP ; PROCESS , OPEN NEXT WORD O.OLD: INCB O.SEQ ;SET FLAG TO LATER RESTORE CAD O.OP1: TST O.BW ; RECEIVED O.ERR2: BEQ O.ERR3  ;ERROR IF NOTHING IS OPEN JSR PC,O.CLSE ;CLOSE PRESENT CELL TST O.SEÕˆˆˆ ˆˆý~pIÿÿÿÿ¶~èIhVøIøI2JøI ÿÿhVTJTJŽJTJ ½~`JÿÿÿÿÛ~ØJÖCFRBÍ~0kPö2?®úo~¨kˆ¿¯      ÀI’æ Ö    ÷•V÷úZ÷CZi~ læè ˆ÷ Fÿ÷BB÷2Šæè ˆ÷ .×-(öÿ÷•÷lhæèˆ÷ ÿˆTHIS IS TSTBUG C1 TYPE YOUU~˜lR NAME AND IT WILL BE PRINTED ON THE LP! × CONDITION TO SEND CAN JMP DLAC55 ; START OUTPUT ; ; ; RECORD CONNECT ; DLAB90: INCB DLCCON(R1) ; DEVICE CONNECT COUNT INCB OUTNUM(R3) ; TERML CONNECT COUNT JSR PC,TETCMP ; GET ADDR OF TERML ERROR TABLE INCB TETCNT(R5) ; INCR TERML ERROR COUNT JSR PC,ERRPT ; REPORT ERROR, IF ANY JMP DLAB15 ØQ  ;SHOULD CAD BE RESTORED? BEQ O.OP5  ;BRANCH IF NOT MOV O.DOT,O.CAD ;RESTORE PREVIOUS SEQUENCE CLRB O.SEQ  ;RESET FLAG; NO LONGER NEEDED O.OP5: ADD O.BW,O.CAD ;GENERATE NEW ADDRESS O.OP2: MOV O.CAD,O.DOT ;INITIALIZE DOT O.OP2A: JSR 5,O.CRLF ; MOV O.BW,-(SP) ;SAVE BW MOV #2,O.BW  ;SET TO TYPE FULL WORD ADDRESS MOV O.CAD,R0 ;NUMBER TO TYPE JSR 5,O.RORA ; CHECK FORMAT MOV @SP,O.BW ;RESTORE BW CMP #1,(SP)+ ;IS IT BYTE MODE? BEQ O.OP3 Ùÿÿÿÿc~PKÿÿÿÿê~ÈKÿÿ`IžIøITJ’JÐJKLKŠKÈKÿÿÿÿÿÿÿÿÿÿ8N p~@Lÿÿ€¶Ž¦6 öþÿŸ~¸LÁ ƒÚ]~mÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ7Ò ÆŽÃƒÂ<~ˆm�÷ , À0œŽ-~<°÷ ^’ÊX’÷ T’òN’÷ H’òB’÷ <’ò6’÷ 0’ò*’÷ $’ò’ ÷ ’ò’ ÷ ’ò’÷ ’'~n÷ú‘$ÿ÷ ô‘÷�î‘. ĈÒw N 7ŠØ 7ŠÕ ÷•ÿÿÑ wÞà B÷‹É ? „ &DCƒcà ÷¤ w  w ¢ „·Š© w Î   %  7Š• Ä~ „ ‰~xn‚ ¦&w € „‚Û ; PROCESS INPUT MSG ; ; ; * TRANSMIT IDLE 1 SERVICE ; DLAC10: MOVB DLCQNM(R1),DLAV10+MSPNUM ; GET NAME OF QUE TO MSP LIST JSR PC,STPCOM ; TIME FOR STOP COMM ? BR DLAC25 ; YES - GO SEND NULL MSG MOV DLCQU(R1),R4 ; GET Q ADDRESS BIT #MSQF12,MSQWAT(R4) ; WAITING SERVICE ? BNE DLAC27 ; YES - GO SET PRI=2 TST MSQCRT(R4) Ü ;JUMP IF YES MOV #'/,R0  ;TYPE A / O.OP4: JSR 5,O.FTYP BR O.WRD1  ;GO PROCESS IT O.OP3: MOV #'\,R0  ;TYPE A \ BR O.OP4 ; PROCESS ^, OPEN PREVIOUS WORD O.BACK: TST O.BW  ; ^ RECEIVED BEQ O.ERR2  ;ERROR IF NOTHING OPEN JSR PC,O.CLSE SUB O.BW,O.CAD ;GENERATE NEW ADDRESS BR O.OP2  ;GO DO THE REST ; B HANDLER - SET AND REMOVE BREAKPOINTS O.BKPT: MOV #O.TRTC,R0 ASL R4  ;MULTIPLY NUMBER BY TWO TST R3Ý÷ è ð‹/�wRBLw…… wÂe÷ŸÊ Ÿ�þÿëæ÷¾÷€¼÷ ºŠ²²°ŠLÅÅ þ÷ žp�÷‹˜€wŠÃŒø~0M÷†÷„÷ œÊÕÄŠ„ ÄmØþÅÅ þ÷ fT�Ÿ“þÿð‹/�EL5ôÿÅ2L&÷ Ë„Tþ€Äå:̃CìLô�4�ô˜U ô• Ãe0ôÃe»~¨M ôô8§…Å tH04Š3Äe&Ê‹€÷ Öç÷ àçô �ñ• *Ÿ•þÿ‡ö ¶ �1Š*Ö óÁe8f÷ \ �D„ À w*BLŠ~ NæŸ2¬Lþÿ+ð‹L €ò ôÿ ÷~÷U€|÷ z²ŠÿÿÄ…÷ d„ôÿBÁ Ä w²þÊ•Ÿ“þÿ&÷ Ê„wÿB®Ÿ�þÿ…… wÞÀ•\w ‚ wlw ˜ �Ä úfw T ÷•B €w R 7ŠQ w†wrw n ÄO  Ä%aû‚ÀEøÿÄ ÄeŽ‚ w~ÄåH÷À Á„Ì~ðn÷ ´ À=w  ·Š À� w À�ù w  À�ò w úÀ w òw   7�Ö w þ7�Ï w ö7ŠÉ 7�Ä ÀtÁ„÷  Ä¢ Âw7Š©   wþw ë~ho(‚b‚ ‚ ·| ww ‚øw �A�Á � � B`ï÷ < ÷%R ÂN …Ö w†÷‹U û 7ŠD w„÷•ÿÿ: wz·Š8  ÄEøÿÄ ô °€wR7É~ào° wt÷‹  ÄEøÿÄ Ã t°Pà õôÿÿ°Iw äÖ×-Ô ÄÂ% w R ÿÿÀ=w ÜÀ¶ Á® 7d Ä í°À=w ¾ÀR ²ß ; ARE ALL OUTPUT QUEUES EMPTY? BEQ DLAC19 ; YES - TEST NO. OUTSTANDING REPLYS ; CLRB DLCPRI(R1) ; SET TO HIGHEST QUE PRIORITY DLAC16: INCB DLCPRI(R1) ; ADVANCE QUE POINTER DLAC17: CMPB DLCPRI(R1),#3 ; IS PRIORITY = 3 BNE 2$ ; NO BITB DLCASR(R1),#ASROFF ; YES - IS TERMINAL ASR OFF LINE? BEQ DLAC18 ; YEà BEQ O.REMB  ;IF R3 IS ZERO GO REMOVE BREAKPOINT ASR R5  ;GET ONE BIT TO CARRY BCS O.ERR1  ;BADNESS IF ODD ADDRESS ASL R5  ;RESTORE ONE BIT ADD #O.ADR1,R4 TST R2 BNE O.SET1  ;JUMP IF SPECIFIC CELL O.SET: CMP R0,@R4  ;IS THIS CELL FREE? BEQ O.SET1  ;JUMP IF YES CMP R4,#O.BKP+O.ADR1 ;ARE WE AT THE END OF OUR ROPE BHIS O.ERR1  ;YES, THERE IS NOTHING FREE TST (R4)+  ;INCREMENT BY TWO BR O.SET O.SET1: CMP R4,#O.BKP+O.ADR1 BHI O.ERR1 ábÿ—¢ƒ~˜NÂeõŸ—¢îʲ²w(ÿð‹/‘€Ÿ“þÿÄ  ‹ô‹/€Å AL E… E’W¡ÁeõÄ é… CÝm EÜÅ f†÷ ~…EO~OÀÿÅ éÅp¡'LåŸÊ‹w¶þE’ÈW¡ÅEõ‹›ô÷ ¼Ÿ“þÿf÷ ÒÖ ó /Ÿõ•*ñ µŠ*Ÿ“þÿ³Äÿ3�Ãÿó•óÿó•Ëÿó TÌÿÄÄeðÿ�~ˆO3Ôÿ3Úÿóe ÚÿóP¥ØÿÃeÈÿæ÷ æó  w.þ ŠÃeÀÿÄÁ wÂýA÷ `w&�Žæ—þÿ÷ LŸ1Š*Á 1 †ð‹/^€7ÀÿÈ÷Æ÷ ø ðН~PL þ÷ °K�Ÿ“þÿÀÁð‹L�BLð‹/ €ƒƒ à ÃE€ÿÂeõ‚øÿÊ‹€ Ñ  äwâ~XpÀe0w ²À,w ªÂ%À„ @w Dq÷‹… ĨüÂkÀ=÷Z w z@w wŠüwš·Šþ w®À=w \ w ¼ ÿÿÀ( w ðGÀeß~Ðp0w <À,w 4æ ÷ À w Ì·ú3À ÷òö7ì°ð€ â÷Þ÷‹ï ÀüÄüÃüw – ÷ÀðÀ?w ÚÀ w Ò7 ªw ¤~Hq7Š·7в7ŠT 7Š¥    w ÌÀ%0 ‚À%7‡ÀEøÿÄ Ä Ä `‚ ð 1 2� W Іø÷‹  ÷‹dÄm 7Š Á y.hv€Ô>zäæà£~Àq:F®úöLÂø*hú&Ѝ.h²öZ ƒ·Š7г÷òD ÷è 7ä7Þ÷%ÖÄÒ„ î‡ãS - DON'T XMT BATCH 2$: JSR PC,DLAS50 ; SET UP A MSG CONTROL LIST FILEC MSSN,DLAV10,R0,#1,#0,DLAC18; GET A MSG FROM QUEUE BR DLAC30 ; MSG FOR OUTPUT ; ; ; DLAC18: CMPB #BATPRI,DLCPRI(R1) ; END OF PRIORITIES ? BNE DLAC16 ; NO - CONT ; DLAC19: TSTB OUTEMP(R3) ; MESSAGE COUNT = 0 ? BEQ DLAC25 ; YES - GO SEND NULLä ;ERROR IF TOO LARGE MOV R5,@R4  ;SET BREAKPOINT BR O.DCDA  ;RETURN O.REMB: TST R2 BEQ O.RALL  ;GO REMOVE ALL CMP R4,#O.BKP BHI O.ERR1  ;JUMP IF NUMBER TOO LARGE MOV R0,O.ADR1(R4) ;CLEAR BREAKPOINT CLR O.CT(R4) ;CLEAR COUNT ALSO O.DCDB: BR O.DCDA O.RALL: CLR R4 MOV #O.TRTC,R0 O.RM1: CMP R4,#O.BKP+2 ;ALL DONE? BHI O.DCDA  ;JUMP IF YES MOV R0,O.ADR1(R4) ;RESET BKPT MOV #BPT,O.UIN(R4) ;RESET CONTENTS OF TABLE CLR O.CT(R4) å�ýŸƒÙÃE€ÿÕŸƒ’Òƒ÷ 4÷B¸~xP÷€@÷ >Ãà þ÷ 0 �÷‹*€Ÿ“þÿð‹/Î�Ôw†üÁ BL÷ (�„ôÿ‚øÿ—¢ôÊÕ&÷ ¶Ç„Ÿ“þÿÁ w¦üò%äÿ¦Îeäÿ÷ äÅÖ ž~ðPò‹ÿÿ¯¦ôÿ÷ †Ç·¸ ÷U¶ ÷ è 2Šÿÿ2 ôÿwêþæ—þÿÁüÈ÷ 4 ð‹L3ƒ’à 0À L€ Ÿ÷ ˜÷ rfƒøÿ×¢Ã׬*÷ x÷ RÐ~hQð�CƒàÅeÀÿõ�‚øÿ� w´ý÷ PÞÁŠÈ÷ �´ ñ•*wDü÷ xÈ5×-nÈ1æþÿ怟×\È÷ NÍÁöÿñ•*ŠþÿæT#& & ÷ F�~àQð‹/�÷ <ŸÊ•ñ•*Á À À 8p†:p†8Ö ·•ê­‡æÀÊÀŸÄw Œ÷%¸ˆ~8rÀ•=w ÒÀŸ¬w ÊÀ• w Âwôþ÷ zwäþwÐþ·Š–÷ †ù÷ d÷ ˆ÷zv7Š|÷mll÷hhw læ\÷VÀTw d·JÖ%À/w Ä~°r`¯À\ú÷ 0Ô÷ ÷í&&ÜÀÆÄ à … L‡Å ÄeÀ  !ÎB†Ô ù!Î=‚L® !6‚4À4 Ò¤ ÀÆ!ž‚4Àôä4 ù~(sÒÔ ô÷%ºÀ w Ôà ÅíªÅ Å @w l@€ ‡À%€ÿ À%÷ ˆw R· €wÖýwºý�  à ù÷hšùÄ”ùD · ’ù¼‚€Á &C¡~ s@AƒEPA&f¦æw D€w HÀ/w N€w òƒ‚�„Ò Ý çƒ`ƒ ƒ Å áÀEç MSG ; CMPB #OUTLIM,OUTNUM(R3) ; CALL LIMIT REACHED ? JNE DLAA55 ; NO - GET NEXT DEVICE CLRB OUTEMP(R3) ; CLEAR OUTSTANDING CLRB OUTNUM(R3) ; COUNTS TO STOP REDIAL BY TERMINAL ; ; ; PREPARE NULL MESSAGE ; DLAC25: TSTB OUTEMP(R3) ; MESSAGE COUNT = 0 ? BEQ 6$ ; YES - USE ETX MOV #ETB,DLAX63 ; Eè;CLEAR COUNT TST (R4)+  ;INCREMENT BY TWO BR O.RM1 ; PROCESS O, COMPUTE OFFSET O.OFST: CMP #2,O.BW  ;CHECK WORD MODE BNE O.ERR1  ;ERROR IF NOT CORRECT MODE MOV #' ,R0  ;TYPE ONE BLANK JSR 5,O.FTYP ; AS A SEPARATOR TST R3  ;WAS SEMI-COLON TYPED? BEQ O.ERR1  ;NO, CALL IT AN ERROR O.OF2: SUB O.CAD,R5 ;COMPUTE DEC R5 DEC R5  ; 16 BIT OFFSET MOV R5,R0 JSR 5,O.CADV ;NUMBER IN R0 - WORD MODE MOV R5,R0 ASR é…CÀÿÀð‹/€ Á BL �� ÁE€ÿÂeö€ êÎ AB~XRÆ çÍ•Aw²Ÿ�ÁE€ÿ�AœmÁEÿC Ãð 'L Ö A÷ dŸ“þÿŸ�þÿ¾Ÿ�þÿÍ÷ pÇw ªÞÁbÇW  æþÿŸ÷ \Ê•Ÿ•ë~ÐRþÿw –Þ‡�Žæþÿæ÷ <² —¢Ê•ð‹/€wÿÀ LÃeäÿ3 ææþ÷ ¸ÃÖ ñ•*Ö w¾úÊ•ð‹/èô�6 æþÿ@œ ÷ j~HSþ € ÷ ôüð‹/ÄLÄeäÿŸô ¶ Úô•ÿÿ Ÿ“þÿ&÷ PÃÖ Á ŸD†Êå2 � ñ•*à &÷ ÞÄ æ:÷ ÔÄ3:·—¢… � —~ÀSC÷ â& fæ€ðŠLw"ù2 ¥êÿ�¯À € € €` ×÷‹¹à ·÷•õ… ²‡Å wù7Šæã~t÷Uù÷‹Ú÷‹Õ÷Eîøw P72æâøæÜø÷‹½•À�³À‹‘ �à pÒ×­ŸØ÷‹”Õ·Š�÷Uªøß÷‹‰w°ü÷�¤ø`÷@jÄ”ø˜~�tÄ5óÅŒø!ï‚÷•< ÷ ÷ îÂe÷ äÂe!‚ÀEøÿõÀD÷ Õ!çƒwfü÷‹%wLü×=<øú÷-6ø2øö‡·Š7Š÷�*øä÷Hîþ~u÷•<6÷øø÷ øÞwöþ·ú÷·ø÷÷•Ó7÷‹ÊwÚþw ^÷‹Þ÷€ Å�Ö÷¯ŒŒŒŒwѦŠÅÀ÷÷‹œ�÷‹—@å w®÷Ät!ÀÄ Ä úw ó~€uxÄ$Ã%w à@÷e†÷$Ä•tÀ7‘[ô ÒëTB TO NULL MSG BR 8$ ; CONT ; 6$: MOV #ETX,DLAX63 ; ETX TO BUFFER 8$: MOV #DLAX60,DLAW50 ; SET PARAMETERS MOV #DLAX64-DLAX60,DLAW51 ; FOR DATA MOVE (FROM,CNT) JSR PC,THDRDT ; PUT DATE IN HEADER MOV #'0,DLAX60 ; SET NULL MSG MOV #CRCI,CRCSR ; INIT CRC-16 STATUS REGISTER JSR PC,CHRBUF ; MOVE NULLìR0  ;DIVIDE BY TWO BCS O.OF1  ;ERROR IF ODD CMP #-200,R0 ;COMPARE WITH -200 BGT O.OF1  ;DO NOT TYPE IF OUT OF RANGE CMP #177,R0  ;COMPARE WITH +177 BLT O.OF1  ;DO NOT TYPE IF OUT OF RANGE DEC O.BW  ;SET TEMPORARY BYTE MODE JSR 5,O.CADV ;NUMBER IN R0 - BYTE MODE INC O.BW  ;RESTORE WORD MODE O.OF1: JMP O.DCD3  ;ALL DONE O.ERR1: JMP O.ERR  ;INTERMEDIATE HELP .EOT  ;END OF TAPE #2 ; ; SEAí�Žæþÿ@œ ÷ Z € ÷ PüŸ„Ÿ“þÿðÄE€ÿ!Ê•wÐùð‹/�Ê•Á D†&÷ Z„w¬ûð‹~8T/ì€ ðŠLèw Ýæž æœ €æ œ* �Ö ·Š ·„ w ÝŽ‡&W þÿöð•*÷ Tÿ€°•*æ÷ 6ûâ6 ðæþÿÁe8f÷ ¾�ù~°TDÁ ÷ vŸ—¢bô ÐÿÊåò ÊeŸ“þÿÄÿ�ÃÿÁ ÄeÀÿw’øüEÄÿ4�Ãÿð‹/�À L€ f&Ÿ÷ Ê÷ ¤Ÿ�þÿ…øÿµ-òâ~(U„�C…àt‘ÂÿÂò #À À Ÿ &÷ †Ã„&:÷ 0Ã0:Ê•ñ•*Á 1†Ÿ“þÿ� ÄŒLt&÷ ÎÚwføÊ•ôð‹/¥€ ðŠL¡æþÿÁe8ó~ Ufîw®þôÒÀBw VÀ�?Àe`€ w HÀ;w @÷Ä�#Àw wXû÷ ÔÃ÷ ¨ÂeÈ~øuÅ"÷À wÄ €Ò•KÒ•SÒ•U~‚  wÄe0‘‚  w wÄe0‘‚  wÄe0‘‚ À wÄe0‘~Ò ÄŽ÷ .ÂeF~pv!šøƒÀT÷ P ÷-ržö÷Žöhw€ýw¨úw”úÀ`â�ÊÅøÊÕ0ƒ ÃE€ƒ ƒ ~‡ÀðÂÂâ• — {û‚‡ D÷�Pö ÷�Fö÷­þ÷~èv‰)×­T<÷• ·ŠFædˆ÷ äÎe‡÷•. D ÷”Îædˆ÷ Àë÷v¼ä÷à´ò÷• ¶æd ˆÜ·¤·ÆõÆšf&æ¦~`wfæŽæ €Ö ·ï MSG TO BUFFER TST R5 ; OUT OF BUFFERS BPL 10$ ; NO - JMP DLAB55 ; YES - DISCONNECT 10$: MOV CRCBCC,DLCCRC(R1) ; SET BCC FOR HANDLER BIS #DLCG6,DLCIND(R1) ; SET NULL MSG FLAG MOV #ALTM2X,DLAW45 ; START MAJOR TIMER(TM2) JSR PC,DLAS25 JMP DLAC52 ; START LINK OUTPUT ; ; DLAC27: MOðRCHES - $MSK HAS THE MASK ;  $MSK+2 HAS THE FWA ;  $MSK+4 HAS THE LWA O.EFF: INC R1  ;SET EFFECTIVE SEARCH BR O.WDS O.WSCH: CLR R1  ;SET WORD SEARCH O.WDS: TST R3  ;CHECK FOR OBJECT FOUND BEQ O.ERR1  ;ERROR IF NO OBJECT MOV #2,O.BW  ;SET WORD MODE MOV O.MSK+2,R2 ;SET ORIGIN MOV O.MSK,R4 ;SET MASK COM R4 O.WDS2: CMP R2,O.MSK+4 ; IS THE SEARCH ALL DONE? BHI O.DCDB  ; YES MOV @R2,R0  ; GET OBJECT TST R1  ;NO BNE O.EFF1  ;BRAñ÷ Æ�@œÃÿÀ  BÜÂÿlL „—¢Kô¥*Gñ Ðÿ:ff÷ öƒ×tüÿÅñ ñ`$Ñ Gƒ�À Ä Ÿô†„ Ê‹� &:÷ tÂÞð:±*~V€ € 1�2 ô•*Ê•w²÷ 8ð:ð8ñÅlL5f÷ øÙô•*€ D�Ÿwxù± æþÿB�÷ ªÅ|Luf÷ ÂÙŸñ‹›ë~�Vñ•*wDùñ•ýÿ*wB÷ ÅÜmœ'LÊCa‡�öÿfÑQr úÿ�üÿröÿ�°ŠL‡�øÿC DEr úÿ�üÿrøÿðŠL‡É•…ÊÅÊÕ±~WEõ•*Å f†÷ nƒ5 †… ‡Á f†÷ Z„�À  ÝÂÿlL� € ‡à ÂL …… r Ê Âeõ ‡¦÷ \Á÷ ò„�‚ƒ„…Æœõær€Ä4Àäü´ÀÄ Ä ÷…÷‹\ ÷‹W  <äÀ„ „ !ø…ÃÄþÿ÷%$Ãå„ À&Äeñ~Øw N @ Ä üÀe0w &à óÀ• Ö Á°Àÿÿ …÷�,Î÷Ø7�Øæd ˆ÷ Àÿ…÷�°÷ ºæd ˆÀ¦ ÷ÿ*~PxÀ¤À• À�š÷‹£À¥ â…Ä Þ‡•w šÿú ÷ÿÿr÷ÿÿn  ‚7,°\‚ÁVì°Á-T‚Ð ðÀH…wD€ 7<À ô÷%,!¯~Èxùƒ… �„ ú ÷%‚? ?‘‡Ã1Ä.w vÿ…À w ÿ…÷%$ôw ¬þ…÷Ú’7�7Ðw VÿÀ Àe0w âþÀ,w Úþæ²÷?óVB #2,DLCPRI(R1) ; SET PRIORITY TO 2 BR DLAC17 ; CONT ; ; ; ; PREPARE MESSAGE FOR TRANSMISSION ; DLAC30: MOV #CRCI,CRCSR ;INIT CRC-16 STATUS REGISTER TST TYPSTW+MESG1 ; FIRST TIME FOR MSG BEQ 2$ ; YES - CMP MESG+MSWTSI,MESG1+TYPST ; START IN TYPE I JNE DLAC40 ; NO - GET TYPE II 2$: JSR PC,RTVNUM ôNCH IF EFFECTIVE SEARCH MOV R0,-(SP) MOV R5,R3  ;EXCLUSIVE OR BIC R5,R0  ; IS DONE BIC (SP)+,R3  ; IN A VERY BIS R0,R3  ; FANCY MANNER HERE BIC R4,R3  ;AND RESULT WITH MASK O.WDS3: BNE O.WDS4  ;RE-LOOP IF NO MATCH MOV R4,-(SP) ;REGISTERS R2,R4, AND R5 ARE SAFE MOV R1,-(SP) ;SAVE R1 MOV R2,-(SP) ;SAVE R2 MOV R3,-(SP) JSR 5,O.CRLF MOV R2,R0  ;GET READY TO TYPE JSR 5,O.RORA ; CHECK FORMAT MOV #'/,R0  ;SLASH TO R0 JSR 5,O.õ2Á¶÷l�ª~€Wh�÷å€b�‡¦ò�‚„‡ˆ �‹À�Ž                 !"£$¥¦'(©ª+¬-.¯0±²3´56·¸9:»<½¾?ÀABÃDÅÆGHÉÊKÌMNÏPÑÒSÔUVרYZÛ\ÝÞ_'ABÃDÅÆG~øWHÉÊKÌMNÏPÑÒSÔUVרYZ     ;~pXB^�Ü[ L/P 1 â~èXPARITY ERROR L/P 1 NOT READY L/P 1 ABORTED.X²X&f¦æ&fæêôæìôö~@y¬À°w rþ· ÷XœÀT…ÀN÷HŒÓÄýÿ C”Ã¥ Ã¥$ × A‡Ãå ÃåÃå Ãå    ¦  ‚eÂ`„ ä�‡ÅýÿÂh ‡+~¸y€âƒ ûË× Ãe ÃeÃe Ãe Ñ�Ò … è€Ð ‡@( DEBUG H PC CP R L T NZVC œ~0zR0 R1 R2 R3 R4 R5 SP @ LOCN CONTENTS BE8~¨z*;/\ $G._<^,OWEBP@>SRC-FI!XADTSPMDTCFRBv÷ ; YES - GET RETRIEVAL NO. MOV MSWTSI+MESG,TYPST+MESG1 ; SET STARTING MOV MSWTSI+MESG,TYPEN+MESG1 MOV #TYPHL+1,TYPSTW+MESG1 ; ADDR IN CELL HEADER DLAC32: JSR PC,TRMHDR ; FORM HEADER JSR PC,CHRBUF ; MOVE HEADER (TRML) TST R5 ; BUF ERROR ? BPL 2$ ; NO JMP DLAC70 ; YES - 2$: MOV øFTYP ;TYPE IT MOV @R2,R0  ;GET CONTENTS JSR 5,O.CADV ; TYPE CONTENT MOV (SP)+,R3 MOV (SP)+,R2 ;RESTORE R2 MOV (SP)+,R1 ;RESTORE R1 MOV (SP)+,R4 ; RESTORE R4 O.WDS4: TST (R2)+  ;INCREMENT TO NEXT CELL AND BR O.WDS2  ; RETURN O.EFF1: CMP R0,R5  ; IS (X)=K? BEQ O.WDS3  ;TYPE IF EQUAL MOV R0,R3  ;(X) TO R3 ADD R2,R3  ;(X)+X INC R3 INC R3  ;(X)+X+2 CMP R3,R5  ;IS (X)+X+2=K? BEQ O.WDS3  ;BRANCH Iù€÷ º 7¬ŒÿÄŸìôŸêô…„ƒ&~`Y‚�€Ž‡œ— ÂÉ Ä çÄ ä÷ hæþÿŸÈ :&÷ 2¿¦X÷ ¿ž²Xìô ö%ÜGÄZÀ´Š›0 ó X$Ÿþÿ ð¥Y~ØYð ¶Æe…„ƒ‚�€& ÷ $ÅwRÉ0Ÿþÿ£ˆ ŸþÿÄ�³ XŸþÿsX3 X3 "X³(Xs$X3 &X÷ ÖÂ�W÷ îŸ÷ ô ~PZÂw0w м Řó XMœÂ(X¦X÷ ¾€ìôÁX÷ ˜å÷ ŠÂ�W÷ ¢÷ ¨MæþÿÂ(XŸ2X „ÄeX¡ ¡ 2XÈŸþÿÄš~ÈZ XôŠ›&÷ lù¬ æ X& ÷ °ÇÖ fæ&æ Xú†~ {P23~˜{ï€j~|Ð÷~ˆ| AC:  ? ILL CMD! ILL PAR! NON-QUIESCENT ENû #MESG2+HDRL,DLAW50 ; SET CHAR MOVE MOV #MESG3-MESG2,DLAW51 ; POINTERS DLAC35: CLR DLAW54 ; COUNTERS JSR PC,CHRBUF ; MOVE DATA TO BUFFER TST R5 ; BUF ERROR ? BPL 4$ ; NO - JMP DLAC70 ; YES - ; 4$: ; MOV R5,R0 BIT #BIT0+BIT1,R0 üF EQUAL BIC #177400,R0 ;WIPE OUT EXTRANEOUS BITS MOVB R0,R0 CCC ASL R0  ;MULTIPLY BY TWO INC R0 INC R0 ADD R2,R0  ;ADD PC CMP R0,R5  ;IS THE RESULT A PROPER REL. BRANCH? BR O.WDS3 ; PROCESS G - GO O.GO: TSTB O.SMFD ;WAS ";" TYPED? BEQ O.ERR1 ;BR IF NOT TYPED TST R3  ;WAS K; TYPED? BEQ O.ERR1  ; TYPE ? IF NOT MOVB #O.BKP+3,O.P ;CLEAR PROCEED ASR R5  ;CHECK LOW ORDER BIT BCS O.Eý÷ ¤Óƒ…Â(XÂ÷ æÄò XÂe(¦X÷ Z½€ìô÷ Âð ó~@[wVÿsX³(X3 X3 "XÂ�Ws$X3 &X÷ Î÷ ª÷ ÒM÷  3 XæÈX÷ Ö M³ &Xó%&X÷ X÷ z÷ ¢MæÜX÷ `ñwèþæôXª~¸[÷ N÷ V3 &XÄÈX&ôÜ[æd÷ |Ö MC fÁXÂ(XæX÷ ’¼€ìô÷ Ö …Ä,XÅ÷ ³ &X×,&X´æd÷ 2Ö ‡ðÖ ?~0\…wfþæ&ff& ÀYÅ"XAaÁes!$XB3 *X DÔ! ! 3 Y³ *X Ä% !3 Y ÷ ^Ä• Îå÷ R … s!$XßÀ5Е s"XP~¨\ÀìY„ Ö …�€Ö ‡3 YþâDSæQUìXXòXTîTMØDTREºCMAS.LD4ID@FLNTC:BR¤~}†XB–PTêEX.ˆˆæ´ ˆ÷4ÿ÷–(ÿ7 0ÿæ„ ˆ÷ ÿîŘDêÄå�Ä ÃS# Ó Ë û÷Øôþæ„ ˆÙË ÖÕ Ä Û Å Ò÷æØþ±~x}ñ÷ !l®Ä ôE n®‡W¥, Ä !‚÷ ÊÅ ‡Ö  ‡÷ ôÅ Ä ! 7H›zþ÷•vþæx*ˆô†š‡÷ ²ÿæ& && ˆÖ ߈æ›~ð}öæóæðÔÀ0Š*œ&éW¥,W£BW£AÅ ÷ hÿÄ À! ½æÕ ûÄÿÿøÄþÿý±æjˆ÷ Øý«‡©÷àý÷•Üýæx/~h~*ˆ‡æ7 ²ý7 °ý7 ®ýaÃjc™Ä ýædˆ„ÿ ; ETX OR ETB JNE DLAC50 ; YES - BIT #BIT5,R0 ; END OF TYPE I JNE DLAC36 ; YES - BIT #BIT3,R0 ; END OF TYPE II BNE 6$ ; YES DEBUG ; NO - FATAL ERROR 6$: ; DLAC36: FILEC MSSN,DLAV10,R0,#2,#2,DLAC60; GET NEXT TYPE II ; MOV #MESG3,DLAW50 ; SET DLAC37: MOV #TYRR1  ;ERROR IF ODD NUMBER ASL R5  ;RESTORE WORD MOV R5,O.UPC ;SET UP NEW PC JSR R5,O.CRLF ; O.TBIT: CLRB O.T ;CLEAR T-BIT FLAG BIS #O.TBT,O.UST ;SET T-BIT IN USER PS TSTB O.S  ;SEE IF WE NEED A T BIT BNE O.GO2 ;IF SO, GO NOW TSTB O.TRC ;TRACE MODE? BNE O.GO2 ;YES, GO NOW BIC #O.TBT,O.UST ;CLEAR THE T BIT O.GO1: JSR 5,O.RSB  ;RESTORE BREAKPO³ *XÄ ÷ êÎ5øÝÅ êÄÕ¶ 6 & „`“3 YŽ Ö ‡ð¥ ‡ð¥ùćß@ê‡Äû~ ]ê& Ä5 Ä5Ä5Ö ‡– ‡Ö ‡ó ÚX 3,X  ê÷ Ôúß ê êß.XêßÈêÄÈXôÜ[&æd÷ ÐÖ ‡fÄYÅBÀå'~˜]ÄÄ Ä Ä ÄeÆ]0ð0ŠÈ&÷ nÇ…ÀY‡ÃwÅÀY@aAa… !B@ÁX…Â(Xw¬ü ê‡f  ÅCqBa…à ‡„f*~^Å´XæþÿŸõ 5 Ÿþÿf÷ þÆ…Ž¤‡Ÿþÿ…Ž´‡1 ‡· Žú‡7 ˆú‡æþÿŸþ% f…µ� …ŸþÿŽ6 ‡ŸþÿwP¸öe~ˆ^Ö  ƒ‡*Bv† ÁÁÁW¥,5Ä 3!0‚÷ ¢ÿÅ ,!)!„š&Ä ô%¦~à~†š!„ yÚß•àþÿô¥*œ4Š*œŠþÿ‡ß•àþÿô‹*œ­*œ Šþÿ÷ô0ýæ„ ˆ ‡ô•*œŠþÿ‡&& & & ˆÖ òê&ˆ‡ HH:MMo~X:SS MM/DD/YY “–™§¤¡�Ä÷ ìþÅ &ÅeÀ õI ƶÿ‡·°ÿW¥, !ôÀ÷ Æÿ1ˆÖ í‡ÀÁªÂŽw(·€ÿW¥,i~Ð !ÜÀ÷ –ÿ0ˆçÀÁ°Âœ÷Eÿ7PňædˆDÔ�üÔ�üÅ öÅ ·6üæ„ ˆ‡[~H€P2ML,DLAW51 ; POINTERS MOV MSWTST+MESG,TYPEN+MESG1 ; JMP DLAC35 ; CONT ; ; ; GET TYPE II CELL WITH BLOCK START ; DLAC40: FILEC MSRD,DLAV10,R0,#2,#0,DLAC60; GET TYPE II CELL MOV MSWTST+MESG,TYPEN+MESG1 JSR PC,TRMHDR ; FORM HEADER JSR PC,CHRBUF ; MOVE HEADER TST R5 ; BUFFER AVAIL BPL 2$ INTS O.GO2: JSR 0,O.RSR  ;RESTORE REGISTERS MOV O.UST,-(SP) ; AND STATUS MOV O.UPC,-(SP) ; AND PC O.RTIT: RTT ;GO ; PROCESS P - PROCEED ; ONLY ALLOWED AFTER A BREAKPOINT O.PROC: TSTB O.SMFD ;WAS ";" TYPED? BEQ O.ERR1 ;BR IF NOT TYPED MOVB O.P,R0 TSTB R0  ;CHECK LEGALITY OF PROCEED BLT O.ERR1  ;NOT LEGAL TST R2  ;CHECK FOR ILLEGAL COUNT BNE O.ERR1  ;JUMP IF ILLEGAL TST R3  ;WAS COUNT SPECþz^6 ‡÷Eð„÷U0~÷Eÿ|÷Uv÷Eðj÷UPd÷Eÿb÷U„\ ÷EðP÷U@Jå~_÷EÿH÷U„Bw PÒÀ¦ÿ7  ÿ7МÿŠÀ   D˜^ € „  ‚ Â5øq˜^Ñ W !îÄ5 îƒ ÷ ^ÿêƒÂíVÿ‚ ÂÂÝNÿ·Nÿ÷E€Jÿ„  Á~x_ƒ Ã5úq˜^w äч÷U€.ÿùÔhÔhÔhàh��¤.¼F`I@kølkkkkkkkkkE~ð_ ÷蟢ÿ÷òŸàŸæ·”ÿ÷•ÿÿ’ 7ŠŒ wà÷ÈŸ‚ÿw â7ŽÆª_ÄÅjÃÕjw À 7x¹~À€A~8�È~°� ; YES - CONT JMP DLAC70 ; NO - QUIT 2$: MOV MESG1+TYPSTW,DLAW50 ; SET ADD #MESG3-1,DLAW50 ; POINTERS MOV #TYP2ML,DLAW51 ; FOR START CLR DLAW54 ; IN TYPE II CLR DLAW53 ; AREA ; JMP DLAC35 ; CONT ; ; ; PREPARE MESSAGE FOR OUTPUT ; DLAC50: MOV DLAW54,MESG1+TIFIED? BEQ O.PR1 ;NO MOV R5,O.CT(R0) ;YES, PUT AWAY COUNT O.PR1: JSR R5,O.CRLF ; O.C1: CMPB O.P,#O.BKP ;SEE IF A REAL ONE OR A FAKE BGT O.TBIT  ;BRANCH IF FAKE TSTB O.S  ;SEE IF SINGLE INSTRUCTION MODE BNE O.TBIT  ;IF SO EXIT NOW INCB O.T  ;SET T-BIT FLAG BIS #O.TBT,O.UST ;SET T-BIT BR O.GO2 ; ; PROCESS D - OCTAL DUMP REQUEST ; RANGE OF DUMP IS IN MASK SEARCH LIM w w XÄ�ZÿŒŒŒ,~h`7‘’Ÿ7ŠJ ÷•ÿÿF ÷à’Ÿ÷gŠŸ×!†`÷0wæÆ ÿ& ÷ ÿæ�ŸæŠŸ÷•@Äžà D÷‹ A „ &DCƒcà ÷è w @w Ü„·Šê w þ ¸~à` '  7ŠÖ Ä „ ‚ ¦&w Ä„‚À•\w ÄwXw Èw �Ä øfw Š÷•‚ €w ’7ŠŽ wtwhw šÄÿj  Ä%kû‚ÀEøÿÄ Ü~XaÄeª_‚ whÄåøj÷ÀD ÁÁj÷ ôÀ=w T·ŠD À�= w HÀ�6 w @À�/ w 8À w 0w 8  7� w *7� w "7Š 7� À´jÁÁj÷ XÄ ~ÐaâÂwð7Šæ  wèw (‚b‚ ‚ ·¼wúw ‚øw �A�Á � � B`ï÷ €÷%’ P~(‚×~ ‚_~ƒæ~�ƒ YPENW ; SET LAST BYTE COUNT INC MESG1+TYPENW ; FOR END CMPB #2,DLCPRI(R1) BNE 2$ MOV DLCQU(R1),R5 ; SET WAITING QUE BIS #MSQF12,MSQWAT(R5) ; SERVICE FLAG 2$: FILEC MSWR,DLAV10,R0,#0,#0 ; WRITE CELL AND RELEASE QUE MOV CRCBCC,DLCCRC(R1) ; SET BCC FOR HANDLER DLAC52: JSR PC,DLAS15 ; CLEAR FLAGS JSR PC,SNDSX ; S IT REGISTERS ; ; O.DMP: TSTB O.SMFD ; DON'T REACT UNLESS ";" WAS TYPED BNE O.DM05 O.DM02: JMP O.ERR O.DM05: MOVB O.DDEV,DEVICE ; GET DUMP DEVICE TO I/O LIST MOV #64.,IOBUF ; NO. CHARS/PRINT TO BUFFER HDR MOV O.LOW,R4 ; GET DUMP RANGE FROM SEARCH LIMIT REGISTERS BIT #000001,R4 ; BYTE ADDRESS? BNE O.DM02 ; YES, ERROR MOV O.HI,R5 CMP R4,R5 ; ARE SEA ÂŽ…Ö w|÷‹’û 7Š‚wr÷•ÿÿxwh·Šq~Hbu ÄEøÿÄ 7È_~wh÷‹^ ÄEøÿÄ Ã tÈ_Pà õôÿÿÈ_Iw ,Û×-ÉÂ% w   ÿÿÀ=w $ÀÁø7 Ä íT~ÀbÈ_À=w ÀÀe0w úÀ,w òÂ%ÀÎ@w Œk÷‹ÌÄÊüÂeÀ=÷¤w Â@w fw¬üw’·Šºw¢À=w ¤ w  ÿÿ!~8cÀrw 8AÀe0w „À,w |æV÷PÀTw ·D-À ÷<@7ìÈ_:€ â÷(÷‹6 À4üÄ,üÃ*üw ä÷ ðÀ?w "7 5~°cüw 7Š7Š7Š    w À%0 ‚À%7‡ÀEøÿÄ Ä n~„õ~€„}~ø„~p…ET PHASE FOR STX MOV DLCBPT(R1),DLCCPT(R1) ; SET CURRENT LINK BUFFER POINTER MOVB #XMTDAT,DLCSTE(R1) ; SET STATE TO XMT DATA DLAC55: MOV #XSTART,XCSR(R2) ; ENABLE XMT INTS & REQ TO SEND JMP DLAA55 ; GET NEXT LINK ; ; ; SEND BAD MESSAGE TO INTERCEPT ; DLAC60: JSR PC,INTHDR ; CHANGE HEADER FOR INTERCEPT MOV DLCQU(R1),R5 BIS #MSQF12,MSQWAT(R5) JMP DLRCH LIMITS REASONABLE? BHI O.DM02 ; NO MOVB #MAXLN,LNCNT ; SET LINE CNT TO EJECT PRIOR TO 1ST PAGE O.DM10: JSR PC,BLKBUF ; BLANKS TO PRINT BUFFER MOV R4,R3 ; GET ADDR OF 1ST WORD OF PRINTED LINE/DUMP JSR PC,BIN2OC ; CONVERT ADDR TO ASCII OCTAL ADD #8.,R2 ; ADVANCE BUF POINTER 8 PLACES O.DM20: MOV (R4)+,R3 ; GET NEXT WORD TO CONVERT JSR PC,BIN2OC ; CONVERT TO ASÄ `‚ ð 1 ãj� W Ö†ø÷‹Ú ÷‹·ÄmÊ7ŠÈÁ ydPd^dhd¼d>affÌdæa~(dÈd"eFb–eâeÞe4eÀføab*b^bðbc€cžc$cha®`’`ƒ·Šh7Šc´÷JD ÷@ 7<76÷%.Ä*„ î‡À"ÀŸw â÷%‹ ~ dÀ•=w (ÀŸw À• w wúþ÷ ÖwêþwÞþ·Šì÷ Þù÷ À÷ Þ÷ÒÎ7ŠÒ÷mÄÄ÷ÀÀw ºæ´÷®À¬w ¼·¢Ö%À/w ö~e¶¯À\ú÷ ˆÔ÷ j÷í~~ÜÀkÄ Ã … L‡Å ÄeØ_  !æ_B†Ô ù!æ_=‚L® !6‚4Ø_4 ê_¤ Àk!ž‚4Ø_ôü_4 h~�eê_Ô ô÷%À w *à Œ~è…~`†›~؆#~P‡AC10 ; LOOK FOR ANOTHER MSG ; ; ; DLAC70: JSR PC,RELBUF ; RELEASE BUFFERS FILEC MSWR,DLAV10,R0,#0,#0 QUEUE TSDLDA JMP DLAA55 ; GET NEXT LINK ; ; ; ; TRANSMIT IDLE 2 SERVICE ; ; ; BLOCK TRANSMISSION COMPLETE ; DLAD10: BIT #DLCG6,DLCIND(R1) ; IS THIS A NULL MSG ? JNE DLAB55 ; YES - GO DISCONNECT ; JSR PC,STPCOM ; SYSCII AND PLACE IN BUFFER ADD #7,R2 ; ADVANCE BUF PRINTER 7 PLACES CMP R4,R5 ; HI LIMIT REACHED? BHI O.DM30 ; YES MOV R4,R0 ; END OF LINE? BIC #177760,R0 BNE O.DM20 ; NO O.DM30: MOV #'D,R0 ; TELL PRINT ROUTINE CALL IS FROM DUMP JSR PC,PRINT ; PRINT A LINE BR O.DM02 ; ERROR - EXIT CMP R4,R5 ; HI LIMIT REÅíÅ Å @w Â@€ ‡À%€ÿ À%÷ àw ¨· ØwÜýwÈý�  à ù÷ÀÂÎùÄÈùD · Æù¼‚€Á &Cr~f@AƒEPA&f¦æw ’€w  À/w ¤€w Hƒ‚�„w ÞÒ Û åƒ`ƒ ƒ Å ßÀEÿ�¯À € € €` Õ÷‹V·à µ÷•F… °‡Å w8ùÆ~€f÷•àx™w °7Š-÷U&ù÷‹"÷Eùw b7Dæùæù æùÎE·@™÷‹üŠÀ�òÀ‹† „à pê_÷•à™w V×­ÔÏ÷‹ÊÌ÷•à™ ~øf·Š¿÷U¸øÐ·°ø·®ø÷•ª7¸÷‹¡·w @÷‹˜ø€Å��øÅ�Œø¯ŒŒŒŒw‘À˜Åvø÷‹t�å wjøÄt!Ø_Ä Ä úw ¼w JÄÖjÃ×jw ݪ~ȇ2~@ˆ¹~¸ˆA~0‰TEM IDLE OR TM2 TIMEOUT? BRJ DLAB55 ; YES - TO DISCONNECT ; BIT #DLCG11,DLCIND(R1) ; WAS THERE AN ERROR ? JNE DLAD60 ; YES - UPDATE ERROR COUNT JSR PC,OKREP ; INCRMENT ATTEMPT COUNT JSR PC,ERRPT ; REPORT ERROR BIT #DLCF8,DLCSTS(R1) ; ETX SENT ? JNE DLAD30 ; YES - SEND MSG TO RETRVL ; ACHED? BLOS O.DM10 ; NO, GO FORMAT NEW LINE JMP O.DCD ; YES, EXIT TO DECODER .PAGE ; ; PROCESS T - TRACE REQUEST ; ; TRACE LIMITS SHALL HAVE BEEN PREVIOUSLY SPECIFIED ; IN SEARCH LIMIT REGISTERS ; ; O.TRAC: TSTB O.SMFD ; DON'T REACT UNLESS ";" WAS TYPED BNE O.TR05 O.TR02: JMP O.ERR O.TR05: BIT O.LOW,#000001 ; BYTE ADDRESS? BNE O.TR02 ; YES, ERROR ~pgž@÷e>ø%Ä•tØ_7‘2ô ê_ªôê_w „ÀBw .À�Àe`€ w À;w ÷ðÄ�úØ_w úwàû·â·à÷ƶ_f&æ¦fæÌš~ègæ €Ö ·Â�‚ƒ„…ƶ÷æ°€Ä4Ø_ü_üüØ_Ä Ä ÷…÷�N—™÷�L—”7ŠB—7ŠB—÷‹>—ý€…w r÷‹2—ý€÷5&—÷‹ —ý€÷�g—÷�b—…q~`h÷‹V  <ü_Ø_„ „ !ø…ÃÄþÿ÷%&Ãå„ À&Äe N @ Ä üÀe0w &à óÀ• Ö ÁÈ_Àÿÿ …÷‹ –ý€7�¥~Øhœ–…÷‹�–ý€À�Œ–ÀE€ÿÀ¥÷‹Ð  w Ðÿí÷‹¾À¥ ç…Ä ã‡•w ¶ÿú×­R–• À•^w ¤ÿÀ•Uw œÿƪ_wrúÈ~¨‰P~ Š×~˜Š JSR PC,DLAS50 ; SET UP MSG CONTROL LIST FILEC MSSN,DLAV10,R0,#1,#0 MOVEA MESG1+TYPEN,MESG1+TYPST,TYPEN-TYPST MOVEC 0,MESG1+TYPEN,TYPEN-TYPST FILEC MSWR,DLAV10,R0,#0,#0 JMP DLAB55 ; GO TO DISCONNECT ; ; ; ; SEND MSG TO RETRIEVAL FOR TRAILING ; DLAD30: JSR PC,DLAS50 ; SET UP MSG CONTROL LIST ; FILEC MSDT,DLAV10,R0,#0,#0,DLAB55; GET THE MESSAGE ;  CMP O.HI,O.LOW ; ARE TRACE LIMITS REASONABLE BLO O.TR02 ; NO INCB O.TRC ; SET TRACE MODE CLRB O.S ; DISALLOW SINGLE INSTRUCTION MODE MOVB O.TDEV,DEVICE ; GET TRACE DEVICE TO I/O LIST MOV #72.,IOBUF ; NO. CHARS. TO BUFFER HEADER MOVB #MAXLN,LNCNT ; SET LINE CNT TO EJECT PRIOR TO 1ST PAGE MOV O.LOW,O.UPC ; GET LOCN FOR START OF TRACE MOV O.LOW,O.LPC … ÷ÿÿn÷ÿÿj ~Pi ‚7,È_X‚ÁRìÈ_Á-P‚Ð ðÀD…w@€ 78À ô÷%(!ùƒ… �„ ú ÷%‚??‘‡ÃájÃâjÄàjw Nÿ…÷%Ú~Èiüõw ªþ…÷Ú77Ðw ZÿÀ Àe0w àþÀ,w Øþæ²÷¬À°w pþ· ÷ÊœÀÆ…ÀÀ÷ºŒÓÄýÿ C”Ã¥ Ã¥$ × A‡£~@jÃå ÃåÃå Ãå    ¦  ‚eÂ`„ ä�‡Åýÿ¨j ‡€âƒ ûË× Ãe ÃeÃe Ãe Ñ�Ò … è€Ð ‡@(¢m¢mŠm~¸jÿ@€ ODT-11R V003ABEøl‚m‚m *;/\ $G _<^,OWEBP@>SRC-FI!XASPM_~‹æ~ˆ‹n~Œõ~xŒMOVEC 0,MESG1+TYPST,TYPHL-TYPST ; CLEAR XMT POINTERS MOVEA DLAX12,MESG2,HDRLID ; SET FOR RETRIEVAL ; FILEC MSAT,DLAV10,R0,#0,#3 ; ATTACH TO QUEUE ; CMPB #'A,MESG2+HDRACT+HDRLAC-1 ; MSG COUNT TO BE REDUCED (A) BEQ DLAD40 ; YES - CMPB #'B,MESG2+HDRACT+HDRLAC-1 ; MSG COUNT TO BE REDUCED (B) BEQ DLAD40 ; YES - ; DLAD32: MOV DLCQU(R1),R5 ; CLEAR MSG FRO  ; SAVE PC FOR TRACE PRINT ON 1ST TRAP JMP O.TBIT ; GO SET T-BIT AND EXIT .PAGE ; BREAKPOINT HANDLER O.BRK: MOV (SP)+,O.UPC ;PRIOITY IS LEVEL OF TASK ON ENTRY MOV (SP)+,O.UST ;SAVE STATUS AND PC MOVB #O.BKP+3,O.P ;TELL ;P THAT WE CAN CONTINUE O.BK1: JSR 0,O.SVR  ;SAVE VARIOUS REGISTERS TSTB O.T  ;CHECK FOR T-BIT SET BEQ O.BK1A ;NOT SET JMP O.TBIT ;SET - GO O.BK1A: JSR 5,O.REM ;RE!CFRBõ~0kPö2>®úp~¨kˆ¿¯      ÀI’æ Ö    ÷•V÷úZ÷CZi~ læè ˆ÷ Fÿ÷BB÷2Šæè ˆ÷ .×-(öÿ÷•÷lhæèˆ÷ ÿˆTHIS IS TSTBUG C1 TYPE YOUU~˜lR NAME AND IT WILL BE PRINTED ON THE LP! "}~ðŒ~h�Œ~à�~XŽ#M WAITING QUE BIC #MSQF12,MSQWAT(R5) CLRB OUTNUM(R3) ; CLEAR CONNECT COUNT ; JMP DLAB55 ; TO DISCONNECT ; ; ; DECREMENT OUTSTANDING MESSAGE COUNT ; DLAD40: TSTB OUTEMP(R3) ; COUNT ZERO BEQ 4$ ; YES - SKIP UPDATE DECB OUTEMP(R3) ; REDUCE COUNT 4$: BR DLAD32 ; ; RECORD ERROR ; DLAD60: JSR PC,BDR$MOVE BREAKPOINTS TSTB O.PRI  ;CHECK IF PRIORITY BPL O.BK2  ; IS AS SAME AS USER PGM BR O.BK3 ;SAME AS USER O.BK2: MOVB O.PRI,R5 ;OTHERWISE PICK UP ACTUAL PRIORITY CCC   ;CLEAR CARRY RORB R5  ;SHIFT LOW ORDER BITS RORB R5  ; INTO RORB R5  ; HIGH ORDER RORB R5  ; POSITION BISB R5,ST ;PUT THE STATUS AWAY WHERE IT BELONGS O.BK3: MOV O.UPC,R5 ;GET PC, IT POINTS TO THE BPT/T-TRAP TSTB O.S  %]~mÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ7Æ ÆŽÃƒÂH~ˆmƒ÷ 4 À0œ‚!~Â°× @kÊ@k× dòd× èòè× ò× ò× ò × ò × ò× d—~n÷d$ÿ× ÷•" Ä|Æw B 7ŠÌ 7ŠÉ ÷•ÿÿÅ wÞà B÷‹½ ? „ &DCƒcà ÷˜ w  w – „·Š� w    %  7Љ Är „ ˜~xn‚ ¦&w t „‚&›~ÐŽ#~H�ª~À�2~8�'EP ; INCREMENT ERROR COUNT JSR PC,ERRPT ; REPORT ERROR MOVB #IDLE1,DLCSTE(R1) ;IDLE 1 STATE JMP DLAC10 ; TRY XMT AGAIN ; ; ; ; DEAD STATE LINK SERVICE ; DLAE10: MOV DLCTM1(R1),-(SP) ; RELEASE THE TM1 CLR DLCTM1(R1) CLR DLCTM2(R1) EMT PUTBUF ; TIMER BUFFER JSR PC,RELBUF ; REL(;SEE IF IT WAS SINGLE INSTRUCTION FUN BMI O.B4  ;IF SO HANDLE THERE TSTB O.TRC ;TRACE MODE? BNE O.B100 ;YES TST -(R5) MOV R5,O.UPC MOV #O.BKP,R4 ;GET A COUNTER O.B1: CMP R5,O.ADR1(R4) ;COMPARE WITH LIST BEQ O.B2  ;JUMP IF FOUND DEC R4 DEC R4 BGE O.B1  ;RE-LOOP UNTIL FOUND JSR 5,O.CRLF MOV #O.BD,R4 ;ERROR, NOTHING FOUND MOV #O.BD+1,R3 JSR 5,O.TYPE ;OUTPUT "BE" FOR BAD ENTRY MOV R5,R0 ADD #2,O.UP)À•\w v wlw Œ �Ä úfw H ÷•6 €w F 7ŠE w~wrw b ÄC  Ä%Uû‚ÀEøÿÄ ÄeŽ‚ w~Äå<÷Àø Áxq~ðn÷ ¨ À=w ·Šû À�ô w þÀ�í w öÀ�æ w îÀ w æw   7�Ê w ò7�à w ê7н 7�¸ ÀhÁx÷ Ä– Âw7Š�   wþw ÷~ho(‚b‚ ‚ ·p ww ‚øw �A�Á � � B`ï÷ 0 ÷%F ÂB …Ö w†÷‹I û 7Š8 w|÷•ÿÿ. wr·Š,  ÄEøÿÄ ô °€wR79~ào°¶ wt÷‹  ÄEøÿÄ Ã t°Pà õôÿÿ°Iw ØÖ×-È ÄÂ% w F ÿÿÀ=w ÐÀª Á¢ 7X Ä í°À=w ²ÀF 6*¹~°�A~(‘È~ ‘P~’+EASE ANY DATA BUFFERS JSR PC,STPLNK ; STOP THE LINK (A SAFETY) CLR DLCIND(R1) ; SET LINK NOT ACTIVE MOVB #WAIT,DLCSTE(R1) ; SET LINK STATE TO WAIT MOV #RSTART,RCSR(R2) ; ENABLE RECEIVE INTERRUPTS JMP DLAA55 ; GET NEXT LINK ; ; ; ; DRAIN THE QUEUES TO RETRIEVAL ; DLAF10: MOV #MSQL*NSLINK+MSQST,DLAW61 ; START OF ASYNC QUEUES MOV #QASYN,C ;POP OVER THE ADJUSTMENT ABOVE BR O.B3  ; OR CONTINUE O.B4: MOVB #O.BKP+2,R4 ;SET BREAK POINT HIGH + 1 MOV R5,O.ADR1(R4) ;STORE NEXT PC VALUE FOR TYPE OUT O.B2: MOVB R4,O.P ;ALLOW PROCEED DEC O.CT(R4) BLE O.B5A ;REPEAT COUNT EXHAUSTED! JMP O.C1 ;GO DO IT AGAIN O.B5A: MOV #1,O.CT(R4) ;RESET COUNT TO 1 MOV #'B,R0 JSR 5,O.FTYP ;TYPE "B" MOVB O.P,R0  ;CONVERT BREAKPOINT NUMBER TO ASCI-~XpÀe0w ¦À,w žÂ%Àx @w 8q÷‹y ĨüÂkÀ=÷N w n@w wŠüw’·Šò w®À=w P w ° ÿÿÀ w äGÀeƒ~Ðp0w 0À,w (æ ÷úÀþw À·î3À ÷æê7ì°ä€ â÷Ò÷‹ã ÀüÄüÃüw Š÷´ðÀ?w ÎÀ w Æ7 žw ˜ì~Hq7Š«7Ц7ŠH 7Š™    w ÀÀ%0 ‚À%7‡ÀEøÿÄ Ä Ä `‚ ð 1 &� W Іø÷‹  ÷‹XÄmö7ŠôÁ y.hv€Ô>zäæà~Àq:F®úöLÆø*hú&Ѝ.h²þb ƒ·Š7г÷æD ÷Ü 7Ø7Ò÷%ÊÄÆ„ î‡.×~�’_~“æ~€“/C,DLAW62 ; FIRST ASYNC QUEUE MUMBER CLR DLAW68 ; TERMINAL NO. BR DLAF13 ; SKIP UPDATE OF FIRST PASS DLAF12: INC DLAW68 ; TERMINAL NO. INC DLAW62 ; ADVANCE QUE NAME ADD #MSQL,DLAW61 ; ADVANCE QUE ADDR DLAF13: MOV #DLAX83,DLAW64 ; SET TO START OF MESSAGE CLR DLAW63 ; CLEAR COUNT OF MSG REMOVE0I ADD #140,R0 ASR R0 JSR 5,O.FTYP MOV #';,R0 JSR 5,O.FTYP ; TYPE MOV #2,O.BW  ; SET WORD MODE MOVB O.P,R4 MOV O.ADR1(R4),R0 ;GET ADDRESS OF BREAK O.B3: JSR 5,O.RORA ; CHECK FORMAT JMP O.DCD  ;GO TO DECODER ; ; TRACE MODE PROCESSING ; O.B100: JSR PC,BLKBUF ; BLANKS TO PRINT BUFFER MOV O.LPC,R3 ; GET PC JSR PC,BIN2OC ; CONVERT TO ASCII OCTAL ADD #8.,R2 ; 1À¾ÀŸ¸w €÷%¬ˆ�~8rÀ•=w ÆÀŸ w ¾À• w ¶wôþ÷ nwäþwÐþ·ŠŠ÷ zù÷ X÷ |÷nj7Šp÷m``÷\\w `æP÷JÀHw X·>Ö%À/w Ì~°rT¯À\ú÷ $Ô÷ ÷íÜÀºÄ à … L‡Å ÄeÀ  !ÎB†Ô ù!Î=‚L® !6‚4À4 Ò¤ Àº!ž‚4Àôä4 M~(sÒÔ ô÷%®À w Èà ÅížÅ Å @w `@€ ‡À%€ÿ À%÷ |w F· twÖýwºý�  à ù÷\šùÄ”ùD · ’ù¼‚€Á &C~ s@AƒEPA&f¦æw 8€w <À/w B€w 惂�„Ò Ý çƒ`ƒ ƒ Å áÀE2n~ø“ö~p”}~è”~`•3D CLR DLAW67 ; CLEAR LINE COUNT MOV #2,DLAW60 ; SET FOR WAITING QUE ; MOV DLAW61,R4 ; SET QUE ADDR IN REG CMP #-1,MSQIS(R4) ; END OF LIST ? BEQ DLAF30 ; YES - FINISHED BIT #MSQF9,MSQSD(R4) ; STATION DOWN BEQ DLAF12 ; NO - GET NEXT SERVICE ; ; ; REMOVE MESSAGE FROM QUE ; DLAF20: 4ADVANCE BUF POINTER 8 PLACES MOV O.UST,R5 ; GET USER PS MOV #2,R0 ; SET TO GET CURRENT MODE O.B105: CLR R4 ; GET MODE ASHC #2,R4 DEC R4 BEQ O.B110 ; SUPERVISOR BPL O.B120 ; USER MOVB #'K,(R2)+ ; KERNEL BR O.B130 O.B110: MOVB #'S,(R2)+ BR O.B130 O.B120: MOVB #'U,(R2)+ O.B130: SOB R0,O.B105 ; HAVE WE CONVERTED 5ÿ�¯À € € €` ×÷‹ù¹à ·÷•é… ²‡Å wùw Ö~~t7ŠÖ÷Uüø÷‹Ê÷‹Å÷Eêøw @7"æÞøæØø÷‹­“À�£À‹� �à pÒw Š×­‹Ö÷‹€Ó·Š|÷U¢øÝ÷‹uw¨ü÷�œøL÷~�t@VÄŒøÄ5óÅ„ø!ï‚÷•<Œ÷ ÷ îÂe÷ äÂe!‚ÀEðÿõÀD÷ Õ!çƒwVü÷‹wDü×=4øú÷-.ø*øö‡·Šñ7Šì÷�"øÇ~uÐ÷HÚ÷•<"÷ øø÷øÊwòþ·ò÷·ð÷÷•¿7÷‹¶wÖþw J÷‹Ö÷€ Å�Î÷¯ŒŒŒŒwÑžŠÅ¸÷÷‹ˆ�÷‹ƒ@å w¦÷Ät!Àý~€uÄ Ä úw dÄÃw Ì@÷e~÷$Ä•tÀ6Œ~Ø•~P–›~È–#~@—7CLR MSPSVC+DLAV10 ; SET UP MOV DLAW60,MSPPRI+DLAV10 ; REQUEST MOV DLAW62,MSPNUM+DLAV10 ; LIST ; FILEC MSDT,DLAV10,R0,#0,#0,4$ ; DETACH MSG FROM QUE INC DLAW63 ; ACCOUNT FOR MESSAGE (MAX=50 JSR PC,RTVNUM ; GET A RETRVL NUMBER JSR PC,RTVMFR ; FORM RETRVL NO. MSG TO TRML MOVEA DLAX12,MESG2,HDRLID ; SET MSG FOR RETRIEVAL ; 8BOTH MODES? INC R2 ; YES, ALLOW SPACE CLR R4 ; GET REGISTER SET ASHC #1,R4 ADD #60,R4 MOVB R4,(R2)+ INC R2 ; ALLOW SPACE CLR R4 ; GET PRIORITY LEVEL ASHC #3,R4 CLR R4 ASHC #3,R4 ADD #60,R4 MOVB R4,(R2)+ INC R2 CLR R4 ; GET T-BIT ASHC #1,R4 97‘Gô Òw®þôÒÀBw BÀ�+Àe`€ w 4À;w ,÷Ä�Àw wHû÷ ÔÃô’~øu÷ ¨ÂeÅ÷À wÄ €Ò•KÒ•SÒ•U~‚  wÄe0‘‚  w wÄe0‘‚  wÄe0‘‚ À wÄe0‘~Ò ÄŽä~pv÷ .Âe!šøƒÀT÷ P ÷-^–ö÷†öTw|ýw˜úwŒúÀ`â�ÊÅøÊÕ0ƒ ÃE€ƒ ƒ ~‡Àð¶╠— oû‚‡×­þ)÷• ×­~èvN< ·ŠFæXˆ÷ äÎe‡÷•. D ÷ˆÎæXˆ÷jÂ÷ ºèä÷Ô´ò÷• ¶æX ˆÜ·¤·ÒõÆšf&æ¦fæŽæ €Ö Ö~`w·„�‚ƒ„…:ª~¸—2~0˜¹~¨˜A~ ™; FILEC MSAT,DLAV10,R0,#0,#3 ; ATTACH TO QUEUE ; CMP #50.,DLAW63 ; MESSAGE FULL BEQ DLAF40 ; YES - QUIT REMOVAL BR DLAF20 ; CONT ; 4$: CMP #3,DLAW60 ; BATCH QUE SERVICE ? JEQ DLAF40 ; YES - GO CHK FOR MSG MOV #3,DLAW60 ; GET BATCH QUE BR DLAF20 ; CONT ; DLAF30: <ADD #60,R4 MOVB R4,(R2)+ INC R2 ; ALLOW SPACE MOV #4,R0 O.B150: CLR R4 ; GET N,Z,V AND C FLAGS ASHC #1,R4 ADD #60,R4 MOVB R4,(R2)+ SOB R0,O.B150 ; DONE? TST (R2)+ ; YES, ALLOW 2 SPACES ; ; NOW GET R0-R6 ; MOV # O.UR0,R4 ; GET ADDR OF REG SAVE AREA O.B200: MOV (R4)+,R3 ; GET CONTENTS OF NEXT SAVED REG =ƨõær€Ä4Àäü´ÀÄ Ä ÷…÷‹\ ÷‹W  <äÀ„ „ !ø…ÃÄþÿ÷%$Ãå„ À&Äe N @ Ä ü½~ØwÀe0w &à óÀ• Ö Á°Àÿÿ …÷�,Î÷Ø7�ØæX ˆ÷ Àÿ…÷�°÷ ºæX ˆÀ¦ ÷ÿÀ¤À• Ø~PxÀ�š÷‹£À¥ â…Ä Þ‡•w šÿú ÷ÿÿr÷ÿÿn  ‚7,°\‚ÁVì°Á-T‚Ð ðÀH…wD€ 7<À ô÷%,!ùƒ… �„ ú ©~Èx ÷%‚? ?‘‡Ã%Ä"w vÿ…À w ÿ…÷%0ôw ¬þ…÷Ú’7�7Ðw VÿÀ Àe0w âþÀ,w Úþæ²÷¬À°w rþ·I>È~˜™P~š×~ˆš_~›?JMP DLAR10 ; TO EXIT ; DLAF40: TST DLAW63 ; MSG REMOVED ? BEQ DLAF12 ; NO - ; ; ; FORM MSG TO TERML ; MOV DLAW68,R5 ; CALC MUL #RTEL,R5 ; ADDR ADD #RTEST,R5 ; OF ROUTING MOV R5,4$ ; CODE ; JSR R5,MOVA ; MOVE 4$: .WORD 0 @ JSR PC,BIN2OC ; CONVERT TO ASCII & PLACE IN BUFFER ADD #7,R2 ; ADVANCE BUFFER POINTER 7 PLACES CMP R4,#O.USP ; ALL REGISTERS CONVERTED/MOVED BLOS O.B200 ; NO MOV #'T,R0 ; TELL PRINT ROUTINE CALL IS FROM TRACE JSR PC,PRINT ; PRINT A LINE BR O.B220 ; ERROR RETURN CMP O.LPC,O.HI ; HAS RANGE BEEN TRACED? BEQ O.B210 ; YES A~@y ÷XœÀT…ÀN÷HŒÓÄýÿ C”Ã¥ Ã¥$ × A‡Ãå ÃåÃå Ãå    ¦  ‚eÂ`„ ä�‡ÅýÿÂ\ ‡€âƒ ûË× s~¸yÃe ÃeÃe Ãe Ñ�Ò … è€Ð ‡@( DEBUG H PC CP R L T NZVC R0 R1 P~0z R2 R3 R4 R5 SP @ LOCN CONTENTS BE*;/©~¨z\ $G._<^,OWEBP@>SRC-FI!XADTSPMDTCFRBjBæ~x›n~ð›ö~hœC ; ROUTING .WORD DLAX81 ; CODE .WORD HDRLTO ; TO MSG MOVB #ETX,@DLAW64 ; MOVE MOVEC 0,MESG1,TYPHL ; MSG TO MOVEA DLAX80,MESG2,DLAX85-DLAX80 ; CONTROL AREA FILEC MSAT,DLAV10,R0,#0,#0,DLAF47; FORM MSG FILEC MSAT,DLAV10,R0,#0,#3 ; ATTACH MSG TO QUEUE JMP DLAF12 ; CONT ; DLAF47: MOV #CR,@DLAW64 D MOV O.UPC,O.LPC ; SAVE PC FOR NEXT TRACE TRAP JMP O.TBIT ; GO EXIT FOR TRACE OF NEXT INSTR O.B210: JMP O.DCD ; GO TO DECODER O.B220: JMP O.ERR .PAGE ; ; SUBROUTINE BIN2OC - CONVERTS BINARY WORD TO 6 ASCII OCTAL CHARS ; ; ON ENTRY - ; R3 CONTAINS WORD TO BE CONVERTED ; R2 POINTS TO NEXT AVAIL POSITION IN PRINT BUFFER ; R0 IS USED AND NOT RESTORED E&~ {P2î€0~˜{`~|Ð AC:  ? ILL CMD! ILL PAR! NON-QUIESCENT EN ~ˆ|âDSæQUìXXòXTîTMØDTREºCMAS.LD4ID@FLNTC:BR†XB–PTF}~àœ~X�Œ~Ð�~HžG ; SET CR INC DLAW64 ; FOR TTY OUT MOV DLAW64,R0 ; SEND SUB #DLAX80,R0 ; MSG MOV R0,DLAX7B ; TO MOV #DLAX7A,-(SP) ; TTY EMT TTYOUT ; AS TTY OUTPUT JMP DLAF12 ; CONT ; ; ; TEST FOR COMMUNICATION STOP REQUIRED ; DLAG10: JSR PC,STPCOM ;H; ; ON EXIT - ; R2 POINTS TO MOST SIG. DIGIT OF CONVERTED NO. ; BIN2OC: MOV #6,R0 BIN2O1: ADD R0,R2 2$: MOVB R3,-(R2) BICB #370,(R2) BISB #60,(R2) ASR R3 BIC #100000,R3 ASR R3 ASR R3 SOB R0,2$ RTS PC BIN2O3: MOV #3,R0 BR BIN2O1 .PAGE ; ; SUBROUTINE BLKBUF - BLANKS TO PRINT BUFFER ; ; IêEX.ˆˆæ´ ˆ÷4ÿ÷–(ÿ7 0ÿæ„ ˆ÷ ÿîŘDê»~}Äå�Ä ÃS# Ó Ë û÷Øôþæ„ ˆÙË ÖÕ Ä Û Å Ò÷æØþñ÷ !l®Ä ôE n®‡W¥, Ä !‚÷ ÊÅ ‡Ö  ‡÷ ôÅ Ä «~x}! 7H›zþ÷•vþæx*ˆô†š‡÷ ²ÿæ& && ˆÖ ߈æöæóæðÔÀ0Š*œ&éW¥,W£BW£AÅ ÷ hÿÄ À! ½e~ð}æÕ ûÄÿÿøÄþÿý±æjˆ÷ Øý«‡©÷àý÷•Üýæx*ˆ‡æ7 ²ý7 °ý7 ®ýaÃjc™Ä ýædˆ„Ö  ƒ‡*Bv† ÁÏ~h~ÁÁW¥,5Ä 3!0‚÷ ¢ÿÅ ,J›~Àž#~8Ÿª~°Ÿ2~( K COMM STOP REQUIRED ? BRJ DLAB55 ; YES JMP DLAA55 ; NO ; ; ; NORMAL EXIT TO ROS ; DLAR10: EMT EXIT ; TO ROS ; ; ; FILE CONTROL ERROR ; DLAR30: DEBUG ; TRAP FOR DEBUG ; ; ; FORM MESSAGE WITH DRAINED RETRIEVAL NUMBERS ; RTVMFR: MOV DLAW64,4$ ; MOVE JSR R5,MOVA ; RETRVL .WORD MESG2+HDRL ; NUMBER 4$: .WORD 0 L RETURNS WITH R2 POINTING TO 2ND CHARACTER OF DATA BUFFER ; BLKBUF: MOV #MSGDEN,R2 ; GET END OF BUFFER +1 BLK010: MOVB #40,-(R2) ; INSERT BLANK CMP R2,#MSGDAT+1 ; ALL DONE? BHI BLK010 ; NO RTS PC ; RETURN .PAGE ; ; SUBROUTINE PRINT - PRINT A LINE ON EITHER TTY OR LP ; ; R0 CONTAINS 'D OR 'T FOR CALLS FROM DUMP OR TRACE RESPECTIVELY ; PRINT: CMPB DEVICE,#TTYLOG ; M!)!„š&Ä ô%†š!„ yÚß•àþÿô¥*œ4Š*œŠþÿ‡ß•àþÿô‹*œ­*œ Šþÿ÷ô0ýb~à~æ„ ˆ ‡ô•*œŠþÿ‡&& & & ˆÖ òê&ˆ‡ HH:MM:SS MM/DD/YY “–™§¤¡�Ä÷ ìþÅ &ÅeÀ õI ƶÿ‡J~X·°ÿW¥, !ôÀ÷ Æÿ1ˆÖ í‡ÀÁªÂŽw(·€ÿW¥, !ÜÀ÷ –ÿ0ˆçÀÁ°Âœ÷Eÿ7PňædˆDÔ�üÔ�ü�~ÐÅ öÅ ·6üæ„ ˆ‡ ~H€N¹~  A~¡È~�¡P~¢O ; TO TERML .WORD HDRLRT ; MSG ADD #HDRLRT,DLAW64 ; ADVANCE POINTER TO STORAGE MOVB #' ,@DLAW64 ; MOVE INC DLAW64 ; IN A SPACE INC DLAW67 ; ADVANCE LINE POINTER (CURSOR) CMP #DLAX84,DLAW64 ; END OF ENTRIES BLE 6$ ; YES CMP #70.,DLAW67 ; END OF LINE BEQ 8$ ; YES -ADD CR/LPIS IT TTY? BEQ PRT050 ; YES MOVB #012,MSGDAT ; SET 1ST BUF CHAR TO ADVANCE ONE LINE CMPB LNCNT,#MAXLN ; LP, PAGE FULL? BGE PRT040 ; YES, EJECT PAGE INCB LNCNT ; BUMP LINE COUNT PRT020: MOV #IOLIST,-(SP) ; PRINT A LINE EMT LPRNTR PRT025: TST IOERR ; ERROR? BNE PRT030 ; YES, TAKE ERROR RETURN ADD #2,(SP) ; NO, ADJUST FOR NORMAL RETUQ¹~À€A~8�È~°�R×~€¢_~ø¢ç~p£n~SF 6$: RTS PC ; RETURN ; 8$: CLR DLAW67 ; RESET LINE COUNT MOVB #CR,@DLAW64 ; ADD INC DLAW64 ; IN MOVB #LF,@DLAW64 ; CR INC DLAW64 ; LF RTS PC ; RETURN ; ; ; FORM RETRIEVAL NUMBER FOR MESSAGE TO TERMINAL ; RTVNUM: MOV R1,-(SP) ; SAVE R1 MOV R2,-(SP) ; SAVE RTRN PRT030: RTS PC ; RETURN ; ; EJECT PAGE ON LP ; PRT040: MOVB #2,LNCNT ; INITIALIZE LINE COUNT CMP R0,#'D ; DUMP MODE BEQ PRT048 ; YES MOV #TRCHDR,BUFADR ; NO, TRACE MODE PRT045: MOV #IOLIST,-(SP) ; PRINT HEADER EMT LPRNTR MOV #IOBUF,BUFADR ; RESOTRE IOBUF ADDR TST IOERR ; ERROR? BNE PRT025 ; YES BR PRT020 UP~(‚×~ ‚_~ƒæ~�ƒVè£ö~`¤}~ؤ~P¥W2 BIT #TYPF3,MESG1+TYPRTV ; MSG FOR RETRIEVAL ? BEQ 1$ ; NO - EXIT MOV #MESG2+HDRL,R1 ; ARE FIRST FOUR MOV R1,R2 SERCH DLAX15,HDRLRT,HDRLRS ; CHARACTERS BLANK ? TST R1 BNE 8$ ; YES - MOV R2,R1 ; ARE FIRST FOUR SERCH DLAX16,HDRLRT,HDRLRS ; CHARACTERS DELETES ? TST R1 X ; PRINT 1ST LINE OF DATA PRT048: MOV #DMPHDR,BUFADR ; GET DUMP HDR ADDR BR PRT045 ; ; OUTPUT TO TTY ; PRT050: MOVB #015,MSGDAT ; MAKE 1ST CHAR OF MSG CR MOV #IOLIST,-(SP) ; TYPE A LINE EMT TTYOUT BR PRT025 ; GO TEST FOR ERROR .PAGE ; SAVE REGISTERS R0-R6 ; INTERNAL STACK O.SVR: MOV (SP)+,O.XXX ;PICK REGISTER FROM STACK AND SAVE MOV SP,O.USP ;SAVE USER STACK ADDRESS MOV #O.USP,SYn~„õ~€„}~ø„~p…ZŒ~È¥~@¦›~¸¦#~0§[BNE 2$ ; YES - 1$: MOV (SP)+,R2 ; RESTORE R2 MOV (SP)+,R1 ; RESTORE R1 RTS PC ; RETURN, NO. EXISTS ; 2$: MOV #DLAV30,-(SP) ; GET RETRIEVAL TAPE NO. MOVB #REQTNO,MPLCMD+DLAV30 JSR PC,MTIO TST DLAV30+MPLERR BEQ 3$ DEBUG 3$: MOV DLAV30+MPLARG,R0 ADD #060,R0 ; CONVERT TAPE NO. TO\P ;SET TO INTERNAL STACK MOV R5,-(SP) ;SAVE MOV R4,-(SP) ; REGISTERS MOV R3,-(SP) ;1 MOV R2,-(SP) ; THRU MOV R1,-(SP) ; 5 MOV O.XXX,-(SP) ;PUT SAVED REGISTER ON STACK TST -(SP) RTS R0 ; RESTORE REGISTERS R0-R6 O.RSR: TST (SP)+  ;POP THE EXTRA CELL MOV (SP)+,O.XXX ;GET R0 FROM STACK MOV (SP)+,R1 ;RESTORE MOV (SP)+,R2 ; REGISTERS MOV (SP)+,R3 ; 1 MOV (SP)+,R4 ; THRU MOV (SP)+,R5 ; 5 MOV O.USP,SP ;RESTORE USER STACK ]Œ~è…~`†›~؆#~P‡^ª~¨§2~ ¨¹~˜¨A~©_ ASCII MOV R0,DLAW65 MOVB DLAW65,MESG2+HDRL ; PUT TAPE NUMBER IN MSG MOV R3,4$ ; GET ADD #OUTRTV,4$ ; THE JSR R5,BASCNV ; RETRIEVAL 4$: .WORD 0 ; NO. .WORD MESG2+HDRL+1 ; TO .WORD 3 ; THE MSG MOV OUTRTV(R3),MESG1+TYPRVN ; AND MSG CELL HEADER ` MOV O.XXX,-(SP) ;PUT R0 ON USER STACK RTS R0 ; RESTORE BREAKPOINTS 0-7 O.RSB: MOV #O.BKP,R4 ;RESTORE ALL BREAKPOINTS O.RS1: MOV @O.ADR1(R4),O.UIN(R4) ;SAVE CONTENTS MOV O.TRTC,@O.ADR1(R4) ;REPLACE WITH TRAP DEC R4 DEC R4 BGE O.RS1  ;RE-LOOP UNTIL DONE RTS R5  ; THEN QUIT ; REMOVE BREAKPOINTS 0-7 ; IN THE OPPOSITE ORDER OF SETTING O.REM: TSTB O.S  ;SEE IF SINGLE INSTRUCTION IS GOING BNE O.R2  ;EXaª~ȇ2~@ˆ¹~¸ˆA~0‰bÈ~ˆ©P~ª×~xª_~ðªc INC OUTRTV(R3) ; ADVANCE COUNT CMP #1000.,OUTRTV(R3) ; COUNT EXPIRED BHI 1$ ; NO - MOV #1,OUTRTV(R3) ; YES - RESET BR 1$ ; GO RETURN ; 8$: BIS #TYPF2,MESG1+TYPDC ; MARK AS FROM DC BR 2$ ; CONTINUE ; ; ; STOP THE LINK ; STPLNK: MOVB PS,-(SP) ; RAISE SPL dIT IF SO TSTB O.TRC ;TRACE MODE BNE O.R2 ;YES, EXIT CLR R4  ;REMOVE ALL BREAKPOINTS O.R1: MOV O.UIN(R4),@O.ADR1(R4) ;CLEAR BREAKPOINT INC R4 INC R4 CMP R4,#O.BKP BLE O.R1  ;RE-LOOP UNTIL DONE O.R2: RTS R5  ;THEN QUIT ; TYPE OUT CONTENTS OF WORD OR BYTE WITH ONE TRAILING SPACE ; WORD IS IN R0 O.CADV: MOV #6,R3  ;# OF DIGITS MOV #-2,R4  ;# OF BITS FIRST-3 CMP #1,O.BW  ;SEE IF WORDeÈ~¨‰P~ Š×~˜Šfç~h«n~à«ö~X¬}g ALLEVL ; LEVEL CLR XCSR(R2) ; STOP RCV CLR RCSR(R2) ; AND XMT INTERRUPTS MOVB (SP)+,PS ; LOWER LEVEL RTS PC ; RETURN ; ; ; ; TEST FOR COMM STOP REQUIRED ; STPCOM: BITB #DLCT2,DLCTMO(R1) ; TIME-OUT ON LINK ? BNE 4$ ; YES - BITB #SYDF2,SYDIDL+SYDST;SYSTEM IDLE ? BNE 4$ ; YES - ADD #2,(SP) h MODE BNE O.SPC  ;BRANCH IF SO SUB #3,R3  ;ONLY DO 3 DIGITS INC R4  ;DO 2 BITS FIRST SWAB R0  ;AND TURN R0 AROUND O.SPC: MOV R0,-(SP) ;SAVE R0 O.V0: ADD #3,R4  ;COMPUTE THE NUMBER OF BITS TO DO CLR R0 O.V1: ROL (SP)  ;GET A BIT ROL R0  ;STORE IT AWAY DEC R4  ;DECREMENT COUNTER BGT O.V1  ;LOOP IF MORE BITS NEEDED ADD #'0,R0  ;CONVERT TO ASCII JSR R5,O.FTYP ;TYPE IT DEC R3  ;SEE IF MORE DIGITS TO DO BGT O.V0  ;LOOP IF SO Mi_~‹æ~ˆ‹n~Œõ~xŒj~Ь~H­Œ~À­~8®k ; RETURN TO 4$: RTS PC ; USER ; ; ; RELEASE BUFFERS TO POOL ; RELBUF: MOV DLCBPT(R1),R4 ; GET START OF CHAIN BEQ 2$ ; BRANCH ON END OF CHAIN MOV BUFFL-2(R4),DLAW40 ; SAVE THE CHAIN ADDR MOV R4,-(SP) ; PUT ADDR ON STACK EMT PUTBUF ; RELEASE BUFFER MOV DLAW40,DLCBPT(R1) ; GET NEXT BUFFER ADDR BR RELBUF ; CONT ; 2$: lOVB #' ,R0  ;SET UP FOR TRAILING SPACE TST (SP)+  ;GET RID OF JUNK BR O.FTYP ; ;O.CLRR  CLEAR RELOCATION REGS ;  I.E., SET THEM TO A HIGH MEM LOC. (-1) ;  R1,R0 CLOBBERED ; O.CLRR: MOV #O.RELT,R1 MOV #-1,R0 MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1)+ MOV R0,(R1) RTS R5 ; .EOT   ;END OF TAPE #3 ; TYPE ONLY ONE CHARACTER (CONTAINED IN R0) O.FTYP: MOVB m}~ðŒ~h�Œ~à�~XŽn›~°®#~(¯ª~ ¯2~°o CLR DLCCPT(R1) ; CLEAR CURRENT BUF POINTER ; 4$: RTS PC ; RETURN ; ; ; ; SET CONDITION TO SEND ACK ; SNDAK: MOVB #SNDACK,DLCSTE(R1) ; SET STATE TO SEND ACK MOV DLAW31,DLCPHP(R1) ; SET POINTER AND MOVB DLAW33,DLCPHS(R1) ; COUNTER FOR ACK,PAD RTS PC ; RETURN ; ; ; SET CONDITION TO SEND NAK ; SNDNK: MOVB #SNDACK,DLCSTE(R1) pTTY,DEVICE ; TTY LOG. UNIT NO TO IOLIST MOV #1,IOBUF ; SET TO OUTPUT 1 CHAR MOVB R0,MSGDAT ; PUT CHAR IN BUFFER MOV #IOLIST,-(SP) ; MAKE TTYIO OUTPUT REQUEST EMT TTYOUT ; TST IOERR ; ERROR? *** CHECKOUT BNE . ; YES *** CHECKOUT O.TYP1: RTS R5 ; GENERAL CHARACTER INPUT ROUTINE -- ODT11X ; CHARACTER INPUT GOES TO R0 Oq›~ÐŽ#~H�ª~À�2~8�r¹~�°A~±È~€±P~ø±s ; SET STATE TO SEND ACK MOV DLAW30,DLCPHP(R1) ; SET POINTER AND MOVB DLAW33,DLCPHS(R1) ; COUNTER FOR NAK,PAD RTS PC ; RETURN ; ; ; SET CONDITION TO SEND CAN ; SNDCN: MOVB #CANCL1,DLCSTE(R1) ; SET STATE TO CANCEL 1 MOV DLAW32,DLCPHP(R1) ; SET POINTER AND MOVB DLAW33,DLCPHS(R1) ; COUNTER TO SEND CAN,PAD RTS PC ; RETt.GET: MOVB TTY,DEVICE ; TTY LOG. UNIT NO. TO IOLIST MOV #020001,IOBUF ; SET TO INPUT ONE CHARACTER O.GE10: MOV #IOLIST,-(SP) ; MADE TTYIO INPUT REQUEST EMT TTYIN MOV IOERR,R0 ; GET ERROR CODE BEQ O.GE20 ; NONE CMP R0,#28. ; TIMEOUT? BEQ O.GE10 ; YES, TRY AGAIN BR . ; O.GE20: MOV IOBUF+2,R0 ; ANY CHARS INPUT BNE O.GE30 u¹~°�A~(‘È~ ‘P~’vØ~p²_~è²ç~`³n~سwURN ; ; ; SET CONDITION TO SEND STX ; SNDSX: MOV DLAW34,DLCPHP(R1) ; SET POINTER MOVB #1,DLCPHS(R1) ; AND COUNTER RTS PC ; RETURN ; ; ; CHANGE HDR OF MSG FOR INTERCEPT ; INTHDR: JSR PC,DLAS50 ; SET UP MSG CONTROL LIST MOVEA DLAX10,MESG2,HDRLID ; INSERT INTERCEPT HEADER ID BIS #TYPF4,TYPREC+MESG1 ; FLAG NOT FOR RECOVERY x ; YES MOVB #015,R0 ; NO, MUST BE CR BR O.GE40 O.GE30: MOVB MSGDAT,R0 ; GET CHAR O.GE40: TSTB O.SCRN  ;SHOULD WE PASS ON SPACES? BNE O.GE50 ;BRANCH IF YES CMPB #40,R0  ;CHECK FOR SPACES BEQ O.GET  ;IGNORE SPACES O.GE50: RTS R5 ; GENERAL CHARACTER OUTPUT ROUTINE - ODT11X ; ADDRESS OF FIRST BYTE IN R4, ; ADDRESS OF LAST BYTE IN R3, (R3)>(R4) O.TYPE: CMP R3,R4  ;CHECK FOR COMPLETION BLO O.TYP1  ;y×~�’_~“æ~€“zö~P´}~È´~@µŒ{FILEC MSAT,DLAV10,R0,#0,#0 ; FORM MSG FILEC MSAT,DLAV10,R3,#0,#3 ; ATTACH MSG RTS PC ; RETURN ; ; ; FORM DATE IN HEADER IN BUFFER ; THDRDT: EMT JULDAT ; GET JULIAN DATE MOV (SP)+,DLAX73 EMT GTIME ; GET MOV (SP)+,DLAX74 ; THE MOV (SP)+,DLAX75 ; TIME OF TST (SP)+ ; | EXIT WHEN DONE MOVB (R4)+,R0 ;GET A CHARACTER JSR 5,O.FTYP ;TYPE ONE CHARACTER BR O.TYPE  ;LOOP UNTIL DONE ; ;SUBROUTINE TO LOCATE RELOCATION REGISTER NEAREST BUT STILL ;BELOW THE ADDRESS IN O.CAD. RETURNS WITH THE REGISTER ;NUMBER IN R0, AND WITH THE DISTANCE BETWEEN THE REGISTER ;AND (O.CAD) IN O.XXY ;IF NO GOOD RELOC. REG. FOUND, R0 WILL = -1 O.LOC: CLR R0 MOV #-1,O.XXX  ;INITIALIZE RELOC. REG. INDEX MOV #177777,O.XXY ;INITIALIZE DIS}n~ø“ö~p”}~è”~`•~~¸µ~0¶›~¨¶#~ ·DAY ; CNVBA1 DLAX73,DLAX61,3 ; CONVERT TO CNVBA1 DLAX74,DLAX62,2 ; ASCII AND PLACE CNVBA1 DLAX75,DLAX62+2,2 ; IN HEADER FOR TERML ; RTS PC ; RETURN ; ; ; FORM HEADER FOR TERMINAL ; TRMHDR: CMPB #'4,MESG2+HDRACT+1 ; ACTION CODE HAVE A 4 ? BNE 2$ ; NO - MOVB #ASRRO,DLAX60 ; YES - SEND TO ASR & RO BR 6$ €TANCE TO A HIGH VALUE O.LOC4: CMP R0,#O.RLR ;ARE WE DONE COMPARING? BHI O.LOC1  ;BRANCH IF DONE CMP O.RELT(R0),O.CAD ;IS CURR. RELOC. BIAS > (O.CAD)? BHI O.LOC2  ;IF SO, BRANCH -- DON'T SUBTRACT, GET NEXT MOV O.CAD,R1 ;OTHERWISE TAKE THE DIFFERENCE SUB O.RELT(R0),R1 ; OF CURR. RELOC. REG. AND O.CAD CMP O.XXY,R1 ;IS THE RESULT THE SMALLEST SO FAR? BHI O.LOC3  ;BRANCH IF YES (UNSIGNED CONDITIONAL) O.LOC2: TST (R0)+  ;OTHERWISE, BUMP R0 FOR NEXT RELOC. REG. �Œ~Ø•~P–›~È–#~@—‚ª~˜·2~¸¹~ˆ¸A~¹ƒ ; CONT 2$: CMPB #3,DLCPRI(R1) ; PRIORITY = 3 ? BNE 4$ ; NO - MOVB #ASR,DLAX60 ; YES - SEND TO ASR BR 6$ ; CONT 4$: MOVB #RO,DLAX60 ; SEND TO RO 6$: JSR PC,THDRDT ; GET DATE & TIME ; MOV #DLAX60,DLAW50 ; SET MOV #DLAX63-DLAX60,DLAW51 ; POINTERS CLR DLAW53 ; „BR O.LOC4  ;LOOP BACK FOR NEXT COMPARISON O.LOC1: MOV O.XXX,R0 ;PUT REG.# IN R0 RTS 5  ;JOB OVER, RETURN O.LOC3: MOV R1,O.XXY ;REMEMBER SMALLEST DIFFERENCE IN O.XXY ASR R0  ;AND ASSOCIATED REGISTER NUMBER MOV R0,O.XXX ; IN O.XXX ASL R0  ;RESTORE R0 TO ORIGINAL VALUE BR O.LOC2  ;GO FO NEXT COMPARISON. ; ; ;SET A SEGMENT OF MEMORY TO A GIVIEN VALUE. (ENTERED VIA R5) ;FIRST WORD OR BYTE ADDRESS IS IN R4, =TO R3 AT EXIT ;LAST WORD OR BYTE…ª~¸—2~0˜¹~¨˜A~ ™†È~x¹P~ð¹Ø~hº_~ງ FOR TERMINAL CLR DLAW54 ; HEADER MOVE RTS PC ; RETURN ; ; ; REPORT AN ERROR TO THE CONSOLE ; ; THE ERROR IS ONLY REPORTED ON OVERFLOWS IF THE SUPPRESS UNIMPORTANT ; ERROR PRINTOUT FLAG (SYDPER) IS NOT SET. ; ; ERRPT: RTS PC ; *******ERROR REPORT NOT PROVIDED ************* ; *******IN THIS VERSION OF DLDIRA************** MOV R1,R0 ˆ ADDRESS IS IN R3 ;BYTE OR WORD VALUE IS IN R0 ;BYTE OR WORD MODE IS SPECIFIED BY O.BW ; O.ST: O.ST2: CMP #1,O.BW  ;IF NOT BYTE MODE, ASSUME WORD BEQ O.ST1  ;BRANCH IF BYTE MODE MOV R0,(R4)+ ;DEPOSIT WORD VALUE, BUMP R4 BY 2 O.ST3: CMP R4,R3  ;ARE WE DONE? BLOS O.ST2  ;BRANCH IF NOT DONE RTS 5  ;OTHERWISE EXIT O.ST1: MOVB R0,(R4)  ;DEPOSIT BYTE VALUE INC R4  ;BUMP R4 BY 1 BR O.ST3  ;GO TO TEST IF DONE ; CLOSE WORD OR BYTE AND EXIT, ; UPON ENTERIN‰È~˜™P~š×~ˆš_~›Šç~X»n~лö~H¼}~À¼‹ ; GET ADDR ADD #DLCECT,R0 ; OF ERROR COUNTS FOR DEVICE JSR PC,ERCMP ; COMPUTE ERROR % CMP #ERRLIM,R5 ; ERROR LIMIT REACHED BGT 8$ ; NO - RETURN MOVEA DLAXA5,DLAXA1,8.; FORM DATALINK NAME CNVBA1 DLAW70,DLAXA2,3 ; GET DEVICE NUMBER MOVB #' ,DLAXA2+3 ; ADD TRAILING BLANKS MOVB #' ,DLAXA2+4 MOV #DLAXA0,DLAV20+DATA; PUT DATA BUF ADDRESS IN TTY LIST ŒG, R2 HAS NUMERIC FLAG, R4 HAS CONTENTS O.CLSE: TST R2  ;IF NO NUMBER WAS TYPED THERE IS BEQ O.CLS1  ;NO CHANGE TO THE OPEN CELL CMP #1,O.BW BEQ O.CLS2  ;JUMP IF BYTE MODE BHI O.CLS1  ;JUMP IF ALREADY CLOSED O.CLS4: MOV R4,@O.CAD ;STORE WORD O.CLS3: BR O.CLS1 O.CLS2: MOVB R4,@O.CAD ;STORE BYTE O.CLS1: RTS PC ; ; TYPE PROMPTER WHERE N IS THE TASK NO. ; O.CRLS: MOV #O.CRND,R3 ;LWA O.CRS: MOV #O.CR,R4 ;FWA JSR 5,O.TYPE ;TYPE�æ~x›n~ð›ö~hœŽ~8½Œ~°½~(¾� MOV #DLAV20,-(SP) ; OUTPUT EMT TTYOUT ; TO TTY TST DLAV20+ERROR ; TTY REQUEST ERROR ? BEQ 8$ ; NO DEBUG 8$: JSR PC,TETCMP ; GET TERML ERROR TBL ADDRESS TST R5 ; VALID TERML NO. ? BEQ 16$ ; NO MOV R5,R0 ; TERMINAL ERRORS JSR PC,ERCMP ; COMPUTE ERROR % CMP #ERRLIM,R5 ; ERROR LIMIT REAC� SOMETHING RTS R5 ; ; OUTPUT A CR, LF TO TTY ; O.CRLF: MOV #015,R0 ;OUTPUT JSR R5,O.FTYPE RTS R5 .PAGE ;SUBROUTINE O.RORA ;FUNCTION: DECIDE IF AN ADDRESS IS ;TO BE PRINTED IN ABSOLUTE OR IN RELATIVE ;FORM. IF THE FLAG O.FORM=0 THEN PRINT ;IN RELATIVE FORM, OTHERWISE PRINT IN ;ABSOLUTE FORM. ;IF THE ADDRESS IS TO BE PRINTED IN RELATIVE ;FORM, ;THEN THE ADDRESS WILL BE PRINTED OUT ;RELATIVE TO A RELOCATION REGISTER‘}~àœ~X�Œ~Ð�~Hž’›~ ¾#~¿ª~�¿2~À“HED BGT 16$ ; NO - RETURN MOVEA DLAXA6,DLAXA1,8.; FORM TERMINAL NAME MOVB DLCTRM(R1),R5 ; GET DEC R5 ; MUL #RTEL,R5 ; THE ADD #RTEST,R5 ; TERMINAL MOV R5,10$ ; NAME JSR R5,MOVA ; FROM 10$: .WORD 0 ; THE .WORD DLAXA2 ; ROUTING .WORD HDRLFR ; TABLE ” NEAREST ;BUT STILL BELOW THE ADDRESS. IF NO SUCH ;RELOCATION REGISTER EXIST THEN THE ;ADDRESS WILL BE PRINTED IN ABSOLUTE FORM ;INPUT: THE ADDRESS TO BE PRINTED IS IN R0. ;DATA SAVED: R0 CONTAINING THE ADDRESS TO BE ;PRINTED, AND LOCATION O.CAD CONTAINING ;THE CURRENT ADDRESS WERE SAVED AND RESTORED. ;CALLED: JSR 5,O.RORA O.RORA: CMP #0,O.FORM ;CHECK FORMAT BEQ O.NOTA  ; GO TO O.NOTA IF RELATIVE O.ABS: JSR 5,O.CADV ;PRINT ABSOLUTE ADDRESS RTS R5 O.NOTA: MOV O.CAD,O.TMP1•›~Àž#~8Ÿª~°Ÿ2~( –¹~€ÀA~øÀÉ~pÁP~èÁ—MOV #DLAXA0,DLAV20+DATA; PUT DATA BUF ADDR IN TTY LIST MOV #DLAV20,-(SP) ; WRITE TO EMT TTYOUT ; TTY TST DLAV20+ERROR ; TTY REQUEST ERROR ? BEQ 16$ ; NO DEBUG 16$: RTS PC ; RETURN ; ; ; COMPUTE ERROR VALUE ; ; % ERROR RETURNED IN R5 ; ERCMP: ; CLR R5 ; INIT REG FOR CALC CMPB 2(R0),#CNCLIM ; IS CONNECT C˜ ;SAVE O.CAD MOV R0,O.TMP2 ;SAVE R0 MOV R0,O.CAD ;PREPARE INPUT FOR O.LOC JSR 5,O.LOC  ; FIND BEST N TST R0 ;IF = -1, PRINT IN ABS. BLT O.ABS1 ADD #60,R0  ; CONVERT N TO ANSCII JSR 5,O.FTYP ; TYPE N MOV #',,R0  ; PREPARE INPUT FOR O.FTYP JSR 5,O.FTYP ; TYPE COMMA MOV O.BW,-(SP) ; SAVE O.BW MOV #2,O.BW  ;ARTIFICIALLY SET MODE FOR WORDS MOV O.XXY,R0 ;PREPARE INPUT FOR O.CADV JSR 5,O.CADV ;TYPE RELATIVE AMOUNT MOV (SP)+,O.BW ;RESTORE M™¹~  A~¡È~�¡P~¢šØ~`Â_~ØÂç~PÃn~ÈÛOUNT SIGNIFICANT ? BLO 2$ ; NO, EXIT ; JSR PC,SAVEX ; SAVE REGS 0-4 CLR R4 ;CALCULATE % OF ERROR MOVB (R0),R5 ; I.E. - BIC #177400,R5 ; MUL #100.,R5 ; ((ERROR COUNT)*(100)/NO. OF ATTEMPTS MOVB 1(R0),R3 ; BIC #177400,R3 ; DIV R3,R4 MOV R4,R5 ; GET CALCULATED PERCENTAGE TO NON-SAVED REG œODE MOV O.TMP1,O.CAD ; RESTORE O.CAD MOV O.TMP2,R0 ; RESTORE R0 RTS R5 O.ABS1: MOV O.TMP2,R0 ;RESTORE R0,CAD BEFORE MOV O.TMP1,O.CAD ;TYPING IN ABSOLUTE BR O.ABS ; ; MOD40 PACK - ENTERED WITH JSR PC, PACK00 ; ; INPUT: R0=ADR OF MOD40 WORD (1 WORD) ;  R1=ADR OF ASCII CHARACTERS (3 CHARS) ; ; OUTPUT: R1 POINTS ONE PAST END OF ASCII STRINT ;  THE MOD40 WORD IS FORMED AS ;  N=C1*40^2+C2*40+C3 ; ; R2,R3,R4 ARE CLOBBERED PACK00: PACK01: MOV #-3,R4  ;LO�×~€¢_~ø¢ç~p£n~žö~@Ä}~¸Ä~0ÅŒ~¨ÅŸ JSR PC,RESTOX ; RESTORE REGS 0-4 ; CMP R5,#ERRLIM ; HAS ERROR LIMIT BEEN REACHED ? BHIS 4$ ; YES, GO CLEAR COUNTS 2$: RTS PC ; NO, RETURN ; 4$: CLRB (R0) ; CLEAR ERROR COUNT CLRB 1(R0) ; CLEAR ATTEMPT COUNT CLRB 2(R0) ; CLEAR CONNECT COUNT RTS PC ; RETURN ; ; ; INCREMENT ERROR COUNTS ; BDREP: INCB DLCECT(R1)  OP CT. CLR R2  ;0 SUM PACK05: MOVB (R1)+,R3  ;GET NEXT ASCII CHAR. CMPB #' ,R3 BEQ PACK02  ;"BLANK" CMPB #'$,R3 BEQ PACK04  ;"$" CMPB R3,#'A BLO PACK03  ;"." OR "0-9" SUB #40,R3  ;"A-1" PACK02: SUB #16,R3 PACK03: SUB #11,R3 PACK04: SUB #11,R3 ; MULT R2 BY 40. ASL R2  ;2*R2 ASL R2  ;4*R2 ASL R2  ;8*R2 MOV R2,-(SP)  ;STACK 8*R2 ASL R2  ;16.*R2 ASL R2  ;32.*R2 ADD (SP)+,R2 ;40.*R2 ; INCLUDE CURRENT CH¡è£ö~`¤}~ؤ~P¥¢~ Æ›~˜Æ#~Ç£ ; ADVANCE LINK ERROR COUNT JSR PC,OKREP ; UPDATE MSG COUNTS TST R5 ; TERML KNOWN BEQ 2$ INCB TETECT(R5) ; YES - ADVANCE TERMINAL ERROR COUNT 2$: RTS PC ; RETURN ; ; ; INCREMENT GOOD MESSAGE COUNT ; OKREP: INCB DLCMCT(R1) ; ADVANCE COUNT OF COMMUNICATION ATTEMPTS JSR PC,TETCMP ; GET ADDRESS OF TERML ERROR TBL TST R5 ; VALID TERML NO. ? ¤ARACTER ADD R3,R2 INC R4  ;DONE 3 CHARS? BLT PACK05  ;NO MOV R2,(R0)+ ;YES-STORE MOD40 WORD RTS PC  ;EXIT ; ; MOD40 UNPACK - ENTERED VIA JSR PC,UNPA00 ; ; INPUT: R0=ADR OF MOD40 NUMBER (1 WORD) ;  R1=ADR OF ASCII STRING (3 BYTES) ; ; OUTPUT: R1 POINTS ONE PAST LAST GENERATED CHARACTER ; ; ; IF N IS THE MOD40 NUMBER, THEN ;  N=C1*50 ^ 2+C2*50+C3 ; THUS, N/50^2 IS C1 AND THE REMAINDER IS C2*50+C3 ; THE REMAINDER IS DIVIDED BY 50 TO GET C2 ETC. ; UNPA00¥Œ~È¥~@¦›~¸¦#~0§¦ª~ˆÇ2~ȹ~xÈA~ðȧ BEQ 2$ ; NO INCB TETMCT(R5) ; INCR COUNT OF MSG TRANSFERS ATTEMPTED 2$: RTS PC ; RETURN ; ; ; COMPUTE ADDR OF TERMINAL ERROR TABLE ; TETCMP: MOVB DLCTRM(R1),R5 ; GET TERMINAL NO. BEQ 2$ ; TERMINAL NOT IDENTIFIED DEC R5 ; REDUCE TO ELIM OFFSET MUL #TETL,R5 ; MULTIPLY BY TABLE LENGTH ADD #TETS¨: UNPA07: MOV #-3,R5  ;MINOR LOOP COUNT MOV (R0),R0  ;GET MOD40 WORD MOV #COEFF,R2 ;PTR TO COEFFICIENT TABLE UNPA06: CLR R3  ;0 QUOTIENT ; DIVIDE BY COEFFICIENTS UNPA02: CMP R0,(R2)  ;DONE WITH DIVIDE? BLO UNPA01 ;YES SUB (R2),R0  ;NO-SUBTRACT COEFF. INC R3  ;ADD 1 TO QUOTIENT BR UNPA02 ; DIVIDE DONE. QUOT IN R3, REMAINDER IN R0 ; CONVERT TO AN ASCII CHARACTER UNPA01: TSTB R3 BEQ UNPA03  ;"BLANK" CMPB R3,#33 BEQ UNPA05  ;"$" ©ª~¨§2~ ¨¹~˜¨A~©ªÉ~hÉP~àÉØ~XÊ_~ÐÊ«T,R5 ; ADD START OF TABLE 2$: RTS PC ; RETURN ; ; ; ; ; MOVE CHARACTER FROM WORK AREA TO BUFFER ; ; A STRING OF CHARACTERS IS MOVED FROM THE WORK AREA (MESG) TO ; THE CORE BUFFERS. BUFFERS ARE OBTAINED AS REQUIRED. DATA TRANS- ; FER HALTS FOR THE FOLLOWING CONDITIONS: ; ; 1. ETX PROCESSED BIT 0 = 1 ; 2. END OF BLOCK BIT 1 = 1 ; AN ETB IS ADDED TO THE ¬BGT UNPA04  ;"." OR "0-9" ADD #40,R3  ;"A-Z" UNPA03: ADD #16,R3 UNPA04: ADD #11,R3 UNPA05: ADD #11,R3 MOVB R3,(R1)+ ;STORE CHARACTER TST (R2)+  ;ADVANCE TO NEXT COEFF. INC R5  ;DONE 3 CHARS? BLT UNPA06  ;NO-DO MORE MOV (SP),R0  ;RESTORE ORIGINAL R0 AND TST (R0)+  ;MOVE TO NEXT WORD RTS PC ; ; COEFFICIENT TABLE ; COEFF: +1600.   ;40. ^ 2 +40.   ;40. ^ 1 +1.   ;40. ^ 0 O.BW: .BYTE 0 ; =0 - ALL CLOSED    ; =1 - BYTE­È~ˆ©P~ª×~xª_~ðª®ç~HËn~ÀËö~8Ì}~°Ì¯DATA IN THE CORE BUFFER. ; 3. END OF TYPE I AREA BIT 2 = 1 ; 4. END OF TYPE II AREA BIT 3 = 1 ; 5. BUFFER NOT AVAIL BIT 15 = 1 (-) ; ; THE STATUS IS RETURNED IN R5. ; ; CHRBUF: CMP #MESG3,DLAW50 ; END OF TYPE I AREA ? BEQ 20$ ; YES - SET END TYPE I CMP #MESG4,DLAW50 ; END OF TYPE II AREA BEQ 25$ ; YES - SET END TYPE II TST DLAW51 ° OPEN,    ; =2 - WORD OPEN .EVEN O.CAD: 0   ; CURRENT ADDRESS O.DOT: 0   ; ORIGIN ADDRESS O.XXX: .WORD 0  ;TEMPORARY STORAGE O.XXY: .WORD 0  ;2ND WORD OF TEMPORARY STORAGE O.LPC: .WORD 0 ;PC OF LAST INSTRUCTION EXECUTED O.SEQ: .BYTE 0 ;CHANGE SEQUENCE INDICATOR O.WDFG: .BYTE 0  ;SEARCH FLAG = 1 - EFFECTIVE    ; = 0 - WORD O.S: .BYTE 0  ;SINGLE INSTRUCTION FLAG    ;0 IF NOT ACTIVE    ;-1 IF ACTIVE    ;NO BREAK ±ç~h«n~à«ö~X¬}²~(ÍŒ~ Í~Λ~�γ ; ALL CHARS MOVED ? BEQ 37$ ; YES DEC DLAW51 ; REDUCE CHAR COUNT TST DLCBPT(R1) ; BUFFER IN USE ? BEQ 11$ ; NO - GO GET FIRST BUFFER 1$: JSR PC,BUFED ; END OF CURRENT BUFFER ? BR 14$ ; YES - GET ANOTHER BUFFER 4$: MOVB @DLAW50,R4 ; GET THE NEXT CHAR FROM MSG WORK AREA INC DLAW50 ; INCR CURRENT MESG POINTER INC DLAW´BOINTS MAY BE SET WHILE IN    ;SINGLE INSTRUCTION MODE O.TRC: .BYTE 0 ;TRACE MODE, 0 = NON-TRACE O.T: .BYTE 0  ; T-BIT FLAG O.P: .BYTE 0  ;PROCEED FLAG = -2 IF MANUAL ENTRY    ;  -1 IF NO PROCEED ALLOWED    ;  0-7 IF PCEED ALLOWED O.CSR1: .BYTE 0  ;SAVE CELL - R C/SR O.CSR2: .BYTE 0  ;SAVE CELL - T C/SR O.CMFD: .BYTE 0 ;COMMA FOUND SWITCH, =0 NO COMMA FOUND   ;   =1 COMMA FOUND O.SMFD: .BYTE 0 ;SEMICOLON FOUND SWITCH   µ~Ь~H­Œ~À­~8®¶#~Ϫ~€Ï2~øÏ·54 ; INCR CELL BYTE COUNT 6$: CMPB #DEL,R4 ; IS CHAR A DELETE BEQ CHRBUF ; YES CMPB #NUL,R4 ; IS CHAR A NULL ? BEQ CHRBUF ; YES MOVB R4,@DLCCPT(R1) ; NO, PUT CHAR TO BUFFER MOVB R4,CRCDR ;ACCUMULATE CRC-16 INC DLCCPT(R1) ; ADVANCE CURRENT BUF STORAGE PTR INC DLAW53 ; POINTERS BLOCK BYTE CNT CMPB #ETX,R4 ; ET¸;=0 NO SEMICOLON FOUND   ;=1 SEMICOLON FOUND O.ALF1: .BYTE 0 O.ALF2: .BYTE 0 O.ALF3: .BYTE 0 O.SCRN: .BYTE 0 ;FLAG; 1=PASS SPACES ON FROM TTY   ;ALSO, IF =1, IS ECHOED O.ID: .BYTE 015 .ASCII /DEBUG / O.IDT: .BYTE 0,0,0 ;TASK NO. .BYTE 015 O.IDND = .-1 .EVEN TRCHDR: .WORD 72.,0 .BYTE 014 .ASCII /PC CP R L T NZVC R0 R1 R2 R3 R4/ .ASCII / R5 SP / ¹›~°®#~(¯ª~ ¯2~°ºº~pÐA~èÐÉ~`ÑP~ØÑ»X FOUND ? BEQ 30$ ; YES - SET ETX FLAG CMPB #ETB,R4 ; ETB FOUND ? BEQ 35$ ; YES - SET ETB FLAG CMP #OUTSIZ,DLAW53 ; END OF BLOCK BLOS 8$ ; YES BR CHRBUF ; CONTINUE ; 8$: JSR PC,BUFED ; END OF BUFFER ? BR 19$ ; YES - 9$: MOV #ETB,R4 ; GET ETB CHARACTER BR 6$ ; CONT ; 10$: ¼ .BYTE 012 .EVEN DMPHDR: .WORD 64.,0 .BYTE 014 .ASCII /LOCN CONTENTS/ .ASCII / / .BYTE 012 .EVEN O.BD: .WORD "BE O.BIAS: .WORD 0 ;CURRENT RELOCATION BIAS O.MINS: .BYTE 0 ;MINUS SIGN TYPED (SWITCH)   ;0=NO MINUS TYPED; 1=MINUS SIGN TYPED .EVEN O.TMP1: .WORD 0 ;SAVE CELL O.TMP2: .WORD 0 ;SAVE CELL O.CR: O.CRN: .BYTE 0,0,0 .BYTE '* ; * O.CRND = ½¹~�°A~±È~€±P~ø±¾Ø~PÒ_~ÈÒç~@Ón~¸Ó¿ MOV #AOBUFL,-(SP) ; SET PRIORITY FOR BUF EMT GETBUF ; GET A BUFFER MOV (SP)+,R0 ; MOV R0,@DLCCPT(R1) ; CHAIN NEW BUF TO LAST BUF MOV R0,DLCCPT(R1) ; NEW BUF ADDR TO CHAR POINTER RTS PC ; RETURN TO USER ; 11$: MOV #AOBUFL,-(SP) ; SET PRI FOR BUF EMT GETBUF ; GET BUFFER MOV (SP)+,R0 ; BUF AVAIL ? BEQ 12$ ; NO MOV À .-1 O.LGCH: .BYTE '; ; .BYTE '/ ; / .BYTE '\ ; \  (BACK SLASH) .BYTE 015 ; CARRIAGE RETURN .BYTE '$ ; $ .BYTE 'G ; G .BYTE O.NEXT ; SYMBOL USED TO OPEN NEXT LOCN .BYTE '_ ; _ (BACK ARROW) .BYTE '< ; < .BYTE '^ ; ^ (UP ARROW) .BYTE ', ; , .BYTE 'O ; O .BYTE 'W ; W .BYTE 'E ; E .BYTE 'B ; B .BYTE 'P ; P .BYTE '@ ; @ .BYTE '> ; > .BYTE 'S ; S .BYTE 'R ; R .BYTE 'C ; ÁØ~p²_~è²ç~`³n~سÂö~0Ô}~¨Ô~ ÕŒ~˜Õà R0,DLCBPT(R1) ; BUFFER ADDR TO BOTH POINTERS MOV R0,DLCCPT(R1) BR 4$ ; CONTINUE 12$: MOV #BIT15,R5 ; SET ERROR FLAG RTS PC ; RETURN TO USER ; 14$: JSR PC,10$ ; GET A BUFFER BNE 4$ ; BUF WAS AVAIL BR 12$ ; BUF NOT AVAIL ; 19$: JSR PC,10$ ; GET ABUFFER BNE 9$ ; BUF IS AVAIL BR 12$ Ä C .BYTE '- ; - .BYTE 'F ; F .BYTE 'I ; I .BYTE '! ; ! .BYTE 'X ; X .BYTE 'A ; A .BYTE 'D ; D .BYTE 'T ; T O.CLGT = .-O.LGCH  ;TABLE LENGTH O.TL: .BYTE 'S ;DO  1 .BYTE 'P ;NOT  2 .BYTE 'M ;CHANGE  3 .BYTE 0 ;THE  4 .BYTE 0 ;ORDER  5 .BYTE 'D ; .BYTE 'T ; .BYTE 'C ; 6 .BYTE 'F ;  7 .BYTE 'R ;  10 .BYTE 0 ; 11 .BYTE 0 ; Åö~P´}~È´~@µŒÆ~Ö›~ˆÖ#~ת~x×Ç ; BUF IS NOT AVAIL, ERROR ; 20$: MOV #BIT2,R5 ; SET END TYPE I RTS PC ; RETURN ; 25$: MOV #BIT3,R5 ; SET END TYPE II RTS PC ; RETURN ; 30$: MOV #BIT0,R5 ; SET ETX FLAG RTS PC ; RETURN 35$: MOV #BIT1,R5 ; SET ETB FLAG RTS PC ; RETURN 37$: CLR R5 ; CLEAR ERROR CODE RTS PC ; RETURN ; ; È 12 .BYTE 0 ; 13 .BYTE 0 ; 14 .BYTE 0 ;  15 .BYTE 0 ;  16 .BYTE 0 ;  17 .BYTE 'B ; 20 O.LG = .-O.TL .BOUND IOLIST: .WORD 1 ;THREAD WORD DEVICE: .BYTE 0 ;LOGICAL UNIT NO. .BYTE 2 ;EXIT TYPE .WORD 0 .BYTE 0,0 ;ERROR TASK, PRIORITY IOERR: .WORD 0,0 ;ERROR PARAMETER BUFADR: .WORD IOBUF ;BUFFER ADDRESS .WORD É~¸µ~0¶›~¨¶#~ ·Ê2~ð׺~hØA~àØË; TEST FOR END OF BUFFER ; ; ; CALLING SEQUENCE ; ; JSR PC,BUFED ; TRANSFER ; BR END ; END OF BUFFER ; * ; NORMAL RETURN ; BUFED: MOV DLCCPT(R1),R5 ; GET CURRENT BUFFER STORE PT BIC #-BUFLEN,R5 ; MASK TO RANGE OF 64 CMP #BUFLEN-2,R5 ; LAST WORD BEQ 2$ ; YES - ADD #2,(SP) Ì 0,0 IOBUF: .WORD 0 ;NO. OF CHARS .WORD 0 ;NO. OF CHARS INPUT (TTYIN ONLY) MSGDAT: .BLKB 72. ;MSG DATA AREA MSGDEN: ;MSG DATA AREA END TTY: .BYTE TTYLOG ;LOGICAL TTY UNIT NO. LP: .BYTE LPLOG ;LOGICAL LP UNIT NO. LNCNT: .BYTE 0 ;LINE COUNT FOR PAGE CONTROL .EVEN O.TRTC: BPT ;BREAKPOINT TRAP INSTRUCTION ;THE ORDER OF THE ͪ~˜·2~¸¹~ˆ¸A~¹ÎÉ~XÙP~ÐÙØ~HÚ_~ÀÚÏ ; NO - ADVANCE RETURN 2$: RTS PC ; RETURN ; ; ; INIT THE DEVICE TABLE ; DLAS10: MOV R1,4$ ; CLEAR ADD #DLCSTE,4$ ; THE JSR R5,MOVC ; FIRST .WORD 0 ; PART 4$: .WORD 0 ; OF THE .WORD DLCCRC-DLCTYP ; DEVICE TABLE MOVB #PAD,DLCPAD(R1) ;PUT PAD CHAR INTO LINK TABLE RTS PC ; RETURN ; ; ; INIT ERRORÐFOLLOWING ENTRIES IS CRITICAL . = DEBUG-150 ;ODT'S STACK IMMEDIATELY PRECEDES ODT O.UR0: 0 ;USER R0 0 ; R1 0 ; R2 0 ; R3 0 ; R4 0 ; R5 O.USP: 0 ;USER SP O.UPC: 0 ;USER PC O.UST: 0 ;USER ST O.PRI: 377 ;ODT PRIORITY (DEFAULT - SAME AS USER) O.MSK: 0 ;MASK O.LOW: 0 ;LOW LIMIT O.HI: 0 ;HIGH LIMIT O.DDEV: LPLOG ;DUMP LOGICAL DEVICE (DEFAULT LP) O.TDEV: LPLOG ;TRACE LOGICAL DEVICE (DEFAULT LP) O.CNST: 0 ;CONÑÈ~x¹P~ð¹Ø~hº_~àºÒç~8Ûn~°Ûö~(Ü}~ ÜÓ FLAGS & SPECIALTY INDICATORS ; DLAS15: CLR DLCIF1(R1) ; CLEAR CLR DLCIF2(R1) ; DEV STATUS CLR DLCIF3(R1) ; REG SAVE CLR DLCCHM(R1) ; CLEAR MSG COUNT CLR DLCCHB(R1) ; CLEAR BLK COUNT CLR DLCCRC(R1) ; CLEAR CRC-16 (BCC) CLR DLCSTS(R1) ; CLEAR LINK SPECIALTY INDICATORS BICB #DLCT1,DLCTMO(R1) ÔSTANT REGISTER O.FORM: 0 ; FORMAT REGISTER  ; IF $F=0 RELATIVE ADDRESSING  ; ABSOLUTE OTHERWISE ;RELOCATION REGISTERS O.RELT: -1,-1,-1,-1,-1,-1,-1,-1 ;INITIALLY SET TO A HIGH ADDR. ; BREAK POINT LISTS, ADR1 = ADDRESS OF BREAKPOINT,CT = COUNT, ; UIN = CONTENTS O.ADR1:  . = .+O.BKP+4 O.CT:  . = .+O.BKP+4 O.UIN:  . = .+O.BKP+4 . = O.TRTC+2 .END DEBUG ;END OF TAPE #4 Õç~X»n~лö~H¼}~À¼Ö~ÝŒ~�Ý~Þ›~€Þ× ; CLEAR TM1 TIME OUT FLAG BIC #DLCG1!DLCG2!DLCG11,DLCIND(R1);CLR BCC1,BCC2,LINK ERR FLAG RTS PC ; RETURN ; ; ; ESTABLISH THE TIMER BUFFER ; DLAS20: ; MOV TSKBFL,-(SP) ; GET EMT GETBUF ; A MOV (SP)+,R5 ; BUFFER BEQ DLAS23 ; NO BUFFER AVAIL MOV R5,DLCTM1(R1) ; ESTABLISH ADDR OF BUF FOR TIMER MODULE MOV Ù~8½Œ~°½~(¾#~øÞt¶ q>·§²@q¸Æ¦)ÅÅeJ Îxÿ ‡ Î N Í ÃŠüÍ ÷ <Âå·~pßÂ%!÷ ,„cÍ À‹ëéÑ�øj‹ŠË‹þ€ÃœÀ`ÃEÿ ‡·&Í ÄÍ ÃÄPÇ÷ êÿÍ À‹â„ †ÀÄ „cL|ß÷ê÷õwZÿÁöèßÂê‰ É‹þ€rœß· îÿõpÿò�TÛR5,DLAS21 ; SET FOR TIMER SKELETON MOVE ADD #DLAX35-DLAX30,R5 ; CALC ADDR MOV R5,DLCTM2(R1) ; OF TM2 TIMER MODULE IN BUFFER MOV R1,R5 ; SET FLAG ADDRESS IN ADD #DLCTMO,R5 ; TIMER MODULE SKELETON MOV R5,DLAX30+TMRFLG MOV R5,DLAX35+TMRFLG JSR R5,MOVA ; MOVE .WORD DLAX30 ; TIMER DLAS21: .WORD 0 ; MODULES .WORD DLAX39-DLAX3Ü BR 6$ ; CONT 2$: CMPB #3,DLCPRI(R1) ; PRIORITY = 3 ? BNE 4$ ; NO - MOVB #'1,DLAX60 ; YES - SEND TO ASR BR 6$ ; CONT 4$: MOVB #'2,DLAX60 ; SEND TO R0 6$: JSR PC,THDRDT ; GET DATE & TIME ; MOV #DLAX60,DLAW50 ; SET MOV #DLAX63-DLAX60,DLAW51 ; POINTERS CLR DLAW53 Ý›~ ¾#~¿ª~�¿2~ÀÞPC,DLAS30 ; TRANSFER ; BR ERROR ; ERROR IN DATA MOVE ; - ; ; ; DLAS30: MOV #MESG2+HDRL,R5 ; MSG AREA START CLR DLAW14 ; CLEAR ETX POINTER MOV DLCBPT(R1),R0 ; BUFFER CHAIN START BNE DLAS32 ; ANY BUFFERS DLAS31: DEBUG ; NO - ******** RTS PC ; DLAS32: MOVB (R0)+,R4 ; MOVE CHAR MOß0 ; TO BUFFER JSR PC,DLAS25 ; START THE LONG INTERVAL TIMER ; ADD #2,(SP) ; FORM GOOD RETURN DLAS23: RTS PC ; RETURN ; ; ; SET THE LONG INTERVAL TIMER ; DLAS25: JSR PC,DLAS26 ; MAKE SURE MODULE IS DEQUED MOV DLCTM2(R1),-(SP); START MOV DLAW45,-(SP) ; THE EMT QTIME ; LONG INTERVAL TST (SP)+ ; TIMER BEQ 2$ à ; FOR TERMINAL CLR DLAW54 ; HEADER MOVE RTS PC ; RETURN ; ; REPORT AN ERROR TO THE CONSOLE ; ; THE ERROR IS ONLY REPORTED ON OVERFLOWS IF THE INHIBIT UNIMPOR- ; TANT ERROR FLAG (SYD ) IS NOT SET. ; ; ERRPT: MOV R1,R0 ; GET ADDR ADD #DLCECT,R0 ; OF ERROR COUNTS FOR DEVICE JSR PC,ERCMP ; COMPUTE ERROR % CMP #ERRLIM,R5 á¹~€ÀA~øÀÉ~pÁP~èÁâVB R4,CRCDR ; ACCUMULATE CRC-16 TST DLAW14 ; ETX FOUND ? BNE 7$ ; YES, DON'T STORE CHAR MOVB R4,(R5)+ CMPB #ETX,R4 ; CHECK BNE 6$ ; AND MARK POSITION MOV R5,DLAW14 ; OF DEC DLAW14 ; ETX BR 7$ ; IN MSG AREA 6$: CMP #MESG2+HDRL+MSGSIZ,R5 ; IS MESSAGE SIZE LIMIT REACHED ? BLO DLASã DEBUG ;ERROR 2$: RTS PC ; RETURN ; ; ; STOP THE LONG INTERVAL TIMER ; DLAS26: MOV DLCTM2(R1),-(SP); STOP EMT DQTIME ; THE TST (SP)+ ; LONG INTERVAL TIMER CLRB DLCTMO(R1) ; CLEAR TIMEOUT FLAG RTS PC ; RETURN ; ; ; ; MOVE FROM CORE BUF TO MESGWORK AREA ; ; ADDR OF ETX IS LEFT IN DLAW14 ; R0 = POINTER TO BUFFER ; ä ; ERROR LIMIT REACHED BGT 8$ ; NO - MOVEA DLAXA5,DLAXA1,8.; FORM DATALINK NAME CNVBA1 DLAW70,DLAXA2,3 ; GET DEVICE NUMBER MOVB #' ,DLAXA2+3 ; ADD TRAILING BLANKS MOVB #' ,DLAXA2+4 MOV #DLAXA0,DLAV20+DATA; PUT DATA BUF ADDRESS IN TTY LIST MOV #DLAV20,-(SP) ; OUTPUT EMT TTYOUT ; TO TTY TST DLAV20+ERROR ; TTY REQUEST ERROR ? BEQ 8$ åØ~`Â_~ØÂç~PÃn~ÈÃæ31 ; YES - ERROR 7$: MOV R0,R4 ; IS BIC #177700,R4 ; THIS END CMP #BUFFL-2,R4 ; OF BUFFER BNE DLAS32 ; NO - CONT MOV (R0),R0 ; SAVE CHAIN MOV DLCBPT(R1),-(SP); RELEASE THE BUFFER TO FREE POOL EMT PUTBUF MOV R0,DLCBPT(R1) ; PLACE ADDR IN CHAIN START BNE DLAS32 ; END OF CHAIN TST DLAW14 ; WAS çR4 = POINTER TO MESSAGE AREA ; ; ; ; CALLING SEQUENCE ; - ; ; JSR PC,DLAS30 ; TRANSFER ; BR ERROR ; ERROR IN DATA MOVE ; - ; ; ; DLAS30: MOV #MESG2+HDRL,R5 ; MSG AREA START CLR DLAW14 ; CLEAR ETX POINTER MOV DLCBPT(R1),R0 ; BUFFER CHAIN START BNE DLAS32 ; ANY BUFFERS DLAS31: DEBUG è; NO DEBUG 8$: JSR PC,TETCMP ; GET TERML ERROR TBL ADDRESS TST R5 ; VALID TERML NO. ? BEQ 16$ ; NO MOV R5,R0 ; TERMINAL ERRORS JSR PC,ERCMP ; COMPUTE ERROR % CMP #ERRLIM,R5 ; ERROR LIMIT REACHED BGT 16$ ; MOVEA DLAXA6,DLAXA1,8.; FORM TERMINAL NAME MOVB DLCTRM(R1),R5 ; GET DEC R5 éö~@Ä}~¸Ä~0ÅŒ~¨ÅêETX RECEIVED ? BEQ DLAS31 ; NO - ERROR ADD #2,(SP) ; ADJUST RETURN ADDRESS RTS PC ; RETURN ; ; ; CALCULATE ADDR OF OUT TABLE ; DLAS40: CNXRTE MESG2+HDRL+THDRTE,R3,DLAS41; CONVERT ROUTING CODE MOV R3,DLAW13 ; SAVE LOCATOR MUL #OUTL,R3 ; CALC ADDR OF OUT TBL ADD #OUTST,R3 DLAS41: RTS PC ;RETURN ; ; ; SET UPë ; NO - ******** RTS PC ; DLAS32: MOVB (R0)+,R4 ; MOVE CHAR TST DLAW14 ; ETX FOUND ? BNE 7$ ; YES, DON'T STORE CHAR MOVB R4,CRCDR ; ACCUMULATE CRC-16 CMPB #DEL,R4 ; IGNORE DELETES BEQ 5$ CMPB #NUL,R4 ; IGNORE NULLS BEQ 5$ MOVB R4,(R5)+ 5$: CMPB #ETX,R4 ; CHECK BNE ì; MUL #RTEL,R5 ; THE ADD #RTEST,R5 ; TERMINAL MOV R5,10$ ; NAME JSR PC,MOVA ; FROM 10$: .WORD 0 ; THE .WORD DLAXA2 ; ROUTING .WORD HDRLFR ; TABLE MOV #DLAXA0,DLAV20+DATA; PUT DATA BUF ADDR IN TTY LIST MOV #DLAV20,-(SP) ; WRITE TO EMT TTYOUT ; TTY TST DLAV20+ERROR ; TTY í~ Æ›~˜Æ#~Çî MESSAGE CONTROL LIST PRIOR TO 1ST CALL ; DLAS50: CLR DLAV10+MSPSVC ;CLEAR SYSTEM WORD MOVB DLCPRI(R1),DLAV10+MSPPRI ;SET QUEUE PRIORITY MOVB DLCQNM(R1),DLAV10+MSPNUM ; SET QUEUE NUMBER DEC DLAV10+MSPNUM ; RTS PC ; RETURN ; ; ; DATA AREA ; ; REQUEST LIST ; DLAV10: MSPLST QUDLDA ; MESSAGE CONTROL REQUEST LIST TTYLST TTY1,DLAXA0,,,DLAV20 ; TTYLIST .IF ï 6$ ; AND MARK POSITION MOV R5,DLAW14 ; OF DEC DLAW14 ; ETX BR 7$ ; IN MSG AREA 6$: CMP #MESG2+HDRL+MSGSIZ,R5 ; IS MESSAGE SIZE LIMIT REACHED ? BLO DLAS31 ; YES - ERROR 7$: MOV R0,R4 ; IS BIC #177700,R4 ; THIS END CMP #BUFFL-2,R4 ; OF BUFFER BNE DLAS32 ; NO - CONT ðREQUEST ERROR ? BEQ 16$ ; NO DEBUG 16$: RTS PC ; RETURN ; ; COMPUTE ERROR VALUE ; ; % ERROR RETURNED IN R5 ; ERCMP: ; CLR R5 ; CMPB 2(R0),#CNCLIM ; BLO 2$ ; ; JSR PC,SAVEX ; CLR R4 ; MOVB (R0),R5 ; BIC #177400,R5 ; MUL #100.,R5 ñª~ˆÇ2~ȹ~xÈA~ðÈòDF,CHECKOUT ;******** TTYLST TTY1,0,,,DLAV15 ; ;******** .ENDC ;******** DLAV30: MPLLST MPLRTR,0,REQTNO,DLAV40 ; MAG TP PRE-HANDLER LIST MTLIST 0,0,MPHWRT,0,DLAV40 ; ROS MAG TP I/O LIST DLAV50: MPLLST MPLAUD,0,0,DLAV60 ; MAG TAPE PRE-HANDLER LIST MTLIST 0,0,MPHWRT,0,DLAV60 ; ROS MAG TP I/O LIST ó MOV (R0),R0 ; SAVE CHAIN BNE 8$ ;IS BUFFER CHAIN WORD ZERO? TST DLAW14 ; HAS ETX BEEN FOUND? BNE 8$ ; YES DEBUG ; NO - FATAL ERROR 8$: MOV DLCBPT(R1),-(SP); RELEASE THE BUFFER TO FREE POOL EMT PUTBUF MOV R0,DLCBPT(R1) ; PLACE ADDR IN CHAIN START BNE DLAS32 ; END OF CHAIN ADD #2,(SP) ; ADJUST RETURN ADô ; MOVB 1(R0),R3 ; BIC #177400,R3 ; DIV R3,R4 ; MOV R4,R5 ; JSR PC,RESTOX ; ; CMP R5,#ERRLIM ; BHIS 4$ ; 2$: RTS PC ; ; 4$: CLRB (R0) ; CLRB 1(R0) ; CLRB 2(R0) ; RTS PC ; ; ; ; INCREMENT ERROR COUNTS ; BDREP: INCB DLCEõÉ~hÉP~àÉØ~XÊ_~ÐÊö TMRLST BIT7,RES3,,,,,DLAV70 ; TIMER LIST ; ; ; WORK AREAS ; DLAW10: .WORD DLCST ; ADDR OF CURRENT DEVICE TABLE DLAW11: .WORD ALREGS ; ADDR OF CURRENT DEVICE REGS DLAW13: .WORD 0 ; ADDR OF OUT TABLE FOR TERMINAL DLAW14: .WORD 0 ; ADDR OF ETX IN MESG DLAW20: .WORD 0 ; SEQ NO SAVE DLAW30: .WORD NAKBUF ; ADDR OF NAK DLAW31: .WORD ACKBUF ; ADDR OF ACK DLAW32: .WORD CANBUF ÷DRESS RTS PC ; RETURN ; ; ; CALCULATE ADDR OF OUT TABLE ; DLAS40: CNXRTE MESG2+HDRL+THDRTE,R3,DLAS41; CONVERT ROUTING CODE MOV R3,DLAW13 ; SAVE LOCATOR MUL #OUTL,R3 ; CALC ADDR OF OUT TBL ADD #OUTST,R3 ADD #2,(SP) ; ADJUST RETURN ADDRESS DLAS41: RTS PC ;RETURN ; ; ; SET UP MESSAGE CONTROL LIST PRIOR TO 1ST CALL ; øCT(R1) ; ADVANCE ERROR COUNTS JSR PC,OKREP ; UPDATE MSG COUNTS TST R5 ; TERML KNOWN BEQ 2$ INCB TETECT(R5) ; YES - ADVANCE COUNT OF ERRORS 2$: RTS PC ; RETURN ; ; INCREMENT GOOD MESSAGE COUNT ; OKREP: INC DLCMCT(R1) ; ADVANCE MSG COUNT JSR PC,TETCMP ; GET ADDRESS OF TERML ERROR TBL TST R5 ; VALID TERML NO. ? BEQ 2$ ùç~HËn~ÀËö~8Ì}~°Ìú; ADDR OF CAN DLAW33: .WORD 2 ; NO OF CHAR IN ABOVE DLAW34: .WORD STXBUF ; ADDR OF STX DLAW40: .WORD 0 ; BUFFER CHAIN SAVE DLAW45: .WORD 0 ; TIMER VALUE FOR LONG INTERVAL DLAW50: .WORD 0 ; POINTER TO DATA DLAW51: .WORD 0 ; MAX CHAR COUNT IN DATA AREA DLAW53: .WORD 0 ; COUNT BYTES MOVED DLAW54: .WORD 0 ; COUNT OF BYTES MOVED FROM CELL ; ; ; DRAIN QUE WORK AREû DLAS50: CLR DLAV10+MSPSVC ;CLEAR SYSTEM WORD CLR DLAV10+MSPPRI ; INSURE UPPER BYTE OF PRI WRD CLEARED MOVB DLCPRI(R1),DLAV10+MSPPRI ;SET QUEUE PRIORITY CLR DLAV10+MSPNUM ; INSURE UPPER BYTE OF QNUM WRD CLEARED MOVB DLCQNM(R1),DLAV10+MSPNUM ; SET QUEUE NUMBER RTS PC ; RETURN ; ; ; DATA AREA ; ; REQUEST LIST ; DLAV10: MSPLST QUDLDA ; MESSAGE CONTROL REQUEST LISTü ; NO INC TETMCT(R5) ; INCR TERML ERROR COUNT JSR PC,ERRPT ; REPORT ERROR 2$: RTS PC ; RETURN ; ; ; COMPUTE ADDR OF TERMINAL ERROR TABLE ; TETCMP: MOV DLCTRM(R1),R5 ; GET TERML NO BEQ 2$ ; TERMINAL NOT IDENTIFIED DEC R5 ; REDUCE TO ELIM OFFSET MUL #TETL,R5 ; MULTIPLY BY TABLE LENGTH ADD #TEý~(ÍŒ~ Í~Λ~�ÎþA ; DLAW60: .WORD 0 ; BATCH FLAG DLAW61: .WORD 0 ; QUE ADDR DLAW62: .WORD 0 ; QUE NAME DLAW63: .WORD 0 ; DRAIN FLAG FOR MSG REMOVED DLAW64: .WORD 0 ; ADDR FOR ETX IN BUFFER DLAW65: .WORD 0 ; RETRVL TAPE NO. DLAW67: .WORD 0 ; CHAR PER LINE COUNT DLAW68: .WORD 0 ; TERMINAL NUMBER DLAW70: .WORD 0 ; NUMBER OF DEVICE BEING SERVICED ; ; ; CONSÿ TTYLST TTY1,DLAXA0,,,DLAV20 ; TTYLIST .IF DF,CHECKOUT ;******** TTYLST TTY1,0,,,DLAV15 ; ;******** .ENDC ;******** DLAV30: MPLLST MPLRTR,0,REQTNO,DLAV40 ; MAG TP PRE-HANDLER LIST MTLIST 0,0,MPHWRT,0,DLAV40 ; ROS MAG TP I/O LIST DLAV50: MPLLST MPLAUD,0,0,DLAV60 ; MAG TAPE PRE-HANDLER LIST TST,R5 ; ADD START OF TABLE 2$: RTS PC ; RETURN ; ; ; ; ; MOVE CHARACTER FROM WORK AREA TO BUFFER ; ; A STRING OF CHARACTERS IS MOVED FROM THE WORK AREA (MESG) TO ; THE CORE BUFFERS. BUFFERS ARE OBTAINED AS REQUIRED. DATA TRANS- ; FER HALTS FOR THE FOLLOWING CONDITIONS: ; ; 1. ETX PROCESSED BIT 0 = 1 ; 2. END OF BLOCK BIT 1 = 1 ; AN ETB IS ADDED TO TH#~Ϫ~€Ï2~øÏTANTS ; DLAX10: INTID ; INTERCEPT HEADER ID DLAX11: STDID ; STANDARD HEADER ID DLAX12: RTVID ; RETRIEVAL HEADER ID DLAX15: .ASCII / / ; RTVL NO INDICATOR FROM DC DLAX16: .BYTE DEL,DEL,DEL,DEL ; RTVL NO INDICATOR FROM HUB DLAX17: DCRTE ; DATACENTER ROUTING CODE DLAX18: .ASCII /.3C/ ; TERMINAL ACTION CODE .EVEN DLAX20: DLAG10 ; 0 - RECV DATA DLAG10  MTLIST 0,DLAY10,MPHWRT,DLAY20-DLAY10/2,DLAV60 ;ROS MT I/O LIST TMRLST BIT7,RES3,,,,,DLAV70 ; TIMER LIST ; ; ; WORK AREAS ; DLAW10: .WORD DLCST ; ADDR OF CURRENT DEVICE TABLE DLAW11: .WORD ALREGS ; ADDR OF CURRENT DEVICE REGS DLAW13: .WORD 0 ; ADDR OF OUT TABLE FOR TERMINAL DLAW14: .WORD 0 ; ADDR OF ETX IN MESG DLAW20: .WORD 0 ; SEQ NO SAVE DLAW21: .WORD 0 ; SEQ NO. ERROR E DATA IN THE CORE BUFFER. ; 3. END OF TYPE I AREA BIT 2 = 1 ; 4. END OF TYPE II AREA BIT 3 = 1 ; 5. BUFFER NOT AVAIL BIT 15 = 1 (-) ; ; THE STATUS IS RETURNED IN R5. ; ; CHRBUF: CMP #MESG3,DLAW50 ; END OF TYPE I AREA ? BEQ 20$ ; YES - SET END TYPE I CMP #MESG4,DLAW50 ; END OF TYPE II AREA BEQ 25$ ; YES - SET END TYPE II DEC DLAW51 º~pÐA~èÐÉ~`ÑP~ØÑ 13.SNCSY,A:1PA6/S0U.EQDL,A:1PAC/MA1,A:/PYEFLAG DLAW30: .WORD NAKBUF ; ADDR OF NAK DLAW31: .WORD ACKBUF ; ADDR OF ACK DLAW32: .WORD CANBUF ; ADDR OF CAN DLAW33: .WORD 2 ; NO OF CHAR IN ABOVE DLAW34: .WORD STXBUF ; ADDR OF STX DLAW40: .WORD 0 ; BUFFER CHAIN SAVE DLAW45: .WORD 0 ; TIMER VALUE FOR LONG INTERVAL DLAW50: .WORD 0 ; POINTER TO DATA DLAW51: .WORD 0 ; MAX CHAR COUNT IN DATA AREA DLAW53: .WORD 0  ; ALL CHARS MOVED ? BEQ 37$ ; YES TST DLCBPT(R1) ; BUFFER IN USE ? BEQ 11$ ; NO - GO GET FIRST BUFFER 1$: JSR PC,BUFED ; END OF CURRENT BUFFER ? BR 14$ ; YES - GET ANOTHER BUFFER MOVB @DLAW50,R4 ; GET THE NEXT CHAR FROM MSG WORK AREA INC DLAW50 ; INCR CURRENT MESG POINTER INC DLAW54 ; INCR CELL BYTE COUNT 6$: MOVB Ø~PÒ_~ÈÒç~@Ón~¸Ó,S:1PAR/DLAN:HDKF·§²@q¸Æ¦)ÅÅeJ Îxÿ ‡ Î N Í ÃŠüÍ ÷ <Âå·~pßÂ%!÷ ,„cÍ À‹ëéÑ�øj‹ŠË‹þ€ÃœÀ`ÃEÿ ‡·&Í ÄÍ ÃÄPÇ÷ êÿÍ À‹â„ †ÀÄ „cL|ß÷ê÷õwZÿÁöèßÂê‰ É‹þ€rœß· îÿõpÿò�T 0 =H2YD S1 0000 0 =H1YDS 1 0000 0M=HAYDS 4 0000 0 =G3YDS 2 0000 0 =G2YDS 1 0000 0 =G1YD S0 0400 0 =F3YDS  000100= 2 DFSY  000200= 1 DFSY  160000= PBDESY  220000= D1DESY 210000= TMDDSY  010000= TIDDSY  130000= STDDSY  000000= EFDDSY  020000= CLDDSY 120000= CIDDSY  020000= CFDDSY  150000= PBDCSY  030000= L T9SX  420000= T9SX 050000= L T8SX  350000= T8SX  03âý'8. ; LINE 4 * DLAX84: .BYTE ETX ; DLAX85: ; .EVEN ; DLAX90: .ASCII /.HA/ ; CITGO CONFIGURATION ENTRY DLAX91: .ASCII /.NC/ ; DATA CENTER MANUAL DATA ENTRY DLAX92: .ASCII /.AB/ ; STANDARD MANUAL ENTRY ; ; ; ERROR MESSAGE TO TTY FOR DATALINK OR TERMINAL ; ;*******ERROR REPORTS ARE NOT PROVIDED BY THIS VERSION OF DLDIRA**************** ; .EVEN DLAXA0: .WORD DLAX( TSKBFL,-(SP) ; GET EMT GETBUF ; A MOV (SP)+,R5 ; BUFFER BEQ DLAS23 ; NO BUFFER AVAIL MOV R5,DLCTM1(R1) ; ESTABLISH ADDR OF BUF FOR TIME MODULES MOV R5,DLAS21 ; SET FOR TIMER SKELETON MOVE ADD #DLAX35-DLAX30,R5 ; CALC ADDR MOV R5,DLCTM2(R1) ; OF TIMER MODULE IN BUFFER MOV R1,R5 ; SET FLAG ADDRESS IN ADD #DLCTMO,R5 ; TI0000= L T7SX  320000= T7SX  040000= L T6SX 260000= T6SX  040000= L T5SX  220000= T5SX  070000= L T4SX  130000= T4SX 010000= L T3SX  120000= T3SX  000000= 6LT2SX  710000= 6 T2SX  000000= 5LT2SX 710000= 5 T2SX  010000= 4LT2SX  700000= 4 T2SX  010000= 3LT2SX  670000= 3 T2SX LYONE USL NAERNT IOR F MSTEYS SALNTMEONIRNV E &GYERENF UL G TADAE ATIVPR    * * *LEAB TOLMBSY* * * Þý+A5-DLAXA1 ; .WORD 0 ; DLAXA1: .ASCII / / ; ERROR MESSAGE DLAXA2: .ASCII / / ; .ASCII /ERROR./ ; .BYTE CR ; DLAXA5: .ASCII /DATALINK/ ; DLAXA6: .ASCII /TERMINAL/ ; ; ; ; ERROR MSG TO HUB WHEN MSG RCVD FROM TERMINAL WITH UNEXPECTED SEQ NO. ; .EVEN DLAXB0: INTID ;INTERCEPT HEADER ID HUBRTE ; HUB ROUTING CODE ,MER MODULE SKELETON MOV R5,DLAX32 MOV R5,DLAX37 JSR R5,MOVA ; MOVE .WORD DLAX30 ; T+ME- DLAS21: .WORD 0 ; MODULES .WORD DLAX39-DLAX20 ; TO BUFFER JSR PC,DLAS25 ; START THE LONG INTERVAL TIMER ; ADD #2,(SP) ; FORM GOOD RETURN DLAS23: RTS PC ; RETURN ; ; ; SET THE LONG INTERVAL TIMER ; DLAS25: JSR PC,DLAS26 2+ 1GEPA 5B00 VROACRM C YNAS 5 0000 0L=22XTS 2 0600 0 =22XTS 3 0000 0L=21XTS 7 0500 0 =21XTS 2 0000 0L=20XT S5 0500 0 =20XTS 7 0000 0 =2LXTS 3 0000 0 =2 XTS 0 0000 0L=14XTS 5 0500 0 =14XT S0 0000 0L=13XTS 5 0500 0 =13XTS 1 0000 0L=12XTS 4 0500 0 =12XTS 3 0000 0L=11XT S1 0500 0 =11XTS 4 0000 0L=10XTS 5 0400 0 =10XTS 3 0000 0 =1LXTS 0 0000 0 =1 XT S4 0000Úý/ HUBRTE ; HUB ROUTING CODE .ASCII /000 0 / CONACT ; CONSOLE ACTION CODE DLAXB1: .ASCII /TASK NO. / .BYTE TSKNO/10+60,TSKNO&7+60,CR ; TASK NO .ASCII /TERMINAL / DLAXB2: .BLKB HDRLTO ; TERMINAL ID .ASCII / SEQ. NO. ERROR!/ .BYTE CR .ASCII / PREVIOUS - / DLAXB3: .BLKB HDRLSE ; PREVIOUS MSG SEQ NO. .BYTE CR .ASCII / CURRENT - / DLAXB4: .BLKB HDRLSE .ä;¯””@£@ÃÎ@?.Q u~@¬ @» @öÎ@±s@V.¸s@ãày@®S@@®SÀ@®S@¬.9T}@þw8þ÷ Ö÷ ˆw|ü÷ b÷ �÷ N C.¸÷ x÷ t wú÷ ÷ Fñ• ÷ ^ f ˆÖ .Þ÷ Î f æ ˆÖ w2ü÷ü ÷ š ÷ m.ñ• wt÷ ÷  ÷ ÷  wœæì÷ Á$ì(±sU. 4 0100 0 =4 ECS 4 0000 0 =3LEC S0 0100 0 =3 ECS 4 0000 0 =2LECS 4 0000 0 =2 ECS 2 0000 0 =1LECS 2 0000 0 =1 EC S2 0000 0 =0LECS 0 0000 0 =0 ECS 0 2000 0Z=SIECS 7 0100 0 =L ECS 0 4004 1 =E AV S5 0000%0 = 5 R 4 0000%0 = 4 R 3 0000%0 = 3 R 2 0000%0 = 2 R 1 0000%0 = 1 R0 0000%0 = 0 R 4 0700 0 = TLR 5 0000 0M=QNTER 6 0000 0 =L TER 0 0000 0 =IDTE R0 0200 0D=EESPR Òý ;******* ; DLAEND: ; END OF DLDIRA .END õU@÷•.ŠÈ÷•ÃæR÷ €À‹wXñÂñ$÷ †÷ ŽROT€p Âñö.°ºqñ•òQw`ù÷ ®EõU@2.Öw¨ý÷ 4÷ ÷•l÷•gæR÷ €À‹TR"OT€p°.üwü÷Õ wùñ5 w®ü÷ âw¢üu €°r *." ñ5wø÷ æ÷ þñ5€ wX÷ ö÷•û.H ÷•æR÷ €À‹w˜w ÌÈ5RKT€W"®S@$Ì&ÈZ.n w Ì÷•Ö÷•ÑæR÷ €À‹wf®SÀ ÌR OT€pÜ.” fw*ü÷ ž÷•°÷•«æR÷ €À‹À¥YR Ø&7ˆñý¬zàyY.$ Ðô1 ‡ñ•ñ´ñ�²‡ñ•).J ñžñ�ž‡ñ•ñŽñ�Їñ„|.p ñ•‡÷•Ô÷•ÏæR÷ €À‹w°R èÓ ûÀ.f7ˆ1á÷ ÖÜÎe‡æì÷ ƒÃ%* ì$¸sV.&ÿÿw ÷´×pÃe‡7 wœwœ” aày&L÷ ‡†Ìm† Ìlµ&l Œ¦ŒŒ”.Œ ¼L &¼ý²) ¼&¼þ Üü.܃øc$ ãày³WÎÃÎöÎøyÎO.??? !!! &&& ÿÿÿÿL(TULSA .3Cd 2¥2ä ä ä ä ä Ä8 (Ö‚\.ä ä ä  ä  ä Ä8 (Ö‚ F ([ (L:.L35!!! HUB0± 0O=PCUOQ 6 0100 0V=ANUMQ 7 0000 0M=ORUFQ 0 0100 0E=ILUF QG * **** * =UEUEQ 5 0000 0R=ODUEQ 2R7306 0R DIUEQ 2 0300 0 =TCUDQ 7 0100 0S=LDUD Q2 0000 0A=LDUDQ 3 0100 0P=ISUDQ 1 0000 0O=ONUCQ 1 0100 0F=ONUCQ G * **** * =METI Q0 0200 0M=NUPGQ 3 0300 0C=YNASQ  R 107200 30TCPU  R 007200 30TBPU  RG147100 UFTBPU G******= R SHPU  767717= PS  010000= SKITPR  050000= TVIRPRÆýÂýPR = ****** G PRB = 000013 PRBASE= 000001 PRD = 000014 PRICNF= 000005 PRICON= 000002 PRIDIS= 000005 PRIDRA= 000003 PRIDRS= 000003 PRIEIN= 000000 PRIEOD= 000005 PRIFIL= 000004 PRIFRM= 000005 PRILIM= 177774 PRIMAG= 000002 PRIMAN= 000005 PRIMJD= 000001 PRIOPC= 000002 PRIOVR= 000005 PRIPRD= 000005 PRIRCV= 000000 PRIRST= 000000 PRIRTE= 000002