€€B ; MAGTAP.316 9-MAY-73 ; MAGTAP.315 4-MAY-73 ; MAGTAP.314 2-MAY-73 ; MAGTAP.313 1-MAY-73 ; MAGTAP.312 27-APR-73 ; MAGTAP.311 26-APR-73 ; MAGTAP.310 24-APR-73 ; MAGTAP.309 21-APR-73 .TITLE MAGTAP ;********************************************************************** ;* M A G T A P ** ;* ** ;* PROGRAM IDENTIFICATION. MAGTAP - MAGNETÌ”Âdu~#"Û~     ¥~x55Ôæ¦f&æêôæìôÃþÿR~ð€È m&÷ Ö�ö%�L ð ðµ a0 œa— ^ŸÂ  ¦÷ v^r°@rBr@° ðÅ &±ŠŸ!0Š æ~hðÕ ÷å¼ ?¸ ß�þÿ6 öÆe€�‚ƒ ÷ �Îe ÞÅß@fÿ; MT5T.01 2-MAY-73 ; MT3T.16 1-MAY-73 ; MT3T.15 27-APR-73 .TITLE $$TS35 .LIST MEB .MACRO LMAC EX,DN,DA,FU,NW,CT,?A,?B,?C,?D MOV #C-REL,R0 MOV R0,-(SP) EMT 71 ; MAGTAP .IFEQ EX-1 MOV (R0),R1 CMP R1,#1 .WORD 1374 ; BRANCH IF NOT EQUAL .ENDC .IFEQ EX-3 INC A BR A+2 A: .WORD 0 TST ; UPDATE 9/29/72 ROS3.SYS ; UPDATE 09.20.72 ;ROS3.SYS ; UPDATE 8/23/72 ROS3.SYS ; UPDATE 8/17/72 ROS3.SYS ; UPDATE 8/15/72 ROS3.SYS ; UPDATE 8/1/72 ROS3.SYS ; UPDATE 7/31/72 ROS3.SYS ; UPDATE 7/28/72 ROS3.SYS ; UPDATE 07.21.72 ROS3.SYS ;* ;* G E N E R A L S Y S T E M E Q U A T E S ;* $1145 = 1 ;1 = 11/45 0 = NOT 11/45 IC TAPE INTERFACE ** ;* SUBROUTINE USING THE KT-11C AND THE GULF CONTROLLER ** ;* ** ;* PURPOSE. ALL COMMUNICATIONS WITH THE MAGNETIC TAPES WILL ** ;* BE THROUGH THIS SUBROUTINE. THIS ROUTINE PERFORMS THE ** ;* FOLLOWING MAGNETIC TAPE FUNCTIONS: ** ;* 1 OPEN (RETURN STATUS) ** ;* 2 CLOSE (NO OPERATION) · w¬ß@fÿ· 6 ß�þÿŸìôŸêô€�‚ƒŽ‡öˆ ïös~àˆ êöˆ å&f¦ææêôæìô€È%Vœ  æþÿŸðµ G÷ žÈ &÷ |‚zf÷ pÎerrBô2@2U~X&÷ N 2 ƒÃe¡  òàðÅ óŠŸ!æ÷ dBŸ•þÿ6 ŸìôŸêôƒ‚�€‡ðÕ ïöïÿÿ÷ øÿßE@º~Ðfÿ&f¦À€Á ÂP‚~7 Ôÿ7 Òÿ÷ÿÿÈÿ‚�€· ¼ÿüf&æ¦f&æêôæìô& & À€ Ð B 0þÿÁeW @ów¦÷ B‚~Hòµ òŠ ‚óèòµ ù¦ƒ÷ A BNE A+2 .ENDC TST ERROR(R0) BEQ D JMP MTESE .IFEQ EX-3 B: CLR A RTS PC .ENDC .BOUND C: .WORD 1 ; THREAD .BYTE 4,EX ; MAGTAP, EXIT TYPE .IFEQ EX-3 .WORD B-REL ; RETURN ADDRESS FOR EXIT 3 .IFF .WORD 0 .ENDC .WORD DN,0,0 ; DEVICE NUMBER ERROR WORD SYSTE $1125 = 0 ;1 = 11/25 0 = NOT 11/25 $1120 = 0 ;1 = 11020 OR LESS (11/05, ETC.) $KT11C = 1 ;1 = KT11C SEGMENTATION ;0 = NO SEGMENTATION $FPP = 0 ;1 = FLOATING POINT PROCESSOR IS IN SYSTEM .IFZ $1125!$1145 .IFNZ $KT11C!$FPP XXXXXXXX .ENDC .ENDC $RASM = 1 ;1 = ASSEMBLER IS IN SYSTEM .IFG $KT1 ** ;* 3 READ ** ;* 4 WRITE ** ;* 5 WRITE FILE MARK ** ;* 6 REWIND ** ;* 7 SPACE (+-N) RECORDS ** ;* 10 SKIP (+-N) FILES ** ;* 11 MULTIPLE REWIÖ Âó&f¦æÆå€w€þ²œ ƒœ „Ã5€òÕ Ž ß8ýìô2 ¦÷ &¿&ý· ý·ý÷e ý�~À÷êôýÇÃ5äÃ5 Ã5@Ô ò  ¦& è÷ Ì]<] ÄeÃ5 ò‹ £ƒ¦÷ ZÿÖ Â�òÕ ÷ –‘þÿ&f¦æêôü ¸~8 Ÿêô‚�€òÅ Ÿòµ ÞÚ÷ dþ÷ ^‘þÿŸw²þÖ Â†Ê æÈ÷ Þâç÷ÞçºÖ ŸìôŸêô€�‚ƒ„…7 ,üXç· "ü~°NçwæŠ · þåÃÎ#£c#ãêô££Ö ŸìôŸêô€�‚ƒ„…w üæÃÀææßêôÀÁÂć ß _€ßà‚÷ ´H÷ ŠI‡u€}†€‡€‡`M .WORD DA-REL,16,20 ; DATA BUFFER ADDRESS SYS SYS .WORD FU,NW,CT ; FUNCTION CODE BUFFER SIZE COUNT .WORD 0,0,0,0 ; STATUS RES1 RES2 RES3 D: NOP ; ************************************************************* .ENDM ERROR = 8. R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 .PAGE ; TASK HEAD1C-1 XXXXXXXX .ENDC $DELAY = 2 ;INDICATES TYPE OF MEMORY AND IS USED ;IN SOME DELAY LOOPS ;1 = 1.2 US CORE ;2 = 850 NS CORE ;3 = 11/45 SOLID STATE MEMORY ; STANDARD REGISTER DEFINITIONS R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 ND ** ;* ALL THREE STANDARD R0S I/O EXITS ARE SUPPORTED BY MAGTAP. ** ;* ** ;* USAGE. THE ASSEMBLER LINKAGE TO MAGTAP IS: ** ;* ** ;* MOV #LIST,-(SP) ;PUSH LIST ADDRESS ON STACK ** ;* EMT MAGTAP ** ;* ~(† ÷ tÀâÿ:Z2Š.!rœ"· · ¡ ¡ rŠÀeçæh÷ Æ ‡ª~ À0€ ŠÁ‹@Ð7ºI÷¸I÷ ÐI ÀÀ þ÷ ¦I€‡7 H7 F7 D7 F7 >7 <À>À À ÀpÁà0ŠŸ! ñŠð•.!0Š"á é~À ð7Š#ÀÁ^&ÙÀ ü‡w ÜÀ¤)  ¨)ü‡Áw`ÀÀ)HÀe ü)ú‡À*Š *ü‡À*Âÿÿ�� *ü‡Š *ü‡À*P� *ü‡w �h~�‡ŸÆ`å÷ þ÷ .÷3öå÷àòåßüÿÁà÷h-låwjå÷+fåwdå÷�>€å÷à|åßBq”ßà–÷ÄBœå÷à˜å÷ER .WORD 1 ; THREAD .WORD 5 ; TASK NUMBER .BYTE 20 ; SYSTEM TASK .BYTE 1 ; PRIORITY .WORD MGTS-REL ; ENTRY .WORD 100,0 ; MAX TIME / TIMER .WORD 200 ; STACK SIZE .WORD 0 ; CPU STATUS .WORD 0 ; STACK POINTER .WORD 0 ; ARG .BYTE 6 .BYTE TSKEND-TSTACK/100 PC = %7 .IFNZ $FPP AC0 = %0 ; AC1 = %1 ;FLOATING AC2 = %2 ; POINT AC3 = %3 ; ACCUMULATOR AC4 = %4 ; DEFINITIONS AC5 = %5 ; .ENDC ; .IFNZ $KT11C $ROSM = 100000 ;ROS MASK FOR SYSTEM TASKS TO USE .ENDC ;TO 'OR' WITH ROS ADDRESSES TO POINT .IFZ $KT11C  ** ;* THE FORTRAN EQUIVALENT CALL IS: ** ;* ** ;* CALL MAGTAP(IADDR(LIST)) ** ;* ** ;* THE FORMAT OF THE LIST IS AS FOLLOWS: ** ;* ** ;* LIST ~Kå÷àå÷Æ8å¶~÷à4å÷J4üä÷à0øä÷ ÿ÷ ~þ÷ ÞýÖä7 Ðä7Š?)æ\D÷nD0)÷ ,÷%)ü÷•#)7ŠÁæE÷ ÷%¤)ü÷•«7Š÷zæh÷ ò÷%è~€ü÷•õ÷ Ðý      ß•€ëw¶ ÀÁÀô‚~ÁàôÀ‘Âe€~÷Ù÷€ ÙŸ zÿ‡X‡Ž‡ÿÿæþÿŸ· ôÿ&ææÑ~ø&B„&�.!ô•.!Ä ÷ÜØÒÿ&Š÷ p„7 ß50þÿ3ã£Ö £´÷¦ÿ¬Ø„Æ ßþÿæ¦f&æŽØæŒØæŠØÀ"&&&&&ê~p ßþÿM¦)ƒ „ßF ´÷LÿRØæ ó÷ FÿÀ,     ·:Ø·4Ø·.Ø€� .WORD 0,0 ; TPDR 1-2 .WORD 0,0,0 ; TPDR3 - 5 .WORD 0,77406 ; TPDR 6 - 7 .WORD TSTACK,0,0 ; TPAR 0 - 2 .WORD 0,0,0 ; TPAR 3 - 5 .WORD 0,7600 ; TPAR 6 - 7 . = . + 12. .CSECT MTTE5 REL = . TSTACK: .BLKW 200 MGTS: MOV #1000,MTRCC ; WRITE 16 FILES 37 RECORDS PER FILE MTES1: DEC MTRCC BEQ MTESTE MOV  ; TO USER ASR 4 $ROSM = 0 ; .ENDC PS = 177776 ; $DEBUG = 1 ; ROS DEBUG SWITCH $CORAL = 0 ; CORE ALLOCATION ; =0 SOFTWARE ; =1 HARDWARE ; ; ; TASK CONTROL SYSGEN EQUATE CARDS ; NPRIOR = 10. ; NO. OF SOFTWARE PRIORITY LEVELS PRIBKG = NPRIOR ; PRIORITY OF BACKGROUND $BATCH =  THREAD ** ;* +2 EXIT TYPE (1-3) DEVICE TYPE ** ;* +4 EXIT ADDRESS (EXIT TYPE 3 ONLY) ** ;* +6 DEVICE NUMBER FOR FUNCTIONS 1-10, SET BITS FOR 11 ** ;* +10 RETURN ERROR PARAMETER (0 TO 14) ** ;* +12 SYSTEM (CALLING TASK #) ** ;* +14 DATA BUFFER ADDRESS ** ;* ‚Ÿ·ÿ…·•ÿ·PP÷50 ÿ=CDwúþwøþFg~èÅ4÷ <3õ�êþ.!Åâþ÷ æþ(÷­*$ƒ÷50Ôþ·Æþ·ÄþF ·ÄþŽ F ·¼þ÷U€¶þ÷nâ´×Ƭþæ¢þæœþæ€æ÷ Øw …Á7 Ðõ•ê~`.!ÆÊæ¶÷ wæ ƒ„Ö …—#Œ(Îe&€tüÿ7T×€À À ÀEÀÿÀU 6€‡&€tüÿ70×€À À ÀEÀÿÀUÀ6€‡&f~Ø€ÁWtüÿÁEñÿAàôWt€ € ÀEø`v�€‡&f€#À æÖÖ&Š÷ lÿ€�ÁWtüÿÁEñÿ@`$Wt·°Ö€€ € ÀEø`v�€Ó~Pއ¦÷ xÿ¶õ&f€&À &Š÷ ÿ€�ÁWtüÿÁE#4,R4 ; WRITE COMMAND MOV MTRCC,R1 BIC #177740,R1 ; WRITE E O F AFTER 31 RECORDS BNE MTES2 INC R4 ; WRITE FILE MARK MTES2: MOV R4,.+56 ; STORE FUNCTION CODE MOV R4,.+136 ; STORE FUNCTION CODE LMAC 2,0,MWOUT,4,150,0 ; WRITE UNIT 0 LMAC 2,1,MWOUT,4,150,0 ; WRITE UNIT 1 BR MTES1 MTESTE: LMAC 2,0,MWRIN,6,0,0 ; REWIND  1 ; BATCH OPTION .IFLE NPRIOR ; XXXXXXXX ;NPRIOR MUST BE GREATER THAN ZERO .ENDC MXTASK = 20 ; MAX # OF CORE TASKS IN SYSTEM NLTASK = 1 ; LARGEST TASK # OF TASKS LOADED WITH SYSTEM ;NOTE: IF OVERLAYS ARE USED, THEN THE ;FIRST OVERLAY TASK NUMBER IS MXTASK+1 OVTMIN = MXTASK+1 ;FIRST OVERLAY TASK NUMBER OVRLAY +16 KPAR6 VALUE FOR VIRTUAL DATA BUFFER ADDRESS (ASR 6) ** ;* +20 SYSTEM VIRTUAL EQUIVALENT OF DATA BUFFER ADDRESS ** ;* +22 FUNCTION (CODES LISTED ABOVE) ** ;* +24 NWORD ** ;* +26 COUNT ** ;* +30 STATUS ** ;* +32 -BACKSPACE FLAG REPEAT COUNT ** ñÿ@`7$\Ö€ÀEàtúÿ7`LÖ¶öEÀÿöU �€Ž‡¶ø&f€„~È&À &Š÷ Úþ€�ÁWtüÿÁEñÿ@`7$Ö€ÀEàtúÿ7`ðÕ¶öEÀÿöUÀ�€Ž‡¶ø ÿÿÿÿÿÿÿÿÿÿ°~@ÐÑÒÓÔÕÖרÙzª>~¸ª~0  LMAC 1,1,MWRIN,6,0,0 ; REWIND LMAC 2,0,MWRIN,3,200,0 ; READ LMAC 1,0,MWRIN,3,200,0 ; READ MT100: LMAC 2,0,MWRIN,7,0,3 ; SPACE LMAC 1,0,MWRIN,3,200,0 ; READ LMAC 1,0,MWRIN,7,0,-2 ; SPACE LMAC 2,0,MWRIN,3,200,0 ; READ MT150: LMAC 2,1,MWRIN,3,200,0 ; READ LMAC 2,1,MWRIN,10,0,3 ; SKIP FILES LMAC 1,1,MWRIN,3,200,0 ; READ = 0 ; SYSTEM OVERLAY OPTION OVRLAY = 1 ;SYSTEM OVERLAY OPTION (1 = OVERLAY) ;0 = NO OVERLAY, 1 = OVERLAY .IFNZ OVRLAY ; MAXOVR = 140 ; MAX # OF OVERLAY TASKS IN SYSTEM .ENDC ;(NOT USED IF OVRLAY = 0) .IFZ OVRLAY ; MAXOVR = 0 ;SET TO ZERO ONLY IF NO OVERLAYS .ENDC TASMAX = MXTASK+MAXOVR ;MAXIMUM NUMBE!;* +34 RESERVED ** ;* +36 RESERVED ** ;* ** ;* THE RETURN ERROR CODES ARE AS FOLLOWS: ** ;* ** ;* 0 I/O SUCCESSFUL ** ;* 1 LIST ALREADY IN A QUEUE "1~¨ ¹~ !@~˜!È# LMAC 1,1,MWRIN,7,0,51 ; SPACE MT175: LMAC 2,1,MWRIN,3,200,0 ; READ LMAC 2,1,MWRIN,10,0,-2 ; SKIP FILES LMAC 1,1,MWRIN,3,200,0 ; READ LMAC 3,1,MWRIN,3,200,0 ; READ MT200: LMAC 3,0,MWRIN,7,0,2 ; SPACE RECORD LMAC 3,0,MWRIN,3,200,0 ; READ LMAC 2,3,MWRIN,11,0,0 BR MTEND MTESE: NOP ; USE FOR ERROR BREAK POINT MTEND: EMT 4 $R OF TASKS (INCL OVERLAYS .IFLE MXTASK ; XXXXXXXX ;MXTASK MUST BE GREATER THAN ZERO .ENDC .IFL NLTASK ; QTAB XXXXXXXX ;NTASK CANNOT BE NEGATIVE .ENDC .IFG NLTASK-MXTASK ; QTAB XXXXXXXX ;NTASK MUST BE <= MXTASK .ENDC .IFNZ OVRLAY ; ; STATE SIZE OF DYNAMIC CO% ** ;* 2 INVALID DEVICE TYPE ** ;* 3 ILLEGAL EXIT TYPE ** ;* 5 ILLEGAL DEVICE NUMBER ** ;* 6 ILLEGAL COUNT FOR SPACE OR SKIP ** ;* 10 ILLEGAL I/O FUNCTION CODE ** ;* 11 FATAL HARDWARE ERROR, STATUS REG IS IN WORD 13 ** ;* 12 MAGNETIC TAPE TIME OUT &~"O~ˆ"w ,æþÑæüÑ×þÿ& „u6 ^~#7!„üp‚Ÿô‹.! ô¥.!kô‹Ÿ!göÿÿÄ Š„ — [ô•.!ß�þÿ���"W  Á• !Q†¦÷ *ú‚r�ŸÊ BÁ Á Ä f>÷ 6ú~x#Š1Š>„ ô•.!4ŠŸ!2 ²7­"”û†7�"ŒûÖ ß�þÿ·<Ñ·6Ñw hö ¶Æe‡öþÿ¶Æeæ÷ H'; EXIT ; .WORD 0 MWOUT: .ASCII /THIS BUFFER OF DATA WILL BE USED TO TEST THE MAGNETIC TAPE 62C/ .EVEN MTRCC: .WORD 1234 ; REPEAT COUNT .ASCII /SECOND LINE OF THE WRITE, REWIND, AND READ TEST 62 CHARACTERS./ MWRIN: .ASCII /INPUT BUFFER/ .EVEN .BLKW 62 .WORD 0 .BLKW 200 . = . + 200 TSKEND: .END (RE STORAGE IN ROS ; $DYNSZ = 54000 ; RESERVE DYNAMIC CORE POOL .ENDC ; ; THE FOLLOWING IS A LIST OF PRIORITY PROPERTIES ; +1 = TIME SLICE PRIORITY (CORE OR OVERLAY) ; 0 = FIXED OVERLAY TASK (MAY BE CORE) ; -1 = FREE TASKS (CORE OR DYNAMIC OVERLAY) ; PRIP01 = -1 ; PRIORITY PROPERTY LEVEL 1 PRIP02 = -1 ; PRIORITY PROPERTY LEVEL 2 PRIP03 = 1 ; PRIORITY P) ** ;* 14 WRITE COMMAND FOR REAL WITHOUT WRITE RING ** ;* ** ;* COUNT =NUMBER OF WORDS READ BY THE READ COMMAND ** ;* =NUMBER OF RECORDS (+-N) TO SPACE ** ;* =NUMBER OF FILES (+-N) TO SKIP ** ;* =UNUSED FOR ALL OTHER FUNCTIONS ** ;* wvŽ Ž Ž Ž Ž Ž Ž Û~ð#6 ¶×æ&&f¦÷ F-€ƒ•„À Âç妶¶æ—þÿŸ÷ ôúl7 îúŸ•þÿ÷åðúÿ¦Ðêúæ¦f�vÂÈú ¦Š÷ &ù‚² @~h$6 €6Á‹€÷U€¦ú²„×þÿŸ7 Žúò��ú7 ŠúÆ�úò„ú 7 ~úÊÁ ô•.!!!‡ô•.!ß�þÿæ Ð&&÷ ¸2€·Ð�ô•~à$.!�œÁ Á Ä J<1Š>1Š<ß�þÿ·âÏHŸ•þÿŽŽŽ‡æþÿ& ÷ øþw4—þÿŸÀöù!&÷ Rø€1Š.!7 àù7 Øù7 Úù7 Øù0 ÆØù!~X%W  ‡ñ‹Ÿ! ±Š.!·�’Úf÷ /wâñŠ.!ûw ”€P7 þùM‚æ—þÿŸœ.!Á y¢%"&"&"&"&,ROPERTY LEVEL 3 PRIP04 = 1 ; PRIORITY PROPERTY LEVEL 4 PRIP05 = -1 ; PRIORITY PROPERTY LEVEL 5 PRIP06 = -1 ; PRIORITY PROPERTY LEVEL 6 PRIP07 = -1 ; PRIORITY PROPERTY LEVEL 7 PRIP08 = -1 ; PRIORITY PROPERTY LEVEL 8 PRIP09 = -1 ; PRIORITY PROPERTY LEVEL 9 PRIP10 = -1 ; PRIORITY PROPERTY LEVEL 10 PRIP11 = 0 ; PRIORITY PROPERTY LEVEL - ** ;* PROGRAMMER: 67 ** ;* DATE 10.04.72 ** ;* ** ;* GULF ELECTRONIC SYSTEMS ** ;* ** ;********************************************************************** ; .DEF MAGTAP,MTINT .; MT4T.02 8-MAY-73 ; MT4T.01 2-MAY-73 ; MT3T.16 1-MAY-73 ; MT3T.15 27-APR-73 .TITLE $$TS30 .LIST MEB .MACRO LMAC EX,DN,DA,FU,NW,CT,?A,?B,?C,?D MOV #C-REL,R0 MOV R0,-(SP) EMT 71 ; MAGTAP .IFEQ EX-1 MOV (R0),R1 CMP R1,#1 .WORD 1374 ; BRANCH IF NOT EQUAL .ENDC .IFEQ EX-3 INC A BR A+2 A: /; MT5T.02 8-MAY-73 ; MT5T.01 2-MAY-73 ; MT3T.16 1-MAY-73 ; MT3T.15 27-APR-73 .TITLE $$TS35 .LIST MEB .MACRO LMAC EX,DN,DA,FU,NW,CT,?A,?B,?C,?D MOV #C-REL,R0 MOV R0,-(SP) EMT 71 ; MAGTAP .IFEQ EX-1 MOV (R0),R1 CMP R1,#1 .WORD 1374 ; BRANCH IF NOT EQUAL .ENDC .IFEQ EX-3 INC A BR A+2 A: 011 PRIP12 = 1 ; PRIORITY PROPERTY LEVEL 12 PRIP13 = -1 ; PRIORITY PROPERTY LEVEL 13 PRIP14 = -1 ; PRIORITY PROPERTY LEVEL 14 PRIP15 = -1 ; PRIORITY PROPERTY LEVEL 15 PRIP16 = 0 ; PRIORITY PROPERTY LEVEL 16 .IFNZ OVRLAY ; .IFL 16.-NPRIOR XXXXXXXX TABLES AND PARAMETERS CURRENTLY CODED XXXXXXXX FOR MAXIMUM OF 16 PRIORITY L1.REF PUSHR,POPR,ACTIVE,$CTASK,IOSTAT,DSPTCH,RESTOR,RELTSK .REF UNSPND,QSAVEI,PPASV5,PPASV6,SVPPA,SAVE .REF TSK.PC,QTIME,DQTIME,IOCOMX ; ; M A G T A P E Q U A T E P A R A M E T E R S ; DATUM = 1 MULRE = 1 ; 0 FOR DELETE, 1 TO INCLUDE DEVICE = 2. ;LOGICAL DEVICE TYPE TYPE = 3. ;EXIT TYPE $EXIT = 4. ;I/O COMPLETE ADDRESS DEVNUM = 6. ;DEVICE NUMBER2 .WORD 0 TST A BNE A+2 .ENDC TST ERROR(R0) BEQ D JMP MTESE .IFEQ EX-3 B: CLR A RTS PC .ENDC .BOUND C: .WORD 1 ; THREAD .BYTE 4,EX ; MAGTAP, EXIT TYPE .IFEQ EX-3 .WORD B-REL ; RETURN ADDRESS FOR EXIT 3 .IFF .WORD 0 .ENDC .WORD DN,0,0 ; DEVICE N3 .WORD 0 TST A BNE A+2 .ENDC TST ERROR(R0) BEQ D JMP MTESE .IFEQ EX-3 B: CLR A RTS PC .ENDC .BOUND C: .WORD 1 ; THREAD .BYTE 4,EX ; MAGTAP, EXIT TYPE .IFEQ EX-3 .WORD B-REL ; RETURN ADDRESS FOR EXIT 3 .IFF .WORD 0 .ENDC .WORD DN,0,0 ; DEVICE N4EVEL .ENDC ; ; THE FOLLOWING SYSGEN PARAMETERS SPECIFY THE NUMBER OF ; ENTRY'S IN A PRIORITY'S QPART TABLE. IF ZERO, THAT ; PRIORITY WILL NOT BE ALLOWED OVERLAY TASKS. A MAXIMUM ; OF 127 ENTRYS PER QPART WILL BE ALLOWED. ; ****NOTE: BE SURE PRIORITIES GREATER THAN NPRIOR HAVE ; TABLE SIZES OF 0 ; NEQP01 = 10. ; NO. OF ENTRYS QPART LEVEL 1 NEQP02 = 10. ; NO. OF ENTRYS QPART LEVEL 2 NEQP03 = 5 LEVEL = 7. ;I/O PRIORITY ERROR = 8. ;ERROR PARAMETER SYSTEM = 10. ;RESERVED (SAVE TASK NUMBER) DATA = 12. ;ADDRESS OF DATA BUFFER DTPAR = 14. ;KPAR6 VALUE FOR VIRTUAL DATA BUFFER ADDRESS DTVIRT = 16. ;SYSTEM VIRTUAL EQUIVALENT OF DATA BUFFER ADDRES FUNCT = 18. ;FUNCTION CODE NWORD = 20. ;BUFFER SIZE IN WORDS COUNT = 22. 6UMBER ERROR WORD SYSTEM .WORD DA-REL,16,20 ; DATA BUFFER ADDRESS SYS SYS .WORD FU,NW,CT ; FUNCTION CODE BUFFER SIZE COUNT .WORD 0,0,0,0 ; STATUS RES1 RES2 RES3 D: NOP ; ************************************************************* .ENDM ERROR = 8. R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 7UMBER ERROR WORD SYSTEM .WORD DA-REL,16,20 ; DATA BUFFER ADDRESS SYS SYS .WORD FU,NW,CT ; FUNCTION CODE BUFFER SIZE COUNT .WORD 0,0,0,0 ; STATUS RES1 RES2 RES3 D: NOP ; ************************************************************* .ENDM ERROR = 8. R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 F 10. ; NO. OF ENTRYS QPART LEVEL 3 NEQP04 = 10. ; NO. OF ENTRYS QPART LEVEL 4 NEQP05 = 10. ; NO. OF ENTRYS QPART LEVEL 5 NEQP06 = 10. ; NO. OF ENTRYS QPART LEVEL 6 NEQP07 = 10. ; NO. OF ENTRYS QPART LEVEL 7 NEQP08 = 10. ; NO. OF ENTRYS QPART LEVEL 8 NEQP09 = 10. ; NO. OF ENTRYS QPART LEVEL 9 NEQP10 = 10. ; NO. OF ENTRYS QPART LEVEL 10 E ;SEE DEFINITION ABOVE STATUS = 24. ;HARDWARE STATUS REGISTER RES1 = 26. ;RESERVED 1 RES2 = 28. ;RESERVED 2 RES3 = 30. ;RESERVED 3 ; MTDVLM = 1 ;HIGHEST LOGICAL DEVICE NUMBER (0 & 1) MTMREW = 177774 ;COM OF DEFINED LOGICAL UNITS MTREP = 18. ;MAG TAPE REPEAT COUNT (4N+2) ; .IFZ DATUM MTWORD = 167540 ;WORD COUNT REGISTG .PAGE ; TASK HEADER .WORD 1 ; THREAD .WORD 4 ; TASK NUMBER .BYTE 20 ; SYSTEM TASK .BYTE 1 ; PRIORITY .WORD MGTS-REL ; ENTRY .WORD 100,0 ; MAX TIME / TIMER .WORD 200 ; STACK SIZE .WORD 0 ; CPU STATUS .WORD 0 ; STACK POINTER .WORD 0 ; ARG .BYTE 6 .BYTE H .PAGE ; TASK HEADER .WORD 1 ; THREAD .WORD 5 ; TASK NUMBER .BYTE 20 ; SYSTEM TASK .BYTE 1 ; PRIORITY .WORD MGTS-REL ; ENTRY .WORD 100,0 ; MAX TIME / TIMER .WORD 200 ; STACK SIZE .WORD 0 ; CPU STATUS .WORD 0 ; STACK POINTER .WORD 0 ; ARG .BYTE 6 .BYTE """"""" """""""""""""""""""""""""@DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD€ˆˆ"ADD€€B 7B CoQ8}<Ó> A ›> s=þ›5  '›ër@λz5 J6›‚T}€À9 * X›ƒT}€À9 + ›5 L\›8 O@K›9 `s(›$D33333ÿÿÿÿwwfffffffffffffffffffffffDDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅaå Í‹æÄ,L ƒw:ÄB8ŽŒ ýƒàÇ` 5 þÿ€�&ˆ ‚— ýÿ†ƒœÃEÀÿ× >w†× × ò f€ò5ÀeòU@ò €× [æ*ˆ² ¦¦æ× Ž & *ˆÖ G× ‚&(ˆ°Ì 8�L'ˆ°4e÷ ÌQ$ ô �BBâBä" ± üÿü× ÷ ¬ŒÉU@Ò °ðU€ Æe  Å"U%÷‹äþGæÎeÞþæfÇ.Ö … U¥… … … … U¥Ñ Bb‘â‹Ã 0Š æ*ˆ€�Ö BÃÅ.&0 æM &0 & IER MTSTAT = 167542 ;STATUS REGISTER MTCOMM = 167544 ;COMMAND REGISTER MTMEMO = 167546 ;MEMORY ADDRESS REGISTER .IFF MTSTAT = 772520 ; STATUS REGISTER MTCOMM = 772522 ; COMMAND REGISTER MTBCNT = 772524 ; 2'S COMPLEMENT BYTE COUNT REG MTMEMO = 772526 ; MEMORY ADDRESS REGISTER .ENDC ; ; COMMAND CODES FOR MAGNETIC TAPE CONTROLLER .IFZ DATUM READ = 1 WRIT = 2 JNEQP11 = 0. ; NO. OF ENTRYS QPART LEVEL 11 NEQP12 = 0. ; NO. OF ENTRYS QPART LEVEL 12 NEQP13 = 0. ; NO. OF ENTRYS QPART LEVEL 13 NEQP14 = 0. ; NO. OF ENTRYS QPART LEVEL 14 NEQP15 = 0. ; NO. OF ENTRYS QPART LEVEL 15 NEQP16 = 0. ; NO. OF ENTRYS QPART LEVEL 16 ; ; ; THE FOLLOWING ASSIGNS THE START BLOCK IN THE CORE POOL ; FOR A SPECIFIC PRIORITY. ; $SB0KTSKEND-TSTACK/100 .WORD 0,0 ; TPDR 1-2 .WORD 0,0,0 ; TPDR3 - 5 .WORD 0,77406 ; TPDR 6 - 7 .WORD 0,0,0 ; TPAR 0 - 2 .WORD 0,0,0 ; TPAR 3 - 5 .WORD 0,7600 ; TPAR 6 - 7 . = . + 12. .CSECT MTTES REL = . TSTACK: .BLKW 200 MGTS: MOV #1000,MTRCC ; WRITE 16 FILES 37 RECORDS PER FILE MTES1: DEC MTRCC BEQ LTSKEND-TSTACK/100 .WORD 0,0 ; TPDR 1-2 .WORD 0,0,0 ; TPDR3 - 5 .WORD 0,77406 ; TPDR 6 - 7 .WORD 0,0,0 ; TPAR 0 - 2 .WORD 0,0,0 ; TPAR 3 - 5 .WORD 0,7600 ; TPAR 6 - 7 . = . + 12. .CSECT MTTE5 REL = . TSTACK: .BLKW 200 MGTS: MOV #1000,MTRCC ; WRITE 16 FILES 37 RECORDS PER FILE MTES1: DEC MTRCC BEQ M ;WRITE BUFFER WRFM = 4 ;WRITE FILE MARK WEXG = 10 ;WRITE WITH EXTENDED GAP SPCF = 20 ;SPACE FILE FORWARD BCKF = 40 ;BACK SPACE FILE SPCR = 100 ;SPACE RECORD FORWARD BCKR = 200 ;BACK SPACE RECORD REWD = 400 ;REWIND ENAB = 1000 ;ENABLE INTERRUPT OFFL = 2000 ;OFF LINE CLEA = 40000 N01 = 0. $SB002 = 4. $SB003 = 4. $SB004 = 4. $SB005 = 4. $SB006 = 4. $SB007 = 12. $SB008 = 12. $SB009 = 12. $SB010 = 12. $SB011 = 0. $SB012 = 0. $SB013 = 0. $SB014 = 0. $SB015 = 0. $SB016 = 0. ; $NBLKS = $DYNSZ/2-1/256.+1 ; NO. OF BLOCKS IN DYNAMIC CORE ; ; THE FOLLOWING ASSIGNS STORAGE BLOCK SIZES FOR EACH PRIORITY. ; A) IF DYNAMIC-CONTP MTESTE MOV #4,R4 ; WRITE COMMAND MOV MTRCC,R1 BIC #177740,R1 ; WRITE E O F AFTER 31 RECORDS BNE MTES2 INC R4 ; WRITE FILE MARK MTES2: MOV R4,.+56 ; STORE FUNCTION CODE MOV R4,.+136 ; STORE FUNCTION CODE LMAC 2,0,MWOUT,4,150,0 ; WRITE UNIT 0 LMAC 2,1,MWOUT,4,150,0 ; WRITE UNIT 1 BR MTES1 MTESTE: LMAC 2,0,MWRIN,\ MTESTE MOV #4,R4 ; WRITE COMMAND MOV MTRCC,R1 BIC #177740,R1 ; WRITE E O F AFTER 31 RECORDS BNE MTES2 INC R4 ; WRITE FILE MARK MTES2: MOV R4,.+56 ; STORE FUNCTION CODE MOV R4,.+136 ; STORE FUNCTION CODE LMAC 2,0,MWOUT,4,150,0 ; WRITE UNIT 0 LMAC 2,1,MWOUT,4,150,0 ; WRITE UNIT 1 BR MTES1 MTESTE: LMAC 2,0,MWRIN,Q ;CLEAR CONTROLLER MTDVS = 14 ; SHIFT COUNT MTINB = 1000 ; INTERRUPT ENABLE MTCLR = 30000 ; CLEAR CONTROLLER MTRWD = 100 ; TEST IF REWINDING MTUIC = 10000 ; UNIT NUMBER INCREMENT .IFF OFFL = 0 ; SET OFFLINE READ = 2 ; READ RECORD WRIT = 4 ; WRITE RECORD WRFM = 6 ; WRITE FILE MARK SPCR = 10 ; SPACE RECORD BCKR = 12 ; BACKSPACE RECORD WEXG = 10 ; EXTENRAINS THE LARGEST ALLOWABLE BSIZE ; VALUE ; ; B) IF FIXED OR TIME SLICED-CONTAINS ASSIGNED BSIZE ; VALUE FOR THAT PRIORITY ; .IFL PRIP01 $PS001 = $NBLKS-$SB001 .ENDC .IFGE PRIP01 $PS001 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB001-$PS001 XXXXXXXX ; PRI 1 TOO LARGE .ENDC .ENDC .IFL PRIP02 $PS002 = $NBLKS-$SB00S; MAGTAP.315 4-MAY-73 ; MAGTAP.314 2-MAY-73 ; MAGTAP.313 1-MAY-73 ; MAGTAP.312 27-APR-73 ; MAGTAP.311 26-APR-73 ; MAGTAP.310 24-APR-73 ; MAGTAP.309 21-APR-73 .TITLE MAGTAP ;********************************************************************** ;* M A G T A P ** ;* ** ;* PROGRAM IDENTIFICATION. MAGTAP - MAGNETIC TAPE INTERFACE ** T6,0,0 ; REWIND LMAC 1,1,MWRIN,6,0,0 ; REWIND LMAC 2,0,MWRIN,3,200,0 ; READ LMAC 1,0,MWRIN,3,200,0 ; READ MT100: LMAC 2,0,MWRIN,7,0,3 ; SPACE LMAC 1,0,MWRIN,3,200,0 ; READ LMAC 1,0,MWRIN,7,0,-2 ; SPACE LMAC 2,0,MWRIN,3,200,0 ; READ MT150: LMAC 2,1,MWRIN,3,200,0 ; READ LMAC 2,1,MWRIN,10,0,3 ; SKIP FILES LMAC 1,1,MWRIN,UDED GAP SPCF = 10 ; SPACE FILE FORWARD BCKF = 12 ; BACK SPACE FILE REWD = 16 ; REWIND MTDVS = 10 ; SHIFT COUNT MTINB = 20101 ; INTERRUPT ENABLE CLEA = 10000 ; CLEAR CONTROLLER ENAB = 100 ; INTERRUPT ENABLE MTCLR = 1400 ; CLEAR CONTROLLER MTRWD = 2 ; TEST IF REWINDING MTUIC = 400 ; UNIT NUMBER INCREMENT .ENDC ; ; FIRST AND LAST WORDS FOR V2 .ENDC .IFGE PRIP02 $PS002 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB002-$PS002 XXXXXXXX ; PRI 2 TOO LARGE .ENDC .ENDC .IFL PRIP03 $PS003 = $NBLKS-$SB003 .ENDC .IFGE PRIP03 $PS003 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB003-$PS003 XXXXXXXX ; PRI 3 TOO LARGE .ENDC .ENDC W;* SUBROUTINE USING THE KT-11C AND THE GULF CONTROLLER ** ;* ** ;* PURPOSE. ALL COMMUNICATIONS WITH THE MAGNETIC TAPES WILL ** ;* BE THROUGH THIS SUBROUTINE. THIS ROUTINE PERFORMS THE ** ;* FOLLOWING MAGNETIC TAPE FUNCTIONS: ** ;* 1 OPEN (RETURN STATUS) ** ;* 2 CLOSE (NO OPERATION) X3,200,0 ; READ LMAC 1,1,MWRIN,7,0,51 ; SPACE MT175: LMAC 2,1,MWRIN,3,200,0 ; READ LMAC 2,1,MWRIN,10,0,-2 ; SKIP FILES LMAC 1,1,MWRIN,3,200,0 ; READ LMAC 3,1,MWRIN,3,200,0 ; READ MT200: LMAC 3,0,MWRIN,7,0,2 ; SPACE RECORD LMAC 3,0,MWRIN,3,200,0 ; READ LMAC 2,3,MWRIN,11,0,0 BR MTEND MTESE: NOP ; USE FOR ERROR BREAK POINT MTEND: YLIST THREAD MTFRST: .WORD 0 .IFZ $KT11C MTLAST: .WORD MTFRST .IFF MTLAST: .PACK MTFRST CDTLST: .WORD 0 ; USED TO SAVE CURRENT LIST S.V.A. MTPAR5: .WORD 0 ; USED TO SAVE CURRENT LIST PAR5 .ENDC NMTREQ: .WORD -1 ; NUMBER OF (REQUESTS - 1) IN QUEUE ; ; MAGNETIC TAPE FUNCTION JUMP TABLE MTFCT =.-2 .WORD MOPEN ;OPEN .WORD MCLOS ;CLOSE .WORD MREAD ;RZ .IFL PRIP04 $PS004 = $NBLKS-$SB004 .ENDC .IFGE PRIP04 $PS004 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB004-$PS004 XXXXXXXX ; PRI 4 TOO LARGE .ENDC .ENDC .IFL PRIP05 $PS005 = $NBLKS-$SB005 .ENDC .IFGE PRIP05 $PS005 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB005-$PS005 XXXXXXXX [ ** ;* 3 READ ** ;* 4 WRITE ** ;* 5 WRITE FILE MARK ** ;* 6 REWIND ** ;* 7 SPACE (+-N) RECORDS ** ;* 10 SKIP (+-N) FILES ** ;* 11 MULTIPLE REWIND EMT 4 ; EXIT ; .WORD 0 MWOUT: .ASCII /THIS BUFFER OF DATA WILL BE USED TO TEST THE MAGNETIC TAPE 62C/ .EVEN MTRCC: .WORD 1234 ; REPEAT COUNT .ASCII /SECOND LINE OF THE WRITE, REWIND, AND READ TEST 62 CHARACTERS./ MWRIN: .ASCII /INPUT BUFFER/ .EVEN .BLKW 37 .WORD 0 .BLKW 200 . = . + 200 TSKEND: .END ]EAD .WORD MWRIT ;WRITE .WORD MWEOF ;WRITE FILE MARK .WORD MREWI ;REWIND .WORD MSPRC ;SPACE +-N RECORDS .WORD MSKFI ;SKIP +-N FILES .IFNZ MULRE .WORD MUREW ;REWIND MULTIPLE UNITS .ENDC ; MAGNETIC TAPE RETURN AFTER INTERRUPT JUMP TABLE MTRET =.-2 .WORD MOPEN ;OPEN .WORD MCLOS ;CLOSE .WORD MRREA ^ ; PRI 5 TOO LARGE .ENDC .ENDC .IFL PRIP06 $PS006 = $NBLKS-$SB006 .ENDC .IFGE PRIP06 $PS006 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB006-$PS006 XXXXXXXX ; PRI 6 TOO LARGE .ENDC .ENDC .IFL PRIP07 $PS007 = $NBLKS-$SB007 .ENDC .IFGE PRIP07 $PS007 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL_ ** ;* ALL THREE STANDARD R0S I/O EXITS ARE SUPPORTED BY MAGTAP. ** ;* ** ;* USAGE. THE ASSEMBLER LINKAGE TO MAGTAP IS: ** ;* ** ;* MOV #LIST,-(SP) ;PUSH LIST ADDRESS ON STACK ** ;* EMT MAGTAP ** ;* 6,0,0 ; REWIND LMAC 1,1,MWRIN,6,0,0 ; REWIND LMAC 2,0,MWRIN,3,200,0 ; READ LMAC 1,0,MWRIN,3,200,0 ; READ MT100: LMAC 2,0,MWRIN,7,0,3 ; SPACE LMAC 1,0,MWRIN,3,200,0 ; READ LMAC 1,0,MWRIN,7,0,-2 ; SPACE LMAC 2,0,MWRIN,3,200,0 ; READ MT150: LMAC 2,1,MWRIN,3,200,0 ; READ LMAC 2,1,MWRIN,10,0,3 ; SKIP FILES LMAC 1,1,MWRIN,a ;READ .WORD MRWRI ;WRITE .WORD MRWEO ;WRITE FILE MARK .WORD MRREW ;REWIND .IFZ DATUM .WORD MSPRC ;SPACE +-N RECORDS .IFF .WORD MRPRC .ENDC .WORD MSKFI ;SKIP +-N FILES .IFNZ MULRE .WORD MUREWI .ENDC MTIMV =.-3 ; TIME OUT VALUE IN SECONDS .BYTE 5 ; READ .BYTE 5 ; WRITE b $NBLKS-$SB007-$PS007 XXXXXXXX ; PRI 7 TOO LARGE .ENDC .ENDC .IFL PRIP08 $PS008 = $NBLKS-$SB008 .ENDC .IFGE PRIP08 $PS008 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB008-$PS008 XXXXXXXX ; PRI 8 TOO LARGE .ENDC .ENDC .IFL PRIP09 $PS009 = $NBLKS-$SB009 .ENDC .IFGE PRIP09 $PS009 = 4. c ** ;* THE FORTRAN EQUIVALENT CALL IS: ** ;* ** ;* CALL MAGTAP(IADDR(LIST)) ** ;* ** ;* THE FORMAT OF THE LIST IS AS FOLLOWS: ** ;* ** ;* LIST THREAdÌ”Âdu~#"Û~     ¥~x55Ôæ¦f&æêôæìôÃþÿR~ð€È m&÷ Ö�ö%�L ð ðµ a0 œa— ^ŸÂ  ¦÷ v^r°@rBr@° ðÅ &±ŠŸ!0Š æ~hðÕ ÷å¼ ?¸ ß�þÿ6 öÆe€�‚ƒ ÷ �Îe ÞÅß@fÿe .BYTE 5 ; WRITE FILE MARK .BYTE 180. ; REWIND .BYTE 5 ; SPACE .BYTE 60. ; SKIP .IFNZ MULRE .BYTE 1 ; MULTIPLE REWIND .ENDC .BOUND MTTLI: ;MAGNETIC TAPE TIMER LIST .WORD 1 .WORD 0,0,0 ; RSVRD 1 TO 3 .BYTE SECR ; TIMER RESOLUTION .BYTE 20 ; TIMER OPTIONS (J) .WORD 0 ; RESERVED f ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB009-$PS009 XXXXXXXX ; PRI 9 TOO LARGE .ENDC .ENDC .IFL PRIP10 $PS010 = $NBLKS-$SB010 .ENDC .IFGE PRIP10 $PS010 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB010-$PS010 XXXXXXXX ; PRI 10 TOO LARGE .ENDC .ENDC .IFL PRIP11 $PS011 = $NBLKS-$SB011 gD ** ;* +2 EXIT TYPE (1-3) DEVICE TYPE ** ;* +4 EXIT ADDRESS (EXIT TYPE 3 ONLY) ** ;* +6 DEVICE NUMBER FOR FUNCTIONS 1-10, SET BITS FOR 11 ** ;* +10 RETURN ERROR PARAMETER (0 TO 14) ** ;* +12 SYSTEM (CALLING TASK #) ** ;* +14 DATA BUFFER ADDRESS ** ;* +16 KPAR6 VALUE FOR VIh· w¬ß@fÿ· 6 ß�þÿŸìôŸêô€�‚ƒŽ‡öˆ ïös~àˆ êöˆ å&f¦ææêôæìô€È%Vœ  æþÿŸðµ G÷ žÈ &÷ |‚zf÷ pÎerrBô2@2U~X&÷ N 2 ƒÃe¡  òàðÅ óŠŸ!æ÷ dBŸ•þÿ6 ŸìôŸêôƒ‚�€‡ðÕ ïöïÿÿ÷ øÿßE@º~Ðfÿ&f¦À€Á ÂP‚~7 Ôÿ7 Òÿ÷ÿÿÈÿ‚�€· ¼ÿüf&æ¦f&æêôæìô& & À€ Ð B 0þÿÁeW @ów¦÷ B‚~Hòµ òŠ ‚óèòµ ù¦ƒ÷ i .WORD MTTIM ; OPTIONAL (A=1) .WORD 0,0 ; OPTIONAL (F=1) .WORD MTTIM ; OPTIONAL (J=1) .WORD 0 ; OPTIONAL (T=1) ; ; MACRO DEFINITIONS ; .MACRO SAV.56 .IFNZ $KT11C MOV @#$KPAR5,-(SP) MOV @#$KPAR6,-(SP) .ENDC .ENDM ; .MACRO RST.56 .IFNZ $KT11C MOV (SP)+,@#$KPAR6 MOV (SP)+,@#$KPAR5 .ENDC j.ENDC .IFGE PRIP11 $PS011 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB011-$PS011 XXXXXXXX ; PRI 11 TOO LARGE .ENDC .ENDC .IFL PRIP12 $PS012 = $NBLKS-$SB012 .ENDC .IFGE PRIP12 $PS012 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB012-$PS012 XXXXXXXX ; PRI 12 TOO LARGE .ENDC .ENDC .IkRTUAL DATA BUFFER ADDRESS (ASR 6) ** ;* +20 SYSTEM VIRTUAL EQUIVALENT OF DATA BUFFER ADDRESS ** ;* +22 FUNCTION (CODES LISTED ABOVE) ** ;* +24 NWORD ** ;* +26 COUNT ** ;* +30 STATUS ** ;* +32 -BACKSPACE FLAG REPEAT COUNT ** ;* +34 lÖ Âó&f¦æÆå€w€þ²œ ƒœ „Ã5€òÕ Ž ß8ýìô2 ¦÷ &¿&ý· ý·ý÷e ý�~À÷êôýÇÃ5äÃ5 Ã5@Ô ò  ¦& è÷ Ì]<] ÄeÃ5 ò‹ £ƒ¦÷ ZÿÖ Â�òÕ ÷ –‘þÿ&f¦æêôü ¸~8 Ÿêô‚�€òÅ Ÿòµ ÞÚ÷ dþ÷ ^‘þÿŸw²þÖ Â†Ê æÈ÷ Þâç÷ÞçºÖ ŸìôŸêô€�‚ƒ„…7 ,üXç· "ü~°NçwæŠ · þåÃÎ#£c#ãêô££Ö ŸìôŸêô€�‚ƒ„…w üæÃÀææßêôÀÁÂć ß _€ßà‚÷ ´H÷ ŠI‡u€}†€‡€‡`m.ENDM .PAGE ; S T A R T O F M A G T A P MAGTAP: JSR R5,PUSHR ;SAVE R0-R5 ON STACK MOV 14.(SP),R0 ;R0 = F.W.A. OF LIST SAV.56 MOV #1,R4 ;SET ERROR CODE IN R4 DEC (R0) ;IS THREAD = 1 BNE MTERR ;IF NOT, RETURN ; IS DEVICE TYPE = 4 INC R4 ; SET R4 = 2 CMPB DEVICE(R0),#4 BNE MTERR ;RETURN IF NOT 4 nFL PRIP13 $PS013 = $NBLKS-$SB013 .ENDC .IFGE PRIP13 $PS013 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB013-$PS013 XXXXXXXX ; PRI 13 TOO LARGE .ENDC .ENDC .IFL PRIP14 $PS014 = $NBLKS-$SB014 .ENDC .IFGE PRIP14 $PS014 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB014-$PS014 XXXXXXXX ; PRI 14o RESERVED ** ;* +36 RESERVED ** ;* ** ;* THE RETURN ERROR CODES ARE AS FOLLOWS: ** ;* ** ;* 0 I/O SUCCESSFUL ** ;* 1 LIST ALREADY IN A QUEUE ** ;* 2 INp~(† ÷ tÀâÿ:Z2Š.!rœ"· · ¡ ¡ rŠÀeçæh÷ Æ ‡ª~ À0€ ŠÁ‹@Ð7ºI÷¸I÷ ÐI ÀÀ þ÷ ¦I€‡7 H7 F7 D7 F7 >7 <À>À À ÀpÁà0ŠŸ! ñŠð•.!0Š"á é~À ð7Š#ÀÁ^&ÙÀ ü‡w ÜÀ¤)  ¨)ü‡Áw`ÀÀ)HÀe ü)ú‡À*Š *ü‡À*Âÿÿ�� *ü‡Š *ü‡À*P� *ü‡w �h~�‡ŸÆ`å÷ þ÷ .÷3öå÷àòåßüÿÁà÷h-låwjå÷+fåwdå÷�>€å÷à|åßBq”ßà–÷ÄBœå÷à˜å÷q; IS EXIT TYPE 1 OR 2 INC R4 ;SET R4 = 3 MOVB TYPE(R0),R1 ;R1 = EXIT TYPE BLE MTERR ;BRANCH IF .LE. 0 CMP R1,R4 BGT MTERR ; BR IF .GT. 3 ; IS THE FUNCTION CODE DEFINED MOV #10,R4 ;SET R4 = 8 MOV FUNCT(R0),R1 ;PLACE FUNCTION CODE IN R1 MOV R1,RES2(R0) BLE MTERR ;BRANCH IF NEGATIVE CMP R1,R4 .IFZ r TOO LARGE .ENDC .ENDC .IFL PRIP15 $PS015 = $NBLKS-$SB015 .ENDC .IFGE PRIP15 $PS015 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$SB015-$PS015 XXXXXXXX ; PRI 15 TOO LARGE .ENDC .ENDC .IFL PRIP16 $PS016 = $NBLKS-$SB016 .ENDC .IFGE PRIP16 $PS016 = 4. ; ASSIGN 4 BLOCKS - 1024 WORDS .IFL $NBLKS-$sVALID DEVICE TYPE ** ;* 3 ILLEGAL EXIT TYPE ** ;* 5 ILLEGAL DEVICE NUMBER ** ;* 10 ILLEGAL I/O FUNCTION CODE ** ;* 11 FATAL HARDWARE ERROR, STATUS REG IS IN WORD 13 ** ;* 12 MAGNETIC TAPE TIME OUT ** ;* 14 WRITE COMMAND FOR REAL WITHOUT WRITE RING ** ;* t~Kå÷àå÷Æ8å¶~÷à4å÷J4üä÷à0øä÷ ÿ÷ ~þ÷ ÞýÖä7 Ðä7Š?)æ\D÷nD0)÷ ,÷%)ü÷•#)7ŠÁæE÷ ÷%¤)ü÷•«7Š÷zæh÷ ò÷%è~€ü÷•õ÷ Ðý      ß•€ëw¶ ÀÁÀô‚~ÁàôÀ‘Âe€~÷Ù÷€ ÙŸ zÿ‡X‡Ž‡ÿÿæþÿŸ· ôÿ&ææÑ~ø&B„&�.!ô•.!Ä ÷ÜØÒÿ&Š÷ p„7 ß50þÿ3ã£Ö £´÷¦ÿ¬Ø„Æ ßþÿæ¦f&æŽØæŒØæŠØÀ"&&&&&ê~p ßþÿM¦)ƒ „ßF ´÷LÿRØæ ó÷ FÿÀ,     ·:Ø·4Ø·.Ø€�u MULRE BGT MTERR ;BR IF R1 IS MORE THAN 8 .IFF BGT MT01 ;BR IF MORE THAN 8 .ENDC MOV #5,R4 ; SET LOGICAL DEVICE ERROR CODE MOVB DEVNUM(R0),R1 BLT MTERR ; BR IF NEGATIVE DEVICE NUMBER CMP R1,#MTDVLM ; IS DEVICE NUMBER DEFINED BGT MTERR ; BR IF NOT INC R4 ; SET SKIP OR SPACE COUNT ERROR CODE CMP R1,#7 vSB016-$PS016 XXXXXXXX ; PRI 16 TOO LARGE .ENDC .ENDC ; ; .ENDC ; MATCH FOR .IFNZ OVRLAY ; ; ROS SYSTEM TASK NUMBERS ; ; $INPNO = 1 ; INPUT $CPTNO = MXTASK+2. ; COMPRS $INITD = 3. ; DISC INITIALIZER $FLTNO = MXTASK+4. ; FILE LIST $RLDNO = MXTASK+5. ; ROS LOADER $RASNO = MXTASK+6. ; ROS ASSEMBLER TASK NUMBER $UTLNO = w ** ;* COUNT =NUMBER OF WORDS READ BY THE READ COMMAND ** ;* =NUMBER OF RECORDS (+-N) TO SPACE ** ;* =NUMBER OF FILES (+-N) TO SKIP ** ;* =UNUSED FOR ALL OTHER FUNCTIONS ** ;* ** ;* PROGRAMMER: 67 ** ;*x‚Ÿ·ÿ…·•ÿ·PP÷50 ÿ=CDwúþwøþFg~èÅ4÷ <3õ�êþ.!Åâþ÷ æþ(÷­*$ƒ÷50Ôþ·Æþ·ÄþF ·ÄþŽ F ·¼þ÷U€¶þ÷nâ´×Ƭþæ¢þæœþæ€æ÷ Øw …Á7 Ðõ•ê~`.!ÆÊæ¶÷ wæ ƒ„Ö …—#Œ(Îe&€tüÿ7T×€À À ÀEÀÿÀU 6€‡&€tüÿ70×€À À ÀEÀÿÀUÀ6€‡&f~Ø€ÁWtüÿÁEñÿAàôWt€ € ÀEø`v�€‡&f€#À æÖÖ&Š÷ lÿ€�ÁWtüÿÁEñÿ@`$Wt·°Ö€€ € ÀEø`v�€Ó~Pއ¦÷ xÿ¶õ&f€&À &Š÷ ÿ€�ÁWtüÿÁEy BLT MT02 TST COUNT(R0) BEQ MTERR ;BR IF COUNT IS ZERO CLR NWORD(R0) MT01: .IFNZ MULRE CMP R1,#11 BGT MTERR ; BR IF MORE THAN 9 .ENDC MT02: CLR SYSTEM(R0) ; PLACE LIST IN THREAD MOV @#PS,-(SP) ;INHIBIT INTERRUPTS, SAVE PROGRAM STATUS REG. SPL 7 ;SET PRIORITY TO 7 .IFZ $KT11C MOV R0,@MTLAST ;Qz MXTASK+7. ; ROS UTILITY TASK $TKCNO = MXTASK+8. ; TASK C??? $TMRNO = 2. ; TIMER QUEUE PROCESSOR ; .PAGE $ABMES = 3 ; NO. OF ABORT MESSAGE BUFFERS .IFL $ABMES ; $ABMES MUST BE => 0. XXXXXX ; ABRT .ENDC ; PSTP ; THE SYSGEN PARAMETER '$PST CONTRO{ DATE 10.04.72 ** ;* ** ;* GULF ELECTRONIC SYSTEMS ** ;* ** ;********************************************************************** ; .DEF MAGTAP,MTINT .REF PUSHR,POPR,ACTIVE,$CTASK,IOSTAT,DSPTCH,RESTOR,RELTSK .REF UNSPND,QSAVEI,PPASV5,P|ñÿ@`7$\Ö€ÀEàtúÿ7`LÖ¶öEÀÿöU �€Ž‡¶ø&f€„~È&À &Š÷ Úþ€�ÁWtüÿÁEñÿ@`7$Ö€ÀEàtúÿ7`ðÕ¶öEÀÿöUÀ�€Ž‡¶ø ÿÿÿÿÿÿÿÿÿÿ°~@ÐÑÒÓÔÕÖרÙzª>~¸ª~0 }UEUE IT MOV R0,MTLAST .IFF MOV R0,-(SP) ; STORE SYSTEM VIRTUAL LIST ADDRESS ON STACK JSR PC,SVPPA ; GET LIST'S PPA (PACKED PHYSICAL ADDRESS ) MOV MTLAST,-(SP) ; CONVERT THE ADDRESS OF THE LAST ENTRY IN QUEUE JSR PC,PPASV6 ; GET LAST'S SVA (SYSTEM VIRTUAL ADDRESS ) MOV 2(SP),@(SP)+ ; QUEUE THE CURRENT REQUEST MOV (SP)+,MTLAST MOV 16(R0),@#$KPAR6 .ENDC ~LS THE EXECUTION PATH*PSTP ; DURING A TASK ERROR. PSTP ; = -1 ROS + USER ROUTINES PSTP ; = 0 ROS PSTP ; = +1 USER PSTP ; PSTP $PST = 0 ; PSTP ; PASV6,SVPPA,SAVE .REF TSK.PC,QTIME,DQTIME,IOCOMX ; ; M A G T A P E Q U A T E P A R A M E T E R S ; DATUM = 0 MULRE = 1 ; 0 FOR DELETE, 1 TO INCLUDE DEVICE = 2. ;LOGICAL DEVICE TYPE TYPE = 3. ;EXIT TYPE $EXIT = 4. ;I/O COMPLETE ADDRESS DEVNUM = 6. ;DEVICE NUMBER LEVEL = 7. ;I/O PRIORITY ERROR = 8. ;ERROR PARAMETER €1~¨ ¹~ !@~˜!È� CMP 16+4*$KT11C(SP),#TSK.PC ; IS CALLER A TASK BNE MT04 ; BRANCH IF NOT MOV $CTASK,R2 INCB IOSTAT(R2) MOV R2,SYSTEM(R0) MT04: MOV (SP)+,@#PS MOV #MTREP,RES1(R0) ; SET REPEAT COUNT AND CLEAR BACK SPACE INC NMTREQ ; BUMP NUMBER OF REQUESTS BNE MTEX2 ;BR IF NOT FIRST IN QUEUE .IFNZ $KT11C MOV R0,CDTLST ; SAVE LIST S.V.A. FOR INTER‚ PSTP .PAGE $CLOCK = 0 ; INTERRUPTS SOURCE OFR MAINTAINING ; ; TIMERS AND DECKS ; ; 0=DEC LINE FREQUENCY(KW11-2) ; ; 1=DDS CLOCKSX ;FOLLOWING ARE SYSGEN PARAMETERS FOR THE TIMER AND CALENDAR ROUTINES ; NORMALLY THE BASE PERIOD FOR THE TIMERS IS THE INTERRUPT PERIOD, AND ; IF THAT PERIOD IS DESIRED FOR USE BY ANY ƒSYSTEM = 10. ;RESERVED (SAVE TASK NUMBER) DATA = 12. ;ADDRESS OF DATA BUFFER DTPAR = 14. ;KPAR6 VALUE FOR VIRTUAL DATA BUFFER ADDRESS DTVIRT = 16. ;SYSTEM VIRTUAL EQUIVALENT OF DATA BUFFER ADDRES FUNCT = 18. ;FUNCTION CODE NWORD = 20. ;BUFFER SIZE IN WORDS COUNT = 22. ;SEE DEFINITION ABOVE STATUS = 24. ;HARDWARE STATUS REGISTER RES1 = „~"O~ˆ"w ,æþÑæüÑ×þÿ& „u6 ^~#7!„üp‚Ÿô‹.! ô¥.!kô‹Ÿ!göÿÿÄ Š„ — [ô•.!ß�þÿ���"W  Á• !Q†¦÷ *ú‚r�ŸÊ BÁ Á Ä f>÷ 6ú~x#Š1Š>„ ô•.!4ŠŸ!2 ²7­"”û†7�"ŒûÖ ß�þÿ·<Ñ·6Ñw hö ¶Æe‡öþÿ¶Æeæ÷ H…RUPT ROUTINE MOV $KPAR5,MTPAR5 ; SAVE KPAR5 FOR INTERRUPT POUTINE .ENDC MOV FUNCT(R0),R1 ;RETURN JUMP TO ASL R1 JSR PC,@MTFCT(R1) ; ROUTINE CMP RES2(R0),#2 BLE MTXB2 TST R4 BEQ MTEX1 ;BR IF NO ERRORS MTXB2: JSR PC,MTDEQ ; DEQUEUE REQUEST BR MTEXIT MTERR: INC (R0) MOV R4,ERROR(R0) ;STORE ERROR CODE IN LIS†TIMER MODULE, "RESO" MUST BE ; SET TO 1, AND THAT RESOLUTION (ZERO) SPECIFIED BY THOSE MODULES. ; IF IT IS DESIRED TO MAKE THE BASE PERIOD COARSER THAN THE INTERRUPT ; PERIOD, "$TMBAS" MUST BE SET TO THE DESIRED RATIO OF BASE PERIOD TO ; INTERRUPT PERIOD. $TMBAS = 0 ;DE-SELECT ALTERNATE BASE PERIOD OPTION ; THE FOLLOWING PARAMETERS SPECIFY THE MULTIPLIERS THAT WILL BE LOADED ; INTO THE RESOLUTION COUNTER TABLES FOR DETERMINING THE PERIOD OF EACH ; RESOULTION. THE PE‡ 26. ;RESERVED 1 RES2 = 28. ;RESERVED 2 RES3 = 30. ;RESERVED 3 ; MTDVLM = 1 ;HIGHEST LOGICAL DEVICE NUMBER (0 & 1) MTMREW = 177774 ;COM OF DEFINED LOGICAL UNITS MTREP = 18. ;MAG TAPE REPEAT COUNT (4N+2) ; .IFZ DATUM MTWORD = 167540 ;WORD COUNT REGISTER MTSTAT = 167542 ;STATUS REGISTER MTCOMM = 167544 ;COMMAND REGISˆwvŽ Ž Ž Ž Ž Ž Ž Û~ð#6 ¶×æ&&f¦÷ F-€ƒ•„À Âç妶¶æ—þÿŸ÷ ôúl7 îúŸ•þÿ÷åðúÿ¦Ðêúæ¦f�vÂÈú ¦Š÷ &ù‚² @~h$6 €6Á‹€÷U€¦ú²„×þÿŸ7 Žúò��ú7 ŠúÆ�úò„ú 7 ~úÊÁ ô•.!!!‡ô•.!ß�þÿæ Ð&&÷ ¸2€·Ð�ô•~à$.!�œÁ Á Ä J<1Š>1Š<ß�þÿ·âÏHŸ•þÿŽŽŽ‡æþÿ& ÷ øþw4—þÿŸÀöù!&÷ Rø€1Š.!7 àù7 Øù7 Úù7 Øù0 ÆØù!~X%W  ‡ñ‹Ÿ! ±Š.!·�’Úf÷ /wâñŠ.!ûw ”€P7 þùM‚æ—þÿŸœ.!Á y¢%"&"&"&"&‰T MTEXIT: MOV @#MTSTAT,STATUS(R0) RST.56 JSR R5,POPR ;RESTORE REGISTERS MOV (SP)+,(SP) ;MOVE RETURN ADDRESS RTS PC ;RETURN TO CALLE- MTEX1: MOV #MTTLI,-(SP) ;ADDRESS OF MAG TAPE TIMER LIST MOV FUNCT(R0),R1 MOVB MTIMV(R1),-(SP) ; TIMER DELAY JSR PC,QTIME TST (SP)+ MTEX2: CMPB #2,TYPE(R0) ;TYPE 2 ? BNE MTEXIT ŠRIOD OF A GIVEN RESOLUTION LEVEL DEPENDS ON ALL ; THE PRECEDING LEVELS (WITH LOWER NUMBERS), WHICH ACT AS SUCCESSIVE ; MULTIPLIERS IN COUNTING TO THE GIVEN RESOLUTION LEVEL. ; THUS, FOR "RES4", ITS PERIOD WOULD BE: ; RES4*RES3*RES2*RES1*RES0 --- IN UNITS OF THE BASE PERIOD RES0 = 1 ; 0.01 SEC RES1 = 1 ; 0.01 SEC RES2 = 2 ; 0.02 SEC RES3 = 5 ; 0.1 SEC RES4 = 2 ; ‹TER MTMEMO = 167546 ;MEMORY ADDRESS REGISTER .IFF MTSTAT = 772520 ; STATUS REGISTER MTCOMM = 772522 ; COMMAND REGISTER MTBCNT = 772524 ; 2'S COMPLEMENT BYTE COUNT REG MTMEMO = 772526 ; MEMORY ADDRESS REGISTER .ENDC ; ; COMMAND CODES FOR MAGNETIC TAPE CONTROLLER .IFZ DATUM READ = 1 WRIT = 2 ;WRITE BUFFER WRFM = 4 ;WRITE FILE MARK WEXG = 10 Œ"&¶%"&Ð%Ê%"&"&"&Ð%Ÿ“þÿ&÷ ªŸÖ . 7^ù)S~Ð% ‡ð‹Ÿ!ð•ýÿ.!ð•.!Ÿ“þÿ&&÷ š2€Ÿð•.!�^&W"Âåø1f÷ Ÿ•þÿw öއcc�~H&c0&@&P&öU€w ¦æxÎævÎæ—þÿ €ÀE€w ö €Á‘!7 îø|‚À &Š÷ âö�€ Ÿœ.!Âå  k D A~À&gÂåHdð•.!Ÿ“þÿBœ  ƒ<XÀ ,ŠÄæ÷ ¼öƒ÷MŸW"Iò <r<ò<>²`>¡2 >¡2 >&÷ ‚ö„Lr>¡~8'2 >¡2 >É€� †1 ð‹Ÿ!ð•.!� ;BR IF NOT TST SYSTEM(R0) ;SEE IF THIS IS A TASK CALLING BEQ MTEXIT ;BR IF THE CALLER IS NOT A TASK .IIF NE $KT11C ADD #4,SP ; THE CALLER IS A TASK, THE PAR'S CAN GO MOV @#PS,14.(SP) ;PLACE PS ON STACK JSR R5,POPR ;RESTORE REGESTERS CLR -(SP) ;SET INVOLUNTARY SUSPEND FLAG JSR PC,QSAVEI ;AND LET QSAVI SUSPEND THE TASK JMP DSPTCH .PAGE ; MAGNETIC TAPE IŽ0.2 SEC RES5 = 5 ; 1.0 SEC RES6 = 5 ; 5.0 SEC RES7 = 2 ; 10.0 SEC RES8 = 3 ; 30.0 SEC RES9 = 2 ; 60.0 SEC RES10 = 5 ; 5 MIN RES11 = 2 ; 10 MIN RES12 = 3 ; 30 MIN RES13 = 2 ; 60 MIN RES14 = 2 ; 2 HRS RES15 = 6 ; 12 � ;WRITE WITH EXTENDED GAP SPCF = 20 ;SPACE FILE FORWARD BCKF = 40 ;BACK SPACE FILE SPCR = 100 ;SPACE RECORD FORWARD BCKR = 200 ;BACK SPACE RECORD REWD = 400 ;REWIND ENAB = 1000 ;ENABLE INTERRUPT OFFL = 2000 ;OFF LINE CLEA = 40000 ;CLEAR CONTROLLER MTDVS = 14 ; SHIFT COUNT MTINB = 1000 ; INTERRUPT �Ÿ“þÿ&&÷ 1€ Ÿ0Š.!Ÿ•þÿv·fÍ·`Íw ’‡… … … ñÅ ð•þÿ.!ìw næ@Í×þÿ& a~°'„K7!Î÷H‚Ÿô¥.!Eô•.!!‡ß�þÿæÍæ�&&÷ 0‚ƒ•„·þÌ -Ä Š¦÷ ˆõ…Í A�Á Á f>÷ tõž±>„ ´Š.!ß�þÿ¶¦~((·¾Ìw ð ö އöþÿæ÷ Þûw Ž Ž Ž 6 ä˜÷ ÆöÄÊöÄ Ä Â<„`ßÂ`Ê !û—!÷ÿÿ¨ö˜äþ…Õ ¦÷ êô�Ä~ (J�¡ ¡ Bò•.!wœtö˜ÉCÃeÄ€ÿÔÔÔÔÔÔÔÔÄ ÿÔÔÔÔÔÔÔÔ·:öñ A@Cf Î ßU0þÿ† æÀf�~)Ÿ÷ö·üõò•.!‘NTERRUPT ROUTINE MTINT: JSR R5,SAVE SPL 5 TST NMTREQ BMI MTEYIT .IFZ $KT11C MOV MTFRST,R0 ;PLACE LIST ADDRESS IN R0 .IFF MOV CDTLST,R0 ; PLACE CURRENT LIST S V A IN R0 MOV MTPAR5,$KPAR5 ; GET CURRENT LIST PAR5 .ENDC MOV #MTTLI,-(SP) JSR PC,DQTIME TST (SP)+ CLR R4 ; BRANCH ON FUNCTION CODE ON RETURNING FROM AN I’ HRS ; IN SYSTEMS WHERE THE BASE PERIOD IS GREATER THAN ONE MILLISECOND, ; "MSECR" WILL NECESSARILY HAVE A PERIOD GREATER THAN ONE MILLISECOND. MSECR = 0 ;MAX RESOLUTION: #0 AT 10 MILLISECONDS SECR = 5 ;"RES5" IS THE ONE-SECOND RESOLUTION TRES = SECR ; FOR TIME-SLICE WATCH-DOG IN RPOM $NRES = 16. ;USE MAX # OF RESOLUTIONS .IFLE $NRES XXXXXXXX ;$NRES MUST BE FROM 1 TO 16 “ENABLE .IFF OFFL = 0 ; SET OFFLINE READ = 2 ; READ RECORD WRIT = 4 ; WRITE RECORD WRFM = 6 ; WRITE FILE MARK SPCR = 10 ; SPACE RECORD BCKR = 12 ; BACKSPACE RECORD WEXG = 10 ; EXTENDED GAP SPCF = 10 ; SPACE FILE FORWARD BCKF = 12 ; BACK SPACE FILE REWD = 16 ; REWIND MTDVS = 10 ; SHIFT COUNT MTINB = 20101 ; INTERRUPT ENABLE CLEA = 10000 ; CLEAR CONTROLLER .ENDC ; ” ·Šòõwœêõwœèõñ ABCD fÎE€ÎeßU0þÿ† f÷‹¼õ€ÎUÀ÷E€°õfEEw$`ËÅU€C ~�)@ u õEÿ Ÿ¼pÿtÿrÿvÿÀ)Ô)è)0ü)@20þ)¸00*~2ÿ7~*ˆ ‰ Š ‹ w à æ²Êæ°Ê÷ ‚ ÷ .÷ &ñ‹*&Ÿ•þÿ¬·ŠÊ·„Êw ¶ އ,ˆ ò¬Z~€*î·fÊ·`Êw ’ öþÿ& ÷ Œùwºý±Š*5*õ@Ê*ñ‹*Ѐñ•*Ÿ•þÿ÷ Êw N æ ÊæÊ÷ ðÍÄ÷ š÷ ’ñ‹*¶±Š*5*õøÉ*ñ‹*O•NTERRUPT MOV FUNCT(R0),R5 ;LOAD FUNCTION CODE (1 TO 8) ASL R5 JSR PC,@MTRET(R5) MOV @#MTSTAT,STATUS(R0) TST R5 BNE MTEYIT MTINRE: JSR PC,MTDQXN MTEYIT: JMP RESTOR .PAGE MTDQXN: JSR PC,MTDEQ ; DEQUEUE REQUEST CMPB TYPE(R0),#2 ;TYPE 2 EXIT BNE MTIN00 MOV SYSTEM(R0),-(SP) ;PLACE TASK NUMBER ON STACK CLR – .ENDC .IFG $NRES-16. XXXXXXXX ;COME ON! MUST BE LESS THAN 17 .ENDC ; THE BASE PERIOD FOR THE TIME-OF-DAY CLOCK, ABORT, AND TIME-SLICE IS ; NORMALLY THE INTERRUPT PERIOD, AS SPECIFIED BY "TICRES". ; IF A MULTIPLIER FOR THIS INTERRUPT IS DESIRED TO PRODUCE A COARSER ; BASE PERIOD, USE THE PARAMETER "$ABMPL" TO SPECIFY THE RATIO DESIRED. TICRES = 10. ;T-O-D CLOCK TICKS-PER-SECOND $ABMPL = 0 ;NO T-O-D CLOC— ; FIRST AND LAST WORDS FOR LIST THREAD MTFRST: .WORD 0 .IFZ $KT11C MTLAST: .WORD MTFRST .IFF MTLAST: .PACK MTFRST CDTLST: .WORD 0 ; USED TO SAVE CURRENT LIST S.V.A. MTPAR5: .WORD 0 ; USED TO SAVE CURRENT LIST PAR5 .ENDC NMTREQ: .WORD -1 ; NUMBER OF (REQUESTS - 1) IN QUEUE ; ; MAGNETIC TAPE FUNCTION JUMP TABLE MTFCT =.-2 .WORD MOPEN ;OPEN .WORD MCLOS ;CLOSE ˜~ø*¬€1Š*Üw äðÁþÿÁEðÿEÅ æ€ñ‹ *D¼)ô• Ÿ•þÿñ•*Dœ *Ä |@+1Š *wJ\+�, ,¬,º,Ô,æ,ô,---0->-P-±Š*W¬*H†@*w*±~p+xÉD*w*pÉ´  -†m=�ª)­ ý• ª)ñ• *wÔf¼)÷ >êÖ =Ф)=Ц)œÄñ‹* ÷ ʬ‚‡÷ Šw 0 &&~~è+ ÷ jw . @*w*îÈ ôŠŸ!&÷ ê, Â÷ °1Š*÷ R* Äe*Äå *Ÿþÿ±Š*&÷ @ñ€õœÈ*5*1Š*Äe©~`,*Ÿ•þÿ&÷ ñ€õvÈ*5*÷ ^wð1Š*ñŠ*Ÿ•þÿ÷±Š*f¼)÷ TéÖ ïñ• *1Š*ôý• ª)ñ• *âñ‹ *ý• ™ -(SP) ;PUSH 0 ON STACK JSR PC,UNSPND TST (SP)+ ;POP OFF ERROR CODE MTIN00: CMPB TYPE(R0),#3 BNE MTIN02 MOV R0,-(SP) ; LIST ADDRESS MOV SYSTEM(R0),-(SP) ; TASK NUMBER JSR PC,IOCOMX ; EXECUTE I/O COMPLETE SUBROUTINE MTIN02: TST NMTREQ BMI MTDQD ; BR IF -1 MOV MTFRST,R0 ;GET NEXT LIST ADDRESS .IFNZ $KT1šK BASE MULTIPLIER TODINT = 320 ;INTERRUPT VECTOR FOR T-O-D INTERRUPT TIMINT = TODINT+4 ;INTERRUPT VECTOR FOR INTERVAL TIMER STLINT = TIMINT+4 ;VECTOR FOR STALL ALARM INTERRUPT STLREG = 167000 ;ADDRESS FOR STALL ALARM RESET .IFNZ $CLOCK CLKENB = 167002 ;ADDRESS FOR ENABLE OF CLOCKS TODBIT = 4 ;BIT TO ENABLE TIME-OF-DAY INTERRUPT TIMBIT = 10 ;BIT TO ENABLE INTERVAL TI› .WORD MREAD ;READ .WORD MWRIT ;WRITE .WORD MWEOF ;WRITE FILE MARK .WORD MREWI ;REWIND .WORD MSPRC ;SPACE +-N RECORDS .WORD MSKFI ;SKIP +-N FILES .IFNZ MULRE .WORD MUREW ;REWIND MULTIPLE UNITS .ENDC ; MAGNETIC TAPE RETURN AFTER INTERRUPT JUMP TABLE MTRET =.-2 .WORD MOPEN ;OPEN .WORD MCLOS ;CLOSEœª)ñ• *Ø1Š *ý•U¨~Ø,ª)ñ• *±Š*Ìý•^ª)ñ• *ö}œ*ª)ñ• *ﱊ*ý• ª)ñ• *å1Š *wJþý• ª)1Š*ñ• *§ý• ª)ñ• * 1Š*@*w*žÇwZþ÷~P-ñ‹*w ÿý•ª)ñŠ*wÿw |îÁ�ŽÒœÁEðÿEÅ Dº)ô• @*w*\ÇB*w*TÇÊ €f¼)æ÷ 4çÖ DŸ¨)+ÄÅ€¡|¡ n¡ *¡@~È--ƒÃeƒl¡.ñ‹*B¦ÎEÀ–,I†²  ‘Ê €Ê5@Ä =‘ª)Cº)ó• Ê5@@w‚îÄ• ñ• *îý•^ª)ñ• *2 ïò äò �~@.Ê Þ�à ñ‹* ±Š*Ä•\ñ• *ñ’*ÐÄ’Î1Š*²  ‘1‘*Ä•\ñ• *Áñ‹ *�1C MOV R0,-(SP) ; CONVERT LIST ADDRESS JSR PC,PPASV5 ; FROM PACKED PHYSICAL TO MOV (SP)+,R0 ; SYSTEM VIRTUAL MOV R0,CDTLST ; SAVE FOR NEXT MOV $KPAR5,MTPAR5 ; INTERRUPT MOV DTPAR(R0),@#$KPAR6 ;INITIALIZE KPAR FOR DATA BUFFER ADDR .ENDC MOV FUNCT(R0),R1 ;RETURN JUMP TO ASL R1 ; FUNCTIONAL JSR PC,@MTFCT(R1) ; RžMER INTERRUPT STLBIT = 0 ;BIT TO ENABLE STALL ALARM INTERRUPT .ENDC .IFZ $CLOCK CLKENB = 777546 ;ADDRESS OF DEC LINE CLOCK TODBIT = 0 ; TIMBIT = 100 ;CLOCK ENABLE BIT STLBIT = 0 ; .ENDC $TMSLC = 1 ;SYSTEM OPTION FOR INCLUDING TIME-SLICING $SWATZ = 20. ;NUMBER OF ENTRIES IN SCHEDULER "WAIT" TABLE $TWATZ = 20. ;WORDS IN TIMER'S "WAIŸ .WORD MRREA ;READ .WORD MRWRI ;WRITE .WORD MRWEO ;WRITE FILE MARK .WORD MRREW ;REWIND .IFZ DATUM .WORD MSPRC ;SPACE +-N RECORDS .IFF .WORD MRPRC .ENDC .WORD MSKFI ;SKIP +-N FILES .IFNZ MULRE .WORD MUREWI .ENDC MTIMV =.-3 ; TIME OUT VALUE IN SECONDS .BYTE 5 ; READ  À±Š *f¼)÷ ^çÖ ¸½Š¤)½=‘ª)ñ• *fº)÷ BçÖ ²Ä•=‘1~¸.ª)ñ• *ò€÷ ¨È /Ÿ•þÿœw F/‚Á W<"3.ñ5€"36Aœ"3p�¬&‡¬"‚œ— !‚Ä ð0 ´ŠŸ!Cà Ń`0 ‡ˆ Ÿ•~~0/þÿð‡ð‡ð‡ð‡ð‡ñ5@"3ìA<3·& & ÷ 0øÖ ‡÷ N÷ ô&÷ Pî&*÷ "îž´*Ÿ•þÿ‡æ÷ (÷ Î4*A~¨/ Ã*a¡ ¡ ô*ÈŸ•þÿƒ‡fÁ Á �`D`Ä Ä %�‡‚ñ•*ñ‹*YD¾)ô•ð 1Š *ñ‹*(1Š *@*w*ÞÄ7ÖÄ5*õÎÄ*4~ 04 �¡ ñ• *=‘ª)f¼)æýÕ@¦)÷ ’ä¡OUTINE CMP RES2(R0),#2 BLE MTINRE TST R4 BNE MTINRE MTIN05: MOV #MTTLI,-(SP) MOV FUNCT(R0),R1 MOVB MTIMV(R1),-(SP) JSR PC,QTIME TST (SP)+ MTDQD: RTS PC .PAGE ; MAGNETIC TAPE TIME OUT ROUTINE MTTIM: JSR R5,PUSHR TST NMTREQ ; IS QUEUE EMPTY BMI MTTIM2 .IFZ $KT11C MOV MTFRST,R0 .IFF ¢T" TABLE .PAGE ; $DTAPE = 1 ; DECTAPE OPTION ; NDISCS = 1 ;NO. OF DISC CONTROLLERS (0 = NO DISCS) ; $DDSDC = 1 ; USE DDS DICS ; ACTSIZ = 20. ; MAXIMUM NO. OF ENTRIES IN AUTH. CODE .IFL 20.-ACTSIZ XXXXXXXX ; ERROR-ALLOCATE MORE LOCATIONS XXXXXXXX ; FOR AUTHORIZATION CODES .ENDC ; .IFNZ NDISCS DRESDI = 1 £ .BYTE 5 ; WRITE .BYTE 5 ; WRITE FILE MARK .BYTE 180. ; REWIND .BYTE 5 ; SPACE .BYTE 60. ; SKIP .IFNZ MULRE .BYTE 1 ; MULTIPLE REWIND .ENDC .BOUND MTTLI: ;MAGNETIC TAPE TIMER LIST .WORD 1 .WORD 0,0,0 ; RSVRD 1 TO 3 .BYTE SECR ; TIMER RESOLUTION .BYTE 20 ; TIMER OPTIONS (J) .WORD 0 ¤Ö J@*w*’Ä7ŠÄõ*õ‚Ä*3 1Š *1Š*ñ• *DŸ¨)ÄAË5@Ä =‘¤)fº)æð~˜0Òñ•*ñ• *ý•ª)f¾)æðÄÃ�Bù³Š *ÅÅ AŸª)7Š2ùóŠ*w0ó‹*@*w*Ä@*w*øÃð÷°ø÷®ø7 ¬øœÄ ô5@*~1"3w<3 ò5€"3|ò5"3xô5 "3„èôU "3=Ц)=Ф)�œ"3p�w`ø÷ ÖB—tÂe*Å Å Å @Àe*Åe*Ä÷ ø:JÒ  Ê~ˆ1Ä ÷Ÿ•þÿ÷ Þñ‹*3ñœ**ñœ**ñœ** EÅ µ**µ**µ**µ**µ**µ**µ**µ**Ÿ•þÿæ÷ îýƒó•ÿÿ*3Š*3Š* ¾~2Ÿ•þÿõ}�ª)f¼)æ¥ MOV CDTLST,R0 ; GET LIST S.V.A. MOV MTPAR5,$KPAR5 ; AND ASSOCIATED PAR5 .ENDC CMP FUNCT(R0),#11 BNE MTTIM1 JSR PC,MUREWI TST R2 BEQ MTTIM4 MOV #MTTLI,-(SP) ; TIMER LIST MOV #1,-(SP) ; TIMER DELAY JSR PC,QTIME TST (SP)+ BR MTTIM2 ; DEQUEUE THE REQUEST MTTIM1: MOV #12,R4 MTTIM4: JSR PC,MTDQX¦ ; DISC RESIDENT DIRECTORY OPTION .IFL 3-NDISCS XXXXXXXX ; PRESENTLY CODED FOR MAX. OF 3 DISCS .ENDC ; NDPRT1 = 5 ; NO. OF PRIORITY LEVELS IN DISC 1 QUEUES .IFL NDPRT1-3 XXXXXXXX ; MUST BE AT LEAST THREE .ENDC MAXID1 = 500. ; MAXIMUM ID ON DISC 1 ; .IFG NDISCS-1 NDPRT2 = 7 ; NO. OF PRIORITY LEVELS IN DISC 2 QUEUES § ; RESERVED .WORD MTTIM ; OPTIONAL (A=1) .WORD 0,0 ; OPTIONAL (F=1) .WORD MTTIM ; OPTIONAL (J=1) .WORD 0 ; OPTIONAL (T=1) ; ; MACRO DEFINITIONS ; .MACRO SAV.56 .IFNZ $KT11C MOV @#$KPAR5,-(SP) MOV @#$KPAR6,-(SP) .ENDC .ENDM ; .MACRO RST.56 .IFNZ $KT11C MOV (SP)+,@#$KPAR6 MOV (SP)+,@#$K¨÷ ÆâÖ 3Š *‡ó‹ *ñ³Š *÷ ì×-z÷æ¬)÷ ‡Á�¸÷EÅ =Ф)±Š *7Ѝ÷@*w*ŒÂðý•^ª)ñ• *‡¦öþÿê~x2Ÿ‡f&Á�z÷Á � ±Š*„�‡æ w z�¶ À  & D” Ä¥+ Ä¥-Ä¥ À óŽ À D”Äå0�¡ ‚Wq ‡a ‡À òÖ h~ð2 ¶vw "‡â ‚ ów Üèæ& æ & ÷ ÊïÖ w|é @€€@ö �¶Ö ~h3y€À &Š÷ 4ê€ð5¶Ö ‡æþÿßU0þÿ· �ëŸÃ ÿÁ€ÿæfæfæfæfæfæfæfæfF Ÿ�"þÿÃeÁ€ÿÑÑÑÑÑ{©N MTTIM2: JSR R5,POPR ;RESTORE REGISTERS RTS PC ;RETURN TO CALLER .PAGE ; MAGNETIC TAPE OPEN ; MOPEN: JSR PC,MTINIT BR MCL10 ;GO TO COMMON EXIT FOR OPEN/CLOSE ; ; ; MAGNETIC TAPE CLOSE ; MCLOS: CLR R4 MCL10: RTS PC .PAGE ; M A G N E T I C T A P E R E A D MREAD: JSR PC,MTINIT BPL MREA1 JSR PC,MTBAD ; ª.IFL NDPRT2-3 XXXXXXXX ; MUST BE AT LEAST THREE .ENDC MAXID2 = 500. ; MAXIMUM ID ON DISC 2 .ENDC ; .IFG NDISCS-2 NDPRT3 = 3 ; NO. OF PRIORITY LEVELS IN DISC 3 QUEUES .IFL NDPRT3-3 XXXXXXXX ; MUST BE AT LEAST THREE .ENDC MAXID3 = 500. ; MAXIMUM ID ON DISC 3 .ENDC $SYSFL = NDISCS+5 ; NO. OF SYSTEM FILE ID'S IN ROS ; «PAR5 .ENDC .ENDM .PAGE ; S T A R T O F M A G T A P MAGTAP: JSR R5,PUSHR ;SAVE R0-R5 ON STACK MOV 14.(SP),R0 ;R0 = F.W.A. OF LIST SAV.56 MOV #1,R4 ;SET ERROR CODE IN R4 DEC (R0) ;IS THREAD = 1 BNE MTERR ;IF NOT, RETURN ; IS DEVICE TYPE = 4 INC R4 ; SET R4 = 2 CMPB DEVICE(R0),#4 BNE MTER¬~à3ÑÑÑÁ ÿÑÑÑÑÑÑÑÑŸñ¥.!ñ‹.!ÁEàæ¡ f¡ f† æÀŽ�$�*f7æê7œæê Á æ÷ ÜêÆe† À~X4�ÿÁ°ÿ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡¶ŽvË# Ú5¢4¢4) ERROR XXXXX XXXXXX XXXXXX XXXXXX XXXXXX ’~Ð4¬4¸4¿4Æ4Í4ÿÿ·øÿŽw &æø¿æö¿¦Åâÿ w æâ¿æà¿…æþÿf÷ ºè„ŸÍ æhÿ÷ „è7^ÿÃìéõ³ŠŸ!· œÿ Ÿ•þÿË~H5· ¿·š¿w ÌŽ‡� ô7 |ÿæ(ÿ÷ è…=wÿ ÷Œ4ÿ¡7 ÿ¡7 ÿŸ“þÿÄÐ4f&÷ ¦C÷ VÌ ú÷• ­FORM READ COMMAND IN R3 BIS #READ,R3 ;INCLUSIVE OR UNIT NUMBER AND COMMAND MOV R3,@#MTCOMM ;GIVE READ COMMAND MREA1: RTS PC ; ; THIS ROUTINE IS ENTERED AFTER A READ ATTEMPT OR A BACK SPACE RECORD ; BYTE RES1 IS THE REREAD REPEAT COUNT ; BIT 15 OF RES1 IS THE BACK SPACE RECORD FLAG MRREA: CLR R5 ;SET I/O COMPLETE TST RES1(R0) ; TEST BACKSPACE FLAG BPL MRRE1 ® ; COMPID,FTDIR,CDIMGE,CDIHDR,TTFILE .IFZ DRESDI NCFILE = $SYSFL+40. ; NO. OF CORE RESIDENT FILE ID'S .ENDC .IFNZ DRESDI NCFILE = NDISCS+$SYSFL+40. ; NO. OF CORE RESIDENT ID'S ; ; INCLUDING DOD'S AND SYSTEM FILES NCRWDS = NCFILE*5 ; NO. OF CORE RESIDENT WORDS NEEDED ; ; FOR CORE DIRECTORY NCRLOC = NCRWDS+NCRWDS ¯R ;RETURN IF NOT 4 ; IS EXIT TYPE 1 OR 2 INC R4 ;SET R4 = 3 MOVB TYPE(R0),R1 ;R1 = EXIT TYPE BLE MTERR ;BRANCH IF .LE. 0 CMP R1,#3 BGT MTERR ; BR IF .GT. 3 ; IS THE LOGICAL DEVICE NUMBER 0 OR1 MOV #5,R4 MOVB DEVNUM(R0),R1 ;PLACE DEVICE NUMBER IN R1 BLT MTERR ;RETURN IF NEGATIVE CMP R1,#MTDVLM ;IS THE DEVICE NUMBER °ÿÅå ŸÍAñŠŸ!Ÿþÿ2~À5f÷ 2#Ÿ•þÿæ�4÷ ^ô÷ ÿ¸‡· þþæþÿŸ½÷ÿÿòþŸ•þÿ‡À‚ â�ÊÅøÊÕ0ƒ ÃE€ƒ ƒ À ô‡&æ¦f&MÖ €�‚ƒ„…'èd ü~86w Öÿ„…À06Ä �Õ•+Á•  â€d Á0B`•�È ôÄe0 ‘¶ w ¢ÿ–%‡Õ•- äÒ‹å÷ Œè0&¦Ÿæ„è÷ 俀ÂÀô°° ~°6° ðU€ðU€ðU€ ·ÀÈ·ºÈ·´ÈÂàô°,°.°0·ÄÈ·¾È·¸È˜‚€‡¦&æ꽟æè÷ ~æ€÷tÈð÷νˆÈðȽ*˜ÀåŸ~(7@6·¸½€‡Ï Ð Ñ Ò Ó 87:7ÿÿÿf7± ;CONTINUE IF NOT SET JSR PC,MREAD BR MRRE3 MRRE1: .IFZ DATUM MOV @#MTSTAT,R2 BMI MRRE6 ; BR IF EOF DETECTED ASH #4,R2 ;MOVE ERROR BIT INTO SIGN BIT BMI MRRE2 ;BRANCH IF ERROR SET MRRE6: SUB @#MTWORD,COUNT(R0) ; SUB WORD COUNT .IFF MRRE6: BIT @#MTSTAT,#34600 BNE MRRE2 ; BRANCK IF ANY ERRORS MOV @#MTBCNT,R²; NO. OF LOCATIONS IN CORE RESIDENT ; ; DIRECTORY .ENDC ERRPRT = 1 ; PRINT-OUT DISC ERROR MESSAGES OPTION CHKPTC = 1 ;1 = CHECKPOINTING ALLOWED .IFZ $KT11C .IFNZ CHKPTC XXXXXXXX .ENDC .ENDC FXPART = 1 ; FIXED PARTITION OPTION $SGMNT = 1 ; SEGMENT LOAD OPTION $FTMAX = 10. ; LARGEST FILE TYPE IN SYSTEM³DEFINED BGT MTERR ;RETURN IF NOT ; IS THE FUNCTION CODE DEFINED MOV #10,R4 ;SET R4 = 8 MOV FUNCT(R0),R1 ;PLACE FUNCTION CODE IN R1 MOV R1,RES2(R0) BLE MTERR ;BRANCH IF NEGATIVE CMP R1,R4 .IFZ MULRE BGT MTERR ;BR IF R1 IS MORE THAN 8 .IFF BGT MT01 ;BR IF MORE THAN 8 .ENDC CMP R1,#7 BLT MT´d~ 7@�*j�k�o�Ò~81~�8¹~9µ1 ASR R1 ADD R1,COUNT(R0) .ENDC BR MRRE4 MRRE2: MOV #11,R4 DEC RES1(R0) ; DEC REPEAT COUNT BEQ MRRE4 JSR PC,MTINIT BPL MRRE4 MOVB #200,RES1+1(R0) ;SET BACK SPACE FLAG .IFNZ DATUM MOV #-1,@#MTBCNT .ENDC BIS #BCKR,R3 ;R3 =BACK SPACE COMMAND MOV R3,@#MTCOMM ;GIVE BACK SPACE COMMAND MRRE3: ¶ $IDMAX = 500. ; LARGEST FILE ID IN SYSTEM-- ; ; MUST BE >= MAXID1,2,3,..,N $FTDRL = $FTMAX*3/64.+1 ; NO. OF SECTORS IN FILE TYPE DIRECTORY $ROSFW = NDISCS+$SYSFL*5 ; NO. OF WORDS IN ROS FILES $CDISZ = NCRWDS-$ROSFW/64.+1 ; NO. OF SECTORS IN CORES ; ; DIRECTORY IMAGE $TKFL1 = TASMAX*5 ; # BYTES IN REG TASK TABLES $TKFL2 = TASMAX-MXTASK*3 ·02 TST COUNT(R0) BEQ MTERR ;BR IF COUNT IS ZERO CLR NWORD(R0) MT01: .IFNZ MULRE CMP R1,#11 BGT MTERR ; BR IF MORE THAN 9 .ENDC MT02: CLR SYSTEM(R0) ; PLACE LIST IN THREAD MOV @#PS,-(SP) ;INHIBIT INTERRUPTS, SAVE PROGRAM STATUS REG. SPL 7 ;SET PRIORITY TO 7 .IFZ $KT11C MOV R0,@MTLAST ;QUEUE IT MO¸@~€9È~ø9Þ7ÀêÂêÄêÆêÈê,:Ì@d‡<:ÿÿ&À@&À€& ¿~p:ævºætºf¦æ&f�¶ænÅŸÉ xŸ•þÿ1�ÀDœ7!vøk‚Ä "3ÅÅŠeÅ€ Bœ`— ]€ BœYµ 87V€ Dw ºN€È~è:ÃE€× /H€ ­¹INC R5 ;SET I/O NOT COMPLETE MRRE4: RTS PC .PAGE ; M A G N E T I C T A P E W R I T E ; R0 = ADDRESS OF LIST ; BYTE RES1 IS REWRITE REPEAT COUNT ; BIT 15 OF RES1 IS BACK SPACE RECORD FLAG ; MWRIT: JSR PC,MTINIT BPL MWRI1 JSR PC,MTBAD MOV #14,R4 ;SET ERROR CODE MOV @#MTSTAT,R2 .IFZ DATUM ASR R2 º ; # BYTES IN EXT OF TASK TABLES $TKFLN = $TKFL1+$TKFL2+2+3/4*2 ; # WORDS IN ALL TASK TABLES ; + 'TASKS' + EVEN NUMBER OF ; WORDS FOR DISCIO $TKFNS = $TKFLN/64.+1 ; NO. OF SECTORS IN TASK TABLE FILE ; ; THE FOLLOWING IS FOR DISC RESIDENT DIRECTORIES ; DIRAD1 = 320. ; DISC RESIDENT DIRECTORY ADDRESS DISC 1 ; ; LEAVES ROOM FOR 20K ROS B»V R0,MTLAST .IFF MOV R0,-(SP) ; STORE SYSTEM VIRTUAL LIST ADDRESS ON STACK JSR PC,SVPPA ; GET LIST'S PPA (PACKED PHYSICAL ADDRESS ) MOV MTLAST,-(SP) ; CONVERT THE ADDRESS OF THE LAST ENTRY IN QUEUE JSR PC,PPASV6 ; GET LAST'S SVA (SYSTEM VIRTUAL ADDRESS ) MOV 2(SP),@(SP)+ ; QUEUE THE CURRENT REQUEST MOV (SP)+,MTLAST MOV 16(R0),@#$KPAR6 .ENDC CMP 16+4*$¼‡B‚W¬>1 4 @À R7æäÄŸµ `7†µ�`7  ƒ`f÷ ¢â„æ÷ tâ  —-�LÃÔãñ ³ŠŸ!° T75Ša7Ä~`;ŸþÿT:ñäþ ñÌ@ fæÖþ÷ ^ÙÖ wtwxw€wÌP7Ó$Áýf÷ æá�pV7Dw:¹0X7ð0¹Z7ð,¹\7ô ãK�Â*þ2 ´9+Âe^~Ø; úÅ B:À  Àå �ƒ ûÀe 1Ðò Àƒltd7… ôô<ôÕ@ -w’w�ƒœ¹9ÃE€ÿñ ÎÂe´9÷ @À ñ�— ~P<ÂåôÕ€ úÀE€À À `‚`ÂeÞ7Ê ãÀÕõ• b7õ• c7Å =$:= $:¦&÷ 4რ—v—tµ^7ÂEüÿƒPý&:‚=½ ;PLACE BIT 0 IN CARRY BIT BCS MWRI1 ;BR IF NO WRITE RING .IFF ASH #13.,R2 ; PLACE WRITE RING BIT IN SIGN BIT BMI MWRI1 ; BR IF NO WRITE RING .ENDC CLR R4 ;CLEAR ERROR FLAG ; IS THIS THE FOURTH TRY MOV RES1(R0),R2 ;LOAD REPEAT COUNT IN R2 BIC #177774,R2 BEQ MWRI2 ;BRANCH TO ISSUE WRITE WITH EXTENDED GAP ; ISSUE NORMAL WRITE ¾OOT .IFZ DRESDI DIRLN1 = 0 ; ZERO LENGTH .ENDC .IFNZ DRESDI DIRLN1 = MAXID1-1/12.+1 ; DISC DIRECTORY 1 LENGTH .IFG NDISCS-1 DIRAD2 = 0 ; DISC RESIDENT DIRECTORY ADDRESS DISC 2 DIRLN2 = MAXID2-1/12.+1 ; DISC DIRECTORY 2 LENGTH .ENDC .IFG NDISCS-2 DIRAD3 = 0 ; DISC RESIDNET DIRECTORY ADDRESS DISC 3 DIRLN3 = MAXID3-1/12.+1 ; DISC DIRECTORY 3 LENGTH¿KT11C(SP),#TSK.PC ; IS CALLER A TASK BNE MT04 ; BRANCH IF NOT MOV $CTASK,R2 INCB IOSTAT(R2) MOV R2,SYSTEM(R0) MT04: MOV (SP)+,@#PS MOV #MTREP,RES1(R0) ; SET REPEAT COUNT AND CLEAR BACK SPACE INC NMTREQ ; BUMP NUMBER OF REQUESTS BNE MTEX2 ;BR IF NOT FIRST IN QUEUE .IFNZ $KT11C MOV R0,CDTLST ; SAVE LIST S.V.A. FOR INTERRUPT ROUTINE À(:‚œ%~È<:ÂUAµP^7CT:óvý æß}^7":… õ‹a7 �Ÿ•þÿw¢ß‰ ÷  ‰ À÷ ñ¥Ÿ•þÿ…„ƒ‚�·Ä··¾·€Ö ‡5ŠV:Ÿ•þÿ‡¶´~@=…„ƒ‚�·ž··˜·€& ÷ ¾æwúê��wâþôµÂôÅ€�Âùñ‹ �€œÀE€ÿæjŸ7 ¾ü[Ÿ•þÿñµ@ô‹!´€$~¸=t4Àe 4ô‹ò‹€ñµÀ1 ‡´åÀ ‡ +À5%÷ z2 ‚ƒƒlm €l ‚€m 44 Àe«~0>ÉÀ‡À ‡À ‡À‡À‡À$&Š÷ P߀Àe&æf÷ dß„÷ âôw fWtúÿÀ5?� ÁBIS #WRIT,R3 ;OR IN WRITE COMMAND BR MWRI3 MWRI2: BIS #WEXG,R3 ;OR IN WRITE WITH EXTENDED GAP MWRI3: MOV R3,@#MTCOMM ;STORE IN COMMAND REGISTER MWRI1: RTS PC .PAGE ; THIS ROUTINE IS ENTERED BY THE INTERRUPT PROCESSOR AFTER WRITE COMMANDS ; MRWRI: CLR R5 ;SET I/O COMPLETE TST RES1(R0) BPL MRWR1 ;BRANCH IF THE BACK SPACE IS NOT SET JSR PC,M .ENDC .ENDC ; ; THE FOLLOWING CONTAINS THE FILE TYPE STATUS DESCRIPTORS ; FOR EACH FILE TYPE. ; $FD000 = 41 ; FILE TYPE 0, LOG UNIT 1, NO COMPRESSION $FD001 = 1 ; FILE TYPE 1, LOG UNIT 1 $FD002 = 1 ; FILE TYPE 2, LOG UNIT 1 $FD003 = 1 ; FILE TYPE 3, LOG UNIT 1 $FD004 = 1 ; FILE TYPE 4, LOG UNIT 1 $FD005 = 101 ; FILE TYPE 5, LOG UNITà MOV $KPAR5,MTPAR5 ; SAVE KPAR5 FOR INTERRUPT POUTINE .ENDC MOV FUNCT(R0),R1 ;RETURN JUMP TO ASL R1 JSR PC,@MTFCT(R1) ; ROUTINE CMP RES2(R0),#2 BLE MTXB2 TST R4 BEQ MTEX1 ;BR IF NO ERRORS MTXB2: JSR PC,MTDEQ ; DEQUEUE REQUEST BR MTEXIT MTERR: INC (R0) MOV R4,ERROR(R0) ;STORE ERROR CODE IN LIST MTEXIT: Ä@�‡w TÝæþÿ…æ ÅEðÿõ‹V:~¨>Ÿ•þÿwìÝõ•a7Å CT:ó�û Ÿ•þÿAV7DX7wZ7¶w\7¶ý5€":wVôµ@qô‹€wW¬f & ÷ ˜èÖ Â@P7DR7Cœà à ’~ ?Ä``… æþÿŸKÌ¡ ¡ ‰$È ‚ µ 87ùÂÿÿµ�`7B òŠŸ!Ÿ“þÿ¦÷ �ŸþÿW¬fff ÷ Øó… @À Ÿð T7€T:ñR:"~˜? õ‹a7 �ð T7€Ÿ•þÿwìÜŸ•þÿ5ŠV:‡Ä wTýŸ•þÿwDýŸ•þÿôÅ@BœÂEÀÿƒ×p ÂBmd7Ê $÷ �ýÀ b@… u¬`7wXýwˆûôµ~@òw þõæдæδff ÷ 0ó·À´·º´w ìõàÀ?@€ ý52":ý5*:ÅWRIT BR MRRE3 MRWR1: .IFZ DATUM MOV @#MTSTAT,R2 ASH #4,R2 ;PALCE ERROR BIT IN SIGN BIT BMI MRRE2 ;BR IF ERROR ; PLACE WORD COUNT AND STATUS IN LIST SUB @#MTWORD,COUNT(R0) .IFF BIT @#MTSTAT,#34600 BNE MRRE2 ; BRANCH IF ANY ERRORS MOV @#MTBCNT,R1 ASR R1 ADD R1,COUNT(R0) .ENDC RTS PC .PAGE Æ 1, CKSAVE REQUIRED $FD006 = 1 ; FILE TYPE 6, LOG UNIT 1 $FD007 = 1 ; FILE TYPE 7, LOG UNIT 1 $FD008 = 1 ; FILE TYPE 8, LOG UNIT 1 $FD009 = 1 ; FILE TYPE 9, LOG UNIT 1 .IFL 10.-$FTMAX XXXXXXXX ; ONLY SET UP FOR 10. FILE TYPES .ENDC $OVTYP = 5. ; FILE TYPE FOR OVERLAY TASKS ; ; FILE TYPE SIZE TABLE - IN SECTORS ; .IFNZ DRESDI Ç MOV @#MTSTAT,STATUS(R0) RST.56 JSR R5,POPR ;RESTORE REGISTERS MOV (SP)+,(SP) ;MOVE RETURN ADDRESS RTS PC ;RETURN TO CALLE- MTEX1: MOV #MTTLI,-(SP) ;ADDRESS OF MAG TAPE TIMER LIST MOV FUNCT(R0),R1 MOVB MTIMV(R1),-(SP) ; TIMER DELAY JSR PC,QTIME TST (SP)+ MTEX2: CMPB #2,TYPE(R0) ;TYPE 2 ? BNE MTEXIT ;BR IF NOT ÈðŠb7 ý":B^7‚ ÂEüÿ ‚œ:wüÀ ÷ œB::2rœ2’~ˆ@r": r*: ¦÷ bôt":t*:ý":ôÅÀw>þ… ÷ Tõ‹a7øÅ w@þB@Å °ŠV:ð•ÿÿa7AV7DX7wZ7ü³w\7ø³ðŠc7 ý":~A¦æJù÷ ÒÓÖ §À °1‡GÿÿEMçw Èô暳昳æþÿ�ÀÉŸÉ KŸ“þÿ€ Dœ7!¬ñF‚Ä ×~xA"3B�ÅÅEðW¡<Åq‘€ Bœ5— 2€ ñ¥-‡€ Dw8³€ — A!1 Ÿf÷ Ü„æLÿ÷ ØÛ7Bÿ —-�LÃ6Ýñ ´~ðA³ŠŸ!· (ÿG‰ ·“ü½÷ FE7Šÿ·“î½æÿ÷ É ; M A G N E T I C T A P E W R I T E F I L E M A R K ; MWEOF: JSR PC,MTINIT BPL MWEOF1 MOV #14,R4 ;SET ERROR CODE MOV @#MTSTAT,R2 .IFZ DATUM ASR R2 ;PLACE BIT 0 IN CARRY BIT BCS MWEOF1 ;BR IF NO WRITE RING .IFF ASH #15,R2 BMI MWEOF1 .ENDC CLR R4 ;CLEAR ERROR FLAG BIS #WRFM,R3 Ê $FS000 = DIRAD1+DIRLN1+$FTDRL+$CDISZ+$TKFNS .ENDC .IFZ DRESDI $FS000 = $FTDRL+$CDISZ+$TKFNS .ENDC $FS001 = 300. $FS002 = 300. $FS003 = 300. $FS004 = 300. $FS005 = 2500. $FS006 = 300. $FS007 = 2500. $FS008 = 300. $FS009 = 300. ; $ALOD1 = $FS000+$FS001+$FS002+$FS003+$FS004 $ALOD2 = $FS005+$FS006+$FS007+$FS008+$FS009 .IFL 8192.-$ALOD1-$ALOD2 XXXXXXXË TST SYSTEM(R0) ;SEE IF THIS IS A TASK CALLING BEQ MTEXIT ;BR IF THE CALLER IS NOT A TASK .IIF NE $KT11C ADD #4,SP ; THE CALLER IS A TASK, THE PAR'S CAN GO MOV @#PS,14.(SP) ;PLACE PS ON STACK JSR R5,POPR ;RESTORE REGESTERS CLR -(SP) ;SET INVOLUNTARY SUSPEND FLAG JSR PC,QSAVEI ;AND LET QSAVI SUSPEND THE TASK JMP DSPTCH .PAGE ; MAGNETIC TAPE INTERRUPT ROUTINE MTÌpÛ�DwȲwüþ÷¾²øþ €Â ÷ôþ÷òþCœÃÂP·ÔþCœÂÜ6A·Òþ7Ðþ7 Ìþ7Êþ÷•ˆ~hBC¶þ7 ºþ÷• ³þ÷¨þf¼÷‹¨þŸ•þÿwÚW¬ Ÿ•þÿ·R²·L²w ~󎇟“þÿ¶·:²·4²w fó& ÷ fáw”åw Ùžæþÿ÷•TþÁLþ÷Jþ ²÷ ~àBHþI�÷ ú» �÷52þ÷-ò»:þ�ææ÷5þ6  ·åþ·eþwXÿ÷-Æ»þù€éwÄ÷-þþã÷ÿÿîý÷ìýàý÷èýœ»æäý÷ „Úƒ —v~XC—t÷E0Àý·P¼ýÂÆýÂEüÿƒP÷r»Ò÷ h»Q� ÷•^»W¬f & ÷ äÖ ÄAÃAŸKÌ¡ ¡ ÉB òŠŸ!·“:¼¦÷ .·“0¼1"~ÐC W¬Í ; COMMAND MOV R3,@#MTCOMM ;GIVE COMMAND MWEOF1: RTS PC ; ; THIS ROUTINE IS ENTERED BY THE INTERRUPT PROCESSOR AFTER WRITE E O F OPERATION ; MRWEO: CLR R5 ;SET I/O COMPLETE MOV RES1(R0),R1 BPL MRWEO1 ;BRANCH IF BACK SPACE FLAG IS NOT SET JSR PC,MWEOF BR MRRE3 MRWEO1: .IFZ DATUM MOV @#MTSTAT,R2 ASH #4,R2 ;PLACE ERROR BITÎX ; ONLY 8192 SECTORS AVAIL.- 1/2 MEGAWORDS .ENDC ; .IFNZ $BATCH $BCHID = NDISCS+$SYSFL+1 ; FILE ID FOR BATCH FILE $BCHTP = 7. ; BATCH FILE TYPE $RASIZ = 200. ; NO. OF ENTRIES IN USERS SYMBOL TABLE ; ; IN RASM ; ; NOTE: 4 WORDS/ENTRY $LSDSZ = 1000. ; NO. OF WORDS RESERVED FOR LOADERS ; ; SYMBOL ÏINT: JSR R5,SAVE SPL 5 TST NMTREQ BMI MTEYIT .IFZ $KT11C MOV MTFRST,R0 ;PLACE LIST ADDRESS IN R0 .IFF MOV CDTLST,R0 ; PLACE CURRENT LIST S V A IN R0 MOV MTPAR5,$KPAR5 ; GET CURRENT LIST PAR5 .ENDC MOV #MTTLI,-(SP) JSR PC,DQTIME TST (SP)+ CLR R4 ; BRANCH ON FUNCTION CODE ON RETURNING FROM AN INTERRUPT MOÐf¦÷ vïŸ÷ 8ý�wþw�þ÷ 꺂�÷5âº÷ܺ÷ŠýwþÀÎÁý÷ 0³÷58¼º÷¶º÷5�®ºîè7 ýwÜþüæ8A÷ ¸ð~HDw6þ1ÀŒº‡nDu~ÀD€d88!A$GªI²IºI>~8EVEVE@Ñ IN SIGN BIT BPL MWEOF1 .IFF BIT @#MTSTAT,#34600 BNE MRRE2 ; BRANCH IF ANY ERRORS .ENDC RTS PC .PAGE ; M A G N E T I C T A P E R E W I N D ; MREWI: JSR PC,MTINIT BPL MREW1 .IFZ DATUM BIT @#MTSTAT,#2 ;TEST LOAD POINT BIT .IFF BIT @#MTSTAT,#40 .ENDC BNE MREW2 BIS #REWD,R3 MOV ÒDIRECTORY (LSD) ; ; NOTE: $LSDSZ MUST BE >/= TO ; $MXOBJ*7/2 (5 WO-DS PE- SY4B6L#D $MXOBJ = 20. ; MAX NO. OF OBJECT MODULES TO BE ; ; LINKED INTO ANY GIVEN LOAD ; ; MODULE. .ENDC .ENDC ; MATCHES .IFNZ NDISCS .PAGE ; ; TTYIO SYSGEN PARAMETERS ; NTTYS = 1 ;NO. ÓV FUNCT(R0),R5 ;LOAD FUNCTION CODE (1 TO 8) ASL R5 JSR PC,@MTRET(R5) MOV @#MTSTAT,STATUS(R0) TST R5 BNE MTIN05 ;BRANCH IF I/O NOT COMPLETE MTINRE: JSR PC,MTDQXN MTEYIT: JMP RESTOR .PAGE MTDQXN: JSR PC,MTDEQ ; DEQUEUE REQUEST CMPB TYPE(R0),#2 ;TYPE 2 EXIT BNE MTIN00 MOV SYSTEM(R0),-(SP) ;PLACE TASK NUMBER ON STÔŠ~°Ew ,ð w $ðÀ w ðÀw ðÀ�f÷ Â×…1�æþÿÀŸÉ FŸ“Ò~(Fþÿ€ ñ%?†ñ%ô;€ ÷ — 5‚€ ƒœEÃEàÿñ� à ó "3*�€ —-�L%Ã´Ø³ŠŸ!ñŸæàý÷ 0×^wÖý· ¢þŸ•þÿw �ïöþÿ& ÷ ŠÝæX(&~ FæþÿŸ÷ vþŸ•þÿ‡w¬· fþŸ“þÿæ–ý÷ ÂÖ�wtþ÷®pþ÷ „Ÿ· |ó òÕ€EŸ“þÿ@œÀ x"EÀ$&Š÷ °Ö€Ð &æÅLý÷ HìwLÀ[~GwfÀw^ñ‹€ ÷ tñ÷öý7ôý@÷ ¤÷bGþ÷•ýý7Šþ÷äýþæDE÷ ó¥÷ þ÷ ÿ ÎýÖÕ R3,@#MTCOMM MREW1: RTS PC MREW2: CLR RES2(R0) BR MREW1 ; ; THIS ROUTINE IS ENTERED BY THE INTERRUPT PROCESSOR AFTER A REWIND ; MRREW: CLR R5 ;SET I/O COMPLETE RTS PC .PAGE ; MAGNETIC TAPE SPACE RECORD (+-N) ; MSPRC: .IFZ DATUM CLR R5 ;SET I/O COMPLETE TST @#MTSTAT ;CHECK FOR FILE MARK BMI MSPRC5 JSR PC,MTIÖOF TELETYPES ;IN SYSTEM SYSTTY = 0 ;LOGICAL UNIT NO. OF SYSTEM ;TTY DEVICE MSGBUF = 0 ;MESSAGE BUFFERING OPTION: IF 1, ;DISC MESSAGE BUFFERING VERSION IS ;ASSEMBLED. IF 0, CORE VERSION IS ;ASSEMBLED. DISCUN = 1 ;LOGICAL UNIT NO. OF DISC TO BE USED ×ACK CLR -(SP) ;PUSH 0 ON STACK JSR PC,UNSPND TST (SP)+ ;POP OFF ERROR CODE MTIN00: CMPB TYPE(R0),#3 BNE MTIN02 MOV R0,-(SP) ; LIST ADDRESS MOV SYSTEM(R0),-(SP) ; TASK NUMBER JSR PC,IOCOMX ; EXECUTE I/O COMPLETE SUBROUTINE MTIN02: TST NMTREQ BMI MTDQD ; BR IF -1 MOV MTFRST,R0 ;GET NEXT LIST ADDRESS Ø÷ æ@ }òµ@E` ƒŒD„xDáþ~�G o‚7˜ý2`xD‚ æ\D÷nDÄü7 ¾ü÷ ´ò÷ÒG’ý÷•�ý÷•—ý÷tý˜ýæDE÷ ”ò‡÷ Ž÷ š÷ |ÃZý÷ 8÷îG\ý‡÷ r÷ ~÷ `ñ‹ €Ã(ý÷ Ã~HæE÷ Tòñý1ŠòÅ€E@&& ÷ vßÎþÿŸw"ü ÷XDü¡7 ü¡7 üÉðŠŸ!Ÿ“þÿ&÷ šŸ÷ Æü7 ¶üw>þwHþ‚ 7 Àü7ºüÀÖü ~€H÷ ÷´ü÷¨H¸ü÷•µü7Š¿ü7 ÂüæDE÷ Æñ‡÷ ¸÷ ÄÃdE÷xzü÷ œ÷`rüË ÅœÅE€ÿ… À`üZó-\ü÷Rü÷Hü÷rü@üÃe ÷ <ü£~øHä· bü÷-^ü:üÌ÷ ,ü ƒŒD„xDáÀü À1 wjþ‚ ÷ ü8÷TIÙNIT ;INITIALIZE BPL MSPRC2 TST COUNT(R0) BEQ MSPRC2 BMI MSPRC3 ;BR IF NEGATIVE ; DECREMENT (N) AND SPACE FORWARD DEC COUNT(R0) INC NWORD(R0) BIS #SPCR,R3 ; BR MSPRC4 ; INCREMENT (N) AND SPACE BACK MSPRC3: INC COUNT(R0) DEC NWORD(R0) BIS #BCKR,R3 MSPRC4: MOV R3,@#MTCOMM ;GIVE COMMAND INC R5 Ú ;FOR MESSAGE BUFFERING DBUFSZ = 1 ;NO. OF 64 WORD DISC SECTORS ALLOCATED ;FOR BUFFERING OF ONE MESSAGE ON DISC FILESZ = 20*DBUFSZ ;NO. OF SECTORS PER FILE NTRYS = 3 ;NO. OF TRYS TO OUTPUT A CHARACTER ;TO TTY TTOTIM = 15. ;MILLISECOND COUNT FOR TTY ;OUTPUT TIMERS TTITIM = 15. ;SECOND COUNT FOR TTY INPÛ .IFNZ $KT11C MOV R0,-(SP) ; CONVERT LIST ADDRESS JSR PC,PPASV5 ; FROM PACKED PHYSICAL TO MOV (SP)+,R0 ; SYSTEM VIRTUAL MOV R0,CDTLST ; SAVE FOR NEXT MOV $KPAR5,MTPAR5 ; INTERRUPT MOV DTPAR(R0),@#$KPAR6 ;INITIALIZE KPAR FOR DATA BUFFER ADDR .ENDC MOV FUNCT(R0),R1 ;RETURN JUMP TO ASL R1 ; FUNCTIONAL JSR PC,@MTÜü÷• ü÷•ü÷èûüæDE÷ ñ‡÷ ÷ ÃÒû÷ÊûómÎûóíÈû’~pI÷zIÐû‡÷ æ÷ òñ²û w$þ3 ¯7¢û÷˜û÷Âû�ûÅÀwØ÷4J€û÷RJxû÷ZJpû@÷ ÷îIzû÷•wû÷•û÷\û€ûæDE÷ |ð1~èIŸ•þÿ‡÷ r÷ ~ÃBûË Hÿ .ûó‹ €@÷ ”ÿ ûæE÷ Hð÷$J&û‡÷ <÷ H÷ *wâý œÂE€ÿòµ@Eól3 ‡óÕ€‡óÅ€ä~`J‡‰ Ÿ•þÿ1�w °ëއ÷ Ôú‡Ö À1�÷ ÐwŒýÀ 1�÷žJ¬ú‡÷ Âñ Ã*þÀ €ÄE€Wq Ca 3 ´9„ Ãe ù‡À Åœ¹9ÅE ~ØJ€ÿq¡ òÃe´9‡¦À 7 Lú —r Ý ;SET I/O NOT COMPLETE MSPRC2: RTS PC MSPRC5: TST NWORD(R0) BGT MSPRC6 INC NWORD(R0) DEC COUNT(R0) BR MSPRC2 MSPRC6: DEC NWORD(R0) INC COUNT(R0) BR MSPRC2 .IFF JSR PC,MTINIT ; INITIALIZE BPL MSPRC3 ; BRANCH IF ERROR MOV COUNT(R0),R1 BMI MSPRC3 NEG R1 BIS #SPCR,R3 ÞUT/OPERATOR ;RESPONSE TIMERS TTWTIM = 240. ;SECOND COUNT FOR WAIT TIMER NWUCH = 5 ;NO. OF CHARS TO BE OUTPUT FOR ;WARMUP OF A TTY UNIT EOMCH = 33 ;ALTERNATE EOM CHAR (ALT KEY) EOMOPT = 0 ;EOM CHAR OPTION WHERE ; 1 = EOM IS FOLLOWED BY CR AND LF ; 0 = NOT FOLLOWED BY CR AND LF EOMPRT ßFCT(R1) ; ROUTINE CMP RES2(R0),#2 BLE MTINRE TST R4 BNE MTINRE MTIN05: MOV #MTTLI,-(SP) MOV FUNCT(R0),R1 MOVB MTIMV(R1),-(SP) JSR PC,QTIME TST (SP)+ MTDQD: RTS PC .PAGE ; MAGNETIC TAPE TIME OUT ROUTINE MTTIM: JSR R5,PUSHR TST NMTREQ ; IS QUEUE EMPTY BMI MTTIM2 .IFZ $KT11C MOV MTFRST,R0 à·@ú×p ÃedE÷6úCœ ÷�8úà ÷œ"3@ú· <ú‚‡Kó úsœ ³�ñ‹€óÕ€s òµ@Eóàùì~PKól‡BœÂE€ÿ‡ÁØù÷Öù|©‡wNwT÷ žÓûö5À÷¦f&F ‚ÂU€ß ÿèô�a €Õå ;âÁpÓÁEàÿ¼`MÛœœM7œØMü~ÈKªÿÀ 7èL ÿz@WtüÿÀEðÿÁEðÿÂå·†ÿÀ ’~€��‚��·,ÓÆhÿæfÿ¦ææ�`ÿœþÿþÿ‚“\ÂE€ÿ‚aƒœ×tüÿÃEñÿß ÿêôƒÃEà×túÿi~@Lß`êôÊEÀÿÊU Ö‹€‚ƒœ ×tüÿÃEñÿò ÿƒ ÃEà×túÿò`Ÿìôƒ ÃEÀÿÃUÀòƒ‚Þ ŸÆšÒ&&7Ôþ7ÎþÁ 0C~ÀeÀEà&À”~¸L¶þÁá ; OR IN SPACE COMMAND MSPRC1: MOV R1,@#MTBCNT ; PLACE COUNT IN CONTROLLER REGISTER MOV R3,@#MTCOMM ; GIVE COMMAND MSPRC2: RTS PC MSPRC3: BIS #BCKR,R3 ; OR IN BACKSPACE COMMAND BR MSPRC1 MRPRC: MOV COUNT(R0),R1 BPL MSPRC4 COM R1 MSPRC4: ADD @#MTBCNT,R1 MOV R1,NWORD(R0) CLR R5 RTS PC .ENDC .PAGE ; MAGNETIC TAPE SKIP FILES (+-N) ; MSKFI: â = 0 ;EOM PRINT OPTION WHERE ; 1 = EOM IS PRINTED ; 0 = EOM IS NOT PRINTED EOLCH = 12 ;CHAR BEING USED FOR END OF LINE ON ;TTY INPUT ECHOCH = 40 ;ECHO CHAR -- CHAR OUTPUT FOR NO ECHO MRCH = 25 ;MESSAGE RESTART CHAR (CONTROL U) LINELN = 72. ;LINE LENGTH: NO. OF CHARS TO BE ã .IFF MOV CDTLST,R0 ; GET LIST S.V.A. MOV MTPAR5,$KPAR5 ; AND ASSOCIATED PAR5 .ENDC CMP FUNCT(R0),#11 BNE MTTIM1 JSR PC,MUREWI TST R2 BEQ MTTIM4 MOV #MTTLI,-(SP) ; TIMER LIST MOV #1,-(SP) ; TIMER DELAY JSR PC,QTIME TST (SP)+ BR MTTIM2 ; DEQUEUE THE REQUEST MTTIM1: MOV #12,R4 MTTIM4: ä´þßU0þÿ† Ö €�‚*³Ö ØæBÒ¦÷ |Ñ^ä"%¢'$%j&|%Üð0*Â*HA:6”25l:Ö]XV`W‹~0MäEìEöE�6d:ÚLø6d;¶Fp¬~¨M!0033 ˆˆˆˆˆˆ ˆˆ#~ Nÿÿÿÿå CLR R5 ;SET I/O COMPLETE MOV @#MTSTAT,R1 .IFZ DATUM ASL R1 .IFF ASH #5,R1 .ENDC BMI MSKFI5 JSR PC,MTINIT ;INITIALIZE BPL MSKFI2 .IFNZ DATUM MOV #-77776,@#MTBCNT .ENDC TST COUNT(R0) BEQ MSKFI2 BMI MSKFI3 ;BR IF NEGATIVE DEC COUNT(R0) INC NWORD(R0) æ ;TYPED IN A LINE .PAGE ;*********************************************************************** ;* ** ;* SEGMENT REGISTER ADDRESSES REQUIRED BY THE PROGRAMS WHEN ** ;* IMPLEMENTED ON AN 11/45 OR 11/25, EITHER WITH SEGMENTATION. ** ;* ** .IFNZ $KT11C ;* ;* K E R N E L S E G M E N T R E G I S T E R S ;* $KPç JSR PC,MTDQXN MTTIM2: JSR R5,POPR ;RESTORE REGISTERS RTS PC ;RETURN TO CALLER .PAGE ; MAGNETIC TAPE OPEN ; MOPEN: JSR PC,MTINIT BR MCL10 ;GO TO COMMON EXIT FOR OPEN/CLOSE ; ; ; MAGNETIC TAPE CLOSE ; MCLOS: CLR R4 MCL10: RTS PC .PAGE ; M A G N E T I C T A P E R E A D MREAD: JSR PC,MTINIT BPL MREA1 JSè~˜N[¬N¬NæN¬N ÿÿ[OOBOO º~Oÿÿÿÿ&~ˆOÿÿÿÿ®~PÿÿéBIS #SPCF,R3 ;FORM SKIP FILE COMMAND BR MSKFI4 MSKFI3: INC COUNT(R0) ;INCREMENT COUNT DEC NWORD(R0) BIS #BCKF,R3 ;FORM BACK SPACE FILE COMMAND MSKFI4: MOV R3,@#MTCOMM ;GIVE COMMAND INC R5 ;SET I/O NOT COMPLETE MSKFI2: RTS PC MSKFI5: TST NWORD(R0) BGT MSKFI6 INC NWORD(R0) DEC COUNT(R0) BR MSKFI2êAR0 = 772340 ; $KPAR1 = 772342 ; $KPAR2 = 772344 ;KERNEL $KPAR3 = 772346 ; PAGE $KPAR4 = 772350 ; ADDRESS $KPAR5 = 772352 ; REGISTERS $KPAR6 = 772354 ; $KPAR7 = 772356 ; ; $KPDR0 = 772300 ; $KPDR1 = 772302 ; $KPDR2 = 772304 ;KERNEL $KPDR3 = 772306 ; PAGEëR PC,MTBAD ; FORM READ COMMAND IN R3 BIS #READ,R3 ;INCLUSIVE OR UNIT NUMBER AND COMMAND MOV R3,@#MTCOMM ;GIVE READ COMMAND MREA1: RTS PC ; ; THIS ROUTINE IS ENTERED AFTER A READ ATTEMPT OR A BACK SPACE RECORD ; BYTE RES1 IS THE REREAD REPEAT COUNT ; BIT 15 OF RES1 IS THE BACK SPACE RECORD FLAG MRREA: CLR R5 ;SET I/O COMPLETE TST RES1(R0) ; TEST BACKSPACE FLAG ì3~xPÿÿÿÿNRN¬NOFO„OÂOP>P|Pÿÿÿÿÿÿÿÿÿÿ8N …~ðPÿÿ€¶Ž¦6 öþÿÿ~hQÁ ƒ÷ è ð‹3�wRB¸Pw…… wÂe÷ŸÊ Ÿ�þÿëæ÷¾÷€¼÷ ºŠ²²°ŠÍPÅÅ þ÷ žp�÷‹˜€wŠ2~àQÃŒ÷†÷„÷ œÊÕÄŠ„ ÄmØþÅÅ þ÷ fT�Ÿ“þÿð‹3í MSKFI6: DEC NWORD(R0) INC COUNT(R0) BR MSKFI2 .PAGE .IFNZ MULRE ; MAGNETIC TAPE MULTIPLE DRIVE REWIND MUREW: CLR R2 ;USE AS DEVICE NUMBER COUNTER MOVB DEVNUM(R0),R1 MOV R1,-(SP) ;SAVE ON STACK BIC #MTMREW,R1 ;CLEAR ALL BUT DEFINED UNITS MURE1: ASR R1 BCC MURE2 ;BR IF BIT 0 WAS CLEAR MOVB R2,DEVNUM(R0) ;SET Dî $KPDR4 = 772310 ; DESCRIPTOR $KPDR5 = 772312 ; REGISTERS $KPDR6 = 772314 ; $KPDR7 = 772316 ; ;* ;* U S E R S E G M E N T R E G I S T E R S ;* $UPAR0 = 777640 ; $UPAR1 = 777642 ; $UPAR2 = 777644 ;USER $UPAR3 = 777646 ; PAGE $UPAR4 = 777650 ; ADDRESS $UPAR5 = 777652 ; REGISTERS $UPAR6 = 77765ï BPL MRRE1 ;CONTINUE IF NOT SET JSR PC,MREAD BR MRRE3 MRRE1: .IFZ DATUM MOV @#MTSTAT,R2 ASH #4,R2 ;MOVE ERROR BIT INTO SIGN BIT BMI MRRE2 ;BRANCH IF ERROR SET MRRE6: SUB @#MTWORD,COUNT(R0) ; SUB WORD COUNT .IFF MRRE6: BIT @#MTSTAT,#34600 BNE MRRE2 ; BRANCK IF ANY ERRORS MOV @#MTBCNT,R1 ASR R1 ADD ð�E¸P5ôÿÅæP&÷ ^Ë„Tþ€Äå:̃Cì¸Pô�4�ôLZ ô• Ãe0ôŒ~XRÃe ôô„¢…Å tL 04Š3Äe&Ê‹€÷ Öç÷ àçô �ñ• .!Ÿ•þÿ‡ö ¶ �1Š.!Ö óÁe8f÷ \ �D„ À w*å~ÐRB¸PæŸ2¬ÍPþÿ+ð‹ÍP €ò ôÿ ÷~÷U€|÷ z²ŠÿÿÄ…÷ d„ôÿBÁ Ä w²þÊ•Ÿ“þÿ&÷ \Ê„wÿB®Ÿ�þÿ…… wbÿ—¢µ~HSÂeõŸ—¢îʲ²w(ÿð‹3‘€Ÿ“þÿÄ  ‹ô‹3€Å A¸P E… E’W¡ÁeõÄ é… CÝq" EÜÅ fŠ÷ ~®~ÀS…EÀÿÅ éÅp¡ÛPåŸÊ‹w¶þñEVICE NUMBER IN LIST JSR PC,MTINIT BPL MURE2 BIC #ENAB,R3 ; CLEAR INTERRUPT ENABLE BIS #REWD,R3 ;SET REWIND COMMAND MOV R3,@#MTCOMM ;GIVE COMMAND MURE2: INC R2 ;INC DEVICE NUMBER TST R1 ;HAVE ALL REWINDS BEEN ISSUED BNE MURE1 ;BR IF NOT MOV (SP)+,DEVNUM(R0) ;RESTOR RTS PC ;RETURN ; MUREWI: MOV DEò4 ; $UPAR7 = 777656 ; ; $UPDR0 = 777600 ; $UPDR1 = 777602 ; $UPDR2 = 777604 ;USER $UPDR3 = 777606 ; PAGE $UPDR4 = 777610 ; DESCRIPTOR $UPDR5 = 777612 ; REGISTERS $UPDR6 = 777614 ; $UPDR7 = 777616 ; .ENDC .PAGE ;****************************************************************ó R1,COUNT(R0) .ENDC BR MRRE4 MRRE2: MOV #11,R4 DEC RES1(R0) ; DEC REPEAT COUNT BEQ MRRE4 JSR PC,MTINIT BPL MRRE4 MOVB #200,RES1+1(R0) ;SET BACK SPACE FLAG .IFNZ DATUM MOV #-1,@#MTBCNT .ENDC BIS #BCKR,R3 ;R3 =BACK SPACE COMMAND MOV R3,@#MTCOMM ;GIVE BACK SPACE COMMAND MRRE3: INC R5 ;SET I/O NOTôE’ÈW¡ÅEõ‹Ÿ!ô÷ ¼Ÿ“þÿf÷ fÒÖ ó /Ÿõ•.!ñ µŠ.!Ÿ“þÿ³Äÿ3�Ãÿó•óÿó•ËÿóTYÌÿÄ~8TÄeðÿ3Ôÿ3Úÿóe Úÿóœ ØÿÃeÈÿæ÷ æó  w.þ ŠÃeÀÿÄÁ wÂýA÷ `w&�Žæ—þÿ÷ LŸ1Š.!Á 1 Šð‹3^€7ÀÿÈ÷Æ÷ ø~°T ðŠÍP þ÷ °K�Ÿ“þÿÀÁð‹ÍP�B¸Pð‹3 €ƒƒ à ÃE€ÿÂeõ‚øÿÊ‹€ Ñ  äw�ýŸƒÙÃE€ÿÕŸƒ’Òƒ÷ 4œ~(U÷B÷€@÷ >Ãà þ÷ 0 �÷‹*€Ÿ“þÿð‹3Î�Ôw†üÁ B¸P÷ (�„ôÿ‚øÿ—¢ôÊÕ&÷ È„Ÿ“þÿÁ w¦üò%äÿ¦Îeäÿ÷ ~ UNÀõVNUM(R0),R1 CLR R2 ;DONE FLAG CLR R3 ;DEVICE NUMBER BIC #MTMREW,R1 ;CLEAR ALL BUT DEFINED UNITS MURE3: ASR R1 BCC MURE4 ;BR IF BIT 0 WAS CLEAR BIC #MTCLR,@#MTCOMM ; CLEAR TAPE UNIT NUMBER BIS R3,@#MTCOMM ; SET UNIT NUMBER BIT #MTRWD,@#MTSTAT ; TEST REWIND BIT BEQ MURE4 ;BR IF DONE INC R2 ;INC IF NOT DONE MURE4: ö****** ;* ** ;* IN THE FOLLOWING EQUATES, A ZERO MEANS DO NOT INCLUDE ** ;* THE OPTION. ** ;* ** ;* C A R D R E A D E R E Q U A T E S ** ;* ** ;********************************************************÷ COMPLETE MRRE4: RTS PC .PAGE ; M A G N E T I C T A P E W R I T E ; R0 = ADDRESS OF LIST ; BYTE RES1 IS REWRITE REPEAT COUNT ; BIT 15 OF RES1 IS BACK SPACE RECORD FLAG ; MWRIT: JSR PC,MTINIT BPL MWRI1 JSR PC,MTBAD MOV #14,R4 ;SET ERROR CODE MOV @#MTSTAT,R2 .IFZ DATUM ASR R2 ;PLACE BIT 0 IN CARRY BIT øÖ ò‹ÿÿ¯¦ôÿ÷ ÖÇ·¸ ÷U¶ ÷ è 2Šÿÿ2 ôÿwêþæ—þÿÁLÉ÷ 4 ð‹ÍP3ƒ’à 0À ¸P€ Ÿ÷ ˜÷ rfƒøÿ×¢Ã׬.!÷ xi~V÷ Rð�CƒàÅeÀÿõ�‚øÿ� w´ý÷ PÞÁÚÈ÷ �´ ñ•.!wDü÷ ÈÈ5×-¾È1æþÿ怟׬È÷ žÍÁöÿñ•.!ŠþÿæX(& & 1~�V÷ Fð‹3�÷ <ŸÊ•ñ•.!Á À À <pŠ>pŠ<Ö ·•6©‡…CÀÿÀð‹3€ Á B¸P �� ÁE€ÿÂeö€ êÎ Z~WAÆ çÍ•Aw²Ÿ�ÁE€ÿ�Aœq"ÁEÿC Ãð ÛP Ö A÷ dŸ“þÿŸ�þÿ¾Ÿ�þÿÍ÷ ÀÇw ªÞÁ²ÇW  æùADD #MTUIC,R3 ; INC UNIT NUMBER TST R1 ;HAVE ALL UNITS BEEN CHECKED BNE MURE3 ;BR IF NOT MURE5: RTS PC .ENDC .PAGE ; THIS IS A MAGNETIC TAPE CONTROLLER INITIALIZATION ROUTINE ; CALL IS JSR PC,MTINIT ; RETURNS WITH ; R3 = DEVICE NUMBER SHIFTED FOR A COMMAND INSTRUCTION ; R4 = 0 AND (N) BIT SET IF NO ERROR ; R4 = 1 AND (N) BIT CLEAR IF TIME OUT ERROR MTINIT: MOV #CLEú************** NCR = 1 ;NUMBER OF CARD READERS IN SYSTEM BIN = 0 ; DON'T INCLUDE BINARY MODE BCD = 1 ;1 = INCLUDE ALPHANUMERIC MODE, 0 = DONT TTYSW = 1 ;1 = SWITCH INPUT TO TTY ON COMMAND INEBC = 0 ; 1=PROVIDE OFR INTERNAL EBCDIC CODE EXEBC = 0 ; 1=PROVIDE FOR EXTERNAL EBCDIC CODE ; (029 CARD CODE) $RES = 1 û BCS MWRI1 ;BR IF NO WRITE RING .IFF ASH #13.,R2 ; PLACE WRITE RING BIT IN SIGN BIT BMI MWRI1 ; BR IF NO WRITE RING .ENDC CLR R4 ;CLEAR ERROR FLAG ; IS THIS THE FOURTH TRY MOV RES1(R0),R2 ;LOAD REPEAT COUNT IN R2 BIC #177774,R2 BEQ MWRI2 ;BRANCH TO ISSUE WRITE WITH EXTENDED GAP ; ISSUE NORMAL WRITE BIS #WRIT,R3 ;OR IN WRITEüþÿŸ÷ \Ê•¬~€WŸ•þÿw –Þ‡�Žæþÿæ÷ <² —¢Ê•ð‹3€wÿÀ ¸PÃeäÿ3 ææþ÷ ½Ö ñ•.!Ö w¾úÊ•ð‹3èô�6 æþÿ@œ†~øW"÷ þ € ÷ ôüð‹3ĸPÄeäÿŸô ¶ Úô•ÿÿ Ÿ“þÿ&÷ º½Ö Á ŸDŠÊå2 � ñ•.!à &÷ .Å æ>÷ $Å3>·—¢…b~pX � C÷ â& fæ€ðŠÍPw"ù2 ¥�Žæþÿ@œ"÷ Z € ÷ PüŸ„Ÿ“þÿðÄE€ÿ!Ê•wÐùð‹3�Ê•Á DŠ&÷ Z„w~èX¬ûð‹3ì€ ðŠÍPèw Ýæê›æ蛀æ œ.! �Ö ·Ö›·Лw ÝŽ‡&W þÿöð•ýA,@#MTCOMM ;ISSUE CLEAR TO MAG TAPE CONTROLLER MOVB DEVNUM(R0),R3 ;OBTAIN DEVICE NUMBER ASH #MTDVS,R3 ; LEFT SHIFT MOV R3,@#MTCOMM ;STORE UNIT NUMBER IN COMMAND REGISTER BIS #MTINB,R3 ; SET INTERRUPT ENABLE ; CLEAR BACK SPACE FLAG AND SET DELAY COUNTER TO ZERO CLRB RES1+1(R0) ;CLEAR BACK SPACE FLAG CLR R4 CMP FUNCT(R0),#1 ;OPEN COMMAND BEQ MTIN3 MOVB @#MTSTAT,Rþ ; TIMER RES. FOR CREAD (=10.0 MSEC.) $100MS = 10. ;MULTIPLE USING $RES FOR 100 MS $500MS = 50. ;MULTIPLE USING $RES FOR 1/2 SECOND $1SEC = 100. ;MULTIPLE USING $RES FOR 1 SECOND MXTIME = 180. ;MAX SECONDS TO WAIT FOR OPR RESPONSE ; ; NOTE: THE ABOVE TIMES DO NOT NEED TO BE EXACT. SELECT THE ; PROPER VALUES TO GET AS CLOSE AS POSSIBLE TO THE ; TIMES STATES. ; ; ; Cÿ COMMAND BR MWRI3 MWRI2: BIS #WEXG,R3 ;OR IN WRITE WITH EXTENDED GAP MWRI3: MOV R3,@#MTCOMM ;STORE IN COMMAND REGISTER MWRI1: RTS PC .PAGE ; THIS ROUTINE IS ENTERED BY THE INTERRUPT PROCESSOR AFTER WRITE COMMANDS ; MRWRI: CLR R5 ;SET I/O COMPLETE TST RES1(R0) BPL MRWR1 ;BRANCH IF THE BACK SPACE IS NOT SET JSR PC,MWRIT BR MRRE3 MRWR1:.!÷ Tÿ€°•.!æ÷ 6ûâ6 ðæþÿÁe8f÷ �~`Y¾�DÁ ÷ vŸ—¢bô ÐÿÊåò ÊeŸ“þÿÄÿ�ÃÿÁ ÄeÀÿw’øüEÄÿ4�Ãÿð‹3�À ¸P€ f&Ÿ÷ Ê÷ ¤Ÿ�þÿ…øÿµ- ~ØYò„�C…àt‘ÂÿÂò #À À Ÿ &÷ ÖÄ&>÷ €Ã0>Ê•ñ•.!Á 1ŠŸ“þÿ� Ä@Qt&÷ ÎÚwføÊ•ôð‹3¥€ ðŠÍP¡æþÿi~PZÁe8f÷ Æ�@œÃÿÀ  BÜÂÿl¸P „—¢Kô¥.!Gñ Ðÿ:ff÷ FÃ×tüÿÅñ ñ`$Ñ Gƒ�À Ä ŸôŠ„ Ê‹� &>÷ ÄÂÞðÄ~ÈZ>±€ € 1�2 ô•.!Ê•w²÷ <ð>ð<ñÅ1 ;LOAD WITH BYTE SIGN EXTENDED .IFNZ DATUM ASH #11,R1 .ENDC BPL MTIN2 ; BRANCH IF READY BIT WAS 0 MTIN3: RTS PC ;RETURN MTIN2: MOV #11,R4 BR MTIN3 ; .PAGE ; PLACE BUFFER ADDRESS AND WORD COUNT IN CONTROLLER REGISTERS MTBAD: .IFZ $KT11C MOV DATA(R0),@MTMEMO .IFF MOV DTPAR(R0),@#772354 MOV DTVIRT(R0),- / R V E C T O R I N F O R M A T I O N ; ; CR1 = 2 ;LOGICAL UNIT NO. FOR CR # 1 CR2 = 2 ;LOGICAL UNIT NO. FOR CR # 2 CR3 = 0 ;LOGICAL UNIT NO. FOR C/R # 3 CR4 = 0 ;LOGICAL UNIT NO. FOR C/R # 4 ; ; C / R D E V I C E I / O A D D R E S S E S ; CRS.1 = 777160 ;CARD READER STATUS - C/R # 1 CRB1.1 = 777162 ;CARD READER BINARY DATA BUFFER CRB2.1  .IFZ DATUM MOV @#MTSTAT,R2 ASH #4,R2 ;PALCE ERROR BIT IN SIGN BIT BMI MRRE2 ;BR IF ERROR ; PLACE WORD COUNT AND STATUS IN LIST SUB @#MTWORD,COUNT(R0) .IFF BIT @#MTSTAT,#34600 BNE MRRE2 ; BRANCH IF ANY ERRORS MOV @#MTBCNT,R1 ASR R1 ADD R1,COUNT(R0) .ENDC RTS PC .PAGE ; M A G N E T I C T A P E Q5f÷ øÙô•.!€ D�Ÿwxù± æþÿB�÷ ªÅ0Quf÷ ÂÙŸ¡~@[ñ‹Ÿ!ñ•.!wDùñ•ýÿ.!wB÷ ÅÜq"œÛPÊCa‡�öÿfÑQr úÿ�üÿröÿ�°ŠÍP‡�øÿC DEr úÿ�üÿrøÿðŠÍP‡É•…ÊÅ!~¸[ÊÕEõ•.!Å fŠ÷ nƒ5 Š… ‡Á fŠ÷ Z„�À  ÝÂÿl¸P� € ‡à ¸P …… r Ê Âeõ ‡¦÷ ¬Á÷ ‚Á¶;~0\÷¸˜´˜÷倮˜‡¦ò�‚„‡ˆ �‹À�Ž                 !"£$¥¦'(©ª+¬-.¯0±²3´56·¸9:»<½¾?ÀABÃDÅÆGHÉÊKÌMNÏPÑÒSÔUVרYZÛ\ÝÞ_'ABÃt~¨\DÅÆGHÉÊKÌMNÏPÑÒSÔUVרYZ   (SP) JSR PC,SVPPA ; TO PPA MOV (SP)+,R5 ; LOAD PPA CLR R4 ; PLACE BITS ASHC #2,R4 ; 16 & 17 IN R4 .IFZ DATUM ASH #2,R4 ; SET ADDRESS MOV R4,@#MTSTAT ; BITS 16 & 17 .IFF ASH #4,R4 ; SET ADDRESS BIS R4,R3 ; BITS 16 & 17 .ENDC ; DATUM MOV DATA(R0),R4 ; GET BITS 0 = 777164 ;CARD READER COMPRESSED DATA ADDRESS ; CRS.2 = 777160 ;CARD READER STATUS - C/O # 2 CRB1.2 = 777162 ;CARD READER BINARY DATA CRB2.2 = 777164 ;CARD READER COMPRESSED DATA ; CRS.3 = 0 ;CAR READER STATUS - C/R # 3 CRB1.3 = 0 ;CARD READER BINARY DATA BUFFER CRB2.3 = 0 ;CARD READER COMPRESSED DATA BUFFER ; CRS.4 = 0 ;CARD READER STATUS - W R I T E F I L E M A R K ; MWEOF: JSR PC,MTINIT BPL MWEOF1 MOV #14,R4 ;SET ERROR CODE MOV @#MTSTAT,R2 .IFZ DATUM ASR R2 ;PLACE BIT 0 IN CARRY BIT BCS MWEOF1 ;BR IF NO WRITE RING .IFF ASH #15,R2 BMI MWEOF1 .ENDC CLR R4 ;CLEAR ERROR FLAG BIS #WRFM,R3 ; COMMAND MOV R3  234æ~ ]öb��` L/}~˜]P 1 PARITY ERROR L/P 1 NOT READY L/P 1 ABORTEDâ\f]&f¦æ&fæêôæìô€÷ º 7¬ŒÿÄŸìôŸêô…p~^„ƒ‚�€Ž‡œ— ÂÉ Ä çÄ ä÷ hæþÿŸÈ :&÷ ‚¿¦Ê\÷ T¿ž²Ê\ìô ö%�LĪÀ´ŠŸ!0 ó Ä\$Ÿþÿ<~ˆ^  & 1 BIC #177774,R4 BIS R4,R5 MOV R5,@#MTMEMO ; SET BITS 0 THRU 15 .ENDC ; KT11C MOV NWORD(R0),R5 ;GET WORD COUNT MOV R5,COUNT(R0) .IFZ DATUM MOV R5,@#MTWORD .IFF MOV NWORD(R0),R5 ; GET WORD COUNT ASL R5 ; BYTE COUNT NEG R5 MOV R5,@#MTBCNT .ENDC RTS PC .PAGE ; DEQUEUE  C/R # 4 CRB1.4 = 0 ;CARD READER BINARY DATA BUFFER CRB2.4 = 0 ;CARD READER COMPRESSED DATA BUFFER ; CRVC.1 = 230 ; C/R # 1 INTERRUPT VECTOR CRVC.2 = 230 ;C/R # 2 INTERRUPT VECTOR CRVC.3 = 0 ;C/R # 3 INTERRUPT VECTOR CRVC.4 = 0 ;C/R # 4 INTERRUPT VECTOR .PAGE ;********************************************************************** ;* ,@#MTCOMM ;GIVE COMMAND MWEOF1: RTS PC ; ; THIS ROUTINE IS ENTERED BY THE INTERRUPT PROCESSOR AFTER WRITE E O F OPERATION ; MRWEO: CLR R5 ;SET I/O COMPLETE MOV RES1(R0),R1 BPL MRWEO1 ;BRANCH IF BACK SPACE FLAG IS NOT SET JSR PC,MWEOF BR MRRE3 MRWEO1: .IFZ DATUM MOV @#MTSTAT,R2 ASH #4,R2 ;PLACE ERROR BIT IN SIGN BIT BPL MWEOF1  ð¥ð ¶Æe…„ƒ‚�€& ÷ tÅw¢É0Ÿþÿ£ˆ ŸþÿÄ�³ Ä\ŸþÿsÆ\3 Ô\3 Ö\³Ü\sØ\3 Ú\÷ ÖÂD\÷ îŸ÷ T~_ô Âw0w Ú¼ Åœó Ä\MœÂÜ\¦È\÷ ^¾€ìôÁÆ\÷ ˜å÷ ŠÂD\÷ ¢÷ ¨MæþÿÂÜ\Ÿ2È\ „ÄeÈ\¡ ¡ 2Ê\ÈŸœ~x_þÿÄÔ\ôŠŸ!&÷ lù¬ æÔ\& ÷ ÈÖ fæ&æÔ\÷ ¤Óƒ…ÂÜ\Â÷ æÄò È\Âe(¦È\÷ ª½€ìô÷ Âv~ð_ð wVÿsÆ\³Ü\3 Ô\3 Ö\ÂD\sØ\3 Ú\÷ Î÷ ª÷ ÒM÷  3 Ä\æ|]÷ Ö M³ Ú\ó%Ú\÷ X÷ z÷ ¢M  THE REQUEST MTDEQ: MOV R4,ERROR(R0) DEC NMTREQ MOV @#MTSTAT,STATUS(R0) MOV @#PS,-(SP) ;SAVE CURRENT CPU STATUS REGISTER SPL 7 ;INHIBIT INTERRUPTS MOV (R0),MTFRST ;PUT NEXT GUY IN THRAED AT TOP OF QUEUE BNE MTDEQ2 MOV #MTFRST,MTLAST .IFNZ $KT11C CLC ROR MTLAST CLC ROR MTLAST .ENDC MTDEQ2: MOV #1 ** ;* L I N E P R I N T E R E Q U A T E C A R D S ** ;* ** ;********************************************************************** NLP = 1 ;NUMBER OF LINE PRINTERS IN SYSTEM NLPRTY = 3 ;NUMBER OF L/P PRIORITY LEVELS LPBACK = 1 ;1 = BACKUP L/P WITH TTY BY OPER COMMAND LPVC.1 = 200 ;L/P  .IFF BIT @#MTSTAT,#34600 BNE MRRE2 ; BRANCH IF ANY ERRORS .ENDC RTS PC .PAGE ; M A G N E T I C T A P E R E W I N D ; MREWI: JSR PC,MTINIT BPL MREW1 .IFZ DATUM BIT @#MTSTAT,#2 ;TEST LOAD POINT BIT .IFF BIT @#MTSTAT,#40 .ENDC BNE MREW2 BIS #REWD,R3 MOV R3,@#MTCOMM MREW1: RTæ�]÷ `ñwèþ‹~h`æ¨]÷ N÷ V3 Ú\Ä|]&ô�`æd÷ |Ö MC fÁÆ\ÂÜ\æÈ\÷ â¼€ìô÷ Ö …Äà\Å÷ ³ Ú\×,Ú\´æd÷ 2Ö ‡ð©~à`Ö …wfþæ&ff& ÀÒ]ÅÖ\AaÁes!Ø\B3 Þ\ DÔ! ! 3 Ò]³ Þ\ Ä% !3 Ò] ÷ ^Ä• Îå÷ R … s!Ø\ßÀ5Е ñ~XasÖ\ÀìÒ]„ Ö …�€Ö ‡3 Ò]³ Þ\Ä ÷ êÎ5øÝÅ êÄÕ¶ 6 & „`“3 Ô]Ž Ö ‡ð¥ ‡ð¥ùćß@ê~Ða‡Äê& Ä5 Ä5Ä5Ö ‡– ‡Ö ‡ó Ž] 3à\  ê÷ Ôúß ê êßâ\,(R0) ;SET LIST READY MOV (SP)+,@#PS ;UN-INHIBIT THE INTERRUPTS MOV SYSTEM(R0),R2 ;GET TASK NUMBER OF REQUESTOR BEQ MTDEQ1 ;BRANCH IF NOT A TASK DECB IOSTAT(R2) ;OTHERWISE, DECREMENT THE I/O IN PROGRES BNE MTDEQ1 MOV R2,-(SP) ;GO TO OVERLAY MONITOR SO THE TASKS CORE JSR PC,RELTSK ; CAN BE RELEASED MTDEQ1: RTS PC .END # 1 INTERRUPT VECTOR ADDRESS LPVC.2 = 200 ;L/P # 2 INTERRUPT VECTOR ADDRESS LPVC.3 = 000 ;L/P # 3 INTERRUPT VECTOR ADDRESS LPVC.4 = 000 ;L/P # 4 INTERRUPT VECTOR ADDRESS LPDT.1 = 765010 ;L/P # 1 DATA BUFFER I/O ADDRESS LPDT.2 = 765010 ;L/P # 2 DATA BUFFER I/O ADDRESS LPDT.3 = 0 ;L/P # 3 DATA BUFFER I/O ADDRESS LPDT.4 = 0 ;L/P # 4 DATA BUFFER I/O ADDRESS LFRG.1 = S PC MREW2: CLR RES2(R0) BR MREW1 ; ; THIS ROUTINE IS ENTERED BY THE INTERRUPT PROCESSOR AFTER A REWIND ; MRREW: CLR R5 ;SET I/O COMPLETE RTS PC .PAGE ; MAGNETIC TAPE SPACE RECORD (+-N) ; MSPRC: .IFZ DATUM CLR R5 ;SET I/O COMPLETE TST @#MTSTAT ;CHECK FOR FILE MARK BMI MSPRC5 JSR PC,MTINIT ;INITIALIZE BPL êßÈêÄ|]ô�`&æd÷ ÐÖ ‡fÄÒ]Å$~HbBÀåÄÄ Ä Ä Äezb0ð0ŠÈ&÷ ¾Ç…ÀÒ]‡ÃwÅÀÒ]@aAa… !B@ÁÆ\…ÂÜ\w¬ü ê‡f  ÅCqBa…à ‡„Ÿ~ÀbfÅh]æþÿŸõ 5 Ÿþÿf÷ NÇ…Ž¤‡Ÿþÿ…Ž´‡1 ‡· Žú‡7 ˆú‡æþÿŸþ% f…µ� …ŸþÿŽ6 ‡Ÿþÿw¤±~8cöeþ.c6 ‡÷Eð„÷U0~÷Eÿ|÷Uv÷Eðj÷UPd÷Eÿb÷U„\ ÷EðP÷U˜~°c@J÷EÿH÷U„Bw PÒÀ¦ÿ7  ÿ7МÿŠÀ   DLc € 3,200,0 ; READ LMAC 1,1,MWRIN,7,0,51 ; SPACE MT175: LMAC 2,1,MWRIN,3,200,0 ; READ LMAC 2,1,MWRIN,10,0,-2 ; SKIP FILES LMAC 1,1,MWRIN,3,200,0 ; READ LMAC 3,1,MWRIN,3,200,0 ; READ MT200: LMAC 3,0,MWRIN,7,0,2 ; SPACE RECORD LMAC 3,0,MWRIN,3,200,0 ; READ LMAC 2,3,MWRIN,11,0,0 BR MTEND MTESE: NOP ; USE FOR ERROR BREAK POINT MTEND:  765012 ;L/P # 1 LINE FEED REGISTER LFRG.2 = 765012 ;L/P # 2 LINE FEED REGISTER LFRG.3 = 0 ;L/P # 3 LINE FEED REGISTER LFRG.4 = 0 ;L/P # 4 LINE FEED REGISTER CNT.1 = 765014 ;L/P # 1 WORD COUNT REGISTER CNT.2 = 765014 ;L/P # 2 WORD COUNT REGISTER CNT.3 = 0 ;L/P # 3 WORD COUNT REGISTER CNT.4 = 0 ;L/P # 4 WORD COUNT REGISTER CMD.1 = 765016  MSPRC2 TST COUNT(R0) BEQ MSPRC2 BMI MSPRC3 ;BR IF NEGATIVE ; DECREMENT (N) AND SPACE FORWARD DEC COUNT(R0) INC NWORD(R0) BIS #SPCR,R3 ; BR MSPRC4 ; INCREMENT (N) AND SPACE BACK MSPRC3: INC COUNT(R0) DEC NWORD(R0) BIS #BCKR,R3 MSPRC4: MOV R3,@#MTCOMM ;GIVE COMMAND INC R5 ;SET I/O NOT COMPLETE MSPR „  ‚ Â5øqLcÑ W !îÄ5 îƒ ÷ ^ÿêƒÂíVÿ‚ ÂÂÝNÿ·Nÿ÷E€Jÿ²~(d„  ƒ Ã5úqLcw äч÷U€.ÿùˆmˆmˆm”m”” X3pKNÈoÄoÄoÄoÄoÄoÄoÄoÄoÄoO~ d ÷4›¢ÿ÷>›,›æ·”ÿ÷•ÿÿ’ 7ŠŒ wà÷›‚ÿw â7ŽÆ^dÄyoÉow À 7xw w XÄ�ZÿŒL~eŒŒ7‘Þš7ŠJ ÷•ÿÿF ÷àÞš÷¸kÖš×!:e÷0wæÆ ÿ& ÷ ÿæÜšæÖš÷•@šà D÷‹ A „ &DCƒcà ÷è w @w Ü„·Šê w ƒ~�eþ  '  7ŠÖ Ä „ EMT 4 ; EXIT ; .WORD 0 MWOUT: .ASCII /THIS BUFFER OF DATA WILL BE USED TO TEST THE MAGNETIC TAPE 62C/ .EVEN MTRCC: .WORD 1234 ; REPEAT COUNT .ASCII /SECOND LINE OF THE WRITE, REWIND, AND READ TEST 62 CHARACTERS./ MWRIN: .ASCII /INPUT BUFFER/ .EVEN .BLKW 37 .WORD 0 .BLKW 200 . = . + 200 TSKEND: .END  ;L/P # 1 COMMAND REGISTER CMD.2 = 765016 ;L/P # 2 COMMAND REGISTER CMD.3 = 0 ;L/P # 3 COMMAND REGISTER CMD.4 = 0 ;L/P # 4 COMMAND REGISTER STAT.1 = 765016 ;L/P # 1 STATUS REGISTER STAT.2 = 765016 ;L/P # 2 STATUS REGISTER STAT.3 = 0 ;L/P # 3 STATUS REGISTER STAT.4 = 0 ;L/P # 4 STATUS REGISTER ; C2: RTS PC MSPRC5: TST NWORD(R0) BGT MSPRC6 INC NWORD(R0) DEC COUNT(R0) BR MSPRC2 MSPRC6: DEC NWORD(R0) INC COUNT(R0) BR MSPRC2 .IFF JSR PC,MTINIT ; INITIALIZE BPL MSPRC3 ; BRANCH IF ERROR MOV COUNT(R0),R1 BMI MSPRC3 NEG R1 BIS #SPCR,R3 ; OR IN SPACE COMMAND MSPRC1: MO‚ ¦&w Ä„‚À•\w ÄwXw Èw �Ä øfw Š÷•‚ €w ’7ŠŽ wtwhw šÄ³o  Ä%Ãoû‚ÀEøÿÞ~fÄ Äe^d‚ whÄå¬o÷ÀD Áuo÷ ôÀ=w T·ŠD À�= w HÀ�6 w @À�/ w 8À w 0w 8  7� w *7� w "7Š 7� ÀhoÁuo÷ ~€fXÄâÂwð7Šæ  wèw (‚b‚ ‚ ·¼wúw ‚øw �A�Á � � B`ï÷ €÷%’ÂŽ…Ö w|÷‹’û 7Š‚wr÷•ÿÿxw%~øfh·Šu ÄEøÿÄ 7|d~wh÷‹^ ÄEøÿÄ Ã t|dPà õôÿÿ|dIw ,Û×-ÉÂ% w   ÿÿÀ=w $ÀÁø7 ‰"&¶%"&Ð%Ê%"&"&"&Ð%Ÿ“þÿ&÷ ªŸÖ . 7^ù)S~Ð% ‡ð‹Ÿ!ð•ýÿ.!ð•.!Ÿ“þÿ&&÷ š2€Ÿð•.!�^&W"Âåø1f÷ Ÿ•þÿw öއcc�~H&c0&@&P&öU€w ¦æxÎævÎæ—þÿ €ÀE€w ö €Á‘!7 îø|‚À &Š÷ âö�€ Ÿœ.!Âå  k D A~À&gÂåHdð•.!Ÿ“þÿBœ  ƒ<XÀ ,ŠÄæ÷ ¼öƒ÷MŸW"Iò <r<ò<>²`>¡2 >¡2 >&÷ ‚ö„Lr>¡~8'2 >¡2 >É€� †1 ð‹Ÿ!ð•.! ; LPSIZE = 132. ;NUMBER OF CHARACTERS IN L/P BUFFER LPMXTM = 180. ;MAX NO SECONDS LPRNTR WAITS FOR OPER ACTION LPINH = 4 ;INTERRUPT LEVEL OF L/P $NLINE = 56. ; MAX LINES/PAGE (=CONTROL TAPE. $LPERR = 10. .PAGE ;*********************************************************************** ;* ** ;* MACROS TO SATISFY THE DIRECTIVES PRV R1,@#MTBCNT ; PLACE COUNT IN CONTROLLER REGISTER MOV R3,@#MTCOMM ; GIVE COMMAND MSPRC2: RTS PC MSPRC3: BIS #BCKR,R3 ; OR IN BACKSPACE COMMAND BR MSPRC1 MRPRC: MOV COUNT(R0),R1 BPL MSPRC4 COM R1 MSPRC4: ADD @#MTBCNT,R1 MOV R1,NWORD(R0) CLR R5 RTS PC .ENDC .PAGE ; MAGNETIC TAPE SKIP FILES (+-N) ; MSKFI: CLR R5 ;SET I/O ~pgÄ í|dÀ=w ÀÀe0w úÀ,w òÂ%ÀÎ@w Œk÷‹ÌÄÊüÂeÀ=÷¤w Â@w fw¬üw’·Šºw¢À=w ¤ w *~èg ÿÿÀrw 8AÀe0w „À,w |æV÷PÀTw ·D-À ÷<@7ì|d:€ â÷(÷‹6 À4üÄ,üÃ*üw ä÷ ðÀ?w û~`h"7 üw 7Š7Š7Š    w À%0 ‚À%7‡ÀEøÿÄ Ä Ä `‚ ð 1 —o� W Ö†ø÷‹Ú ÷‹·ÄmÊ7ŠÈÁ yÌhiiipiòek­~Øh€išf|iÖiúfJj–j’jèitk¬f´fÞfg¤gÐg4hRhØgfbeFeƒ·Šh7Šc´÷JD ÷@ 7<76÷%.Ä*„ !Ÿ“þÿ&&÷ 1€ Ÿ0Š.!Ÿ•þÿv·fÍ·`Íw ’‡… … … ñÅ ð•þÿ.!ìw næ@Í×þÿ& a~°'„K7!Î÷H‚Ÿô¥.!Eô•.!!‡ß�þÿæÍæ�&&÷ 0‚ƒ•„·þÌ -Ä Š¦÷ ˆõ…Í A�Á Á f>÷ tõž±>„ ´Š.!ß�þÿ¶¦~((·¾Ìw ð ö އöþÿæ÷ Þûw Ž Ž Ž 6 ä˜÷ ÆöÄÊöÄ Ä Â<„`ßÂ`Ê !û—!÷ÿÿ¨ö˜äþ…Õ ¦÷ êô�Ä~ (J�¡ ¡ Bò•.!wœtö˜ÉCÃeÄ€ÿÔÔÔÔÔÔÔÔÄ ÿÔÔÔÔÔÔÔÔ·:öñ A@Cf Î ßU0þÿ† æÀf�~)Ÿ÷ö·üõò•.!"ESENT IN PALRES ** ;* (OUR VERSION OF PAL11R) BUT NOT PRESENT IN MACRO-11R. ** ;* ** .MACRO .REF A,B,C,D,E,F,G,H,I,J .IRP X, .GLOBL X .ENDM .ENDM .REF .MACRO .DEF A,B,C,D,E,F,G,H,I,J .REF A,B,C,D,E,F,G,H,I,J .ENDM .DEF ; ; ; ; MACRO DEF. FOR QUEUES ; .MACRO .QUE A,B,C .BO# COMPLETE MOV @#MTSTAT,R1 .IFZ DATUM ASL R1 .IFF ASH #5,R1 .ENDC BMI MSKFI5 JSR PC,MTINIT ;INITIALIZE BPL MSKFI2 .IFNZ DATUM MOV #-77776,@#MTBCNT .ENDC TST COUNT(R0) BEQ MSKFI2 BMI MSKFI3 ;BR IF NEGATIVE DEC COUNT(R0) INC NWORD(R0) BIS #SPCF,R3 ;FORM SKIP F$î‡À"ÀŸw â÷%£~Pi‹À•=w (ÀŸw À• w wúþ÷ ÖwêþwÞþ·Šì÷ Þù÷ À÷ Þ÷ÒÎ7ŠÒ÷mÄÄ÷ÀÀw ºæ´÷®À¬w ¼·¢Ö%ÀM~Èi/w ¶¯À\ú÷ ˆÔ÷ j÷í~~ÜÀÄoÄ Ã … L‡Å ÄeŒd  !šdB†Ô ù!šd=‚L® !6‚4Œd4 žd¤ ÀÄo!ž‚4ŒdôØ~@j°d4 ždÔ ô÷%À w *à ÅíÅ Å @w Â@€ ‡À%€ÿ À%÷ àw ¨· ØwÜýwÈý�  à ù÷ÀÂÎùÄÈùD · Æù¼‚€Á <~¸j&C@AƒEPA&f¦æw ’€w  À/w ¤€w Hƒ‚�„w ÞÒ Û åƒ`ƒ ƒ % ·Šòõwœêõwœèõñ ABCD fÎE€ÎeßU0þÿ† f÷‹¼õ€ÎUÀ÷E€°õfEEw$`ËÅU€C ~�)@ u õEÿ Ÿ¼pÿtÿrÿvÿÀ)Ô)è)0ü)@20þ)¸00*~2ÿ7~*ˆ ‰ Š ‹ w à æ²Êæ°Ê÷ ‚ ÷ .÷ &ñ‹*&Ÿ•þÿ¬·ŠÊ·„Êw ¶ އ,ˆ ò¬Z~€*î·fÊ·`Êw ’ öþÿ& ÷ Œùwºý±Š*5*õ@Ê*ñ‹*Ѐñ•*Ÿ•þÿ÷ Êw N æ ÊæÊ÷ ðÍÄ÷ š÷ ’ñ‹*¶±Š*5*õøÉ*ñ‹*O&UND .LIST ME A = .-4 B = .-2 .REPT C .WORD 0 .IFZ $KT11C .WORD .-2 ; NOTE: PPA WHEN RESOLVED BY IPL .ENDC .IFNZ $KT11C .PACK .-2 .ENDC .ENDR .NLIST ME .ENDM ; ; MACRO TO SET PRIORITY LEVEL 7 ; .MACRO .LOCK PSR = 177776 .IFZ $1145 MOVB #340,@#PSR .ENDC .IFNZ $'ILE COMMAND BR MSKFI4 MSKFI3: INC COUNT(R0) ;INCREMENT COUNT DEC NWORD(R0) BIS #BCKF,R3 ;FORM BACK SPACE FILE COMMAND MSKFI4: MOV R3,@#MTCOMM ;GIVE COMMAND INC R5 ;SET I/O NOT COMPLETE MSKFI2: RTS PC MSKFI5: TST NWORD(R0) BGT MSKFI6 INC NWORD(R0) DEC COUNT(R0) BR MSKFI2 MSKFI6: DEC NWORD(R0(Å ßÀEÿ�¯À € € €` Õ÷‹V·à µ÷•F… °‡Å A~0kw8ù÷•àÄ”w °7Š-÷U&ù÷‹"÷Eùw b7Dæùæù æùÎE·Œ”÷‹üŠÀ�òÀ‹† „à pžd÷•àj”w V×­ÔÏ÷‹ÊÌ÷•Œ~¨kàR”·Š¿÷U¸øÐ·°ø·®ø÷•ª7¸÷‹¡·w @÷‹˜ø€Å��øÅ�Œø¯ŒŒŒŒw‘ ”Åvø÷‹t�å wjøÄt!ŒdÄ Ä úw ¼w JÄŠoÃi~ l‹ow ž@÷e>ø%Ä•tŒd7‘2ô ždªôždw „ÀBw .À�Àe`€ w À;w ÷ðÄ�úŒdw úwàû·â·à÷Æjdf&æ¦fŸ~˜læÌæ €Ö ·Â�‚ƒ„…ƶ÷æ°€Ä4Œd°düü)~ø*¬€1Š*Üw äðÁþÿÁEðÿEÅ æ€ñ‹ *D¼)ô• Ÿ•þÿñ•*Dœ *Ä |@+1Š *wJ\+�, ,¬,º,Ô,æ,ô,---0->-P-±Š*W¬*H†@*w*±~p+xÉD*w*pÉ´  -†m=�ª)­ ý• ª)ñ• *wÔf¼)÷ >êÖ =Ф)=Ц)œÄñ‹* ÷ ʬ‚‡÷ Šw 0 &&~~è+ ÷ jw . @*w*îÈ ôŠŸ!&÷ ê, Â÷ °1Š*÷ R* Äe*Äå *Ÿþÿ±Š*&÷ @ñ€õœÈ*5*1Š*Äe©~`,*Ÿ•þÿ&÷ ñ€õvÈ*5*÷ ^wð1Š*ñŠ*Ÿ•þÿ÷±Š*f¼)÷ TéÖ ïñ• *1Š*ôý• ª)ñ• *âñ‹ *ý• *1145 SPL 7 .ENDC ; ; SET INTERRUPT LOCKOUT .ENDM ; +) INC COUNT(R0) BR MSKFI2 .PAGE .IFNZ MULRE ; MAGNETIC TAPE MULTIPLE DRIVE REWIND MUREW: CLR R2 ;USE AS DEVICE NUMBER COUNTER MOVB DEVNUM(R0),R1 MOV R1,-(SP) ;SAVE ON STACK BIC #MTMREW,R1 ;CLEAR ALL BUT DEFINED UNITS MURE1: ASR R1 BCC MURE2 ;BR IF BIT 0 WAS CLEAR MOVB R2,DEVNUM(R0) ;SET DEVICE NUMBER IN LIST JSR ,ŒdÄ Ä ÷…÷�š’™÷�˜’”7ŠŽ’7ŠŽ’÷‹Š’ý€…w r÷‹~’ý€÷5r’÷‹l’ý€÷�gd’÷�bs~mb’…÷‹V  <°dŒd„ „ !ø…ÃÄþÿ÷%&Ãå„ À&Äe N @ Ä üÀe0w &à óÀ• Ö Á|dÀÿÿ …÷‹ì‘I~ˆmý€7�è‘…÷‹Ü‘ý€À�Ø‘ÀE€ÿÀ¥÷‹Ð  w Ðÿí÷‹¾À¥ ç…Ä ã‡•w ¶ÿú×­ž‘• À•^w ¤ÿÀ•Uw œÿÆ^dwrú… ÷ÿÿn÷ÿÿj{~n  ‚7,|dX‚ÁRì|dÁ-P‚Ð ðÀD…w@€ 78À ô÷%(!ùƒ… �„ ú ÷%‚??‘‡Ã•oÖoÄ”ow Nÿ…_~xn÷%üõw ªþ…÷-ª)ñ• *Ø1Š *ý•U¨~Ø,ª)ñ• *±Š*Ìý•^ª)ñ• *ö}œ*ª)ñ• *ﱊ*ý• ª)ñ• *å1Š *wJþý• ª)1Š*ñ• *§ý• ª)ñ• * 1Š*@*w*žÇwZþ÷~P-ñ‹*w ÿý•ª)ñŠ*wÿw |îÁ�ŽÒœÁEðÿEÅ Dº)ô• @*w*\ÇB*w*TÇÊ €f¼)æ÷ 4çÖ DŸ¨)+ÄÅ€¡|¡ n¡ *¡@~È--ƒÃeƒl¡.ñ‹*B¦ÎEÀ–,I†²  ‘Ê €Ê5@Ä =‘ª)Cº)ó• Ê5@@w‚îÄ• ñ• *îý•^ª)ñ• *2 ïò äò �~@.Ê Þ�à ñ‹* ±Š*Ä•\ñ• *ñ’*ÐÄ’Î1Š*²  ‘1‘*Ä•\ñ• *Áñ‹ *./ PC,MTINIT BPL MURE2 BIC #100,R3 ;CLEAR INTERRUPT ENABLE BIS #REWD,R3 ;SET REWIND COMMAND MOV R3,@#MTCOMM ;GIVE COMMAND MURE2: INC R2 ;INC DEVICE NUMBER TST R1 ;HAVE ALL REWINDS BEEN ISSUED BNE MURE1 ;BR IF NOT MOV (SP)+,DEVNUM(R0) ;RESTOR RTS PC ;RETURN ; MUREWI: MOV DEVNUM(R0),R1 CLR R2 0Ú77Ðw ZÿÀ Àe0w àþÀ,w Øþæ²÷¬À°w pþ· ÷ÊœÀÆ…ÀÀ÷ºŒÓÄýÿ C”Ã¥ Ã¥$ × ž~ðnA‡Ãå ÃåÃå Ãå    ¦  ‚eÂ`„ ä�‡ÅýÿÂ\o ‡€âƒ ûË× Ãe ÃeÃe Ãe Ñ�Ò … è€Ð ‡@(ÚPÚP�~hoÆÿ@€ ODT-11R V003ABENÚPÚP *;/\ $G _<^,OWEBP@>SRC-FI!XASPMCFRBòÿÿ8r>rBr˜rêr"sDs3~ào–sês8r>rVrÊrs@sDs–st´<öqöqw úÅ€æêôæìôÄÈ `„ ¬[„ œWW TÄœOW LÄË1À±Š *f¼)÷ ^çÖ ¸½Š¤)½=‘ª)ñ• *fº)÷ BçÖ ²Ä•=‘1~¸.ª)ñ• *ò€÷ ¨È /Ÿ•þÿœw F/‚Á W<"3.ñ5€"36Aœ"3p�¬&‡¬"‚œ— !‚Ä ð0 ´ŠŸ!Cà Ń`0 ‡ˆ Ÿ•~~0/þÿð‡ð‡ð‡ð‡ð‡ñ5@"3ìA<3·& & ÷ 0øÖ ‡÷ N÷ ô&÷ Pî&*÷ "îž´*Ÿ•þÿ‡æ÷ (÷ Î4*A~¨/ Ã*a¡ ¡ ô*ÈŸ•þÿƒ‡fÁ Á �`D`Ä Ä %�‡‚ñ•*ñ‹*YD¾)ô•ð 1Š *ñ‹*(1Š *@*w*ÞÄ7ÖÄ5*õÎÄ*4~ 04 �¡ ñ• *=‘ª)f¼)æýÕ@¦)÷ ’ä23 ;DONE FLAG CLR R3 ;DEVICE NUMBER BIC #MTMREW,R1 ;CLEAR ALL BUT DEFINED UNITS MURE3: ASR R1 BCC MURE4 ;BR IF BIT 0 WAS CLEAR BIC #1400,@#MTCOMM ;CLEAR TAPE UNIT NUMBER BIS R3,@#MTCOMM ; SET UNIT NUMBER BIT #2,@#MTSTAT ;TEST TAPE UNIT REWINDING BIT BEQ MURE4 ;BR IF DONE INC R2 ;INC IF NOT DONE MURE4: ADD #400,R3 4~XppED W ð =0 W 80 æþÿŸ&÷ F­æ8ÿ÷ ­ž·,ÿìô—-�LÂp®²ŠŸ!° Ÿþÿð· ÿ*7ÿ÷„~ÐpüþÁ ù Ðo,Ä ÷ ʈ 0ðbïŸìôŸêôw ÅŽ‡æpfœóo÷ 壅 ð¥èð åÆeöþÿw èÄ& ÷ è²w·w ¢ª�S~Hq÷ „þ�Àzþ÷xþ’ƒæp÷ �¤Ö  Å ý âoðbïÅ 5÷ w«÷ 2¬& & ÷ ¶Ö ¬&& ÷ ®Á÷ "þ"�Àþ&÷ Ϋ€7 þè~Àq÷&ƒþìôÁ ù Ðo,ÍÄ Ëæpfœóo÷ ê¢Ö ‡w Ä÷ Òý�ÀÈý÷Æýà‚, ÷  æpæ5Ö J@*w*’Ä7ŠÄõ*õ‚Ä*3 1Š *1Š*ñ• *DŸ¨)ÄAË5@Ä =‘¤)fº)æð~˜0Òñ•*ñ• *ý•ª)f¾)æðÄÃ�Bù³Š *ÅÅ AŸª)7Š2ùóŠ*w0ó‹*@*w*Ä@*w*øÃð÷°ø÷®ø7 ¬øœÄ ô5@*~1"3w<3 ò5€"3|ò5"3xô5 "3„èôU "3=Ц)=Ф)�œ"3p�w`ø÷ ÖB—tÂe*Å Å Å @Àe*Åe*Ä÷ ø:JÒ  Ê~ˆ1Ä ÷Ÿ•þÿ÷ Þñ‹*3ñœ**ñœ**ñœ** EÅ µ**µ**µ**µ**µ**µ**µ**µ**Ÿ•þÿæ÷ îýƒó•ÿÿ*3Š*3Š* ¾~2Ÿ•þÿõ}�ª)f¼)æ67;INC UNIT NUMBER TST R1 ;HAVE ALL UNITS BEEN CHECKED BNE MURE3 ;BR IF NOT MURE5: RTS PC .PAGE .ENDC ; THIS IS A MAGNETIC TAPE CONTROLLER INITIALIZATION ROUTINE ; CALL IS JSR PC,MTINIT ; RETURNS WITH ; R3 = DEVICE NUMBER SHIFTED FOR A COMMAND INSTRUCTION ; R4 = 0 AND (N) BIT SET IF NO ERROR ; R4 = 1 AND (N) BIT CLEAR IF TIME OUT ERROR MTINIT: MOV #CLEA,@#MTCOMM ;ISSUE CLEAR T8÷ ¶¢Ö Ä ÷ Nÿw êÇé~8r÷  ‡÷ €÷ 0ÃUßdï‡ ð €÷ àÿÂbï—t�ðç`ïÄ ð  ÷ Æ€ð•€ÃU€ßdï… ‡÷ ®€÷ ÚÄ Âbï‚ ‡ %~°rÂEüÿÃUÃUßdï‡ ð €÷ ÂÿÞÂbï—tÊ�ðç`ï‡÷ \ €Ä Âbï‚ ‡ ÃUßdï‡ €÷ Öÿ¿Âbï—tó€‡÷ $€I~(s×7bïÃUßdï‡0 ü ‡ ß bï�÷ ú€ð �ð ° ÃU@° ð ÃU€ßdï… ‡ð ° ð ÷ð ° ò ÁbïÁ �+~ s÷ ¦€ð �ð ° ÃU° ð ÃU ßdï… ‡ð ° ð ÷ð ° 9÷ ÆâÖ 3Š *‡ó‹ *ñ³Š *÷ ì×-z÷æ¬)÷ ‡Á�¸÷EÅ =Ф)±Š *7Ѝ÷@*w*ŒÂðý•^ª)ñ• *‡¦öþÿê~x2Ÿ‡f&Á�z÷Á � ±Š*„�‡æ w z�¶ À  & D” Ä¥+ Ä¥-Ä¥ À óŽ À D”Äå0�¡ ‚Wq ‡a ‡À òÖ h~ð2 ¶vw "‡â ‚ ów Üèæ& æ & ÷ ÊïÖ w|é @€€@ö �¶Ö ~h3y€À &Š÷ 4ê€ð5¶Ö ‡æþÿßU0þÿ· �ëŸÃ ÿÁ€ÿæfæfæfæfæfæfæfæfF Ÿ�"þÿÃeÁ€ÿÑÑÑÑÑ{;O MAG TAPE CONTROLLER MOVB DEVNUM(R0),R3 ;OBTAIN DEVICE NUMBER ASH #MTDVS,R3 ; LEFT SHIFT MOV R3,@#MTCOMM ;STORE UNIT NUMBER IN COMMAND REGISTER BIS #MTINB,R3 ; SET INTERRUPT ENABLE ; CLEAR BACK SPACE FLAG AND SET DELAY COUNTER TO ZERO CLRB RES1+1(R0) ;CLEAR BACK SPACE FLAG CLR R4 CMP FUNCT(R0),#1 ;OPEN COMMAND BEQ MTIN3 MOVB @#MTSTAT,R1 ;LOAD WITH BYTE SIGN<ò œfÁEüÿ� †°�÷ H€ÃE@ÃUßdï‚ Á ð°A~t‡  ÁEüÿ� †ßEdïßPdïß5bï‚ ÃeÁ ð‡ß@dïœ×t ßdïÃU0Š ,Á—bï€‡Ä üìô&÷ J©… w[~�tubï ÄEüÿQ_fïp_`ï‡0÷ ûðbïæþÿŸ7úú ÷Èoôú¡7 îú¡7 èúÈŸþÿ òŠŸ!¦÷ üã‡p~u@€ Õ€4~€u=~à3ÑÑÑÁ ÿÑÑÑÑÑÑÑÑŸñ¥.!ñ‹.!ÁEàæ¡ f¡ f† æÀŽ�$�*f7æê7œæê Á æ÷ ÜêÆe† À~X4�ÿÁ°ÿ ¡ ¡ ¡ ¡ ¡ ¡ ¡ ¡¶ŽvË# Ú5¢4¢4) ERROR XXXXX XXXXXX XXXXXX XXXXXX XXXXXX ’~Ð4¬4¸4¿4Æ4Í4ÿÿ·øÿŽw &æø¿æö¿¦Åâÿ w æâ¿æà¿…æþÿf÷ ºè„ŸÍ æhÿ÷ „è7^ÿÃìéõ³ŠŸ!· œÿ Ÿ•þÿË~H5· ¿·š¿w ÌŽ‡� ô7 |ÿæ(ÿ÷ è…=wÿ ÷Œ4ÿ¡7 ÿ¡7 ÿŸ“þÿÄÐ4f&÷ ¦C÷ VÌ ú÷• >h]öbÆ|]��`‡Ž],�] L/P 1 PARITY ERROR L/P 1 NOû ¶]T READYö¾] L/P 1 ABORTEDhÒ]â\f]ê]n^ò^\,Ö]&f¦æ&fæêôæìô€÷ º 7¬P,ü]ŒÿÄŸìôŸêô…„ƒ‚�€Ž‡œ~,"^— ÂÉ Ä çÄ ä÷ hæþÿŸ6,H^È :&÷ ‚¿¦Ê\÷ T¿ž²Ê\ìô ö%�LÕ,n^ĪÀ´ŠŸ!0 ó Ä\$Ÿþÿ ð¥ð °,”^? EXTENDED .IFNZ DATUM ASH #11,R1 .ENDC BPL MTIN2 ; BRANCH IF READY BIT WAS 0 MTIN3: RTS PC ;RETURN MTIN2: MOV #11,R4 BR MTIN3 ; .PAGE ; PLACE BUFFER ADDRESS AND WORD COUNT IN CONTROLLER REGISTERS MTBAD: .IFZ $KT11C MOV DATA(R0),@MTMEMO .IFF MOV DTPAR(R0),@#772354 MOV DTVIRT(R0),-(SP) JSR PC,S@Œ~øu÷"÷ BÄÁÁEàÿ„ 7*7ZÀ8&9ˆð ~pvw®êh Àl&9ˆð wxêh »À¤&9ˆð wBÍ~èvh Àà&9ˆW üð wh À&9ˆð wР~`wh€AÿÅå ŸÍAñŠŸ!Ÿþÿ2~À5f÷ 2#Ÿ•þÿæ�4÷ ^ô÷ ÿ¸‡· þþæþÿŸ½÷ÿÿòþŸ•þÿ‡À‚ â�ÊÅøÊÕ0ƒ ÃE€ƒ ƒ À ô‡&æ¦f&MÖ €�‚ƒ„…'èd ü~86w Öÿ„…À06Ä �Õ•+Á•  â€d Á0B`•�È ôÄe0 ‘¶ w ¢ÿ–%‡Õ•- äÒ‹å÷ Œè0&¦Ÿæ„è÷ 俀ÂÀô°° ~°6° ðU€ðU€ðU€ ·ÀÈ·ºÈ·´ÈÂàô°,°.°0·ÄÈ·¾È·¸È˜‚€‡¦&æ꽟æè÷ ~æ€÷tÈð÷νˆÈðȽ*˜ÀåŸ~(7@6·¸½€‡Ï Ð Ñ Ò Ó 87:7ÿÿÿf7B ¶Æe…„ƒ‚�€& ÷ tÅw¢É0˜,º^Ÿþÿ£ˆ ŸþÿÄ�³ Ä\ŸþÿsÆ\3 Ô\3 ´,à^Ö\³Ü\sØ\3 Ú\÷ ÖÂD\÷ îŸ÷ ô ÂŽ,_w0w Ú¼ Åœó Ä\MœÂÜ\¦È\÷ ^¾€Z,,_ìôÁÆ\÷ ˜å÷ ŠÂD\÷ ¢÷ ¨Mæ,R_þÿÂÜ\Ÿ2È\ „ÄeÈ\¡ ¡ 2Ê\ÈŸ¿,x_þÿÄÔ\ôŠŸ!&÷ lù¬ æÔ\& °,ž_÷ ÈÖ fæ&æÔ\÷ ¤Óƒ…ÂÜ\Â÷ æÍ,Ä_Äò È\Âe(¦È\÷ ª½€ìôœ,ê_÷ Âð wVÿsÆ\³Ü\3 Ô\3 Ö\ÂCVPPA ; TO PPA MOV (SP)+,R5 ; LOAD PPA CLR R4 ; PLACE BITS ASHC #2,R4 ; 16 & 17 IN R4 .IFZ DATUM ASH #2,R4 ; SET ADDRESS MOV R4,@#MTSTAT ; BITS 16 & 17 .IFF ASH #4,R4 ; SET ADDRESS BIS R4,R3 ; BITS 16 & 17 .ENDC ; DATUM MOV DATA(R0),R4 ; GET BITS 0 & 1 BIC #177D ÀP&9ˆW üð w”h€ À„&9ˆð w`h›~Øw ÀÀ&9ˆW üð w$h€ Àü&9ˆW üð wèh¨~Pxþÿ À0&9ˆð w´h€ Àd&9ˆð w€h€ ÀR~Èx˜&9ˆð wLh ÀÔ&9ˆW üð wh€ À&9ˆEd~ 7@�*j�k�o�Ò~81~�8¹~9FD\Í,`sØ\3 Ú\÷ Î÷ ª÷ ÒM÷  3 Ä\æ|]÷ Ç,6`Ö M³ Ú\ó%Ú\÷ X÷ z÷ ¢Mæ�]÷ ÷,\``ñwèþæ¨]÷ N÷ V3 Ú\Ä|]&ô�`H,‚`æd÷ |Ö MC fÁÆ\ÂÜ\æÈ\÷ â¼€‰,¨`ìô÷ Ö …Äà\Å÷ ³ Ú\×,Ú\´),Î`æd÷ 2Ö ‡ðÖ …wfþæ&ff& ó,ô`ÀÒ]ÅÖ\AaÁes!Ø\B3 Þ\ DÔ! ! F,a3 Ò]³ Þ\ Ä% !3 Ò] ÷ ^Ä• Îå�,@a÷ R … s!Ø\ßÀ5Е sÖ\ÀìÒ]„ Ö „,fa…�€Ö ‡3 Ò]³ Þ\Ä ÷ G774,R4 BIS R4,R5 MOV R5,@#MTMEMO ; SET BITS 0 THRU 15 .ENDC ; KT11C MOV NWORD(R0),R5 ;GET WORD COUNT MOV R5,COUNT(R0) .IFZ DATUM MOV R5,@#MTWORD .IFF MOV NWORD(R0),R5 ; GET WORD COUNT ASL R5 ; BYTE COUNT COM R5 MOV R5,@#MTBCNT .ENDC RTS PC .PAGE ; DEQUEUE THE REQUEST MTDEQ: H~@yW üð wÔh) ÀD&9ˆð w h€ Àx&9ˆð wlL~¸yhþÿ À´&9ˆW üð w0h€ Àü&9ˆ· ÷ úÿýð ~0zwî7 êÿ‡öh€ ÀD&9ˆ· ÷ úÿýð w¦7 êÿ‡>h Àå~¨zŒ&9ˆ· ÷ úÿýð w^7 êÿ‡†h€ ÀÀ&9ˆð w$I@~€9È~ø9Þ7ÀêÂêÄêÆêÈê,:Ì@d‡<:ÿÿ&À@&À€& ¿~p:ævºætºf¦æ&f�¶ænÅŸÉ xŸ•þÿ1�ÀDœ7!vøk‚Ä "3ÅÅŠeÅ€ Bœ`— ]€ BœYµ 87V€ Dw ºN€È~è:ÃE€× /H€ ­JêÎ5øÝ‡,ŒaÅ êÄÕ¶ 6 & „`“3 Ô]Ž Ö ‡ð¥˜,²a ‡ð¥ùćß@ê‡Äê& i,ØaÄ5 Ä5Ä5Ö ‡– ‡Ö ‡ó Ž] 37,þaà\  ê÷ Ôúß ê êßâ\êßÈêK,$bÄ|]ô�`&æd÷ ÐÖ ‡fÄÒ]ÅBv,JbÀåÄÄ Ä Ä Äezb0ð0ŠÈ&÷ ,pb¾Ç…ÀÒ]‡ÃwÃwøÿÃwðÿÙ,‚bÅÀÒ]@aAa… !B@ÁÆ\…ÂÜ\w¬ü êõ,¨b‡f  ÅCqBa…à ‡„fÅh]æþÿŸ»,Îbõ 5 K MOV R4,ERROR(R0) DEC NMTREQ MOV @#MTSTAT,STATUS(R0) MOV @#PS,-(SP) ;SAVE CURRENT CPU STATUS REGISTER SPL 7 ;INHIBIT INTERRUPTS MOV (R0),MTFRST ;PUT NEXT GUY IN THRAED AT TOP OF QUEUE BNE MTDEQ2 MOV #MTFRST,MTLAST .IFNZ $KT11C CLC ROR MTLAST CLC ROR MTLAST .ENDC MTDEQ2: MOV #1,(R0) ;SET LIST RELh R~ {  ˆTHIS BUFFER OF DATA WILL BE USED TO TEST THE MAGNETIC TAPE 62CœSECOND LINE OF THE WRITE, REWIND, AND READ TES§~˜{T 62 CHARACTERS.INPUT BUFFERú~|õ~ˆ|M‡B‚W¬>1 4 @À R7æäÄŸµ `7†µ�`7  ƒ`f÷ ¢â„æ÷ tâ  —-�LÃÔãñ ³ŠŸ!° T75Ša7Ä~`;ŸþÿT:ñäþ ñÌ@ fæÖþ÷ ^ÙÖ wtwxw€wÌP7Ó$Áýf÷ æá�pV7Dw:¹0X7ð0¹Z7ð,¹\7ô ãK�Â*þ2 ´9+Âe^~Ø; úÅ B:À  Àå �ƒ ûÀe 1Ðò Àƒltd7… ôô<ôÕ@ -w’w�ƒœ¹9ÃE€ÿñ ÎÂe´9÷ @À ñ�— ~P<ÂåôÕ€ úÀE€À À `‚`ÂeÞ7Ê ãÀÕõ• b7õ• c7Å =$:= $:¦&÷ 4რ—v—tµ^7ÂEüÿƒPý&:‚=NŸþÿf÷ NÇ…Ž¤‡Ÿþÿ…Ž´ñôb‡1 ‡· Žú‡7 ˆú‡  ß _€ßà‚÷ ´H÷ ŠI‡.,cæþÿŸþ% f…µ� …ŸþÿŽ6 â".c‡Ÿþÿw¤±öeþ.c6 ‡n,Lc$,rc÷Eð„÷U0~÷Eÿ|÷Uv÷Eðj÷UPŒ,˜cd÷Eÿb÷U„\ ÷EðP÷U@J÷EÿH÷U„ù,¾cBw PÒÀ¦ÿ7  ÿ7МÿŠÀ   DLc € �,äc„  ‚ Â5øqLcÑ W !îÄ5 îƒ , d÷ ^ÿêƒÂíVÿ‚ ÂÂÝNÿ·Nÿ÷E€Jÿ„  ƒ Ã5òADY MOV (SP)+,@#PS ;UN-INHIBIT THE INTERRUPTS MOV SYSTEM(R0),R2 ;GET TASK NUMBER OF REQUESTOR BEQ MTDEQ1 ;BRANCH IF NOT A TASK DECB IOSTAT(R2) ;OTHERWISE, DECREMENT THE I/O IN PROGRES BNE MTDEQ1 MOV R2,-(SP) ;GO TO OVERLAY MONITOR SO THE TASKS CORE JSR PC,RELTSK ; CAN BE RELEASED MTDEQ1: RTS PC .END P}~}~x}@€ ÷€‚~ð}~h~Q(:‚œ%~È<:ÂUAµP^7CT:óvý æß}^7":… õ‹a7 �Ÿ•þÿw¢ß‰ ÷  ‰ À÷ ñ¥Ÿ•þÿ…„ƒ‚�·Ä··¾·€Ö ‡5ŠV:Ÿ•þÿ‡¶´~@=…„ƒ‚�·ž··˜·€& ÷ ¾æwúê��wâþôµÂôÅ€�Âùñ‹ �€œÀE€ÿæjŸ7 ¾ü[Ÿ•þÿñµ@ô‹!´€$~¸=t4Àe 4ô‹ò‹€ñµÀ1 ‡´åÀ ‡ +À5%÷ z2 ‚ƒƒlm €l ‚€m 44 Àe«~0>ÉÀ‡À ‡À ‡À‡À‡À$&Š÷ P߀Àe&æf÷ dß„÷ âôw fWtúÿÀ5?� R0dúqLcw äч÷U€.ÿùd,Âd ÷4›¢ÿ÷>›,›æ·”ÿ÷•ÿÿ’ 7ŠŒ wà÷þ,èd›‚ÿw â7ŽÆ^dÄyoÉow À 7xw J,ew XÄ�ZÿŒŒŒ7‘Þš7ŠJ ÷•ÿÿF ÷àÞš÷¸kT,4eÖš×!:e÷0wæÆ ÿ& ÷ ÿæÜšæÖšd,Ze÷•@šà D÷‹ A „ &DCƒcà ÷è Ä,€ew @w Ü„·Šê w þ  '  7ŠÖ Ä ^,¦e„ ‚ ¦&w Ä„‚À•\w ÄwXw Èw ‹,Ìe�Ä øfw Š÷•‚ €w ’7ŠŽ wtwh»,òew šÄ³o  Ä%Ãoû‚ÀEøÿÄ Äe^dS ** ;* +36 RESERVED ** ;* ** ;* THE RETURN ERROR CODES ARE AS FOLLOWS: ** ;* ** ;* 0 I/O SUCCESSFUL ** ;* 1 LIST ALREADY IN A QUEUE ** ;* 2 INVALID DEVICE TYPE T÷"÷ BÄÁÁEàÿ„ 7*A~à~7ZÀ8&9ˆð w®êh Àl&9ˆð wxêh »À¤&9ˆˆ~Xð wBh Àà&9ˆW üð wh À&9ˆð ›~ÐwÐh€ ÀP&9ˆW üð w”h€ À„&9ˆð w`e~H€hU@�‡w TÝæþÿ…æ ÅEðÿõ‹V:~¨>Ÿ•þÿwìÝõ•a7Å CT:ó�û Ÿ•þÿAV7DX7wZ7¶w\7¶ý5€":wVôµ@qô‹€wW¬f & ÷ ˜èÖ Â@P7DR7Cœà à ’~ ?Ä``… æþÿŸKÌ¡ ¡ ‰$È ‚ µ 87ùÂÿÿµ�`7B òŠŸ!Ÿ“þÿ¦÷ �ŸþÿW¬fff ÷ Øó… @À Ÿð T7€T:ñR:"~˜? õ‹a7 �ð T7€Ÿ•þÿwìÜŸ•þÿ5ŠV:‡Ä wTýŸ•þÿwDýŸ•þÿôÅ@BœÂEÀÿƒ×p ÂBmd7Ê $÷ �ýÀ b@… u¬`7wXýwˆûôµ~@òw þõæдæδff ÷ 0ó·À´·º´w ìõàÀ?@€ ý52":ý5*:V‚ whÄå$,f¬o÷ÀD Áuo÷ ôÀ=w T·ŠD À�= w HÀ�,>f6 w @À�/ w 8À w 0w 8  7� w ,df*7� w "7Š 7� ÀhoÁuo÷ XÄâÂI,Šfwð7Šæ  wèw (‚b‚ ‚ ·¼wúw ,°f‚øw �A�Á � � B`ï÷ €÷%’ÂŽ,Öf…Ö w|÷‹’û 7Š‚wr÷•ÿÿxwh·Šð,üfu ÄEøÿÄ 7|d~wh÷‹^ ÄEøÿÄ ,"gà t|dPà õôÿÿ|dIw ,Û×-É;,HgÂ% w   ÿÿÀ=w $ÀÁø7Ï,ng Ä í|dÀ=w W ** ;* 3 ILLEGAL EXIT TYPE ** ;* 5 ILLEGAL DEVICE NUMBER ** ;* 10 ILLEGAL I/O FUNCTION CODE ** ;* 11 FATAL HARDWARE ERROR, STATUS REG IS IN WORD 13 ** ;* 12 MAGNETIC TAPE TIME OUT ** ;* 14 WRITE COMMAND FOR REAL WITHOUT WRITE RING ** ;* X ÀÀ&9ˆW üð w$h€ Àü&9ˆW üð wè/~À€hþÿ À0&9ˆð w´h€ Àd&9ˆð w€h<~8�€ À˜&9ˆð wLh ÀÔ&9ˆW üð wh€B~°� À&9ˆW üð wÔh) ÀD&9ˆð w h€ ÀYðŠb7 ý":B^7‚ ÂEüÿ ‚œ:wüÀ ÷ œB::2rœ2’~ˆ@r": r*: ¦÷ bôt":t*:ý":ôÅÀw>þ… ÷ Tõ‹a7øÅ w@þB@Å °ŠV:ð•ÿÿa7AV7DX7wZ7ü³w\7ø³ðŠc7 ý":~A¦æJù÷ ÒÓÖ §À °1‡GÿÿEMçw Èô暳昳æþÿ�ÀÉŸÉ KŸ“þÿ€ Dœ7!¬ñF‚Ä ×~xA"3B�ÅÅEðW¡<Åq‘€ Bœ5— 2€ ñ¥-‡€ Dw8³€ — A!1 Ÿf÷ Ü„æLÿ÷ ØÛ7Bÿ —-�LÃ6Ýñ ´~ðA³ŠŸ!· (ÿG‰ ·“ü½÷ FE7Šÿ·“î½æÿ÷ ZÀÀe0w úÀ,w òÂ%t,”gÀÎ@w Œk÷‹ÌÄÊüÂeÀ=÷ö,ºg¤w Â@w fw¬üw’·Šºw¢À=w ¤ó,àg w  ÿÿÀrw 8AÀe0w „À,w Ÿ,h|æV÷PÀTw ·D-À ÷<@7ìk,,h|d:€ â÷(÷‹6 À4üÄ,üÃ*üw ä,Rh÷ ðÀ?w "7 üw 7Š7Š7Š ,xh   w À%0 ‚À%7‡ÀEøÿÄ Ä Ä `‚ ð�,žh 1 —o� W Ö†ø÷‹Ú ÷‹·ÄmÊ7Šõ ÄhÈÁ yÌhiiipiòek€išf|i{ÞhÖiúfJj–j’jèitk¬f[ ** ;* COUNT =NUMBER OF WORDS READ BY THE READ COMMAND ** ;* =NUMBER OF RECORDS (+-N) TO SPACE ** ;* =NUMBER OF FILES (+-N) TO SKIP ** ;* =UNUSED FOR ALL OTHER FUNCTIONS ** ;* ** ;* PROGRAMMER: 67 ** ;* DATE 10.0\°~(‚x&9ˆð wlhþÿ À´&9ˆW üð w0h€ Àü&9ˆ· ~ ‚÷ úÿýð wî7 êÿ‡öh€ ÀD&9ˆ· ÷ úÿýð w¦7 êÿ‡>hã~ƒ ÀŒ&9ˆ· ÷ úÿýð w^7 êÿ‡†h€ ÀÀ&9ˆð w$h{~�ƒ   ˆTHIS BUFFER OF DATA WILL BE USED TO TEST THE MAGNETIC TAPE 62C]pÛ�DwȲwüþ÷¾²øþ €Â ÷ôþ÷òþCœÃÂP·ÔþCœÂÜ6A·Òþ7Ðþ7 Ìþ7Êþ÷•ˆ~hBC¶þ7 ºþ÷• ³þ÷¨þf¼÷‹¨þŸ•þÿwÚW¬ Ÿ•þÿ·R²·L²w ~󎇟“þÿ¶·:²·4²w fó& ÷ fáw”åw Ùžæþÿ÷•TþÁLþ÷Jþ ²÷ ~àBHþI�÷ ú» �÷52þ÷-ò»:þ�ææ÷5þ6  ·åþ·eþwXÿ÷-Æ»þù€éwÄ÷-þþã÷ÿÿîý÷ìýàý÷èýœ»æäý÷ „Úƒ —v~XC—t÷E0Àý·P¼ýÂÆýÂEüÿƒP÷r»Ò÷ h»Q� ÷•^»W¬f & ÷ äÖ ÄAÃAŸKÌ¡ ¡ ÉB òŠŸ!·“:¼¦÷ .·“0¼1"~ÐC W¬^´fÞf°,òhg¤gÐg4hRhØgfbeFeƒ·Šh7Šc´÷J ,iD ÷@ 7<76÷%.Ä*„ î‡W,>iÀ"ÀŸw â÷%‹À•=w (ÀŸw 1,diÀ• w wúþ÷ ÖwêþwÞþ·Šì÷ Þù÷ À#,Ši÷ Þ÷ÒÎ7ŠÒ÷mÄÄ÷ÀÀw ºæ´÷,°i®À¬w ¼·¢Ö%À/w ¶¯À\ú©,Öi÷ ˆÔ÷ j÷í~~ÜÀÄoÄ Ã … L‡Å ÄeŒdï,üi  !šdB†Ô ù!šd=‚L® !6‚¶,"j4Œd4 žd¤ ÀÄo!ž‚4Œdô°d4 ždÔ =,Hjô÷%À w *_4.72 ** ;* ** ;* GULF ELECTRONIC SYSTEMS ** ;* ** ;********************************************************************** ; .DEF MAGTAP,MTINT .REF PUSHR,POPR,ACTIVE,$CTASK,IOSTAT,DSPTCH,RESTOR,RELTSK .REF UNSPND,QSAVEI,PPASV5,PPASV6,SVPPA,SAVE `œSECOND LINE OF THE WRITE, REWI~„ND, AND READ TEST 62 CHARACTERS.INPUT BUFFERˆ~€„}~ø„~p…af¦÷ vïŸ÷ 8ý�wþw�þ÷ 꺂�÷5âº÷ܺ÷ŠýwþÀÎÁý÷ 0³÷58¼º÷¶º÷5�®ºîè7 ýwÜþüæ8A÷ ¸ð~HDw6þ1ÀŒº‡nDu~ÀD€d88!A$GªI²IºI>~8EVEVE@bà ÅíÅ Å @w Â@,nj€ ‡À%€ÿ À%÷ àw ¨· ØwÜýwÈý� 7,”j à ù÷ÀÂÎùÄÈùD · Æù¼‚€Á & ,ºjC@AƒEPA&f¦æw ’€w  À/w ¤,àj€w Hƒ‚�„w ÞÒ Û åƒ`ƒ ƒ Å ßÒ,kÀEÿ�¯À € € €` Õ÷‹V·à µ÷•F… Ð,,k°‡Å w8ù÷•àÄ”w °7Š-÷U&ù÷‹"÷E,Rkùw b7Dæùæù æùÎE·Œ”÷‹ü\,xkŠÀ�òÀ‹† „à pžd÷•àj”w V×­Ôè,žkÏ÷‹ÊÌ÷•àR”·Š¿÷U¸øÐ·°ø·®ø÷•#,Äkªc.REF TSK.PC,QTIME,DQTIME,IOCOMX ; ; M A G T A P E Q U A T E P A R A M E T E R S ; DATUM = 1 ; 0 FOR PEC, 1 FOR DATUM MULRE = 1 ; 0 FOR DELETE, 1 TO INCLUDE DEVICE = 2. ;LOGICAL DEVICE TYPE TYPE = 3. ;EXIT TYPE $EXIT = 4. ;I/O COMPLETE ADDRESS DEVNUM = 6. ;DEVICE NUMBER LEVEL = 7. ;I/O PRIORITY ERROR = 8. ;ERRdŒ~è…¦†2€i~`†2ˆÇlÅàÄþÿÀÔL‘ß $%&ß ˆ€ðµ @ðµ -~؆ðÅ ð• <ðÕ Šðµ  ðµ@ Ò  ðµ ’$ðµ Ò ¦ & æ& æä"&& æ¢'Þ Ö L‘ðÅ ð‹ ðµ ~P‡ðÅ &ß ðÖ Ô ßb�Ö÷Ôd�eŠ~°Ew ,ð w $ðÀ w ðÀw ðÀ�f÷ Â×…1�æþÿÀŸÉ FŸ“Ò~(Fþÿ€ ñ%?†ñ%ô;€ ÷ — 5‚€ ƒœEÃEàÿñ� à ó "3*�€ —-�L%Ã´Ø³ŠŸ!ñŸæàý÷ 0×^wÖý· ¢þŸ•þÿw �ïöþÿ& ÷ ŠÝæX(&~ FæþÿŸ÷ vþŸ•þÿ‡w¬· fþŸ“þÿæ–ý÷ ÂÖ�wtþ÷®pþ÷ „Ÿ· |ó òÕ€EŸ“þÿ@œÀ x"EÀ$&Š÷ °Ö€Ð &æÅLý÷ HìwLÀ[~GwfÀw^ñ‹€ ÷ tñ÷öý7ôý@÷ ¤÷bGþ÷•ýý7Šþ÷äýþæDE÷ ó¥÷ þ÷ ÿ ÎýÖf7¸÷‹¡·w @÷‹˜ø€Å��øÅ�Œø¯ŒŒ",êkŒŒw‘ ”Åvø÷‹t�å wjøÄt!ŒdÄ Ä Ô,lúw ¼w JÄŠoËow ž@÷e>ø%Ä•t•,6lŒd7‘2ô ždªôždw „ÀBw .À�Àe",\l`€ w À;w ÷ðÄ�úŒdw úwàûž,‚l·â·à÷Æjdf&æ¦fæÌæ €Ö ·Â�Ô,¨l‚ƒ„…ƶ÷æ°€Ä4Œd°düüŒdÄ Ä ·,Îl÷…÷�š’™÷�˜’”7ŠŽ’7ŠŽ’÷‹Š’ý€…w r÷‹“,ôl~’ý€÷5r’÷‹l’ý€÷�gd’÷�bb’…÷‹V b,m <°dŒd„ „ !ø…ÃÄþÿ÷%&ÃågOR PARAMETER SYSTEM = 10. ;RESERVED (SAVE TASK NUMBER) DATA = 12. ;ADDRESS OF DATA BUFFER DTPAR = 14. ;KPAR6 VALUE FOR VIRTUAL DATA BUFFER ADDRESS DTVIRT = 16. ;SYSTEM VIRTUAL EQUIVALENT OF DATA BUFFER ADDRES FUNCT = 18. ;FUNCTION CODE NWORD = 20. ;BUFFER SIZE IN WORDS COUNT = 22. ;SEE DEFINITION ABOVE STATUS = 24. ;HARDWARE STATUS REGISTEh7 b�ß $% ŠšP2€w~ȇ(~@ˆÐ AC:  ? ILL CMD! ILL PAR! I~¸ˆNON-QUIESCENT ENâDSæQUìXXòXTîTMØDTREºCMAS.LD4ID@FLNTC:BR†XB–PTêEX.ˆˆæ´ ˆ÷4ÿ÷–(ÿ7 0ÿæ„i~0‰ ˆ÷ i÷ æ@ }òµ@E` ƒŒD„xDáþ~�G o‚7˜ý2`xD‚ æ\D÷nDÄü7 ¾ü÷ ´ò÷ÒG’ý÷•�ý÷•—ý÷tý˜ýæDE÷ ”ò‡÷ Ž÷ š÷ |ÃZý÷ 8÷îG\ý‡÷ r÷ ~÷ `ñ‹ €Ã(ý÷ Ã~HæE÷ Tòñý1ŠòÅ€E@&& ÷ vßÎþÿŸw"ü ÷XDü¡7 ü¡7 üÉðŠŸ!Ÿ“þÿ&÷ šŸ÷ Æü7 ¶üw>þwHþ‚ 7 Àü7ºüÀÖü ~€H÷ ÷´ü÷¨H¸ü÷•µü7Š¿ü7 ÂüæDE÷ Æñ‡÷ ¸÷ ÄÃdE÷xzü÷ œ÷`rüË ÅœÅE€ÿ… À`üZó-\ü÷Rü÷Hü÷rü@üÃe ÷ <ü£~øHä· bü÷-^ü:üÌ÷ ,ü ƒŒD„xDáÀü À1 wjþ‚ ÷ ü8÷TIjT,@m„ À&Äe N @ Ä üÀe0w &à óÀ• ½,fmÖ Á|dÀÿÿ …÷‹ì‘ý€7�À,Œmè‘…÷‹Ü‘ý€À�Ø‘ÀE€ÿÀ¥÷‹Ð  w ,²mÐÿí÷‹¾À¥ ç…Ä ã‡•w ¶ÿú×­ž‘• R,ØmÀ•^w ¤ÿÀ•Uw œÿÆ^dwrú… ÷ÿÿn÷ÿÿa,þmj  ‚7,|dX‚ÁRì|dÁ-P‚Ð ðÀDR,$n…w@€ 78À ô÷%(!ùƒ… �„ úl,Jn ÷%‚??‘‡Ã•oÖoÄ<,pn”ow Nÿ…÷%üõw ªþ…÷Ú77Ðw ,–nZÿÀ Àe0w àþÀ,w ØþkR RES1 = 26. ;RESERVED 1 RES2 = 28. ;RESERVED 2 RES3 = 30. ;RESERVED 3 ; MTDVLM = 1 ;HIGHEST LOGICAL DEVICE NUMBER (0 & 1) MTMREW = 177774 ;COM OF DEFINED LOGICAL UNITS MTREP = 18. ;MAG TAPE REPEAT COUNT (4N+2) ; .IFZ DATUM MTWORD = 167540 ;WORD COUNT REGISTER MTSTAT = 167542 ;STATUS REGISTER MTCOMM = 167544 lÿîŘDêÄå�Ä ÃS# Ó Ë û÷Øôþæ„ ˆÙË ÖÕ Ä Û Å Ò÷æØþñ÷ ! ³Ä ôE "³‡W¥, Ä !‚÷ ÊÅ ‡È~¨‰Ö  ‡÷ ôÅ Ä ! 7L zþ÷•vþæx*ˆôŠŸ‡÷ ²ÿæ& && ˆÖ ߈æöæóæðÔÀ0Š.¡&éW¥,W£BW£A½~ ŠÅ ÷ hÿÄ À! ½æÕ ûÄÿÿøÄþÿý±æjˆ÷ Øý«‡©÷àý÷•Üýæx*ˆ‡æ7 ²ý7 °ý7 ®ýaÃjc™Ä ýædˆ„Ö  ƒ‡#~˜Š*Bv† ÁÁÁW¥,5Ä 3!0‚÷ ¢ÿÅ ,!)!ˆŸ&Ä ô%ŠŸ!„ yÚß•àþÿô¥.¡4Š.¡Šþÿ‡ß•àþÿmü÷• ü÷•ü÷èûüæDE÷ ñ‡÷ ÷ ÃÒû÷ÊûómÎûóíÈû’~pI÷zIÐû‡÷ æ÷ òñ²û w$þ3 ¯7¢û÷˜û÷Âû�ûÅÀwØ÷4J€û÷RJxû÷ZJpû@÷ ÷îIzû÷•wû÷•û÷\û€ûæDE÷ |ð1~èIŸ•þÿ‡÷ r÷ ~ÃBûË Hÿ .ûó‹ €@÷ ”ÿ ûæE÷ Hð÷$J&û‡÷ <÷ H÷ *wâý œÂE€ÿòµ@Eól3 ‡óÕ€‡óÅ€ä~`J‡‰ Ÿ•þÿ1�w °ëއ÷ Ôú‡Ö À1�÷ ÐwŒýÀ 1�÷žJ¬ú‡÷ Âñ Ã*þÀ €ÄE€Wq Ca 3 ´9„ Ãe ù‡À Åœ¹9ÅE ~ØJ€ÿq¡ òÃe´9‡¦À 7 Lú —r næ²÷¬À°w ,¼npþ· ÷ÊœÀÆ…ÀÀ÷ºŒÓÄýÿ C”ª,ânÃ¥ Ã¥$ × A‡Ãå ÃåÃå Ãå   ™,o ¦  ‚eÂ`„ ä�‡ÅýÿÂ\o ‡€âè,.oƒ ûË× Ãe ÃeÃe Ãe Ñ�Ò … Toè€Ð ‡@(Ö,do ODT-11R V003A8 ŠoBEt,�o *;/\ $G _<^,OWEBP@>SRC-FI!XASPMÚ¶oCFRBªÄoÁ,^dÿÿÿÿÿÿÿÿ„dÿÿÿÿÿÿÿÿ"Èoo;COMMAND REGISTER MTMEMO = 167546 ;MEMORY ADDRESS REGISTER .IFF MTSTAT = 772520 ; STATUS REGISTER MTCOMM = 772522 ; COMMAND REGISTER MTBCNT = 772524 ; 2'S COMPLEMENT BYTE COUNT REG MTMEMO = 772526 ; MEMORY ADDRESS REGISTER .ENDC ; ; COMMAND CODES FOR MAGNETIC TAPE CONTROLLER .IFZ DATUM READ = 1 WRIT = 2 ;WRITE BUFFER WRFM = 4 ;WRITE FILE MARK WEXG = pô‹.¡­H~‹.¡ Šþÿ÷ô0ýæ„ ˆ ‡ô•.¡Šþÿ‡&& & & ˆÖ òê&ˆ‡ HH:MM:SS MM/DD/YY “–™§¤¡�Ä÷ ìþÅ &Åe‰~ˆ‹À õI ƶÿ‡·°ÿW¥, !ôÀ÷ Æÿ1ˆÖ í‡ÀÁªÂŽw(·€ÿW¥, !ÜÀ÷ –ÿ0ˆçÀÁ°Âœ÷Eÿ7Pňr~ŒædˆDÔ�üÔ�üÅ öÅ ·6üæ„ ˆ‡q~xŒq·@ú×p ÃedE÷6úCœ ÷�8úà ÷œ"3@ú· <ú‚‡Kó úsœ ³�ñ‹€óÕ€s òµ@Eóàùì~PKól‡BœÂE€ÿ‡ÁØù÷Öù|©‡wNwT÷ žÓûö5À÷¦f&F ‚ÂU€ß ÿèô�a €Õå ;âÁpÓÁEàÿ¼`MÛœœM7œØMü~ÈKªÿÀ 7èL ÿz@WtüÿÀEðÿÁEðÿÂå·†ÿÀ ’~€��‚��·,ÓÆhÿæfÿ¦ææ�`ÿœþÿþÿ‚“\ÂE€ÿ‚aƒœ×tüÿÃEñÿß ÿêôƒÃEà×túÿi~@Lß`êôÊEÀÿÊU Ö‹€‚ƒœ ×tüÿÃEñÿò ÿƒ ÃEà×túÿò`Ÿìôƒ ÃEÀÿÃUÀòƒ‚Þ ŸÆšÒ&&7Ôþ7ÎþÁ 0C~ÀeÀEà&À”~¸L¶þÁròÿÿZr`rdrÂrsPsrs¨st-äoZr`rxrör8sns”s¨s6t´<@,pøqøqw úÅ€æêôæìôÜ,&pÄÈ d0¬]„ œYW VÄL,LpœQW NÄID pW T,rpð ?0 W :0 æþÿŸ&÷ B­æ4ÿ÷ X,˜p­ž·(ÿìô—-�LÂl®²ŠŸ!° Ÿ,¾pþÿð· ÿ,7üþ÷„øþßRõù Ðoã,äp,Ä ÷ îˆ 0ðPõŸìôŸêôØ, qw ÅŽ‡æpfœóo÷ º£Ö ð¥èð ,0qåÆes 10 ;WRITE WITH EXTENDED GAP SPCF = 20 ;SPACE FILE FORWARD BCKF = 40 ;BACK SPACE FILE SPCR = 100 ;SPACE RECORD FORWARD BCKR = 200 ;BACK SPACE RECORD REWD = 400 ;REWIND ENAB = 1000 ;ENABLE INTERRUPT OFFL = 2000 ;OFF LINE CLEA = 40000 ;CLEAR CONTROLLER MTDVS = 14 ; SHIFT COUNT MTINB = 1000 t}~ðŒ~h�Œ~à�~XŽu´þßU0þÿ† Ö €�‚*³Ö ØæBÒ¦÷ |Ñ^ä"%¢'$%j&|%Üð0*Â*HA:6”25l:Ö]XV`W‹~0MäEìEöE�6d:ÚLø6d;¶Fp¬~¨M!0033 ˆˆˆˆˆˆ ˆˆ#~ Nÿÿÿÿvöþÿw àÄ& ÷ à²w·w šª�÷ |þO�4,VqÀrþ÷pþŠƒæp÷ ˆ¤Ö  Å ý âoðPõë,|qÅ 1÷ ^¬& & ÷ ¶Ö ¬&�,¢q& ÷ ®Á÷ "þ"�Àþ&÷ Ϋ€7 þ÷&ƒþ¾,ÈqìôÁ ù Ðo,ÑÄ Ïæpfœóo˜,îq÷ ê¢Ö w¤ªw ÄÀÌý÷Êýä‚ , ÷ "l,rÄ ÷ Ĭæpæ÷ ª¢Ö & Ù,:r& ÷ bµÖ ¬&& ÷ Áw ÈÇ÷ D,`r ‡÷ €÷ 4ÃUßRõ‡ ð €÷ àÿ0,†r×7Põ€9ÁTõ� p`Ä ð ÷ Ä €ð•Cw ; INTERRUPT ENABLE .IFF OFFL = 0 ; SET OFFLINE READ = 2 ; READ RECORD WRIT = 4 ; WRITE RECORD WRFM = 6 ; WRITE FILE MARK SPCR = 10 ; SPACE RECORD BCKR = 12 ; BACKSPACE RECORD WEXG = 10 ; EXTENDED GAP SPCF = 10 ; SPACE FILE FORWARD BCKF = 12 ; BACK SPACE FILE REWD = 16 ; REWIND MTDVS = 10 ; SHIFT COUNT MTINB = 20101 ; INTERRUPT ENABLE CLEA = 10000 ; CLEAR CONTROLLER x›~ÐŽ#~H�ª~À�2~8�y~˜N[¬N¬NæN¬N ÿÿ[OOBOO º~Oÿÿÿÿ&~ˆOÿÿÿÿ®~Pÿÿz,¬r€ßÿÿTõÃU ßRõ… ‡÷ ¦€÷ ÖÄ ÂŸ,ÒrPõ—t � ÂEüÿÃUÃUßRõ‡ K,ørð €÷ ÀÿÝ×7Põ€9ÇÁTõ� p`‡÷ P €g,sÄ ÂPõ—t � ÃUßRõ‡ €÷ Ôÿ,Ds¼×7Põ€9¦ó÷ €×7PõÃUßRõ‡0 �,jsü ‡÷ ö €� ÃU_TõßRõ‡ÃUQ,�s ø€A ÁgTõp ‡ ÁPõWt�÷ ›,¶s´€ß€Tõð �ð ° ÃU° ð $,ÜsÃU ßRõ… ‡ð ° ð ÷ð ° 4,tò œfÁEüÿ� †°�÷ P€ÃE{ .ENDC ; ; FIRST AND LAST WORDS FOR LIST THREAD MTFRST: .WORD 0 .IFZ $KT11C MTLAST: .WORD MTFRST .IFF MTLAST: .PACK MTFRST CDTLST: .WORD 0 ; USED TO SAVE CURRENT LIST S.V.A. MTPAR5: .WORD 0 ; USED TO SAVE CURRENT LIST PAR5 .ENDC NMTREQ: .WORD -1 ; NUMBER OF (REQUESTS - 1) IN QUEUE ; ; MAGNETIC TAPE FUNCTION JUMP TABLE MTFCT =.-2 .WORD MOPEN ;OPEN .WORD MCLOS |¹~°�A~(‘È~ ‘P~’}3~xPÿÿÿÿNRN¬NOFO„OÂOP>P|Pÿÿÿÿÿÿÿÿÿÿ8N …~ðPÿÿ€¶Ž¦6 öþÿÿ~hQÁ ƒ÷ è ð‹3�wRB¸Pw…… wÂe÷ŸÊ Ÿ�þÿëæ÷¾÷€¼÷ ºŠ²²°ŠÍPÅÅ þ÷ žp�÷‹˜€wŠ2~àQÃŒ÷†÷„÷ œÊÕÄŠ„ ÄmØþÅÅ þ÷ fT�Ÿ“þÿð‹3~@ÃUß­,(tRõ‚ Á ð°‡  ÁEüÿ� †ßERõß@m,NtRõß5Põ‚ ÃeÁ ð ÷ x‡ßRõœ>,tt×tßRõÃUA 0Š ,Á—PõWt €°,št‡Ä üìô&÷ $©… wuQÛ,Àt ÄEüÿQ_VõpÅ E _Tõ‡0Ô,æt÷ æúðPõæþÿŸ7Îú ÷ÈoÈú¡7 Âú¡7 ö$ u¼úÈŸþÿ òŠŸ!¦÷ Ðㇳ,@u@€!€u¦fu€�,€v÷"÷ BÄÁÁEàÿ„ 7*7ZÀ  ;CLOSE .WORD MREAD ;READ .WORD MWRIT ;WRITE .WORD MWEOF ;WRITE FILE MARK .WORD MREWI ;REWIND .WORD MSPRC ;SPACE +-N RECORDS .WORD MSKFI ;SKIP +-N FILES .IFNZ MULRE .WORD MUREW ;REWIND MULTIPLE UNITS .ENDC ; MAGNETIC TAPE RETURN AFTER INTERRUPT JUMP TABLE MTRET =.-2 .WORD MOPEN ;OPEN .WORD MCLOS €×~�’_~“æ~€“��E¸P5ôÿÅæP&÷ ^Ë„Tþ€Äå:̃Cì¸Pô�4�ôLZ ô• Ãe0ôŒ~XRÃe ôô„¢…Å tL 04Š3Äe&Ê‹€÷ Öç÷ àçô �ñ• .!Ÿ•þÿ‡ö ¶ �1Š.!Ö óÁe8f÷ \ �D„ À w*å~ÐRB¸PæŸ2¬ÍPþÿ+ð‹ÍP €ò ôÿ ÷~÷U€|÷ z²ŠÿÿÄ…÷ d„ôÿBÁ Ä w²þÊ•Ÿ“þÿ&÷ \Ê„wÿB®Ÿ�þÿ…… wbÿ—¢µ~HSÂeõŸ—¢îʲ²w(ÿð‹3‘€Ÿ“þÿÄ  ‹ô‹3€Å A¸P E… E’W¡ÁeõÄ é… CÝq" EÜÅ fŠ÷ ~®~ÀS…EÀÿÅ éÅp¡ÛPåŸÊ‹w¶þ‚¦v8&9ˆð w®[,¸vêh ÀlC,Þv&9ˆð wxêhü$w »À¤&9ˆð wB½,$wh ÀàI,Jw&9ˆW üð whx,pw À&9ˆð wÐñ,–wh€ ÀP&´,¼w9ˆW üð w”hž,âw€ À„&9ˆð w` ,xƒ ;CLOSE .WORD MRREA ;READ .WORD MRWRI ;WRITE .WORD MRWEO ;WRITE FILE MARK .WORD MRREW ;REWIND .IFZ DATUM .WORD MSPRC ;SPACE +-N RECORDS .IFF .WORD MRPRC .ENDC .WORD MSKFI ;SKIP +-N FILES .IFNZ MULRE .WORD MUREWI .ENDC MTIMV =.-3 ; TIME OUT VALUE IN SECONDS .BYTE 5 „n~ø“ö~p”}~è”~`•…E’ÈW¡ÅEõ‹Ÿ!ô÷ ¼Ÿ“þÿf÷ fÒÖ ó /Ÿõ•.!ñ µŠ.!Ÿ“þÿ³Äÿ3�Ãÿó•óÿó•ËÿóTYÌÿÄ~8TÄeðÿ3Ôÿ3Úÿóe Úÿóœ ØÿÃeÈÿæ÷ æó  w.þ ŠÃeÀÿÄÁ wÂýA÷ `w&�Žæ—þÿ÷ LŸ1Š.!Á 1 Šð‹3^€7ÀÿÈ÷Æ÷ ø~°T ðŠÍP þ÷ °K�Ÿ“þÿÀÁð‹ÍP�B¸Pð‹3 €ƒƒ à ÃE€ÿÂeõ‚øÿÊ‹€ Ñ  äw�ýŸƒÙÃE€ÿÕŸƒ’Òƒ÷ 4œ~(U÷B÷€@÷ >Ãà þ÷ 0 �÷‹*€Ÿ“þÿð‹3Î�Ôw†üÁ B¸P÷ (�„ôÿ‚øÿ—¢ôÊÕ&÷ È„Ÿ“þÿÁ w¦üò%äÿ¦Îeäÿ÷ ~ UNÀ†h ÀÀ&9ˆ�,.xW üð w$hY,Tx€ Àü&9ˆW üð w,zxèhþÿ Àì, x0&9ˆð w´h€6,Æx Àd&9ˆð w€©,ìxh€ À˜&9ˆð V,ywLhÏ,8y ÀÔ&9ˆW üð w®,^yh€ À&9ˆW â‡; READ .BYTE 5 ; WRITE .BYTE 5 ; WRITE FILE MARK .BYTE 180. ; REWIND .BYTE 5 ; SPACE .BYTE 60. ; SKIP .IFNZ MULRE .BYTE 1 ; MULTIPLE REWIND .ENDC .BOUND MTTLI: ;MAGNETIC TAPE TIMER LIST .WORD 1 .WORD 0,0,0 ; RSVRD 1 TO 3 .BYTE 2 ; TIMER RESOLUTION .BYTE 20 ; TIMER OPTIONS (J) ˆŒ~Ø•~P–›~È–#~@—‰Ö ò‹ÿÿ¯¦ôÿ÷ ÖÇ·¸ ÷U¶ ÷ è 2Šÿÿ2 ôÿwêþæ—þÿÁLÉ÷ 4 ð‹ÍP3ƒ’à 0À ¸P€ Ÿ÷ ˜÷ rfƒøÿ×¢Ã׬.!÷ xi~V÷ Rð�CƒàÅeÀÿõ�‚øÿ� w´ý÷ PÞÁÚÈ÷ �´ ñ•.!wDü÷ ÈÈ5×-¾È1æþÿ怟׬È÷ žÍÁöÿñ•.!ŠþÿæX(& & 1~�V÷ Fð‹3�÷ <ŸÊ•ñ•.!Á À À <pŠ>pŠ<Ö ·•6©‡…CÀÿÀð‹3€ Á B¸P �� ÁE€ÿÂeö€ êÎ Z~WAÆ çÍ•Aw²Ÿ�ÁE€ÿ�Aœq"ÁEÿC Ãð ÛP Ö A÷ dŸ“þÿŸ�þÿ¾Ÿ�þÿÍ÷ ÀÇw ªÞÁ²ÇW  æŠ,„yüð wÔh)±,ªy ÀD&9ˆð w Ä,Ðyh€ Àx&9ˆð w,öylhþÿ Àé,z´&9ˆW üð w0hÐ,Bz€ Àü&9ˆ· ÷ C,hzúÿýð wî7 êÿ‡öh9,Žz€ ÀD&9ˆ· ÷ úÿýÔ,´zð w¦7 êÿ‡>hÞ,Úz ÀŒ&9ˆ· ÷ úÿ‹ .WORD 0 ; RESERVED .WORD MTTIM ; OPTIONAL (A=1) .WORD 0,0 ; OPTIONAL (F=1) .WORD MTTIM ; OPTIONAL (J=1) .WORD 0 ; OPTIONAL (T=1) ; ; MACRO DEFINITIONS ; .MACRO SAV.56 .IFNZ $KT11C MOV @#$KPAR5,-(SP) MOV @#$KPAR6,-(SP) .ENDC .ENDM ; .MACRO RST.56 .IFNZ $KT11C MOV (SP)+,@#$KPAR6 MOV Œª~¸—2~0˜¹~¨˜A~ ™�þÿŸ÷ \Ê•¬~€WŸ•þÿw –Þ‡�Žæþÿæ÷ <² —¢Ê•ð‹3€wÿÀ ¸PÃeäÿ3 ææþ÷ ½Ö ñ•.!Ö w¾úÊ•ð‹3èô�6 æþÿ@œ†~øW"÷ þ € ÷ ôüð‹3ĸPÄeäÿŸô ¶ Úô•ÿÿ Ÿ“þÿ&÷ º½Ö Á ŸDŠÊå2 � ñ•.!à &÷ .Å æ>÷ $Å3>·—¢…b~pX � C÷ â& fæ€ðŠÍPw"ù2 ¥�Žæþÿ@œ"÷ Z € ÷ PüŸ„Ÿ“þÿðÄE€ÿ!Ê•wÐùð‹3�Ê•Á DŠ&÷ Z„w~èX¬ûð‹3ì€ ðŠÍPèw Ýæê›æ蛀æ œ.! �Ö ·Ö›·Лw ÝŽ‡&W þÿöð•Žýð ¾,{w^7 êÿ‡†h€,&{ ÀÀ&9ˆð w$D,L{h   ˆTHIS BUFt,r{FER OF DATA WILL BE USED TO TEST THE M9,˜{AGNETIC TAPE 62CœSECOND LINE OF THE Wá,¾{RITE, REWIND, AND READ TEST 62 CHARACTøä{ERS.INPUT BUFFERX|#,~@€!@~&~€¸,@÷"÷ BÄÁÁEàÿ„ 7*7ZÀC� (SP)+,@#$KPAR5 .ENDC .ENDM .PAGE ; S T A R T O F M A G T A P MAGTAP: JSR R5,PUSHR ;SAVE R0-R5 ON STACK MOV 14.(SP),R0 ;R0 = F.W.A. OF LIST SAV.56 MOV #1,R4 ;SET ERROR CODE IN R4 DEC (R0) ;IS THREAD = 1 BNE MTERR ;IF NOT, RETURN MOV FUNCT(R0),RES2(R0) ; IS DEVICE TYPE = 4 CMPB DEVICE(R0),#4 BNE �È~˜™P~š×~ˆš_~›‘.!÷ Tÿ€°•.!æ÷ 6ûâ6 ðæþÿÁe8f÷ �~`Y¾�DÁ ÷ vŸ—¢bô ÐÿÊåò ÊeŸ“þÿÄÿ�ÃÿÁ ÄeÀÿw’øüEÄÿ4�Ãÿð‹3�À ¸P€ f&Ÿ÷ Ê÷ ¤Ÿ�þÿ…øÿµ- ~ØYò„�C…àt‘ÂÿÂò #À À Ÿ &÷ ÖÄ&>÷ €Ã0>Ê•ñ•.!Á 1ŠŸ“þÿ� Ä@Qt&÷ ÎÚwføÊ•ôð‹3¥€ ðŠÍP¡æþÿi~PZÁe8f÷ Æ�@œÃÿÀ  BÜÂÿl¸P „—¢Kô¥.!Gñ Ðÿ:ff÷ FÃ×tüÿÅñ ñ`$Ñ Gƒ�À Ä ŸôŠ„ Ê‹� &>÷ ÄÂÞðÄ~ÈZ>±€ € 1�2 ô•.!Ê•w²÷ <ð>ð<ñÅ’f8&9ˆð w®’,xêh Àlz,ž&9ˆð wxêh3$Ä »À¤&9ˆð wBõ,äh Àà�, €&9ˆW üð wh¯,0€ À&9ˆð wÐ(,V€h€ ÀP&ë,|€9ˆW üð w”hÕ,¢€€ À„&9ˆð w`C,È€h“MTERR ;RETURN IF NOT 4 ; IS EXIT TYPE 1 OR 2 INC R4 ;SET R4 = 3 MOVB TYPE(R0),R1 ;R1 = EXIT TYPE BLE MTERR ;BRANCH IF .LE. 0 CMP R1,#3 BGT MTERR ; BR IF .GT. 3 ; IS THE LOGICAL DEVICE NUMBER 0 OR1 MOV #5,R4 MOVB DEVNUM(R0),R1 ;PLACE DEVICE NUMBER IN R1 BLT MTERR ;RETURN IF NEGATIVE CMP R1,#MTDVLM ;IS THE DEVICE NUM”æ~x›n~ð›ö~hœ• Q5f÷ øÙô•.!€ D�Ÿwxù± æþÿB�÷ ªÅ0Quf÷ ÂÙŸ¡~@[ñ‹Ÿ!ñ•.!wDùñ•ýÿ.!wB÷ ÅÜq"œÛPÊCa‡�öÿfÑQr úÿ�üÿröÿ�°ŠÍP‡�øÿC DEr úÿ�üÿrøÿðŠÍP‡É•…ÊÅ!~¸[ÊÕEõ•.!Å fŠ÷ nƒ5 Š… ‡Á fŠ÷ Z„�À  ÝÂÿl¸P� € ‡à ¸P …… r Ê Âeõ ‡¦÷ ¬Á÷ ‚Á¶;~0\÷¸˜´˜÷倮˜‡¦ò�‚„‡ˆ �‹À�Ž                 !"£$¥¦'(©ª+¬-.¯0±²3´56·¸9:»<½¾?ÀABÃDÅÆGHÉÊKÌMNÏPÑÒSÔUVרYZÛ\ÝÞ_'ABÃt~¨\DÅÆGHÉÊKÌMNÏPÑÒSÔUVרYZ   – ÀÀ&9ˆÇ,î€W üð w$h‘,�€ Àü&9ˆW üð w<,:�èhþÿ À#,`�0&9ˆð w´h€m,†� Àd&9ˆð w€à,¬�h€ À˜&9ˆð �,Ò�wLh,ø� ÀÔ&9ˆW üð wæ,‚h€ À&9ˆW ,—BER DEFINED BGT MTERR ;RETURN IF NOT ; IS THE FUNCTION CODE DEFINED MOV #10,R4 ;SET R4 = 8 MOV FUNCT(R0),R1 ;PLACE FUNCTION CODE IN R1 BLE MTERR ;BRANCH IF NEGATIVE CMP R1,R4 MOV R1,RES2(R0) .IFZ MULRE BGT MTERR ;BR IF R1 IS MORE THAN 8 .IFF BGT MT01 ;BR IF MORE THAN 8 .ENDC CMP R1,#7 BLT ˜}~àœ~X�Œ~Ð�~Hž™  234æ~ ]öb��` L/}~˜]P 1 PARITY ERROR L/P 1 NOT READY L/P 1 ABORTEDâ\f]&f¦æ&fæêôæìô€÷ º 7¬ŒÿÄŸìôŸêô…p~^„ƒ‚�€Ž‡œ— ÂÉ Ä çÄ ä÷ hæþÿŸÈ :&÷ ‚¿¦Ê\÷ T¿ž²Ê\ìô ö%�LĪÀ´ŠŸ!0 ó Ä\$Ÿþÿ<~ˆ^šD‚üð wÔh)è,j‚ ÀD&9ˆð w û,�‚h€ Àx&9ˆð w;,¶‚lhþÿ À ,Ü‚´&9ˆW üð w0h,ƒ€ Àü&9ˆ· ÷ z,(ƒúÿýð wî7 êÿ‡öhp,Nƒ€ ÀD&9ˆ· ÷ úÿý ,tƒð w¦7 êÿ‡>h,šƒ ÀŒ&9ˆ· ÷ úÿý› MT02 TST COUNT(R0) BEQ MTERR ;BR IF COUNT IS ZERO CLR NWORD(R0) MT01: .IFNZ MULRE CMP R1,#11 BGT MTERR ; BR IF MORE THAN 9 .ENDC MT02: CLR SYSTEM(R0) ; PLACE LIST IN THREAD MOV @#PS,-(SP) ;INHIBIT INTERRUPTS, SAVE PROGRAM STATUS REG. SPL 7 ;SET PRIORITY TO 7 .IFZ $KT11C MOV R0,@MTLAST ;QUEUE IT œ›~Àž#~8Ÿª~°Ÿ2~( � ð¥ð ¶Æe…„ƒ‚�€& ÷ tÅw¢É0Ÿþÿ£ˆ ŸþÿÄ�³ Ä\ŸþÿsÆ\3 Ô\3 Ö\³Ü\sØ\3 Ú\÷ ÖÂD\÷ îŸ÷ T~_ô Âw0w Ú¼ Åœó Ä\MœÂÜ\¦È\÷ ^¾€ìôÁÆ\÷ ˜å÷ ŠÂD\÷ ¢÷ ¨MæþÿÂÜ\Ÿ2È\ „ÄeÈ\¡ ¡ 2Ê\ÈŸœ~x_þÿÄÔ\ôŠŸ!&÷ lù¬ æÔ\& ÷ ÈÖ fæ&æÔ\÷ ¤Óƒ…ÂÜ\Â÷ æÄò È\Âe(¦È\÷ ª½€ìô÷ Âv~ð_ð wVÿsÆ\³Ü\3 Ô\3 Ö\ÂD\sØ\3 Ú\÷ Î÷ ª÷ ÒM÷  3 Ä\æ|]÷ Ö M³ Ú\ó%Ú\÷ X÷ z÷ ¢Mžð õ,Àƒw^7 êÿ‡†h€P,惠ÀÀ&9ˆð w$|, „h   ˆTHIS BUF«,2„FER OF DATA WILL BE USED TO TEST THE Mp,X„AGNETIC TAPE 62CœSECOND LINE OF THE W,~„RITE, REWIND, AND READ TEST 62 CHARACT/¤„ERS.INPUT BUFFER?…Z,À†f2‡Á憀ð,d‡°!2ˆÇl‡ÅàÄþÿÀÔL‘ß $%&ß ˆ€ÅŸ MOV R0,MTLAST .IFF MOV R0,-(SP) ; STORE SYSTEM VIRTUAL LIST ADDRESS ON STACK JSR PC,SVPPA ; GET LIST'S PPA (PACKED PHYSICAL ADDRESS ) MOV MTLAST,-(SP) ; CONVERT THE ADDRESS OF THE LAST ENTRY IN QUEUE JSR PC,PPASV6 ; GET LAST'S SVA (SYSTEM VIRTUAL ADDRESS ) MOV 2(SP),@(SP)+ ; QUEUE THE CURRENT REQUEST MOV (SP)+,MTLAST MOV 16(R0),@#$KPAR6 .ENDC CMP 16 ¹~  A~¡È~�¡P~¢¡æ�]÷ `ñwèþ‹~h`æ¨]÷ N÷ V3 Ú\Ä|]&ô�`æd÷ |Ö MC fÁÆ\ÂÜ\æÈ\÷ â¼€ìô÷ Ö …Äà\Å÷ ³ Ú\×,Ú\´æd÷ 2Ö ‡ð©~à`Ö …wfþæ&ff& ÀÒ]ÅÖ\AaÁes!Ø\B3 Þ\ DÔ! ! 3 Ò]³ Þ\ Ä% !3 Ò] ÷ ^Ä• Îå÷ R … s!Ø\ßÀ5Е ñ~XasÖ\ÀìÒ]„ Ö …�€Ö ‡3 Ò]³ Þ\Ä ÷ êÎ5øÝÅ êÄÕ¶ 6 & „`“3 Ô]Ž Ö ‡ð¥ ‡ð¥ùćß@ê~Ða‡Äê& Ä5 Ä5Ä5Ö ‡– ‡Ö ‡ó Ž] 3à\  ê÷ Ôúß ê êßâ\¢,Їðµ @ðµ ðÅ ð• <ðÕ Š#,°‡ðµ  ðµ@ Ò  ðµ ’$ðµ€,Ö‡ Ò ¦ & æ& æä"&& æ¢'Þ Ö O,ü‡L‘ðÅ ð‹ ðµ ðÅ &ß ðÖ h"ˆÔ ߢŒÖ÷Ô¤Œ7 ¢Œß ® :ˆ$% Šš·,@ˆR2€ˆÉfˆ€n,äˆZ, ‰'"0‰$!4‰£+4*$KT11C(SP),#TSK.PC ; IS CALLER A TASK BNE MT04 ; BRANCH IF NOT MOV $CTASK,R2 INCB IOSTAT(R2) MOV R2,SYSTEM(R0) MT04: MOV (SP)+,@#PS MOV #MTREP,RES1(R0) ; SET REPEAT COUNT AND CLEAR BACK SPACE INC NMTREQ ; BUMP NUMBER OF REQUESTS BNE MTEX2 ;BR IF NOT FIRST IN QUEUE .IFNZ $KT11C MOV R0,CDTLST ; SAVE LIST S.V.A. FOR INTERRUPT ROUTINE ¤×~€¢_~ø¢ç~p£n~¥êßÈêÄ|]ô�`&æd÷ ÐÖ ‡fÄÒ]Å$~HbBÀåÄÄ Ä Ä Äezb0ð0ŠÈ&÷ ¾Ç…ÀÒ]‡ÃwÅÀÒ]@aAa… !B@ÁÆ\…ÂÜ\w¬ü ê‡f  ÅCqBa…à ‡„Ÿ~ÀbfÅh]æþÿŸõ 5 Ÿþÿf÷ NÇ…Ž¤‡Ÿþÿ…Ž´‡1 ‡· Žú‡7 ˆú‡æþÿŸþ% f…µ� …ŸþÿŽ6 ‡Ÿþÿw¤±~8cöeþ.c6 ‡÷Eð„÷U0~÷Eÿ|÷Uv÷Eðj÷UPd÷Eÿb÷U„\ ÷EðP÷U˜~°c@J÷EÿH÷U„Bw PÒÀ¦ÿ7  ÿ7МÿŠÀ   DLc € ¦Ð AC: q P‰ ? ªX‰ ILL CMD! ÿf‰ ILL PAR! â,t‰NON-QUIESCENT ENØDSÜQUâXXèXT@,š‰ðTMÎDTþRE¼CMAS0LD6IDBFLPTC<œ,À‰BR|XBŒPTìEXˆ.ˆˆæ´ ˆ÷2ÿ÷³,扖&ÿ7 .ÿæ„ ˆ÷ ÿîŘDêÄå�Ä Ã‘, ŠS# Ó Ë û÷Øòþæ„ ˆÙË ÖÕ Ä Û Å 0,2ŠÒ÷æÖþñ÷ ! ³Ä ôE "³‡W¥, Ä G,XŠ!‚÷ ¾Å ‡Ö  ‡÷ èÅ Ä ! ¡,~Š 7L xþ÷•tþæx*ˆôŠŸ‡÷ § MOV $KPAR5,MTPAR5 ; SAVE KPAR5 FOR INTERRUPT POUTINE .ENDC MOV #CLEA,@#MTCOMM ;ISSUE CLEAR TO MAG TAPE CONTROLLER MOV FUNCT(R0),R1 ;RETURN JUMP TO JSR PC,@MTFCT(R1) ; ROUTINE CMP RES2(R0),#2 BLE MTXB2 TST R4 BEQ MTEX1 ;BR IF NO ERRORS MTXB2: JSR PC,MTDEQ ; DEQUEUE REQUEST BR MTEXIT MTERR: INC (R0) MOV R4,ERR¨è£ö~`¤}~ؤ~P¥© „  ‚ Â5øqLcÑ W !îÄ5 îƒ ÷ ^ÿêƒÂíVÿ‚ ÂÂÝNÿ·Nÿ÷E€Jÿ²~(d„  ƒ Ã5úqLcw äч÷U€.ÿùˆmˆmˆm”m”” X3pKNÈoÄoÄoÄoÄoÄoÄoÄoÄoÄoO~ d ÷4›¢ÿ÷>›,›æ·”ÿ÷•ÿÿ’ 7ŠŒ wà÷›‚ÿw â7ŽÆ^dÄyoÉow À 7xw w XÄ�ZÿŒL~eŒŒ7‘Þš7ŠJ ÷•ÿÿF ÷àÞš÷¸kÖš×!:e÷0wæÆ ÿ& ÷ ÿæÜšæÖš÷•@šà D÷‹ A „ &DCƒcà ÷è w @w Ü„·Šê w ƒ~�eþ  '  7ŠÖ Ä „ ª²ÿæ& 5,¤Š&& ˆÖ ߈æöæóæðÔÀ0Šé,ÊŠ.¡&éW¥,W£B Å ÷ nÿÄ Ã! Àæ$,ðŠØ ûÄÿÿø·æjˆ÷ âý±‡¯÷êý÷•‹,‹æýæx*ˆ‡æ7 ¼ý7 ºý7 ¸ýaÃjc™Ä ýM,<‹ædˆ„Ö  ƒ‡ 8l| Á,,b‹ÁÁW¥,5Ä 3!0‚÷ ¢ÿÅ ,!,ˆ‹)!ˆŸ&Ä ô%ŠŸ!„ yÐß•àþÿô¥.¡*,®‹4Š.¡Šþÿ‡ß•àþÿô‹.¡­.¡ Šþÿ÷ôã,Ô‹:ýæ„ ˆ ‡ô•.¡Šþÿ‡&& & & ˆÖ òà,ú‹ê&ˆ‡ «OR(R0) ;STORE ERROR CODE IN LIST MTEXIT: MOV @#MTSTAT,STATUS(R0) RST.56 JSR R5,POPR ;RESTORE REGISTERS MOV (SP)+,(SP) ;MOVE RETURN ADDRESS RTS PC ;RETURN TO CALLE- MTEX1: MOV #MTTLI,-(SP) ;ADDRESS OF MAG TAPE TIMER LIST MOV FUNCT(R0),R1 MOVB MTIMV(R1),-(SP) ; TIMER DELAY JSR PC,QTIME TST (SP)+ MTEX2: CMPB #2,TYPE(R0) ;TYPE 2 ¬Œ~È¥~@¦›~¸¦#~0§­‚ ¦&w Ä„‚À•\w ÄwXw Èw �Ä øfw Š÷•‚ €w ’7ŠŽ wtwhw šÄ³o  Ä%Ãoû‚ÀEøÿÞ~fÄ Äe^d‚ whÄå¬o÷ÀD Áuo÷ ôÀ=w T·ŠD À�= w HÀ�6 w @À�/ w 8À w 0w 8  7� w *7� w "7Š 7� ÀhoÁuo÷ ~€fXÄâÂwð7Šæ  wèw (‚b‚ ‚ ·¼wúw ‚øw �A�Á � � B`ï÷ €÷%’ÂŽ…Ö w|÷‹’û 7Š‚wr÷•ÿÿxw%~øfh·Šu ÄEøÿÄ 7|d~wh÷‹^ ÄEøÿÄ Ã t|dPà õôÿÿ|dIw ,Û×-ÉÂ% w   ÿÿÀ=w $ÀÁø7 ‰ HH:MM:SS MM/DD/YY Y, Œ‰Œ��š—�Ä÷ ìþÅ &ÅeÀ õI,FŒ ƶÿ‡·°ÿW¥, !ôÀ÷ Æÿ1ˆÖ íÏ,lŒ‡ÀÁ Â„w(·€ÿW¥, !ÜÀ„,’Œ÷ –ÿ0ˆçÀÁ¦Â’÷Eÿ7Pňæ|&¸ŒdˆDÔ�&üÔ�#üÅ öÅ ·@üæ„ ˆ‡î”K¯? BNE MTEXIT ;BR IF NOT TST SYSTEM(R0) ;SEE IF THIS IS A TASK CALLING BEQ MTEXIT ;BR IF THE CALLER IS NOT A TASK .IIF NE $KT11C ADD #4,SP ; THE CALLER IS A TASK, THE PAR'S CAN GO MOV @#PS,14.(SP) ;PLACE PS ON STACK JSR R5,POPR ;RESTORE REGESTERS CLR -(SP) ;SET INVOLUNTARY SUSPEND FLAG JSR PC,QSAVEI ;AND LET QSAVI SUSPEND THE TASK JMP DSPTCH °ª~¨§2~ ¨¹~˜¨A~©±~pgÄ í|dÀ=w ÀÀe0w úÀ,w òÂ%ÀÎ@w Œk÷‹ÌÄÊüÂeÀ=÷¤w Â@w fw¬üw’·Šºw¢À=w ¤ w *~èg ÿÿÀrw 8AÀe0w „À,w |æV÷PÀTw ·D-À ÷<@7ì|d:€ â÷(÷‹6 À4üÄ,üÃ*üw ä÷ ðÀ?w û~`h"7 üw 7Š7Š7Š    w À%0 ‚À%7‡ÀEøÿÄ Ä Ä `‚ ð 1 —o� W Ö†ø÷‹Ú ÷‹·ÄmÊ7ŠÈÁ yÌhiiipiòek­~Øh€išf|iÖiúfJj–j’jèitk¬f´fÞfg¤gÐg4hRhØgfbeFeƒ·Šh7Šc´÷JD ÷@ 7<76÷%.Ä*„ ² ; =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 BOINTS MAY BE S³ .PAGE ; MAGNETIC TAPE INTERRUPT ROUTINE MTINT: JSR R5,SAVE SPL 5 TST NMTREQ BMI MTEYIT .IFZ $KT11C MOV MTFRST,R0 ;PLACE LIST ADDRESS IN R0 .IFF MOV CDTLST,R0 ; PLACE CURRENT LIST S V A IN R0 MOV MTPAR5,$KPAR5 ; GET CURRENT LIST PAR5 .ENDC MOV #MTTLI,-(SP) JSR PC,DQTIME TST (SP)+ CLR R4 ; BRANCH ON FU´È~ˆ©P~ª×~xª_~ðªµî‡À"ÀŸw â÷%£~Pi‹À•=w (ÀŸw À• w wúþ÷ ÖwêþwÞþ·Šì÷ Þù÷ À÷ Þ÷ÒÎ7ŠÒ÷mÄÄ÷ÀÀw ºæ´÷®À¬w ¼·¢Ö%ÀM~Èi/w ¶¯À\ú÷ ˆÔ÷ j÷í~~ÜÀÄoÄ Ã … L‡Å ÄeŒd  !šdB†Ô ù!šd=‚L® !6‚4Œd4 žd¤ ÀÄo!ž‚4ŒdôØ~@j°d4 ždÔ ô÷%À w *à ÅíÅ Å @w Â@€ ‡À%€ÿ À%÷ àw ¨· ØwÜýwÈý�  à ù÷ÀÂÎùÄÈùD · Æù¼‚€Á <~¸j&C@AƒEPA&f¦æw ’€w  À/w ¤€w Hƒ‚�„w ÞÒ Û åƒ`ƒ ƒ ¶ET 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   ;=0 NO SEMICOLON·NCTION CODE ON RETURNING FROM AN INTERRUPT MOV FUNCT(R0),R5 ;LOAD FUNCTION CODE (1 TO 8) ASL R5 JSR PC,@MTRET(R5) MOV @#MTSTAT,STATUS(R0) TST R5 BNE MTIN05 ;BRANCH IF I/O NOT COMPLETE MTINRE: JSR PC,MTDEQ ; DEQUEUE REQUEST CMPB TYPE(R0),#2 ;TYPE 2 EXIT BNE MTIN00 MOV SYSTEM(R0),-(SP) ;PLACE TASK NUMBER ON STACK CLR -(SP) ¸ç~h«n~à«ö~X¬}¹Å ßÀEÿ�¯À € € €` Õ÷‹V·à µ÷•F… °‡Å A~0kw8ù÷•àÄ”w °7Š-÷U&ù÷‹"÷Eùw b7Dæùæù æùÎE·Œ”÷‹üŠÀ�òÀ‹† „à pžd÷•àj”w V×­ÔÏ÷‹ÊÌ÷•Œ~¨kàR”·Š¿÷U¸øÐ·°ø·®ø÷•ª7¸÷‹¡·w @÷‹˜ø€Å��øÅ�Œø¯ŒŒŒŒw‘ ”Åvø÷‹t�å wjøÄt!ŒdÄ Ä úw ¼w JÄŠoÃi~ l‹ow ž@÷e>ø%Ä•tŒd7‘2ô ždªôždw „ÀBw .À�Àe`€ w À;w ÷ðÄ�úŒdw úwàû·â·à÷Æjdf&æ¦fŸ~˜læÌæ €Ö ·Â�‚ƒ„…ƶ÷æ°€Ä4Œd°düüº 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 TRCHDR: .WORD 72.,0 .BYTE 014 .ASCII /PC CP R L T NZVC R0 R1 R2 R3 R4/ .ASCII / R5 SP / .BYTE /012 DMPHDR: .WORD 64.,0 .» ;PUSH 0 ON STACK JSR PC,UNSPND TST (SP)+ ;POP OFF ERROR CODE MTIN00: CMPB TYPE(R0),#3 BNE MTIN02 MOV R0,-(SP) ; LIST ADDRESS MOV SYSTEM(R0),-(SP) ; TASK NUMBER JSR PC,IOCOMX ; EXECUTE I/O COMPLETE SUBROUTINE MTIN02: TST NMTREQ BMI MTEYIT ;BR IF -1 MOV MTFRST,R0 ;GET NEXT LIST ADDRESS MOV R0,-(SP) ; CO¼~Ь~H­Œ~À­~8®½ŒdÄ Ä ÷…÷�š’™÷�˜’”7ŠŽ’7ŠŽ’÷‹Š’ý€…w r÷‹~’ý€÷5r’÷‹l’ý€÷�gd’÷�bs~mb’…÷‹V  <°dŒd„ „ !ø…ÃÄþÿ÷%&Ãå„ À&Äe N @ Ä üÀe0w &à óÀ• Ö Á|dÀÿÿ …÷‹ì‘I~ˆmý€7�è‘…÷‹Ü‘ý€À�Ø‘ÀE€ÿÀ¥÷‹Ð  w Ðÿí÷‹¾À¥ ç…Ä ã‡•w ¶ÿú×­ž‘• À•^w ¤ÿÀ•Uw œÿÆ^dwrú… ÷ÿÿn÷ÿÿj{~n  ‚7,|dX‚ÁRì|dÁ-P‚Ð ðÀD…w@€ 78À ô÷%(!ùƒ… �„ ú ÷%‚??‘‡Ã•oÖoÄ”ow Nÿ…_~xn÷%üõw ªþ…÷¾BYTE 014 .ASCII /LOCN CONTENTS/ .ASCII / / .BYTE 012 O.IDND=.-1 .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 = .-1 O.LGCH: .BYTE '; ; .BYTE '/ ; / ¿NVERT LIST ADDRESS JSR PC,PPASV5 ; FROM PACKED PHYSICAL TO MOV (SP)+,R0 ; SYSTEM VIRTUAL MOV R0,CDTLST ; SAVE FOR NEXT MOV $KPAR5,MTPAR5 ; INTERRUPT MOV DTPAR(R0),@#$KPAR6 ;INITIALIZE KPAR FOR DATA BUFFER ADDR MOV FUNCT(R0),R1 ;RETURN JUMP TO ASL R1 ; FUNCTIONAL JSR PC,@MTFCT(R1) ; ROUTINE CMP RES2(R0),#2 BLE MTÀ›~°®#~(¯ª~ ¯2~°ÁÚ77Ðw ZÿÀ Àe0w àþÀ,w Øþæ²÷¬À°w pþ· ÷ÊœÀÆ…ÀÀ÷ºŒÓÄýÿ C”Ã¥ Ã¥$ × ž~ðnA‡Ãå ÃåÃå Ãå    ¦  ‚eÂ`„ ä�‡ÅýÿÂ\o ‡€âƒ ûË× Ãe ÃeÃe Ãe Ñ�Ò … è€Ð ‡@(ÚPÚP�~hoÆÿ@€ ODT-11R V003ABENÚPÚP *;/\ $G _<^,OWEBP@>SRC-FI!XASPMCFRBòÿÿ8r>rBr rör.sPs~ào†sâs8r>rVrÔrsLsrs†st´<öqöqw úÅ€æêôæìôÄÈ `„ ¬[„ œWD UÄpND ÄáÂ.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 ; C .BYTE '- ; - .BYTE 'F ; F .BYTE 'ÃINRE TST R4 BNE MTINRE MTIN05: MOV #MTTLI,-(SP) MOV FUNCT(R0),R1 MOVB MTIMV(R1),-(SP) JSR PC,QTIME TST (SP)+ MTEYIT: JMP RESTOR .PAGE ; MAGNETIC TAPE TIME OUT ROUTINE MTTIM: JSR R5,PUSHR .IFZ $KT11C MOV MTFRST,R0 BEQ MTTIM2 .IFF MOV CDTLST,R0 ; GET LIST S.V.A. MOV MTPAR5,$KPAR5 ; AND ASSOĹ~�°A~±È~€±P~ø±Å~XpœGW D„ W ð =0 W 80 æþÿŸ&÷ F­æ8ÿ÷ ­ž·,ÿìô—-�LÂp®²ŠŸ!° Ÿþÿð· ÿ*7ÿ÷„^~ÐpüþÁ ù Ðo,Ä ÷ ̈ 0ðPõŸìôŸêôw ÅŽ‡æpfœóo÷ 壅 ð¥èð åÆeöþÿw èÄ& ÷ è²w·w ¢ª�]~Hq÷ „þ�Àzþ÷xþ’ƒæp÷ �¤Ö  Å ý âoðPõÅ ÷ w«÷ 4¬& & ÷ ¶Ö ¬&& ÷ ®Á÷ "þ"�Àþ&÷ Ϋ€7 þ%~Àq÷&ƒþìôÁ ù Ðo,ÍÄ Ëæpfœóo÷ ê¢Ö ‡w Ä÷ Òý�ÀÈý÷Æýà‚, ÷ þ æpæÆ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 ; 12 .BYTE 0 K”òpÿõîÿ· ßrœþ€É‹‰ êÂèßöÁZÿwõ÷ê÷|ßL„cÄ À†„ âÀ‹Í êÿ÷ ÇÄPÃÍ ÄÍ &·‡Â ÿÃEÀ`Üþ€Ë‹‹ŠjøÑ�éëÀ‹Í „c,÷ !Â%pß~·Âå<÷ Í üÃŠÍ NÎ  ‡ xÿÎ JÅeŦ)Ƹ@q§²>· qt¶øÞ~#ÈØ~p²_~è²ç~`³n~سÉ÷ ¶¢Ö Ä ÷ Nÿw êÇò~8r÷  ‡÷ ü€÷ ,ÃUßRõ‡ ð €÷ àÿ×7Põ€9ÁTõ� p`Ä ð ÷ ¼ €ð•€ßÿÿTõÃU ßRõ… ‡÷ ž€÷ ÎÄ Âw~°rPõ—t � ÂEüÿÃUÃUßRõ‡ ð €÷ ÀÿÝ×7Põ€9ÇÁTõ� p`‡÷ H €Ä ÂPõ—t � ÃUßRõ‡ €÷ Ôÿ¼×7Põë~(s€9¦‡÷ €×7Põ ÃUßRõ‡0 ü ‡÷ î €� ÃU_TõßRõ‡ÃU ø€A ÁgTõp ‡ ÁPõWt�÷ ¬€ß€Tõð ÿ~ s�ð ° ÃU° ð ÃU ßRõ… ‡ð ° ð ÷ð ° ò œÊ; 13 .BYTE 0 ; 14 .BYTE 0 ;  15 .BYTE 0 ;  16 .BYTE 0 ;  17 .BYTE 'B ; 20 O.LG = .-O.TL .EVEN 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 IOBUF: .WORD 0 ;N€Þ~›Þ~�Ý~ŒÝ~=þÌö~P´}~È´~@µŒÍfÁEüÿ� †°�÷ H€ÃE@ÃUßRõ‚ Á ð°‡ï~t  ÁEüÿ� †ßERõßPRõß5Põ‚ ÃeÁ ð‡ßRõœ×tßRõÃUA 0Š ,Á—PõWt €‡Ä üìô&÷ N©… wuÀ~�tQ ÄEüÿQ_VõpÅ  _Tõ‡0÷ ûðPõæþÿŸ7øú ÷Èoòú¡7 ìú¡7 æúÈŸþÿ òŠŸ!¦÷ úã‡;~u@€ Õ€4~€uÎO. 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 FOLLOWING ENTRIES IS CRITICAL . = Ü~}(Ü~ö°Û~n8Û~ç9þÐ~¸µ~0¶›~¨¶#~ ·ÑŒ~øu÷"÷ BÄÁÁEàÿ„ 7*7ZÀ8&9ˆð ~pvw®êh Àl&9ˆð wxêh »À¤&9ˆð wBÍ~èvh Àà&9ˆW üð wh À&9ˆð wР~`wh€Ò O.ODT-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 ;CONSTANT REGISTER O.FORM: 0 ; FORMAT REGISÀÚ~_HÚ~ØÐÙ~PXÙ~É5þÔª~˜·2~¸¹~ˆ¸A~¹Õ ÀP&9ˆW üð w”h€ À„&9ˆð w`h›~Øw ÀÀ&9ˆW üð w$h€ Àü&9ˆW üð wèh¨~Pxþÿ À0&9ˆð w´h€ Àd&9ˆð w€h€ ÀR~Èx˜&9ˆð wLh ÀÔ&9ˆW üð wh€ À&9ˆTER  ; 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 O.ODT  ;END OF TAPE #4 àØ~AhØ~ºð×~21þØÈ~x¹P~ð¹Ø~hº_~àºÙ~@yW üð wÔh) ÀD&9ˆð w h€ Àx&9ˆð wlL~¸yhþÿ À´&9ˆW üð w0h€ Àü&9ˆ· ÷ úÿýð ~0zwî7 êÿ‡öh€ ÀD&9ˆ· ÷ úÿýð w¦7 êÿ‡>h Àå~¨zŒ&9ˆ· ÷ úÿýð w^7 êÿ‡†h€ ÀÀ&9ˆð w$LÙ~ÕÔØ~M\Ø~Æ.þx×~ª×~#ˆÖ~›Ö~-þÜç~X»n~лö~H¼}~À¼Ýh R~ {  ˆTHIS BUFFER OF DATA WILL BE USED TO TEST THE MAGNETIC TAPE 62CœSECOND LINE OF THE WRITE, REWIND, AND READ TES§~˜{T 62 CHARACTERS.INPUT BUFFERú~|õ~ˆ|ä×~>l×~·ôÖ~/|Ö~§*þ˜Õ~Œ Õ~¨Ô~}0Ô~ö)þà~8½Œ~°½~(¾á}~}~x}@€ ÷€‚~ð}~h~Ö~ ŒÕ~˜Õ~œÔ~‰&þ¸Ó~n@Ó~çÈÒ~_PÒ~Ø%þä›~ ¾#~¿ª~�¿2~Àå÷"÷ BÄÁÁEàÿ„ 7*A~à~7ZÀ8&9ˆð w®êh Àl&9ˆð wxêh »À¤&9ˆˆ~Xð wBh Àà&9ˆW üð wh À&9ˆð ›~ÐwÐh€ ÀP&9ˆW üð w”h€ À„&9ˆð w`e~H€h$Ô~¬Ó~z4Ó~ó¼Ò~k"þØÑ~P`Ñ~ÉèÐ~ApÐ~º!þè¹~€ÀA~øÀÉ~pÁP~èÁé ÀÀ&9ˆW üð w$h€ Àü&9ˆW üð wè/~À€hþÿ À0&9ˆð w´h€ Àd&9ˆð w€h<~8�€ À˜&9ˆð wLh ÀÔ&9ˆW üð wh€B~°� À&9ˆW üð wÔh) ÀD&9ˆð w h€ ÀDÒ~äÌÑ~\TÑ~ÕÜÐ~MþøÏ~2€Ï~ªÏ~#þìØ~`Â_~ØÂç~PÃn~ÈÃí°~(‚x&9ˆð wlhþÿ À´&9ˆW üð w0h€ Àü&9ˆ· ~ ‚÷ úÿýð wî7 êÿ‡öh€ ÀD&9ˆ· ÷ úÿýð w¦7 êÿ‡>hã~ƒ ÀŒ&9ˆ· ÷ úÿýð w^7 êÿ‡†h€ ÀÀ&9ˆð w$h{~�ƒ   ˆTHIS BUFFER OF DATA WILL BE USED TO TEST THE MAGNETIC TAPE 62CdÐ~ÆìÏ~>tÏ~·þ�Î~›Î~ Í~Œ(Í~þðö~@Ä}~¸Ä~0ÅŒ~¨ÅñœSECOND LINE OF THE WRITE, REWI~„ND, AND READ TEST 62 CHARACTERS.INPUT BUFFERˆ~€„}~ø„~p…üÎ~/„Î~§ Î~ ”Í~˜þ°Ì~}8Ì~öÀË~nHË~çþô~ Æ›~˜Æ#~ÇõŒ~è…¦†2€i~`†2ˆÇlÅàÄþÿÀÔL‘ß $%&ß ˆ€ðµ @ðµ -~؆ðÅ ð• <ðÕ Šðµ  ðµ@ Ò  ðµ ’$ðµ Ò ¦ & æ& æä"&& æ¢'Þ Ö L‘ðÅ ð‹ ðµ ~P‡ðÅ &ß ðÖ Ô ßb�Ö÷Ôd�Í~¤Ì~‰,Ì~´Ë~zþÐÊ~_XÊ~ØàÉ~PhÉ~Éþøª~ˆÇ2~ȹ~xÈA~ðÈù7 b�ß $% ŠšP2€w~ȇ(~@ˆÐ AC:  ? ILL CMD! ILL PAR! I~¸ˆNON-QUIESCENT ENâDSæQUìXXòXTîTMØDTREºCMAS.LD4ID@FLNTC:BR†XB–PTêEX.ˆˆæ´ ˆ÷4ÿ÷–(ÿ7 0ÿæ„i~0‰ ˆ÷ <Ë~óÄÊ~kLÊ~äÔÉ~\þðÈ~AxÈ~¹È~2ˆÇ~ª þüÉ~hÉP~àÉØ~XÊ_~ÐÊýÿîŘDêÄå�Ä ÃS# Ó Ë û÷Øôþæ„ ˆÙË ÖÕ Ä Û Å Ò÷æØþñ÷ ! ³Ä ôE "³‡W¥, Ä !‚÷ ÊÅ ‡È~¨‰Ö  ‡÷ ôÅ Ä ! 7L zþ÷•vþæx*ˆôŠŸ‡÷ ²ÿæ& && ˆÖ ߈æöæóæðÔÀ0Š.¡&éW¥,W£BW£A½~ ŠÅ ÷ hÿÄ À! ½æÕ ûÄÿÿøÄþÿý±æjˆ÷ Øý«‡©÷àý÷•Üýæx*ˆ‡æ7 ²ý7 °ý7 ®ýaÃjc™Ä ýædˆ„Ö  ƒ‡#~˜Š*Bv† ÁÁÁW¥,5Ä 3!0‚÷ ¢ÿÅ ,!)!ˆŸ&Ä ô%ŠŸ!„ yÚß•àþÿô¥.¡4Š.¡Šþÿ‡ß•àþÿ\É~ÕäÈ~MlÈ~ÆôÇ~> þÇ~#˜Æ~› Æ~ þç~HËn~ÀËö~8Ì}~°Ìô‹.¡­H~‹.¡ Šþÿ÷ô0ýæ„ ˆ ‡ô•.¡Šþÿ‡&& & & ˆÖ òê&ˆ‡ HH:MM:SS MM/DD/YY “–™§¤¡�Ä÷ ìþÅ &Åe‰~ˆ‹À õI ƶÿ‡·°ÿW¥, !ôÀ÷ Æÿ1ˆÖ í‡ÀÁªÂŽw(·€ÿW¥, !ÜÀ÷ –ÿ0ˆçÀÁ°Âœ÷Eÿ7Pňr~ŒædˆDÔ�üÔ�üÅ öÅ ·6üæ„ ˆ‡q~xŒ|Ç~¶Ç~/ŒÆ~§þ¨Å~Œ0Å~¸Ä~}@Ä~öþ~(ÍŒ~ Í~Λ~�Î}~ðŒ~h�Œ~à�~XŽÆ~ œÅ~˜$Å~¬Ä~‰þÈÃ~nPÃ~çØÂ~_`Â~Øþ#~Ϫ~€Ï2~øÏ ›~ÐŽ#~H�ª~À�2~8�4Ä~¼Ã~zDÃ~óÌÂ~kþýèÁ~PpÁ~ÉøÀ~A€À~¹ýý º~pÐA~èÐÉ~`ÑP~ØÑ ¹~°�A~(‘È~ ‘P~’TÂ~äÜÁ~\dÁ~ÕìÀ~MúýÀ~2�¿~ª¿~# ¾~›ùýØ~PÒ_~ÈÒç~@Ón~¸Ó×~�’_~“æ~€“tÀ~Æü¿~>„¿~¶ ¿~/öý(¾~°½~Œ8½~õýö~0Ô}~¨Ô~ ÕŒ~˜Õn~ø“ö~p”}~è”~`•”¾~§¾~ ¤½~˜òýÀ¼~}H¼~öл~nX»~çñý~Ö›~ˆÖ#~ת~x׌~Ø•~P–›~È–#~@—,½~´¼~‰<¼~Ä»~zîýàº~_hº~Øð¹~Px¹~Èíý2~ð׺~hØA~àØª~¸—2~0˜¹~¨˜A~ ™L»~óÔº~k\º~ää¹~\êý¹~Aˆ¸~¹¸~2˜·~ªéý É~XÙP~ÐÙØ~HÚ_~ÀÚ!È~˜™P~š×~ˆš_~›l¹~Õô¸~M|¸~Ÿ~>æý ·~#¨¶~›0¶~¸µ~åý$ç~8Ûn~°Ûö~(Ü}~ Ü%æ~x›n~ð›ö~hœŒ·~¶·~/œ¶~§$¶~âýŒ@µ~È´~}P´~öáý(~ÝŒ~�Ý~Þ›~€Þ)}~àœ~X�Œ~Ð�~Hž ¬µ~˜4µ~¼´~‰Þýس~n`³~çè²~_p²~ØÝý#~øÞt¶ q>·§²@q¸Æ¦)ÅÅeJ Îxÿ ‡ Î N Í ÃŠüÍ ÷ <Âå·~pßÂ%!÷ ,„cÍ À‹ëéÑ�øj‹ŠË‹þ€ÃœÀ`ÃEÿ ‡·&Í ÄÍ ÃÄPÇ÷ êÿÍ À‹â„ †ÀÄ „cL|ß÷ê÷õwZÿÁöèßÂê‰ É‹þ€rœß· îÿõpÿò”K-›~Àž#~8Ÿª~°Ÿ2~( D´~̳~zT³~óܲ~kÚý/ ; KT11C MOV NWORD(R0),R5 ;GET WORD COUNT MOV R5,COUNT(R0) .IFZ DATUM MOV R5,@#MTWORD .IFF MOV NWORD(R0),R5 ; GET WORD COUNT ASL R5 ; BYTE COUNT COM R5 MOV R5,@#MTBCNT .ENDC RTS PC .PAGE ; DEQUEUE THE REQUEST MTDEQ: MOV R4,ERROR(R0) DEC NMTREQ MOV @#MTSTAT,STATUS(R0) MOV @#PSø±~P€±~ȱ~A�°~¹Ùý1¹~  A~¡È~�¡P~¢d²~äì±~\t±~Õü°~MÖý3,-(SP) ;SAVE CURRENT CPU STATUS REGISTER SPL 7 ;INHIBIT INTERRUPTS MOV (R0),MTFRST ;PUT NEXT GUY IN THRAED AT TOP OF QUEUE BNE MTDEQ2 MOV #MTFRST,MTLAST .IFNZ $KT11C CLC ROR MTLAST CLC ROR MTLAST .ENDC MTDEQ2: MOV #1,(R0) ;SET LIST READY MOV (SP)+,@#PS ;UN-INHIBIT THE INTERRUPTS MOV SYSTEM(R0),R2 ;GET TASK °~2 ¯~ª(¯~#°®~›Ôý5×~€¢_~ø¢ç~p£n~„°~Å °~>”¯~¶¯~/ÒýNUMBER OF REQUESTOR BEQ MTDEQ1 ;BRANCH IF NOT A TASK DECB IOSTAT(R2) ;OTHERWISE, DECREMENT THE I/O IN PROGRES BNE MTDEQ1 MOV R2,-(SP) ;GO TO OVERLAY MONITOR SO THE TASKS CORE JSR PC,RELTSK ; CAN BE RELEASED MTDEQ1: RTS PC .END 8®~À­~ŒH­~Ь~Ðý9è£ö~`¤}~ؤ~P¥¤®~§,®~ ´­~˜<­~Îý;T¤‰~̤~D¥˜~¼¥}X¬~öà«~nh«~çÌý=Œ~È¥~@¦›~¸¦#~0§Ĭ~‰L¬~Ô«~zÊý? ~4¦§~¬¦/~$§¶~œ§ðª~_xª~ת~Pˆ©~ÈÈýÄýª~¨§2~ ¨¹~˜¨A~©\«~óäª~klª~äô©~\ÆýÂý>~¨Å~Œ¨M~©Ô~|©