; DDCGTP.S07 11-SEP-73 ; DDCGTP.S06 ; DDCGTP.S05 ; DDCGTP.S04 ; DDCGTP.S03 AUG-28-73 ; DDCGTP.S02 ; DDCGTP.SO1 AUG-24-73 ; DDCGTP.S00 AUG-21-73 .TITLE DDCGTP ( D D C GENERAL TEST PROGRAM ) BIT0=1 BIT1=2 BIT2=4 BIT3=10 BIT4=20 BIT5=40 BIT6=100 BIT7=200 BIT8=400 BIT9=1000 BIT10=2000 BIT11=4000 BIT12=10000 BIT13=20000 BIT14=40000 BIT15=100000 R0 = %0 R1 = %1 R2 = %2 R3 = %3 $@ @È8P@£ð.j¿ ž,@xÿþÿvÿrÿtÿpÿ0ÿ2ÿ4ÿ6ÿ8ÿ:ÿ<ÿ>ÿ„†€ÓÍ},&@m,L@ ÁÂH €`�`À% ûÀ%€öß,r@`Q ß¼UßàߺLßàÀXÁ,˜@ZÈMÉ€€`�`À%x÷ß_€ßü@‚À€ÐB,¾@_ÐfCÐ_ÐEÐ_ÐFÐ_Ð>GÐ_ÐîGÏ,ä@Ð_ÐIÐ_ÐlK ÷ þÆÿàúþ7 -, Aÿ7 ÿ7 ÿ7 ÿ÷ÿ÷ÿÿÿ Øþ�÷Upòþ,0AwvˆX÷ 8÷%k²÷UØþ÷%7¢ðˆ&,VA.X÷ ÷%k’÷%7Šó÷U®þˆ>X÷ ð0,|A÷år; MAGTAP.326 30-JUL-73 ; MAGTAP.325 ; MAGTAP.324 ; MAGTAP.323 ; MAGTAP.322 ; MAGTAP.321 20-JUL-73 ; MAGTAP.320 18-JUL-73 ; MAGTAP.319 17-JUL-73 ; MAGTAP.318 16-JUL-73 ; MAGTAP.317 ; 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 ;*************************************************; 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: R4 = %4 R5 = %5 SP = %6 PC = %7 SREQ = 177570 ; SWITCH REGISTER EQUATE NO = 67 ; WRITE=TRAP+3 WRCHECK=TRAP+7 READ=TRAP+5 ; ; ;DDC DATA TEST PROGRAM ;VECTORS USED IN PROGRAM ;#1 LOC 130,134,140,144,150,154,160,164 DISK INTERRUPT ;#2 LOC 30 EMT (TELETYPE OUTPUT) ;#3 LOC 34 TRAP (DISK HANDLERS) ;#4 LOC 14 TRACE TRAP (USED IN BACKGROUND TEST) ;#5 LOC 20 IOT TRAP (USED IN CALLING BACKGROUND TEST) ; ;I/O ADDRESS POINTERS SR: 177570 ;SWITCH REGIISTER CSR: 177776 ;PRO ÷%lõƒ÷f®þw ªþw ¦þˆWX÷ Êá,¢A÷%Løƒ¡w Dw @÷]<hþˆ`X÷ ²÷%k,Á,ÈA÷%7$óˆoX÷ �÷E÷ ö÷%x,îAòƒ÷>þ÷:þ*þˆ„X÷ h÷%@êøƒ÷äþˆõ,B�X÷ R÷%Ôøƒ÷%Ì ÷U€òý÷Àöý¡w Ç,:Bðý÷Epàýˆ¢X÷ *÷%k¤÷%7œó÷U@O,`BÀýˆªX÷ ÷%k„÷%7|ó÷U  ýˆ¸X$,†B÷ ê÷%kd÷%7\ó÷U€ý÷5pzýÌ÷5b,¬BrýˆìW÷hý®7 ª7 ¦À¢÷ ,w jjVÆ,ÒBöWˆöW÷5BýBw’ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿé,øBÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿,Cÿÿÿÿÿÿÿÿÿÿ ********************* ;* M A G T A P ** ;* ** ;* PROGRAM IDENTIFICATION. MAGTAP - MAGNETIC TAPE INTERFACE ** ;* SUBROUTINE USING THE KT-11C AND THE GULF CONTROLLER ** ;* ** ;* PURPOSE. ALL COMMUNICATIONS WITH THE MAGNETIC TAPES WILL ** ;* BE THROUGH THIS SUBROUTINE. THIS R .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 N CESSOR STATUS REGISTER TPB: 177566 ;TELETYPE REGISTERS TKB: 177562 TPS: 177564 TKS: 177560 ; ;DISK I/O REGISTERS ; DCS: 177460 ;DISK CONTROL REGISTER WC: 177462 ;WORD COUNT REGISTER CMA: 177464 ;CURRENT ADDRESS REGISTER DAR: 177466 ;LOWER 16 BITS OF DISK ADDRESS DAE: 177470 ;EXTENSION ADDRESS REGISTER DBR: 177472 ;DATA BUFFER REGISTER MA: 177474 ;MAINTENANCE REGISTER ADS: 177476 ;LOOK AHEAD REGISTER VECTOR: 204 ;INTERRUPT VECTOR ADDRESS STATUS: 206 ;DISK INTERRUPT STÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ˜,DCÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÆ‘,jCßxÿ÷°ü÷ÆX²ü÷¬ü¶ü7 ¦ü7 žü7 œüw š,�C. ÷¢ü”üÿUnü‰ÿ‹hüý€ÿ bü€÷„ü÷Vüä,¶CŽü÷Vü†ü÷ ‚üw Êè÷ \üÿU8ü‰ÿ‹2üý€Õ,ÜCÿ ,ü€÷,ü\ü÷ Xü÷üTü÷>üw ”è7 8üÀ,D7 2ü÷æB"ü÷@ü÷$üüÿUîû‰ÿ‹èûý€ÿ p,(Dâû €÷Üûü÷ü ü÷øûw NáÀòûtÀe¡,NDÆX7øûÁ@ÐÿÿC~ÿU¨û÷¼û÷ÆX¾û÷Äû®,tD´û‰ÿ‹�ûý€ÿ Šû€÷„û¼û÷¬û´û÷ °û÷œû,šDw ò÷pûÆw ’jV�Wˆ�WÕÀ”ûÁ@ B~�,ÀD7 tû÷rû`û÷ÆXOUTINE PERFORMS THE ** ;* FOLLOWING MAGNETIC TAPE FUNCTIONS: ** ;* 1 OPEN (RETURN STATUS) ** ;* 2 CLOSE (NO OPERATION) ** ;* 3 READ ** ;* 4 WRITE ** ;* 5 WRITE FILE MARK ** ;* 6 REWIND UMBER 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 ATUS PRIORITY:BIT7 ;DISK PRIORITY LEVEL ; ; ; ; ; ; ;RF11 DEDICATE REGISTERS (MEMORY) ; FLAG: 0 ;INTERNAL PROGRAM FLAG RANNU: 146723 ;RANDOM NUMBER PRIME WRDCT: 0 ;WORKING WORD COUNT TRACK: 0 ;WORKING DAE DMA: 0 ;WORKING DAR PATNU: 0 ;DATA PATTERN INDEX BUF: 0 ;WORKING DATA BUFFER (OUT-IN) TWRDCT: 0 ;TEMP WORD COUNT TDMA: 0 ;TEMP DAR SWRDCT: 0 ;STANDARD WORD COUNT ERCOUNT:0 ;ERROR COUNT FOR MESSAGES. SAVE: 0 SAV1: 0 PASS: 0 DSKNOR: 0 ^û÷@Pû‰ÿ‹0ûý€ÿ *û €÷¤,æDLû÷ûVû÷ûNûw –â÷%?8û· 2ûwöþn, Eÿ5îúwNþ7 ûßxÿ÷û7 û7 ûÆS,2E÷ÆXôú÷æúÀÆXÐüú· øúÀ%Æhù÷îúàúá,XEÿU®ú‰ÿ‹¨úý€ÿ ¢ú €÷œúÒú÷¾úw ôí",~E÷¶úÀú÷e  ú÷%´ú×7 ®ú7 ¬ú7 Œú÷„ú¨,¤E÷Æh„ú÷@vúÿUVú‰ÿ‹Púý€ÿ Jú €÷lú¢,ÊE÷>útúw œíÀÆhÁLúWtÂ@$� „~ ,ðE7PúwNú÷8úw Ž· $ú÷%@úÐÿ5êùŒ,F€7 úßxÿ7 úw ÆÿUØù÷ÆXôù÷@,ùý€ÿ 8ùÈ,ÔF €÷ Zù÷,ùbùw Šð÷-LùØ! ÷DùPù÷Ì!,úFHù÷ 4ùw Š÷%ÿ,ù÷5?$ù· ù7 ù· !, GùÒ÷U?ù÷e?úøËÿ5ÈøwÚþ7 èøß @,FGxÿ7 Üø7 èøÆ÷Ìø÷ÆXÎøÀ¶øÿU¢ø‰ò,lGÿ‹œøý€D@ÿ ’ø €÷ ´ø÷†ø¼øw ä é–øß,’GÂEþ—tÁŒøÁeÁEÀÿB`· ˜ø·”ø÷ ~øŸ,¸Gw Ô ÑÂ%· bø÷%?\øÈ7 Vø· PøÁLøÁe,ÞG _xÿ½ÿ5ø¨ÿUøß xÿw 8w :ÿœ,Hàú÷Æ÷@ø7 ø÷? ** ;* MOV #LIST,-(SP) ;PUSH LIST ADDRESS ON STACK ** ;* EMT MAGTAP ** ;* ** ;* THE FORTRAN EQUIVALENT CALL IS: ** ;* ** ;* CALL MAGTAP(IADDR(LIST)) ** ;* TSKEND-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  ; 14 & 16 ARE NEEDED FOR ODT BEQ 3$ CMP #200,R0 ; DONE BNE 1$ ; NO ; BACKGROUND TEST VECTOR MOV #XWAIT,@#20 CLR @#22 ; SET EMT TRAP VECTOR MOV #EMTRP,@#30 ; TTY VECTOR MOV #340,@#32 MOV #DISK,@#34 ; DISK CALLING VECTOR MOV #340,@#36 ; SET UP INTERRUPT VECTORS FOR D.D.C. DISK MOV #130,R0 MOV #132,R1 øÀ@ÁÆXÑUU~Ë,*H÷ÆXþ÷‰ÿ‹Ö÷ý€ÿ Ð÷ €÷ò÷÷Ä÷ú÷w " ÏD,PH7 Ö÷· Ð÷‰ÿ‹®÷ý€ÿ ¨÷ €÷Ê÷÷œ÷Ò÷w ú g,vH»÷€¨÷÷ ¦÷÷?¢÷÷Æh ÷‰ÿ‹x÷ý€ÿ r÷ €Û,œH÷”÷÷f÷œ÷w Ä  À@ÁÆhÑ%UU~ ÷ú,ÂHp÷wz÷÷UUv÷w ¼ ŒÀ@Ñ%UU~ ÷ó,èHL÷÷UUV÷wP÷w ˜ wòþÿ5þöúÿU÷߀,Ixÿw (w ÿàäöÆÀ€ÁÆXѪ*~÷€ö,4Iðö÷ÆXòö7 èö÷?äö‰ÿ‹Àöý€ÿ ºö €÷´öêöî,ZI÷Ööw Ï÷@ºö7 ¸ö÷?´ö÷Æh²ö‰ÿ‹,€IŠöý€ÿ „ö €÷¦ö÷xö®öw Ö ´À@ÁÆhÑ%÷,¦Iª*~ ÷‚ö÷ª*Œöw†öw  ** ;* THE FORMAT OF THE LIST IS AS FOLLOWS: ** ;* ** ;* LIST 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 ** ;* +1 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,2$: MOV #DKINT,(R0) ; INTERRUPT ROUTINE MOV #200,(R1) ; PSR ADD R2,R0 ADD R2,R1 CMP #170,R0 ; DONE BNE 2$ ; NO ; SET UP START ADDRESS MOV #137,@#200 ; JMP MOV #START,@#202 ; SET UP JUMP INSTRUCTIONS MOV #600,R0 MOV #137,(R0)+ ; JMP MOV #ADT2,(R0)+ ; EXTRANEOUS DATA ALTERATION TEST MOV #137,(R0)+ Î  ÷^öw �,ÌIn÷@Rö÷ÆhTö7 Lö‰ÿ‹(öý€ÿ "ö)€÷DöÕòI÷öLöw t ƒË,>JÀ@ÁÆhÑ%ª*~ ÷àõ÷ª*êõwäõw , ÿ,dJwœþÿ5’õú7 ¶õ7 °õ÷¸õ¨õ÷ŽJ¼õÿàxõ/,ŠJw 2w vß’õxÿ÷5@„õ÷ÆXˆõC‰ÿ5Rõl,°JÿhõHõ÷5 `õ÷ÆXdõÿà2õG‰ÿ5À,ÖJ(õÿ>õõ÷56õ*÷Æh:õ÷E(õÿ¹,üJàõw 8· õE‰ÿ5ðôÿõæôÿ5þ,"KÜôw 0w ÷ðôõ÷Eüÿ õ÷%õÜÿ5¸ô3,HK—÷ ÞŸ÷ Îô€w\÷eÌô÷%$Æôˆ7 Àô÷j,nKþÐôÆ÷E¦ô÷6L¾ôÿšôzô÷¶ôÁÆXw ,”KJ÷Eþ* õ0 RETURN ERROR PARAMETER (0 TO 14) ** ;* +12 SYSTEM (CALLING TASK #) ** ;* +14 DATA BUFFER ADDRESS ** ;* +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 ** ;* 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,! ; JMP MOV #ADT3,(R0)+ ; SECTOR ADDRESSING TEST MOV #137,(R0)+ ; JMP MOV #ADT4,(R0)+ ; TRACK ADDRESSING TEST MOV #137,(R0)+ ; JMP MOV #ADT5,(R0)+ ; LOOK AHEAD REGISTER TEST MOV #137,(R0)+ ; JMP MOV #SPIRAL,(R0)+ ; SEQUENTIAL TRACK ADDRESSING FOR READ MOV #137,(R0)+ ; JMP MOV #XSPIRL,(R0)+ ; SEQUENTIAL TRACK ADDRESSING FOR WRITE MOV #1"÷$ ‚ô÷ €ô÷EÀÿzô÷Eþ ÷5Ú,ºK ÷  ÷ `ô÷ZôvôÁÆXw ÷ÆXRôÿU ,àK*ôC‰ÿ5ôÿ,ô ôG‰ÿ5ô-,Lÿôöó÷Æhôw $E‰ÿ5àóÿöóÖóÏ,,Lw (w ÷5æó÷EÞów ò *@aWw è Ò,RL(@mWw Þ &@�WˆUWmWaW�Wÿÿ· ÐóŠÿ5n,xL†ówìþ7 ¦ó7  ó÷5”ó÷Žó®ó÷Eãÿ¨ó÷-£,žL¤óœó÷exóˆ¿X÷Elówðõff&ÅNóò,ÄLÀ`óÀEþtÁVóÁEÀÿ@` åNóåBó � ,êLwVó÷E€ÿPóåLó€�…ÿEüòÿ ór€÷U>,Mó÷þò,ó÷EÀÿ&ów  D@mWˆW÷Üòó÷Eøÿ4,6M ó÷%ó ÷Þò# +26 COUNT ** ;* +30 STATUS ** ;* +32 -BACKSPACE FLAG REPEAT COUNT ** ;* +34 RESERVED ** ;* +36 RESERVED ** ;* ** ;* THE RETURN ERROR CODES ARE AS FOLLOWS: $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: %37,(R0)+ ; JMP MOV #RANEX,(R0)+ ; DATA PATTERN TEST (WITH OPTIONAL BACKGROUND) CLR R0 ; SET UP JSR PC,SETREG ; REGISTERS HALT START: RESET ;CLEAR THE WORLD MOV #1000,%6 ;SET UP STACK MOV #340,@CSR ;LOCK UP INTERRUPT LEVELS CLR FLAG ;CLEAR PROGRAM FLAG CLR TRACK ;CLEAR TRACK REGISTERS CLR DMA ;CLEAR DAR REGISTERS CLR PATNU ;CLEAR PATTER COUNT MOV #1000,SWRDCT ;SET UP STANDARD WORD COUNT MOV SWRDCT,WRDCT &þò÷Eüÿøòw êD@ùWˆùW÷þ,\M´òäò÷ àòw ÒD@aWˆmWaWÿÿ÷’òÈòw ºD@#,‚MuWˆuWÿ5@|ò÷~ò¬ò÷¨ò÷Eÿ¢òw ”D@·,¨M�WˆFW�WÿÿÿURòÆÿ5<òtòÿ 9,ÎM>òÿ5(òÎåÿ5òÿUòÿ5 g,ôM òÿ5òÆüÿ5€òñ…ÀêñÀE€ÿ/,N÷Eò7Pò÷ò…ÁöñWtúÿÁmòñÂìñ—tO,@NB`‚ ·þñ¿ Æñ÷U@ÎñÁ5ÀÿÁå@÷eÄñ÷5Ž,fNþ¾ñ7 ¸ñ ÎeÁEÀÿw¬ñ÷5@žñ‡w ®�,ŒN*@aWw ¤F@mWˆ8WmWaWÿÿ÷E@vñ7 zñ7 ù,²Ntñÿ5Fñ‡Àhñ÷^ñzñÁÆXÀ%"8O¸,ØN÷ hñû…ÀPÄNÃ' ** ;* ** ;* 0 I/O SUCCESSFUL ** ;* 1 LIST ALREADY IN A QUEUE ** ;* 2 INVALID DEVICE TYPE ** ;* 3 ILLEGAL EXIT TYPE ** ;* 5 ILLEGAL DEVICE NUMBER ** ;* 6 ILLEGAL COUNT FOR SPACE OR SKIP 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 ) TST @SR BMI CONM ;OPERATE UNDER PROGRAM CONTROL BIS #70000,FLAG JMP ADTST ;ENTER OPERATOR CONVERSATION MODE CONM: EMT +1 ;ASK ABOUT DATA TEST ONLY CON1 JSR %7,ALPHA ;GO WAIT FOR ANSWER CMP #153,TEXBUF ;TEST FOR YES BNE 2$ ; BRANCH IF NOT YES BIS #BIT10,FLAG BR 4$ 2$: CMP #67,TEXBUF ; TEST FOR NO BNE CONM ; TRY AGAIN IF NEITHER YES OR NO 4$: EMT +1 CON2 ;ASK ABOUT MULTI DISK MODE JSR %7,ALPHA * À D B à ûÀm8D ¢,þNÄm4B Àe/D B ÄeOB Âe€`D 7÷ ñ1,$O7 ÷ ñ×…ÿÿH¹·F€8ŽÇqUUªª,JOßÿBó¼žg€PÃ07 êð÷ÆXÔð÷ÆhÐðÿ/ÊðÊðï,pO· Òð÷-¬ðÌð÷e´ð÷e°ðï…÷UŽð÷¦,–O’ðªð÷Šð¦ð÷m¤ðžð÷5Àÿ˜ð· ”ð÷å@Œðö÷Ä,¼OdðŠð÷Eãÿ„ð÷€ð÷]|ðvðw fD@aWw \F@mW�,âO÷PðZðw LD@®W÷BðJðw <D@¾W÷ðž,P:ð÷Eüÿ4ðw &D@ùWˆWùWmWaW®W¾Wÿÿÿ5f,.PÐïžÄÆXÄÆhÀ ~…ÄØïD ÄeÆh£,TP!Æx…Ô ú÷U¼ï7÷åúw ÆjV�W,,zP7ì÷åæ÷âàw ¬jV+ ** ;* 10 ILLEGAL I/O FUNCTION CODE ** ;* 11 FATAL HARDWARE ERROR, STATUS REG IS IN WORD 13 ** ;* 12 MAGNETIC TAPE TIME OUT ** ;* 13 END OF TAPE DETECTED ;* 14 WRITE COMMAND FOR REAL WITHOUT WRITE RING ** ;* ** ;* COUNT =NUMBER OF WORDS READ BY THE READ COMMAND ** ;* ,; 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: -;GO WAIT FOR ANSWER CMP #153,TEXBUF ;TEST FOR YES BEQ 3$ CMP #NO,TEXBUF ; NO BEQ DATTES ; DO NOT ENTER STATIC TEST BR 4$ 3$: BIS #BIT11,FLAG ;SET FLAG TO ENTER STATIC TEST DSKDR: EMT +1 CON3 JSR %7,NOCHA SUB #1,TEXBUF CMP #10,TEXBUF BLOS DSKDR MOV TEXBUF,DSKNOR ROL DSKNOR ROL DSKNOR ; DSKNOR CONTAINS NUMBER OF DISKS - 1 TIMES 4 BR ASKWC DATTES: EMT +1 CON4 ;ASK UNIT NUMBER JSR %7,NOCHA ;WAIT FOR NO. .¾Wˆ,W�W¾WÿÿÚ,, PÿUfïÿàVïÆ÷ÚPN¯÷àJ¯÷&vïÿ rïê,ÆP÷%&ÿlï÷e `ïô÷$¯7 "¯Æ÷å ˆ,ìPJï÷åÆXDï÷@ï:ï7 6ï÷2ï"ïÿ€øî÷Q0ï7 È,Qï7 ï÷ ï&ïÁÆXw ºý÷ÆXïC‰ÿ5Ìîÿ,8QÿâîÂîG‰ÿ5¶îÿÌî¬î÷ ÐüÝÖ,^QØ÷¢Q¦®7 ¤®÷þÌîÿUŒî · úÿ÷‹öÿû€ö,„Q· ´î÷ óÿàlîÿEfîˆXwp÷‹8,ªQ„­ß0ÿ߀ÿ2ÿßR4ÿ· RÁN_6ÿÁEüÿM,ÐQ_8ÿß0ÿÁ:7 p£ß5Põ‡ß5Põ÷$*öQ îÿ‡ßRõ߯XVõßðTõßRõ‡ê,"SÆ÷ ÿUÜì7 öì7 ðì÷*Sí/ =NUMBER OF RECORDS (+-N) TO SPACE ** ;* =NUMBER OF FILES (+-N) TO SKIP ** ;* =UNUSED FOR ALL OTHER FUNCTIONS ** ;* ** ;* PROGRAMMER: 67 ** ;* DATE 10.04.72 ** ;* ** ;* 0 .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 N1CMP #10,TEXBUF ;IS NO = O>10 BLOS DATTES ;NO CLC ROL TEXBUF ROL TEXBUF ; PLACE DISK NUMBER IN FLAG BIS TEXBUF,FLAG ASKWC: EMT +1 CON5 ;ASK ABOUT OPTIONAL WORD COUNT JSR %7,ALPHA ;WAIT FOR ANSWER CMP #153,TEXBUF BEQ WCCON ; BR IF YES CMP #NO,TEXBUF ; TEST FOR NO BEQ OPDAR ; ASK ABOUT OPTIONAL DAR BR ASKWC ; ASK AGAIN WCCON: EMT +1 CON6 ;ASK LENGTH OF WC JSR PC,NOCHA 2÷œSЬ÷àD,HS̬C‰ÿ5®ìÿÄì¤ì÷ ÈúòáÿUžìD,nS7 ¸ì7 ²ì÷hSÄìG‰ÿ5|ìÿ’ìrì÷ c,”S–úòwŽÿÿUjì÷ªSl¬÷œSd¬Æ÷ÔþŠì],ºS· „ìüw¢ÿÆ÷ `7 Xì7 Rì÷ÎSdì÷TV,àS2¬÷à.¬G‰ÿ5ìÿ&ìì÷ *úòäÐ,TÿUì÷T¬÷Tú«Æ÷Ôþ ì· ìüz,,TÐÿUØë· ìÆ÷êë7 äë7 Þë÷äë÷Ï,RTàëÐëw fú÷ÆXÎë÷.TÚëC‰ÿ5’ëÿ¨ëV,xTˆëG‰ÿ5|ëÿ’ërë÷ –ùçˆX4,žT¢ëÿ\ëhëüÿTëbëüÿLë\ëüÿDëVëüÿ<ë�,ÄTPëüÀNëûÿà*ëÿÿÿ0ëÿÆX,ë3 GULF ELECTRONIC SYSTEMS ** ;* ** ;********************************************************************** ; .DEF MAGTAP,MTINT .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 FORO4UMBER 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 5BIC #3,TEXBUF ; MAKE A MULTIPLE OF 4 TST TEXBUF BEQ WCCON CMP #1001,TEXBUF ;IS WORD COUNT>1000 BLOS WCCON ;YES ASK FOR COUNT AGAIN MOV TEXBUF,SWRDCT ;OPERATING WORD COUNT MOV SWRDCT,WRDCT ; OPTIONAL SECTOR ADDRESS **************** OPDAR: EMT +1 CON7 ;ASK ABOUT OPTIONAL DAR JSR %7,NOCHA CMP #100,TEXBUF ; 77 MAX SECTOR NUMBER BLOS OPDAR MOV TEXBUF, DMA ;TEMP DAR REGISTER OPPAT: EMT +1 CON8 ;ASK ABOUT DATA PATTERNS JSR %7,NOCHA CMP #23,TEXBUF6ÿë"ë¸,êTÿ5ëðÿ‹ëý€ìÿU ë÷üê@ë÷<ë8ë÷Eüh,U2ë7 .ë7 *ë7 &ë7 "ë7 ëÿëèê÷Ðêë÷ëý,6Uw ëw ëw ë÷EÿüêÿøêÄêÿÆh¼êÿÿÿ´êÿU,,\U¬êÿ‹¨êý€ÿ-Üê”êÆûw ÆD@ÒWw ¼6@HWp,‚UˆFWHWÒWÿÿ…w ¦D@ÒWw œF@ßWw ’À,¨U6@HWˆFWHWÒWßWÿÿ…€à%ˆ.€Îeì,ÎU7”L÷¥@F÷¥%<÷¥"4÷ îÿ53,ôU@êÿ� êÿ‹êý€‡÷• ÷ àÿ÷• ÷ ,VÖÿØ€Îe7 ÷%ÿÿˆów,Aæ,@VB�`Ã"ÃEøÿÃe0á�÷E7 7 7  3,fVî…÷ „÷@|ÿà‚é7 pÿ‹‚éý€7S2 = 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 SYSTEM = 10. ;RESERVED (SAVE TASK NUMBER) DATA = 12. ;ADDRESS OF DATA BUFFER DTPAR = 14H .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 E ;TEST FOR CORRECT NO BLOS OPPAT ;ASK AGAIN CMP #22,TEXBUF BEQ OPWRT ;DATA PATTERN UNDER PROGRAM CONTROL BIS #BIT15,FLAG ;SET PROGRAM FLAG MOV TEXBUF, PATNU ;OPERATOR WANTS TO SELECT DATA CLC ROL PATNU BIC #70000,FLAG ;CLEAR OP MODE BITS IN FLAG OPWRT: EMT +1 CON9 ;ASK ABOUT WRITE JSR %7,ALPHA CMP #153,TEXBUF ;TEST FOR YES BEQ $5 ; BR IF YES CMP #NO,TEXBUF ; TEST FOR NO BEQ OPWCK ; GO ASK ABOUT WRITE CHECK Fÿ†,ŒVxétéÿ‹téý€ÿ%ÿjé ˆÐW÷EL7 H7 D7 ·,²V@çÿ%�Jé‡ÿ=2@éˆÎWÛ÷4épé÷EøÿP,ØVjé¡w ¡w ¡w ÷mTéÈÀEøÿtÉ,þVÀeÀêÁ @Ð C~‡%DATA ERR @%STAT],$WUS ERR @%EXTRA BKS @%DK ADDR ERR @%@ A,JW ERR CNT @%RANEX ERR @ DAR @ !,pWDAE @ DCS @ HRD ERR@ WÊ,–WRD CNT@ WRD ADDR.@ GD DATAð,¼W @ BD DATA @?@/@ WRD1 @ ´,âW WRD2 @%UNIT NO.@ @ READ @%CPU BK,XGRND TIMED OUT@%OK!@%DATA TEST ONLY? @�G. ;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 = 26. ;RESERVED 1 RES2 = 28. ;RESERVED 2 RES3 = 30. ;RESERVED 3 ; MTDVLM""""""" """""""""""""""""""""""""""""""""""""""""""DDDDDDD@ˆˆˆˆˆˆˆ€ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDADD7B €€B €B €B B C£ð.•{¿ f¡›£ð.¡K¿ ËF›oQ8}dÓ‹ žH+›‚T}€À‹ þ $›ƒT}€À‹ þ( X›£ð.–{ü êJgâ›Ô ^Zf›Õ h\l›Õ vj Š›Û †p �›Û †Ž ®›$DÿÿÿÿÿÿÿÿÿÿÿïîîîîîîîîîîîîîîîîîîîîîîîîînffffffffffffffFDDDDDDDÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅaå €�Í‹æÄ,L ƒÖ B8Žw&ÄB“Œ ýƒàÇ` % &ˆÄ‚— ýÿ}†&*ˆCÒ$’$ŽÎ’Âe ¦’ÎEÀÿ—%>k†ŽŒ †—£Î a€Ê‹a�ÊÕ€ŠŠ¦¦˜æ×$Ž & *ˆÖ PÓ$â ΋ÎŠË  ìË Î‹ ¡Î €Ó óËdË ÎŠ Î �(ˆÍ 1�£'ˆuÊ �÷ ÂQ$f €$Ë5@ ðU ‘C΋ Î �Cb÷ ŽM΋ÍðU@ ððU€ &„ ¥¥„ „ Ñ B"‘â‹Ã Å.&0 æM &0 & þÿ�M 0Š ¶&I BR OPWRT ; ASK AGAIN $5: BIS #BIT14,FLAG ;YES SET FLAG BIT OPWCK: EMT +1 CON10 ;ASK ABOUT WRITE CHECK JSR %7,ALPHA CMP #153,TEXBUF ;TEST FOR YES ANSWER BEQ $6 ; BR IF YES CMP #NO,TEXBUF ; TEST FOR NO BEQ OPRD ; GO ASK ABOUT READ BR OPWCK ; ASK AGAIN $6: BIS #BIT13,FLAG ;YES SET FLAG BIT OPRD: EMT +1 CON11 ;ASK ABOUT READ JSR %7,ALPHA CMP #153,TEXBUF ;TEST FOR YES A,.X%MULTI DK MODE?@%# OF DKS 1 TO 10 OCTAO,TXL?@%EX. DK?@%OPT WRD CNT? @%LENGTH (1 õ,zXTO 1000)?@%WRD ADDR?@%OPT. DATA PAT. #, X?@%WRITE?@%WRITE CHECK?@%READ?@%END@ª*°Æxª*åP@iK = 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 REGISTER MTMEMO = 167546 ;MEMORY ADDRESS REGISTER .IFF MTSTAT = 172520 ; STATUS REGISTER MTCOMM 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 MNSWER BEQ $7 ; BR IF YES CMP #NO,TEXBUF ; TEST FOR NO BEQ CHKFLG BR OPRD ; ASK AGAIN $7: BIS #BIT12,FLAG ;SET FLAG TO READ CHKFLG: BIT #70000,FLAG BEQ OPWRT ; GO BACK AND ASK AGAIN IF ALL NO ; ; ; ADTST: BIT #BIT11,FLAG ;ARE WE IN MULTI DISK MODE BEQ EXMFLG ;BRANCH IF NO. EMT +1 MES11 MOV FLAG,ACNVX ROR ACNVX ROR ACNVX MOV ACNVX,R0 ; SET UP DEVICE PAGE REGIN; DDCGTP.S08 TEST DDC SET IN BYTE 0 OF SW REG , BACKGROUND BYTE 1 OF S ; DDCGTP.S07 11-SEP-73 ; DDCGTP.S06 ; DDCGTP.S05 ; DDCGTP.S04 ; DDCGTP.S03 AUG-28-73 ; DDCGTP.S02 ; DDCGTP.SO1 AUG-24-73 ; DDCGTP.S00 AUG-21-73 .TITLE DDCGTP ( D D C GENERAL TEST PROGRAM ) BIT0=1 BIT1=2 BIT2=4 BIT3=10 BIT4=20 BIT5=40 BIT6=100 BIT7=200 BIT8=400 BIT9=1000 BIT10=2000 BIT11=4000 BIT12=1000O= 172522 ; COMMAND REGISTER MTBCNT = 172524 ; 2'S COMPLEMENT BYTE COUNT REGISTER MTMEMO = 172526 ; 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 ;WRITE WITH EXTENDED GAP SPCF = 20 ;SPACE FILE FORWARD BCKF = P 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,QSTERS JSR PC,SETREG JSR %5,CONV ACNVX MES12 1 EMT +1 MES12 EXMFLG: BIT #BIT10,FLAG ;TEST FOR DATA TEST ONLY BEQ ADT2 ; DO COMPLETE TEST JMP DATAT ;DO DATA TEST ONLY TSTBF: .REPT 40 .WORD -1,-1 .ENDR ;***ADDRESS ADT2*** ; ;IN THIS TEST WRITE TRACK ZERO WITH ZERO'S ;THEN WRITE ALL ONES IN AN ADDRESS ;CHECK IF WRITING ONES IN THAT ADDRESS ALTERED ;ANY OTHER ADDRESS IN THE TRACK ;FOLLOW THIS PROCEDURE FOR ADDRESR0 BIT13=20000 BIT14=40000 BIT15=100000 R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 SREQ = 177570 ; SWITCH REGISTER EQUATE NO = 67 ; WRITE=TRAP+3 WRCHECK=TRAP+7 READ=TRAP+5 ; ; ;DDC DATA TEST PROGRAM ;VECTORS USED IN PROGRAM ;#1 LOC 130,134,140,144,150,154,160,164 DISK INTERRUPT ;#2 LOC 30 EMT (TELETYPE OUTPUT) ;#3 LOC 34 TRAP (DISK HANDLERS) ;#4 LOC 14 TRACE TRAP (USED IN BACKGROUND TEST) ;#5 LOC 20 IOT TRAP (USED IN CALLING BACKGROUND TESS40 ;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 ENABLE MTCLR = 30000 ; CLEAR CONTROLLER MTRWD = 100 ; TEST IF 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,US (SECTORS) 1 TO 77 ; ; ADT2: MOV #1000,%6 ;SET UP STACK MOV #2000,@#SREQ ; SET LIGHTS MOV #4000,WRDCT ; SET UP WORD COUNT MOV #OUTBUF,BUF ;SET UP CURRENT ADDRESS MOV PATNU,SAVE CLR PATNU CLR TRACK CLR DMA JSR %5,PASEL ;SET UP DATA BUFFER MOV SAVE,PATNU ; ZERO SECTORS 0 TO 37 RFADT: BIS #BIT8,@DCS WRITE 3$: TSTB @DCS ; TEST FOR READY BPL 3$ TST @DCS ;TEST FOR ERROR BPL RFADTY MOV #1,ERCOUNT ;ERROR OCVT) ; ;I/O ADDRESS POINTERS SR: 177570 ;SWITCH REGIISTER CSR: 177776 ;PROCESSOR STATUS REGISTER TPB: 177566 ;TELETYPE REGISTERS TKB: 177562 TPS: 177564 TKS: 177560 ; ;DISK I/O REGISTERS ; DCS: 177460 ;DISK CONTROL REGISTER WC: 177462 ;WORD COUNT REGISTER CMA: 177464 ;CURRENT ADDRESS REGISTER DAR: 177466 ;LOWER 16 BITS OF DISK ADDRESS DAE: 177470 ;EXTENSION ADDRESS REGISTER DBR: 177472 ;DATA BUFFER REGISTER MA: 177474 ;MAINTENANCE REGISTER ADS: 177476 ;LOOK AHEAD RWREWINDING 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 = 14 ;WRITE WITH EXTENDED GAP SPCF = 10 ; SPACE FILE FORWARD BCKF = 12 ; BACK SPACE FILE REWD = 16 ; REWIND MTDVS = 10 ; SHIFT COUNT MTINB = 20101 ; INTERRUPT 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: YCURRED MOV @DCS,WORK1 ;FETCH DCS REGISTER MOV @DAR,WORK DEC WORK ER1: JSR %5,STAER1 ;REPORT ERROR OCURRED ;****WRD1=CONTROL STATUS REG. AT THE THE TIME OF THE ERROR **** ;****WRD2=DISK ADDR. AT THE TIME OF THE ERROR **** BR RFADT ;LOOP ON ERROR RFADTY: MOV #40,DMA ; ZERO SECTORS 40 TO 77 RFADTX: BIS #BIT8,@DCS ;CLEAR THE DISK WRITE $4: TSTB @DCS BPL $4 TST @DCS ;TEST FOR ERROR BPL RFRC MOV @DAR,WORK DEC WORK MOV @DCS,WORK1 ;FETCH ZEGISTER VECTOR: 204 ;INTERRUPT VECTOR ADDRESS STATUS: 206 ;DISK INTERRUPT STATUS PRIORITY:BIT7 ;DISK PRIORITY LEVEL ; ; ; ; ; ; ;RF11 DEDICATE REGISTERS (MEMORY) ; FLAG: 0 ;INTERNAL PROGRAM FLAG RANNU: 146723 ;RANDOM NUMBER PRIME WRDCT: 0 ;WORKING WORD COUNT TRACK: 0 ;WORKING DAE DMA: 0 ;WORKING DAR PATNU: 0 ;DATA PATTERN INDEX BUF: 0 ;WORKING DATA BUFFER (OUT-IN) TWRDCT: 0 ;TEMP WORD COUNT TDMA: 0 ;TEMP DAR SWRDCT: 0 ;STANDARD WORD COUNT ERCOUNT:0 ;ERRO[ENABLE CLEA = 10000 ; CLEAR CONTROLLER ENAB = 100 ; INTERRUPT ENABLE MTCLR = 1400 ; CLEAR CONTROLLER MTRWD = 2 ; TEST IF REWINDING MTUIC = 400 ; UNIT NUMBER INCREMENT MDATST = 134600 ; BITS TO TEST IN THE DATUM STATUS REGISTER ENDTAP = 2000 ; END OF TAPE BIT .ENDC ; ; FIRST AND LAST WORDS FOR LIST THREAD MTFRST: .WORD 0 .IFZ $KT11C MTLAST: .WORD MTFRST 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 ]DCS REGISTER MOV #2,ERCOUNT ;SETUP ERROR COUNT ER2: JSR %5,STAER1 ;REPORT DISK ERROR ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF THE ERROR **** ;****WRD2=DISK ADDR. REG AT THE TIME OF THE ERROR **** BR RFADTX ;LOOP ON ERROR RFRC: CLR SAV1 RFRD: CLR SAVE WONWD: MOV #TSTBF,BUF MOV #100,WRDCT MOV SAV1,DMA BIS #BIT8,@DCS WRITE TSTB @DCS ;TEST FOR READY BPL .-4 TST @DCS ;TEST FOR ERROR BPL SUADB ;BRANCH IF NO CONTROL ERROR MOV @DCS,WORK1 MOV^R COUNT FOR MESSAGES. SAVE: 0 SAV1: 0 PASS: 0 DSKNOR: 0 ;NUMBER OF DISKS ON THE SYSTEM HRDER: 0 ;POINTER FOR HARD ERROR PASSC: 0 ; ;RF11 WORK REGISTERS ;(CAN BE CHANGED IN ANY ROUTINE) WORK: 0 WORK1: 0 WORK2: 0 WORK3: 0 WORK4: 0 WORK5: 0 BEGIN: RESET CLR R0 ; CLEAR INTERRUPT VECTORS MOV #2,R1 MOV #4,R2 1$: MOV R1,(R0) ; SET INTERRUPT VECTOR TO .+2 CLR (R1) ; HA_ .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 .IFNZ DATUM DROLD: .BYTE 0 ; LAST TAPE DIRECTION 0 FORWARD NMOLD: .BYTE 0 ; LAST UNIT NUMBER DRNEW: .BYTE 0 ; CURRENT TAPE DIRECTION 1 BACKWARDS NMNEW: .BYTE 0 `; THIS TASK READS CARDS AND PRINTS THE CARD CONTENT ON THE LINE PRINTER ; .TITLE TASK62 ( CARD READER AND LINE PRINTER TEST TASK ) .DEF TASK62 ; ; ROS I/O LIST MACRO .MACRO IOLIST DEV,EXTY,XIT,ETSK,LEV,DATB .LIST MEB .WORD 1 ; THREAD .BYTE DEV ; LOGICAL DEVICE NUMBER .BYTE EXTY ; EXIT TYPE .WORD XIT ; I/O COMPLETE .BYTE ETSK a SAV1,WORK MOV #3,ERCOUNT ;SETUP ERROR COUNT ER3: JSR %5,STAER1 ;REPORT ERROR ;****WRD1=DISK CONTROL STATUS AT THE TIME OF THE ERROR**** ;****WRD2=DISK ADDR. IN ERROR WHEN TRYING TO WRITE ALL ONES **** BR WONWD ;RE-WRITE WORD SUADB: MOV SAV1,R0 ; COMPUTE BUFFER ADDRESS OF -1 BLOCK ASH #7,R0 ADD #OUTBUF,R0 MOV R0,WORK4 ; SAVE FOR CLEAN UP MOV #100,R1 2$: MOV #-1,(R0)+ SOB R1,2$ WRCADT: BIS #bLT 3$: ADD R2,R0 ADD R2,R1 CMP #14,R0 ; 14 & 16 ARE NEEDED FOR ODT BEQ 3$ CMP #200,R0 ; DONE BNE 1$ ; NO ; BACKGROUND TEST VECTOR MOV #XWAIT,@#20 CLR @#22 ; SET EMT TRAP VECTOR MOV #EMTRP,@#30 ; TTY VECTOR MOV #340,@#32 MOV #DISK,@#34 ; DISK CALLING VECTOR MOV #340,@#36 ; SET UP INTERRc ; CURRENT UNIT NUMBER .ENDC ; ; MAGNETIC TAPE FUNCTION JUMP TABLE MTFCT =.-2 .WORD MOPEN ;OPEN .WORD MCLOS ;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 d ; ERROR TASK .BYTE LEV ; PRIORITY LEVEL .WORD 0,0 ; ERROR PAR / SYSTEM .WORD DATB ; DATA BUFFER ADDRESS .WORD 0,0 ; SYSTEM .NLIST MEB .ENDM ; END OF I/O LIST MACRO ; R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 CREAD = 24 LPRNTR = 25 ; TASK62: T10: MOV #CRLST,-(SP) EMT CREAD MOV #CRLST,ReBIT8,@DCS MOV #10000,WRDCT ; SET UP WORD COUNT MOV #OUTBUF,BUF ;SETUP CURRENT ADDR MOV SAVE,DMA ;SETUP DISK ADDRESS WRCHECK TSTB @DCS ;CHECK FOR READY BPL .-4 TST @DCS ;TEST FOR ERROR BPL CHKBUF ;BRANCH NO DISK ERROR MOV @DCS,WORK1 MOV SAV1,WORK DEC WORK MOV #4,ERCOUNT ;SET UP ERCOUNT ER4: JSR %5,STAER1 ;REPORT ERROR MOV @DAR,ACNVX ;SET UP DISK ADDR. FOR REPORT JSR %5,CONV ACNVX MES4 6 EMT +1 MES4 ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF TfUPT VECTORS FOR D.D.C. DISK MOV @#SREQ,R0 ; GET DISK NUMBER FROM BIC #177770,R0 ; BITS 0-2 OF SWITCH REGISTER ASH #2,R0 ; MULT BY4 ADD #130,R0 ; ADD IN VECTOR ADDRESS FOR UNIT 0 MOV R0,R1 ADD #2,R1 2$: MOV #DKINT,(R0) ; INTERRUPT ROUTINE MOV #200,(R1) ; PSR ADD R2,R0 ADD R2,R1 CMP #170,R0 ; DONE BNE g;REWIND MULTIPLE UNITS .ENDC ; MAGNETIC TAPE RETURN AFTER INTERRUPT JUMP TABLE MTRET =.-2 .WORD MOPEN ;OPEN .WORD MCLOS ;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 h0 MOVB 3(R0),R1 ; GET EXIT TYPE CMP #2,R1 BEQ T60 ; BR IF 2 CMP #1,R1 BNE T30 ; BR IF NOT 1 T20: CMP (R0),#1 BNE T20 BR T60 T30: CMP #3,R1 BEQ T40 ; BR IF 3 HALT T40: INC T80 T50: TST T80 BNE T50 T60: MOV #LPLST,-(SP) EMT LPRNTR MOV #LPLST,R0 MOVB iHE ERROR **** ;****WRD2=DISK ADDR. IN ERROR DURING WRITE CHECK **** ;****WRD ADDR.=ADDR. WHICH CONTAINS ALL ONES **** BR WRCADT ; CHKBUF: MOV WORK4,R0 ; CLEAR -1 BLOCK IN BUFFER MOV #100,R1 3$: CLR (R0)+ SOB R1,3$ ZEROAD: CLR SAVE ; MOV SAV1,DMA ;SETUP DISK ADDRESS MOV #OUTBUF,BUF MOV #100,WRDCT ; SET UP WORD COUNT WRITE TSTB @DCS ;CHECK FOR READY BPL .-4 TST @DCS ;TEST FOR ERROR BPL INDADT j2$ ; NO ; SET UP START ADDRESS MOV #137,@#200 ; JMP MOV #START,@#202 ; SET UP JUMP INSTRUCTIONS MOV #600,R0 MOV #137,(R0)+ ; JMP MOV #ADT2,(R0)+ ; EXTRANEOUS DATA ALTERATION TEST MOV #137,(R0)+ ; JMP MOV #ADT3,(R0)+ ; SECTOR ADDRESSING TEST MOV #137,(R0)+ ; JMP MOV #ADT4,(R0)+ ; TRACK ADDRESSING TEST MOV #137,(R0)+ k ;SKIP +-N FILES .IFNZ MULRE .WORD MUREWI .ENDC MTIMV =.-3 ; TIME OUT VALUE IN SECONDS .BYTE 5 ; 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 .Wl3(R0),R1 ; GET EXIT TYPE CMP #2,R1 BEQ T65 ; BR IF 2 CMP #1,R1 BNE T35 ; BR IF NOT 1 T25: CMP (R0),#1 BNE T25 BR T65 T35: CMP #3,R1 BEQ T45 ; BR IF 3 HALT T45: INC T80 T55: TST T80 BNE T55 T65: BR T10 T70: CLR T80 RTS PC T80: .WORD 0 CRLST: IOLIST 2,2,T70,0,0,DATA m MOV #5,ERCOUNT MOV @DCS,WORK1 MOV @DAR,WORK ER5: JSR %5,STAER1 ;****WRD1=CONTROL STATUS REG. AT THE TIME OF THE ERROR **** ;****WRD2=DISK ADDR. AT THE TIME OF THE ERROR **** BR ZEROAD ;LOOP ON ERROR INDADT: CMP #77,SAV1 BEQ LP2ADT ;LAST ADDR. CHECKED INC SAV1 JMP RFRD ;CHECK NEXT ADDRESS LP2ADT: BIT #BIT11,@SR ;IS BIT 11 SET IN SR BEQ ADT3 JMP ADT2 ;BIT 11 SET LOOP ON TEST .PAGE ;***** ADDRESS TEST ***** ; ;WRITE EACH UNIQUE ADDRESS ON ITSELF FOR TRACKn; JMP MOV #ADT5,(R0)+ ; LOOK AHEAD REGISTER TEST MOV #137,(R0)+ ; JMP MOV #SPIRAL,(R0)+ ; SEQUENTIAL TRACK ADDRESSING FOR READ MOV #137,(R0)+ ; JMP MOV #XSPIRL,(R0)+ ; SEQUENTIAL TRACK ADDRESSING FOR WRITE MOV #137,(R0)+ ; JMP MOV #RANEX,(R0)+ ; DATA PATTERN TEST (WITH OPTIONAL BACKGROUND) MOV @#SREQ,R0 ; SET UP UNIT NUMBER MOV #DCS,R2 ; SET FIRSoORD 1 .IFZ FOROS2 .WORD 0,0,0 ; RSVRD 1 TO 3 .BYTE SECR ; TIMER RESOLUTION .BYTE 20 ; TIMER OPTIONS (J) .IFF .BYTE 0 .BYTE 25 .ENDC .WORD 0 ; RESERVED .WORD MTTIM ; OPTIONAL (J=1) ; ; MACRO DEFINITIONS ; .MACRO SAV.56 .IFNZ $KT11C MOV @#$KPAR5,-(SP) MOV @#$KPAR6,-(SP) .ENDC LPLST: IOLIST 2,2,T70,0,0,DATA DATA: .WORD 120,0 .BLKW 50 .END TASK62 q 0 ;THEN READ IT BACK AND COMPARE FOR THE ;CORRECT DATA ; ; ADT3: CLR DMA ;CLEAR ACTIVE REG MOV #3000,@#SREQ ; SET LIGHTS MOV #0,TRACK ; USE MOV RATHER THAN 'CLR' FOR PATCHING IN TRAC CLR WORK CLR WORK1 MOV #1000,%6 ;SETUP STACK MOV #OUTBUF,BUF ;SET UP CURRENT ADDRESS MOV #4000,WRDCT ; SET UP WORD COUNT MOV #OUTBUF,%0 ;FILL BUFFER WITH COUNT INADB: MOV WORK,(0)+ INC WORK ;+1 COUNT CMP #OUTBUF+10000,R0 BNE INADB ;SET rT REGISTER ADDRESS JSR PC,SETREG ; REGISTERS MOV @#SREQ,R0 SWAB R0 MOV #RDCS,R2 JSR PC,SETREG HALT START: RESET ;CLEAR THE WORLD MOV #1000,%6 ;SET UP STACK MOV #340,@CSR ;LOCK UP INTERRUPT LEVELS CLR FLAG ;CLEAR PROGRAM FLAG CLR TRACK ;CLEAR TRACK REGISTERS CLR DMA ;CLEAR DAR REGISTERS CLR PATNU ;CLEAR PATTER COUNT MOV #1000,SWRDCT ;SET UP STANDARD WORD COUNT MOV SWRDCT,WRDCT TST @SR BMI CONM s .ENDM ; .MACRO RST.56 .IFNZ $KT11C MOV (SP)+,@#$KPAR6 MOV (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, Rt; THIS TASK WRITES TO DISK .TITLE TASK64 ( DISC WRITE TEST TASK ) .DEF TASK64 ; ROS I/O LIST MACRO .MACRO IOLIST DEV,EXTY,XIT,ETSK,LEV,DATB .LIST MEB .WORD 1 ; THREAD .BYTE DEV ; LOGICAL DEVICE NUMBER .BYTE EXTY ; EXIT TYPE .WORD XIT ; I/O COMPLETE .BYTE ETSK ; ERROR TASK .BYTE LEV ; PRIORITY LEVELuUP NEXT WORD MOV WORK,SAVE WRABF: BIS #BIT8,@DCS ;CLEAR THE DISK WORLD WRITE ;WRITE TSTB @DCS ;IS THE CONTROL READY BPL .-4 ;CONTROL READY TST @DCS ;IS THERE AN ERROR BPL TFBL ;NO ERROR MOV @DCS,WORK ;FETCH CONTENTS OF CONTROL REG MOV #6,ERCOUNT ;SET UP ERROR COUNT ER6: JSR %5,STAER ;REPORT CONTROL ERROR ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF THE ERROR **** BR WRABF ;RE-WRITE DATA TFBL: MOV SAVE,WORK ADD #40,DMA CMP #10000,WORK BNE INADv;OPERATE UNDER PROGRAM CONTROL BIS #70000,FLAG JMP ADTST ;ENTER OPERATOR CONVERSATION MODE CONM: EMT +1 ;ASK ABOUT DATA TEST ONLY CON1 JSR %7,ALPHA ;GO WAIT FOR ANSWER CMP #153,TEXBUF ;TEST FOR YES BNE 2$ ; BRANCH IF NOT YES BIS #BIT10,FLAG BR 4$ 2$: CMP #67,TEXBUF ; TEST FOR NO BNE CONM ; TRY AGAIN IF NEITHER YES OR NO 4$: EMT +1 CON2 ;ASK ABOUT MULTI DISK MODE JSR %7,ALPHA ;GO WAIT FOR ANSWER wETURN ; IS DEVICE TYPE = 4 INC R4 ; SET R4 = 2 CMPB DEVICE(R0),#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,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 MOVB x .WORD 0,0 ; ERROR PAR / SYSTEM .WORD DATB ; DATA BUFFER ADDRESS .WORD 0,0 ; SYSTEM .NLIST MEB .ENDM ; END OF I/O LIST MACRO ; R0 = %0 R1 = %1 R2 = %2 R3 = %3 R4 = %4 R5 = %5 SP = %6 PC = %7 EXITN = 4 TTYOUT = 13 TTYIN = 14 DISCIO = 23 DEFINE = 51 ; TASK64: ; FILE I D S10: MOV #TYOUT1,-(SP) EMT TTYOUT MOV #TYIyB-4 CLR WORK CLR WORK1 CLR DMA ADT3A: MOV #0,TRACK ; USE MOV RATHER THAN 'CLR' FOR PATCHING IN TRAC MOV #INBUF,BUF MOV #100,WRDCT RDTDN: BIS #BIT8,@DCS ;CLEAR THE DISK READ TSTB @DCS ;IS THE CONTROL READY BPL .-4 ;YES THE CONTROL IS READY TST @DCS ;IS THERE AN ERROR BPL ADRCMP ;NO ERROR MOV #7,ERCOUNT ;SET UP ERROR COUNT MOV @DCS,WORK ;FETCH CONTROL REG. ER7: JSR %5,STAER ;REPORT CONTROL ERROR ;****WRD1=DISK CONTROL STATUS REG.zCMP #153,TEXBUF ;TEST FOR YES BEQ 3$ CMP #NO,TEXBUF ; NO BEQ DATTES ; DO NOT ENTER STATIC TEST BR 4$ 3$: BIS #BIT11,FLAG ;SET FLAG TO ENTER STATIC TEST DSKDR: EMT +1 CON3 JSR %7,NOCHA SUB #1,TEXBUF CMP #10,TEXBUF BLOS DSKDR MOV TEXBUF,DSKNOR ROL DSKNOR ROL DSKNOR ; DSKNOR CONTAINS NUMBER OF DISKS - 1 TIMES 4 BR ASKWC DATTES: EMT +1 CON4 ;ASK UNIT NUMBER JSR %7,NOCHA ;WAIT FOR NO. CMP #10,TEXBUF ;IS NO { 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 MOV #5,R4 ; SET LOGICAL DEVICE ERROR CODE MOVB DEVNUM(R0),R2 BLT MTERR ; BR IF NEGATIVE DEVICE NUMBER CMP R2,#MTDVLM ; IS DEVICE NUMBER DEFINED BGT MTERR |NL,-(SP) EMT TTYIN JSR PC,CNV BLT S10 MOVB R1,DFLIST+6 ; SAVE FILE I D MOVB R1,DATA ; FILE TYPE OR PARTITION S20: MOV #TYOUT2,-(SP) EMT TTYOUT MOV #TYINL,-(SP) EMT TTYIN JSR PC,CNV BLT S20 MOVB R1,DFLIST+10 ; SAVE FILE TYPE ; UNIT NUMBER S30: MOV #TYOUT3,-(SP) EMT TTYOUT MOV } AT THE TIME OF THE ERROR **** BR RDTDN ;RE-READ ADRCMP: MOV #INBUF,R0 MOV DMA,R1 ASH #6,R1 MOV #100,R2 1$: CMP (R0)+,R1 BNE 2$ INC R1 SOB R2,1$ BR INCCMP 2$: MOV -(R0),WORK MOV R1,WORK1 MOV #10,ERCOUNT ;SET UP ERROR COUNT ER10: JSR %5,STAER1 ;REPORT COMPARISON ERROR ;****WRD1=DISK ADDR. WANTED **** ;****WRD2=DISK ADDR. RECEIVED **** INCCMP: INC DMA ;~= O>10 BLOS DATTES ;NO CLC ROL TEXBUF ROL TEXBUF ; PLACE DISK NUMBER IN FLAG BIS TEXBUF,FLAG ASKWC: EMT +1 CON5 ;ASK ABOUT OPTIONAL WORD COUNT JSR %7,ALPHA ;WAIT FOR ANSWER CMP #153,TEXBUF BEQ WCCON ; BR IF YES CMP #NO,TEXBUF ; TEST FOR NO BEQ OPDAR ; ASK ABOUT OPTIONAL DAR BR ASKWC ; ASK AGAIN WCCON: EMT +1 CON6 ;ASK LENGTH OF WC JSR PC,NOCHA BIC #3,TEXBUF  ; BR IF NOT INC R4 ; SET SKIP OR SPACE COUNT ERROR CODE CMP R1,#7 BLT MT02 TST COUNT(R0) BEQ MTERR ;BR IF COUNT IS ZERO CLR NWORD(R0) BR MT02 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 PR€#TYINL,-(SP) EMT TTYIN JSR PC,CNV BLT S30 MOVB R1,DILST+2 ; EXIT TYPE S40: MOV #TYOUT4,-(SP) EMT TTYOUT MOV #TYINL,-(SP) EMT TTYIN JSR PC,CNV BLT S40 CMP #3,R1 BLT S40 MOVB R1,DILST+3 MOV #DFLIST,-(SP) EMT DEFINE TSTB DFLIST+2 BEQ T10 S50: MOV #TYOUT5,-(SP) � INC SECTOR NUMBER CMP #100,DMA ; LAST SECTOR BEQ LPADT3 BR RDTDN ;GO READ BUFFER LPADT3: BIT #BIT11,@SR ;LOOP ON TEST? BNE ADT3 ;YES BIT 11 SET IN SR .PAGE ;RF11 TRACK SELECTION TEST ; ;WRITE THE FIRST AND LAST ADDRESS OF EACH TRACK ;WITH THE OCTAL VALUE OF EACH TRACK ;BITS 6 THRU 11 EQUAL TRACK NUMBER ;BITS 0 THRU 5 EQUAL 0 IN FIRST SECTOR OF EACH TRACK ;BITS 0 THRU 5 EQUAL 77 IN LAST SECTOR OF EACH TRACK ; ;AFTER WRITING THE DISK READ EACH ADDRESS ‚ ; MAKE A MULTIPLE OF 4 TST TEXBUF BEQ WCCON CMP #1001,TEXBUF ;IS WORD COUNT>1000 BLOS WCCON ;YES ASK FOR COUNT AGAIN MOV TEXBUF,SWRDCT ;OPERATING WORD COUNT MOV SWRDCT,WRDCT ; OPTIONAL SECTOR ADDRESS **************** OPDAR: EMT +1 CON7 ;ASK ABOUT OPTIONAL DAR JSR %7,NOCHA CMP #100,TEXBUF ; 77 MAX SECTOR NUMBER BLOS OPDAR MOV TEXBUF, DMA ;TEMP DAR REGISTER OPPAT: EMT +1 CON8 ;ASK ABOUT DATA PATTERNS JSR %7,NOCHA CMP #23,TEXBUF ;TEST FOR CORRECT NO ƒOGRAM STATUS REG. SPL 7 ;SET PRIORITY TO 7 .IFZ $KT11C MOV R0,@MTLAST ;QUEUE 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 „ EMT TTYOUT EMT EXITN T10: MOV #DILST,-(SP) EMT DISCIO MOV #DILST,R0 MOVB 3(R0),R1 ; GET EXIT TYPE CMP #2,R1 BEQ T60 ; BR IF 2 CMP #1,R1 BNE T30 ; BR IF NOT 1 T20: CMP (R0),#1 BNE T20 BR T60 T30: CMP #3,R1 BEQ T40 ; BR IF 3 BR S50 T40: INC T80 T50: TS…;AND COMPARE DATA FOR THE CORRECT VALUE ; ADT4: CLR DMA ;CLEAR WORK REGISTERS MOV #4000,@#SREQ ; SET LIGHTS CLR TRACK JSR R5,ZOBUF ; ZERO OUTPUT BUFFER MOV #1000,%6 ;SETUP STACK BIS #BIT8,@DCS ;CLEAR THE DISK WORLD MOV #OUTBUF,BUF ;SET CURRENT ADDRESS MOV #4,WRDCT ; SET WORD COUNT INSWT: WRITE ;GO WRITE TSTB @DCS ;IS READY SET BPL .-4 ;YES! WAIT FOR NOT BUSY TST @DCS ;TEST FOR ERROR BPL TSTTK ;NO ERROR GO ON MOV #11,ERCOUN† BLOS OPPAT ;ASK AGAIN CMP #22,TEXBUF BEQ OPWRT ;DATA PATTERN UNDER PROGRAM CONTROL BIS #BIT15,FLAG ;SET PROGRAM FLAG MOV TEXBUF, PATNU ;OPERATOR WANTS TO SELECT DATA CLC ROL PATNU BIC #70000,FLAG ;CLEAR OP MODE BITS IN FLAG OPWRT: EMT +1 CON9 ;ASK ABOUT WRITE JSR %7,ALPHA CMP #153,TEXBUF ;TEST FOR YES BEQ $5 ; BR IF YES CMP #NO,TEXBUF ; TEST FOR NO BEQ OPWCK ; GO ASK ABOUT WRITE CHECK BR OPWRT ‡ 2(SP),@(SP)+ ; QUEUE THE CURRENT REQUEST MOV (SP)+,MTLAST MOV 16(R0),@#$KPAR6 .ENDC .IFZ FOROS2 CMP 4*$KT11C+16(SP),#TSK.PC ; IS CALLER A TASK BNE MT04 ; BRANCH IF NOT .IFF TST ACTIVE BEQ MT04 .ENDC MOV $CTASK,R2 INCB IOSTAT(R2) MOV R2,SYSTEM(R0) MT04: MOV (SP)+,@#PS MOV #MTREP,RES1(R0) ; SET REPEAT COUˆT T80 BNE T50 T60: BR T10 T70: CLR T80 RTS PC ; T80: .WORD 0 ; CNV: MOVB INNUM,R1 SUB #60,R1 BLT CNV1 CMP #7,R1 BGT CNV1 ASH #3,R1 MOVB INNUM+1,R0 SUB #60,R0 BLT CNV1 CMP #11,R0 BGT CNV1 ADD R0,R1 RTS PC CNV1: SEN ; SET ERROR FLAG RTS PC ; ‰T ;SET UP ERROR COUNT MOV @DCS,WORK ;REPORT CONTENTS OF DCS REG ER11: JSR %5,STAER ;REPORT ERROR OCCURRED ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF THE ERROR **** BR INSWT ;GO RE-WRITE TSTTK: CMP #7777,OUTBUF ; TEST FOR LAST ADDRESS BEQ INSRD ;GO READ THE DATA BIT #77,OUTBUF ; IS IT SECTOR NUMBER ZERO BNE MVNEM ;NO BIS #77,OUTBUF ; YES, SET UP FOR LAST SECTOR IN TRACK BIS #77,OUTBUF+2 BIS #77,OUTBUF+4 BISŠ ; ASK AGAIN $5: BIS #BIT14,FLAG ;YES SET FLAG BIT OPWCK: EMT +1 CON10 ;ASK ABOUT WRITE CHECK JSR %7,ALPHA CMP #153,TEXBUF ;TEST FOR YES ANSWER BEQ $6 ; BR IF YES CMP #NO,TEXBUF ; TEST FOR NO BEQ OPRD ; GO ASK ABOUT READ BR OPWCK ; ASK AGAIN $6: BIS #BIT13,FLAG ;YES SET FLAG BIT OPRD: EMT +1 CON11 ;ASK ABOUT READ JSR %7,ALPHA CMP #153,TEXBUF ;TEST FOR YES ANSWER BEQ ‹NT 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 MOV $KPAR5,MTPAR5 ; SAVE KPAR5 FOR INTERRUPT POUTINE .ENDC MOV DRNEW,DROLD ; UPDATE TAPE DIRECTION AND UNIT NUMBER MOV FUNCT(R0),R1 ;RETURN JUMP TO ASL R1 JSR PC,@MTFCT(R1) ; Œ .BOUND TYOUT1: IOLIST 0,2,0,0,0,O1MG O1MG: .WORD 16,0 .ASCII /INPUT FILE I D/ .BOUND TYOUT2: IOLIST 0,2,0,0,0,O2MG O2MG: .WORD 20,0 .ASCII /INPUT FILE TYPE / .BOUND TYOUT3: IOLIST 0,2,0,0,0,O3MG O3MG: .WORD 22,0 .ASCII /INPUT UNIT NUMBER / .BOUND TYOUT4: IOLIST 0,2,0,0,0,O4MG O4MG: .WORD 12,0 .ASCII /EXIT TYPE / .BOUND TYOUT5: IOLIST 0,2,0,0,0,O5MG O5MG: .WORD 14,0 .ASCII /TASK64 ER� #77,OUTBUF+6 ADD #77,DMA BR INSWT ;GO WRITE MVNEM: INC OUTBUF ;INC. TO NEXT TRACK INC OUTBUF+2 INC OUTBUF+4 INC OUTBUF+6 CLR DMA INC TRACK ;INC. DAE REG. BR INSWT ;GO WRITE ; ;READ THE FIRST AND LAST ADDRESS OF EACH TRACK ;AND VERIFY IT HAS THE CORRECT DATA INSRD: CLR DMA ;CLEAR WORK REG. CLR TRACK CLR SAVE BIS #BIT8,@DCS ;CLEAR THE DISK WORLD MOV #INBUF,BUF ;SET UP CURRENT ADDR MOV #4,WRDCT Ž $7 ; BR IF YES CMP #NO,TEXBUF ; TEST FOR NO BEQ CHKFLG BR OPRD ; ASK AGAIN $7: BIS #BIT12,FLAG ;SET FLAG TO READ CHKFLG: BIT #70000,FLAG BEQ OPWRT ; GO BACK AND ASK AGAIN IF ALL NO ; ; ; ADTST: BIT #BIT11,FLAG ;ARE WE IN MULTI DISK MODE BEQ EXMFLG ;BRANCH IF NO. EMT +1 MES11 MOV FLAG,ACNVX ROR ACNVX ROR ACNVX MOV ACNVX,R0 ; SET UP DEVICE PAGE REGISTERS JSR � ROUTINE CMPB 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: MOV @#MTSTAT,STATUS(R0) RST.56 JSR R5,POPR ;RESTORE REGISTERS MOV (SP)+,(SP) ;MOVE RETURN ADDRESS RTS PC �ROR/ .BOUND TYINL: IOLIST 0,2,0,0,0,INMG INMG: .WORD 2,0 INNUM: .WORD 0,0 .BOUND DFLIST: .WORD 1 .BYTE 0,0 ; ERROR CODE / ERROR TASK .WORD 0 ; RESERVED .WORD 0 ; FILE I D .BYTE 0,0 ; FILE TYPE (PARTITION) / RESERVED .WORD 20 ; NUMBER OF SECTORS .BOUND DILST: IOLIST 1,2,T70,0,0,DATA DATA: .WORD 0 .BYTE 0,1 ‘ ; SET UP WORD COUNT RDTKS: READ ;READ DATA TSTB @DCS ;CHECK FOR READY BPL .-4 ;CONTROL NOT READY TST @DCS ;IS THERE AN ERROR BPL CMPDTK ;NO ERROR MOV #12,ERCOUNT ;SET UP ERROR COUNT MOV @DCS,WORK ;FETCH CONTENTS OF DCS ER12: JSR %5,STAER ;REPORT CONTROL ERROR ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF THE ERROR **** BR RDTKS ;GO RE-READ CMPDTK: CMP SAVE,INBUF ;IS DATA CORRECT BEQ CMNETK ;YES SETUP FOR NEXT WORD MOV SAVE,WORK1 ;CORRECT ADDRESS MOV INBUF,WORK ’ PC,SETREG JSR %5,CONV ACNVX MES12 1 EMT +1 MES12 EXMFLG: BIT #BIT10,FLAG ;TEST FOR DATA TEST ONLY BEQ ADT2 ; DO COMPLETE TEST JMP DATAT ;DO DATA TEST ONLY TSTBF: .REPT 40 .WORD -1,-1 .ENDR ;***ADDRESS ADT2*** ; ;IN THIS TEST WRITE TRACK ZERO WITH ZERO'S ;THEN WRITE ALL ONES IN AN ADDRESS ;CHECK IF WRITING ONES IN THAT ADDRESS ALTERED ;ANY OTHER ADDRESS IN THE TRACK ;FOLLOW THIS PROCEDURE FOR ADDRESS (SECTORS) 1 TO 77 ;“;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 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 PA; SCFLAG / INOUT .WORD 0,0,0 ; RES / RES / RES .WORD 0 ; RLSECT .WORD 200 ; NWORD .ASCII / TEST DATA FOR SYSTEM TEST TASK64 PROGRAM 1 / .ASCII / TEST DATA FOR SYSTEM TEST TASK64 PROGRAM 2 / .ASCII /TEST DATA FOR SYSTEM TEST TASK64 PROGRAM/ .EVEN .END TASK64 •;INCORRECT DATA MOV #13,ERCOUNT ;SET UP ERROR COUNT ER13: JSR %5,STAER1 ;REPORT SELECTION ERROR ;****WRD1=TRACK ADDR. WANTED **** ;****WRD2=TRACK ADDR. RECEIVED **** CMNETK: CMP #7777,SAVE ; IS IT THE LAST ADDRESS BEQ LPTSK ;END OF TEST BIT #77,SAVE ; IS IT ADDRESS ZERO OF THE TRACK BEQ ZRBIT ;NO! SETUP FOR LAST ADDR INC SAVE ;INC FOR TRACK NO. CLR DMA ; SET UP DAR INC TRACK ;INC TRACK BR RDTKS ;GO READ ZRBIT: BIS #77,SAVE – ; ADT2: MOV #1000,%6 ;SET UP STACK MOV #2000,@#SREQ ; SET LIGHTS MOV #4000,WRDCT ; SET UP WORD COUNT MOV #OUTBUF,BUF ;SET UP CURRENT ADDRESS MOV PATNU,SAVE CLR PATNU CLR TRACK CLR DMA JSR %5,PASEL ;SET UP DATA BUFFER MOV SAVE,PATNU ; ZERO SECTORS 0 TO 37 RFADT: BIS #BIT8,@DCS WRITE 3$: TSTB @DCS ; TEST FOR READY BPL 3$ TST @DCS ;TEST FOR ERROR BPL RFADTY MOV #1,ERCOUNT ;ERROR OCCURRED MOV @DCS,WORK—R'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 MTINT: .IFZ FOROS2 JSR R5,SAVE .IFF $SAVE .ENDC SPL 5 TST NMTREQ BMI MTEYIT .IFZ ˜4´ØtÌ:L,ØŸÆæ æ÷ `YŸŸ ÷ °ÿÀÁ!,þÀô ÃàôÄ“Âe€÷€ÔÜßUzÿ÷ ÜçÆ,$÷¨;zè÷àvèßüÿÁà÷â5ðçwîç÷D3êç«,Jwèç÷˜Gè÷àèß””ßà–÷ÌK è÷à´$pè÷’T ç÷àœç÷ؼç÷à¸ç÷@=±$Ž€ç÷à0|ç÷ ®þ÷ þý÷ bý÷ Zç7 Tç7ŠË$¬Ï4æhM÷ ¶*÷%¬4ü÷•¹47ŠK(æà$ÊN÷ œ*÷%:5ü÷•5(7Š¿æŒ'÷ %,è‚*÷%œü÷•©÷ \ý      ß•€ë› wjÖX‰,EFGHIJKLMß :NOPQRST™ ; SET UP FOR LAST SECTOR IN TRACK ADD #77,DMA BR RDTKS ;GO READ LAST ADDR OF TK LPTSK: BIT #BIT11,@SR ;IS BIT 11 SET IN SR BEQ ADT5 ; YES, LOOP ON TEST JMP ADT4 .PAGE ;RF11 LOOK AHEAD TEST ;WRITE ONE WORD UPON RECEIPT OF ;NOT READY READ THE LOOK AHEAD ;REGISTER IT SHOULD CONTAIN THE ;ADDRESS +1 ; ADT5: CLR DMA ;CLEAR REGISTERS MOV #5000,@#SREQ ; SET LIGHTS CLR TRACK CLR SAVE MOV #1000,%6 ;SETUP STACK MOV š1 ;FETCH DCS REGISTER MOV @DAR,WORK DEC WORK ER1: JSR %5,STAER1 ;REPORT ERROR OCURRED ;****WRD1=CONTROL STATUS REG. AT THE THE TIME OF THE ERROR **** ;****WRD2=DISK ADDR. AT THE TIME OF THE ERROR **** BR RFADT ;LOOP ON ERROR RFADTY: MOV #40,DMA ; ZERO SECTORS 40 TO 77 RFADTX: BIS #BIT8,@DCS ;CLEAR THE DISK WRITE $4: TSTB @DCS BPL $4 TST @DCS ;TEST FOR ERROR BPL RFRC MOV @DAR,WORK DEC WORK MOV @DCS,WORK1 ;FETCH DCS REGISTER MOV #2,›$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 MOV FUNCT(R0),R5 ;LOAD FUNCTION CODE (1 TO 8) ASL R5 JSR PC,@MTRET(R5) MOœ+,”ò ºà âzz,èzèæ¦f&æêôæìôÃþÿ€È m&F,÷ æ �ö%ªU ð$ ðµ a0 œ¥,4a— ^ŸÂ  ¦÷ † ^r°TÓ,ZrVrT° ðÅ &±ŠÃ)0Š ðÕÙ,€ ÷åÌ ?È ß�þÿ6 öÆe€�‚ƒ è,¦÷ ¤Îe ÞÅß@fÿ· w¼ß@fÿ· 6 ,Ìß�þÿŸìôŸêô€�‚ƒŽ‡öˆ ïö,òˆ êöˆ å&f¦ææêôæìô€ç,È%Uœ  æþÿŸðµ F÷ œÈ í� #4,WRDCT ; SET UP FOR MINIMUM X-FER MOV #OUTBUF,BUF ;SET UP CURRENT ADDRESS WRADT5: MOV ADS,R0 ; PLACE ADDRESS OF LOOK AHEAD REG IN RO BIS #BIT8,@DCS ;CLEAR THE DISK WRITE ;WRITE 1$: TSTB @DCS ; IS THE CONTROLLER BUSY BPL 1$ ;CONTROL STILL BUSY MOV (%0),@#WORK ; FETCH LOOK AHEAD TST @DCS ;IS THERE AN ERROR BPL LPADT5 ;NO DISK ERRORS MOV #14,ERCOUNT ;SET UP ERROR COUNT MOV @DCS,WORK ;FETCH DCS FOR REPORT ER14: JSR %5,SžERCOUNT ;SETUP ERROR COUNT ER2: JSR %5,STAER1 ;REPORT DISK ERROR ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF THE ERROR **** ;****WRD2=DISK ADDR. REG AT THE TIME OF THE ERROR **** BR RFADTX ;LOOP ON ERROR RFRC: CLR SAV1 RFRD: CLR SAVE WONWD: MOV #TSTBF,BUF MOV #100,WRDCT MOV SAV1,DMA BIS #BIT8,@DCS WRITE TSTB @DCS ;TEST FOR READY BPL .-4 TST @DCS ;TEST FOR ERROR BPL SUADB ;BRANCH IF NO CONTROL ERROR MOV @DCS,WORK1 MOV SAV1,WORK MOV #3,ERŸV @#MTSTAT,STATUS(R0) BIT @#MTSTAT,#ENDTAP ; TEST FOR END OF TAPE MARK BEQ MTINT2 MOV #13,ERROR(R0) ; SET END OF TAPE INDICATOR IN LIST MTINT2: 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) ;PLA ,> &÷ Œ ‚Jf÷ ‚ ÎerrVô2R,dT2&÷ `  2 ƒÃe¡  òT,ŠàðÅ óŠÃ)æ÷ XRŸ•þÿ6 Ÿ,°ìôŸêôƒ‚�€‡ðÕ ïöïÿÿë,Ö÷ øÿßE@fÿ&f¦À”Á´ÂP‚~7 ò,üÔÿ7 Òÿ÷ÿÿÈÿ‚�€· ¼ÿüf&æ¦f&Â,"æêôæìô& & À” Ð B 0þÿÁeá,HW @ów¦÷ T ‚òµ òŠ ‚óèº,nòµ ù¦ƒ÷ Ö Âó&f¦æÆå€w—,”‚þ²œ ƒœ „Ã5€òÕ Ž ß:ýìô2 1,º¦÷ 8 ¿(ý·"ý· ý÷e ý÷êôýÇÃ5ä¡TAER ;REPROT CONTROL ERROR ;****WRD1=DISK CONTROL REG AT THE TIME OF THE ERROR **** BR WRADT5 ;LOOP ON ERROR LPADT5: MOV TRACK,R2 BIC #177000,R2 ASH #6,R2 MOV DMA,R1 ADD #2,R1 BIC #177700,R1 ADD R1,R2 CMP R2,WORK BEQ INCADS ;BRANCH IF EQUAL MOV R2,WORK1 MOV #15,ERCOUNT ER15: JSR %5,STAER1 ;REPORT LOOK AHEAD INCORRECT ;****WRD1=DISK ADDR. WANTED FROM LOOK AHEAD REG. **** ;*¢COUNT ;SETUP ERROR COUNT ER3: JSR %5,STAER1 ;REPORT ERROR ;****WRD1=DISK CONTROL STATUS AT THE TIME OF THE ERROR**** ;****WRD2=DISK ADDR. IN ERROR WHEN TRYING TO WRITE ALL ONES **** BR WONWD ;RE-WRITE WORD SUADB: MOV SAV1,R0 ; COMPUTE BUFFER ADDRESS OF -1 BLOCK ASH #7,R0 ADD #OUTBUF,R0 MOV R0,WORK4 ; SAVE FOR CLEAN UP MOV #100,R1 2$: MOV #-1,(R0)+ SOB R1,2$ WRCADT: BIS #BIT8,@DCS MOV£CE TASK NUMBER ON STACK 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 N¤,àÃ5 Ã5@Ô ò  ¦& ÷ ã÷ Þ �,]<] ÄeÃ5 ò‹ £ƒ¦÷ ZÿÖ {,,Â�òÕ ÷ –‘þÿ&f¦æêôü Ÿêô‚�,R�€òÅ Ÿòµ ÞÚ÷ dþ÷ ^‘þÿŸQ,xw²þÖ Â€›Ê æÚ ÷ ÞÐâ÷ÌâÌ Ö þ,žŸìôŸêô€�‚ƒ„…7 .üwFâ· $üw<âã,Äw Š · þåÃâ#£c#ãêô££Ö Ÿìô ,êŸêô€�‚ƒ„…w "æÃÔææßêôÀÁÛ Âć�&†ÿÿž ¤ ¬ !n!ª!Ò!*"”"F8ž ¤ Ä L!’!Î!"*"Ì"´<²,T\ w ¼ €æêôæìôÄÈ cÿ,z„ ¬¥***WRD2=DISK ADDR. RECEIVED FROM DISK LOOK AHEAD REG. **** BR WRADT5 ;LOOP ON ERROR INCADS: CMP #10000,R2 BLE XLPADT5 ; LAST ADDRESS EXIT INC DMA ;+1 DMA CMP #77,DMA BNE WRADT5 CLR DMA INC TRACK MOV TRACK,R1 ADD #5000,R1 MOV R1,@#SREQ BR WRADT5 ;CHECK NEXT ADDRESS XLPADT5:BIT #BIT11,@SR ;LOOP ON TEST BNE ADT5 ;YES LOOP ON TEST BIT 11 SET .PAGE ; SPIRAL TESTS ;¦ #10000,WRDCT ; SET UP WORD COUNT MOV #OUTBUF,BUF ;SETUP CURRENT ADDR MOV SAVE,DMA ;SETUP DISK ADDRESS WRCHECK TSTB @DCS ;CHECK FOR READY BPL .-4 TST @DCS ;TEST FOR ERROR BPL CHKBUF ;BRANCH NO DISK ERROR MOV @DCS,WORK1 MOV SAV1,WORK DEC WORK MOV #4,ERCOUNT ;SET UP ERCOUNT ER4: JSR %5,STAER1 ;REPORT ERROR MOV @DAR,ACNVX ;SET UP DISK ADDR. FOR REPORT JSR %5,CONV ACNVX MES4 6 EMT +1 MES4 ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF THE ERROR **** ;****WR§EXT LIST ADDRESS .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 DRNEW,DROLD ; UPDATE TAPE DIRECTION AND UNIT NUMBER MOV FUNCT(R0),R1¨„ œ[D YÄp�RD �, ÄœK— H„ W  ð A0 W ,Æ ;0 æþÿŸ&÷ æ<ÿ÷ ðž·0ÿF,ììô—-ªUÂH²ŠÃ)° Ÿþÿð· ÿ-,-7ÿ÷ÎÕÿ÷ÿþþÁ ù $¬Ä i,8÷ Žˆ 0ðPõŸìôŸêôw ¼Ž‡æí,^TfœG÷ „úÖ ð¥èð åÆeöþÿE,„w Š& ÷ ¾ wèw ˆ�÷ ‚þ�Àxþ÷vþ@ÕÖ,ªæT÷ RûÖ  Å ý 6ðPõ×7Põð=,Ð Å ÷ wô÷ è¬& & ÷ Ðt,öÖ ¬&& ÷ >÷ þ%�Àþ&÷ ’€8, 7üý÷ÆÔ© ;WRITE THE LAST WORD OF TRACK ZERO ;AND THE FIRST WORD OF TRACK ONE ;USING ONE WORD X-FERS ;DATE = 52525 SPIRAL: BIS #BIT8,@DCS ;CLEAR THE DISK MOV #6000,@#SREQ ; SET LIGHTS JSR R5,ZOBUF ; ZERO OUTPUT BUFFER JSR R5,ZBUF ; ZERO INPUT BUFFER MOV #340,@CSR ;LOCK UP PROCESSING MOV #1000,%6 ;SETUP STACK MOV #100,WRDCT ; SET WORD COUNT TO 100 CLR TRACK MOV #77,DMA ; LAST SECTOR OF TRACT ZERO MªD2=DISK ADDR. IN ERROR DURING WRITE CHECK **** ;****WRD ADDR.=ADDR. WHICH CONTAINS ALL ONES **** BR WRCADT ; CHKBUF: MOV WORK4,R0 ; CLEAR -1 BLOCK IN BUFFER MOV #100,R1 3$: CLR (R0)+ SOB R1,3$ ZEROAD: CLR SAVE ; MOV SAV1,DMA ;SETUP DISK ADDRESS MOV #OUTBUF,BUF MOV #100,WRDCT ; SET UP WORD COUNT WRITE TSTB @DCS ;CHECK FOR READY BPL .-4 TST @DCS ;TEST FOR ERROR BPL INDADT MOV #5,ERCOUNT MOV « ;RETURN JUMP TO ASL R1 ; FUNCTIONAL JSR PC,@MTFCT(R1) ; ROUTINE CMPB 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 ¬øýìô÷ôýðýÁ ù $¬x,B ÊÄ ÈæTfœG÷ ˜ùÖ ‡w Â÷ ¼ý�Ày,h ²ý÷°ýzÔ, ÷ P æTæ÷ dùÖ N,Ž Ä ÷ Hÿw x‡÷ X 7Šzý‡7Štý÷ F¶,´ €÷ ÒÃUßRõ‡ ð €÷ Üÿ×7Põ€¹˜,Ú ÁTõ� p`Ä ð ÷•.ý÷  €ð•€Ú,!ßÿÿTõÃU ßRõ… ‡7Š ý÷ Þ€÷ jÄ ^,&!ÂPõ—t � ÂEüÿÃUÃU ßRõ‡z,L! ð €÷ ¼ÿÛ×7Põ€¹ÂÁTõ� p`‡7вüN,r!÷ „ €Ä ÂPõ—t � ÃUßRõ‡ _,˜!€÷ Ðÿ¸×7Põ€¹Ÿ‡÷•tü÷ F€×7Põ ,¾!ÃUßRõ‡0Š­OV #100,R0 ; SET UP DATA MOV #OUTBUF,R1 1$: MOV #52525,(R1)+ SOB R0,1$ MOV #OUTBUF,BUF WRITE ;WRITE LAST ADDR TK ZERO TSTB @DCS ;TEST FOR READY BPL .-4 ;CONTROL STILL BUSY TST @DCS BPL SPIL1 MOV #16,ERCOUNT MOV @DCS,WORK ER16: JSR %5,STAER ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF THE ERROR **** BR SPIRAL SPIL1: CLR DMA INC TRACK WRITE ;WRITE FIRST ADDR. TK 1 TSTB @DCS ;WAIT FOR READY BPL .-4 ;C®@DCS,WORK1 MOV @DAR,WORK ER5: JSR %5,STAER1 ;****WRD1=CONTROL STATUS REG. AT THE TIME OF THE ERROR **** ;****WRD2=DISK ADDR. AT THE TIME OF THE ERROR **** BR ZEROAD ;LOOP ON ERROR INDADT: CMP #77,SAV1 BEQ LP2ADT ;LAST ADDR. CHECKED INC SAV1 JMP RFRD ;CHECK NEXT ADDRESS LP2ADT: BIT #BIT11,@SR ;IS BIT 11 SET IN SR BEQ ADT3 JMP ADT2 ;BIT 11 SET LOOP ON TEST .PAGE ;***** ADDRESS TEST ***** ; ;WRITE EACH UNIQUE ADDRESS ON ITSELF FOR TRACK 0 ;THEN READ IT BACK¯; IS QUEUE EMPTY BMI MTTIM2 .IFZ $KT11C MOV MTFRST,R0 .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)+ °ü ‡7ŠNüð ·ŠDü÷ î,ä! €� ÃU_TõßRõ‡ÃU øÂTõv, "ß5@Põ Á � °�àp ‡7Šöûð Í,0"·Šìû ÁPõWt�÷ ²€ß€Tõð x,V"�ð ° ÃU° ð ÃU ßRõ… ‡ð ‡,|"° ð ÷ð ° ò÷•Šû œf8,¢"ÁEüÿ� †°�÷ H€ÃE@ÃUßRõ‚ Á ð°),È"‡  ÁEüÿ� †ßERõßPRõß5Põ¿,î"‚ ÃeÁ ð‡÷Šœ÷�û÷­ûû3÷­û5,# û/×tßRõÃUA 0Š÷\ ,÷­ó,:#éúåú ÷­àúÜú ß5€Rõ ÷ 6ùX#ß5Põ>,`#÷ $ù ¸‡ß±ONTROL STILL BUSY TST @DCS BPL SPIL2 MOV #17,ERCOUNT MOV @DCS,WORK ER17: JSR %5,STAER ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF THE ERROR **** BR SPIRAL SPIL2: MOV #200,WRDCT ; SET UP FOR 2 SECTOR X-FER DEC TRACK MOV #77,DMA MOV #INBUF,BUF ; READ ;READ DATA TSTB @DCS ;TEST FOR READY BPL .-4 ;CONTROL STILL BUSY TST @DCS BPL SPIL3 MOV #20,ERCOUNT MOV @DCS,WORK ER20: JSR %5,STAER ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME O² AND COMPARE FOR THE ;CORRECT DATA ; ; ADT3: CLR DMA ;CLEAR ACTIVE REG MOV #3000,@#SREQ ; SET LIGHTS MOV #0,TRACK ; USE MOV RATHER THAN 'CLR' FOR PATCHING IN TRAC CLR WORK CLR WORK1 MOV #1000,%6 ;SETUP STACK MOV #OUTBUF,BUF ;SET UP CURRENT ADDRESS MOV #4000,WRDCT ; SET UP WORD COUNT MOV #OUTBUF,%0 ;FILL BUFFER WITH COUNT INADB: MOV WORK,(0)+ INC WORK ;+1 COUNT CMP #OUTBUF+10000,R0 BNE INADB ;SET UP NEXT WORD MOV WOR³ BR MTTIM2 ; DEQUEUE THE REQUEST MTTIM1: MOV #12,R4 MTTIM4: 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: .IFNZ DATUM CLRB DRNEW ; ´RõÑß5Põø÷ ùÄ�,†# ‡ìô&÷ ^… wuQ i,¬#ÄEüÿQ_VõpÅ  _Tõ‡0÷ ƒ,Ò#LúðPõæþÿŸ74ú ÷.ú¡7 (ú¡7 "ú©"ø#ÈŸþÿ òŠÃ)¦÷ ìI‡#,$ÿÿæþÿŸ· ôÿ&ææB„&�R)ñ,:$ô•R)Ä ÷¤ÐÒÿ&®'÷ \„7 îß50þÿ3î,`$ò££Ö £´÷¦ÿtЄÆ ßþÿÔ,†$æ¦f&æVÐæTÐæRÐÀF'&&&&& ¤,¬$ ßþÿM¦)ƒ „ßF ´÷LÿÐæ Ü,Ò$óŸ÷ DÿÀP'     ·зúÏ·ôÏ€�F,ø$‚·ÿ…·•ÿ·<G÷50 ÿ…CµF THE ERROR **** BR SPIRAL SPIL3: MOV #100,R0 ; CHECK INPUT FROM LAST SECTOR OF TRACK 0 MOV #INBUF,R1 1$: CMP #52525,(R1)+ BNE 2$ SOB R0,1$ BR CMPX1 2$: MOV #21,ERCOUNT ;SETUP ERROR COUNT MOV -(R1),WORK MOV #52525,WORK1 ;CORRECT DATA ER21: JSR %5,STAER1 ;REPORT ADDR 377 HAE BAD DATA ;****WRD1=THE DATA THAT SHOULD HAVE BEEN IN ADDR. 3777**** ;****WRD2=THE DATA READ FROM ADDR. 3777**** BR SPIRAL ;LOOP ¶K,SAVE WRABF: BIS #BIT8,@DCS ;CLEAR THE DISK WORLD WRITE ;WRITE TSTB @DCS ;IS THE CONTROL READY BPL .-4 ;CONTROL READY TST @DCS ;IS THERE AN ERROR BPL TFBL ;NO ERROR MOV @DCS,WORK ;FETCH CONTENTS OF CONTROL REG MOV #6,ERCOUNT ;SET UP ERROR COUNT ER6: JSR %5,STAER ;REPORT CONTROL ERROR ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF THE ERROR **** BR WRABF ;RE-WRITE DATA TFBL: MOV SAVE,WORK ADD #40,DMA CMP #10000,WORK BNE INADB-4 CLR WORK CLR W·SET FORWARD FLAG .ENDC RTS PC .PAGE ; M A G N E T I C T A P E R E A D MREAD: .IFNZ DATUM CLRB DRNEW ; SET FORWARD FLAG .ENDC JSR PC,MTINIT BPL MREA1 JSR 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 ¸Dwøþw*,%öþFÅ÷ &*õ�èþR)Åàþ÷ äþ!÷­ƒÏ,D%÷50Òþ·Äþ·ÂþF ·Âþ÷U€¼þ÷<Ú‚ÏÆ²þ›,j%æ¨þæ¢þæ÷ Ôwþ 7 Ìõ•R)ÆÆfi"�%÷ wä ƒ„Ö …—#°0Îe,,¬%&€tüÿ70Ï€À À ÀEÀÿÀU 6€‡G,Ò%&€tüÿ7 Ï€À À ÀEÀÿÀUÀ6€‡%,ø%&f€ÁWtüÿÁEñÿAàôWt€ € ÀEø`c,&v�€‡&f€#À æ²Î&®'÷ lÿ€�Ö,D&ÁWtüÿÁEñÿ@`$Wt·ŒÎ€€ € ÀEøV,j&`v�€Ž‡¦÷ xÿ¶õ&f€&|,�&À &®'÷ ÿ€�ÁWtüÿÁEñÿ@`7$8΀³¹ON ERROR CMPX1: MOV #100,R0 1$: CMP #52525,(R1)+ BNE 2$ SOB R0,1$ BR LPSPI1 2$: MOV #22,ERCOUNT ;SETUP ERROR COUNT MOV #52525,WORK1 ;CORRECT DATA MOV -(R1),WORK ER22: JSR %5,STAER1 ;REPORT ERROR ;****WRD1=THE DATA THAT SHOULD BE IN ADDR. 0 OF TRACK 1 **** ;****WDR2=THE DATA READ FROMADDR.0 OF TRACK 1 **** SPIL5: JMP SPIRAL LPSPI1: BIT #BIT11,@SR ;LOOP ON TEST? BNE SPIL5 .PAGE ; SPIRAL TEST EXT. ºORK1 CLR DMA ADT3A: MOV #0,TRACK ; USE MOV RATHER THAN 'CLR' FOR PATCHING IN TRAC MOV #INBUF,BUF MOV #100,WRDCT RDTDN: BIS #BIT8,@DCS ;CLEAR THE DISK READ TSTB @DCS ;IS THE CONTROL READY BPL .-4 ;YES THE CONTROL IS READY TST @DCS ;IS THERE AN ERROR BPL ADRCMP ;NO ERROR MOV #7,ERCOUNT ;SET UP ERROR COUNT MOV @DCS,WORK ;FETCH CONTROL REG. ER7: JSR %5,STAER ;REPORT CONTROL ERROR ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF THE ER»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 ;CONTINUE IF NOT SET JSR PC,MREAD BR MRRE3 MRRE1: .IFZ DATUM MOV @#MTSTAT,R2 BMI MRRE6 ; BR IF EOF DETECTED ASH #4¼,¶&ÀEàtúÿ7`(ζöEÀÿöU �€Ž‡Ö,Ü&¶ø&f€&À &®'÷ Úþ€�ÁWtý,'üÿÁEñÿ@`7$ÜÍ€ÀEàtúÿ7`ÌͶöE¡ ('ÀÿöUÀ�€Ž‡¶ø‡,D' ÿÿÿÿÿÿÿÿÿÿÿÿÿh,d'Ù Ú Û Ü Ý Þ ß à á 2*Š'â ž'ž'¬÷,+w æÚÉæØÉ×þÿ& „w6 7!„ür‚Ÿô‹¨,.+R) ô¥R)mô‹Ã)iöÿÿÄ ®'„ — ],T+ô•R)ß�þÿ���4*W  Á• !â,z+S†¦÷ *ú‚r�ŸÊ <Á Á Ä fb'÷ 6ú®'w, +1®'b'„ ô•½; ;WRITE TWO WORDS OF DATA ;STARTING WITH THE LAST ADDRESS OF TRACK0 ;DATA PATTERN = 25252 ;THEN READ THE DATA DOING ONE WORD ;X-FERS XSPIRL: BIS #BIT8,@DCS ; CLEAR MOV #7000,@#SREQ ; SET LIGHTS JSR R5,ZBUF ; ZERO INPUT BUFFER JSR R5,ZOBUF ; ZERO OUTPUT BUFFER MOV #340,@CSR ;LOCK UP PROCESSING MOV #1000,%6 ;SET UP STACK MOV #200,R0 ; SET UP TWO SECTORS MOV #OUTBUF,R1 1$: MOV #25252,(R1)¾ROR **** BR RDTDN ;RE-READ ADRCMP: MOV #INBUF,R0 MOV DMA,R1 ASH #6,R1 MOV #100,R2 1$: CMP (R0)+,R1 BNE 2$ INC R1 SOB R2,1$ BR INCCMP 2$: MOV -(R0),WORK MOV R1,WORK1 MOV #10,ERCOUNT ;SET UP ERROR COUNT ER10: JSR %5,STAER1 ;REPORT COMPARISON ERROR ;****WRD1=DISK ADDR. WANTED **** ;****WRD2=DISK ADDR. RECEIVED **** INCCMP: INC DMA ; INC SECTOR NUMBER ¿,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,#MDATST BNE MRRE2 ; BRANCK IF ANY ERRORS MOV @#MTBCNT,R1 ASR R1 ADD R1,COUNT(R0) .ENDC BR MRRE4 MRRE2: MOV #11,R4 DEC RES1(R0) ; DEC REPEAT COUNT BEQ MRRE4 MOVBÀR)4ŠÃ)2 ²7­4*”û†7�«,Æ+4*ŒûÖ ß�þÿ·É·Éw 8ö ¶Æe‡,ì+öþÿ¶Æeæ÷ LwvŠ Ž Ž Ž Ž |,,Ž Ž Ž 6 ¶Õæ&&f¦÷ :€ƒ•„k,8,À Àç妶¶æ—þÿŸ÷ ðúi7 êú,^,7 öúŸ•þÿ÷åèúÿzÈâúæ¦f�vÂÀúý,„, ¦®'÷ ù‚² 6 €6²„p,ª,×þÿŸ7 �úò�’ú7 ŒúÆ’úò†ú 7 €úʳ,Ð,Á ô•R)!!‡ô•R)ß�þÿæþÇ&&÷ œ?z,ö,€·ðÇ�ô•R)�œÁ Á Ä J`'1®'b'Ä,-1®'`'ß�þÿ·ÀÇHŸ•þÿŽŽŽ‡æþÿ& ÷ þþ,B-w6—þÿŸÀøù#Á+ SOB R0,1$ MOV #200,WRDCT ; SET WORD COUNT FOR 2 SECTORS MOV #OUTBUF,BUF ;SET UP CMA CLR TRACK ;SET UP DISK ADDR. MOV #77,DMA WRITE ;WRITE DATA TSTB @DCS ;TEST FOR READY BPL .-4 ;CONTROL STILL BUSY TST @DCS ;TEST FOR ERROR BPL X1SPIL ;BRANCH IF NO ERROR MOV @DCS,WORK MOV #23,ERCOUNT ;SET UP ERROR COUNT ER23: JSR %5,STAER ;REPORT CONTROL ERROR ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF THE ERROR **** BR XSPIRL X CMP #100,DMA ; LAST SECTOR BEQ LPADT3 BR RDTDN ;GO READ BUFFER LPADT3: BIT #BIT11,@SR ;LOOP ON TEST? BNE ADT3 ;YES BIT 11 SET IN SR .PAGE ;RF11 TRACK SELECTION TEST ; ;WRITE THE FIRST AND LAST ADDRESS OF EACH TRACK ;WITH THE OCTAL VALUE OF EACH TRACK ;BITS 6 THRU 11 EQUAL TRACK NUMBER ;BITS 0 THRU 5 EQUAL 0 IN FIRST SECTOR OF EACH TRACK ;BITS 0 THRU 5 EQUAL 77 IN LAST SECTOR OF EACH TRACK ; ;AFTER WRITING THE DISK READ EACH ADDRESS ;AND COMPARE DATA FOR à #1,DRNEW ; SET BACKWARDS FLAG 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 COMPLETE MRRE4: RTS PC .PAGE ; M A G N E T I C T A P E W R I T E ; R0Ä&÷ Tø€1ŠR)7 âù7 ,h-Úù7 Üù7 æù7 Öù0 ÆÖùW  ‡ñ‹Ã) ±ŠR)ç,Ž-·�lÒf÷ î;wàñŠR)ûw |€P7 üùM‚æ—$´-þÿŸœR)Á yÈ-H.H.H.H.H.Ü-H.ö-,Ò-ð-H.H.H.ö-Ÿ“þÿ&÷ ¨ŸÖ . 7\ù) L,ø-‡ð‹Ã)ð•ýÿR)ð•R)Ÿ“þÿ&&÷ z?€š,.Ÿð•R)Â�‚.W"Âåø1f÷ Ï$D.�Ÿ•þÿw ÄŽ‡c´d.cõ,t.cT.d.t.öU€w �æTÆæRÆò,š.æ—þÿ €ÀE€w ö €Á‘!7 îø|‚m,À.À &®'÷ âö�€ ŸœR)Âå  k D g,æ.ÂåHdð•R)Å1SPIL: MOV #100,WRDCT ; SET UP FOR 100 WORD X-FER CLR TRACK MOV #77,DMA ; SET UP DAR MOV #INBUF,BUF ;SET UP CMA READ ;READ DAR 3777 TSTB @DCS ;TEST FOR NOT READY BPL .-4 ;CONTROL STILL BUSY TST @DCS ;TEST FOR ERROR BPL X2SPIL ;BRANCH IF NO ERROR MOV #24,ERCOUNT ;SET UP ERROR COUNT MOV @DCS,WORK ;REPORT CONTROL REG ER24: JSR %5,STAER ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF THE THE ERROR **** BR XSPIRL X2ÆTHE CORRECT VALUE ; ADT4: CLR DMA ;CLEAR WORK REGISTERS MOV #4000,@#SREQ ; SET LIGHTS CLR TRACK JSR R5,ZOBUF ; ZERO OUTPUT BUFFER MOV #1000,%6 ;SETUP STACK BIS #BIT8,@DCS ;CLEAR THE DISK WORLD MOV #OUTBUF,BUF ;SET CURRENT ADDRESS MOV #4,WRDCT ; SET WORD COUNT INSWT: WRITE ;GO WRITE TSTB @DCS ;IS READY SET BPL .-4 ;YES! WAIT FOR NOT BUSY TST @DCS ;TEST FOR ERROR BPL TSTTK ;NO ERROR GO ON MOV #11,ERCOUNT ;SET UP ERROR COUNT Ç = ADDRESS OF LIST ; BYTE RES1 IS REWRITE REPEAT COUNT ; BIT 15 OF RES1 IS BACK SPACE RECORD FLAG ; MWRIT: .IFNZ DATUM CLRB DRNEW ; SET FORWARD FLAG .ENDC 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 BCS MWRI1 ;BÈŸ“þÿBœ  ƒ`'XÀ ,®'], /Äæ÷ ¼öƒ÷MŸW"Iò `'r`'òó,2/`'b'²`b'¡2 b'¡2 b'&÷ ‚ö„Lrž,X/b'¡2 b'¡2 b'É€� †1 ð‹$,~/Ã)ð•R)Ÿ“þÿ&&÷ >€ Ÿ0ŠR)Ÿ•þÿv,¤/·BÅ·<Åw b‡… … … ñÅ ð•þÿR)ìw X—,Ê/æÅ×þÿ& „K7!Î÷H‚Ÿô¥R)Eô•R)‚,ð/!‡ß�þÿæîÄæ�&&÷ è<‚ƒ•„·ÚÄ ,0-Ä ®'¦÷ ˆõ…Í A�Á Á fb'÷ tõž±—,<0b'„ ´ŠR)ß�þÿ¶·šÄw Àö އöþÿ•,b0æ÷ âûw Ž Ž Ž 6 ä˜÷ ÆöÄÊöÓ,ˆ0Ä Ä Â`'„`ßÂ`ÉSPIL: MOV #100,R0 ; CHECK INPUT FROM LAST SECTOR OF TRACK 0 MOV #INBUF,R1 1$: CMP #25252,(R1)+ BNE 2$ SOB R0,1$ BR X3SPIL 2$: MOV #25,ERCOUNT ;SET UP ERROR COUNT MOV #25252,WORK1 ;GOOD DATA MOV -(R1),WORK ER25: JSR %5,STAER1 ;REPORT ERROR ;****WRD1=THE DATA THAT SHOULD BE IN ADDR.3777 OF TRACK 0 **** ;****WRD2=THE DATA THAT WAS READ FROM ADDR. 3777 OF TRACK 0 **** BR XSPIRL X3SPIL: MÊ MOV @DCS,WORK ;REPORT CONTENTS OF DCS REG ER11: JSR %5,STAER ;REPORT ERROR OCCURRED ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF THE ERROR **** BR INSWT ;GO RE-WRITE TSTTK: CMP #7777,OUTBUF ; TEST FOR LAST ADDRESS BEQ INSRD ;GO READ THE DATA BIT #77,OUTBUF ; IS IT SECTOR NUMBER ZERO BNE MVNEM ;NO BIS #77,OUTBUF ; YES, SET UP FOR LAST SECTOR IN TRACK BIS #77,OUTBUF+2 BIS #77,OUTBUF+4 BIS #77,OUTBUF+6 ËR 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 COMMAND BR MWRI3 ÌÊ !û—!÷ÿÿ¨ö,®0˜äþ…Õ ¦÷ êô�J�¡ ¡ B,Ô0ò•R)wœtö˜ÉCÃeÄ€ÿÔÔÔÔJ,ú0ÔÔÔÔÄ ÿÔÔÔÔÔÔÔÔ·:öñ B , 1@Cf Î ßU0þÿ† æÀfŸñµ@…,F1N81 8÷øõ·ìõò•R) ·®'âõwœÚõk,l1wœØõñ ABCDß50þÿ ff‰,’1fEÎe€† F…Eñµ@w8¢õwª,¸1$,ÃÅU€C @ D5 „ „ ÄEÿÏŸßE0ÁÞ1þÿQþÿµÂè7 X7 V7 T7 V7 N7 i,þLÀNÀ À ÀpÁà0ŠÃ) ñ®'ð•3($R)0Š4*á À ð7Š3ÀÁÍOV #1,TRACK JSR R5,ZBUF ; ZERO INPUT BUFFER MOV #100,WRDCT MOV #INBUF,BUF CLR DMA READ ;READ DATA TSTB @DCS ;TEST FOR READY BPL .-4 ;CONTROL STILL BUSY TST @DCS ;TEST FOR ERROR BPL X4SPIL ;BRANCH IF NO ERROR MOV #26,ERCOUNT ;SET UP ERROR COUNT MOV @DCS,WORK ;REPORT CONTROL REG. ER26: JSR %5,STAER ;REPORT ERROR ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF THE ERROR **** BR XSPIRL .BLKW 40Î ADD #77,DMA BR INSWT ;GO WRITE MVNEM: INC OUTBUF ;INC. TO NEXT TRACK INC OUTBUF+2 INC OUTBUF+4 INC OUTBUF+6 CLR DMA INC TRACK ;INC. DAE REG. BR INSWT ;GO WRITE ; ;READ THE FIRST AND LAST ADDRESS OF EACH TRACK ;AND VERIFY IT HAS THE CORRECT DATA INSRD: CLR DMA ;CLEAR WORK REG. CLR TRACK CLR SAVE BIS #BIT8,@DCS ;CLEAR THE DISK WORLD MOV #INBUF,BUF ;SET UP CURRENT ADDR MOV #4,WRDCT ; SET UP WORD CÏ 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: .IFZ DATUM Ђ.ÙÀ ü‡·è1pÿ€àˆà�à˜à à¨à°àê1tÿ„àŒà”àœà¤à¬à´à÷ì1rÿ‚àŠà’àšà¢àªà²àî1vÿ†àŽà–àžà¦à®à¶àã$ð122,2@2T2h2|2�2Ù22,2@2T2h2|2�2¤272,2@2T2h2|2�2¤2¸2•20@2à:ï20@2à:Ú,20@2à:Å@20@2à:°T20@2à:›h20@2à:†|20@2à:q�20@2à:\20B2X9g,20B2X9R@20B2X9=T20B2X9(Ñ ; PATCH AREA X4SPIL: MOV #100,R0 MOV #INBUF,R1 1$: CMP #25252,(R1)+ BNE 2$ SOB R0,1$ BR LPXSPIL ; BR IF ALL DATA OK 2$: MOV #27,ERCOUNT ;SET UP ERROR COUNT MOV #25252,WORK1 ;GOOD DATA MOV -(R1),WORK ER27: JSR %5,STAER1 ;REPORT ERROR ;****WRD1=THE DATA THAT SHOULD BE IN ADDR. 0 OF TRACK 1 **** ;****WRD2=THE DATA THAT WAS READ FROM ADDR. 0 OF TRACK 1 **** X5SPIL: JMP XSPIRL LPXSÒOUNT RDTKS: READ ;READ DATA TSTB @DCS ;CHECK FOR READY BPL .-4 ;CONTROL NOT READY TST @DCS ;IS THERE AN ERROR BPL CMPDTK ;NO ERROR MOV #12,ERCOUNT ;SET UP ERROR COUNT MOV @DCS,WORK ;FETCH CONTENTS OF DCS ER12: JSR %5,STAER ;REPORT CONTROL ERROR ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF THE ERROR **** BR RDTKS ;GO RE-READ CMPDTK: CMP SAVE,INBUF ;IS DATA CORRECT BEQ CMNETK ;YES SETUP FOR NEXT WORD MOV SAVE,WORK1 ;CORRECT ADDRESS MOV INBUF,WORK ;INCORRECT DATA MOV Ó 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,#MDATST 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 W R I T E F I L E M A R KÔh20B2X9|20B2X9þ�20B2X9é¤20B2X9Ô,20D2;„@20D2;oT20D2;Zh20D2;E|20D2;0�20D2;¤20D2;¸20D2;ñ@2ÿÿÿÿÿÿÿÿ�G2xH2wI2vJ2uK2tL2sM2rN2qO2pP2oQ2nÕPIL:BIT #BIT11,@SR ;LOOP ON TEST? BNE X5SPIL .PAGE CLRREG: CLR DMA ;CLEAR WORD ADDRESS CLR TRACK ;CLEAR TRACK ADDRESS ; ; DATAT: MOV SWRDCT,WRDCT MOV #LDAT,HRDER ;SETUP FOR HARD ERROR MOV #340,@CSR ;LOCK UP PROCESSOR PRIORITY JSR %5,PASEL ;SET UP DATA BUFFERS LDAT: JSR %5,OPDSEL ;SET UP DISK ADDRESS MOV TRACK,@#SREQ BIT #BIT14,FLAG ;TEST FOR WRITE BEQ SLH ;TEST FOR WRITE CHECK MOV #OUTBUF,BUF ;SETUP OUTPUT BUFFER WRITE +100 ;WRITE WITH INT. ENABÖ#13,ERCOUNT ;SET UP ERROR COUNT ER13: JSR %5,STAER1 ;REPORT SELECTION ERROR ;****WRD1=TRACK ADDR. WANTED **** ;****WRD2=TRACK ADDR. RECEIVED **** CMNETK: CMP #7777,SAVE ; IS IT THE LAST ADDRESS BEQ LPTSK ;END OF TEST BIT #77,SAVE ; IS IT ADDRESS ZERO OF THE TRACK BEQ ZRBIT ;NO! SETUP FOR LAST ADDR INC SAVE ;INC FOR TRACK NO. CLR DMA ; SET UP DAR INC TRACK ;INC TRACK BR RDTKS ;GO READ ZRBIT: BIS #77,SAVE ; SET UP FOR LAS× ; MWEOF: .IFNZ DATUM CLRB DRNEW ; SET FORWARD FLAG .ENDC 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 ØR2eT2cV2aX2_Z2]\2[^2Y`2Wb2U,d2™ š › œ w ª ænÂælÂ÷ Ô ÷ ,Š2Š÷ ‚ñ‹G2&Ÿ•þÿ¬·F·@Âw f ŽŸ,°2‡,ˆ ò¬î·"·Âw B öþÿ—,Ö2& ÷ pùwšý±ŠG25T2õüÁX2ñ‹F2Ѐñ•F2,ü2Ÿ•þÿ÷ xÊw  æÜÁæÚÁ÷ BÍÄ÷ ö÷ `("3îñ‹H2¶±ŠH25V2õ´ÁZ2ñ‹F2¬€1ŠF2Ü*Hw Ö'Àè1  ì1ü‡Áw�ÙLED BIT #BIT9,@SR ;FIND OUT HOW TO WAIT FOR INT BNE WRWAIT ;WAIT WITH WAIT INSTRUCTION IOT ;WAIT IN BACKGROUND TEST BR SLH WRWAIT: MOV PRIORITY,@CSR WAIT ;WAIT FOR FLAG SLH: BIT #BIT13,FLAG ;TEST FOR WRITE CHECK BEQ ESH ;TEST FOR READ MOV #OUTBUF,BUF ;SETUP OUTPUT BUFFER MOV #340,@CSR WRCHECK +100 ;WRITE CHECK WITH INT. ENABLE BIT #BIT9,@SR ;FINDOUT HOW TO WAIT FOR INT. BNE WCWAIT ;WAIT WITH WAIT INSTRUCTION IOT ;WAIT IN BACKGROUND TEST BR ESH WCWAIT: MOV PRIORITY,@ÚT SECTOR IN TRACK ADD #77,DMA BR RDTKS ;GO READ LAST ADDR OF TK LPTSK: BIT #BIT11,@SR ;IS BIT 11 SET IN SR BEQ ADT5 ; YES, LOOP ON TEST JMP ADT4 .PAGE ;RF11 LOOK AHEAD TEST ;WRITE ONE WORD UPON RECEIPT OF ;NOT READY READ THE LOOK AHEAD ;REGISTER IT SHOULD CONTAIN THE ;ADDRESS +1 ; ADT5: CLR DMA ;CLEAR REGISTERS MOV #5000,@#SREQ ; SET LIGHTS CLR TRACK CLR SAVE MOV #1000,%6 ;SETUP STACK MOV #4,WRDCT ; SÛ BIS #WRFM,R3 ; 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 ÜÀ2HÀe 7*l@2ú‡ÀF2Š b2ü‡ÀF2Âÿÿ�� G2ü‡Š ä�I2ü‡ÀR2P� T2ü‡w p'‡',D3w ØðÁþÿÁEðÿEÅ æ€ñ‹O2D2ô• Ÿ•2,j3þÿñ•I2DœN2Ä |„31ŠO2wJ 3Ô45&545N5c$�3`5n5|5�5˜5ª5¸5Ê5±ŠJ2W¬J2H†@X,®3T2wX24ÁD\2w`2,Á´  -†m=�î1T,Ô3­ ý• î1ñ• N2wÔf2÷ çÖ =Š~,ú3è1=Šê1œÄñ‹F2 ÷ &¬‚‡÷ , 4æw ú && ÷ w Þ @T2wX2ªÀ ],F4ôŠÃ)&÷ ¬9 Â÷ 1ŠF2÷ ®`2 Äe ,l4`2Äå `2Ÿþÿ±ŠF2&÷ ñ€õXÀ�,’4X25T21ŠÝCSR WAIT ;WAIT FOR FLAG ESH: BIT #BIT12,FLAG ;TEST FOR READ BEQ REH ;CHECK BUFFER MOV #INBUF,BUF ;SETUP OUTPUT BUFFER BIC #3,FLAG ;CLEAR RE-READ COUNT DSKRD: MOV #340,@CSR JSR %5,ZBUF ;CLEAR BUFFER INC FLAG READ +100 ;READ + INT ENABLE BIT #BIT9,@SR ;FIND OUT HOW TO WAIT FOR INT. BNE RDWAIT ;WAIT WITH WAIT INSTRUCTION IOT BR ELH RDWAIT: MOV PRIORITY,@CSR ;SET UP PRIORITY WAIT ;WAIT FOR FLAG ELH: BIT #BIT12,@SR BNE ADRD JSR %5,COMPARE ;COMPARE OUTBUFFER TO INBUFFEÞET UP FOR MINIMUM X-FER MOV #OUTBUF,BUF ;SET UP CURRENT ADDRESS WRADT5: MOV ADS,R0 ; PLACE ADDRESS OF LOOK AHEAD REG IN RO BIS #BIT8,@DCS ;CLEAR THE DISK WRITE ;WRITE 1$: TSTB @DCS ; IS THE CONTROLLER BUSY BPL 1$ ;CONTROL STILL BUSY MOV (%0),@#WORK ; FETCH LOOK AHEAD TST @DCS ;IS THERE AN ERROR BPL LPADT5 ;NO DISK ERRORS MOV #14,ERCOUNT ;SET UP ERROR COUNT MOV @DCS,WORK ;FETCH DCS FOR REPORT ER14: JSR %5,STAER ;REPROT CONTROL Eß ;PLACE ERROR BIT IN SIGN BIT BPL MWEOF1 .IFF BIT @#MTSTAT,#MDATST 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: .IFNZ DATUM MOVB #1,DRNEW ; SET BACKWARDS FLAG .ENDC JSR PC,MTINIT BPL MREW1 .IFZ DATUM BIT @#MTSTAT,#2 ;TEST LOAD POINT BIT àG2Äe`2Ÿ•þÿ&÷ úð€õ2À•,¸4Z25V2÷ ºwð1ŠH2ñŠF2Ÿ•þÿ÷±ŠJ2f2÷ Ÿ,Þ4$æÖ @V2wZ2þ¿B^2wb2ö¿¦ÎEàÊ5 Ž,¾,5†Ö ÛNþ1÷ ðåÖ wÔþñ•N21ŠJ2Ùý• ,*5î1ñ•N2Çñ‹Q2ý• î1ñ•N2½1ŠQ2ý• ,P5Uî1ñ•N2±ŠJ2±ý•^î1ñ•N2ö}œL2î1ñ•,v5N2ﱊJ2ý• î1ñ• N2å1ŠN2wþý• Í,œ5î11ŠJ2ñ• N2ý• î1ñ• N21ŠJ2@V2wñ,Â5Z2$¿w$þñ‹R2wêþý•î1ñŠR2wàþw :îÁ�ç,è5ÊœÁEðÿEÅ Dþ1ô• @V2wZ2â¾B^2wÇ,6b2Ú¾Ê €f2æ÷ ÎãÖ DŸì1-ÄÅ€¡¦,46w¡ z¡ áR ADRD: JSR %5,OVRFLO ;TEST FOR EXTRA DATE BREAKS MOV FLAG,WORK ;CHECK DISK RE-READ COUNT BIC #177774,WORK ;DO 3 RE-READS. CMP #3,WORK BNE DSKRD ;DO ANOTHER RE-READ REH: BIT #BIT8,@SR BNE DATAT JSR %7,DISBUF ;GO SET UP DISK BUFFER. BR LDAT MSTR: TST FLAG BPL .+6 ;UNDER PROGRAM CONTROL JMP EXTPP ;OPERATOR SELECTED PATTERN ADD #2,PATNU ;INC PATTERN INDEX CMP #44,PATNU BNE DATAT ;NOT LAST PATTERN EXIT CLR PATNU ;LAST PATTERN EXIT ; ;THIS IS A RANDOM DATA, RANDOM ADDRESS âRROR ;****WRD1=DISK CONTROL REG AT THE TIME OF THE ERROR **** BR WRADT5 ;LOOP ON ERROR LPADT5: MOV TRACK,R2 BIC #177000,R2 ASH #6,R2 MOV DMA,R1 ADD #2,R1 BIC #177700,R1 ADD R1,R2 CMP R2,WORK BEQ INCADS ;BRANCH IF EQUAL MOV R2,WORK1 MOV #15,ERCOUNT ER15: JSR %5,STAER1 ;REPORT LOOK AHEAD INCORRECT ;****WRD1=DISK ADDR. WANTED FROM LOOK AHEAD REG. **** ;****WRD2=DISK ADDR. RECã .IFF BIT @#MTSTAT,#40 .ENDC BNE MREW2 BIS #REWD,R3 MOV R3,@#MTCOMM MREW1: RTS PC MREW2: CLRB 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ä*¡-ƒÃeƒl¡.š,Z6ñ‹K2B¦ÎEà–,I†²  ‘Ê €Ê5@Ä Ö,€6=‘î1Cþ1ó• Ê5@@w<îÄ• ñ•N2îý•î,¦6^î1ñ•N22 ïò äò Ê Þ�à ñ‹K2 W,Ì6±ŠK2Ä•\ñ•N2ñ’L2ÐÄ’Î1ŠK2²  ‘1‘L2Ž,ò6Ä•\ñ•N2Áñ‹M2À±ŠM2f2÷ ôãÖ ¸¦ÎE¿,7àÊ5 Ž,‡wâýÖ ½Šè1±=‘î1ñ• N2fn,>7þ1÷ ÀãÖ ¦Ä•=‘î1ñ•N2ò€÷ ²È 4Ð,d7Ÿ•þÿœw T4‚Á W<È;3ñ5€È;;AœÈ;p�V,Š7¬+‡¬'‚œ— &‚ —-ªU5,°7Ä�ï0 ´ŠÃ)Cà Ń`0 ‡ˆ Ÿ•þÿð’,Ö7‡ð‡ðå ;AND RANDOM WORD COUNT ; ;WORD COUNT CAN BE EQUAL TO OR LESS THAN 1000 WORDS ; RANEX: MOV #-1000,PASSC MOV #1000,%6 BIC #BIT9,FLAG MOV #RANER,HRDER ;SET UP FOR HARD ERROR MOV PRIORITY,@CSR ;SET PRIORITY TO LEVEL 5 WRLG: MOV #3,WORK ;GENERATE RANDOM WORD MOV #OUTBUF,%1 JSR %5,RANDOM BIC #177003,OUTBUF ; MASK FOR WORD LENGTH BEQ WRLG MOV OUTBUF,WRDCT ;SET UP WORD COUNT MOV OUTBUF+2,DMA ;SET UP DAR BIC #177700,DMA BIC #177000,OUTBUF+4 æEIVED FROM DISK LOOK AHEAD REG. **** BR WRADT5 ;LOOP ON ERROR INCADS: CMP #10000,R2 BLE XLPADT5 ; LAST ADDRESS EXIT INC DMA ;+1 DMA CMP #77,DMA BNE WRADT5 CLR DMA INC TRACK MOV TRACK,R1 ADD #5000,R1 MOV R1,@#SREQ BR WRADT5 ;CHECK NEXT ADDRESS XLPADT5:BIT #BIT11,@SR ;LOOP ON TEST BNE ADT5 ;YES LOOP ON TEST BIT 11 SET .PAGE ; SPIRAL TESTS ; ;WRITE THE LAST WORDç I/O COMPLETE TST @#MTSTAT ;CHECK FOR FILE MARK BMI MSPRC5 JSR PC,MTINIT ;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 NWORè‡ð‡ð‡ñ5c,ü7@È;ìA<²& & ÷ ´÷Ö ‡÷ N÷ ô&÷ ,"8Ôí&b2÷ ¦íž´b2Ÿ•þÿ‡æ÷ (÷ Î4`2¶,H8 Ã`2a¡ ¡ ôb2ÈŸ•þÿƒ‡fÁ Á D,n8�`D`Ä Ä %�‡‚ñ•I2ñ‹R2YD2ô•ð ¤,”81ŠP2ñ‹F2(1ŠN2@T2wX2>¼76¼5\2,º8õ.¼`24 �¡ ñ• N2=‘î1f2æè,à8ýÕ@ê1÷ áÖ J@V2wZ2ò»7ê»õ^2,9õâ»b23 1ŠM21ŠK2ñ•N2DŸì1ÄAË5@<,,9Ä =‘è1fþ1æÒñ•R2ñ• N2ý•î1f2!,R9æðÄÃ�æø³ŠO2ÅÅ AŸî17ŠÖøóŠI2w0ó‹A,x9F2@T2wX2d»@V2wé BIT #400,OUTBUF+4 BEQ .+6 DEC OUTBUF+4 MOV OUTBUF+4,TRACK ;SET UP DAE MOV WRDCT,WORK ;GENERATE RANDOM MOV #OUTBUF,%1 ;DATA BUFFER JSR %5,RANDOM MOV #OUTBUF,BUF BIS #BIT8,@DCS ;CLEAR THE DISK WRITE +100 ;WRITE DATA BIT #BIT9,@SR BNE .+6 IOT BR .+12 MOV PRIORITY,@CSR WAIT WRCHECK +100 ;WRITE CHECK DATA BIT #BIT9,@SR BNE .+6 IOT BR .+12 MOV PRIORITY,@CSR WAIT MOV #INBUF,BUF ;SET UP BUFFER JSR %5,ZBUF ;CLEAR BUFFER AREA READ +10ê OF TRACK ZERO ;AND THE FIRST WORD OF TRACK ONE ;USING ONE WORD X-FERS ;DATE = 52525 SPIRAL: BIS #BIT8,@DCS ;CLEAR THE DISK MOV #6000,@#SREQ ; SET LIGHTS JSR R5,ZOBUF ; ZERO OUTPUT BUFFER JSR R5,ZBUF ; ZERO INPUT BUFFER MOV #340,@CSR ;LOCK UP PROCESSING MOV #1000,%6 ;SETUP STACK MOV #100,WRDCT ; SET WORD COUNT TO 100 CLR TRACK MOV #77,DMA ; LAST SECTOR OF TRACT ZERO MOV #100,R0 ëD(R0) BIS #BCKR,R3 MSPRC4: MOV R3,@#MTCOMM ;GIVE COMMAND INC R5 ;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 CLRB DRNEW TST COUNT(R0) BGE MSPRA INìZ2X»ð÷TøÈ,ž9÷Rø7 PøœÄ ô5@È;w< ò5€È;ç,Ä9|ò5È;xô5 È;„èôU È;=Šê1=Šè1�œ ,ê9È;p�wø÷ ÖB—tÂeb2Å Å Å @Àe`2Åe�,:b2Ä÷ ø:JÒ  Ä ÷Ÿ•þÿ÷ Þñ‹,6:F23ñœF2F2ñœG2G2ñœH2H2 EÅ µT2T2µÃ$\:V2V2µX2X2µZ2Z2µ`2`2µb2b2µ¨,z:\2\2µ^2^2Ÿ•þÿæ÷ îýƒó•ÿÿF23ŠG23ŠH2 ð, :Ÿ•þÿõ}�î1f2æ÷ :ßÖ 3ŠO2‡ó‹P2ñ³Šø,Æ:P2÷ ì×-÷æð1÷ ‡Á�\÷EÅ =Šè1Ï,ì:±ŠQ27ŠL÷@V2wZ2ì¹ðý•^î1ñ•N2‡v(;¦öþÿŸ‡f&Á�÷Á � ±ŠR2„�‡í0 ;READ DATA BIT #BIT9,@SR BNE .+6 IOT BR .+12 MOV PRIORITY,@CSR WAIT JSR %5,COMPARE ;COMPARE OUT BUFFER TO IN BUFFER JSR %5,OVRFLO ;TEST FOR EXTRA DATA BREAKS RANER: BIT #BIT9,FLAG ;CHECK FOR ERROR BEQ EXRAX BIC #BIT9,FLAG JSR %5,CONV DMA MES1 6 JSR %5,CONV TRACK MES1A 2 JSR %5,CONV WRDCT MES3 4 EMT+0 HED6 MES1A MES1 MES3 -1 EXRAX: INC PASSC ;HAVE WE DONE IT 1000 TIMES BNE WRLG ;BRANCH IF NO BIT #BIT11,@SR ;LOOP ON TEST BEQ .+6 ;BRANCH Iî ; SET UP DATA MOV #OUTBUF,R1 1$: MOV #52525,(R1)+ SOB R0,1$ MOV #OUTBUF,BUF WRITE ;WRITE LAST ADDR TK ZERO TSTB @DCS ;TEST FOR READY BPL .-4 ;CONTROL STILL BUSY TST @DCS BPL SPIL1 MOV #16,ERCOUNT MOV @DCS,WORK ER16: JSR %5,STAER ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF THE ERROR **** BR SPIRAL SPIL1: CLR DMA INC TRACK WRITE ;WRITE FIRST ADDR. TK 1 TSTB @DCS ;WAIT FOR READY BPL .-4 ;CONTROL STILL BUSY TSïCB DRNEW ; SET BACKWARDS FLAG MSPRA: 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: 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 ; ð°,4;æ w è�¶ À  & D” Ä¥+ Ä¥Y,Z;-Ä¥ À óŽ À D”Äå0�¡ ‚WqÎ,€; ‡a ‡À òÖ  ¶vw v‡â ‚ óu ¨;w tèœæ& & & ÷ LïÖ wéjÄ; ØÈ;ô<³Ê;ñ <±Ì;î <¯Î;ë<©Ð;À+<«Ò;æ<©Ô;ã<§Ö;à<¥Ø;Ý<£Ú;Ú<¡Ü;×<ŸÞ;Ô<�à;Ñ <›â;Â"<—ä;Ã$<”æ;À&<•è;ñF YES JMP RANEX ; ;CHECK FOR MULTI DISK MODE ;IF IN MULTI DISK MODE REPORT "END" ;IF LAST DISK ON SYSTEM HAS BEEN ;EXERCISED. ; ; CLR DMA CLR TRACK BIT #BIT11,FLAG ;ARE WE IN MULTI DISK MODE BEQ REPOEN ;REPORT "END" MOV FLAG,WORK ;WHAT DISK ARE WE ON BIC #177743,WORK ;IF LAST DISK ON SYSTEM CMP WORK,DSKNOR ;REPORT END BEQ REPOEN ;REPORT "END" LAST DISK ADD #4,FLAG ;INC. DISK NO. BR EXTPP ;EXERCISE DISK REPOEN: EMT +1 END ;REPORT END OF PASS BIC #34,FLAG EXTPP: JMPòT @DCS BPL SPIL2 MOV #17,ERCOUNT MOV @DCS,WORK ER17: JSR %5,STAER ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF THE ERROR **** BR SPIRAL SPIL2: MOV #200,WRDCT ; SET UP FOR 2 SECTOR X-FER DEC TRACK MOV #77,DMA MOV #INBUF,BUF ; READ ;READ DATA TSTB @DCS ;TEST FOR READY BPL .-4 ;CONTROL STILL BUSY TST @DCS BPL SPIL3 MOV #20,ERCOUNT MOV @DCS,WORK ER20: JSR %5,STAER ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF THE ERROR **** BR óINTERRUPT ROUTINE MRPRC: MOV COUNT(R0),R1 MOV @#MTBCNT,R2 ; PLACE CONTROLLER REGISTER IN R3 BIT #40000,@#MTSTAT ; TEST END OF FILE BIT BEQ MSPRC4 DEC R2 ; DO NOT COUNT THE E.O.F. AS A RECORD MSPRC4: TST R1 BMI MSPRC5 ; BR IF COUNT IS NEGATIVE NEG R2 MSPRC5: MOV R2,COUNT(R0) SUB R2,R1 MOV R1,NWORD(R0) CLR R5 RTS PC .ENDC ôÀ(<“ê;Í*<‘ì;Ê,<�î;Ç.<�ð;Ä0<‹ò;Á2<‰ô;¾4<‡ö;»6<…ø;¸8<ƒú;Á:<€ü;Áý<<~þ;Áú><|<Áö@<z<ÁóB<x<ÁðD<v<ÁíF<t,H<ö �¶Ö y€À &®' ÷ fé€,n<ðµ¶Ö ‡Ö úæþÿßU0þÿ· ¾êŸÃ,”< ÿÁ€ÿæfæfæfæfæfæfæfæfo,º–=–=) ERROR XXXXXJ#¦= XXXXXX XXXXXX XXXXXX XXXXXX ?,Ä= =¬=³=º=Á=ÿÿ·øÿŽw @æ·æ·~,ê=¦Åâÿ w *æî¶æì¶…æþÿf÷ ê焃,>ŸÍ æhÿ÷ ´ç7^ÿ —-ªUÃéõL,6>³ŠÃ)· ’ÿ Ÿ•þÿ·¢¶·œ¶w ÂŽ‡� ô7 $,\>rÿÅÿBf÷ Bç…wÿ ÷€= ÿ¡7 ÿ¡7 ,‚>þþŸ“ù,-(R5) ; LOAD WC NEG (R5) MOV 6(6),%1 MOV -(1),WORK BIC #177600,WORK ;MASK FUNCTION BITS MOV WORK,-(5) ;LOAD FUNCTION REG. MOV (SP)+,R0 MOV (SP)+,R1 MOV (SP)+,R5 RTI ;RETURN FROM TRAP ; ; ; ; ; ; ; ;RF11 DISK INTERRUPT HANDLER ;ROUTINE CONTINUES ON ERRORS ; DKINT: BIC #BIT4,@CSR ;CLEAR TRACE BIT TST @DCS ;TEST FOR ERROR BPL INTEXT ;BRANCH IF NO ERROR BIS #BIT9,FLAG ;SET ERROR BIT MOV @DAE,WORKú #100,R0 1$: CMP #52525,(R1)+ BNE 2$ SOB R0,1$ BR LPSPI1 2$: MOV #22,ERCOUNT ;SETUP ERROR COUNT MOV #52525,WORK1 ;CORRECT DATA MOV -(R1),WORK ER22: JSR %5,STAER1 ;REPORT ERROR ;****WRD1=THE DATA THAT SHOULD BE IN ADDR. 0 OF TRACK 1 **** ;****WDR2=THE DATA READ FROMADDR.0 OF TRACK 1 **** SPIL5: JMP SPIRAL LPSPI1: BIT #BIT11,@SR ;LOOP ON TEST? BNE SPIL5 .PAGE ; SPIRAL TEST EXT. ; ;WRITE TWO WORDS OFûIZE 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 FILE COMMAND BR MSKFI4 MSKFI3: INC COUNT(R0) ;INCREMENT COUNT DEC NWORD(R0) BIS #BCKF,R3 ;FORM BACK SPACE FILE COMMAND MSKFI4: üþÿÕ ÄÄ=f&÷ ¤C÷ VÌ ú÷• øþš,¨>ÅåŸÍAñŠÃ)Ÿþÿf÷ 6/Ÿ•þÿæ$,Î>„=÷  ó÷ øþ¶‡· ðþæþÿŸ»÷ÿÿäþŸ•þÿ‡“&ô>À‚ â�ÊÅøÊÕ0ƒ ÃE€ƒ ƒ À ô‡ø ?Ö €�‚ƒ„…&æ¦f&MW�À¾€¢€–h,(€Ç€›@�Ö,N÷ ŒÀäÿ8V2ŠR)rœ4*x,t· 4·. ¡ ¡ r®'ÀeçæŒ'÷ Ê,暇À,0?'èd w äÿ„…À0?Ä �Õ•+Á• W,V? â€d Á0B`•�È ôÄe0 ‘¶ w |?–ÿ–%‡Õ•- äÒ‹å‡,�?÷ °ç0&¦Ÿæ¨çý ;REPORT ERROR BIC #177700,WORK ;MASK ADDRESS EXT. BITS. JSR %5,CONV ;CONVERT TO ASCII WORK MES1A 2 EMT+1 HED2 MOV @DCS,WORK ;TEST FOR READ BIC #177770,WORK CMP #4,WORK BNE DELMES ;IF READING REPORT WHICH READ MOV FLAG,WORK BIC #177774,WORK JSR %5,CONV WORK MES13 1 EMT+1 MES13 DELMES: MOV @DAR,WORK ;SET UP LOWER 16 BITS OF ADDR. DEC WORK JSR %5,CONV ;CONVERT TO ASCII WORK MES1 6 EMT+0 MES1A MES1 -1 MOV @DCS,WORK ;SET UP STATUS JSR %5,CONV þ DATA ;STARTING WITH THE LAST ADDRESS OF TRACK0 ;DATA PATTERN = 25252 ;THEN READ THE DATA DOING ONE WORD ;X-FERS XSPIRL: BIS #BIT8,@DCS ; CLEAR MOV #7000,@#SREQ ; SET LIGHTS JSR R5,ZBUF ; ZERO INPUT BUFFER JSR R5,ZOBUF ; ZERO OUTPUT BUFFER MOV #340,@CSR ;LOCK UP PROCESSING MOV #1000,%6 ;SET UP STACK MOV #200,R0 ; SET UP TWO SECTORS MOV #OUTBUF,R1 1$: MOV #25252,(R1)+ SOB R0,ÿ 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) INC COUNT(R0) BR MSKFI2 .PAGE .IFNZ MULRE ; MAGNETIC TAPE MULTIPLE DRIVE REWIND MUREW: .IFNZ DATUM MOVB #1,DRNEW ÷ æ€ÂÀô°°° g,¶?ðU€ðU€ðU€ ·À¿·º¿·´¿Âàô°,Â,Ü?°.°0·Ä¿·¾¿·¸¿˜‚€‡¦&æê´Ÿt,@æBç÷ ¢å€÷t¿ð÷δˆ¿ðÈ´*˜Àå(@@6·¸´€‡£8@{$<@8@:@ÿÿÿÿÿÿÎ V@] X@[ Z@Y \@W ^@U `@ÿÿÿY a@U b@T c@Sd@f@­,Þ@@�*€j�k�`Ao�›CÞ@Àê· $CÂêà &CÄêÜ (CÆêØ *CÈêÔ,,C WORK MES2 6 EMT+1 MES2 BIT #BIT14,@DCS ;TEST FOR HARD ERROR BEQ SOFTER ;GO AND CONTINUE SOFT ERROR MOV @DAE,WORK ;FETCH ERROR EXT. BITS SWAB WORK BIC #177400,WORK JSR %5,CONV ;CONVERT TO ASCII WORK MES2A 3 EMT+0 HED5A MES2A -1 BIS #BIT8,@DCS ;CLEAR THE DISK MOV #1000,%6 BIT #BIT10,@SR ;HALT ON ERROR BEQ .+4 HALT ;YES HALT BIT 10 SET IN SR JMP @HRDER ;EXIT HARD ERROR SOFTER: TST @WC ;CHECK FOR X-FER DONE BEQ INTEXT ;EXIT FROM ROUTINE BIT #BIT9,@1$ MOV #200,WRDCT ; SET WORD COUNT FOR 2 SECTORS MOV #OUTBUF,BUF ;SET UP CMA CLR TRACK ;SET UP DISK ADDR. MOV #77,DMA WRITE ;WRITE DATA TSTB @DCS ;TEST FOR READY BPL .-4 ;CONTROL STILL BUSY TST @DCS ;TEST FOR ERROR BPL X1SPIL ;BRANCH IF NO ERROR MOV @DCS,WORK MOV #23,ERCOUNT ;SET UP ERROR COUNT ER23: JSR %5,STAER ;REPORT CONTROL ERROR ;****WRD1=DISK CONTROL STATUS REG. AT THE TIME OF THE ERROR **** BR XSPIRL X1SPIL: MOV  .ENDC 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 PC,MTINIT BPL MURE2 BIC #ENAB,R3 ; CLEAR INTERRUPT ENABLE BIS #REWD,R3 ;SET REWIN,CÖId\ RC‡J·Òþ7Ðþ7 Ìþ7Êþ÷•CsrK¶þ7 ºþ÷• ³þ÷¨þ^³÷‹ç,†K¨þŸ•þÿwBÙW¬ Ÿ•þÿ·J©·D©w jóŽT,¬K‡Ÿ“þÿ¶·2©·,©w Ró& ÷ †àw°äw PØžU,ÒKæþÿ÷•TþÁLþ÷Jþ©_ìô÷ BþI�÷ ì² �ö,øK÷5,þ÷-ä²4þ�ææ÷5þ6 ô(L ·åþ·eþwRÿ÷-¸²þù€éwÄ÷-úýl@Lúýã÷ÿÿèý÷æýÚý÷âýÍ(TL޲æÞý÷ šÙƒ —v—t÷E0ºý·P¶ýÂ(,vLÀýÂEüÿƒP÷d²Ò÷ Z²Q� ÷•P²W¬f},œL & ÷ "ãÖ Ä&JÃ$JŸKÌ¡ ¡ É ,ÂLB òŠÃ)·“,³¦÷ &!·“"³1 W¬D,%3 ;SET UP SHIFT COUNT CLR %2 ;CLEAR R2 SHIFT: ASL %0 ;SHIFT R0 LEFT AND ROL %4 ;ROTATE CARRY INTO LSB OF R1 INTO ROL %2 ;ROTATE CARRY OUT OF R1 INTO R2 DEC %3 ;DECREMENT R3 BNE SHIFT ;CONTINUE SHIFT LOOP ADD LONUM,%0 ;ADDN IN NUMBER TO MAKE X 129 ADC %4 ;PROPOGATE CARRY ADD HINUM,%4 ;ADDN IN NUMBER TO MAKE X 129 ADC %2 ;PROPOGATE CARRY ADD #1057,%0 ;ADDN LOW CONSTANT ADC %4 ;PROPOGATE CARRIES ADC %2 ;PROPOGATE AGAN ADD #47401,%4 ;ADDN HIGH CONSTANT ADC %2 ;PROPOGIND OUT HOW TO WAIT FOR INT BNE WRWAIT ;WAIT WITH WAIT INSTRUCTION IOT ;WAIT IN BACKGROUND TEST BR SLH WRWAIT: MOV PRIORITY,@CSR WAIT ;WAIT FOR FLAG SLH: BIT #BIT13,FLAG ;TEST FOR WRITE CHECK BEQ ESH ;TEST FOR READ MOV #OUTBUF,BUF ;SETUP OUTPUT BUFFER MOV #340,@CSR WRCHECK +100 ;WRITE CHECK WITH INT. ENABLE BIT #BIT9,@SR ;FINDOUT HOW TO WAIT FOR INT. BNE WCWAIT ;WAIT WITH WAIT INSTRUCTION IOT ;WAIT IN BACKGROUND TEST BR ESH WCWAIT: MOV PRIORITY,@CSR WAIT ;WAIT FOR DEC MTDEL ; DECREMENT DELAY COUNTER BNE MTIN4 BR MTIN2 .ENDC MTIN3: SEN RTS PC ;RETURN MTIN7: MOV #CLEA,@#MTCOMM ; ISSUE CLEAR TO CONTROLLER BR MTINA MTIN6: BIT #1,@#MTSTAT ; TEST TUR BIT BNE MTIN7 DEC MTDEL BNE MTIN6 MTIN2: MOV #11,R4 RTS PC MTDEL: .WORD 7000 ; .PAGE ; PLACE BUFFER,èLf¦÷ XïŸ÷ 2ý�wþwŠþ÷ ܱ‚�÷5Ô±Ö,M÷α÷ŠýwúýÀÎÁþü÷ 0³÷58®±¯,4M÷¨±÷5� ±îè7 þüwÜøüæ@J÷ žðw0þÎZM1À~±‡l&dMYzMzM%,N€dAA!AŽ,*N0P¶R¾RÆR©&PNbNbN@—,ðNw .ð w &ðÀ w ðÀw ðÀ�,Of÷ ÚÖ…1�æþÿÀŸÉ FŸ“þÿ€ ñ%|,þwHþ‚ 7 Àü7ºüÀ> ŠQÖü÷ (÷´ü÷´Q¸ü÷•µü7Šy&¤Q¿ü7 ÂüæPN÷ ºñ‡÷ À÷ ÈÃpN÷xº,ÄQzü÷ ¤÷`rüË ÅœÅE€ÿ… À`üZó-\ü9$êQ÷Rü÷Hü÷rü@üÃe ÷ <üä· ùRbü÷-^ü:üÌ÷ ,ü ƒ˜M„v, R„MáÀü À1 wjþ‚ ÷ ü8÷`Rü÷•lFR ü÷•ü÷èûüæPN÷ þ*\Rñ‡÷ ÷ ÃÒû÷ÊûómÎûóíÈû÷,€R†RÐû‡÷ î÷ öñ²û w$þ3 ¯7¢û÷˜û(¦R÷Âû�ûÅÀwÜ÷DS€û%RDCMP: CMP @SAVE,@SAV1 ;COMPARE BUFFERS BNE WDERR ;WORD IN ERROR WRDINC: INC WORK2 ;+1 WORD COUNT CMP WRDCT,WORK2 ;IS COMPLETE BUFFER CHECKED BEQ ADAM ;EXIT ROUTINE ADD #2,SAVE ADD #2,SAV1 BR WRDCMP ;COMPARE NEXT WORD ADAM: RTS %5 ;EXIT THIS ROUTINE ; WDERR: BIS #BIT9,FLAG ;SET ERROR BIT MOV DMA,WORK ;FETCH STARTING DISK ADDR MOV TRACK,WORK1 ; ADD WORK2,WORK ;CALCULATE FAILING ADDR 1$: BIT #177700,WORK BEQ 2$ INC WORK1 SUB #100,WORK &T ; ;WORD COUNT CAN BE EQUAL TO OR LESS THAN 1000 WORDS ; RANEX: MOV #-1000,PASSC MOV #1000,%6 BIC #BIT9,FLAG MOV #RANER,HRDER ;SET UP FOR HARD ERROR MOV PRIORITY,@CSR ;SET PRIORITY TO LEVEL 5 WRLG: MOV #3,WORK ;GENERATE RANDOM WORD MOV #OUTBUF,%1 JSR %5,RANDOM BIC #177003,OUTBUF ; MASK FOR WORD LENGTH BEQ WRLG MOV OUTBUF,WRDCT ;SET UP WORD COUNT MOV OUTBUF+2,DMA ;SET UP DAR BIC #177700,DMA BIC #177000,OUTBUF+4 BIT #400,OUTBUF+4' NWORD(R0),R5 ; GET WORD COUNT ASL R5 ; BYTE COUNT NEG R5 MOV R5,@#MTBCNT .ENDC RTS PC .PAGE ; DEQUEUE 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 (÷bSxû÷#&ÈRjSpû@÷ &÷úRzû÷•wû÷•û÷$*èR\û€ûæPN÷ pðŸ•þÿ‡÷ z÷ ‚ÃBûË Lÿ Ñ& S.ûó‹ €@÷ œÿ ûæN÷ <ð÷0S,,S&û‡÷ D÷ L÷ 2Dwâý œÂE€ÿòµ@J,RS"Nól3 ‡óÕ€‡óÅ€‡‰ Ÿ•þÿ#,xS1�w ”뎇÷ Ðú‡Ö À1�÷ ÔD,žSwˆýÀ 1�÷²S¤ú‡÷ Âï Ã*þÀ €è,ÄSÄE€Wq Ca 3 ´B„ Ãe ù‡À Åœ¹BØ,êSÅE€ÿq¡ òÃe´B‡¦À 7 Dú —r ·8ú×pæ"T ÃepN÷.úCœ ÷�0úà ÷œÈ;8ú· i,,T4ú‚‡Kóúsœ ³�ñ‹€óÕ€Õ,RTs òµ) BR 1$ 2$: MOV FLAG,WORK3 BIC #177743,WORK3 SWAB WORK3 BIS WORK3,WORK1 JSR %5,CONV ;CONVERT WORD ADDR TO ASCII WORK MES1 6 JSR %5,CONV ;CONVERT TRACK ADDR TO ASCII WORK1 MES1A 2 MOV @SAVE,WORK ;FETCH GOOD DATA JSR %5,CONV ;CONVERT GOOD DATA TO ASCII WORK MES5 6 MOV @SAV1,WORK ;FETCH BAD DATA JSR %5,CONV ;CONVERT TO ASCII WORK MES6 6 MOV FLAG,WORK ;WHICH READ THE BIC #177774,WORK ;ERROR OCCURRED ON JSR %5,CONV WORK MES13 1 * BEQ .+6 DEC OUTBUF+4 MOV OUTBUF+4,TRACK ;SET UP DAE MOV WRDCT,WORK ;GENERATE RANDOM MOV #OUTBUF,%1 ;DATA BUFFER JSR %5,RANDOM MOV #OUTBUF,BUF BIS #BIT8,@DCS ;CLEAR THE DISK WRITE +100 ;WRITE DATA BIT #BIT9,@SR BNE .+6 IOT BR .+12 MOV PRIORITY,@CSR WAIT WRCHECK +100 ;WRITE CHECK DATA BIT #BIT9,@SR BNE .+6 IOT BR .+12 MOV PRIORITY,@CSR WAIT MOV #INBUF,BUF ;SET UP BUFFER JSR %5,ZBUF ;CLEAR BUFFER AREA READ +100 ;READ DATA BIT #B+ 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 NUMBER OF REQUESTOR BEQ MTDEQ1 ;BRANCH IF NOT A TASK DECB IOSTAT(R2) ;OTHERWISE, DECREMENT THE I/O IN PROGRES BNE MTDEQ1 ,@"NóØùól‡BœÂE€ÿ‡^xTÁÐù÷Îùh ‡V�„VÄVÞW� „TV+h…VÅVÉWœV8-4†VÆVÜW› VÆ/¢‡VÇVÉWš VF-"ˆVÈVÚW™VŽ.׉VÉVÙ W˜V¢-ŠVÊV× W—Vð†‹VËVÅ W ŒVnŒVÌVÕ W�V‹�VÍVÄ WŒV‰ŽVÎVÓW‹Vt2á�VüÏVÒWˆ V3L�VûÐVÑWˆ - EMT +0 ;PRINT MESSAGE HED1 MES13 MES1A MES1 MES5 MES6 -1 BIT #BIT10,@SR ;HALT ON ERROR BEQ .+4 HALT ;YES HALT BIT 10 SET IN SR BR WRDINC ;GO COMPARE NEXT WORD ; ; ; ; ; ; ;ROUTINE TO ZERO DATA INPUT BUFFER ;ZERO BUFFER BEFORE READING ; ZOBUF: MOV #OUTBUF,R4 ; ZERO OUTPUT BUFFER BR ZBUFE ; ZBUF: MOV #INBUF,%4 ;FETCH START OF INBUFFER ZBUFE: MOV #4000,R0 1$: CLR (R4)+ SOB R0,1$ RTS %5 ;EXIT ROUTINE ; ;.IT9,@SR BNE .+6 IOT BR .+12 MOV PRIORITY,@CSR WAIT JSR %5,COMPARE ;COMPARE OUT BUFFER TO IN BUFFER JSR %5,OVRFLO ;TEST FOR EXTRA DATA BREAKS RANER: BIT #BIT9,FLAG ;CHECK FOR ERROR BEQ EXRAX BIC #BIT9,FLAG JSR %5,CONV DMA MES1 6 JSR %5,CONV TRACK MES1A 2 JSR %5,CONV WRDCT MES3 4 EMT+0 HED6 MES1A MES1 MES3 -1 EXRAX: INC PASSC ;HAVE WE DONE IT 1000 TIMES BNE WRLG ;BRANCH IF NO BIT #BIT11,@SR ;LOOP ON TEST BEQ .+6 ;BRANCH IF YES JMP RANEX ; MOV R2,-(SP) ;GO TO OVERLAY MONITOR SO THE TASKS CORE JSR PC,RELTSK ; CAN BE RELEASED MTDEQ1: RTS PC .END 0VPJé‘VÑVÐWˆ V:?’VùÒVÎW‡"V4;“VøÓV!®W†$V}”VÔVÎW�&V{•V ÕVÍWŒ(Vô=H–VüÖVËWƒ*VlCÈ—Vô×VÊWˆ,Vu˜VùØVÉWˆ.VZYÀ™VøÙVÈWˆ0VqšVñÚVÈW‡2VNk¶›VðÛVÇW†4Vfl›œVïÜVÆW…6VÜ`/�VîÝV0•W„8V°`YžVíÞV0”Wƒ:VgŸVìßV3�W x1 ; ; ;ROUTINE TO TEST FOR ADDITIONAL DATA TRANSFERS ;ANY DATA TRANSFERRED AFTER WORD COUNT OVERFLOW IS AN ERROR ; ; OVRFLO: MOV WRDCT,%4 ;ADD WORD COUNT ROL %4 ADD #INBUF,%4 CHWRD: CMP R4,#INBUF+10000 ; IS TEST COMPLETE BNE CKNEX ;CHECK NEXT WORD RTS %5 ;TEST IS COMPLETE CKNEX: TST (4)+ ;TEST FOR ZERO WORD BEQ CHWRD ;WORD IS ZERO BIS #BIT9,FLAG ;SET ERROR BIT MOV %4,ACNVX SUB #2,ACNVX JSR %5,CONV ;CONVERT 1 OCTAL TO ASCII ACNVX ;ADDRESS MES4 6 MOV %4,ACNVX 2 ;CHECK FOR MULTI DISK MODE ;IF IN MULTI DISK MODE REPORT "END" ;IF LAST DISK ON SYSTEM HAS BEEN ;EXERCISED. ; ; CLR DMA CLR TRACK BIT #BIT11,FLAG ;ARE WE IN MULTI DISK MODE BEQ REPOEN ;REPORT "END" MOV FLAG,WORK ;WHAT DISK ARE WE ON BIC #177743,WORK ;IF LAST DISK ON SYSTEM CMP WORK,DSKNOR ;REPORT END BEQ REPOEN ;REPORT "END" LAST DISK ADD #4,FLAG ;INC. DISK NO. BR EXTPP ;EXERCISE DISK REPOEN: EMT +1 END ;REPORT END OF PASS BIC #34,FLAG EXTPP: JMP ADTST ;RECYCLE ; ;3B´ØtÌ:>~X ß’Z€ßà‚÷ Vc¡VêáV¯!W€@VÔ^/¢VéâV¿"WwBVØ^)£VèãV¾#WvDVÞ^!¤VçäV½$WuFVä^¥VæåV¼%WtHVê^¦VåæV»&WsJVW§VûçVº'WrLVU¨VúèV¹(WqNVS©VùéV¸)WpPVÈ_*ªVáêV¶*WoRVD`««VàëVµ+WnTVM¬VöìVµ,WmVVðN ­VáíV´-WlXVøN®VàîV³.Wk5SUB #2,ACNVX MOV @ACNVX,ACNVX JSR %5,CONV ;CONVERT OCTAL TO ASCII ACNVX ;DATA MES6 6 EMT +0 ;CALL TYPE OUT ROUTINE HED3 MES4 MES6 -1 BR CHWRD ;FETCH NEXT WORD ; ; ;EXTENDED MEMORY EXERCISER ;THE PROGRAM DETERMINES HOW MUCH MEMORY ;IS ON THE SYSTEM THEN IT ;GENERATES A RANDOM BUFFER THAT SIZE ;AND WRITES AND WRITE CHECKS THE DATA ; EXTMEN: BIS #BIT8,@DCS ;CLEAR THE DISK MOV #340,@CSR ;LOCK UP PRIORITY LEVELS MOV #1000,%6 MOV #MAXREF,4 ;SET UP I/O BUS TRAP MOV 6ENTER DISK HANDLER BY THE TRAP INSTRUCTION ;ARGUMENT TO TRAP INSTRUCTION IS TWO ORDER ;BYTE OF THE CONTROL REGISTER. ; DISK: MOV R5,-(SP) MOV R1,-(SP) MOV R0,-(SP) MOV DAR,R5 MOV TRACK,R0 BIC #177000,R0 ASH #6,R0 MOV DMA,R1 BIC #177700,R1 ADD R1,R0 MOV R0,(R5) ; LOAD DAR MOV BUF,-(R5) ; LOAD CMA MOV WRDCT,-(R5) ; LOAD WC 7÷‹ g·Šg÷ @\·Šg‡ŸÆ}~àæ æ÷ `YŸŸ °ÿÀÁÀô ÃàôÄ“Âe€÷€ÔÜßUzÿÜç÷¨;zè÷àvèßüÿÁà÷â5ðçwîç÷D3êçwèç÷˜Gè÷à[~Xèß””ßà–÷ÌK è÷àè÷’T ç÷àœç÷ؼç÷à¸ç÷@=€ç÷à0|ç÷ ®þ÷ þý÷ býZç7 Tç7ŠÏ4æhM÷ ¶*÷%¬4ü÷•¹47ŠK(æN÷ œ*~Ð÷%:5ü÷•5(7Š¿æŒ'÷ ‚*÷%œü÷•©÷ \ý      ß•€ëwjEFGHIJKLMNOPQœ~HRST8ZVOö¯VÝïV²/Wj\V Oê°VÜðV±0Wi^VC±VññV±1Wp`V�?r²VàòV°2WobVdC˜³VÛóV®3WˆædVjar´VîôV®4WmfV aεVíõV­5WlhVôUð¶VÜöV¬6WkjVø?·VÛ÷V›7WjlVlD…¸VÚøVª8WinVÂO"¹VÙùV©9WhpV1ºVâúV—:W_rV/»VáûV¦;W^tVaʼVÏüV–WczVja\¿VÌÿV‘?Wb|VDWŠÀVËW‘@Wa~VèrÉÁVÊW�AW`€VdCzÂVÐWžBWW‚Vj_VÃVÏWžCW^,ŠTwTwZ÷ ®Òûö5À÷¦f&F ‚ÂU€ß,°T ÿèô�a €Õå ?âÁ€ÒÁEàÿ¼„VÛœv,ÖTÄV7œWªÿÀ 7V ÿ}@WtüÿÀEðÿÁEðÿÂå·«,üT†ÿÀ ’~€��‚��·<ÒÆhÿæfÿ¦ý,"Uææ�`ÿ&œþÿÎEŸ•þÿ‚“\ÂE€ÿ‚aƒœ×tüÿÃE&,HUñÿß ÿêôƒÃEà×túÿß`êôÊEÀÿÊU Ö‹€‚ƒœ²,nU ×tüÿÃEñÿò ÿƒ ÃEà=CT MOV #BIT7,@CSR ;SET UP PRIORITY LEVEL MOV #NEWBUF,HRDER ;SET UP FOR HARD ERROR CLR DMA CLR TRACK NEWBUF: MOV WRDCT,WORK ;SET UP FOR RANDOM BUFFER MOV #OUTBUF,%1 JSR %5,RANDOM ;NEW DATA BUFFER GENERATED MOV #OUTBUF,BUF WRITE+100 ;WRITE BUFFER BIT #BIT9,@SR BNE .+6 IOT BR .+12 MOV PRIORITY,@CSR WAIT WRCHECK+100 ;WRITE CHECK DATA BIT #BIT9,@SR BNE .+6 IOT BR .+12 MOV PRIORITY,@CSR WAIT JSR %7,DISBUF ;SET UP NEW DISK BUFFER BR NEWBUF ;GO WRITE NEW BUFFER >177700,WORK ;MASK ADDRESS EXT. BITS. JSR %5,CONV ;CONVERT TO ASCII WORK MES1A 2 EMT+1 HED2 MOV @DCS,WORK ;TEST FOR READ BIC #177770,WORK CMP #4,WORK BNE DELMES ;IF READING REPORT WHICH READ MOV FLAG,WORK BIC #177774,WORK JSR %5,CONV WORK MES13 1 EMT+1 MES13 DELMES: MOV @DAR,WORK ;SET UP LOWER 16 BITS OF ADDR. DEC WORK JSR %5,CONV ;CONVERT TO ASCII WORK MES1 6 EMT+0 MES1A MES1 -1 MOV @DCS,WORK ;SET UP STATUS JSR %5,CONV WORK MES2 6 EM?¡  òàðÅ óŠÃ)“~ æ÷ XRŸ•þÿ6 ŸìôŸêôƒ‚�€‡ðÕ ïöïÿÿ÷ øÿßE@fÿ&f¦À”Á´ÂP‚~7 Ôÿ7 Òÿ÷ÿÿÈÿ‚�€· ¼ÿüf{~&æ¦f&æêôæìô& & À” Ð B 0þÿÁeW @ów¦÷ T ‚òµ òŠ ‚óèòµ ù¦ƒ÷ Ö Âó&f¦æÆåª~�€w‚þ²œ ƒœ „Ã5€òÕ Ž ß:ýìô2 ¦÷ 8 ¿(ý·"ý· ý÷e ý÷êôýÇÃ5äÃ5@Ô Ã5 ò  ¦& ã÷ Þ ]~<] ÄeÃ5 ò‹ £ƒ¦÷ ZÿÖ Â�òÕ ÷ –‘þÿ&f¦æêôü Ÿêô‚�€òÅ Ÿ@×túÿò`Ÿìô*,”Uƒ ÃEÀÿÃUÀòƒ‚Þ ŸÆ¤Ñ&&7Îþ7›,ºUÈþÁ 0C~ÀeÀEà&À°þÁ®þßU0þÿ† Ê(àUÖ €�‚wªÖ ØæLѦ÷ †Ð^s,DW¦öNׇ” L;hM�H£•*ôÌKa@i NNsqÊ*jWØN%leè@R8xXC”¶^”ð_pÖ 8*ŽWŽHw lD\Þ@®ŒsP@´L R@ô&@Aö&`;œ*²W¬Mm'NÂO‰'ö,NŽ'ŒsdM”'L fMµ' ™„MŒ(` ï*ÖW"NÉ2Ú®'’4!;`@49p(«:<}Ã)_M€QÄ;�Mp&6*úW„^�M€WŠ^0X¹s8@ÜYYqT@ÞY!T6NYeÞÈ;hf€p¢*X?”f�Y'[gÐ4"?;}¸G¬'’è€4* €` R)ë«s'Ô BXŒ'ÿÿªLXËìX~^ABR NEWBUF-10 ;DISK COMPLETE START AGAIN ; ;BACKGROUND TEST FOR INTERRUPTS ; XWAIT: MOV #RTIX,14 ;SET UP TRACE TRAP CLR 16 MOV #-1000,PASS ;SET UP TIME BASE BIS #BIT4,@CSR ;SET TRACE BIT CLR #0 XINCW: INC XINCW-2 TSTB XINCW-2 BPL XINCW INC PASS BEQ XINERR JSR PC,BCKGRD BR XINCW-4 ;REPORT BACKGROUND TEST TIMED OUT XINERR: MOV #340,@CSR BIC #BIT4,@CSR ;CLEAR TRACE BIT EMT+1 TIMO HALT ; RTIX: RTI ; RDCS = 177460 RWC = RDCS + 2 RCMA = RDCSBT+1 MES2 BIT #BIT14,@DCS ;TEST FOR HARD ERROR BEQ SOFTER ;GO AND CONTINUE SOFT ERROR MOV @DAE,WORK ;FETCH ERROR EXT. BITS SWAB WORK BIC #177400,WORK JSR %5,CONV ;CONVERT TO ASCII WORK MES2A 3 EMT+0 HED5A MES2A -1 BIS #BIT8,@DCS ;CLEAR THE DISK MOV #1000,%6 BIT #BIT10,@SR ;HALT ON ERROR BEQ .+4 HALT ;YES HALT BIT 10 SET IN SR JMP @HRDER ;EXIT HARD ERROR SOFTER: TST @WC ;CHECK FOR X-FER DONE BEQ INTEXT ;EXIT FROM ROUTINE BIT #BIT9,@SR BEQ .+6 SUB #2,Còµ ÞÚ÷ dþ÷ ^‘þÿŸw²þÖ |~€Â€›Ê æÚ ÷ ÞÐâ÷ÌâÌ Ö ŸìôŸêô€�‚ƒ„…7 .üFâ· $ü<âw Š · þåÃâ#£c#ãêô££Ö ŸìôŸêô€�‚ƒ„~ø…w "æÃÔææßêôÀÁÂć†ÿÿž ¤ ¬ !n!ª!Ò!*"”"ž ¤ Ä L!’!Î!"*"Ì"´<\ w ¼ €æêôæ%~pìôÄÈ c„ ¬„ œ[D YÄp�RD ÄœK— H„ W  ð A0 W ;0 æþÿŸ&÷ æ<ÿ÷ ðž·~è0ÿìô—-ªUÂH²ŠÃ)° Ÿþÿð· ÿ-7ÿ÷ÎÕÿ÷ÿþþÁ ù $¬Ä ÷ DÃY�\ƒY†,Y L/P 1 PARITY ERROR L/P 1 NO{ :YT READYvBY L/P 1 ABORTEDèVYfXêXnYòYvZ^,ZY&f¦æ&fæêôæìô€÷ ¾ 7¬Ì,€YŒÿÄ0ŸìôŸêô…„ƒ‚�€Ž‡X,¦Yœ— ÂÉ Ä åÄ â÷ hæ²,ÌYþÿŸÈ :&÷ ̦NX÷ ðËž²NXìô `,òYö%ªUÄFÍ´ŠÃ)0 ó HX$Ÿþÿ ð¥Ñ,Zð ¶Æe…„ƒ‚�€& ÷ Òw>Öü,>Z0Ÿþÿ£ˆ ŸþÿÄ›³ HXŸþÿsJX3 Z,dZXX3 ZX³`Xs\X3 ^X÷ ÖÂE + 4 RDAR = RDCS + 6 RDAE = RDCS + 10 MTS = 172520 MTC = MTS + 2 MTBRC = MTS + 4 MTCMA = MTS + 6 ; BCKGRD: MOV R1,SAVR1 ; SAVE R1 TSTB RDCS ; READY BEQ DATUM MOV #400,@#RDCS ; CLEAR MOV #-200,@#RWC ; SET WORD COUNT MOV #RFBUF,@#RCMA ; SET INPUT ADDRESS INC DFADD ; SET DISK ADDRESS MOV DFADD,R1 MOV R1,@#RDAR BIC #1777F(6) ;X-FER NOT DONE SET UP FOR RETURN BIT #BIT10,@SR ;HALT ON ERROR BEQ .+4 HALT ;YES HALT BIT10 SET IN SR BIS #BIT0,@DCS ;SET GO AND CONTINUE RTI ;RETURN TO WAIT INSTR. ; ; INTEXT: BIT #BIT13,@SR ;HALT ON COMPLETION FLAG BEQ .+4 HALT ;YES BIT 13 SET IN SR HALT BIT #BIT9,@SR BNE .+6 MOV #774,%6 ;RESET STACK RTI ;EXIT ; ; ;ROUTINE TO SET UP DAR AND DAE ;FROM SR AND CONVERSATION ;ENTER FROM JSR %5,OPDSEL OPDSEL: BIT #BIT7,@SR ;DOES SR CONTAIN TRACK # BNE .+4 RTS GŽˆ 0ðPõŸìôŸêôw ¼Ž‡æT;~`fœG÷ „úÖ ð¥èð åÆeöþÿw Š& ÷ ¾ wèw ˆ�÷ ‚þ�Àxþ÷vþ@ÕæT÷ RûÖ  Å ý 6ðPõ×7Põð Å U~Ø÷ wô÷ è¬& & ÷ ÐÖ ¬&& ÷ >÷ þ%�Àþ&÷ ’€7üý÷ÆÔøýìô÷ôýðýÁ ù $¬ÊÄ ÈæTV~P fœG÷ ˜ùÖ ‡w Â÷ ¼ý�À²ý÷°ýzÔ, ÷ P æTæ÷ dùÖ Ä ÷ Hÿw x‡÷ X 7Šzý‡7Štý÷ F€÷ ÒÃUßRõ‡ ð x~È €÷ Üÿ×7Põ€¹ÁTõ� p`Ä ð ÷•.ý÷  €ð•€ßÿÿTõÃU ßRõ… ‡7Š ý÷ Hhq÷ îŸ÷ ô¹,ŠZ Âw0w ŠÉ ÅÔ$ó HXMœÂ`X¦LX÷ >,°ZúÊ€ìôÁJX÷ ˜å÷ ŠÂhq÷ ¢÷ ¨¹,ÖZMæþÿÂ`XŸ2LX „ÄeLX¡ ¡ 2NXÈ«,üZŸþÿÄXXôŠÃ)&÷ ê¬ æXXï,"[& ÷ œÔÖ fæ&æXX÷ ჅÂ`XÂá,H[÷ æÄò LXÂe(¦LX÷ FÊ€y,n[ìô÷ Âð wVÿsJX³`X3 XX3 ZXÖ,”[Âhqs\X3 ^X÷ Î÷ ª÷ ÒM÷  3 HXæY�,º[÷ Ö M³ ^Xó%^X÷ X÷ z÷ ¢Mæ`,à[Y÷ `ñwèþæ,Y÷ N÷ V3 ^XÄY&Õ,\ô\æd÷ |Ö MC fÁJXÂI74,R1 MOV R1,@#RDAE MOV #5,@#RDCS ; READ MOV SAVR1,R1 DATUM: CLR MTC BIT #1,@#MTS ; TAPE UNIT READY 1$: BNE 2$ RTS PC 2$: BIT #2000,@#MTS BEQ 3$ MOV #240,1$ RTS PC 3$: MOV #1000,@#MTC ; CLEAR MOV @#OUTBUF,@#MTCMA ; SET BUFFER ADDRESS MOV #-10000,@#MTBRC ; SET BYTE COUNT MOV #5,@#MTC J%5 MOV @SR,R0 ; FETCH SW BIC #177600,R0 BIC #177,TRACK BIS R0,TRACK MOV #0,DMA ; USE MOV RATHER THAN CLR FOR PATCHING RTS %5 ;EXIT ; ;ROUTINE TO SETUP DISK BUFFERS ;ADD WORD COUNT TO STARTING DISK ADDRESSES ;COMPARE CALCULATED ADDRESS TO TERMINATING ADDRESS ; DISBUF: MOV WRDCT,R1 ASH #-6,R1 ; CONVERT TO SECTION ADD DMA,R1 MOV TRACK,R2 ASH #6,R2 KÞ€÷ jÄ ÂPõ—t � ÂEüÿÃUì~@!ÃU ßRõ‡ ð €÷ ¼ÿÛ×7Põ€¹ÂÁTõ� p`‡7вü÷ „ €Ä ÂPõ—t � ÃUßRõ‡ €÷ Ðÿ¸×7Põ€¹Ÿ‡÷•tü÷ F€×7ª~¸!Põ ÃUßRõ‡0Šü ‡7ŠNüð ·ŠDü÷  €� ÃU_TõßRõ‡ÃU øÂTõß5@Põ Á � °�àp ‡7Šöûð ~0"·Šìû ÁPõWt�÷ ²€ß€Tõð �ð ° ÃU° ð ÃU ßRõ… ‡ð ° ð ÷ð ° ò÷•Šû œfÁEüÿ� Ç~¨" †°�÷ H€ÃE@ÃUßRõ‚ Á ð°‡  ÁEüÿ� †ßERõßPRõß5Põ‚ ÃeÁ ðL`XæLX÷ ?,,\~É€ìô÷ Ö …ÄdXÅ÷ ³ ^X×,^X ,R\´æd÷ 2Ö ‡ðÖ …wfþæ&f[,x\f& ÀVYÅZXAaÁes!\XB3 bX DÔ! c,ž\! 3 VY³ bX Ä% !3 VY ÷ ^Ä• ó,Ä\Îå÷ R … s!\XßÀ5Е sZXÀìVYA,ê\„ Ö …�€Ö ‡3 VY³ bXÄ ÷ êÎ5o,]øÝÅ êÄÕ¶ 6 & „`“3 XYŽ Ö Ü,6]‡ð¥ ‡ð¥ùćß@ê‡Äõ,\]ê& Ä5 Ä5Ä5Ö ‡– ‡Ö ‡ó Yu,‚] 3dX  ê÷ Ðúß ê êßfXêß),¨]ÈêÄYô\&æd÷ ÐÖ ‡fÄVYM ; GIVE WRITE COMMAND RTS PC DFADD: .WORD 0 ; DISK ADDRESS SAVR1: .WORD 0 RFBUF: .BLKW 204 ; RF11 INPUT BUFFER .PAGE ;RF11 POWER FAIL TEST "1 ; DISK ZERO ; WRITE COMPLETE DISK WITH 125252 PATTERN ; REPORT "OK" ;START WRITING THE SAME PATTERN ;WHEN POWER FAIL OCCURS ABORT TRANSFER ;SETUP NEW ENTRY POINT AND HALT ; ;POWER UP AND WRITE CHECK THE DISK FOR ERRORS ; ;***ONLY ONE ERROR IS CONSIDERED ACCEPTABLE*** ; ; PFT1: MOV #10N ADD R1,R2 INC R2 MOV R2,WORK1 ; SET UP WORK1 IN CASE OF AN ERROR COMDAR: CMP R2,@DAR BEQ CMDAE BIS #BIT6,FLAG CMDAE: BIT #177700,R1 BEQ 2$ SUB #100,R1 ADD #1,TRACK ; USE ADD RATHER THAN INC FOR TEST PATCHING BIT #177000,TRACK BEQ 1$ CLR TRACK CLR R1 ADD #2,(6) ; INC STACK POINTER 1$: BIC #177700,R1 2$: O‡÷Šœ÷�û÷­ûû3÷­û û/×tßRõæ~ #ÃUA 0Š÷\ ,÷­éúåú ÷­àúÜú ß5€Rõ ÷ 6ùX#ß5Põ÷ $ù ¸‡ßRõÑß5Põø÷ ùÄ ‡ìô&÷ D~˜#^… wuQ ÄEüÿQ_VõpÅ  _Tõ‡0÷ LúðPõæþÿŸ74ú ÷.ú¡7 (ú¡7 "úÈŸþÿ òŠÃ)¦÷ …~$ìI‡ÿÿæþÿŸ· ôÿ&ææB„&�R)ô•R)Ä ÷¤ÐÒÿ&®'÷ \„7 îß50þÿ3Ãò££Ö £´÷¦ÿtЄÆ ßþÿæ¯~ˆ$¦f&æVÐæTÐæRÐÀF'&&&&& ßþÿM¦)ƒ „ßF ´÷LÿÐæ óŸPÅœ,Î]BÀåÄÄ Ä Ä Äe^0ð0ŠÈQ,ô]&÷ zÔ…ÀVY‡ÃwÃwøÿÃwðÿy ^ß, ^ÅÀVY@aAa… !B@ÁJX…Â`Xw¬ü êñ,0^‡f  ÅCqBa…à ‡„fÅìXæþÿŸ¸,V^õ 5 Ÿþÿf÷ Ô…Ž¤‡Ÿþÿ…Ž´¤|^‡1 ‡· Šú‡7 „ú‡¤ ß’Z€ßà‚÷ Ÿö8Ÿö2ŸŸ•þÿöåUCHKDAT: WRCHECK +100 BIT #BIT9,@SR BNE .+6 IOT BR .+12 MOV PRIORITY,@CSR WAIT JSR %7,DISBUF ;SET UP NEW DISK BUFFER BR CHKDAT JMP PFWAT ;GO WAIT FOR ANOTHER ;POWER FAIL ; ;POWER DOWN ROUTINE ;ABORT DISK AND HALT ; ; DOWN: BIS #BIT8,@DCS ;ABORT DISK MOV #UP,24 ;SET POWER FAIL VECTOR HALT ; UP: MOV #DOWN,24 MOV #1000,%6 MOV #-300.,WORK ;SET UP TWENTY SECOND TIMER TIMCNT: RESET INC WORK ;+1 TIMER BNE TIMCNT ;TWO SECONDS NOT UP GO WAIT JMP UPCHK ;GO CHECKV %5 PASEL ; PASEL: MOV PATNU,%0 ;SET UP PATTERN NUMBER MOV WRDCT,WORK ;SET UP WORK MOV #OUTBUF,%1 ;LOC. OF OUTBUFFER CMP #42,%0 ;TEST FOR RANDOM DATA NUMBER BEQ RANDOM ;GO GENERATE RANDOM DATA FILDAT: MOV PAT0(0),(1)+ ;FILL BUFFER DEC WORK ;DEC. WORK COUNT BNE FILDAT ;LOAD NEXT WORD RTS %5 ;BUFFER FULL ; ;RANDOM DATA ; ; ;RANDOM DATA GENERATOR SUBROUTINE RANDOM: MOV LONUM,%0 ;SET UP R0 WITH 5 DIGITS LOW MOV HINUM,%4 ;SET UP R1 WITH 5 DIGITS HIGH MOV #7,%3 ;SET UP SHIFT COUWÀEàtúÿ7`(ζöEÀÿöU �€Ž‡¶Ð~à&ø&f€&À &®'÷ Úþ€�ÁWtüÿÁEñÿ@`7$ÜÍ€ÀEàtúÿ7`ÌͶöEÀÿöUÀ�€Ž‡¶ø ÿÿf~X'ÿÿÿÿÿÿÿÿÙ Ú Û Ü Ý Þ ß à á â ž'ž'¬Å~Ð'Š~H(Xì,Ö`l‡ÆåŽæþÿŸöŸö ŸöŸZ,ü`Ÿ•þÿ‡¦öøž‡&f€& #� ,"aW <æþÿŸ7ΞwÊž7 Æž7 žÀ€ € PÁ]´,Ha¶žw²ž7®žŸ•þÿ6 �€Ž‡öø&få,na¦æ&Ä‚ FÂ5„ 7xž€= ,”a:�7À p þÿ3‚ 0Âel— Ð+DÃåÞ,ºaÄlþÿúC×t € æþÿŸ7*žw&ž·"ž÷Î,àaž7ž÷Eøž÷PžŸ•þÿ6 „ƒ‚�€¶ºbÖ ‡öó ,b],:b÷Eð„÷U0~÷Eÿ|÷Uv÷Eðj÷UPÅ,`bd÷Eÿb÷U„\ ÷EðPY DISK ; ; ; ; ; ; ;POWER FAIL TEST #2 ;DISK ZERO ;WRITE COMPLETE DISK WITH 125252 PATTERN ;REPORT "OK" ;WRITE CHECK DISK AND WAIT FOR POWER FAIL ;WHEN POWER COMES BACK WRITE CHECK DISK AGAIN ;AND CHECK FOR ERRORS ;***NO ERRORS SHOULD OCCUR.*** ; ;DO NOT CREATE ANOTHER POWER FAIL UNTIL ;THE ADDRESS REGISTER HAS COMPLETELY CYCLED ;THROUGH. ; PFT2: MOV #1000,%6 ;SET UP STACK JSR %7,POWFAL ;WRITE 125252 ON DISK PWRFL: CLR DMA CLR TRACK MOV #PWRFL,HRDER ;SET UP HARD ERROR MOV #PWRDZNT CLR %2 ;CLEAR R2 SHIFT: ASL %0 ;SHIFT R0 LEFT AND ROL %4 ;ROTATE CARRY INTO LSB OF R1 INTO ROL %2 ;ROTATE CARRY OUT OF R1 INTO R2 DEC %3 ;DECREMENT R3 BNE SHIFT ;CONTINUE SHIFT LOOP ADD LONUM,%0 ;ADDN IN NUMBER TO MAKE X 129 ADC %4 ;PROPOGATE CARRY ADD HINUM,%4 ;ADDN IN NUMBER TO MAKE X 129 ADC %2 ;PROPOGATE CARRY ADD #1057,%0 ;ADDN LOW CONSTANT ADC %4 ;PROPOGATE CARRIES ADC %2 ;PROPOGATE AGAN ADD #47401,%4 ;ADDN HIGH CONSTANT ADC %2 ;PROPOGATE CARRY ADD #6,%2 [~À(™~8) ~°)¨~(*\÷U@J÷EÿH÷U„2,†bBw –ÜÀ¦ÿ7  ÿ7МÿŠÀ   Db € ¯,¬b„  ‚ Â5øqbÑ W !îÄ5 îƒ ‘,Òb÷ ^ÿêƒÂíVÿ‚ ÂÂÝNÿ·Nÿ÷E€Jÿ„  ƒ Ã5,øbúqbw ܇÷U€.ÿù ,c`,6cÿÿ<,\c,‚cÿÿ$p¨c¨câc¨c ×,¨cÈÎcÿÿ²,èc$pdd>dd û,d]N,24 ;SET UP POWER FAIL VEC. MOV #340,26 CHKDSK: WRCHECK +100 BIT #BIT9,@SR BNE .+6 IOT ;WAIT IN BACKGROUND BR .+12 MOV PRIORITY,@CSR WAIT JSR %7,DISBUF ;CHECK NEXT BUFFER BR CHKDSK BR PWRFL ; ;ROUTINE TO ABORT DISK DURING POWER FAIL ; PWRDN: BIS #BIT8,@DCS ;CLEAR THE DISK MOV #PWRUP,24 ;SET UP RESTART HALT ; PWRUP: MOV #PWRDN,24 ;RESET POWER FAIL VECTOR MOV #1000,%6 MOV #-300.,WORK ;SET UP TWENTY SECOND TIMER XTIMCNT: RESET INC WORK ;+1 TIMER BNE XTIMCNT ;T^ ;ADDN HIGHEST CONSTANT ADD %2,%0 ;REPRIME R0 WITH HIGH DIGIT ADC %4 ;PROPOGATE CARRY MOV %0,LONUM ;PUT R0 BACK IN LONUM MOV %0,(1)+ ;HOLD LONUM FOR PROGRAM DEC WORK BEQ EXGEN MOV %4,HINUM ;PUT R1 BACK IN HINUM MOV %4,(1)+ ;HOLD HINUM FOR PROGRAM DEC WORK BNE RANDOM EXGEN: RTS %5 ;RETURN T PROGRAM LONUM: 0 HINUM: 0 ; ; .EVEN ; ;RF11 DATA PATTERNS ; PAT0: 0 PAT1: 177777 PAT2: 134510 PAT3: 043267 PAT4: 100000 PAT5: 107070 PAT6: 070707 PAT7: 052525 PAT10: 1252_/~ *w æÚÉæØÉ×þÿl~+& „w6 7!„ür‚Ÿô‹R) ô¥R)mô‹Ã)iöÿÿÄ ®'„ — ]ô•R)ß�þÿ���4*W  Á• !S†¦÷ *ú‚r�ŸÊ <Á Ù~�+Á Ä fb'÷ 6ú®'1®'b'„ ô•R)4ŠÃ)2 ²7­4*”û†7�4*ŒûÖ ß�þÿ·É·Éw 8ö ¶Æe‡öþÿ¶Æeæ÷ LwvŠ Æ~,Ž Ž Ž Ž Ž Ž Ž 6 ¶Õæ&&f¦÷ :€ƒ•„À Àç妶`a,4dÿÿ=,Zdÿÿ,€dï,¦dÿÿË,Ìd£,òdÿÿ,eÿÿX,>e0,deÿÿ ,Šeä,°eÿÿcNc¨cdaWO SECONDS NOT UP GO WAIT BR PWRFL ;GO CHECK DISK ; ; ; ; ; ;ROUTINE TO WRITE THE COMPLETE DISK ;WITH 125252 PATTERN ;WRITE CHECK AND REPORT ERRORS IF THEY ;OCCUR ;REPORT "OK" AT COMPLETION POWFAL: BIS #BIT8,@DCS ;CLEAR THE DISK MOV (6),PASSC MOV #1000,%6 MOV #20,PATNU ;SET UP PATTERN CLR DMA CLR TRACK MOV #2000,SWRDCT ;SETUP WORD COUNT MOV SWRDCT,WRDCT JSR %5,PASEL ;GENERATE DATA BUFFER MOV #OUTBUF,BUF ;SET UP CURRENT ADDRESS MOV #POWFAL,HRDER WRDNW: WRITE +100 BIT #b52 PAT11: 177737 PAT12: 004102 PAT13: 136363 PAT14: 063636 PAT15: 000001 PAT16: 100005 PAT17: 000520 PAT20: 030303 ;PAT21 RANDOM DATA ; ; ; ;DATA COMPARISON ROUTINE ;IF AN ERROR OCCURS BETWEEN THE OUT-BUFFER AND ;THE IN-BUFFER AN ERROR WILL BE REPORTED IN THE ;FOLLOWING MANNER ;DATA ERROR XX DAE XXXXXX DAR XXXXXX GOOD DATA XXXXXX BAD DATA ; ; COMPARE:CLR WORK2 ;WORD COUNT MOV #OUTBUF,SAVE ;SET UP OUTBUFFER POINTER MOV #INBUF,SAV1 ;SET UP IN BUFFER POINTER WRDCMP: CMP @SAVE,@SAV1c¶æ—þÿŸ÷ ðúi7 êú7 öúŸ•þÿ÷åèúÿzÈâúæ¦f�vš~€,ÂÀú ¦®'÷ ù‚² 6 €6²„×þÿŸ7 �úò�’ú7 ŒúÆ’úò†ú 7 €úÊÁ ô•R)!!‡ô•R)ß�þÿæþÇ&&÷ œ?€M~ø,·ðÇ�ô•R)�œÁ Á Ä J`'1®'b'1®'`'ß�þÿ·ÀÇHŸ•þÿŽŽŽ‡æþÿ& ÷ þþw6—þÿŸÀøù#&÷ Tø€1ŠR)7 âù7 Úù7 Üù7 ~p-æù7 Öù0 ÆÖùW  ‡ñ‹Ã) ±ŠR)·�lÒf÷ î;wàñŠR)ûw |€P7 üùM‚æ—þÿŸœR)Á yÈ-H.H.H.H.H.Ü-H.ö-ð-H.H.H.ö-Ÿ“þÿ&÷ ¨Ÿx~è-Ö . 7\ù) ‡ð‹Ã)ð•ýÿR)ð•R)Ÿ“þÿ&&÷ z?€Ÿð•R)ÂdBd€d¾düd:exe¡$Êeÿÿÿÿÿÿÿÿÿÿ r,œÁÐÉÁeÿŠ� ÁE€� w"OÀJÿ€ ÀE€€ `w¾,ÂOÀ ŠÁ‹@Ð7bK÷`K÷ xK÷ XK€‡³ âe“fÿÿg,fT€ Ÿ0ŠR)Ÿ•þÿv·BÅ·<Åw b‡… … … ñÅ ð•þÿR)ìw 6~È/XæÅ×þÿ& „K7!Î÷H‚Ÿô¥R)Eô•R)!‡ß�þÿæîÄæ�&&÷ h÷ –¾„Tþ€Äå:̃Cì´eô�4�\,0gôTo ô• Ãe0ôÃe ôô˜�…÷,VgÅ tp(04Š3Äe&Ê‹€÷ êÛ÷ ôÛô ,|g�ñ• R)Ÿ•þÿ‡ö ¶ �1ŠR)Ö ó,¢gÁe8f÷ v �D„ À wFB´eæŸ2¬ÉeK,Ègþÿ+ð‹Ée €ò ôÿ ÷Zú÷U€Xú÷ Vú²ŠÿÿÃm,îg„…÷ ~„ôÿBÁ Ä wºþÊ•Ÿ“þÿ&!,h÷ ”½„wÿB®Ÿ�þÿ…… wbÿ—¢ÂeG,:hõŸ—¢îʲ²w(ÿð‹Y'‘€Ÿ“þÿ,`hÄ  ‹ô‹Y'€Å A´e E… E’W¡®,†hÁeõÄ é… CÝ•*EÅ f®'÷ š…¨,¬hEÀÿÅ êÅp¡iR,@CMA ;MOV SR INTO CURRENT ADDR REG BR SELCMA ; ;DISK ADDRESS REGISTER SELDAR: MOV @SR,@DAR ;MOV SR INTO DISK ADDR REG BR SELDAR ; ;DISK ADDRESS EXT AND ERROR REGISTER SELDAE: MOV @SR,@DAE ;MOV SR INTO DISK ADDR EXT REG BR SELDAE ; ;DATA BUFFER REGISTER SELDBR: MOV @SR,@DBR ; MOV SR INTO DATA BUFFER BR SELDBR ; ; ;LOOK AHEAD REGISTER MOVLK: MOV @ADS,%0 ;MOVE LOOK AHEAD RESET RESET BR MOVLK ;INTO REGISTER 0 ; ; ;DISK CONTROL STATUS REGISTER SELDCS: MOV #340,@CSR ;LOCK UP jMOV FLAG,WORK3 BIC #177743,WORK3 SWAB WORK3 BIS WORK3,WORK1 JSR %5,CONV ;CONVERT WORD ADDR TO ASCII WORK MES1 6 JSR %5,CONV ;CONVERT TRACK ADDR TO ASCII WORK1 MES1A 2 MOV @SAVE,WORK ;FETCH GOOD DATA JSR %5,CONV ;CONVERT GOOD DATA TO ASCII WORK MES5 6 MOV @SAV1,WORK ;FETCH BAD DATA JSR %5,CONV ;CONVERT TO ASCII WORK MES6 6 MOV FLAG,WORK ;WHICH READ THE BIC #177774,WORK ;ERROR OCCURRED ON JSR %5,CONV WORK MES13 1 EMT +0 ;PRINT MESSAGkè<‚ƒ•„·ÚÄ -Ä ®'¦÷ ˆõ…Í A�Á Á fb'÷ tõž±b'„ ~@0´ŠR)ß�þÿ¶·šÄw Àö އöþÿæ÷ âûw Ž Ž Ž 6 ä˜÷ ÆöÄÊöÄ Ä Â`'„`ßÂ`Ê !û—!÷ÿÿ¨ö˜äþe~¸0…Õ ¦÷ êô�J�¡ ¡ Bò•R)wœtö˜ÉCÃeÄ€ÿÔÔÔÔÔÔÔÔÄ ÿÔÔÔÔÔÔÔÔ·:öñ B@Cf Î ßU�~010þÿ† æÀfŸñµ@N81 8÷øõ·ìõò•R) ·®'âõwœÚõwœØõñ ABCDß50þÿ fffEÎe€† F…Eu~¨1ñµ@w8¢õw$,ÃÅU€C @ D5 „ „ ÄEÿÏŸßE0þÿQþÿl×eæŸÊ‹w¸þE’ÉW¡ÆEX,Òhõ‹Ã)ô÷ ØŸ“þÿf÷  ÅÖ ó >æ$Î ÄD,øhó ³ã$Ó ÃåÖ Ÿõ•R)ñ µŠ¶,iR)Ÿ“þÿ³Äÿ3�Ãÿó•óÿó•ËÿóXnÌÿÄÄeðÿ?,Di3Ôÿ3Øÿóe Øÿó”‹ÖÿÃeÈÿæ÷ úÙó  w`,jiþ ŠÃeøÿÄÁ w¦ýA÷ ^w(�Žæ—þÿZ,�i÷ LŸ1ŠR)Á 1 ®'ð‹Y'V€7ÀÿŠø÷ˆø÷ ºø-,¶i ðŠÉe÷ zøG�Ÿ“þÿÀÁð‹Ée�B´eð‹Y'/,Üi €ƒƒ à ÃE€ÿÂeõ‚øÿÊ‹€ Ñ  ¬,j äw~ýŸƒÙÃE€ÿÕŸƒ’Òƒ÷ <÷š,(j ø÷€ ø÷ ø÷ ø �÷‹ü÷€Ÿ“þÿð‹Y'Ò�Øw_,Nj„üÁ B´e÷ 8mINTERRUPTS MOV #177777,@WC ;SET WORD COUNT -1 WORD MOV #OUTBUF,@CMA ;SET UP CURRENT ADDRESS MOV @SR,@DCS ;MOV SR INTO CONTROL REG BIT #BIT0,@DCS ;IS FUNCTION BITS SET BEQ SELDCS ;FUNCTION BITS NOT SET DKBUSY: TSTB @DCS ;TEST FOR DISK NOT READY BPL DKBUSY ;DISK STILL READY BR SELDCS ;DISK NOT BUSY SELECT NEW CR ; ; ; ; ; ; ; ; ;THIS ROUTINE ENABLES THE OPERATOR TO SELECT A TRACK STATICLY ;THE ROUTINE DOES A ONE WORD READ TO SELECT THE TRACK ;THE OPERATOR MAY CHANGE THE SWITCnE HED1 MES13 MES1A MES1 MES5 MES6 -1 BIT #BIT10,@SR ;HALT ON ERROR BEQ .+4 HALT ;YES HALT BIT 10 SET IN SR BR WRDINC ;GO COMPARE NEXT WORD ; ; ; ; ; ; ;ROUTINE TO ZERO DATA INPUT BUFFER ;ZERO BUFFER BEFORE READING ; ZOBUF: MOV #OUTBUF,R4 ; ZERO OUTPUT BUFFER BR ZBUFE ; ZBUF: MOV #INBUF,%4 ;FETCH START OF INBUFFER ZBUFE: MOV #4000,R0 1$: CLR (R4)+ SOB R0,1$ RTS %5 ;EXIT ROUTINE ; ; ; ; ;ROUTINE TO TEoµpÿtÿrÿvÿ22,20@2à:~ 20B2X90D2;ÿ™ š › œ w ª ænÂælÂ÷ Ô ÷ Š÷ ‚ñ‹G2&Ÿ•W~˜2þÿ¬·F·@Âw f އ,ˆ ò¬î·"·Âw B öþÿ& ÷ pùwšý±ŠG25T2õüÁX2ñ‹F2Ѐñ•F2Ÿ•þÿ÷ xÊw  æÜÁæÌ~3ÚÁ÷ BÍÄ÷ ö÷ îñ‹H2¶±ŠH25V2õ´ÁZ2ñ‹F2¬€1ŠF2Üw ØðÁþÿÁEðÿEÅ æ€ñ‹O2D2ô• Ÿ•þÿñ•I2DœN2Ä |„31ŠO2wJ 3Ô4æ~ˆ35&545N5`5n5|5�5˜5ª5¸5Ê5±ŠJ2W¬J2H†@T2wX24ÁD\2w`2,Á´ p�„ôÿ‚øÿ—¢ôÊÕ&8,tj÷ 4»„Ÿ“þÿÁ wœüò%äÿ¦Îeäÿ÷ l°Ö …,šjò‹ÿÿ³¦ôÿ÷ »·Š÷÷Uˆ÷÷ º÷2Šÿÿ2 ôÿwû,Àjúþæ—þÿÁz¼÷ 4 ð‹Ée3ƒ’à 0À ´e²,æj€ Ÿ÷ ¨÷ ‚fƒøÿ×¢Ã׬R)÷ Ž, kˆ÷ bð�CƒàÅeÀÿõ�‚øÿ� w¨ý6,2k÷ `ÞÁ¼÷  ´ ñ•R)w:ü÷ ö»5×-ì»›,Xk1æþÿ怟×Ú»÷ ÐÀÁöÿñ•R)Šþÿ!,~kæ|0& & ÷ Vð‹Y'�÷ LŸÊ•ñ•R)Á À ,¤kÀ `'p®'b'p®'`'Ö ·•@”‡…CÀÿ,ÊkÃÀð‹Y'€ Á B´e �� Á ÁEÙ,ðk€ÿÂeõ€ éÎ AqH REGISTER AT ANY TIME ;SR6-0 EQUALS THE TRACK NUMBER ;SR9-7 EQUALS THE DISK NUMBER ; STAMP: BIS #BIT8,@DCS MOV @SR,WORK1 ;FETCH SR MOV WORK1,WORK BIC #176000,WORK ;MASK THE TRACK AND DISK NO. ROR WORK ROR WORK ROR WORK ROR WORK ROR WORK MOV WORK,@DAE ;DISK EXT. ADDR. REG. LOADED MOV @SR,WORK SWAB WORK ROL WORK ROL WORK ROL WORK BIC #3777,WORK MOV WORK,@DAR ;DISK ADDRESS REG LOADED MOV #INBUF,@CMA ;LOAD CURRENT ADDRESS MOV #177777,@WC ;LOAD WORD COUNT BIS #5,@DCS rST FOR ADDITIONAL DATA TRANSFERS ;ANY DATA TRANSFERRED AFTER WORD COUNT OVERFLOW IS AN ERROR ; ; OVRFLO: MOV WRDCT,%4 ;ADD WORD COUNT ROL %4 ADD #INBUF,%4 CHWRD: CMP R4,#INBUF+10000 ; IS TEST COMPLETE BNE CKNEX ;CHECK NEXT WORD RTS %5 ;TEST IS COMPLETE CKNEX: TST (4)+ ;TEST FOR ZERO WORD BEQ CHWRD ;WORD IS ZERO BIS #BIT9,FLAG ;SET ERROR BIT MOV %4,ACNVX SUB #2,ACNVX JSR %5,CONV ;CONVERT 1 OCTAL TO ASCII ACNVX ;ADDRESS MES4 6 MOV %4,ACNVX SUB #2,ACNVX MOV @ACs -†m=�î1­ ý• î1ñ• N2wÔf2÷ çÖ =Šè1=Šê1‰~4œÄñ‹F2 ÷ &¬‚‡÷ æw ú && ÷ w Þ @T2wX2ªÀ ôŠÃ)&÷ ¬9 Â÷ 1ŠF2÷ ®`2 Äe`2Äå Á~x4`2Ÿþÿ±ŠF2&÷ ñ€õXÀX25T21ŠG2Äe`2Ÿ•þÿ&÷ úð€õ2ÀZ25V2÷ ºwð1ŠH2ñŠF2Ÿ•þÿ÷±ŠJ2f2÷ $æÖ @V2wZ2þ¿B^2O~ð4wb2ö¿¦ÎEàÊ5 Ž,†Ö ÛNþ1÷ ðåÖ wÔþñ•N21ŠJ2Ùý• î1ñ•N2Çñ‹Q2ý• î1ñ•N2½1ŠQ2ý•Uî1ñ•N2±ŠJ2±ý•^î1ñ•~h5N2ö}œL2î1ñ•N2ﱊJ2ý• î1ñ• N2å1ŠN2wþý• î11ŠtÄ æÍ•AW,lw¾Ÿ�ÁE€ÿAñ‹Ã)�Aœ•*ÁEÿ ,¼j~°876¼5\2õ.¼`24 �¡ ñ• N2=‘î1f2æýÕ@ê1÷ áÖ J@V2wZ2ò»7ê»õ^2õâ»b23 1ŠM21ŠK2ñ•N2DŸì1ÄAË5©~(9@Ä =‘è1fþ1æÒñ•R2ñ• N2ý•î1f2æðÄÃ�æø|Ée¡æþÿÁeÀ,Zo8f÷ Ä�@œÃÿÀ  BÜÂÿl´e „—¢Kè,€oô¥R)Gñ Ðÿ:ff÷ b¶ƒ×tüÿÅñ œ,¦oñ`$Ñ Gƒ�À Ä Ÿô®'„ Ê‹� &b'÷ àµt,ÌoÞðb'±€ € 1�2 ô•R)Ê•w–÷¶,òo `'ðb'ð`'ñÅf5f÷ äÍô•R)€ Z,pD�Ÿwvù± æþÿB�÷ ¨Å,fuf,>pf÷ ®ÍŸñ‹Ã)ñ•R)wBùñ•ýÿR)w&÷ Å,dpÅÜ•*œ×eÊCa‡�öÿfÑQr úÿ�üÿ²,Špröÿ�°ŠÉe‡�øÿC DEr úÿ�üÿrøÿ…,°pðŠÉe‡É•…ÊÅÊÕEõ•R)Å f®'÷ nï,Öpƒ5 ®'… ‡Á f®'÷ Z„�À  Ý}5 MES10 MES10A -1 RTS %5 ;EXIT ROUTINE ; ; ;ROUTINE TO DECODE EMT CALLS ;EMT+1=TYPE ONE LINE OF TEXT ;EMT+0=TYPE A SERIES OF LINES EMTRP: MOV (6),%0 CMP #EMT+1,-(0) ;WAS THE CALL EMT+1 BNE TYPS ;NO! TYPE A SERIES OF LINES OF TEXT BR TYP ;YES TYPE ONE LINE OF TEXT ;SUBROUTINE TO OUTPUT ASCII MESSAGE ON TELETYPE PRINTER. TYP: MOV @%6,%0 ;GET ADDRESS THAT CONTAINS MESSAGE ADDRESS ADD #2,@%6 ;SET UP EXIT. MOV @%0,%0 ;ADDRESS OF MESSAGE TO R0. TYPA: MOVB (0)+,TYPDAT ;GET CHAR~ET UP PRIORITY LEVEL MOV #NEWBUF,HRDER ;SET UP FOR HARD ERROR CLR DMA CLR TRACK NEWBUF: MOV WRDCT,WORK ;SET UP FOR RANDOM BUFFER MOV #OUTBUF,%1 JSR %5,RANDOM ;NEW DATA BUFFER GENERATED MOV #OUTBUF,BUF WRITE+100 ;WRITE BUFFER BIT #BIT9,@SR BNE .+6 IOT BR .+12 MOV PRIORITY,@CSR WAIT WRCHECK+100 ;WRITE CHECK DATA BIT #BIT9,@SR BNE .+6 IOT BR .+12 MOV PRIORITY,@CSR WAIT JSR %7,DISBUF ;SET UP NEW DISK BUFFER BR NEWBUF ;GO WRITE NEW BUFFER BR NEWBUF-10 ;DISK COM³ŠO2ÅÅ AŸî17ŠÖøóŠI2w0ó‹F2@T2wX2d»@V2wZ2X»ð÷Tø÷(~ 9Rø7 PøœÄ ô5@È;w< ò5€È;|ò5È;xô5 È;„èôU È;=Šê1=Šè1�œÈ;p�wø÷ ÖB—tÂeb2Å Å Å @Àe`2Åeb2Ä÷ <~:ø:JÒ  Ä ÷Ÿ•þÿ÷ Þñ‹F23ñœF2F2ñœG2G2ñœH2H2 EÅ µT2T2µV2V2µX2X2µZ2Z2µ`2`2µb2b2µ\2\2µ^2^2Ÿ•þÿæ÷ îýƒ$~�:ó•ÿÿF23ŠG23ŠH2 Ÿ•þÿõ}�î1f2æ÷ :ßÖ 3ŠO2‡ó‹P2ñ³ŠP2÷ ì×-÷æð1÷ ‡Á�\÷EÅ =Šè1±ŠQ27ŠL÷@V2wZ2ì¹ðý•^µ~;î1ñ•N2‡¦öþÿŸ‡f&Á�÷Á � ±ŠR2„�‡æ w è€Âÿl´e,üp� € ‡à ´e …… r Ê Âeõ,"q ‡¦÷ Ê´÷  ´¶÷²ƒ®ƒ÷倨ƒ‡¦;HqòK"LqÀüÁþH ÀåÁåø‡3,hq�‚„‡ˆ �‹À�Ž                 !"£$¥,Žq¦'(©ª+¬-.¯0±²3´56·¸9:»<½¾?ÀABÃDÅÆGHÉÊKñ,´qÌMNÏPÑÒSÔUVרYZÛ\ÝÞ_'ABÃDÅÆGHÉÊKÌMNÏPÑÚqÒSÔUVרYZ     z,èq 12345678 &=':>@9 0/STUVŠ,rWXY _,(%\"Z -JKLMNOPQ $ž,4r*];^R ! š,Zr +ABCDEFGH .)[<#I •,€r ? �ACTER CMPB #100,TYPDAT ;CHECK FOR "@" CHARACTER BNE TYPC ;CRANCH IF NOT "@". RTI ;TERMINATOR CHAR. DONE. EXIT. TYPC: CMPB #45,TYPDAT ;CHECK FOR "%". BEQ TYPF ;BRANCH IF "%". CMPB #42,TYPDAT ;NOT "%". CHECK FOR "#". BEQ TYPG ;BRANCH IF "#" JSR %7,TYPD ;TYPE CHAR IN TYPDAT BR TYPA TYPD: BIT #BIT14,@SR BNE TYEXIT MOVB TYPDAT,@TPB ;OUTPUT CHARACTER TO PRINTER TSTB @TPS ;WAIT FOR DONE FLAG. BPL .-4 TYEXIT: RTS %7 ;EXIT TYPF: MOVB #15,TYPDAT ;MOVE CARRIAGE RETURN CODE TO TYPD‚PLETE START AGAIN ; ;BACKGROUND TEST FOR INTERRUPTS ; XWAIT: MOV #RTIX,14 ;SET UP TRACE TRAP CLR 16 MOV #-1000,PASS ;SET UP TIME BASE BIS #BIT4,@CSR ;SET TRACE BIT CLR #0 XINCW: INC XINCW-2 TSTB XINCW-2 BPL XINCW INC PASS BEQ XINERR JSR PC,BCKGRD BR XINCW-4 ;REPORT BACKGROUND TEST TIMED OUT XINERR: MOV #340,@CSR BIC #BIT4,@CSR ;CLEAR TRACE BIT EMT+1 TIMO HALT ; RTIX: RTI ; RDCS: .WORD 0 ; STATUS RWC: .WORD 0 ƒ�¶ À  & D” Ä¥+ Ä¥-Ä¥ À óŽ À D”Äå0�¡ ‚Wq7~€; ‡a ‡À òÖ  ¶vw v‡â ‚ ów tèœæ& & & ÷ LïÖ wé ÀÂÃÀÀ*~ø;ÁÁÁÁÁÁÁö �¶Ö y€À &®' ÷ fé€ðµÝ~p<¶Ö ‡Ö úæþÿßU0þÿ· ¾êŸÃ ÿÁ€ÿæfæfæfæfæfæfæfæfF Ÿ�"þÿÃeÁ€ÿÑÑÑÑÑÑÑÑÁ ÿÑÑÑÑR~è<ÑÑÑÑŸñ¥R)ñ‹R)ÁEàæ¡ f¡ f„ >,¦r û"Ìr ,èrfæü�—-ªU÷µ@N´æF´÷ ¦²�±8ª s·D´ö,´·Ì��‡6 ù ¨ÀÄÈ ß(s ßà7 ˜‡¯,(sö5À÷ $´¦F €    &† Àîÿ�,NsÎUðÎEæþ³æ0{^Àˆs”vÿß‹tÿ$(tsý€ùß‹tÿý€€Ÿxÿþ BPT ERROR šÄ÷‹ g·Šg÷ @\·Šg‡Y,t%÷ä‹¢ÿ÷î‹Ü‹æ·”ÿ÷•ÿÿÁ 7Š» w÷2,8tÄ‹‚ÿ·|ÿw 7¶Æ®sÄø~Ãw è÷•Š Q,^t 7šw (w zÄ�PÿŒŒŒ7‘„‹…AT JSR %7,TYPD ;GO TYPE CHAR. TYPG: MOVB #12,TYPDAT ;MOVE LF CODE TO TYPDAT. JSR %7,TYPD ;GO TYPE CHAR. BR TYPA TYPDAT: 0 ;SUBROUTINE TO OUTPUT A SERIES OF ASCII MESSAGES ON TELETYPE PRINTER TYPS: MOV @%6,%0 ;GET ADDRESS THAT CONTAINS MESSAGE ADDRESS ADD #2,@%6 ;UPDATE TO NEXT MESSAGE ADDRESS MOV @%0,TYPSB ;ADDRESS OF MESSAGE TO TYPSB CMP #-1,TYPSB ;CHECK FOR TERMINATOR BNE TYPSA ;BRANCH IF NOT TERMINATOR. RTI ;TERMINATOR. EXIT TYPSA: EMT +1 ;CALL ON TYP SUB TO TYPE MESSAGE T† ; WORD COUNT RCMA: .WORD 0 ; CURRENT MEMORY ADDRESS RDAR: .WORD 0 ; DISK ADDRESS RDAE: .WORD 0 ; DISK ADDRESS EXTENSION MTS = 172520 MTC = MTS + 2 MTBRC = MTS + 4 MTCMA = MTS + 6 ; BCKGRD: MOV R1,SAVR1 ; SAVE R1 TSTB @RDCS BEQ DATUM MOV #400,@RDCS ; CLEAR MOV #-17600,@RWC ; SET WORD COUNT MOV #RFBUF,@RCMA ; SET ADDRESS I‡† æÀŽ�$�*f7ê7œê Á æ÷ êÆe† À�ÿÁ°ÿ ¡ ¡ ¡�~`= ¡ ¡ ¡ ¡ ¡¶Ž€Â`Ü>–=–=) ERROR XXXXX XXXXXX XXXXXX XXXXXX XXXXXX  =¬=³=º=Á=ÿÿ·~Ø=øÿŽw @æ·æ·¦Åâÿ w *æî¶æì¶…æþÿf÷ êç„ŸÍ æhÿ÷ ´ç7^ÿ —-ªUÃéõ³ŠÃ)· ’ÿ Ÿ•þÿ·¢¶·œ¶w ±~P>ÂŽ‡� ô7 rÿÅÿBf÷ Bç…wÿ ÷€= ÿ¡7 ÿ¡7 þþŸ“þÿÕ ÄÄ=f&÷ ¤C÷ VÌ ú÷• øþÅåŸÍAñŠÃ)Ÿþÿf÷ 6/ò~È>Ÿ•þÿæ„=÷  ó÷ øþ¶‡· ðþæþÿŸ»÷ÿÿäþŸ•þÿ‡Àˆ7Šo ÷•ÿÿk ñ,„t÷à„‹÷0{|‹×!”t÷Jwì÷‹F TÆÿ9,ªt& ÷ ÿæ|‹æv‹÷•@°Šà D÷‹) A �,Ðt„ &DCƒcà ÷ w \w ø„·Š w   ¢,öt'  7Šõ ÄÞ „ ‚ ¦&w à„‚À•\,uw àwXw äw �Ä øfw ¦÷•ž €,Buw ®7Š­ wtwhw ¶Ä+  Ä%;û‚ÀEøÿ,huÄ Äe®s‚ whÄå$÷À` Áô~÷  À=w Þ,Žup·Šc À�\ w dÀ�U w \À�N w TÀ w L ,´uw T  7�2 w F7�+ w >7Š% 7� Àä~6,ÚuÁô~÷ tÄþÂwð7Š   wèw (‚bÄ,v‚ ‚ ·Øwúw ‚øw �A�Á � ‰YPSB: 0 ;ADDRESS OF MESSAGE GOES HERE BR TYPS ;GO PROCESS NEXT MESSAGE ; ; ;OCTAL TO ASCII CONVERT ROUTINE ; ;ENTER ROUTINE AS FOLLOWS ;JSR%5,CONV ;ADDR#=ADDRESS OF NUMBER TO BE CONVERTED ;ADDR BYTE=LSB OF WHERE ASCII IS GOING ;ASCII#=THE NUMBER OF ASCII CHAR. TO BE CONVERTED ; ; CONV: MOV @(5)+,ACNVX ;VALUE OF # TO BE CONVERTED MOV (5)+,%1 ;ASCII ADDR MOV (5)+,%2 ;# OF ASCII CHAR ADD %2,%1 ACVN: MOV ACNVX,%3 BIC #177770,%3 ;ISOLATE LEAST SIGNIFICANT OCTAL# ADD #60,%3 ;SET UŠNC DFADD ; SET DISK ADDRESS MOV DFADD,R1 MOV R1,@RDAR ; SET DISK ADDRESS MOV #5,@RDCS ; READ COMMAND MOV SAVR1,R1 DATUM: CLR MTC BIT #1,@#MTS ; TAPE UNIT READY 1$: BNE 2$ RTS PC 2$: BIT #2000,@#MTS BEQ 3$ MOV #240,1$ RTS PC 3$: MOV #1000,@#MTC ; CLEAR MOV @#OUTBUF,@#MTCMA ; SET B‹‚ â�ÊÅøÊÕ0ƒ ÃE€ƒ ƒ À ô‡Ö €�‚ƒ„…&æ¦f&M'èd w äÿ„£~@?…À0?Ä �Õ•+Á•  â€d Á0B`•�È ôÄe0 ‘¶ w –ÿ–%‡Õ•- äÒ‹å÷ °ç0&¦Ÿæ¨ç÷ æ€ÂÀô°°° ðUC~¸?€ðU€ðU€ ·À¿·º¿·´¿Âàô°,°.°0·Ä¿·¾¿·¸¿˜‚€‡¦&æê´ŸæBç÷ ¢å€÷t¿ð÷δˆ¿ðÈ´*˜Àå@6·š~0@¸´€‡8@:@ÿÿÿf@J~¨@Œ� B`ï¡,&v÷ œ÷%®Âª…Ö w|÷‹±û 7Š¡Z,Lvwr÷•ÿÿ—wh·Š” ÄEøÿÄ 7Ìs–whŠ,rv÷‹} ÄEøÿÄ Ã tÌsPà õôÿÿÌs',˜vIw HÛ×-:ÉÂ% w ¼ ÿÿÀ=w ¶,¾v@ÀÁ78Ä íÌsÀ=w "À&Àeº,äv0w À,w Â%Àê@w ¨k÷‹ëû, wĺüÂeÀ=÷Àw Þ@w ‚wœüw’²,0w·ŠÒw¢À=w À w & ÿÿÀŽw T‚,VwAÀe0w  À,w ˜ær÷lÀpw 0·Z,|w`-À ÷X\7ìÌsV€ â÷D÷‹U ÀF,¢w$üÄüÃüw ÷&ðÀ?w >7 �P ASCII# MOVB %3,-(1) ;STORE ASCII CHAR BIC #7,ACNVX ROR ACNVX ;ROTATE OCTAL# ROR ACNVX ROR ACNVX DEC %2 ;-1 FROM ASCII CHAR COUNT BNE ACVN RTS %5 ;EXIT # CONVERTED ACNVX: 0 ;WORK REGISTER ; ;ROUTINE TO HANDLE KEYBOARD CONVERSATION ;ROUTINE ACCEPTS NUM. OR ALPHA CHARACTERS ; NOCHA: MOV #40,TSTCH ;SET UP FOR NUM. CHAR. BR TYST ALPHA: MOV #100,TSTCH ;SET UP FOR ALPHA CHAR TYST: MOV #340,@CSR ;LOCK UP INTERRUPTS CLR TEXBUF ;CLEAR TEXT BUFFER REG TSTFLG: TSTB @TKS ;CHECK FŽUFFER ADDRESS MOV #-10000,@#MTBRC ; SET BYTE COUNT MOV #5,@#MTC ; GIVE WRITE COMMAND RTS PC DFADD: .WORD 0 ; DISK ADDRESS SAVR1: .WORD 0 .PAGE ;RF11 POWER FAIL TEST "1 ; DISK ZERO ; WRITE COMPLETE DISK WITH 125252 PATTERN ; REPORT "OK" ;START WRITING THE SAME PATTERN ;WHEN POWER FAIL OCCURS ABORT TRANSFER ;SETUP NEW ENTRY POINT AND HALT ; ;POWER UP AND WRITE CHECK THE DISK FOR ERRORS ; ;***ONLY ONE ERROR IS CONSI�@�*€j�k�o�A~ A ~˜A¨~B/~ˆB�w :,Èw7Š%7Š 7Š0    w *À%0 ‚À%7‡s,îwÀEøÿÄ Ä Ä `‚ ð 1 � W Ö†ø÷‹òÂ,x ÷‹ÖÄmâ7ŠàÁ y,xdxrx|xÐxRuzzàx:xúuÜx6yZvªyöyòyHyèz vONxv>vrvw0w”w²w8w|uÂtÍ,bx tƒ·Š‡7Š‚´÷fD ÷\ 7,ˆxX7R÷%JÄF„ î‡À>ÀŸ8w þ÷%Ì,®x,‹À•=w DÀŸ w <À• w 4wúþ÷ ò¼,ÔxwêþwÞþ·Š ÷ úù÷ Ü÷‹ý÷îê7Šñm,úx÷màà÷ÜÜw ÖæÐ÷ÊÀÈw Ø·¾», yÖ%À/w Ò¯À\ú÷ ¤Ô÷ †÷íššÓ,FyÜÀ<Ä Ã … L‡Å ÄeÜs  ‘OR FLAG BPL TSTFLG ; MOV @TKB,@TPB ;CHARACTER IN BUFFER TSTB @TPS ;ECHO CHARACTER BPL .-4 CMP #377,@TKB ;CHECK FOR RUB-OUT BNE CKCH ;EXIT IF NOT RUB-OUT EMT +1 MES8 ;REPORT RUB-OUT ACKNOWLEDGED BIC #7,TEXBUF ROR TEXBUF ROR TEXBUF ROR TEXBUF BR TSTFLG ;GO WAIT FOR NEW CHAR. CKCH: CMP #215,@TKB ;CHECK FOR CARRIAGE RETURN BNE .+4 RTS %7 ;EXIT DELIMITER TYPED BIT TSTCH,@TKB BNE CHOK EMT +1 ;REPORT QUESTION MARK MES7 BR TSTFLG ;WAIT FOR CORRECT CHAR. CHOK: MOV’DERED ACCEPTABLE*** ; ; PFT1: MOV #1000,%6 ;SET UP STACK JSR %7,POWFAL ;WRITE 125252 ON DISK PFWAT: BIS #BIT8,@DCS ;CLEAR DISK CLR DMA CLR TRACK MOV #PFWAT,HRDER ;SET UP FOR HARD ERROR MOV #DOWN,24 ;SET UP POWER FAIL VEC. MOV #340,26 MYBYWR: WRITE +100 BIT #BIT9,@SR BNE .+6 IOT BR .+12 MOV PRIORITY,@CSR WAIT JSR %7,DISBUF ;SET UP NEW DISK BUFFER BR MYBYWR BR PFWAT ;ROUTINE TO CHECK DATA AFTER POWER FAIL ; UPCHK: BIS #BIT8,@DCS ;CLEAR THE DISK CLR DMA CLR TRACK M“·~CÞ@ÀêÂêÄêÆêÈê,CÖId‡øÄ7,€{t!ÜsÄ Ä úw ¼w JÄÃw ž@÷eª,¦{ø%Ä•tÜs7‘5ô îs¨ôîsw „Àñ,Ì{Bw .À�Àe`€ w À;w ÷ðÄ�ýg,ò{Üsw úwÄû·â·´÷ƺsf&æ¦fæÌ},|æ €Ö ·Â�‚ƒ„…ÆŠ÷æ°€Ä4ÜsC,>|tüøÜsÄ Ä ÷…÷�ƒœ÷�ƒ—7Šƒ7Šƒ÷‹Z,d|ƒý€…w r÷‹ƒý€÷5ö‚÷‹ð‚ý€÷�jè‚÷�È,Š|eæ‚…÷‹Y  <tÜs„ „ !ø…ÃÄ™ MOV #DCS,R2 ; FIRST REGISTER ADDRESS 2$: MOV R0,(R2)+ TST (R0)+ SOB R1,2$ RTS PC ; RETURN ; ;ERROR MESSAGE HEADERS ; HED1: .ASCII /%DATA ERR @/ ; HED2: .ASCII /%STATUS ERR @/ ; HED3: .ASCII /%EXTRA BKS @/ ; HED4: .ASCII /%DK ADDR ERR @/ ; HED5A: .ASCII /%@/ ; HED5: .ASCII / ERR CNT @/ ; HED6: .ASCII /%RANEX ERR @/ .PAGE ;MESSAGE TRAILERS ; MES1: .ASCII / DAR @/ ; MES1A: .ASCII / DAE @/ ;šS NOT UP GO WAIT JMP UPCHK ;GO CHECK DISK ; ; ; ; ; ; ;POWER FAIL TEST #2 ;DISK ZERO ;WRITE COMPLETE DISK WITH 125252 PATTERN ;REPORT "OK" ;WRITE CHECK DISK AND WAIT FOR POWER FAIL ;WHEN POWER COMES BACK WRITE CHECK DISK AGAIN ;AND CHECK FOR ERRORS ;***NO ERRORS SHOULD OCCUR.*** ; ;DO NOT CREATE ANOTHER POWER FAIL UNTIL ;THE ADDRESS REGISTER HAS COMPLETELY CYCLED ;THROUGH. ; PFT2: MOV #1000,%6 ;SET UP STACK JSR %7,POWFAL ;WRITE 125252 ON DISK PWRFL: CLR DMA CLR TRACK MOV #PW›âþôµÂôÅ€�Âùñ‹ �€œÀE€ÿæb¹Ÿ7 ¶ü[Ÿ•þÿñµ@ô‹!´€~ÀFt4Àe 4ô‹ò‹€ñµÀ1 ‡´åÀ ‡ +À5%÷ z2 ‚ƒƒlm €l ‚€m 44 Àeš~8GÉÀ‡À ‡À ‡À‡À‡À$&®'÷ lÞ€Àe&æf÷ €Þ„÷ Êôw fWtúÿÀ5?� @�‡w „ÜÅþÿæ ÅEðÿõ‹VCŸ•ô~°GþÿwÝõ•a@Å CTCóŠû Ÿ•þÿAV@DX@wZ@­w\@ ­ý5€"CwZôµ@sô‹€wW¬f & ÷ ¶çÖ Â@P@DR@Cœà à Ä` ~(H`… æþÿŸKÌ¡ ¡ ‰$È ‚ µ œÊ,°|þÿ÷%&Ãå„ À&Äe N @ Ä üÀe0/,Ö|w &à óÀ• Ö ÁÌsÀÿÿâ,ü| …÷‹p‚ý€7�l‚…÷‹`‚ý€À�\‚ÀE€ÿÀ¥÷‹ö,"}Ó  w Ðÿí÷‹ÁÀ¥ ç…Ä ã‡•w ¯,H}¶ÿú×­"‚• À•^w ¤ÿÀ•Uw œÿÆ®swVú…°,n} ÷ÿÿn÷ÿÿj  ‚7,ÌsX‚ÁRìÌsÁ-M,”}P‚Ð ðÀD…w@€ 78À ô÷%(q,º}!ùƒ… �„ ú ÷%‚??‘‡,à}à ÃÄ w Nÿ…÷%Ðõw ªþ…÷Úr,~7þ7Ðw ZÿÀ Àe0w àþÀ,w Øþæ²q,,~÷¬À°w pþ· ÷ÆœÀÂ…À¼÷¶‹� MES2: .ASCII / DCS @/ ; MES2A: .ASCII / HRD ERR@/ ; MES3: .ASCII / WRD CNT@/ ; MES4: .ASCII / WRD ADDR.@/ ; MES5: .ASCII / GD DATA @/ ; MES6: .ASCII / BD DATA @/ ; MES7: .ASCII /?@/ ; MES8: .ASCII '/@' ; MES10: .ASCII / WRD1 @/ ; MES10A: .ASCII / WRD2 @/ ; MES11: .ASCII /%UNIT NO.@/ ; MES12: .ASCII / @/ ; MES13: .ASCII / READ @/ ; TIMO: .ASCII /%CPU BKGRND TIMED OUT@/ ; OK: .ASCII /%OK!@/ ;CONVERSATION TEXT ; ; CON1: .ASCIžRFL,HRDER ;SET UP HARD ERROR MOV #PWRDN,24 ;SET UP POWER FAIL VEC. MOV #340,26 CHKDSK: WRCHECK +100 BIT #BIT9,@SR BNE .+6 IOT ;WAIT IN BACKGROUND BR .+12 MOV PRIORITY,@CSR WAIT JSR %7,DISBUF ;CHECK NEXT BUFFER BR CHKDSK BR PWRFL ; ;ROUTINE TO ABORT DISK DURING POWER FAIL ; PWRDN: BIS #BIT8,@DCS ;CLEAR THE DISK MOV #PWRUP,24 ;SET UP RESTART HALT ; PWRUP: MOV #PWRDN,24 ;RESET POWER FAIL VECTOR MOV #1000,%6 MOV #-300.,WORK ;SET UP TWENTY SECOND TIMER XTIMCNT: RESET Ÿ8@ùÂÿÿµ�`@B òŠÃ)Ÿ“þÿ¦÷ �%ŸþÿW¬ ffff ÷ Àó�… @À Ÿð T@€TCñl~ HRC õ‹a@ �ð T@€Ÿ•þÿwÜŸ•þÿ5ŠVC‡Ä wRýŸ•þÿwBýŸ•þÿôÅ@BœÂEÀÿƒ×p ÂBmd@Ê $÷ ŽýÀ b@… u¬`@wVýw†ûôµ~Iòw öæÆ«æÄ«ff ÷ ó·¶«·°«w ÖõàÀ?@€ ý52"Cý5*CðŠb@ ý"CB^@‚ ÂEüÿ ‚œCwüÀ ÷ œB:C2rœ~�I2r"C r*C ¦÷ Lôt"Ct*Cý"CôÅÀw:þ… ÷ Tõ‹a@øÅ w<þB@Å °ŠVCð•ÿÿa@AV@DX@wZ@òªw\@îªðŠc@ ýÏ~J"C¦æ@ù÷ ÜÏÖ §À °1‡ ,R~ŒÓÄýÿ C”Ã¥ Ã¥$ × A‡Ãå Ãåÿ,x~Ãå Ãå    ¦  ‚eÂ`„ ä�‡Åýÿ0,ž~ÂØ~ ‡€âƒ ûË× Ãe ÃeÃe;!Ä~ Ãe Ñ�Ò … è€Ð ‡@(D'à~ ROSODT  BEì, *;/\ $G._<^,OWEBP@>SRC-FI!XASPM..CFRB"<9,®sÿÿÿÿÿÿÿÿ³Ôsÿÿÿÿÿÿÿÿ²,@@€ þ“f€w,€€÷"÷ BÄÁÁEàÿ„ 7*7ZÀ¦€8&9ˆð w®Q,¸€¡I /%DATA TEST ONLY? @/ ; CON2: .ASCII /%MULTI DK MODE?@/ ; CON3: .ASCII /%# OF DKS 1 TO 10 OCTAL?@/ ; CON4: .ASCII /%EX. DK?@/ ; CON5: .ASCII /%OPT WRD CNT? @/ ; CON6: .ASCII /%LENGTH (1 TO 1000)?@/ ; CON7: .ASCII /%WRD ADDR?@/ ; CON8: .ASCII /%OPT. DATA PAT. #?@/ ; CON9: .ASCII /%WRITE?@/ ; CON10: .ASCII /%WRITE CHECK?@/ ; CON11: .ASCII /%READ?@/ ; END: .ASCII /%END@/ .EVEN ; .WORD 25252 OUTBUF: .BLKW 4000 ; INBUF: .BLKW 4000 .WORD 25252 ¢ INC WORK ;+1 TIMER BNE XTIMCNT ;TWO SECONDS NOT UP GO WAIT BR PWRFL ;GO CHECK DISK ; ; ; ; ; ;ROUTINE TO WRITE THE COMPLETE DISK ;WITH 125252 PATTERN ;WRITE CHECK AND REPORT ERRORS IF THEY ;OCCUR ;REPORT "OK" AT COMPLETION POWFAL: BIS #BIT8,@DCS ;CLEAR THE DISK MOV (6),PASSC MOV #1000,%6 MOV #20,PATNU ;SET UP PATTERN CLR DMA CLR TRACK MOV #2000,SWRDCT ;SETUP WORD COUNT MOV SWRDCT,WRDCT JSR %5,PASEL ;GENERATE DATA BUFFER MOV #OUTBUF,BUF ;SET UP CURRENT ADDRESS MOV £‰ÿÿEMçw Îôæ’ªæ�ªæþÿ�ÀÉŸÉ KŸ“þÿ€ Dœ7!HñF‚Ä ¡~€JÈ;B�ÅÅEðW¡<Åq‘€ Bœ5— 2€ ñ¥-‡€ Dw0ª€ — A!1 Ÿf÷ $Û„æLÿ÷ ôÚ7Bÿ —-ªUÃRÜñ “~øJ³ŠÃ)· (ÿG‰ ·“ô´÷ LE7Šÿ·“æ´æÿ÷ ŒÚ�DwÀ©wüþ÷¶©øþ €Â ÷ôþ÷òþCœÃÂP·ÔþCœÂÜ>J·Òþ7Ðþ7 Ìþ7Êþ÷•]~pKC¶þ7 ºþ÷• ³þ÷¨þ^³÷‹¨þŸ•þÿwBÙW¬ Ÿ•þÿ·J©·D©w j󎇟“þÿ¶·2©·,©w Ró& ÷ †àw°äw PØžæþÿ÷•TþÁLþ÷Jþ©_ˆ~èKìô÷ BþI�÷ ì² �÷5,þ÷-䲤êh Àl9,Þ€&9ˆð wxêhò$� »À¤&9ˆð wB³,$�h Àà?,J�&9ˆW üð whn,p� À&9ˆð wÐç,–�h€ ÀP&ª,¼�9ˆW üð w”h”,â�€ À„&9ˆð w`,‚h ÀÀ&9ˆ…,.‚W üð w$hO,T‚€ À .END BEGIN ¦#POWFAL,HRDER WRDNW: WRITE +100 BIT #BIT9,@SR ;CHECK ON HOW TO WAIT BNE .+6 IOT ;BACKGROUND TEST BR .+12 MOV PRIORITY,@CSR WAIT WRCHECK +100 BIT #BIT9,@SR ; BNE .+6 IOT BR .+12 MOV PRIORITY,@CSR WAIT JSR %7,DISBUF ;SET UP NEW DISK BUFFER BR WRDNW ;WRITE NEW BUFFER EMT +1 OK JMP @PASSC ;ROUTINE TO ALLOW THE OPERATOR TO SET BITS ;IN THE I/O REGISTERS VIA THE SWITCH REGISTER ; ;WORD COUNT REGISTER SELWC: MOV @SR,@WC ;MOV SR INTO WORD COUNT REG BR SELWC ; ;§4þ�ææ÷5þ6  ·åþ·eþwRÿ÷-¸²þù€éwÄ÷-úýúýã÷ÿÿèý÷æýÚý÷âý޲æÞý÷ šÙƒÁ~`L —v—t÷E0ºý·P¶ýÂÀýÂEüÿƒP÷d²Ò÷ Z²Q� ÷•P²W¬f & ÷ "ãÖ Ä&JÃ$JŸKÌ¡ ¡ ÉB òŠÃ)·“,³¦÷ &!t~ØL·“"³1 W¬f¦÷ XïŸ÷ 2ý�wþwŠþ÷ ܱ‚�÷5Ô±÷α÷ŠýwúýÀÎÁþü÷ 0³÷58®±÷¨±÷5� ±îè7 þüwÜøüæ‹~PM@J÷ žðw0þ1À~±‡YzMzMH~ÈM¨ü&9ˆW üð wû,z‚èhþÿ Àâ, ‚0&9ˆð w´h€,,Æ‚ Àd&9ˆð w€Ÿ,ì‚h€ À˜&9ˆð L,ƒwLhÅ,8ƒ ÀÔ&9ˆW üð w¤,^ƒh€ À&9ˆW Ø,„ƒüð wÔh)§,ªƒ ÀD&9ˆð w º,Ѓh€ Àx&9ˆð wú,öƒlh©µü7Š¿ü7 ÂüæPN÷ ºñ‡÷ À÷ ÈÃpN÷xzü÷ ¤÷`rüË ÅœÅE€ÿ… À`üZó-\ü÷Rü÷Hü÷rü@üÃe ã~R÷ <üä· bü÷-^ü:üÌ÷ ,ü ƒ˜M„„MáÀü À1 wjþ‚ ÷ ü8÷`Rü÷• ü÷•ü÷èûüæPN÷ ñ‡÷ ÷ ÃÒû÷ÊûómÎû€~xRóíÈû÷†RÐû‡÷ î÷ öñ²û w$þ3 ¯7¢û÷˜û÷Âû�ûÅÀwÜ÷DS€û÷bSxû÷jSpû@÷ &÷úRzû÷•wû÷•û÷\û€ûæPNG~ðR÷ pðŸ•þÿ‡÷ z÷ ‚ÃBûË Lÿ .ûó‹ €@÷ œÿ ûæN÷ <ð÷0S&û‡÷ D÷ L÷ 2Dwâý œÂE€ÿòµ@"Nól3 ‡óÕ€t~hS‡óÅ€‡‰ Ÿ•þÿ1�ªCURRENT ADDRESS REGISTER SELCMA: MOV @SR,@CMA ;MOV SR INTO CURRENT ADDR REG BR SELCMA ; ;DISK ADDRESS REGISTER SELDAR: MOV @SR,@DAR ;MOV SR INTO DISK ADDR REG BR SELDAR ; ;DISK ADDRESS EXT AND ERROR REGISTER SELDAE: MOV @SR,@DAE ;MOV SR INTO DISK ADDR EXT REG BR SELDAE ; ;DATA BUFFER REGISTER SELDBR: MOV @SR,@DBR ; MOV SR INTO DATA BUFFER BR SELDBR ; ; ;LOOK AHEAD REGISTER MOVLK: MOV @ADS,%0 ;MOVE LOOK AHEAD RESET RESET BR MOVLK ;INTO REGISTER 0 ; ; ;DISK CONTROL STATUS R«€dAA!A0P¶R¾RÆRÇ~@NbNbN@O~¸Nw .ð w &ðÀ w ðÀw ðÀ�f÷ ÚÖ…1�æþÿÀŸÉ ~0OFŸ“þÿ€ ñ%?†ñ%ô;€ ÷ — 5‚€ ƒœ"NÃEàÿñ� à ó È;*�€ —-ªU%ÃÌ׳ŠÃ)ñŸæàý÷ HÖ^wÖý· ¢þŸ•þÿw xïöþÿ& ÷ ¦ÜË~¨Oæ|0æþÿŸ÷ vþŸ•þÿ‡w¬þÿ Àß,„´&9ˆW üð w0hÆ,B„€ Àü&9ˆ· ÷ 9,h„úÿýð wî7 êÿ‡öh/,Ž„€ ÀD&9ˆ· ÷ úÿýÊ,´„ð w¦7 êÿ‡>hÔ,Ú„ ÀŒ&9ˆ· ÷ úÿýð ´,…w^7 êÿ‡†h€,&… ÀÀ&9ˆð w$:,L…h   ˆTHIS BUFj,r…FER OF DATA WILL BE USED TO TEST THE M/,˜…AGNETIC TAPE 62CœSECOND­w ”뎇÷ Ðú‡Ö À1�÷ ÔDwˆýÀ 1�÷²S¤ú‡÷ Âï Ã*þÀ €ÄE€Wq Ca 3 ´B„ Ãe ù�~àS‡À Åœ¹BÅE€ÿq¡ òÃe´B‡¦À 7 Dú —r ·8ú×p ÃepN÷.úCœ ÷�0úà ÷œÈ;8ú· 4ú‚‡Kóúsœ ³�ñ‹€óÕ€s ¹~XTòµ@"NóØùól‡BœÂE€ÿ‡ÁÐù÷Îùh ‡TZ÷ ®Òûö5À÷¦f&F ‚ÂU€ß ÿèô�a €Õå ?âÁ€ÒÁEàÿ¼š~ÐT„VÛœÄV7œWªÿÀ 7V ÿ}@WtüÿÀEðÿÁEðÿÂå·†ÿÀ ’~€��‚��·<ÒÆhÿæfÿ¦ææ�`ÿ&œþÿÎEŸ•þÿ‚“\ÂE€ÿ‚aƒœ×tüÿÃEN~HUñÿß ÿêôƒÃEà×túÿ®EGISTER SELDCS: MOV #340,@CSR ;LOCK UP INTERRUPTS MOV #177777,@WC ;SET WORD COUNT -1 WORD MOV #OUTBUF,@CMA ;SET UP CURRENT ADDRESS MOV @SR,@DCS ;MOV SR INTO CONTROL REG BIT #BIT0,@DCS ;IS FUNCTION BITS SET BEQ SELDCS ;FUNCTION BITS NOT SET DKBUSY: TSTB @DCS ;TEST FOR DISK NOT READY BPL DKBUSY ;DISK STILL READY BR SELDCS ;DISK NOT BUSY SELECT NEW CR ; ; ; ; ; ; ; ; ;THIS ROUTINE ENABLES THE OPERATOR TO SELECT A TRACK STATICLY ;THE ROUTINE DOES A ONE WORD READ TO SELECT THE T¯°· fþŸ“þÿæ–ý÷ ÚÕ�wtþ÷¥pþ÷ ŒŸ· pó òÕ€"NŸ“þÿ@œÀ x.NÀ$&®'÷ ÈՀР&æÅLý÷ ,ìwL+~ PÀwjÀwbñ‹€ ÷ |ñ÷öý7ôý@÷ ¬÷nPþ÷•ýý7Šþ÷äýþæPN÷ ó¥÷ ÷ ÿ ÎýÖ÷ î@ }òµ@"N` ƒ˜M„=~˜P„Má o‚7˜ý2`„M‚ æhM÷zMÄü7 ¾ü÷ ¨ò÷ÞP’ý÷•�ý÷•—ý÷tý˜ýæPN÷ ˆò‡÷ –÷ ž÷ „ÃZý÷ @÷úP\ý‡÷ z÷ ‚÷ hDñ‹ €!~QÃ$ý÷ æN÷ Dòñý1ŠòÅ€"N&& ÷ ŽÞÎþÿŸw"ü ÷dMü¡7 ü¡7 üÉôŠÃ)Ÿ“þÿ&÷ ”Ÿ÷ Æü7 ¶üw>þwHþ‚ 7 Àü7ºüp~ˆQÀÖü÷ (÷´ü÷´Q¸ü÷•° LINE OF THE W×,¾…RITE, REWIND, AND READ TEST 62 CHARACTîä…ERS.INPUT BUFFERþ2†?,À‡@€  ç懀ï,‰÷"÷ BÄÁÁEàÿ„ 7*7ZÀy&‰8&9ˆð w®È,8‰êh Àl°,^‰&9ˆð wxêhi$„‰ »À¤&9ˆð wB+,¤‰h Àà·,ʉ&9ˆW üð whæ,ð‰ À&9ˆð wÐ_,бß`êôÊEÀÿÊU Ö‹€‚ƒœ ×tüÿÃEñÿò ÿƒ ÃEà×túÿò`Ÿìôƒ ÃEÀÿÃUÀòƒ‚Þ ŸÆ¤Ñ&&7Îþ7ÈþÁ “~ÀU0C~ÀeÀEà&À°þÁ®þßU0þÿ† Ö €�‚ªÖ ØæLѦ÷ †Ð^+8-Æ/F-Ž.¢-ðt23PJ:?4;ô=lCZYNkflÜ`á~8V°`Ô^Ø^Þ^ä^ê^È_D`ðNøNO O�?dCja aôUø?lDÂOab ajaDWèrdCj_,~°V!0033 ˆˆˆˆˆˆ Í~(Wˆ²RACK ;THE OPERATOR MAY CHANGE THE SWITCH REGISTER AT ANY TIME ;SR6-0 EQUALS THE TRACK NUMBER ;SR9-7 EQUALS THE DISK NUMBER ; STAMP: BIS #BIT8,@DCS MOV @SR,WORK1 ;FETCH SR MOV WORK1,WORK BIC #176000,WORK ;MASK THE TRACK AND DISK NO. ROR WORK ROR WORK ROR WORK ROR WORK ROR WORK MOV WORK,@DAE ;DISK EXT. ADDR. REG. LOADED MOV @SR,WORK SWAB WORK ROL WORK ROL WORK ROL WORK BIC #3777,WORK MOV WORK,@DAR ;DISK ADDRESS REG LOADED MOV #INBUF,@CMA ;LOAD CURRENT ADDRESS MOV #17³µü7Š¿ü7 ÂüæPN÷ ºñ‡÷ À÷ ÈÃpN÷xzü÷ ¤÷`rüË ÅœÅE€ÿ… À`üZó-\ü÷Rü÷Hü÷rü@üÃe ã~R÷ <üä· bü÷-^ü:üÌ÷ ,ü ƒ˜M„„MáÀü À1 wjþ‚ ÷ ü8÷`Rü÷• ü÷•ü÷èûüæPN÷ ñ‡÷ ÷ ÃÒû÷ÊûómÎû€~xRóíÈû÷†RÐû‡÷ î÷ öñ²û w$þ3 ¯7¢û÷˜û÷Âû�ûÅÀwÜ÷DS€û÷bSxû÷jSpû@÷ &÷úRzû÷•wû÷•û÷\û€ûæPNG~ðR÷ pðŸ•þÿ‡÷ z÷ ‚ÃBûË Lÿ .ûó‹ €@÷ œÿ ûæN÷ <ð÷0S&û‡÷ D÷ L÷ 2Dwâý œÂE€ÿòµ@"Nól3 ‡óÕ€t~hS‡óÅ€‡‰ Ÿ•þÿ1�´h€ ÀP&!,<Š9ˆW üð w”h ,bŠ€ À„&9ˆð w`y,ˆŠh ÀÀ&9ˆý,®ŠW üð w$hÇ,ÔŠ€ Àü&9ˆW üð ws,úŠèhþÿ ÀZ, ‹0&9ˆð w´h€£,F‹ Àd&9ˆð w€,l‹h€ À˜&9ˆð Ã,’‹wLh=,¸‹ ÀÔµˆ¦öNׇ” L;hM�H£•*ôÌKa@i NNsqØN%leè@R8xXC”¶^”ð_pÖ ŽHw lD\Þ@®ŒsÅ~ WP@´L R@ô&@Aö&`;¬Mm'NÂO‰'ö,NŽ'ŒsdM”'L fMµ' ™„MŒ(` "NÉ2Ú®'’4!;`@49p(«:<}Ã)_M€QÄ;�Mp&„^�M€WŠ^0X¹s8@ÜYYqT@ÞY!T6NYeÞI~XÈ;hf€p?”f�Y'[gÐ4"?;}¸G¬'’è€4* €` R)ë«s'Œ'ÿÿ–~�X~^¸~Y�\¶7777,@WC ;LOAD WORD COUNT BIS #5,@DCS ;GO AND READ CTBUSY: TSTB @DCS ;TEST FOR CONTROL NOT READY BPL CTBUSY ;WAIT FOR CONTROL NOT READY SRCHG: CMP WORK1,@SR BNE STAMP ;SR HAS CHANGED BR SRCHG ;SR HAS NOT CHANGED ; ; ; ; ; ; ; ;ROUTINE TO REPORT ERROR COUNT AND CONTENTS OF ONE REGISTER ; STAER: JSR %5,CONV ;CONVERT OCTAL TO ASCII WORK ;DATA TO BE CONVERTED MES10 ;ADDRESS OF MESSAGE 6 JSR %5,CONV ;CONVERT OCTAL TO ASCII ERCOUNT ;ERROR COUNT TO BE CONVERTED HED5·w ”뎇÷ Ðú‡Ö À1�÷ ÔDwˆýÀ 1�÷²S¤ú‡÷ Âï Ã*þÀ €ÄE€Wq Ca 3 ´B„ Ãe ù�~àS‡À Åœ¹BÅE€ÿq¡ òÃe´B‡¦À 7 Dú —r ·8ú×p ÃepN÷.úCœ ÷�0úà ÷œÈ;8ú· 4ú‚‡Kóúsœ ³�ñ‹€óÕ€s ¹~XTòµ@"NóØùól‡BœÂE€ÿ‡ÁÐù÷Îùh ‡TZ÷ ®Òûö5À÷¦f&F ‚ÂU€ß ÿèô�a €Õå ?âÁ€ÒÁEàÿ¼š~ÐT„VÛœÄV7œWªÿÀ 7V ÿ}@WtüÿÀEðÿÁEðÿÂå·†ÿÀ ’~€��‚��·<ÒÆhÿæfÿ¦ææ�`ÿ&œþÿÎEŸ•þÿ‚“\ÂE€ÿ‚aƒœ×tüÿÃEN~HUñÿß ÿêôƒÃEà×túÿ¸&9ˆW üð w,Þ‹h€ À&9ˆW P,Œüð wÔh),*Œ ÀD&9ˆð w 1,PŒh€ Àx&9ˆð wq,vŒlhþÿ ÀV,œŒ´&9ˆW üð w0h>,ÂŒ€ Àü&9ˆ· ÷ ±,èŒúÿýð wî7 êÿ‡öh§,�€ ÀD&9ˆ· ÷ úÿýA,4�ð w¦7 êÿ‡>hK,Z�¹ L/P 1 PARITY ERROR L/P 1 NOT READY L/P 1 ABORTEDfXêX&f¦æ&fæêôæìô€÷ ¾ 7¬�~€YŒÿÄ0ŸìôŸêô…„ƒ‚�€Ž‡œ— ÂÉ Ä åÄ â÷ hæþÿŸÈ :&÷ ̦NX÷ ðËž²NXìô ö%ªUj~øYÄFÍ´ŠÃ)0 ó HX$Ÿþÿ ð¥ð ¶Æe…„ƒ‚�€& ÷ Òw>Ö0Ÿþÿ£ˆ ŸþÿÄ›³ HXŸþÿsJX3 XX3 ZX³`Xs¶~pZ\X3 ^X÷ ÖÂhq÷ îŸ÷ ô Âw0w ŠÉ ÅÔ$ó HXMœÂ`X¦LX÷ úÊ€ìôÁJX÷ ˜å÷ ŠÂhq÷ ¢÷ ¨MæþÿÂ`XŸ2LX Ô~èZ„ÄeLX¡ ¡º ;ADDRESS OF MESSAGE 3 EMT +0 ;REPORT MESSAGE HED5A HED5 MES10 -1 RTS %5 ;EXIT ROUTINE ; ;ROUTINE TO REPORT ERROR COUNT AND THE CONTENTS OF TWO REGISTERS ; ; ; STAER1: JSR %5,CONV ;CONVERT OCTAL TO ASCII WORK ;DATA TO BE CONVERTED MES10 ;ADDRESS OF MESSAGE 6 JSR %5,CONV ;CONVERT OCTAL TO ASCII WORK1 ;DATA TO BE CONVERT MES10A ;ADDRESS OF MESSAGE 6 JSR %5,CONV ;CONVERT OCTAL TO ASCII ERCOUNT ;ERROR COUNT TO BE CONVERTED HED5 ;ADDRESS OF MESSAGE 3»ß`êôÊEÀÿÊU Ö‹€‚ƒœ ×tüÿÃEñÿò ÿƒ ÃEà×túÿò`Ÿìôƒ ÃEÀÿÃUÀòƒ‚Þ ŸÆ¤Ñ&&7Îþ7ÈþÁ “~ÀU0C~ÀeÀEà&À°þÁ®þßU0þÿ† Ö €�‚ªÖ ØæLѦ÷ †Ð^+8-Æ/F-Ž.¢-ðt23PJ:?4;ô=lCZYNkflÜ`á~8V°`Ô^Ø^Þ^ä^ê^È_D`ðNøNO O�?dCja aôUø?lDÂOab ajaDWèrdCj_,~°V!0033 ˆˆˆˆˆˆ Í~(Wˆ¼ ÀŒ&9ˆ· ÷ úÿýð +,€�w^7 êÿ‡†h€†,¦� ÀÀ&9ˆð w$²,Ì�h   ˆTHIS BUFâ,ò�FER OF DATA WILL BE USED TO TEST THE M§,ŽAGNETIC TAPE 62CœSECOND LINE OF THE WN,>ŽRITE, REWIND, AND READ TEST 62 CHARACTedŽERS.INPUT BUFFERu²Ž·,@� €€�f�õ€�Ï€‘.ˆAy F²Âh×&˜‘@g8’@á½ 2NXÈŸþÿÄXXôŠÃ)&÷ ê¬ æXX& ÷ œÔÖ fæ&æXX÷ ჅÂ`XÂ÷ æÄò LXÂe(¦­~`[LX÷ FÊ€ìô÷ Âð wVÿsJX³`X3 XX3 ZXÂhqs\X3 ^X÷ Î÷ ª÷ ÒM÷  3 HXæY÷ Ö M³ ^Xó%^X÷ X÷ z'~Ø[÷ ¢MæY÷ `ñwèþæ,Y÷ N÷ V3 ^XÄY&ô\æd÷ |Ö MC fÁJXÂ`XæLX÷ ~É€ìô÷ Ö …ÄdXÅ÷ ³ ^X×,å~P\^X´æd÷ 2Ö ‡ðÖ …wfþæ&ff& ÀVYÅZXAaÁes!\XB3 bX DÔ! ! 3 VY³ bX Ä% !3 VY ÷ ^Ä• Îå~È\÷ R … s!¾ EMT +0 ;REPORT MESSAGE HED5A HED5 MES10 MES10A -1 RTS %5 ;EXIT ROUTINE ; ; ;ROUTINE TO DECODE EMT CALLS ;EMT+1=TYPE ONE LINE OF TEXT ;EMT+0=TYPE A SERIES OF LINES EMTRP: MOV (6),%0 CMP #EMT+1,-(0) ;WAS THE CALL EMT+1 BNE TYPS ;NO! TYPE A SERIES OF LINES OF TEXT BR TYP ;YES TYPE ONE LINE OF TEXT ;SUBROUTINE TO OUTPUT ASCII MESSAGE ON TELETYPE PRINTER. TYP: MOV @%6,%0 ;GET ADDRESS THAT CONTAINS MESSAGE ADDRESS ADD #2,@%6 ;SET UP EXIT. MOV @%0,%0 ;ADDRESS OF MESSAGE ¿ˆ¦öNׇ” L;hM�H£•*ôÌKa@i NNsqØN%leè@R8xXC”¶^”ð_pÖ ŽHw lD\Þ@®ŒsÅ~ WP@´L R@ô&@Aö&`;¬Mm'NÂO‰'ö,NŽ'ŒsdM”'L fMµ' ™„MŒ(` "NÉ2Ú®'’4!;`@49p(«:<}Ã)_M€QÄ;�Mp&„^�M€WŠ^0X¹s8@ÜYYqT@ÞY!T6NYeÞI~XÈ;hf€p?”f�Y'[gÐ4"?;}¸G¬'’è€4* €` R)ë«s'Œ'ÿÿ–~�X~^¸~YP\À,Æ’÷ –õ‹.Á¸! Á%8ü‡÷*Àþ÷•Ãþ÷x,ì’ Äþ÷ À÷% ¤þ÷ °þõÂ8RÒ‹,“ Ò ’$ÒV¯ÒÜ…åww w ÷ *V6,8“÷‹þQ�÷ ¼ È‹mÈ•þÿË÷•åþ÷ ZçÂj,^“8À�Xþ 7ØþÂÆ÷¸0þ÷•Áþ÷ 6]Á�6þÄ,„“ÁEøÿWt�`D%ñ•ÿÿþÿˆ‘•‘•‘•ˆ‘•³,ª“‘•‘•Ì þ ÷Õ€ÿýÀ ÷•uþ÷ ê7÷*§,ГÒý÷•Õý÷ Ø./wNwL÷ t#÷ È‹f,ö“È•þÿË ÷•5þ÷ ª÷*’ý÷••ý÷ ˜y,”�Š�Š�Š�Š�Š�Š�Š�Š�Š�Š�Š�ŠÍ ô?ˆˆË,B”÷ ö÷ ²ï·Šiý€÷ŠcýãÈ•Àe5 52Á\XßÀ5Е sZXÀìVY„ Ö …�€Ö ‡3 VY³ bXÄ ÷ êÎ5øÝÅ êÄÕ¶ 6 & „`“3 XYŽ Ö ‡ð¥ È~@]‡ð¥ùćß@ê‡Äê& Ä5 Ä5Ä5Ö ‡– ‡Ö ‡ó Y 3dX  ê÷ Ðúß ê êßfXêßÈêÄYô\&¥~¸]æd÷ ÐÖ ‡fÄVYÅBÀåÄÄ Ä Ä Äe^0ð0ŠÈ&÷ zÔ…ÀVY‡ÃwÅÀVY@aAa… !B@ÁJX…Â`Xw¬ü êž~0^‡f  ÅCqBa…à ‡„fÅìXæþÿŸõ 5 Ÿþÿf÷ Ô…Ž¤‡Ÿþÿ…Ž´‡1 ‡· Šú‡7 „ú‡æþÿŸþ% f…µ�8~¨^ …ŸþÿÂTO R0. TYPA: MOVB (0)+,TYPDAT ;GET CHARACTER CMPB #100,TYPDAT ;CHECK FOR "@" CHARACTER BNE TYPC ;CRANCH IF NOT "@". RTI ;TERMINATOR CHAR. DONE. EXIT. TYPC: CMPB #45,TYPDAT ;CHECK FOR "%". BEQ TYPF ;BRANCH IF "%". CMPB #42,TYPDAT ;NOT "%". CHECK FOR "#". BEQ TYPG ;BRANCH IF "#" JSR %7,TYPD ;TYPE CHAR IN TYPDAT BR TYPA TYPD: BIT #BIT14,@SR BNE TYEXIT MOVB TYPDAT,@TPB ;OUTPUT CHARACTER TO PRINTER TSTB @TPS ;WAIT FOR DONE FLAG. BPL .-4 TYEXIT: RTS %7 ;EXIT TYPF: MOVB #15,Tà L/P 1 PARITY ERROR L/P 1 NOT READY L/P 1 ABORTEDfXêX&f¦æ&fæêôæìô€÷ ¾ 7¬Í~€YŒÿÄ0ŸìôŸêô…„ƒ‚�€Ž‡œ— ÂÉ Ä åÄ â÷ hæþÿŸÈ :&÷ ̦NX÷ ðËž²NXìô ö%ªUj~øYÄFÍ´ŠÃ)0 ó HX$Ÿþÿ ð¥ð ¶Æe…„ƒ‚�€& ÷ Òw>Ö0Ÿþÿ£ˆ ŸþÿÄ›³ HXŸþÿsJX3 XX3 ZX³`Xs¶~pZ\X3 ^X÷ ÖÂhq÷ îŸ÷ ô Âw0w ŠÉ ÅÔ$ó HXMœÂ`X¦LX÷ úÊ€ìôÁJX÷ ˜å÷ ŠÂhq÷ ¢÷ ¨MæþÿÂ`XŸ2LX Ô~èZ„ÄeLX¡ ¡Ä,h” Ë ÷•Çý÷ <à÷*$ý÷•'ý÷ *ר,Ž”÷ ÎÐ÷ fÉȥȥÿÿ¿p wm ý÷ÅÐ,´”€ý·Šþü÷ÿÿøü ÷µîü· êü÷ŠãüŠ‚,Ú”÷•Íüà ÷•Qý÷ Æ¥÷*®ü÷ ºŸ À7,•H¶ 5$ 5$ 5¬ ¢þÿ¤‡ª,&•Ð Àe  ì‡ÀÆÂDƒ ×  ‡÷¸Zü÷•Û,L•ëü÷îü÷ \×Ö wÚþ 7 NüÀ*÷•=üHè,r•w¾ü7&ü÷ 2÷%üæ,V¯,ú,˜•Ü… ‡À‡Ö wzþÖ w‚þæˆõÝâû1 ¾•‡,€–T2À–0¦–€ À–ÿÿ£,$—ÅŽ6 ‡Ÿþÿw0»öeþ¶^6 ‡& ææææ·ÐæþÿŸ÷ È*—-ªU&÷:ȸ7 ¶Ÿþÿ&fæΕ€·~ _Á´_W Â_üæŠ_æþÿ& ÷ Íæ& æ´ß& ÷ ¾ËÖ w*ÑŸþÿþ‡÷ Pæ|0æV& ÷ PÐÖ · H‡Ö ‡7 <‡÷ 6÷ 2 ·Q~˜_P•`W ´_ü‚�€7 ‡÷ñw V߀�æ•—-ªUæ`Çf÷ úÆ� D”ÄE€ÿÄå@!×p(aŠòÐÈ~`Âî·Ô”w øÞŽŽ‡Äe! ÄeèÄe Äâ àw ÚÞ€�昔—-ªUæäÆf÷ ~Æ�ÂĨ` Ì ‡ã… ûÅ‹W¡m~ˆ`Åe ÆYPDAT ;MOVE CARRIAGE RETURN CODE TO TYPDAT JSR %7,TYPD ;GO TYPE CHAR. TYPG: MOVB #12,TYPDAT ;MOVE LF CODE TO TYPDAT. JSR %7,TYPD ;GO TYPE CHAR. BR TYPA TYPDAT: 0 ;SUBROUTINE TO OUTPUT A SERIES OF ASCII MESSAGES ON TELETYPE PRINTER TYPS: MOV @%6,%0 ;GET ADDRESS THAT CONTAINS MESSAGE ADDRESS ADD #2,@%6 ;UPDATE TO NEXT MESSAGE ADDRESS MOV @%0,TYPSB ;ADDRESS OF MESSAGE TO TYPSB CMP #-1,TYPSB ;CHECK FOR TERMINATOR BNE TYPSA ;BRANCH IF NOT TERMINATOR. RTI ;TERMINATOR. EXIT TYPSA: EMTÇ 2NXÈŸþÿÄXXôŠÃ)&÷ ê¬ æXX& ÷ œÔÖ fæ&æXX÷ ჅÂ`XÂ÷ æÄò LXÂe(¦­~`[LX÷ FÊ€ìô÷ Âð wVÿsJX³`X3 XX3 ZXÂhqs\X3 ^X÷ Î÷ ª÷ ÒM÷  3 HXæY÷ Ö M³ ^Xó%^X÷ X÷ z'~Ø[÷ ¢MæY÷ `ñwèþæ,Y÷ N÷ V3 ^XÄY&ô\æd÷ |Ö Mƒ ¦ÁJXÂ`XæLX÷ ~É€ìô÷ Ö …ÄdXÅ÷ ³ ^X×,e~P\^X´æd÷ 2Ö ‡ðÖ …wfþæ&ff& ÀVYÅZXAaÁes!\XB3 bX DÔ! ! 3 VY³ bX Ä% !3 VY ÷ ^Ä• Îå~È\÷ R … s!È ,J—Ù"p—Ö!t—Ð AC: # �— ? \˜— ILL CMD! ±¦— ILL PAR! ”,´—NON-QUIESCENT EN DS$QU*XX0XTôÙ,Ú—TMDTFREÀCM$AS:LD@IDLFLZTCFPTÉ,˜IT¸BR’XB¢EXˆ.ˆˆæ´ ˆ÷w,&˜.ÿ÷–"ÿ7 *ÿæ„ ˆ÷ ÿîŘDêÄå�»,L˜Ä ÃS# Ó Ë û÷Øîþæ„ ˆÙË ÖÕ Ä ô,r˜Û Å Ò÷æÒþñ÷ !Ä»Ä ôE È»‡W¥,Ê,˜˜ Ä !‚÷ Å ÉÅeÅe Åe Q‘Ô ÂŠèÂã¶@(ÆåŽæþÿŸö>Ÿö8Ÿö2ŸŸ•þÿöål‡ÆåŽæþÿŸöŸö ŸöŸŸ•þÿ”~a‡¦öøž‡&f€& #� W <æþÿŸ7ΞwÊž7 Æž7 žÀ€ € PÁ]¶žw²ž7®žŸ•þÿ6 �€Ž‡öø&f¦æ&Ä:~xa‚ FÂ5„ 7xž€= :�7À p þÿ3‚ 0Âel— Ð+DÃåÄlþÿúC×t € æþÿŸ7*žw&ž·"ž÷ž7ž÷Eøž÷Pž~ðaŸ•þÿ6 „ƒ‚�€¶Ö ‡öó÷Eð„÷U0~÷Eÿ|÷Uv÷Eðj÷UPd÷Eÿb~hb÷U„Ê +1 ;CALL ON TYP SUB TO TYPE MESSAGE TYPSB: 0 ;ADDRESS OF MESSAGE GOES HERE BR TYPS ;GO PROCESS NEXT MESSAGE ; ; ;OCTAL TO ASCII CONVERT ROUTINE ; ;ENTER ROUTINE AS FOLLOWS ;JSR%5,CONV ;ADDR#=ADDRESS OF NUMBER TO BE CONVERTED ;ADDR BYTE=LSB OF WHERE ASCII IS GOING ;ASCII#=THE NUMBER OF ASCII CHAR. TO BE CONVERTED ; ; CONV: MOV @(5)+,ACNVX ;VALUE OF # TO BE CONVERTED MOV (5)+,%1 ;ASCII ADDR MOV (5)+,%2 ;# OF ASCII CHAR ADD %2,%1 ACVN: MOV ACNVX,%3 BIC #177770,%3 ;ISOLATE LEASTË\XßÀ5Е sZXÀìVY„ Ö …�€Ö ‡3 VY³ bXÄ ÷ êÎ5øÝÅ êÄÕ¶ 6 & „`“3 XYŽ Ö ‡ð¥ È~@]‡ð¥ùćß@ê‡Äê& Ä5 Ä5Ä5Ö ‡– ‡Ö ‡ó Y 3dX  ê÷ Ðúß ê êßfXêßÈêÄYô\&¥~¸]æd÷ ÐÖ ‡fÄVYÅBÀåÄÄ Ä Ä Äe^0ð0ŠÈ&÷ zÔ…ÀVY‡ÃwÅÀVY@aAa… !B@ÁJX…Â`Xw¬ü êž~0^‡f  ÅCqBa…à ‡„fÅìXæþÿŸõ 5 Ÿþÿf÷ Ô…Ž¤‡Ÿþÿ…Ž´‡1 ‡· Šú‡7 „ú‡æþÿŸþ% f…µ�8~¨^ …ŸþÿÌ‡Ö  ‡÷ ,Å Ä F,¾˜! 7p¨tþ÷•pþæx*ˆô®§‡æ,ä˜÷ ¬ÿæ& && ˆÖ ܈æöæóæ, ™ðÑÀ0ŠR©&éW¥,W£BW£AÅ ÷ ,0™bÿÄ ½! ºæÕ ûÄÿÿøÄþÿõ®æà,V™jˆ÷ Ìý¨‡¦÷Ôý÷•Ðýæx*ˆ‡›ÀÉ,|™Á"ð•R©0ŠÃ©0Š4ªñ®§Áe€  pðÅ,¢™æŒ§>ˆ‡æ7 tý7 rý7 pýaÃjc™Ä ýædG,È™ˆ„Ö  ƒ‡h€´Ä ÁÁ÷,î™ÁW¥,5Ä 3!0‚÷ ¢ÿÅ ,!)!×,š¬§&Ä ô%®§!„ yß•àþÿô¥R©4ŠR©u,:šŠþÿ‡ß•àþÿô‹R©­R©Í\ ÷EðP÷U@J÷EÿH÷U„Bw –ÜÀ¦ÿ7  ÿ7МÿŠÀ   Db € „  ‚ Â5øqbÑ W !îÄ5 îƒ ÷ ^ÿêƒÂíVÿ‚ ã~àbÂÂÝNÿ·Nÿ÷E€Jÿ„  ƒ Ã5úqbw ܇÷U€.ÿùÿÿk~Xcÿÿ$p¨c¨câc¨c ¯~Ðcÿÿ$pdd>dd ÿÿÅ~HdÎ SIGNIFICANT OCTAL# ADD #60,%3 ;SET UP ASCII# MOVB %3,-(1) ;STORE ASCII CHAR BIC #7,ACNVX ROR ACNVX ;ROTATE OCTAL# ROR ACNVX ROR ACNVX DEC %2 ;-1 FROM ASCII CHAR COUNT BNE ACVN RTS %5 ;EXIT # CONVERTED ACNVX: 0 ;WORK REGISTER ; ;ROUTINE TO HANDLE KEYBOARD CONVERSATION ;ROUTINE ACCEPTS NUM. OR ALPHA CHARACTERS ; NOCHA: MOV #40,TSTCH ;SET UP FOR NUM. CHAR. BR TYST ALPHA: MOV #100,TSTCH ;SET UP FOR ALPHA CHAR TYST: MOV #340,@CSR ;LOCK UP INTERRUPTS CLR TEXBUF ;CLEAR TEXTÏŽ6 ‡Ÿþÿw0»öeþ¶^6 ‡& ææææ·ÐæþÿŸ÷ È*—-ªU&÷:ȸ7 ¶Ÿþÿ&fæΕ€·~ _Á´_W Â_üæŠ_æþÿ& ÷ Íæ& æ´ß& ÷ ¾ËÖ w*ÑŸþÿþ‡÷ Pæ|0æV& ÷ PÐÖ · H‡Ö ‡7 <‡÷ 6÷ 2 ·Q~˜_P•`W ´_ü‚�€7 ‡÷ñw V߀�æ•—-ªUæ`Çf÷ úÆ� D”ÄE€ÿÄå@!×p(aŠòÐÈ~`Âî·Ô”w øÞŽŽ‡Äe! ÄeèÄe Äâ àw ÚÞ€�昔—-ªUæäÆf÷ ~Æ�ÂĨ` Ì ‡ã… ûÅ‹W¡m~ˆ`Åe Ð Šþÿ÷ôòüæ”,`š„ ˆ ‡ô•R©Šþÿ‡&& & & ˆÖ òê&),†šˆ‡ HH:MM:SS MM/DD/YY ÑÔ5,¬š×åâß�Ä÷ ìþÅ &ÅeÀ õI Æp,Òš¶ÿ‡·°ÿW¥, !ôÀ÷ Æÿ:ˆÖ í‡ÀÂ,øšÁèÂÌw(·€ÿW¥, !ÜÀ÷ –ÿ,›;ˆçÀÁîÂÚ÷Eÿ7PňædˆÝ"D›DÔ�ÞûÔ�ÛûÅ öÅ ·øûæ„ ˆ‡,,€›f2À›"¦›€,$œ2ˆÇlÅàÄþÿÀèL‘ß F-&ß ¬%€Ù,Jœðµ @ðµ ðÅ ð• <ðÕ ŠN,pœðµ  ðµÑÿÿÿÿÙ~Àdÿÿ_~8eÿÿÿÿè~°eÿÿcNc¨cdBd€d¾düd:exeÿÿÿÿÿÿÿÿÿÿ ÿÿÒ BUFFER REG TSTFLG: TSTB @TKS ;CHECK FOR FLAG BPL TSTFLG ; MOV @TKB,@TPB ;CHARACTER IN BUFFER TSTB @TPS ;ECHO CHARACTER BPL .-4 CMP #377,@TKB ;CHECK FOR RUB-OUT BNE CKCH ;EXIT IF NOT RUB-OUT EMT +1 MES8 ;REPORT RUB-OUT ACKNOWLEDGED BIC #7,TEXBUF ROR TEXBUF ROR TEXBUF ROR TEXBUF BR TSTFLG ;GO WAIT FOR NEW CHAR. CKCH: CMP #215,@TKB ;CHECK FOR CARRIAGE RETURN BNE .+4 RTS %7 ;EXIT DELIMITER TYPED BIT TSTCH,@TKB BNE CHOK EMT +1 ;REPORT QUESTION MARK MES7 BR TSÖÅeÅe Åe Q‘Ô ÂŠèÂã¶@(ÆåŽæþÿŸö>Ÿö8Ÿö2ŸŸ•þÿöål‡ÆåŽæþÿŸöŸö ŸöŸŸ•þÿ”~a‡¦öøž‡&f€& #� W <æþÿŸ7ΞwÊž7 Æž7 žÀ€ € PÁ]¶žw²ž7®žŸ•þÿ6 �€Ž‡öø&f¦æ&Ä:~xa‚ FÂ5„ 7xž€= :�7À p þÿ3‚ 0Âel— Ð+DÃåÄlþÿúC×t € æþÿŸ7*žw&ž·"ž÷ž7ž÷Eøž÷Pž~ðaŸ•þÿ6 „ƒ‚�€¶Ö ‡öó÷Eð„÷U0~÷Eÿ|÷Uv÷Eðj÷UPd÷Eÿb~hb÷U„Ô@ Ò  ðµ ’$ðµ«,–œ Ò ¦ & æ& æ+&& æÆ/Þ Ö !,¼œL‘ðÅ ð‹ ðµ ðÅ &ß Ö yâœè ßö|ê÷èø|7 ö|ß Ã úœF- Šš¹,� ¨@@�&�(@�À�^$Ø�èfø�Þk& ž!%,  ENTER FILE/ELEMENT NAME: J,L   FILE NOT FOUND, REENTE r R: 8,v  FILE NOT CONTIGIOUS, REENTERÕ~(f€¶Ž¦6 öþÿÁ ƒ÷ ò ð‹Y'�wBB´ew …… wÂe÷ŸÊ Ÿ�~~ fþÿëæ÷Šû÷€ˆû÷ †ûв²°ŠÉe÷ rûl�÷‹lû€w‚Ã`û÷Zû÷Xû÷ pûÊÕÄŠ„ Ämàþ÷ BûT�Ÿ“þÿð‹Y'�E´e5ôÿÅâe&÷ –¾„U~gTþ€Äå:̃Cì´eô�4�ôTo ô• Ãe0ôÃe ôô˜�…Å tp(04Š3Äe&Ê‹€÷ êÛ÷ ôÛô �ñ• R)Ÿ•þÿ‡ö ~~�g¶ �1ŠR)Ö óÁe8f÷ v �D„ À wFB´eæŸ2¬Éeþÿ+ð‹Ée €ò ôÿ ÷Zú÷U€Xú÷ Vú²ŠÿÿÄ…÷ ~„ôÿBÁ Ä w…ÖTFLG ;WAIT FOR CORRECT CHAR. CHOK: MOV @TKB,WORK BIC #177770,WORK CLC ROL TEXBUF CLC ROL TEXBUF CLC ROL TEXBUF ADD WORK,TEXBUF ;ADD CHARACTER BR TSTFLG ;WAIT FOR NEW CHARACTER TEXBUF: 0 TSTCH: 0 ; ; THIS ROUTINE SETS UP THE D D C DEVICE PAGE REGISTERS ; USAGE; PLACE LOGICAL DISK NUMBER IN R0 AND JSR PC,SETREG ; SETREG: MOV R0,R1 BIC #177774,R0 ASH #4,R0 ; MULT BY 20 BIC #177773,R1 ; ADD IN THE 400 Øæf ¦ÞÂeÂÁeñEøwàË(í(4 ôÎ 7 Jw  ·�2÷ �¢÷ 4 (÷ b÷ ÷ÂeÂl÷ p÷ Ê ÂeÂ8÷ üw ÊUê÷ Þ÷ Âe:÷ÂeÂ�÷ (t hË~’f÷ –%øwÌ �øËU‡�‚ƒÖ ûÎ  ±$æ"ÂeÂA$ ÁËEÓ æ¦f‡Ì÷   šÿ÷ úÿtúÿ‚÷ òÿtØ: ]!œ  FILE TRANSFERED, NEXT: x,¸ + ERROR - VALUE . TASK D€Þ ID $EXIT.9,è ˆ÷ì(ý÷ FÀÁ ```&÷ ýæÌÎ,¡ ˆ"ˆæŒ&ˆ÷¦ü¢ü7Š«ü÷B”ü÷ öÀìX,4¡7ˆü7$�ü7$Œü7$|ü È �÷6Äü÷ âÍS,Z¡$Ð Ð Àe  êæ÷ PüÝ÷ ü÷ ¾»7 õ,€¡`üæ˜)ˆæˆ¦ˆˆ÷ 2ü9Á6ü7 üÐ 7ük,¦¡÷ |· üwvü済÷ Dü Áe÷-úûúûîÁí»,Ì¡üwüæˆ!ˆ÷ ìû÷Z4ü÷ R…÷BCÎþæ,ò¡÷DTÆþæðû ÷DKºþæøû÷BF®þæ´ûæ�,¢ˆ÷xøû÷ ˆ÷–ûüûæ¤ ˆ÷ ¶û݇Ù~hºþÊ•Ÿ“þÿ&÷ ”½„wÿB®Ÿ�þÿ…… wbÿ—¢ÂeõŸ—¢îʲ²w(ÿð‹Y'‘€Ÿ“þÿÄ  ‹ô‹Y'€Å A´e E… E’~€hW¡ÁeõÄ é… CÝ•*EÅ f®'÷ š…EÀÿÅ êÅp¡×eæŸÊ‹w¸þE’ÉW¡ÆEõ‹Ã)ô÷ ØŸ“þÿf÷  ÅÖ ó >æ$Î Äœ~øhó ³ã$Ó ÃåÖ Ÿõ•R)ñ µŠR)Ÿ“þÿ³Äÿ3�Ãÿó•óÿó•ËÿóXnÌÿÄÄeðÿ3Ôÿ3Øÿóe Øÿó”‹ÖÿÃeÈÿæ÷ úÙó  wþ ŠÃeÆ~piøÿÄÁ w¦ýA÷ ^w(�Žæ—þÿ÷ LŸ1ŠR)Á 1 ®'ð‹Y'V€7ÀÿŠø÷ˆø÷ ºø ðŠÉe÷ zøG�Ÿ“þÿÀÁð‹Ée�B´eð‹Y' €ƒƒ à Ú ASH #6,R1 ; WORD OFFSET ADD R1,R0 ; IF DISK 4-7 ADD #165300,R0 MOV #10,R1 ; NUMBER OF REGISTERS MOV #DCS,R2 ; FIRST REGISTER ADDRESS 2$: MOV R0,(R2)+ TST (R0)+ SOB R1,2$ RTS PC ; RETURN ; ;ERROR MESSAGE HEADERS ; HED1: .ASCII /%DATA ERR @/ ; HED2: .ASCII /%STATUS ERR @/ ; HED3: .ASCII /%EXTRA BKS @/ ; HED4: .ASCII /%DK ADDR ERR @/ ÁeÞðÊ~R÷ ,÷ K1 I€ÑEˆæˆæ€ÉU¦÷ ÷ ‡ €õÊ ýÀ ‘À ‘€’‘‘&ªùwt÷ ‹‰Q$‰f�R÷ v  $÷ úÿta(úÿxÊ~„ ÷ &>÷ þÿòf ÉÁer÷ ‚÷ ÷ X÷ úÿtÁeúÿž÷ ôþ÷ Ê~oÿÿˆ ˆæø� ÛÁ Ä»_ � óŒþ ÷%¦þ· ü�þ÷%/ˆxæ¸þ7 ¢þw�� ¸þ· ¼þÈ»wœˆÉ~þ— ÿðÂE"�È»B ûÀe0 €ÿÀüÎß%>ˆÎæü´Â  ÁÀühÍß%>ˆhÍæ¬Í˜Íß„͘ÍßòxlÀexl¬Í°ÀÍp˜Íp -þÜæÌ· >¢ ˆ‡û,€¢ ÈdoÀ¢ô¦¢£À¢ÁÔ,ˆ£.ˆ÷œ ÷® ÷– æ¶æn&ˆæj!ˆ÷§,®£." æˆ ˆ÷p æ ˆˆÀsÁÊÂ^€,Ô£ˆÃpã ã ã €  ¢,× o÷‚ˆ,ú£’õæjf&ˆCCTQ$äÀÊÁåÎ� � � wM, ¤<7 Á 7 7þ æj ˆ÷ î Ðò Ðð æ,F¤ïÄ ÷ Ì ÷Ê÷÷t÷t ÷ ø x,l¤6÷ ( 3÷ ÞÈ È ó"ðò· ÈÈ Ù,’¤ð‹P)Åå眗 ÀeD zø,¸¤:ÚÚ~Ä ÷ R Ä ÷ J Ä ÷ B wž"Ý ~èiÃE€ÿÂeõ‚øÿÊ‹€ Ñ  äw~ýŸƒÙÃE€ÿÕŸƒ’Òƒ÷ <÷ ø÷€ ø÷ ø÷ ø �÷‹ü÷€Ÿ“þÿð‹Y'Ò�Øw„üÁ B´e÷ 8�„~`j„ôÿ‚øÿ—¢ôÊÕ&÷ 4»„Ÿ“þÿÁ wœüò%äÿ¦Îeäÿ÷ l°Ö ò‹ÿÿ³¦ôÿ÷ »·Š÷÷Uˆ÷÷ º÷2Šÿÿ2 ôÿwúþæ—þÿÁz¼÷ 4 ð‹Ée�~Øj3ƒ’à 0À ´e€ Ÿ÷ ¨÷ ‚fƒøÿ×¢Ã׬R)÷ ˆ÷ bð�CƒàÅeÀÿõ�‚øÿ� w¨ý÷ `ÞÁ¼÷  ´ ñ•R)w:ü÷ Ð~Pkö»5×-ì»1æþÿ怟×Ú»÷ ÐÀÁöÿñ•R)Šþÿæ|0& & ÷ Vð‹Y'�÷ LŸÊ•ñ•R)Á À À `'p®'b'p®'`'Ö ·•@”‡…Þ ; HED5A: .ASCII /%@/ ; HED5: .ASCII / ERR CNT @/ ; HED6: .ASCII /%RANEX ERR @/ .PAGE ;MESSAGE TRAILERS ; MES1: .ASCII / DAR @/ ; MES1A: .ASCII / DAE @/ ; MES2: .ASCII / DCS @/ ; MES2A: .ASCII / HRD ERR@/ ; MES3: .ASCII / WRD CNT@/ ; MES4: .ASCII / WRD ADDR.@/ ; MES5: .ASCII / GD DATA @/ ; MES6: .ASCII / BD DATA @/ ; MES7: .ASCII /?@/ ; MES8: .ASCII '/@' ; MES10: .ASCII / WRD1 @/ ; MES10A: .ASCII / WRD2 @/ ; ÿ É~ÂìÿÀ.ˆD ZELIIAITINM TEYS SSCDIS RO*˜È~�@Š,,ˆ,Ä ,,,@v È~¨Ç~Ç2J)þà,Þ¤÷ ÷Ž„÷ ¼ÕÄ€÷ $ ·÷ "ñµ+,¥ ÷ . D÷d^÷ ’À­ 7L1-a,*¥¶†t²Ä÷ Þ ñµ÷ Ö ôµ>,P¥ôÕñÕ÷ ÔD÷ f–÷ ®’¯,v¥÷ �ÄtÄe Äe ô¥ú÷ v7ÚÔÄ4,œ¥ÔÂÔ<ˆ‚ÄÊÄe 7!Ò#ƒ×"ÿÿ÷Ì"Â,Â¥ô,ÃeôôHôÁ Æ,è¥÷ HÄ ÷ ØÚ7 j÷• Àt7=,¦^ ×-R@7 J7ŠìÿÀe 7 H/†œs,4¦œW Á èµ 0 0  Ãe,Z¦ÃEð ÷`7Òµ Ãúð0l¾áCm~ÈkÀÿÃÀð‹Y'€ Á B´e �� Á ÁE€ÿÂeõ€ éÎ AÄ æÍ•Aw¾Ÿ�ÁE€ÿAñ‹Ã)�Aœ•*ÁEÿC l~@lð ×e Ö A÷ hŸ“þÿw”üŸ�þÿ·Ÿ�þÿÇ÷ Þºw ²ÒÁкW  æþÿŸ÷ \Ê•Ÿ•þÿw „Ò‡�Žæþÿæ÷ <² —¢Ê•ð‹Y'�~¸l€wÿÀ ´eÃeäÿ3 ææþ÷ ­Ö ñ•R)Ö w¤úÊ•ð‹Y'èô�6 æþÿ@œ4*÷ þ € ÷ ôüð‹Y'Ä´eÄeäÿŸô ¶ Úô•ÿÿ›~0m Ÿ“þÿ&÷ È­Ö Á ŸD®'Êå2 � ñ•R)à &÷ L¸ æb'÷ B¸3b'·—¢… � C÷ â& fæ€ðŠÉewù2 ¥�Žæþÿ@œ4*â MES11: .ASCII /%UNIT NO.@/ ; MES12: .ASCII / @/ ; MES13: .ASCII / READ @/ ; TIMO: .ASCII /%CPU BKGRND TIMED OUT@/ ; OK: .ASCII /%OK!@/ ;CONVERSATION TEXT ; ; CON1: .ASCII /%DATA TEST ONLY? @/ ; CON2: .ASCII /%MULTI DK MODE?@/ ; CON3: .ASCII /%# OF DKS 1 TO 10 OCTAL?@/ ; CON4: .ASCII /%EX. DK?@/ ; CON5: .ASCII /%OPT WRD CNT? @/ ; CON6: .ASCII /%LENGTH (1 TO 1000)?@/ ; CON7: .ASCII /%WRD ADDR?@/ ; CON8: .ASCII /%OPT. DATA PAT. #?@/ ; CON9: .ASCII /%WRITE?@/ ; CON10: .ASCII0Ç~U‡´ÂÃeñq¡€ÿ¸Æ~ùÅE¹ÂÅœÀ ‡ ù Ãe„ ´Â3 *þà ôþw þ÷ ú^÷2þ÷ ¨Ä…>þ÷ žÄ …Þþ÷ ”Ã�œêþ÷ ‘Ã�œöþ÷ ŽÃ�œÿ÷ ŠÃ �œ@Æ~"Hü?wœÑ‹Oü?wœÑ‹Vü?wœÁ`Á C �œ.ÿ÷ ƒÃ �œjüfwÑ püfwÑ vüfwÑ |üfwA`Á Á �  €�œŽüwÑ ”üwÑ šüwÑ  üwÈÅ~lA`Á Á €ÿÁE�œ'ˆ¦fæ÷Ê ˆðþ÷ ìúª÷ˆêâù÷%èù· — Âeøù÷ „Âîù÷ ˆdæ ú7 öù÷• ú÷°ÿ÷ ‡³úÓ�%þä,€¦Æ0Â÷@@ æˆ ˆˆÀnÁÌ(,¦¦Âˆæjˆ a( ùˆæjˆ7Ê æjˆ±,̦7Ä ÷„& ÷  Àt7 Š÷• ×-zî,ò¦@7 r7ŠìÿÀe 7 pN†œÁ 'W é�,§æP&'ˆÃ^÷ Ò÷• Ú ¼÷•M;,>§Ì ÷B¶ ÷ ¨Ïæ÷&'ˆ÷Ø¢ ÷ ”Åæ%Z,d§&'ˆÃ4÷ ŠDÃ;÷ |B‚ A w`è,Чà ÄÜ ÃB÷ f÷ ^ ÷ P£7 à Ä€÷ õ,°§j÷^D ÷ 6÷„: æˆ&'ˆ÷ $Àe 7 ² 3,Ö§õ‡÷Xöæˆ ˆˆÀ€ ÀeÀ € ÀE€€ € ü,ü§€ € € € € À À À À À À À Àe7\ 7Z Jå÷ ZÝ~¨m € ÷ PüŸ„Ÿ“þÿðÄE€ÿ!Ê•w¶ùð‹Y'�Ê•Á D®'&÷ Z„w¬ûð‹Y'ì€ ðŠÉeèw Ñæ䆿ↀæ œR) �Ö ·І·ʆÝ~ nw ðÐŽ‡&W þÿöð•R)÷ Tÿ€°•R)æ÷ 6ûâ6 ðæþÿße€ìôÁe8f÷ º�DÁ ÷ rŸ—¢bô ÐÿÊåò ÊeŸ“n~˜nþÿÄÿ�ÃÿÁ ÄeÀÿwtøüEÄÿ4�Ãÿð‹Y'�À ´e€ f&Ÿ÷ Æ÷  Ÿ�þÿ…øÿµ-ò„�C…àt‘ÂÿÂò #À À Ÿ &÷ ð¶„&b'÷ Î~oš¶0b'Ê•ñ•R)Á 1®'Ÿ“þÿ� Ä2,”¨`pú÷Þ À &÷ ÜÂÒ —   zú',º¨Ð¸–ÐÄ÷ RÄ ÷ J÷ Ä9@BÀå ,à¨ÂåõÂEüÿ Ž`‡÷ V B”„ÄE€ÿC”Ãå[,©÷\ Ãmv Å^ !÷ 2 !ÀÄ |lH,©Ž&8Xl޲èß,@©Ž8Xlw€Ä÷ ÆÂ ÂeÂe ·  0,f©ñ†—¢øÂå·ø ‰÷ Ô ‰ÀåÑ 7ú Âú û,Œ©À R”ü7 è ÷ 6ÿøwJÿ÷Ò ÷¼,²©Ê wìþÄ÷ ZéR)G½~ˆoñ Ðÿ:ff÷ b¶ƒ×tüÿÅñ ñ`$Ñ Gƒ�À Ä Ÿô®'„ Ê‹� &b'÷ àµÞðb'±€ € 1�2 ô•R)Ê•w–÷ `'ðb'ð`'¼~pñÅf5f÷ äÍô•R)€ D�Ÿwvù± æþÿB�÷ ¨Å,fuf÷ ®ÍŸñ‹Ã)ñ•R)wBùñ•ýÿR)w&÷ ÅÜ•*œ×eÊCa‡�öÿ,~xpfÑQr úÿ�üÿröÿ�°ŠÉe‡�øÿC DEr úÿ�üÿrøÿðŠÉe‡É•…ÊÅÊÕEõ•R)Å f®'÷ nƒ5 ®'… ‡Á f®'÷ Z„�ÿ~ðpÀ  ÝÂÿl´e� € ‡à ´e …… r Ê Âeõ ‡¦÷ Ê´÷  ´¶÷²ƒ®ƒ÷倨ƒ‡¦òÀüÁþH ÀåÁåê ~èiÃE€ÿÂeõ‚øÿÊ‹€ Ñ  äw~ýŸƒÙÃE€ÿÕŸƒ’Òƒ÷ <÷ ø÷€ ø÷ ø÷ ø �÷‹ü÷€Ÿ“þÿð‹Y'Ò�Øw„üÁ B´e÷ 8�„~`j„ôÿ‚øÿ—¢ôÊÕ&÷ 4»„Ÿ“þÿÁ wœüò%äÿ¦Îeäÿ÷ l°Ö ò‹ÿÿ³¦ôÿ÷ »·Š÷÷Uˆ÷÷ º÷2Šÿÿ2 ôÿwúþæ—þÿÁz¼÷ 4 ð‹Ée�~Øj3ƒ’à 0À ´e€ Ÿ÷ ¨÷ ‚fƒøÿ×¢Ã׬R)÷ ˆ÷ bð�CƒàÅeÀÿõ�‚øÿ� w¨ý÷ `ÞÁ¼÷  ´ ñ•R)w:ü÷ Ð~Pkö»5×-ì»1æþÿ怟×Ú»÷ ÐÀÁöÿñ•R)Šþÿæ|0& & ÷ Vð‹Y'�÷ LŸÊ•ñ•R)Á À À `'p®'b'p®'`'Ö ·•@”‡…ÿÿ÷ß ü· ñpÃ~ºƒ Âe- €ÿÄE„œ3¨üÀ Ê ƒ`xÄÂ($ü÷ *ü ÷%ˆdæJü7 Düw8ü·�€ÿÂEBœÞÀÁDèüÀÂ÷ ðü7 öü· 9€ ý7 .ˆˆý7R øÂ~øROERD EA RRYTOECIR DSCDI ADREY ORCTREDIT ENEMELE IL FCHAT-BORRR ESCDI-0 1000 0 6 4605 0 597::123 72N-JA2- 0 €Â~B EEFR CTJEOB E.AM.N H THNGLE ORCTSE METI E AT D USATST PETY E AM N IT ARST Â~¨ EDATRE C NTMELE E > X XX X X X X XXXX XX XXXX X þìDDm÷ †ÀåDQ$÷ à,Ø©¨÷ tÀåw¼þ÷ Ö Dd÷ `Àåõ÷ Äã,þ©DQ$÷ |Dá÷å @ ÷ @ÀååD÷ dQ$Dd÷ Ê,$ª,ÀåÛ÷ �D÷ JQ$DdDá÷å ÷ Àåû,JªÊDQ$÷ 37 Àå7 ê W-· .,pªÞ DDdÄmÞ 7Ø 7 þ Àå¬É¥©É¥¦˜,–ªDD]é÷F´ å ÷ ¤÷e´ Ä´ ÷ –”,¼ª’Ä÷ VÄ÷ N÷@|÷•m÷ ŽÀv –,⪀ Àe=ŠÀ€ &Ä÷<T7ŠI÷ jÀ¬ÁË,«Ð Ãe@ —r@°L~·Š!÷ BÁ,ñ,.«W p;W 8Â�— 2ò‹Y§÷ +ÀÂ,T«ÀíÜ€ À5Ž Â ƒíø‡î~hq�‚„‡ˆ �‹À�Ž                 !"£$¥¦'(©ª+¬-.¯0±²3´56·¸9:»<½¾?ÀABÃDÅÆGHÉÊKÌMNÏPÑÒSÔUVרYZÛ\ÝÞ_'ABÃDÅÆGHÉÊKÌMNÏPÑÒSÔUVת~àqØYZ      12345678 &=':>@9 0/STUVWXY _,(%\"Z -JKLMNOPQ $*];^R ! �~Xr +ABCDEFGH .)[<#I ? "~Ðr fæü�—-ªU÷µ@N´æF´÷ ¦²�±8·D´ö,´·Ì��‡6 ùö5À÷ $´¦îCm~ÈkÀÿÃÀð‹Y'€ Á B´e �� Á ÁE€ÿÂeõ€ éÎ AÄ æÍ•Aw¾Ÿ�ÁE€ÿAñ‹Ã)�Aœ•*ÁEÿC l~@lð ×e Ö A÷ hŸ“þÿw”üŸ�þÿ·Ÿ�þÿÇ÷ Þºw ²ÒÁкW  æþÿŸ÷ \Ê•Ÿ•þÿw „Ò‡�Žæþÿæ÷ <² —¢Ê•ð‹Y'�~¸l€wÿÀ ´eÃeäÿ3 ææþ÷ ­Ö ñ•R)Ö w¤úÊ•ð‹Y'èô�6 æþÿ@œ4*÷ þ € ÷ ôüð‹Y'Ä´eÄeäÿŸô ¶ Úô•ÿÿ›~0m Ÿ“þÿ&÷ È­Ö Á ŸD®'Êå2 � ñ•R)à &÷ L¸ æb'÷ B¸3b'·—¢… � C÷ â& fæ€ðŠÉewù2 ¥�Žæþÿ@œ4* XX X XX X�Á~ëX XXXX XX XXXXF  ************************************************************************IN Y/ N Y/ Á~NENO0= THNGLE CEVIDE PETY ORCTSE >D IF R.DIE OR CT ECOTPR VESACK LEFIL CAGILO LEFI T ARSTD ILE À~‰FIHD TELEDE E ITWR ADRE EEFRECVDNOCTPOSEUGLAJUUNYJMAPRRAMAEBNFJA TADAM SYR FOM SYM ASIC(À~¥OLMBSY ADLO CTJEOBþðÄ ÅÃE€ƒ#Å �Î�,z«ÅW!W!ô w°ÅÔÅE€ÿW! „ „ t, «„ „ „ „ „ ÷ n÷�´Œ7Šæxˆ*ˆˆÃ�tQ,Æ«Ã% èæxˆ)ˆˆ÷‹^ãw ÄÀN ÂR‘,ì«7ŠW7Z÷J÷ nwL·>·Š=÷ ^¤7 Ó,¬Vëww ”‚ ±�4ª1ŠR©1ŠÃ©±••ªÁ À÷‹Ä,8¬€ÀüÀU€1p¨1 ®§� _ ¬§_¬§æŒ§ˆ ,^¬>ˆˆÀøÁÊæj!ˆ7 ¾w¶w´Q$À ôw€,„¬÷,€(€(€(€ € € € €,€,€,€&æA,ª¬¦f&MÖ €�‚ƒ„…Ä– ÄeÄÞ,ЬÄm„Äm�‡×-ª:‚‡Ä÷ 0&Àt7 €¢,ö¬‡€Îe‡ð¥Àe òñF €    &Õ~Hs† ÀîÿÎUðÎEæþ³æ0{^Àˆs”vÿß‹tÿý€ùß‹tÿý€€Ÿxÿþ BPT ERROR }}}Xˆ~ÀsØØH<„TÔ^À–<<<<<<<<<%÷ä‹¢ÿ÷î‹Ü‹æ·”ÿ÷•ÿÿÁ 7Š» w÷'~8tÄ‹‚ÿ·|ÿw 7¶Æ®sÄø~Ãw è÷•Š 7šw (w zÄ�PÿŒŒŒ7‘„‹7Šo ÷•ÿÿk ÷à„‹÷0{|‹×!”t÷Jwì÷‹F TÆÿ& ÷ ~°tÿæ|‹æv‹÷•@°Šà D÷‹) A „ &DCƒcà ÷ w \w ø„·Š w   '  7Šõ ÄÞ „ ‚ ¦&w à„‚À•\ò÷ ZÝ~¨m € ÷ PüŸ„Ÿ“þÿðÄE€ÿ!Ê•w¶ùð‹Y'�Ê•Á D®'&÷ Z„w¬ûð‹Y'ì€ ðŠÉeèw Ñæ䆿ↀæ œR) �Ö ·І·ʆÝ~ nw ðÐŽ‡&W þÿöð•R)÷ Tÿ€°•R)æ÷ 6ûâ6 ðæþÿße€ìôÁe8f÷ º�DÁ ÷ rŸ—¢bô ÐÿÊåò ÊeŸ“n~˜nþÿÄÿ�ÃÿÁ ÄeÀÿwtøüEÄÿ4�Ãÿð‹Y'�À ´e€ f&Ÿ÷ Æ÷  Ÿ�þÿ…øÿµ-ò„�C…àt‘ÂÿÂò #À À Ÿ &÷ ð¶„&b'÷ Î~oš¶0b'Ê•ñ•R)Á 1®'Ÿ“þÿ� Ä7Š% 7� Àä~Áô~÷ tÄþÂwð7Š   wèw (‚b‚ ‚ ·Øwúw ‚øw ~v�A�Á � � B`ï÷ œ÷%®Âª…Ö w|÷‹±û 7Š¡wr÷•ÿÿ—wh·Š” ÄEøÿÄ 7Ìs–wh÷‹} ÄEøÿÄ Ã tÌsPà .~�võôÿÿÌsIw HÛ×-:ÉÂ% w ¼ ÿÿÀ=w @ÀÁ78Ä íÌsÀ=w "À&Àe0w À,w Â%ÀöR)G½~ˆoñ Ðÿ:ff÷ b¶ƒ×tüÿÅñ ñ`$Ñ Gƒ�À Ä Ÿô®'„ Ê‹� &b'÷ àµÞðb'±€ € 1�2 ô•R)Ê•w–÷ `'ðb'ð`'¼~pñÅf5f÷ äÍô•R)€ D�Ÿwvù± æþÿB�÷ ¨Å,fuf÷ ®ÍŸñ‹Ã)ñ•R)wBùñ•ýÿR)w&÷ ÅÜ•*œ×eÊCa‡�öÿ,~xpfÑQr úÿ�üÿröÿ�°ŠÉe‡�øÿC DEr úÿ�üÿrøÿðŠÉe‡É•…ÊÅÊÕEõ•R)Å f®'÷ nƒ5 ®'… ‡Á f®'÷ Z„�ÿ~ðpÀ  ÝÂÿl´e� € ‡à ´e …… r Ê Âeõ ‡¦÷ Ê´÷  ´¶÷²ƒ®ƒ÷倨ƒ‡¦òÀüÁþH ÀåÁåн~lX½~åà¼~]h¼~Öþøˆˆ÷ (>ì,¾®· š÷倌ÀˆÁ à÷ª–Á 7râí,ä®?¤ˆõ· ‚÷5|ò”Ћ#BÁåwJ”Y, ¯Â`Á ü‚Š7<@À5Ã.0”þÿà ü@À j,0¯ÅÎe‡Ä÷ ÚÄ÷ ÒÄ÷ Ê‘ º,V¯�Ä‘‡ÄýÄ€÷ ²‡æDˆˆˆ÷ ’1,|¯‡Ä÷ –÷møÌæÈÄð„#‡Ãe€ƒ#!‡™,¢¯÷•Ÿ÷ Àÿƒƒ ÃE€ƒ ƒ ƒ ƒ ƒ ƒ ÄÃmn÷,ȯ„7Šy÷ šÿÄ Ä Ä Ä Ä Ä Ä 7 ƒáÃe’÷,‡æ0ˆˆˆ‡Â#‘ËÅøËÕ0„ ÄE€„ æ,°„  ô‡w †üÂÂ÷ Öÿ÷r¢æˆ ˆ¡:°ˆw rü€‡wüßȰùê@w ¨k÷‹ëÔ~wĺüÂeÀ=÷Àw Þ@w ‚wœüw’·ŠÒw¢À=w À w & ÿÿÀŽw TAÀe0w  À,w ˜ær÷lÀpw 0·`-p~€wÀ ÷X\7ìÌsV€ â÷D÷‹U À$üÄüÃüw ÷&ðÀ?w >7 w 7Š%7Š 7Š0    w *À%0 ‚À%7‡ÀEøÿÄ Ä Ä x~øw`‚ ð 1 � W Ö†ø÷‹ò ÷‹ÖÄmâ7ŠàÁ y,xdxrx|xÐxRuzzàxúuÜx6yZvªyöyòyHyèz vv>vrvw0w”w²w8w|uÂt tƒ·Š‡7Š‚“~px´÷fD ÷\ 7X7R÷%JÄF„ î‡À>ÀŸ8w þ÷%,‹À•=w DÀŸ w <À• w 4wúþ÷ òwêþúø‡î~hq�‚„‡ˆ �‹À�Ž                 !"£$¥¦'(©ª+¬-.¯0±²3´56·¸9:»<½¾?ÀABÃDÅÆGHÉÊKÌMNÏPÑÒSÔUVרYZÛ\ÝÞ_'ABÃDÅÆGHÉÊKÌMNÏPÑÒSÔUVת~àqØYZ      12345678 &=':>@9 0/STUVWXY _,(%\"Z -JKLMNOPQ $*];^R ! �~Xr +ABCDEFGH .)[<#I ? "~Ðr fæü�—-ªU÷µ@N´æF´÷ ¦²�±8·D´ö,´·Ì��‡6 ùö5À÷ $´¦ð»~Nx»~Æ»~?ˆº~· þülܰ’³ð°A±„™,± R>±îR²€_`³@�,î³ ROSLOD IIA # ROSLOD PASS #1 ",´END  ROSLOD PASS #2 BEGIN ERRÐ:´OR # ñ,D´P **** ROSLOD LOAD MAP **** **** LO[j´AD ELEMENT [Ÿ,v´LODTMP] **** / / : Cz,œ´********** ELEMENT TITLE: [] SEC2#´TION ENTRY OFFSET SIZE TOýwÞþ·Š ÷ úù÷ ‘~èxÜ÷‹ý÷îê7Šñ÷màà÷ÜÜw ÖæÐ÷ÊÀÈw Ø·¾Ö%À/w Ò¯À\ú÷ ¤Ô÷ †÷íššÜÀ<Ä Ã … L‡Å ÄeÜs W~`y !êsB†Ô ù!ês=‚L® !6‚4Üs4 îs¤ À<!ž‚4Üsôt4 îsÔ ô÷%.À w Fà ÅíÅ Å @w Þ@€ ‡À%€ÿ †~ØyÀ%÷ üw Ä· ôwÜýwÈý�  à ù÷ܾùĸùD · ¶ù¼‚€Á &C@AƒEPA&f¦æw ®€w ¼À/w À€w dƒ‚�„w µ~PzúÒ Û åƒ`ƒ ƒ Å ßÀEÿ�¯À € € €` Õ÷‹u·÷‹e à ±÷•]… ¬‡Å w ù÷•à\…w Ä7ŠD÷Uù÷‹9þF €    &Õ~Hs† ÀîÿÎUðÎEæþ³æ0{^Àˆs”vÿß‹tÿý€ùß‹tÿý€€Ÿxÿþ BPT ERROR }} }X”~ÀsØØH<„TÔ^À–HXd\<<<<<<<<%÷ä‹¢ÿ÷î‹Ü‹æ·”ÿ÷•ÿÿÁ 7Š» w÷¸~8tÄ‹‚ÿ·|ÿw 7¶Æ®sÄø~Ãw è÷•Š 7šw (w zÄ�PÿŒŒŒ7‘„‹7Šo ÷•ÿÿk ÷à„‹÷0{|‹×!”t÷Jwì÷‹F TÆÿ& ÷ ~°tÿæ|‹æv‹÷•@°Šà D÷‹) A „ &DCƒcà ÷ w \w ø„·Š w   '  7Šõ ÄÞ „ ‚ ¦&w à„‚À•\º~0˜¹~¨ ¹~!¨¸~™ þTALç,à´<> k,µ "********** ,,µ UNRESOLVED REFERENCES Å,Rµ ¯ `£xµº*¶Œƒ,À¾ ú2!¿ æ¾G¿&&d¿v@ú,ÀOBJECT LOAD SYMBOLIC,*ÀASM SYM FOR SYM DATA JANFEBMARAPRMA,PÀYJUNJULAUGSEPOCTNOVDECFREE READ êvÀWRITE DELETED ÷Eùw v7X÷‹!z~Èz7Їæêøæäø æàøÎE·…÷‹À�ýÀ‹ w¼üà pîs÷•àò„w Z×­ÛÇ÷‹ÑÄ÷•àÚ„·ŠÆ÷U�øÈ·ˆø·†ø÷•±7I~@{¼÷‹¨¯w D÷‹pø€Å�høÅ�dø¯ŒŒŒŒÅEw‘�„ÅJø÷‹w�å w>øÄt!ÜsÄ Ä úw ¼w JÄÃw ž@÷eø%Ä•tÜs7‘¡~¸{5ô îs¨ôîsw „ÀBw .À�Àe`€ w À;w ÷ðÄ�ýÜsw úwÄû·â·´÷ƺsf&æ¦fæÌæ €Ö ·Â�‚ƒ„…ÆŠ÷y~0|æ°€Ä4ÜstüøÜsÄ Ä ÷…÷�ƒœ÷�ƒ—7Šƒ7Šƒ÷‹ƒý€…w r÷‹ƒý€÷5ö‚÷‹ð‚ý€÷�jè‚÷�eæ‚…÷‹Yw àwXw äî~(uw �Ä øfw ¦÷•ž €w ®7Š­ wtwhw ¶Ä+  Ä%;û‚ÀEøÿÄ Äe®s‚ whÄå$÷À` Áô~÷  À=w p·Šc À�\ w dÀ�U Ÿ~ uw \À�N w TÀ w Lw T  7�2 w F7�+ w >7Š% 7� Àä~Áô~÷ tÄþÂwð7Š   wèw (‚b‚ ‚ ·Øwúw ‚øw ~v�A�Á � � B`ï÷ œ÷%®Âª…Ö w|÷‹±û 7Š¡wr÷•ÿÿ—wh·Š” ÄEøÿÄ 7Ìs–wh÷‹} ÄEøÿÄ Ã tÌsPà .~�võôÿÿÌsIw HÛ×-:ÉÂ% w ¼ ÿÿÀ=w @ÀÁ78Ä íÌsÀ=w "À&Àe0w À,w Â%À0¸~¸·~Š@·~ȶ~{þ±,ˆÀHFILE ID START a,®ÀFILE LOGICAL FILE CKSAVE PROTEC@,ÔÀT CORE DIR. IFD > SECTOR ç,úÀTYPE DEVICE LENGTH 0=NONE Y/N R, Á Y/N I**************************,FÁ**************************************�lÁ******** f vÁ k,~ÁFXXXXX XXXXXX XXX XXX XXX®,¤ÁXXX XXXXXX X X XXXX ·,ÊÁ > ELEMENT ,ðÁ CREATED START I ¦, NAME   <tÜs„ „ !øf~¨|…ÃÄþÿ÷%&Ãå„ À&Äe N @ Ä üÀe0w &à óÀ• Ö ÁÌsÀÿÿ …÷‹p‚ý€7�l‚…÷‹`‚ý€À�\‚ÀE€ÿÀ¥'~ }÷‹Ó  w Ðÿí÷‹ÁÀ¥ ç…Ä ã‡•w ¶ÿú×­"‚• À•^w ¤ÿÀ•Uw œÿÆ®swVú… ÷ÿÿn÷ÿÿj  ‚7,ÌsX‚ÁRìÌsÁ-P‚ ~˜}Ð ðÀD…w@€ 78À ô÷%(!ùƒ… �„ ú ÷%‚??‘‡Ã ÃÄ w Nÿ…÷%Ðõw ªþ…÷Ú7þ7Ðþ~~w ZÿÀ Àe0w àþÀ,w Øþæ²÷¬À°w pþ· ÷ÆœÀÂ…À¼÷¶ŒÓÄýÿ C”Ã¥ Ã¥$ × A‡Ãåê@w ¨k÷‹ëÔ~wĺüÂeÀ=÷Àw Þ@w ‚wœüw’·ŠÒw¢À=w À w & ÿÿÀŽw TAÀe0w  À,w ˜ær÷lÀpw 0·`-p~€wÀ ÷X\7ìÌsV€ â÷D÷‹U À$üÄüÃüw ÷&ðÀ?w >7 w 7Š%7Š 7Š0    w *À%0 ‚À%7‡ÀEøÿÄ Ä Ä x~øw`‚ ð 1 � W Ö†ø÷‹ò ÷‹ÖÄmâ7ŠàÁ y,xdxrx|xÐxRuzzàxúuÜx6yZvªyöyòyHyèz vv>vrvw0w”w²w8w|uÂt tƒ·Š‡7Š‚“~px´÷fD ÷\ 7X7R÷%JÄF„ î‡À>ÀŸ8w þ÷%,‹À•=w DÀŸ w <À• w 4wúþ÷ òwêþP¶~hŒØµ~C ` ¯`µ~/S CEENEREF REDLVSOREUN **********"  >è´~U<LTATOE IZ SETFSOFY TREN ONTIEC S][: LEIT TNTMELE E**********C : þTYPE STATUS DATE '< TIME SECTOR LENGTH ,^ÂH .NAME. OBJECT FREE 0Å,„Â2-JAN-72 23:17:59 005466 000100 �,ªÂ-DISC ERROR-BATCH FILE ELEMENT DIRE0ÐÂCTORY READ ‚,ÜÂDISC DIRECTORY READ ERROR 7ýˆ.ˆ�,Ã7 ý€ 9· öü7 ðü÷ ÂÀèüDÁÞÀBœÂE÷,(Àÿ·�8üwDü7 Jüædˆ÷% *ü÷ $ü(„�,NÃÃxƒ`Ê À¨ü3„œÄE€ÿ -Âe ƒ ñ· l,tà üß÷ÿÿ†üwÞ÷ ~üÁe W"È÷ püðˆì,šÃ÷Üôü÷ øöœ"ÎÅEàÿw‘´ûÅ  DÝÈ»„ 7¶ûq,ÀÃwnÿ  ÃåÃå Ãå    ¦N~ˆ~  ‚eÂ`„ ä�‡ÅýÿÂØ~ ‡€âƒ ûË× Ãe ÃeÃe Ãe Ñ�Ò … è€Ð ‡@(¾¾2ÿ@€ ROSODm~TBErr *;/\ $G._<^,OWEBP@>SRC-FI!XASPMCFRB @€ þ€Å~xŠ~ð wÞþ·Š ÷ úù÷ ‘~èxÜ÷‹ý÷îê7Šñ÷màà÷ÜÜw ÖæÐ÷ÊÀÈw Ø·¾Ö%À/w Ò¯À\ú÷ ¤Ô÷ †÷íššÜÀ<Ä Ã … L‡Å ÄeÜs W~`y !êsB†Ô ù!ês=‚L® !6‚4Üs4 îs¤ À<!ž‚4Üsôt4 îsÔ ô÷%.À w Fà ÅíÅ Å @w Þ@€ ‡À%€ÿ †~ØyÀ%÷ üw Ä· ôwÜýwÈý�  à ù÷ܾùĸùD · ¶ù¼‚€Á &C@AƒEPA&f¦æw ®€w ¼À/w À€w dƒ‚�„w µ~PzúÒ Û åƒ`ƒ ƒ Å ßÀEÿ�¯À € € €` Õ÷‹u·÷‹e à ±÷•]… ¬‡Å w ù÷•à\…w Ä7ŠD÷Uù÷‹9 / / ****] MPDTLO [NTMEp´~)LE EADLO* ** *****P MAD OA LODSLRO* ** *P #ORRR E N GIBE2 #SSPAD LOOS RD EN1 #SSPAD LOOS R #IA ID ø³~¤LOOS R€³~}@³~?ýý ÷•Nêý÷•Nìý÷• íý÷• èý÷• ãý÷• ‰,æÃÞý…ĆÀ÷ È…ÄŽ÷ ¸…œ!€f&}, Äæ¦f&€·œìû÷E€ÿæûÁ÷ lÄÆÀj,2Ä÷ †÷•Y~ý€�‚ƒ„…ÅE€ÿÄ“À÷ —,XÄd…œ€÷•YNýÅE€ÿÄ›À÷ H…Ħ3,~Ä÷ 8…Ä®÷ ,÷~ü÷ wÎþ戈÷ ,¤Ädû÷ Xû�÷ (÷ \‡À„ d‘ÌÅøÌÕ0c,ÊÄ… ÅE€… … À ô‡÷8*û÷È®û÷ ²ÿ÷š¤ûÞ,ðÄ÷ ¨ÿ÷æšû÷ žÿ÷(�û÷ ”ÿ÷v†û÷ Šÿ‡÷Þ,Å8ðú÷Ètû÷ xÿ÷Îjû÷ nÿ÷`û÷ dÿ÷(Y,<ÅVû÷ Zÿ÷vLû÷ Pÿ‡fæ ˆÓ�¶úÓ�³ú‡÷ ¯,bŰÿ÷ ú ~h€÷"÷ BÄÁÁEàÿ„ 7*7ZÀ8&9ˆð w®êh Àl&¾~à€9ˆð wxêh »À¤&9ˆð wBh Àà&9ˆW üð Ç~X�wh À&9ˆð wÐh€ ÀP&9ˆW üð w” ~Ð�h€ À„&9ˆð w`h ÀÀ÷Eùw v7X÷‹!z~Èz7Їæêøæäø æàøÎE·…÷‹À�ýÀ‹ w¼üà pîs÷•àò„w Z×­ÛÇ÷‹ÑÄ÷•àÚ„·ŠÆ÷U�øÈ·ˆø·†ø÷•±7I~@{¼÷‹¨¯w D÷‹pø€Å�høÅ�dø¯ŒŒŒŒÅEw‘�„ÅJø÷‹w�å w>øÄt!ÜsÄ Ä úw ¼w JÄÃw ž@÷eø%Ä•tÜs7‘¡~¸{5ô îs¨ôîsw „ÀBw .À�Àe`€ w À;w ÷ðÄ�ýÜsw úwÄû·â·´÷ƺsf&æ¦fæÌæ €Ö ·Â�‚ƒ„…ÆŠ÷y~0|æ°€Ä4ÜstüøÜsÄ Ä ÷…÷�ƒœ÷�ƒ—7Šƒ7Šƒ÷‹ƒý€…w r÷‹ƒý€÷5ö‚÷‹ð‚ý€÷�jè‚÷�eæ‚…÷‹Y�²~/€²~0 ±~Ÿ(±~  „’ùý÷•öù7 úædˆ÷ îù„÷ øùÜ,ˆÅÂe—  · èù÷%âùêˆ÷ªìú÷ ðþˆ2,®ÅÊ ÷æf¦'ˆ�œÁE€ÿÁ Á A`w üÑ w",ÔÅšüÑ w”üÑ wŽü�œ€ � Á Á A`wf,úÅ|üÑ wfvüÑ wfpüÑ wfjü�œ Ã÷ .ÿ$, Æ�œ CÁ Á`wœ?VüÑ‹wœ?OüÑ‹wœ?Hü�œ Ãô,FÆŠ÷ ÿ�œÃŽ÷ öþ�œÃ‘÷ êþ�œÃ”­,lÆ÷ Þþ… Äž÷ >þ…Ĩ÷ 2þ÷^ú÷ þŠ,’Æwôþ Ã*þ3 ´Â„ Ãe ù ‡À Åœ¹ÂÅE(¸Æ€ÿq¡ñÃe´Â‡¿,€ÇJ2ɦÇ~,$Èv@,,,Ä ,&9ˆW üð w$'~H‚h€ Àü&9ˆW üð wèhþÿ À0&9ˆð w´h?~À‚€ Àd&9ˆð w€h€ À˜&9ˆð wLh.~8ƒ ÀÔ&9ˆW üð wh€ À&9ˆW üð wÔh)~°ƒ ÀD&9ˆð w h€ Àx&9ˆð wlh  <tÜs„ „ !øf~¨|…ÃÄþÿ÷%&Ãå„ À&Äe N @ Ä üÀe0w &à óÀ• Ö ÁÌsÀÿÿ …÷‹p‚ý€7�l‚…÷‹`‚ý€À�\‚ÀE€ÿÀ¥'~ }÷‹Ó  w Ðÿí÷‹ÁÀ¥ ç…Ä ã‡•w ¶ÿú×­"‚• À•^w ¤ÿÀ•Uw œÿÆ®swVú… ÷ÿÿn÷ÿÿj  ‚7,ÌsX‚ÁRìÌsÁ-P‚ ~˜}Ð ðÀD…w@€ 78À ô÷%(!ùƒ… �„ ú ÷%‚??‘‡Ã ÃÄ w Nÿ…÷%Ðõw ªþ…÷Ú7þ7Ðþ~~w ZÿÀ Àe0w àþÀ,w Øþæ²÷¬À°w pþ· ÷ÆœÀÂ…À¼÷¶ŒÓÄýÿ C”Ã¥ Ã¥$ × A‡Ãå°°~äüw‡€rüw ˆ ˆ8°~,ˆæ¢r÷Öÿ÷ ‚Æüw ‡ô „ „ €ÄE„ 0ËÕøËÅ#‘‡ˆˆˆ0懖÷’Ãeრ7Ä Ä Ä Ä Ä Ä Ä šÿ÷ y7Š„÷nÃmÄÀ¯~ƒ ƒ ƒ ƒ ƒ ƒ €ÃEƒ ƒÀÿ÷ Ÿ÷•!‡ƒ#€Ãe‡„#ðÄÈæÌø÷m–÷ ć’÷ ˆˆˆD懲÷ €Äýć‘Ä� ‘Ê÷ ÄÒH¯~]÷ ÄÚ÷ ćÎeÅÀ @üà þÿ0”.ÃÀ5@<7‚ŠüÁ Â`”JwÁåB#Ћ”õýˆ,,¹JÈ×&8ÈŠ@ ,ØÈ*ROS DISC SYSTEM �,þÈINITIALIZED .ˆÀìÿ Âÿ p˜ÍpÀͰ¬Íf$$ÉlxÀelxòߘ̈́Íß˜Í¬Íæ‡(BÉhÍ>ˆß%hÍüÀÁ  ´ÂüæÎ>ˆß%},dÉÎüÀ€ÿ0 Àeû BÈ»"�ÂEÿð— wœ�,ŠÉÈ»¼þ· ¸þ� w�¢þ7 ¸þæx/ˆ÷%�þü· ¦þ÷%M$°É Œþó� _ Ä»Á Û� øæ ˆˆåÐÉÿÿ`Ø þÿ À´&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 TE·~�…ST THE MAGNETIC TAPE 62CœSECOND LINE OF THE WRITE, REWIND, AND READ TEST 62 CHARACTER ÃåÃå Ãå    ¦N~ˆ~  ‚eÂ`„ ä�‡ÅýÿÂØ~ ‡€âƒ ûË× Ãe ÃeÃe Ãe Ñ�Ò … è€Ð ‡@(ììØÿ@€ ROSOD®~TBEìì *;/\ $G._<^,OWEBP@>SRC-FI!XASPMCFRB @€ þ€—~xŠ~ðÂe ÂÆ÷ Ä€wlX8Žè²ŽlX8&0©~èŽl|Ä À!2 ÷ !^ Åv Ãm\ ÷ÃåC”€ÿÄE„B”V ÷‡Ž` üÿÂEõÂåÀåB@9Ä÷ J÷ ÄR÷ ÄЖ¸Ðú¸¨~Àz — Ò ÂÜ÷ &À Þ ÷úp`>÷ ]Ö÷ î ²÷â Ê÷æ â ÷ wö w`à7ÊÀ.Æ÷ ˆjæÙ÷•&ˆnæ¶æ €÷B ˜@¨~é÷ ÷ ÷* 7 V 7 ( 7 ÀåZ 7\ 7ÀeÀ À À À À À À € € € € € € € €ÀE€ À Àe€ Àˆ ˆˆæöX÷õ‡² 7 Àe$÷ 'ˆÈ§~»&ˆæ: „÷6÷ D ^÷j÷ €Äà 7 £P÷ ^ ÷f÷ BÃÜ Äà w`A ‚ B|÷ .þò|÷5‚· õˆ?¤âr7Á –ª÷àЮ~j ÁˆÀŒ€÷åš· >(÷ ˆˆˆæóÈ÷ ‡ °×-Ъ÷OÌÿ÷ ‡ÎeÆ ÷Þ÷eò· ö7ä7ôÀè7 ü÷ ‡& ÷åVþw X®~öøý B†<7 � @` Áhþw ï!!!!!‡\ ÷eP ÷e€� ‚ ÁevÀf&Õf ÷e‚n7!ðƒ2-ô‡‚ #­ †’7!à­~¬ Äe–ÄÐþw J÷ ćêþw ÿ÷ ””””R÷ ÂÄøþw ‡€4ÿ÷ æ ÷eôÀ&‡!šÿ÷ ‡Îeûô¥‡®ÿ÷ ã Àeh­~°‡Îe€î7ßÿÀE ð¥0-#‡€‡P7 :ÀtÀ]&‡€÷ñýS.INPUT BUFFERT~†ó~€†{~ø†~p‡ ~h€÷"÷ BÄÁÁEàÿ„ 7*7ZÀ8&9ˆð w®êh Àl&¾~à€9ˆð wxêh »À¤&9ˆð wBh Àà&9ˆW üð Ç~X�wh À&9ˆð wÐh€ ÀP&9ˆW üð w” ~Ð�h€ À„&9ˆð w`h ÀÀ;ÃDŠ÷ 4Ã'ˆ&%æÅ”÷ ¢ Ø÷'ˆ&P§~{÷æÏ¨÷ ¶ B÷Ì M÷•¼Ú ÷•Ò÷ ^Ã'ˆ&PæéW 'Á œN†p7 Àeìÿ7Šr7 @z×- ÷•Š7 tÀ ئ~8÷ & „÷Ä 7ˆjæÊ 7ˆjæˆù a( ˆjæˆÂÌÁnÀˆ ˆˆæ@ @÷Â0Æ0lðúà  µÒ7÷` `¦~>ðÃEÃe 0 0  µèÁ W œœ/†H7 Àeìÿ7ŠJ7 @R×- ^7tÀ ÷•j7 ÚØ÷  ÄH÷ è¥~( ÁôHôôÃeô,Ì"÷ÿÿ×"ƒ#Ò7! ÄeÊÄ‚<ˆÔíý0-û#ò Àeð¥‡Îe€‡€7 tð¬~À&0÷ ć‚:ª×-‡�Äm„ÄmÄÄe –Ä…„ƒ‚�€Ö M&f¦æ&,€,€,€ € € € €(€(€(€,€÷wôÀ Q$´wx¬~ÿ¶w¾7 !ˆjæÊÁøÀˆ>ˆˆŒ§æ¬§_¬§_ � ®§1 p¨1€ÀUüÀ€÷‹ÀÁ •ª±•é1ŠR©1Š4ª±�‚ ”w wëV7 ¤^÷ =·Š>·L¬~ñwn÷ J÷Z7W7ŠR NÀÄw ã^÷‹ˆ)ˆˆxæè Ã%tÃ�ˆ*ˆˆxæŠ7Œ´÷�n÷ „ „ „ „ „ „ „ W!€ÿÅEÔŰw ˆ«~3ôW!W!ÅÎ�Å ƒ#€ÃEÅÄ ƒÂ Ž À5€ ÜÀíÀ+÷ Y§ò‹2 — Â�ìý@€  à~臀ƒ~`ˆ™~؈÷"÷ BÄÁÁEàÿ„ 7*7ZÀ8&9ˆð w®êh^~P‰ Àl&9ˆð wxêh »À¤&9ˆð wB&9ˆW üð w$'~H‚h€ Àü&9ˆW üð wèhþÿ À0&9ˆð w´h?~À‚€ Àd&9ˆð w€h€ À˜&9ˆð wLh.~8ƒ ÀÔ&9ˆW üð wh€ À&9ˆW üð wÔh)~°ƒ ÀD&9ˆð w h€ Àx&9ˆð wlhÂÔÄÔÚ7v÷ úô¥ Äe ÄetÄ�÷ ’®p¥~Ú÷ –f÷ DÔ÷ ñÕôÕôµ Ö÷ ñµÞ ÷ IJt¶†1-L7 ­À’÷ ^d÷D. ÷ ñµ"÷ ·ø¤~\$ ÷ €ÄÕ¼÷ „Ž÷ ÷ žwB ÷ ÄJ ÷ ÄR ÷ Ä~ÚÚ:øz DÀe— œçÅåP)ð‹È È· òð"ó€¤~”È È Þ÷ 3( ÷ 6ø ÷ t÷t÷÷Ê÷Ì ÷ Äïð Ðò Ðî ÷ ˆjæþ 7 7Á 7 <w� � � ÎÁåÊÀäQ$CT¤~\C&ˆfjæõ’÷‚o× ,¢ € ã ã ãpÈ^ÂÊÁsÀˆ ˆéý8W ;pW ,ÁB÷ !·ŠL~°@—r @Ãe«~÷ Ð Á¬Àj÷ I7ŠT<÷Ä&€ ÀŠ=Àe€ v ÀŽ÷ m÷•|@÷N÷ ÄV÷ Ä’–÷ ´ Ä´ ÷e¤÷  å´ F÷éD]D˜ª~¦É¥©É¥¬Àåþ 7 Ø 7Þ ÄmDdDÞ · W-ê 7 Àå 73÷ Q$DÊÀå ÷ ÷åDáDdQ$J÷ D�÷ ÛÀå,÷ Dd ª~tQ$d÷ DåÀå@÷ @ ÷åDá|÷ Q$DÄ÷ õÀå`÷ Dd Ö÷ ¼þwÀåt÷ ¨÷ Q$DÀå†÷ DmDZ÷ ÄìþwÊ ÷Ò ÷¨©~ªJÿwø6ÿ÷ è 7 üR”À ú Âú 7Ñ Àå‰Ô ÷ ‰ø ·Âåø—¢ñ† · Âeèý!h À’~ȉà&9ˆW üð wh À&9ˆð wÐh€ ÀP&9ˆÔ~@ŠW üð w”h€ À„&9ˆð w`h ÀÀ&9ˆW üð Ó~¸Šw$h€ Àü&9ˆW üð wèhþÿ À0&9ˆð w´‰~0‹h€ Àd&9ˆð w€h€"þÿ À´&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 TE·~�…ST THE MAGNETIC TAPE 62CœSECOND LINE OF THE WRITE, REWIND, AND READ TEST 62 CHARACTERæ p÷ ˆˆæ" .÷!ˆjæ&ˆnæ¶æ– ÷® ÷�£~Sœ ÷.ˆ£~lÁ‹ ¢~9odÈ ‡ ˆÌæ‡Ý¶û÷ ˆ¤æüû–û(¢~»÷ˆ÷ øûx÷ˆ�æ´ûæ®þBF÷øûæºþDK÷ ðûæÆþDT÷ÎþBC÷…R÷ åýÂe ÂÆ÷ Ä€wlX8Žè²ŽlX8&0©~èŽl|Ä À!2 ÷ !^ Åv Ãm\ ÷ÃåC”€ÿÄE„B”V ÷‡Ž` üÿÂEõÂåÀåB@9Ä÷ J÷ ÄR÷ ÄЖ¸Ðú¸¨~Àz — Ò ÂÜ÷ &À Þ ÷úp`>÷ ]Ö÷ î ²÷â Ê÷æ â ÷ wö w`à7ÊÀ.Æ÷ ˆjæÙ÷•&ˆnæ¶æ €÷B ˜@¨~é÷ ÷ ÷* 7 V 7 ( 7 ÀåZ 7\ 7ÀeÀ À À À À À À € € € € € € € €ÀE€ À Àe€ Àˆ ˆˆæöX÷õ‡² 7 Àe$÷ 'ˆÈ§~»&ˆæ: „÷6÷ D ^÷j÷ €Äà 7 £P÷ ^ ÷f÷ BÃÜ Äà w`A ‚ B|÷ äý% À˜&9ˆð wLhM~¨‹ ÀÔ&9ˆW üð wh€ À&9ˆW üð wÔhÀ~ Œ) ÀD&9ˆð w h€ Àx&9ˆð wlhþÿ~˜Œ À´&9ˆW üð w0h€ Àü&9ˆ· ÷ úÿýð wî7 êÿ‡öhì~�€ ÀD&9ˆ· ÷ úÿýð w¦7 êÿ‡>h&S.INPUT BUFFERT~†ó~€†{~ø†~p‡ 4üZ÷ìû÷ !ˆˆæüwüÁíîúûúû÷-Áe Dü÷ ˆ¸ævü°¡~Ðwü· |÷ ü7Ð ü76üÁ92ü÷ ˆˆ¦ˆæ)ˆ˜æ`ü7 »¾÷  ü÷ÝPü÷ æê ÀeÐ Ð $Íâ÷ Äü6÷�È |ü7$Œü7$�ü7$8¡~Wˆü7ìÀö÷ ”üB÷«ü7Š¢ü¦ü÷&ˆŒæˆ" ˆÌæý ÷&``` ÁÀF÷ (ýì÷ˆ.ITEX $ID DSKTA . UEAL V -ORRR EÀ ~n + T:EX ND,REFENSRA TLEFI : ERNTEE RS,OUGITION COT NLEFI R:TEENRE, NDOU FOT NLEFI   E:H ~íAM NNTMELE/ELEFIR TEEN áý;ÃDŠ÷ 4Ã'ˆ&%æÅ”÷ ¢ Ø÷'ˆ&P§~{÷æÏ¨÷ ¶ B÷Ì M÷•¼Ú ÷•Ò÷ ^Ã'ˆ&PæéW 'Á œN†p7 Àeìÿ7Šr7 @z×- ÷•Š7 tÀ ئ~8÷ & „÷Ä 7ˆjæÊ 7ˆjæˆù a( ˆjæˆÂÌÁnÀˆ ˆˆæ@ @÷Â0Æ0lðúà  µÒ7÷` `¦~>ðÃEÃe 0 0  µèÁ W œœ/†H7 Àeìÿ7ŠJ7 @R×- ^7tÀ ÷•j7 ÚØ÷  ÄH÷ è¥~( ÁôHôôÃeô,Ì"÷ÿÿ×"ƒ#Ò7! ÄeÊÄ‚<ˆÔàý) ÀŒ&9ˆ· ÷ úÿýð w^7 :~ˆ�êÿ‡†h€ ÀÀ&9ˆð w$h   ˆTHIS BUFFER OF DATA WIH~ŽLL BE USED TO TEST THE MAGNETIC TAPE 62CœSECOND LINE OF THE WRITE, REWIND, AND READ TEST 62 CHARACTERS.INPUT BUFFERÏ~xŽ{~ðŽ*@€  à~臀ƒ~`ˆ™~؈÷"÷ BÄÁÁEàÿ„ 7*7ZÀ8&9ˆð w®êh^~P‰ Àl&9ˆð wxêh »À¤&9ˆð wBП~ŠXŸ~àž~{hž~ÝýÂÔÄÔÚ7v÷ úô¥ Äe ÄetÄ�÷ ’®p¥~Ú÷ –f÷ DÔ÷ ñÕôÕôµ Ö÷ ñµÞ ÷ IJt¶†1-L7 ­À’÷ ^d÷D. ÷ ñµ"÷ ·ø¤~\$ ÷ €ÄÕ¼÷ „Ž÷ ÷ žwB ÷ ÄJ ÷ ÄR ÷ Ä~ÚÚ:øz DÀe— œçÅåP)ð‹È È· òð"ó€¤~”È È Þ÷ 3( ÷ 6ø ÷ t÷t÷÷Ê÷Ì ÷ Äïð Ðò Ðî ÷ ˆjæþ 7 7Á 7 <w� � � ÎÁåÊÀäQ$CT¤~\C&ˆfjæõ’÷‚o× ,¢ € ã ã ãpÈ^ÂÊÁsÀˆ ˆÜý-~h�Š~à� €L~X�B=~Ð�.h À’~ȉà&9ˆW üð wh À&9ˆð wÐh€ ÀP&9ˆÔ~@ŠW üð w”h€ À„&9ˆð w`h ÀÀ&9ˆW üð Ó~¸Šw$h€ Àü&9ˆW üð wèhþÿ À0&9ˆð w´‰~0‹h€ Àd&9ˆð w€h€Þèð�~Ô^x�~-u@¨ �~^š ŠF-ß ö|7 ø|è÷êö|ß èÖ ß & ðÅ ðµ ð‹ ðÅL‘Ö Þ Æ/æ& &+æ& æ& ¦Ò  ðµ’$ ðµ ˆœ~Ò  @ðµ  ðµ Š ðÕ< ð• ðÅ ðµ@ Ùýæ p÷ ˆˆæ" .÷!ˆjæ&ˆnæ¶æ– ÷® ÷�£~Sœ ÷.ˆ£~lÁ‹ ¢~9odÈ ‡ ˆÌæ‡Ý¶û÷ ˆ¤æüû–û(¢~»÷ˆ÷ øûx÷ˆ�æ´ûæ®þBF÷øûæºþDK÷ ðûæÆþDT÷ÎþBC÷…R÷ Øý1!~H‘.ˆAy F²Âh@d~À‘0~8’@w~°’÷ –õ‹.Á¸! Á%8ü‡÷*Àþ÷•Ãþ÷ Äþ÷ À÷%2 À˜&9ˆð wLhM~¨‹ ÀÔ&9ˆW üð wh€ À&9ˆW üð wÔhÀ~ Œ) ÀD&9ˆð w h€ Àx&9ˆð wlhþÿ~˜Œ À´&9ˆW üð w0h€ Àü&9ˆ· ÷ úÿýð wî7 êÿ‡öhì~�€ ÀD&9ˆ· ÷ úÿýð w¦7 êÿ‡>h𵀬%ß &F-ß L‘èÀþÿÄàÅlÇ2ˆœ~É€o˜›~Ä2f‡ ˆ„æøû·Å öÅ ÛûÔ�ÞûÔ�DˆdæˆÅ7Pÿ÷EÚÂîÁÀç ›~ë;ˆ–ÿ÷ ÀÜ! ,W¥€ÿ·(wÌÂèÁÀ‡íÖ :ˆÆÿ÷ Àô! ,W¥°ÿ·‡¶ÿÆ IõÀ Åe&Å ìþ÷ Ä�ßâå×ÔѨš~ Y /YDDM/ M S :SMMH: H ‡ˆ&êòÖ ˆ& & & &‡þÿÕý4üZ÷ìû÷ !ˆˆæüwüÁíîúûúû÷-Áe Dü÷ ˆ¸ævü°¡~Ðwü· |÷ ü7Ð ü76üÁ92ü÷ ˆˆ¦ˆæ)ˆ˜æ`ü7 »¾÷  ü÷ÝPü÷ æê ÀeÐ Ð $Íâ÷ Äü6÷�È |ü7$Œü7$�ü7$8¡~Wˆü7ìÀö÷ ”üB÷«ü7Š¢ü¦ü÷&ˆŒæˆ" ˆÌæý ÷&``` ÁÀF÷ (ýì÷ˆ.ITEX $ID DSKTA . UEAL V -ORRR EÀ ~n + T:EX ND,REFENSRA TLEFI : ERNTEE RS,OUGITION COT NLEFI R:TEENRE, NDOU FOT NLEFI   E:H ~íAM NNTMELE/ELEFIR TEEN Ôý5 ¤þ÷ °þõÂ8RÒ Ò ’$ÒV¯ÒÜ…åw~(“w w ÷ *V÷‹þQ�÷ ¼ È‹mÈ•þÿË÷•åþ÷ ZçÂ8À�Xþ 7ØþÂÆ÷¸0þ÷•Áþ÷ 6]Á�6þÁEøÿWt�`D%ñ•ÿÿþÿˆ®~ “‘•‘•‘•ˆ‘•‘•‘•Ì þ ÷Õ€ÿýÀ ÷•uþ÷ ê7÷*Òý÷•Õý÷ Ø./wNwL÷ t#÷ ȋȕþÿË ÷•5þ÷ ª÷*’ý÷••ýã~”÷ ˜�Š�Š�Š�Š�Š�Š�Š�Š�Š�Š�Š�ŠÍ ô?ˆˆ÷ ö÷ ²ï·Šiý€÷ŠcýãÈ•Àe5 5 Ë ÷•Çý÷ <à÷*$ý÷•'ý÷ *ר÷ Y~�”ÎÐ÷ fÉȥȥÿÿ¿p wm ý÷Å€ý·Šþü÷ÿÿøü ÷µîü· êü÷Š6 ÀŒ&9ˆ· ÷ úÿýð w^7 :~ˆ�êÿ‡†h€ ÀÀ&9ˆð w$h   ˆTHIS BUFFER OF DATA WIH~ŽLL BE USED TO TEST THE MAGNETIC TAPE 62CœSECOND LINE OF THE WRITE, REWIND, AND READ TEST 62 CHARACTERS.INPUT BUFFERÏ~xŽ{~ðŽŠR©ô•‡ ˆ„æòüô÷þÿŠ R©­R©ô‹þÿàß•‡þÿŠR©4ŠR©0š~€ô¥þÿàß•y„ !®§ô%Ä &¬§!)!,Å ¢ÿ÷ 0‚!3Ä 5,W¥ÁÁÁ Ä´€h‡ƒ Ö „ˆdæýÄ c™jÃa¸™~êpý7 rý7 tý7 æ‡>ˆŒ§æðp € Áe®§ñ4ª0ŠÃ©0ŠR©ð•"ÁÀ›‡*ˆxæÐý÷•Ôý÷¦‡¨Ìý÷ ˆjæ®õþÿÄøÿÿÄû Õ@™~Kæº !½Ä bÿ÷ Å AW£BW£,W¥é&R©0ŠÀÑðæóæöæˆÜÖ ˆ& && æ¬ÿ÷ 懮§ô*ˆxæpþ÷•tþȘ~p¨7  !Ä Å ,÷ ‡ Ö ‡Å ÷ ‚!Ä ,W¥‡ÑýП~ŠXŸ~àž~{hž~Ðý9ãüŠ÷•Íüà ÷•Qý÷ Æ¥÷*®ü÷ ºŸ ÀH¶ a~•5$ 5$ 5¬ ¢þÿ¤‡Ð Àe  ì‡ÀÆÂDƒ ×  ‡÷¸Zü÷•ëü÷îü÷ \×Ö wÚþ 7 NüÀ*÷•=üHw¾ü7&ü÷ 2~€•2÷%üæ,V¯,Ü… ‡À‡Ö wzþÖ w‚þæˆõÝâû‡X~ø•ô~p–T2[€:~h�Š~à� €L~X�B=~Ð�È» ôEÄ Ä»!÷ ñÒþæ÷ÒÅ Û Ä Õ ÖË Ù ˆ„æîþØ÷ûË Ó S#P˜~ÀÃÄ �ÄåêD˜Åîÿ÷ ˆ„æ*ÿ7 "ÿ–÷.ÿ÷ ˆ´æˆ.ˆˆEX¢XB’BR¸ITPTFTCZFLLID@LD:AS$CMÀREFDTTMôØ—~ŠXT0XX*QU$DS ENT ENSCIEQUN-NO R!PAL IL D!CML IL ? C: AÐ`—~Ýè–~ZÿÿÍýÞèð�~Ô^x�~-u@¨ �~^š ŠF-ß ö|7 ø|è÷êö|ß èÖ ß & ðÅ ðµ ð‹ ðÅL‘Ö Þ Æ/æ& &+æ& æ& ¦Ò  ðµ’$ ðµ ˆœ~Ò  @ðµ  ðµ Š ðÕ< ð• ðÅ ðµ@ Ìý=ÿÿZ~è–Ý~`—Ð AC:  ? ILL CMD! ILL PAR! NON-QUIESCENT EN DS$QU*XX0XTŠ~Ø—ôTMDTFREÀCM$AS:LD@IDLFLZTCFPTIT¸BR’XB¢EXˆ.ˆˆæ´ ˆ÷.ÿ÷–"ÿ7 *ÿæ„ ˆ÷ ÿîŘDêÄå�Ä ÃÀ~P˜S# Ó Ë û÷Øîþæ„ ˆÙË ÖÕ Ä Û Å Ò÷æÒþñ÷ !Ä»Ä ôE È»>!~H‘.ˆAy F²Âh@d~À‘0~8’@w~°’÷ –õ‹.Á¸! Á%8ü‡÷*Àþ÷•Ãþ÷ Äþ÷ À÷%€[2Tp–~ôø•~X‡âûõ݈æ‚þwÖ zþwÖ ‡À‡ Ü…,V¯,æü÷%2€•~2÷ &ü7¾üwH=ü÷•*ÀNü7 ÚþwÖ ×\÷ îü÷ëü÷•Zü¸÷‡  × ƒ DÂÆÀì‡ ÀeÐ ‡¤þÿ¢ 5¬ 5$ 5$•~a ¶ÂHÀ Ÿº÷ ®ü*÷¥Æ÷ Qý÷• à Íü÷•ŠãüÉý𵀬%ß &F-ß L‘èÀþÿÄàÅlÇ2ˆœ~É€o˜›~Ä2f‡ ˆ„æøû·Å öÅ ÛûÔ�ÞûÔ�DˆdæˆÅ7Pÿ÷EÚÂîÁÀç ›~ë;ˆ–ÿ÷ ÀÜ! ,W¥€ÿ·(wÌÂèÁÀ‡íÖ :ˆÆÿ÷ Àô! ,W¥°ÿ·‡¶ÿÆ IõÀ Åe&Å ìþ÷ Ä�ßâå×ÔѨš~ Y /YDDM/ M S :SMMH: H ‡ˆ&êòÖ ˆ& & & &‡þÿÈýÄý‡W¥, Ä !‚÷ Å ‡Ö  ‡÷ ,Å Ä ! 7p¨~Ștþ÷•pþæx*ˆô®§‡æ÷ ¬ÿæ& && ˆÖ ܈æöæóæðÑÀ0ŠR©&éW¥,W£BW£AÅ ÷ bÿÄ ½! ºæK~@™Õ ûÄÿÿøÄþÿõ®æjˆ÷ Ìý¨‡¦÷Ôý÷•Ðýæx*ˆ‡›ÀÁ"ð•R©0ŠÃ©0Š4ªñ®§Áe€  pðæŒ§>ˆ‡æ7 tý7 rý7 pýê~¸™aÃjc™Ä ýædˆ„Ö  ƒ‡h€´Ä ÁÁÁW¥,5Ä 3!0‚÷ ¢ÿÅ ,!)!¬§&Ä ô%®§!„ yß•àþÿô¥€~0šR©4ŠR©Šþÿ‡ß•àþÿô‹R©­R© Šþÿ÷ôòüæ„ ˆ ‡ô•R©ŠÅý ¤þ÷ °þõÂ8RÒ Ò ’$ÒV¯ÒÜ…åw~(“w w ÷ *V÷‹þQ�÷ ¼ È‹mÈ•þÿË÷•åþ÷ ZçÂ8À�Xþ 7ØþÂÆ÷¸0þ÷•Áþ÷ 6]Á�6þÁEøÿWt�`D%ñ•ÿÿþÿˆ®~ “‘•‘•‘•ˆ‘•‘•‘•Ì þ ÷Õ€ÿýÀ ÷•uþ÷ ê7÷*Òý÷•Õý÷ Ø./wNwL÷ t#÷ ȋȕþÿË ÷•5þ÷ ª÷*’ý÷••ýã~”÷ ˜�Š�Š�Š�Š�Š�Š�Š�Š�Š�Š�Š�ŠÍ ô?ˆˆ÷ ö÷ ²ï·Šiý€÷ŠcýãÈ•Àe5 5 Ë ÷•Çý÷ <à÷*$ý÷•'ý÷ *ר÷ Y~�”ÎÐ÷ fÉȥȥÿÿ¿p wm ý÷Å€ý·Šþü÷ÿÿøü ÷µîü· êü÷Š