& ±Œ:¯”(ö (¦÷æ0Æ÷àþÿ  Ñ P Ð À‹úÀ¤÷ nÆ­þÿ"¤*Ù,(Àí÷ ZÀÿÿÀA‚Äðÿ "÷  ? íø,L„ úÄ9ÿÀA÷ Œ? „ úþý÷ &ƒ àö  ±Œ:.Æ÷àòç  Ñ P Ð À‹úÀ¤÷ nÆv*(Àí÷ ZÀÿÿÀA‚Äðÿ "÷  ?ê*L„ úÄ9ÿÀA÷ Œ? „ úþý÷ &ƒ Í*püÄ9ÿÀA÷ l?ê„ úÄðÀ÷ X?ƒ*”Ö„ ú÷ L? ÆÀê÷ èÀ÷ ÚÀªª–*¸÷ ^Àýÿÿ¢¿Šž÷ € úÀ¿}ÿŒº*Ü÷ ÿÕ„?‚÷ ø÷A`Å\Ãrÿ *d÷ N÷%þÿH>Äÿÿ÷üþL÷ ÌÿÕF$*$?D· :ö÷ ¸•4ÿ2W!dÅ\ÄR*H÷þÿ÷ ;TOG-11 V.03 ;TC11 DECTAPE FORMATTER ;ROBERT J. COLLINS ;JUNE 27, 1970 ;MODIFIED MAY 12,1971 ;RE-MODIFIED JULY 4, 1972 BY M. KLEIN ;FORMAT DECTAPES ON UNIT 0 IN STANDARD FORMAT OF ;578(10) BLOCKS WITH 256(10) 18 BIT WORDS PER BLOCK. R0=%0 ;REGISTER DEFINITIONS R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 R6=%6 R7=%7 SP=R6 PC=R7 XX=HALT SR=177570 ;SWITCH REGISTER PS=177776 ;PROCESSOR STATUS NOP=240 P0=0 ; UPDATE: 12-JUL-72 CRDOS.S2B ;DATE: 11-OCT-71 ;DATE: 7-OCT-71 ;VERSION NUMBER: V002A ;THIS VERSION OF DEC'S CARD READER DRIVER IS MODIFIED TO READ ;UNIVAC "FIELDATA" CARD CODE WHEN ASSEMBLED WITH "DEFALT" DEFINED. ;IN ADDITION, CHANGES TO OPERATION OF TRAILING BLANK SUPPRESSION ;AND OF SEQUENCE NUMBER (COLS. 73-80) SUPPRESSION ARE MADE ;AND ARE DESCRIBED BELOW. ;CARD READER DRIVER (CR) ; ; A) FOR ASCII INPUT. AT EACH TRANSFER REQUEST ; ONE CARD WILL BE READ. UP TO 80 CHARAC ,püÄ9ÿÀA÷ l?ê„ úÄðÀ÷ X?–,”Ö„ ú÷ L? ÆÀê÷ èÀ÷ ÚÀªªÙê¸,¸÷ ^Àýÿÿ¢¿Šž÷ € úÀ¿}ÿŒÍ,Ü÷ ÿÕ„?‚÷ ø÷A`Å\ÃrÿM \$rÍ,d÷ N÷%þÿH>Äÿÿ÷üþL÷ ÌÿÕF7,$?D· :ö÷ ¸•4ÿ2W!dÅ\ÄRwd"\&R^,H÷þÿ÷ ˜ÿÕ?· ö÷ „ÿÅþ_,l?ü÷þÿð÷ pÿÕê?è· Þö¼÷ Z ˜ÿÕ?· ö÷ „ÿÅþL*l?ü÷þÿð÷ pÿÕê?è· Þö¼÷ ZÖ*�ÿ•Ò÷ jú? È7 Àÿ•¾÷ <ÿ-²¸ *´? ®ÀÀ¨Àšÿ–÷ÿþŽË*Øÿ•Š÷ ÿ †? |ÀÀnÀ@*üÀmfÀfÿZ÷ Rä· J÷%BDë* Áÿ•@÷ Ø'÷A0ÿ.Àö"  ö$Ô*Dü‡ÿ•÷ šÿ-)? ÀÀ*hÀøÿ•ô÷ ŒúÜ? èÀ/? Ü$0ŒÀ)ÄöþÀ>÷ J?È„ ú‡ÿÿÀÿö"¸ò*¶ÿ• ¬÷ *÷ ;PI PRIORITY LEVELS P1=40 P2=100 P3=140 P4=200 P5=240 P6=300 P7=340 B0=1 ;BIT POSITION CONSTANTS B1=2 B2=4 B3=10 B4=20 B5=40 B6=100 B7=200 B8=400 B9=1000 B10=2000 B11=4000 B12=10000 B13=20000 B14=40000 B15=100000 POP=5726 ;POP STACK ONCE,=TST(6)+ POPPOP=22626 ;POP STACK TWICH,=CMP (6)+,(6)+ CR=15 ;CARRIAGE RETURN LF=12 ;LINE FEED TERS, ; FOLLOWED BY CR-LF, WILL BE PASSED TO THE ; CALLING ROUTINE AS SPECIFIED BY THE WORD ; COUNT GIVEN. (IF THIS IS > 41, REMAINING ; BYTES WILL BE CLEARED. ; ALL ERRORS (INCLUDING 'HOPPER EMPTY' UPON ; AN 'OPEN' CALL) WILL BE TREATED AS 'DEVICE ; NOT READY'. USER CAN RESUME OPERATION BY ; RECTIFICATION OF ERROR OR REFILL OF HOPPER ; AND ENTRY OF 'CO' COMMAND AT KEYBOARD. ; THE END OF A FILE WILL BE DETERMINED BY ; RECOGNITION OF A TERMINAL CONTROL CARD:- ; 12-11-8- é,�ÿ•Ò÷ jú? È7 Àÿ•¾÷ <ÿ-²¸,´? ®ÀÀ¨Àšÿ–÷ÿþŽÞ,Øÿ•Š÷ ÿ †? |ÀÀnÀS,üÀmfÀfÿZ÷ Rä· J÷%BDþ, Áÿ•@÷ Ø'÷A0ÿ.Àö   ö  ö &ö £,Dü‡ÿ•÷ šÿ-)? ÀÀ,hÀøÿ•ô÷ ŒúÜ? èÀ/? Ü72ŒÀ)ÄöþÀ>÷ J?È„ ú‡ÿÿÀÿö ¸5> À€ÿ•œ÷ 4Û? ’Àè«*Ú÷ ´À,÷ ¦w:ýÿ5€€xü�‡ÀÀP*þjñÿ5€€^ü€ÿ Xñ€Îe‡ÀAÁr5*"B ÷ýÿ:ƒ   ÃEþÿæƒ   ÃEøÿ�*Fæ· ö ƒmw *ƒmw "ƒmw ƒcó*jw w Ãe?ÑÆeÀ Ñ€‡¡C C C …ß *Žxÿ�”‡_�vÿß‹tÿý€÷ DECTAPE FOR?*²MATTER V03A SWITCH #15 UP TO SUPPRE*ÖSS TTY MESSAGES  NEXT TAPù*úE: BOTH SWITCHES "UP" T&M GOOD: É*"WRTM" DOWN FORMATTKS=177560 ;KEYBOARD STATUS TKB=177562 ;KEYBOARD BUFFER TPS=177564 ;TELEPRINTER STATUS TPB=177566 ;TELEPRINTER BUFFER TKV=60 ;KEYBOARD VECTOR TPV=64 ;TELEPRINTER VECTOR .PAGE START: RESET ;CLEAR THE WORLD MOV #START,SP ;INITIALIZE THE STACK POINTER MOV #P7,PS ;LOCKOUT PI BY RAISING CPU PRIORITY 9 PUNCHED IN C.C.1 ; ;  XXXXXXXXXXXXXXXXXXXXXXXXX ;  X   X ;  X  NOTES  X ;  X   X ;  XXXXXXXXXXXXXXXXXXXXXXXXX ; .PAGE ;************************************************************************ ; 0) IN THE FOLLOWING, ALL REFERENCES TO '026' CODE NOW SHOULD ; BE INTERPRETED AS UNIVAC 'FIELDATA' CODE. ;************************************************************************ ; 1) THIS DRIVER CAN BE ASSEMBLED FOR USE ; IN CONNECTION WITH EITHER '026' *ö m,¶ÿ• ¬÷ *÷  À€ÿ•œ÷ 4Û? ’ÀèÖ &èß,Ú÷ ´À,÷ ¦w:ýÿ5€€xü�‡ÀÀ{  ,¶,þjñÿ5€€^ü€ÿ Xñ€Îe‡ÀAÁr` &rR,"B ÷ýÿ:ƒ   ÃEþÿæƒ   ÃEøÿ”,Fæ· ö ƒmw *ƒmw "ƒmw ƒc,jw w Ãe?ÑÆeÀ Ñ€‡¡C C C …ß %,Žxÿ�”‡_�vÿß‹tÿý€÷ DECTAPE FORR,²MATTER V03A SWITCH #15 UP TO SUPPRE,Ö COMPLETEAHœ*B’’’’’’’’’’’’’ë*f’’’’’’’’’’’’’’’’’’*Š’’’’’’’’’’’’’’’’’’ë*®’’’’’’’’’’’’’’’’’’Ç*Ò’’’’’’’’’’’’’’’’’’£*ö’’’’’’’’’’’’’’’’’’*’’’’’’’’’’’’’’’’’’Z*>’’’’’’’’’’’’’’’’’’6*b’’’’’’’’’’’’’’’’’’*†’’’’’’’’’’’’’’’’ ; FIRST, LOAD ALL INTERRUPT VECTORS WITH STOPS: CLR R0 CLR R1 INIT1: TST (R1)+ ;BUMP POINTER TO PS WORD OF VECTOR MOV R1,(R0)+ ;LOAD PC WORD WITH ADDR OF PS WORD CLR (R1)+ ;PUT "HALT" IN PS WORD TO FORCE A STOP TST (R0)+ ;BUMP POINTER TO NEXT PC WORD TSTB R0 ;LOWER BYTE WILL CLEAR AT LOC'N 400(8) BNE INIT1 ;BACK FOR MORE ; ALL DONE: OR '029' ; PUNCHES OR BOTH AS INDICATED BY PARAMETER ; SPECIFICATION AT START OF SOURCE INPUT ; AS FOLLOWS:- ; ; A) "ONLY26=0" - READ ONLY '026' CODES. ; B) "ONLY29=0" - READ ONLY '029' CODES ; C) "DEFALT=0" - READ BOTH TYPES OF CODE ;    WITH '026' AS DEFAULT ; D) NIL - READ BOTH TYPES OF CODE ;    WITH '029' AS DEFAULT ; ; IN CASES (C) & (D), DRIVER WILL USE DEFAULT ; UNLESS DIRECTED OTHERWISE BY ENTRY OF A ; CONTROL CARD PUNCHED IN C.C. 1:- ; ; SS TTY MESSAGES  NEXT TAP ,úE: BOTH SWITCHES "UP" T&M GOOD: Ü,"WRTM" DOWN FORMAT COMPLETEAH¯,B’’’’’’’’’’’’’þ,f’’’’’’’’’’’’’’’’’’",Š’’’’’’’’’’’’’’’’’’þ,®’’’’’’’’’’’’’’’’’’Ú,Ò’’’’’’’’’’’’’’’’’’¶,ö’’’’’’’’’’’’’’’’’’’,’’’’’’’’’î*ª’’’’’’’’’’’’’’’’’’Ê*Î’’’’’’’’’’’’’’’’’’¦*ò’’’’’’’’’’’’’’’’’’‚*’’’’’’’’’’’’’’’’’’]*:’’’’’ ’ ’ ’ ’‚A€AÿÿÿÿAÿÿÿÿa^âþàþèþæþäþùáNOW ENTER PROGRAM PROPER MOV #MSGA,R0 ;UNCONDITIONAL IDENTIFIER MESSAGE JSR PC,PRINT1 START1: MOV #START,SP ;RE-INIT STACK POINTER RESET ;IN CASE COME HERE AFTER ERROR MOV #MSG1,R0 JSR PC,PRINT ;MESSAGE ON TTY MOV #-1,R0 ;GOOD DATA LIGHT DISPLAY FOR DONE... HALT ;...AND CLEAR TO START. MOV #101101,R0 ;REVERSE END ZONE=55 MO 12-11-8 = '029' CODES FOLLOW ; 12-11-9 = '026' CODES FOLLOW ; ; 2) IF PARAMETER "BLANKS" IS DEFINED, ; ALL TRAILING SPACES WILL BE SUPPRESSED, ; WITH 'CR-LF' FOLLOWING LAST VALID DATA. ; IF THE CARD FILE IS PRECEDED BY CTL CARD WITH ; 12-11-0 ; PUNCHED IN C.C.1, THE TRAILING SPACES WILL NOT BE SUPPRESSED. ; IF A CONTROL CARD IS READ WITH C.C.1 CONTAINING: ; 12-11-0-8 ; AND SPACE COMPRESSION HAS NOT BEEN ; ’’’’’’’’’’’m,>’’’’’’’’’’’’’’’’’’I,b’’’’’’’’’’’’’’’’’’%,†’’’’’’’’’’’’’’’’’’,ª’’’’’’’’’’’’’’’’’’Ý,Î’’’’’’’’’’’’’’’’’’¹,ò’’’’’’’’’’’’’’’’’’•,’’’’’’’’’’’’’’’’’’p,:’’’’’ ’ ’ ’ ’‚A€AÿÿÿÿAÿÿÿÿt^âþàþèþæþäþ .�¯”(�h¯”.÷æ,”`À>�÷ `ß5pþú×DD÷•C,$è÷•æßpþß5@pþüÖ vÀ¾ÿÀe&Ó,H¦âä—— ßApþ‡&ÀîÿæpþÖ ø,lb‡;�fÁ—tþÈ‹W Ø`W àpW èpW ÈV #-4096.,R4 ;COUNTER FOR REZ MOV #13,@TCCM ;GO LP1: JSR PC,FLAG ;WAIT FOR READY OR ERROR MOV R0,@TCDT ;LOAD MARK TRACK INC R4 ;DONE ALL? BNE LP1 ;LOOP IF NOT FINISHED MOV #-199.,R4 ;COUNTER FOR IBS MOV #10101,R0 ;INTERBLOCK SYNC=25 LP2: JSR PC,FLAG ;WAIT FOR FLAG MOV R0,@TCDT ;LOAD MARK CODE INC R4  SUSPENDED (ABOVE), CC. 73-80 WILL BE IGNORED AND ; SPACE COMPRESSION WILL BEGIN AT CC. 72 AND MOVE DOWNWARD. ; 3) *********************** F I R S T C A R D **************** ; AN "OPEN" CAUSES ONE CARD TO BE READ AND IGNORED. THIS IS TO ; COMBAT THE PROBLEM OF THE FIRST CARD READ BY A COLD READER ; GENERATING ONE TOO MANY INTERRUPTS AND CAUSING AN "A002" ERROR. ; THUS EVERY DECK MUST BEGIN WITH AN IGNORABLE CARD. ; B) IF TH ö é ö çóŽ,�gW Ð`Á¥`æ•!Á¥ æ•?�•Á v,´€ÁeàfÁå �ÎåúÎmRÿÎaÎe°�—7 xÿ„,Ø;ÈÓ7tÿ�€ŠpþÈ‹&À5€æ$^ q,ü÷•øÿÀJÿÁBÿÀå(  ýÐ Ü, ! @ ý‚É� ÀÒþx Špþ÷ 8÷ ÿÑÁ¼þG,DqH 7ЬÿßÕpþÂ÷DÀþø7 ºþõ7ŠŒ,h¤ÿò7Š¢ÿïæ–þ懠±²3´56·¸ :£À'7,Œ½"90¯SÔUVרY Ý¬¥_¾?Z-ÊKÌMNÏPÑ !$ª©»\,°Ò¦ABÃDÅÆGH Û.<(+ÞÉ ±²3´56·¸ ¦½':¾À90, ;DONE ALL? BNE LP2 ;IF NOT, KEEP LOADING MOV #-578.,R3 ;COUNTER FOR NUMBER OF BLOCKS LP3: JSR PC,FRMBLK ;WRITE CODES FOR ONE BLOCK INC R3 ;DONE ALL? BNE LP3 ;IF NOT, WRITE ANOTHER BLOCK MOV #-199.,R4 ;COUNTER FOR IBS MOV #10101,R0 ;INTERBLOCK SYNC=25 LP4: JSR PC,FLAG ;WAIT FOR FLAG MOV R0,@TCDT ;LOAD MARK CODE E PARAMETER "BINARY" IS DEFINED AT ASSEMBLY, ; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ; ; THIS VERSION WILL ALSO ALLOW READING OF CARDS ; IN BINARY FORMAT. AS EACH CARD IS READ, 12 BITS FROM ; ALL 80 COLS WILL BE ACCESSED & STORED IN AN INTERNAL ; BUFFER IN A PACKED FORM, I.E. 4 COLS = 3 WORDS AS ; FOLLOWS:- ;  C.C.1 > WORD 1, BITS 15-4 ;  C.C.2 > WORD 1, BITS 3-0; WORD 2, BITS 15-8 ;  C.C.3 > WORD 2, BITS 7-0; WORD 3, BITS 15-12 ;  C.C.4 > WORD 3, BITS 11-0 ; ; THE !�-*”`À>�÷ `ß5pþú×DD÷•H*$è÷•æßpþß5@pþüÖ vÀ¾ÿÀe&Ø*H¦âä—— ßApþ‡&ÀîÿæpþÖ ý*lb‡;�fÁ—tþÈ‹W Ø`W àpW èpW È“*�gW Ð`Á¥`æ•!Á¥ æ•?�•Á {*´€ÁeàfÁå �ÎåúÎmRÿÎaÎe°�—7 xÿ‰*Ø;ÈÓ7tÿ�€ŠpþÈ‹&À5€æ$^ v*ü÷•øÿÀJÿÁBÿÀå(  ýÐ á* ! @ ý‚É� ÀÒþx Špþ÷ 8÷ ÿÑÁ¼þL*DqH 7ЬÿÔ¯SÔUVרY _¬(¥\"Z-ÊKÌMNÏPÑ  $ªÝ»ÞÒ+AB…øÃDÅÆGH  .©Û<£É2ó# INC R4 ;DONE ALL? BNE LP4 ;IF NOT, KEEP WRITING IBS MOV #-4096.,R4 ;COUNTER FOR FEZ MOV #10010,R0 ;FORWARD END ZONE=22 LP5: JSR PC,FLAG ;WAIT FOR FLAG MOV R0,@TCDT ;LOAD MARK CODE INC R4 ;DONE ALL? BNE LP5 ;IF NOT KEEP WRITING FEZ JSR PC,FLAG ;WAIT FOR LAST FLAG CLR @TCCM ;STOP TAPE. MAR$PACKED FORM WILL BE TRANSFERRED TO THE USER ; BUFFER UNTIL THIS IS FILLED, ANY DATA THEN REMAINING ; IN THE INTERNAL BUFFER BEING RETAINED UNTIL THE ; NEXT READ REQUEST. ; ; TREATMENT OF ASCII READING WILL STILL FOLLOW PATTERN ; DESCRIBED IN THE PREVIOUS PARAGRAPH WITHOUT EXCEPTION. ; ; THE ONLY CONTROL CARD WHICH WILL HAVE ANY EFFECT ; IN BINARY READING WILL BE THAT INDICATING E.O.F. (IN ; THIS CASE 12-11-0-1 PUNCHING MUST APPEAR IN AT LEAST ; C.C. 1 THRU 8). ; ; N.B. WHEN ASSEMBLEßÕpþÂ÷DÀþø7 ºþõ7Š‘*h¤ÿò7Š¢ÿïæ–þ懠±²3´56·¸ :£À'<*Œ½"90¯SÔUVרY Ý¬¥_¾?Z-ÊKÌMNÏPÑ !$ª©»\ *°Ò¦ABÃDÅÆGH Û.<(+ÞÉ ±²3´56·¸ ¦½':¾À90*Ô¯SÔUVרY _¬(¥\"Z-ÊKÌMNÏPÑ  $ªÝ»ÞÒ+ABŠøÃDÅÆGH  .©Û<£É7ø&; UPDATE: 12-JUL-72 LPDOS.S3D ; DATE: 14-OCT-71 ; VERSION: V003D ; LINE PRINTER DRIVER FOR DOS ("LP") ; DRIVES THE "DATA PRINTER V-132", WITH CONTROLLER BY "PER DATA" ; PROGRAMMER: 52 ; MODIFICATIONS MADE TO: 1) RE-PRINT CURRENT LINE IF PRINTER ; TAKEN OFF-LINE; AND 2) RE-SET THE CONTROLLER WITH COMMAND ; BIT #6 ON OPEN. ; THIS VERSION CONTAINS OPTION FOR DOUBLE SPACING, CONTROLLED FROM ; THE COMPUTER CONSOLE. IF THE SWITCH REGIS'K & TIMING TRACKS ARE... MOV #BELS2,R0 ;UNCONDITIONAL TWO BELLS JSR PC,PRINT1 MOV #MSG2,R0 JSR PC,PRINT ;MESSAGE ON TTY MOV #125252,R0 ;PATTERN FOR GOOD FIRST PASS HLT1: XX ;...WRITTEN. RESET WRTM SWITCH AND ;SET "WRITE ALL" SWITCH, THEN CONTINUE... .PAGE WRTBNO: JSR PC,COBLKG ;GENERATE TABLE OF CMPOBV BLK NUMBERS MOV #-3,R0 ;THREE BLOCK(D FOR USAGE IN BOTH MODES, AN 'OPEN' ; CALL WILL NOT CAUSE READING OF A CARD TO ALLOW THIS ; TO BE TRANSLATED AS REQUIRED BY THE READ MODE ; SPECIFIED BY THE USER. ; ; C) DRIVER CAN ALSO BE USED FOR 80-COLUMN MARK ; SENSE READER. FOR 40 -COLUMN READER, ECONOMIES ; IN BUFFER SIZE CAN BE OBTAINED BY DEFINITION ; AT ASSEMLBY OF PARAMETER "MARKS". THIS WILL ; ALSO PREVENT AUTOMATIC REMOVAL OF COLS 33-40 ; IN 'BLANKS-SUPPRESS' MODE OF USAGE. ;  XXXXXXXXXXXXXXXXXX).€M¯”(€Mh¯”Õ÷æ,’|€:€M÷ úß@êÀêÀ5@öÀ5ó,$ó7 2÷ èÖ ÀÊÿx ·7Š(÷  K,HÁÁe$wÁe…wÀ¢ÿÁ Á ÷ 8,ltÇê÷ –ß@ê êß5@êõæ$^ ß5*TER READS [000002], ; ALL PRINTER OUTPUT WILL BE DOUBLE-SPACED. ANY OTHER BIT PATTERN ; WILL CAUSE REVERSION TO SINGLE SPACING. ; V003C MODIFICATIONS: ; RE-PRINT FIXED TO CLEAR [R.AD] BEFORE RE-PRINT TO AVOID ; GARBLED LINES. ; ALSO, ADDITION MADE TO SHIFT THE TABS TO ACCOMMODATE ; THE OUTPUT FROM PAL11R-V004B, WHICH HAS LINES SET UP 2 BEFORE ; THE STANDARD "EVERY-8" TABS. THIS OPTION IS INVOKED BY SETTING ; THE UPPER BYTE OF THE CONSOLE SWITCHES TO [001]. ; V003D MODIFICATI+S MOV #4002,@TCCM ;SEARCH REVERSE WLP1: INCB @TCCM ;GO JSR PC,FLAG ;WAIT FOR BLOCK NUMBER INC R0 ;FOUND THREE? BNE WLP1 ;IF NOT KEEP SEARCHING MOV #76677,R0 ;COMPLEMENT OBVERSE OF 1011 (LAST BLOCK#) MOV #17,@TCCM ;WRITEALL FORWARD JSR PC,FLAG ;WAIT TO SYNC UP FOR WRITING WLP2: BISB #3,@TCST ;SET XDA BITS FOR 0 REVERSE ,XXXXXXX ;  X   X ;  X  NOTE  X ;  X   X ;  XXXXXXXXXXXXXXXXXXXXXXXXX ; ; PARAMETER DEFINITIONS CAN BE MADE DURING PASS 1 ; OF THE ASSEMBLY ONLY IF REQD AS DESCRIBED IN ; PAL-11R MANUAL, SECTION 9-2, E.G. ; ;  #CR,LP:,/PA:2 ; ;  XXXXXXXXXXXXXXXXXXXXXXXX ; .TITLE CR .GLOBL CR ; STANDARD PARAMETER DEFINITIONS: BLANKS = 0 ;ENABLE -],�êß5ê þÿ êß@êÀê@ À5Œ,´÷Äž÷ ð ÷‹¢÷ JÁ’Â�÷ :,Øæ&^ ÃxÃt÷•y� u…”ÅE€ÿü,üW! W! 3W! W! ï·ŠRW!`éý, ÷ ÄS‘÷ŠA÷•9÷ ,݃˕ w$·"7,DÄÄà„ 2 W! (÷•� ×§xÿ·Š,h÷ ¼½Ó• ÷ ìà‚÷Šïø×§yÿ³ÅÅíÔ,ŒW!­÷•ÑéÅ5¥㨣÷‹À÷ h ,°›ßªê ê7šß ê×§xÿß ê,.ONS: ; CORRECTION MADE TO WAIT UNTIL PRINTER READY WHEN CHANGING ; MODE BETWEEN AUTOLINEFEED AND FIRST-CHARACTER. .TITLE LP .GLOBL LP R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 PS=177776 SWR=177570 ; DEFINITIONS OF LINE PRINTER CONTROLLER ADDRESSES R.AD = 165010 ;MEMORY ADDRESS REGISTER R.LF = 165012 ;LINE-FEED CONTROL REGISTER R.WC = 165014 ;WORD COUNT REGISTER R.CM = 16501/ MOV R0,@TCDT ;WRITE LAST BLOCK # FROM HERE TO END ZONE JSR PC,FLAG1 ;SKIP NEXT INSTRUCTION IF END ZONE IS SENSED BR WLP2 ;KEEP WRITING 1011 MOV #1101,FBLK ;INITIALIZE PARAMETERS FOR LAST BLOCK, MOV #BYST,R5 ;XDA BIT TABLE AND MOV #RBN,R3 ;TABLE OF REVERSE BLOCK NUMBERS MOV #4017,@TCCM ;WRITEALL REVERSE WALUP: DEC FBLK ;DECREMENT BLOCK NUMBER CM0BLANK SUPPRESSION DEFALT = 0 ;READ "FIELDATA" CODE BY DEFAULT R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 ;INTERFACE TABLE: CR: .WORD 0   ;CURRENT DDB OR 0 IF IDLE .IFNDF BINARY .BYTE 224,0  ;FACILITIES: ASCII INPUT,OPEN INC. .ENDC .IFDF BINARY .BYTE 234,0  ;ALLOW BINARY IF REQD. .ENDC .BYTE 3  ;STD BUFFER SIZE = 96 BYTES .BYTE CR.INT-CR,300 ;INT'RUPT SVCE AT PRL 6 .BYTE CR.OPN-CR ;OFFSET TO OPEN .BYTE CR.TFR-CR ;OFFÔßÈê7 €‡÷zwHþ7Š€÷•{fŒw‹_,ør÷ŠoúÖ Å 7ŒdŒ‡æüýæ‡÷•À·,J÷ 7ŠD‡ß5êü êßÿÿ êæÎe,l,@Ÿêßêß êý€ß5êü‡ÿd„ Øó26 ;COMMAND REGISTER (ON DATO) R.ST = 165016 ;STATUS REGISTER (ON DATI) $RSAVE = 44 ;MONITOR SAVE-REGISTER ROUTINE $RSTOR = 46 ;MONITOR RESTORE-REGISTERS ROUTINE .PAGE ; PREAMBLE: FIXED FORMAT LP: .WORD 0 ; CURRENT DDB OR 0 .BYTE 222 ;FACILITIES INDICATOR .BYTE 0 .BYTE 5 ;STANDARD BUFFER/16 .BYTE LP.INT-LP ;OFFSET TO I3P #-2,FBLK ;LAST BLOCK WRITTEN? BEQ CHECK ;YES. CHECK DATA AND BLOCK NUMBERS MOV #-1,R4 ;-1 REVERSE =0 FWD MOV #-260.,TOG1 ;NUMBER OF WORDS WLP3: JSR PC,FLAG ;WAIT FOR SYNC FLAG TO WRITE BISB #3,@TCST ;1 KBV=0 FWD MOV R4,@TCDT ;LOAD DATA WORD INC TOG1 ;WRITE IT 260 TIMES BNE WLP3 ;KEEP WRITING UNTIL FINISHED JSR PC,F4SET TO TRANSFER .BYTE 0,0,0  ;(NO CLOSE OR SPEC. FUNC.) CR.NAM: .RAD50 'CR' ;OPEN PROCESSOR: CR.ONR: JSR PC,CR.NRY CR.OPN: BIT #400,@#CR.CSR ;CARDS IN HOPPER? BNE CR.ONR  ;IF NOT TELL USER TO READY .IFNDF ONLY26&ONLY29 .IFNDF DEFALT  ;FOR DUAL-PUNCH DRIVER ... CLR (PC)+  ;... SET CONV. TABLE OFFSET CR.TOS: .WORD 0 ;TABLE OFFSET IF NOT DEFALT .ENDC DEFALT  ;... FOR DEFAULT PUNCH .IFDF DEFALT  ;... AS APPROPRIATE 5€Mü*’|€:€M÷ úß@êÀêÀ5@öÀ5ø*$ó7 2÷ èÖ ÀÊÿx ·7Š(÷  P*HÁÁe$wÁe…wÀ¢ÿÁ Á ÷ =*ltÇê÷ –ß@ê êß5@êõæ$^ ß5b*�êß5ê þÿ êß@êÀê@ À5‘*´÷Äž÷ ð ÷‹¢÷ JÁ’Â�÷ ?*Øæ&^ ÃxÃt÷•y� u…”ÅE€ÿ*üW! W! 3W! W! ï·ŠRW!`é* ÷ ÄS‘÷ŠA÷•9÷ ,݃˕ w$·"<*DÄÄà„ 2 6NTERRUPT RTNE .BYTE 200 ;INTERRUPT PRIORITY:4 .BYTE LP.OPN-LP ;OPEN ENTRY .BYTE LP.TFR-LP ;TRANSFER (OUT) .BYTE 0  ;NO CLOSE .BYTE 0  ;NO SPECIAL .BYTE 0 ;SPARE LP.NAM: .RAD50 'LP' ;********************************************************************* ;********************************************************************* LPER01 = . ;UNIT NO7LAG ;WAIT FOR FLAG BEFORE WRITING FWD BLK# MOVB (R5)+,@TCST ;FETCH RELEVANT XDA BITS MOV (R3)+,@TCDT ;NEXT RELEVANT COMP. OBVERSE BLOCK # CMP R5,#BYST+10 ;SEE IF XDA BIT TABLE IS EXHAUSTED BNE .+6 ;IF NOT, PROCEED MOV #BYST,R5 ;IF SO, REINITIALIZE POINTER MOV #WALBF,R4 ;SETUP POINTER FOR LAST FIVE WORDS MOV #-2,TOG1 ;COUNTER OF TWO WLP4: JSR PC,FLAG FMOV #104,(PC)+ CR.TOS: .WORD 104 ;OFFSET FOR 'DEFALT'. INITIALIZED IN ; ;CASE OF NO OPEN. .ENDC DEFALT .ENDC ONLY26&ONLY29 .IFDF BLANKS  ;IF BLANK-SUPPRESS VERSION ... MOVB #1,CR.ZSW ;FORCE SPACE-SUPPRESSION ON MOVB #2,CR.ESW ;...BUT DON'T SUPPRESS CC. 73-80 .ENDC .IFNDF BINARY MOV #3,@#CR.CSR ;FORCE READ AND IGNORE OF FIRST CARD BIT #40000,@#CR.CSR ;WAIT 'TIW! (÷•� ×§xÿ·Š*h÷ ¼½Ó• ÷ ìà‚÷Šïø×§yÿ³ÅÅíÔ*ŒW!­÷•ÑéÅ5¥㨣÷‹À÷ h*°›ßªê ê7šß ê×§xÿß ê*ÔßÈê7 €‡÷zwHþ7Š€÷•{fŒw‹d*ør÷ŠoúÖ Å 7ŒdŒ‡æüýæ‡÷•À¼*J÷ 7ŠD‡ß5êü êßÿÿ êæÎe,q*@Ÿêßêß êý€ß5êü‡d‰øGT READY ON OPEN JSR PC,ERMES ;PRINT A002 LP.OPN = . ;OPEN ROUTINE MOV #100,@#R.CM ;HIT CONTROLLER RESET MOV @#R.ST,R0 ;CHECK STATUS... BIT #40031,R0 ;...FOR ERRORS OR BUSY BNE LPER01 ;AT LEAST ONE SET BIT #2,R0  ;TEST "ON-LINE" BEQ LPER01  ;NOT SET: PRINT ERROR MESSAGE CLR CURBUF ;SHOW BEGIN OF NEW LINE JSR PC,NEWPGE ;GO TO TOP-OF-FORE;WAIT FOR REQUEST FLAG BISB #3,@TCST ;SET XDA 17 & 16 MOV (R4)+,@TCDT ;FETCH DATA WORD INC TOG1 ;ADVANCE COUNT BNE WLP4 ;KEEP WRITING UNTIL FINISHED JSR PC,FLAG ;WAIT BICB #3,@TCST ;CLEAR XDA 17 AND 16 FOR REVERSE BLK# MOV (R4)+,@TCDT ;REVERSE BLOCK NUMBER MOV #-2,TOG1 ;COUNT OF TWO WLP5: JSR PC,FLAG ;WAIT FOR FLAG BISB"""DDˆˆˆˆˆˆˆ """"""""""""""""""""""@DDDDDDDDDDDDDD@D DDD€ˆˆˆˆˆˆˆˆˆ ""ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆADDB Cê'|Q^’›ê'|Q¡K’›ê'|Q4d’;õ›”¸`Â{“+º›”¸`Âb“›”¸`P“!›„M¸`ì{“"�›„M¸`^“%-›„M¸`¡K“15›”¸`Ä{2 H,ô›”¸`^2 “—›”¸`¡K2 ›Ÿ›¦SjL¤_0 £`ÿ5 ¾›5 øü›5 ùQ›5 ›5  ›gMÀD N5 ,›5 ›$Dÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ¿»»»»»»»ˆˆˆ™™™™ˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆˆÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÅaå Í‹æÄ,L ƒw:ÄB8ŽŒ ýƒàÇ` 5 þÿ€�&ˆ ‚— ýÿ†ƒœÃEÀÿ× >w†× × ò f€ò5ÀeòU@ò €× [æ*ˆ² ¦¦æ× Ž & *ˆÖ G× ‚&(ˆ°Ì 8�L'ˆ°4e÷ ÌQ$ ô �BBâBä" ± üÿü× ÷ ¬ŒÉU@Ò °ðU€ Æe  Å"U%÷‹äþGæÎeÞþæfÇ.Ö … U¥… … … … U¥Ñ Bb‘â‹Ã 0Š æ*ˆ€�Ö BÃÅ.&0 æM &0 & I #3,@TCST ;SET XDA 17 AND16 MOV (R4)+,@TCDT ;FETCH DATA WORD INC TOG1 ;ADVANCE COUNT BNE WLP5 ;KEEP WRITING UNTIL FINISHED BR WALUP ;FINISHED - DO NEXT BLOCK .PAGE CHECK: JSR PC,FLAG ;TAPE IS FORMATTED, CHECK DATA MOVB #3,@TCCM ;REWIND INTO END ZONE CHKL1: JSR PC,FLAG1 ;SKIP NEXT INSTRUCTION IF EZ BR CHECK+4 ;KEEP REWINDING JL DONE BEQ .-6 TST (SP)+  ;IGNORE INTERIM RETURN BR CR.DXT  ;... & TAKE COMPLETION .ENDC .IFDF BINARY  ;FOR BINARY VERSION ... CLRB CR.TFR  ;... FORCE NO OPEN READ BR CR.ODN CR.OXT: INCB CR.TFR  ;... BY MAKING COME HERE BR CR.ODN  ;... BEFORE EXIT .ENDC ;SUBSIDIARY ROUTINES: ; A) RESTART AFTER ERROR: CR.AGN: .IFDF BINARY  ;IN BINARY VERSION ... TSTB CR.ISW  ;... CHECK IF BINARY READ BEQ CR.TFR  ;IF NOT CAN JUST START OVER KM ON OPEN LP.EXT: TST (SP)+ ;POP RTN ADDR OFF STACK MOV LP,R0 JMP @14(R0) ;TAKE COMPLETION RETURN ;********************************************************************* ;********************************************************************* LP.TFR:    ;TRANSFER ROUTINE MOV (SP)+,SAVRTN ;POP STACK NOW IN CASE OF NO RETURN... ;FROM THE PRINT SUBROUTINE ; DO BUFFER CALCUL;UPDATE: 19-DEC-72 CRDOS.S2D ;12-19-72 ;UPDATE: 17-DEC-72 CRDOS.S2C ;12-17-72 ; UPDATE: 12-JUL-72 CRDOS.S2B ;DATE: 11-OCT-71 ;DATE: 7-OCT-71 ;VERSION NUMBER: V002A ;THIS VERSION OF DEC'S CARD READER DRIVER IS MODIFIED TO READ ;UNIVAC "FIELDATA" CARD CODE WHEN ASSEMBLED WITH "DEFALT" DEFINED. ;IN ADDITION, CHANGES TO OPERATION OF TRAILING BLANK SUPPRESSION ;AND OF SEQUENCE NUMBER (COLS. 73-80) SUPPRM CLR @TCCM ;STOP TAPE CLR TOG2 ;START WITH BLOCK#0 CHKL2: MOVB #3,@TCCM ;SEARCH FWD JSR PC,FLAG ;WAIT FOR FLAG CMP TOG2,@TCDT ;IS FWD BLOCK NUMBER CORRECT? BEQ DATCHK ;YES - CHECK DATA CLR @TCCM ;STOP TAPE AND MOV #2,R0 ;ERROR #2 HALT ;...HALT WITH ERROR # IN LIGHTS MOV @TCDT,R0 NBR CR.ERD  ;ELSE LEAVE USER BUFFER ALONE ; B) INITIALISE INTERNAL BUFFER POINTERS: CR.ISP: MOV PC,-(SP) ;GET BUFFER START ADD #CR.BUF-.,@SP MOV @SP,(PC)+ CR.IBS: .WORD 0 ADD #CR.BSZ,@SP ;NOW GET END MOV @SP,(PC)+ ;STORE AS CONTROL CR.IBE: .WORD 0 MOV (SP)+,(PC)+ ;... & AS INIT. PTR CR.IBP: .WORD 0 .PAGE INCB @PC  ;MUSTN'T COME HERE AGAIN! .ENDC ;TRANSFER SET-UP PROCESSOR: CR.TFR: .IFDF BINARY  ;FOR BINARYOLATION HERE IN CASE OF NO OPEN CLRB FORMFD ;FLAG TO EJECT AFTER A LINE TST BUFBGN  ;SEE IF BUFFER CALC'N NEEDED BNE LP.TF1  ;NOT NEEDED MOV PC,R1 ADD #LP.BUF-.,R1 ;CALC LOCAL BUFFER BEGIN MOV R1,BUFBGN ;SAVE FOR REF BELOW ADD #133.,R1 MOV R1,BUFEND ;SAME FOR END OF BUFFER LP.TF1: MOV LP,R0 ;DDB MOV 10(R0),R1 ;(NEG) WORD COUNT ASL R1  ;(NEG) CHAR COUNT DEC R1  ;DPESSION ARE MADE ;AND ARE DESCRIBED BELOW. ;CARD READER DRIVER (CR) ; ; A) FOR ASCII INPUT. AT EACH TRANSFER REQUEST ; ONE CARD WILL BE READ. UP TO 80 CHARACTERS, ; FOLLOWED BY CR-LF, WILL BE PASSED TO THE ; CALLING ROUTINE AS SPECIFIED BY THE WORD ; COUNT GIVEN. (IF THIS IS > 41, REMAINING ; BYTES WILL BE CLEARED. ; ALL ERRORS (INCLUDING 'HOPPER EMPTY' UPON ; AN 'OPEN' CALL) WILL BE TREATED AS 'DEVICE ; NOT READY'. USER CAN RESUME OPERATION BY ; RECTIFICATION OF ERROR OR REFILL OF Q ;NO - PUT INCORRECT BLK# IN R0 FOR DISPLAY HALT MOV TOG2,R0 ;TO FIND CORRECT BLOCK# EHLT3: XX ;HALT WITH CORRECT FWD BLK# IN LIGHTS MOV #4003,@TCCM ;TRY AGAIN DATCHK: MOV #-257.,TOG1 ;CHECK REV, CHKSUM AND DATA MOVB #7,@TCCM ;READ ALL DCHKL1: JSR PC,FLAG ;WAIT FOR WORD TST @TCDT ;IT SHOULD=0 BEQ DATOK ;IF SO PROCEED CLR @TCCM R VERSION ... BR .+4  ;... SWITCH TABLE FORCES ... BR CR.OXT  ;... CORRECT INIT. BR CR.ISP .ENDC MOV CR,R0  ;GET DDB ADDRESS ADD #6,R0  ;... & MOVE TO BUFFER STORE MOV (R0)+,-(SP) ;GET BUFFER POINTER MOV @SP,-(SP) ;... & BUILD BUFF END SUB @R0,@SP SUB (R0)+,@SP MOV (SP)+,(PC)+ ;SAVE RESULT ... CR.UBE: .WORD 0 .IFDF BINARY  ;IN BINARY VERSION ... MOVB @R0,R0  ;... CHECK MODE BICB #376,R0 MOVB R0,CR.ISW ;IF ASCII CLEAR SWITCH BESUE TO FIRST "INC R1" @LPXF02 MOV 6(R0),R2 ;MONITOR BUFFER START JSR PC,LPTR00 ;GO XFR MON BUF TO LOCAL & PRINT MOV SAVRTN,PC ;RETURN TO MONITOR CALLER ;********************************************************************* ;********************************************************************* LPER02: JSR PC,ERMES ;ERROR MOV #100,@#R.CM ;ISSUE RESET BEFORE RE-TEST LP.INT:    ;INTERRUPT ENTRY POINT CLR @#R.CM ;DISABLE INTERTHOPPER ; AND ENTRY OF 'CO' COMMAND AT KEYBOARD. ; THE END OF A FILE WILL BE DETERMINED BY ; RECOGNITION OF A TERMINAL CONTROL CARD:- ; 12-11-8-9 PUNCHED IN C.C.1 ; ;  XXXXXXXXXXXXXXXXXXXXXXXXX ;  X   X ;  X  NOTES  X ;  X   X ;  XXXXXXXXXXXXXXXXXXXXXXXXX ; .PAGE ;************************************************************************ ; 0) IN THE FOLLOWING, ALL REFERENCES TO '026' CODE NOW SHOULD ; BE INTERPRETED AS UNIVAC 'FIELDATA' U ;IF NOT STOP TAPE, MOV #3,R0 ;ERROR #3 HALT MOV TOG2,R0 ;FETCH BLK# AND EHLT4: XX ;HALT WITH BLK# IN LIGHTS, CONTINUE MOV #257.,R0 ;TO FIND DATA WORD POSITION. ADD TOG1,R0 ;DETERMINE WHICH WORD IS WRONG EHLT5: XX ;HALT WITH #OF WORD IN LIGHTS. 0=REV. CHKSUM MOV @TCDT,R0 ;CONTINUE TO FETCH BAD WORD EHLT6: XX ;HALT WITHVQ CR.RDC  ;IF BINARY WANTED ... MOV (SP)+,R0 ;... SET PTRS & SWITCH MOV CR.IBP,R1 CLR R2  ;SET INTERRUPT FLAG CR.BIN: CMP R1,CR.IBE ;INTERNAL BUFF EMPTY? BNE CR.BLP CR.ERD: MOV CR.IBS,CR.IBP ;IF SO RESET INTERNAL PTR MOV R0,-(SP) ;SAVE USER BUFF PTR ... CR.RDC: .ENDC MOV @SP,(PC)+ CR.UBP: .WORD 0 CLR @(SP)+  ;ZERO UNDERWAY FLAG MOV #101,@#CR.CSR ;ENABLE INT & GO FOR CD READ RTS PC  ;RETURN USER FOR NOW .IFDF BINARY WRUPTS BIT #40001,@#R.ST ;BUSY OR PAPER LO? BNE LPER02 ;YES MOV @#$RSAVE,-(SP) JSR R5,@(SP)+ ;SAVE REGISTERS ON STACK BIT #30,@#R.ST ;ANY PARITY ERRORS? BNE LPIN06 LPIN05: BIT #2,@#R.ST ;HOW ABOUT "ON-LINE"? BNE LPIN04  ;IT'S SET, SO O.K. TO PREPARE NEXT LINE LPIN06: CLR @#PS  ;DROP CPU LEVEL TO ALLOW OTHER INTS CLR @#R.AD  ;CLEAR ADDR REG IN PREP FOR RE-TRY LPIN03: MOV #100,@#R.CM ;ISSUE RESET TO CLEAR CXCODE. ;************************************************************************ ; 1) THIS DRIVER CAN BE ASSEMBLED FOR USE ; IN CONNECTION WITH EITHER '026' OR '029' ; PUNCHES OR BOTH AS INDICATED BY PARAMETER ; SPECIFICATION AT START OF SOURCE INPUT ; AS FOLLOWS:- ; ; A) "ONLY26=0" - READ ONLY '026' CODES. ; B) "ONLY29=0" - READ ONLY '029' CODES ; C) "DEFALT=0" - READ BOTH TYPES OF CODE ;    WITH '026' AS DEFAULT ; D) NIL - READ BOTH TYPES OF CODE ;    WITY BAD DATA IN LIGHTS. CONTINUE MOV #4003,@TCCM ;TO TRY AGAIN BR CHKL1 ;RESTART CHECK DATOK: INC TOG1 ;CHECK ALL DATA IN BLOCK BNE DCHKL1 ;KEEP CHECKING UNTIL DONE INC TOG2 ;SETUP FOR NEXT BLOCK CMP #1102,TOG2 ;HAVE ALL BLOCKS BEEN CHECKED? BNE CHKL2 ;IF NOT KEEP CHECKING RCHK: MOVB #3,@TCCM ;YES - FIND FWD EZ JSR PC,FLAG1 ;SKIZ ;WITH BINARY DATA ... CR.BLP: SWAB @R1  ;... COMPLETE CONVERSION MOV (R1)+,(R0)+ ;... & GIVE TO USER CMP R0,CR.UBE ;USER BUFFER FULL? BNE CR.BIN  ;IF NOT GET NEXT WORD MOV R1,CR.IBP ;OTHERWISE SAVE INT PTR TST R2  ;COME HERE ON INTERRUPT? BNE CR.ODN  ;IF SO MODE SW. SET MOV @SP,-(SP) ;ELSE MUST SIMULATE ... MOV -(R2),2(SP) ;... STORE PC & PS SUB #16,SP  ;... & DUMMY SAVE REGS. CR.ODN: TST (SP)+  ;IGNORE RETURN PC BR CR.DXT  ;... & TAKE CO[ONDITION MOV @#R.ST,R0 ;GET STATUS COM R0  ;INVERT FOR TEST BIT #6,R0  ;OF [READY] AND [ON-LINE] BNE LPIN03  ;ONE OF THEM IS STILL OUT MOV WCSAVE,R4 ;GET PREVIOUS WORD COUNT... BEQ LPIN02  ;DON'T PRINT IF BLANK LINE JSR PC,LPPR01 ;...AND GO PRINT LINE AGAIN BR LPIN02  ;...AND EXIT LPIN04: TSTB FORMFD ;DID A FORM FEED END LAST LINE? BEQ LPIN01 ;NO JSR PC,NEWPGE ;YES; EJECT NOW LPIN01: MOV MONCNT,R1 \H '029' AS DEFAULT ; ; IN CASES (C) & (D), DRIVER WILL USE DEFAULT ; UNLESS DIRECTED OTHERWISE BY ENTRY OF A ; CONTROL CARD PUNCHED IN C.C. 1:- ; ; 12-11-8 = '029' CODES FOLLOW ; 12-11-9 = '026' CODES FOLLOW ; ; 2) IF PARAMETER "BLANKS" IS DEFINED, ; ALL TRAILING SPACES WILL BE SUPPRESSED, ; WITH 'CR-LF' FOLLOWING LAST VALID DATA. ; IF THE CARD FILE IS PRECEDED BY CTL CARD WITH ; 12-11-0 ; PUNCHED IN C.C.1, THE TRAILING SP]P ON EZ BR EHLT7 MOV #1101,TOG2 ;FIRST REVERSE BLK=1101 RERCV: MOV #4000,@TCCM ;SET TAPE TO REVERSE MOV #DATBUF,R0 ;INITIALIZE DATA BUFFER POINTER ZLUP: CLR (R0)+ ;CLEAR NEXT DATA WORD CMP R0,#DATBUF+512. ;IS BUFFER FILLED? BLO ZLUP ;IF NOT KEEP CLEARING CHKL3: MOVB #3,@TCCM ;SEARCH REVERSE AND JSR PC,FLAG ;WAIT FOR FLAG CMP TOG2,@TCDT ^MPLETION EXIT .ENDC ;INTERRUPT SERVICE ROUTINES: ; A) CHECK FOR ERROR & COLLECT INPUT: CR.INT: MOV R0,-(SP) ;SAVE USER R0 MOV CR.UBP,R0 ;GET USER BUFF PTR ... MOV @#CR.CSR,-(SP) ;... & READER STATUS ASL (SP)+  ;CHECK FOR SPECIAL CASES BCS CR.ERR  ;GO RETRY IF ERROR BMI CR.DUN  ;CLEAN UP IF DONE MOV R1,-(SP) ;NOW SAVE USER R1 .IFDF BINARY  ;IN BINARY VERSION ... CR.ISW: BR .+4  ;... USE APPROPRIATE CONVERSION BR CR.ASC ; _ ;RESTORE CHAR COUNTER MOV MONBUF,R2 ;CURRENT MONITOR BUFFER POINTER JSR PC,LPTR00 ;GO GET ANOTHER LINE AND PRINT IT LPIN02: MOV @#$RSTOR,-(SP) JSR R5,@(SP)+ ;GO RESTORE REGISTERS SAVED ABOVE RTI ;RETURN TO INTERRUPTED PROGRAM LPTR00 = . ;SUBROUTINE TO PRINT ONE LINE FROM MON BUFFER MOV CURBUF,R3 ;LOCAL POINTER FROMLAST TIME BNE LPXF02 `ACES WILL NOT BE SUPPRESSED. ; IF A CONTROL CARD IS READ WITH C.C.1 CONTAINING: ; 12-11-0-8 ; AND SPACE COMPRESSION HAS NOT BEEN ; SUSPENDED (ABOVE), CC. 73-80 WILL BE IGNORED AND ; SPACE COMPRESSION WILL BEGIN AT CC. 72 AND MOVE DOWNWARD. ; 3) IF THE NUMBER OF COLUMNS READ AT CARD DONE IS ODD, ;12-17-72 ; THE CARD IS NOT PROCESSED AND THE "NOT READY" MSG IS OUTPUT. ;12-17-72 ; THIS FORMS A TRAP FOR THE OCCASIONAL EXTRA INTERRa;IS REVERSE BLOCK# CORRECT? BEQ WRTDTA ;YES - WRITE DATA .PAGE CLR @TCCM ;STOP TAPE AND MOV #5,R0 ;HALT WITH ERROR #5 HALT MOV @TCDT,R0 ;NO - PUT INCORRECT BLK# IN R0 FOR DISPLAY EHLT10: XX ;HALT WITH BAD REV. BLK# IN LIGHTS. CONTINUE MOV TOG2,R0 ;TO FIND CORRECT BLK# EHLT11: XX ;HALT WITH CORRECT REV. BLK# IN LIGHTS. CONTINUE b B) BINARY CONVERT & STORE: MOV CR.IBP,R1 ;GET INT BUFF PTR MOV @#CR.DB1,-(SP) ;... & INPUT MOV @SP,-(SP) ;... 2 COPIES FOR LATER COMB 1(R0)  ;ODD COLUMN? BPL CR.BST ASL @SP  ;IF SO SHIFT INPUT TO HIGH ASL @SP ASL @SP ASL @SP CLRB (R1)+  ;MAKE NXT INSTR = MOVB CR.BST: BISB 1(SP),-1(R1) ;SET HIGH BYTE AS REQD. MOVB (SP)+,(R1)+ ;THEN LOW BYTE MOV R1,CR.IBP ;SAVE PTR CMP (SP)+,#7400 ;NOW LOOK FOR EOF CARD BNE CR.BXT DECB @R0  ;...c ;STILL IN MIDDLE OF LINE LPTR01: MOV BUFBGN,R3 ;LINE WAS PRINTED: BEGIN NEW ONE LPXF01: MOVB #8.,TABPTR ;TAB POSITION COUNTER LPXF02: INC R1 ;COUNT DOWN MON-BUF CHARACTERS BEQ LPEMTY ;EMPTY: LEAVE BUF AS IS & RTN TO MON MOVB (R2)+,R5 ;FETCH NEXT CHAR BIC #177600,R5 ;CLEAR POSSIBLE PARITY BIT CMP R5,#40 ;<40? BGE LPXF03 ;NO CMP R5,#11 ;HORIZ TABdUPT. ;12-17-72 ; B) IF THE PARAMETER "BINARY" IS DEFINED AT ASSEMBLY, ; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ; ; THIS VERSION WILL ALSO ALLOW READING OF CARDS ; IN BINARY FORMAT. AS EACH CARD IS READ, 12 BITS FROM ; ALL 80 COLS WILL BE ACCESSED & STORED IN AN INTERNAL ; BUFFER IN A PACKED FORM, I.E. 4 COLS = 3 WORDS AS ; FOLLOWS:- ;  C.C.1 > WORD 1, BITS 15-4 ;  C.C.2 > WORD 1, BITS 3-0; WORD 2, BITS 15-8 ;  C.C.3 > WORD 2, BITS 7-0; e MOVB #3,@TCCM ;TO TRY PASS AGAIN JSR PC,FLAG1 ;FIND FWD EZ AND BR EHLT11+2 ;RESTART REVERSE BR RERCV ;CHECK PASS EHLT7: CLR @TCCM ;STOP TAPE MOV #4,R0 ;ERROR #4 HALT BR STRTJP ;RESTART EHLT12: CLR @TCCM ;STOP TAPE MOV #6,R0 ;ERROR #6 HALT BR STRTJP ;RESTART FRMBLK: MOV #-26f PUNCHED 12-11-0-1 BPL CR.BXT  ;... IN CC 1 THRU 8 ASLB @R0 BPL CR.EOF  ;IF FND IGNORE REST OF CARD BR CR.CXT  ;OTHERWISE TRY NEXT TIME .ENDC ; C) ASCII CONVERT & STORE: CR.ASC: MOVB @#CR.DB2,R1 ;GET COMPACTD INPUT TSTB @R0  ;IF FIRST C.C. ... BNE CR.CVT CMPB R1,#330 ;... LOOK FOR E-O-F BEQ CR.EOF .IFDF BLANKS  ;FOR BLANK SUPPRESS ... CMPB R1,#340 ;... LOOK FOR SUPPRESS OFF BEQ CR.ZONg? BEQ LP.TAB ;YES CMP R5,#12 ;LINE FEED? BEQ LPPRNT ;YES: END OF THIS LINE CMP R5,#14 ;FORM FEED? BNE LPXF02 ;NO: ILLEGAL, SO IGNORE INCB FORMFD ;YES: FLAG FOR HOME AFTER PRINT BR LPPRNT ;GO PRINT LINE LPXF03: CMP R5,#140 ;CHAR > 137? BGE LPXF02 ;YES: IGNORE JSR PC,PARITY ;LEGAL: GO SET EVEN PARIhWORD 3, BITS 15-12 ;  C.C.4 > WORD 3, BITS 11-0 ; ; THE PACKED FORM WILL BE TRANSFERRED TO THE USER ; BUFFER UNTIL THIS IS FILLED, ANY DATA THEN REMAINING ; IN THE INTERNAL BUFFER BEING RETAINED UNTIL THE ; NEXT READ REQUEST. ; ; TREATMENT OF ASCII READING WILL STILL FOLLOW PATTERN ; DESCRIBED IN THE PREVIOUS PARAGRAPH WITHOUT EXCEPTION. ; ; THE ONLY CONTROL CARD WHICH WILL HAVE ANY EFFECT ; IN BINARY READING WILL BE THAT INDICATING E.O.F. (IN ; THIS CASE 12-11-0-1 PUNCHING MUST APi6.,R4 ;COUNTER FOR 1 BLOCK'S WORTH OF MKTRACK MOV #BLKMRK,R0 ;POINTER TO MARK CODE TABLE LP6: JSR PC,FLAG ;WAIT FOR FLAG MOV (R0)+,@TCDT ;FETCH NEXT MARK CODE INC R4 ;DONE ALL? BNE LP6 ;IF NOT FETCH ANOTHER CODE RTS PC ;IF SO, EXIT .PAGE WRTDTA: MOV #-400,@TCWC ;WC FOR 1 BLOCK OF DATA MOV #DATBUF,@TCBA ;CA INITIALIZATION MOVBj CMPB R1,#350 ;OPTION TO SUPPRESS CC. 73-80? BEQ CR.EON ;YES:GO SET SWITCH .ENDC .IFNDF ONLY26&ONLY29 ;FOR DUAL PUNCH DRIVER ... CMPB R1,#310 ;... CHECK IF 029 CONTROL BEQ CR.029 CMPB R1,#320 ;... OR 026 CONTROL BEQ CR.026 .ENDC CR.CVT: CMPB #140,R1 ;IS CHAR [!]? BNE CR.CV1 ;NO MOVB #41,-(SP) ;YES:LOAD ASCII CODE... BR CR.CV2 ;.kTY MOVB R5,(R3)+ ;PUT INTO LOCAL BUFFER DECB TABPTR ;...AND KEEP TRACK OF POSITION BNE .+10 MOVB #8.,TABPTR ;RESET POINTER CMP R3,BUFEND ;END OF LOCAL BUFFER? BLOS LPXF02 ;NO: GET ANOTHER LPPRNT: MOVB #240,(R3) ;SPACE IN POSSIBLE ODD BYTE MOV R1,MONCNT ;SAVE CHAR COUNTER MOV R2,MONBUF ;SAVE MON BUF POINTER MOV BUFBGN,R4 ;LOCAL BlPEAR IN AT LEAST ; C.C. 1 THRU 8). ; ; N.B. WHEN ASSEMBLED FOR USAGE IN BOTH MODES, AN 'OPEN' ; CALL WILL NOT CAUSE READING OF A CARD TO ALLOW THIS ; TO BE TRANSLATED AS REQUIRED BY THE READ MODE ; SPECIFIED BY THE USER. ; ; C) DRIVER CAN ALSO BE USED FOR 80-COLUMN MARK ; SENSE READER. FOR 40 -COLUMN READER, ECONOMIES ; IN BUFFER SIZE CAN BE OBTAINED BY DEFINITION ; AT ASSEMLBY OF PARAMETER "MARKS". THIS WILL ; ALSO PREVENT AUTOMATIC REMOVAL OF COLS 33-40 ; IN 'BLANKS-SUPPRESS' MOm #15,@TCCM ;WRITE DATA TO MAKE PARITY OK JSR PC,FLAG ;WAIT FOR COMPLETION OR ERROR DEC TOG2 ;DECREMENT BLOCK# BPL CHKL3 ;IF BELOW 0 FINISH VP, OTHERWISE KEEP CHECKING FINIS: MOVB #3,@TCCM ;FIND REVERSE EZ JSR PC,FLAG1 ;SKIP ON EZ BR EHLT12 ;LAST REVERSE BLOCK # WAS NOT 0. CLR @TCCM ;STOP TAPE: MOV #BELS4,R0 ;UNCONDITIONAL FOUR BEn..FOR BUFFER BELOW CR.CV1: CMPB #240,R1 ;IS CHAR [?]? BNE CR.CV3 ;NO MOVB #77,-(SP) ;YES: LOAD AS ABOVE... CR.CV2: MOVB (SP)+,(R0)+ ;...AND POP FROM STACK TO KEEP IT HONEST BR CR.ST1 ;THEN SKIP TO END OF CONVERT LOOP CR.CV3: ;I COULDN'T THINK OF A BETTER WAY TST R1 BPL .+6  ;CONVERT CODES >200 ... ADD #340,R1  ;... TO RANGE >140 MOV R1,-(SP)  ;STACK CODE FOR INDEXING CR.CV4: SoUFFER SUB R3,R4 ;GET (NEG) CHAR COUNT ASR R4 ;(NEG) WORD COUNT BNE LPPR01 ;SOMETHING THERE: GO PRINT IT CLR R3 ;PRINT BUFFER EMPTY: RESET POINTER CMP R5,#12 ;WAS LAST MON BUF CHAR LINE FEED? BNE LPPR02 ;NO MOVB #201,ONECHR ;YES - SET UP TO SINGLE-SPACE CMPB @#SWR,#2 ;IS DOUBLE-SPACE SELECTED? BNE LPPR04  ;NO INCB ONECHR pDE OF USAGE. ;  XXXXXXXXXXXXXXXXXXXXXXXXX ;  X   X ;  X  NOTE  X ;  X   X ;  XXXXXXXXXXXXXXXXXXXXXXXXX ; ; PARAMETER DEFINITIONS CAN BE MADE DURING PASS 1 ; OF THE ASSEMBLY ONLY IF REQD AS DESCRIBED IN ; PAL-11R MANUAL, SECTION 9-2, E.G. ; ;  #CR,LP:,/PA:2 ; ;  XXXXXXXXXXXXXXXXXXXXXXXX ; .TITLE CR .GLOBL CR ; STANDARD PARqLLS JSR PC,PRINT1 MOV #MSG3,R0 ;FORMATTING HAS BEEN COMPLETED CORRECTLY JSR PC,PRINT ;MESSAGE ON TTY STRTJP: JMP START1 ;GO BACK FOR NEXT TAPE FLAG: BIT #B15+B7,@TCCM ;TEST ERROR AND READY BITS BEQ FLAG ;KEEP CHECKING IF BOTH DOWN BMI .+4 ;SKIP TO ERROR IF B15=1 RTS PC ;EXIT ON READY FLAG ERR1: MOV #1,R0 ;ERROR #1 HALT rUB #40,R1  ;FOR EACH 40 IN CODE ... BMI CR.STO  ;... ADD 21 & STRIP 40 SUB #17,@SP  ;... TO GET TABLE INDEX BR CR.CV4 ;...AND KEEP LOOKING CR.STO: .IFNDF ONLY26&ONLY29 ADD CR.TOS,@SP ;PICK APPROP. TABLE .ENDC ADD PC,@SP  ;COMPUTE ADDR OF BYTE REQD ADD #CR.TBL-.,@SP MOVB @(SP)+,(R0)+ ;... & STORE IN BUFFER CR.ST1: CMP R0,CR.UBE ;BUFFER FULL? .PAGE BEQ CR.EXT CR.BXT: BISB @PC,@R0  ;IF NOT SET UNDERWAY FLAG CR.CXT: MOVs ;SET UP TO DOUBLE-SPACE LPPR04: JSR PC,PRTONE ;GO UPSPACE ONE OR TWO BR LPTR01  ;...AND GO BACK FOR MORE LP.TAB: MOVB #240,(R3)+ ;ALWAYS TAB AT LEAST ONE SPACE CMP R3,BUFEND ;CHECK FOR BUFFER END BHI LPPRNT ;YES: PRINT NOW DECB TABPTR ;MORE TO SPACE? BNE LP.TAB ;YES CMPB @#SWR+1,#1 ;SEE IF "PAL" SPACING SELECTED BNE LPXF01  ;NO MOV R3,R5  ;CURRENT BUFFER tAMETER DEFINITIONS: BLANKS = 0 ;ENABLE BLANK SUPPRESSION DEFALT = 0 ;READ "FIELDATA" CODE BY DEFAULT R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 ;INTERFACE TABLE: CR: .WORD 0   ;CURRENT DDB OR 0 IF IDLE .IFNDF BINARY .BYTE 224,0  ;FACILITIES: ASCII INPUT,OPEN INC. .ENDC .IFDF BINARY .BYTE 234,0  ;ALLOW BINARY IF REQD. .ENDC .BYTE 3  ;STD BUFFER SIZE = 96 BYTES .BYTE CR.INT-CR,300 ;INT'RUPT SVCE AT PRL 6 u MOV @TCST,R0 ;MOVE STATUS TO R0 FOR DISPLAY EHLT1: XX ;STATUS ERROR HALT. STATUS IN DATA ... BR STRTJP ;...LIGHTS. FIX PROBLEM & RESTART PRGRM FLAG1: BIT #B15+B7,@TCCM ;TEST ERROR AND READY BITS BEQ FLAG1 ;WAIT FOR EITHER FLAG BPL FL1RTN ;READY IS UP: EXIT TST @TCST ;IS ERROR END ZONE? BPL ERR1 ;NO - GO TO REGULAR STATUS ERROR v R0,CR.UBP ;SAVE NEW POINTER MOV (SP)+,R1 ;RESTORE USER REGS. CR.IXT: MOV (SP)+,R0 RTI   ;... & EXIT ; D) CARD COMPLETED: CR.DUN: CLRB @#CR.CSR ;STOP INTERRUPTS TSTB @R0  ;IF NO PROCESSING YET ... BEQ CR.RPT  ;... CONTINUE BIT #1,R0  ;SEE IF ADDRESS IS EVEN (SHOULD BE FOR CC.81) BNE CR.ERR  ;SOMETIMES MISSED INT ON FIRST CARD MOV (SP)+,R0 ;OTHERWISE RESTORE USER R0 MOV @#CR.RSV,-(SP) ;... & NOW SAVE ALL JSR R5,@(SP)+ CRwPOINTER SUB BUFBGN,R5 ;LINE POSITION CMP R5,#24.  ;@ BEGIN OF OP-CODE FIELD? BLT LPXF01  ;NOT THERE YET BGT LP.TA1  ;PAST IT: MAY NEED FURTHER WORK MOVB #6,TABPTR ;SET TO SPACE OVER SIX MORE TO LINE UP BR LP.TAB  ;AND GO INSERT THE SPACES .PAGE LP.TA1: BIT #7,R5  ;ARE WE AT AN EVEN-8 TAB BOUNDARY? BNE LPXF01  ;NO: DON'T SWEAT IT CMPB -(R3),-(R3) ;YES: BACK IT UP BY TWO BR LPXF01  ;AND GO BACK FOR MORE LPPR02: TSTB FORMFD ;x .BYTE CR.OPN-CR ;OFFSET TO OPEN .BYTE CR.TFR-CR ;OFFSET TO TRANSFER .BYTE 0,0,0  ;(NO CLOSE OR SPEC. FUNC.) CR.NAM: .RAD50 'CR' ;OPEN PROCESSOR: CR.ONR: JSR PC,CR.NRY CR.OPN: ;12-19-72 CLR @#CR.CSR ;GET ACTUAL STATUS, MINUS TRANSITION BITS ;12-19-72 BIT #400,@#CR.CSR ;IS READER READY? ;12-19-72 BNE CR.ONR  ;IF NOT TELL USER TO READY .yADD #2,(SP) ;INCRENT EXIT POINTER TO SKIP ON RETURN FL1RTN: RTS PC ;EXIT ON READY OR END ZONE .PAGE COBLKG: MOV #1101,R0 ;COMPLEMENT OBVERSE BLOCKS 1101-0 MOV #RBN,R1 ;BUFFER POINTER INITIALIZATION CBKL1: MOV R0,R2 ;FETCH WORD TO BE PROCESSED COM R2 ;COMPLEMENT IT MOV #-3,TOG1 ;COUNT OF 3 MOV R2,R3 ;MOV WORD INTO WORK AREA ROR z.CDN: BR .+12  ;SWITCH CLEARED UPON E-O-F MOVB #4,CR.CDN ;AND IMMEDIATELY RESET BR CR.DXT  ;BYPASSES USUAL END-CARD PROCESSING MOV CR.UBP,R0 ;SET USER BUFF PTR .IFDF BINARY  ;FOR BINARY VERSION ... TSTB CR.ISW  ;... CHECK IF BINARY READ BNE CR.BDN  ;IF SO ACTION ACCRODINGLY .ENDC MOV CR.UBE,R1 ;FOR ASCII, SET END PTR .IFDF BLANKS  ;... & PERHAPS CHECK SUPPRESS CR.ZSW: BR .+4  ;SWITCH ON? BR CR.ADN  ;IF NOT NO SUPPRESSION CR.ESW: BR .+6 {WAS LAST MON BUF CHAR FORM FEED? BEQ LPEMTY ;NO: EXIT WITH NO ACTION JSR PC,NEWPGE ;YES: EJECT TO TOP BR LPTR01  ;...AND GO BACK FOR MORE LPPR01: MOV BUFBGN,@#R.AD ;LOAD MEMORY ADDRESS REGISTER MOV R4,@#R.WC ;OUTPUT WORD COUNT MOV R4,WCSAVE ;SAVE WORD-COUNT FOR POSSIBLE RE-PRINT MOV #1,@#R.LF ;SET FOR AUTOLINEFEED CMPB @#SWR,#2 ;HAS CONSOLE SELECTED DOUBLE-SPACING? BNE LPPR03  ;NO: LEAVE IN SINGLE-SPACE|IFNDF ONLY26&ONLY29 .IFNDF DEFALT  ;FOR DUAL-PUNCH DRIVER ... CLR (PC)+  ;... SET CONV. TABLE OFFSET CR.TOS: .WORD 0 ;TABLE OFFSET IF NOT DEFALT .ENDC ;12-17-72 .IFDF DEFALT  ;... AS APPROPRIATE MOV #104,(PC)+ CR.TOS: .WORD 104 ;OFFSET FOR 'DEFALT'. INITIALIZED IN ; ;CASE OF NO OPEN. .ENDC ;} R2 ;SHIFT NEXT 3 BITS INTO POSITION ROR R2 ;FOR MANIPULATION ROR R2 ;ON NEXT PASS ;AND 1,R3 BIC #-1-1,R3 ;MASK 1 APPLIED TO R3 MOV R3,-(SP) ;STACK IT CBKL2: MOV R2,R3 ;MOVE BYTE(3) INTO WORK AREA ROR R2 ;SHIFT ROR R2 ;NEXT 3 BITS ROR R2 ;INTO POSITION ;AND 7,R3 BI~ ;SWITCH INITED TO ALLOW CC. 73-80 SUB #8.,R0  ;OTHERWISE LOSE CC 73-80 CMP -(R0),(PC)+ ;TRAILING SPACES NOW SUPPRESSED .BYTE 240,240 BEQ .-4 TST (R0)+  ;ADJUST PTR WHEN DONE CR.ADN: .ENDC CLR -(R1)  ;CLEAR REST OF BUFFER CMP R1,R0 BHI .-4 MOV (PC)+,@R1 ;FINALLY MOVE IN CR-LF .BYTE 215,12 CR.DXT: MOV CR,R0  ;GET DDB ADDRESS JMP @14(R0)  ;TAKE COMPLETION EXIT .IFDF BINARY CR.BDN: MOV CR.IBS,R1 ;FOR BINARY, INIT INT PTR MOVB  MODE MOV #3,@#R.LF ;SET FOR AUTO-DOUBLESPACE LPPR03: MOV #144000,@#R.CM ; /////PRINT ///// CLR CURBUF ;FORCE NEW LINE NEXT TIME RTS PC LPEMTY = . ;MONITOR BUFFER IS EMPTY MOV R3,CURBUF ;SAVE CURRENT LOCAL BUFFER POINTER JMP LP.EXT ;AND TAKE COMPLETION EXIT ;(BUFFER POINTER IS REMEMBERED UNTIL NEXT BUFFER TRANSFER, SO THAT ; CURRENT LINE CAN BE CONTINUED TO A LINE TERMINATOR. THE ABOVE EX€12-17-72 .ENDC ;12-17-72 .IFDF BLANKS  ;IF BLANK-SUPPRESS VERSION ... MOVB #1,CR.ZSW ;FORCE SPACE-SUPPRESSION ON MOVB #2,CR.ESW ;...BUT DON'T SUPPRESS CC. 73-80 .ENDC .IFNDF BINARY TST (SP)+  ;IGNORE INTERIM RETURN BR CR.DXT  ;... & TAKE COMPLETION .ENDC .IFDF BINARY  ;FOR BINARY VERSION ... CLRB CR.TFR  ;... FORCE NO OPEN READ BR CR.ODN CR.OXT: INCB CR.TFR �C #-7-1,R3 ;MASK 7 APPLIED TO R3 MOV R3,-(SP) ;STACK BYTE INC TOG1 ;DONE ALL? BNE CBKL2 ;NO CLR R3 ;YES - CLEAR WORK AREA ADD 6(SP),R3 ;ADD AND JSR R5,RTHL ;SHIFT BYTES IN REVERSE ORDER ADD 4(SP),R3 ;NEXT BYTE JSR R5,RTHL ;SHIFT ADD 2(SP),R3 ;NEXT BYTE JSR R5,RTHL ;SHIFT‚@R0,R2  ;EXIT IF EOF SEEN BMI CR.DXT  ;ALSO SETS INTERRUPT FLAG JSR PC,CR.BIN ;ELSE GO MOVE DATA TO USER MOV @#CR.SXT,R5 ;IF COME BACK, MORE READ REQD. JMP 4(R5)  ;SO TAKE SYSTEM EXIT .ENDC ;SPECIAL CASE PROCESSING: ; A) ERROR ROUTINE: CR.ERR: CLRB @#CR.CSR ;STOP INTERRUPTS JSR PC,CR.NRY ;INFORM OPERATOR CR.RPT: JSR PC,CR.AGN ;IF RETURN TRY AGAIN BR CR.IXT  ;... & EXIT FOR NOW ; B) END OF FILE CARD SEEN: CR.EOF: MOV CR,R1  ƒIT ; PROVIDES A STACK-POP, WHICH IN THIS CASE REMOVES THE CALL TO THIS ; SUBROUTINE.) PARITY = . ;SUBROUTINE TO SET EVEN PARITY IN BIT7 CLRB PRTYCT ;ACCUMULATE SET BITS MOVB #7,SHFTCT ;TEST LOW SEVEN BITS ONLY MOV R5,-(SP) ;DO WORK ON STACK PARIT1: RORB (SP) ;SHIFT OFF LOW BIT ADCB PRTYCT ;ACCUM COUNT OF SET BITS DECB SHFTCT ;MORE TO TE„ ;... BY MAKING COME HERE BR CR.ODN  ;... BEFORE EXIT .ENDC ;SUBSIDIARY ROUTINES: ; A) RESTART AFTER ERROR: CR.AGN: .IFDF BINARY  ;IN BINARY VERSION ... TSTB CR.ISW  ;... CHECK IF BINARY READ BEQ CR.TFR  ;IF NOT CAN JUST START OVER BR CR.ERD  ;ELSE LEAVE USER BUFFER ALONE ; B) INITIALISE INTERNAL BUFFER POINTERS: CR.ISP: MOV PC,-(SP) ;GET BUFFER START ADD #CR.BUF-.,@SP MOV @SP,(PC)+ CR.IBS: .WORD 0 ADD #CR.BSZ,@SP ;NOW GET END MOV @SP,(PC)+ … ADD (SP),R3 ;LAST BYTE FROM STACK JSR R5,RTHL ;SHIFT JSR R5,RTHL ;SHIFT ADD #77,R3 ;=00 FWD MOV R3,(R1)+ ;STORE COMPL. OBVERSE BLOCK # IN TABLE ADD #10,SP ;ADVANCE STACK DEC R0 ;DECREMENT BLK# BPL CBKL1 ;LOOP UNTIL IT PASSES 0 RTS PC ;THEN EXIT .PAGE RTHL: CLC ;THREE BIT†;GET DDB ADDRESS .IFNDF BINARY  ;FOR SIMPLE VERSION ... MOV 10(R1),16(R1) ;... NO DATA READ ON EOF .ENDC .IFDF BINARY  ;MAYBE SOME IF BINARY ... ADD #16,R1  ;SO MOVE TO UNUSED COUNT STORE MOV R0,@R1  ;... & COMPUTE VALUE REQD SUB CR.UBE,@R1 ASR @R1  ;... AS WORDS! .ENDC COM @R0  ;SET UNDERWAY FLAG TO PREVENT READING MORE CARDS CLRB CR.CDN  ;BYPASS END-CARD PROCESSING FOR E-O-F CR.EXT: BISB #2,@#CR.CSR ;ALLOW REST OF CARD THRU BR CR.CXT ; C‡ST? BNE PARIT1 ;YES TST (SP)+ ;NO: POP WORKING WORD ASL R5 ;POSITION CHAR RORB PRTYCT ;IF ODD # OF BITS SET, WILL SET C RORB R5 ;SHIFT C INTO BIT #7 OF CHAR RTS PC ERMES: MOV LP.NAM,-(SP) ;PRINT A002 MESSAGE MOV #402,-(SP) IOT RTS PC ;RETURN WHEN OPERATOR TYPES CO NEWPGE: MOVB #300,ONECHR ;CODE FOR Vˆ;STORE AS CONTROL CR.IBE: .WORD 0 MOV (SP)+,(PC)+ ;... & AS INIT. PTR CR.IBP: .WORD 0 .PAGE INCB @PC  ;MUSTN'T COME HERE AGAIN! .ENDC ;TRANSFER SET-UP PROCESSOR: CR.TFR: .IFDF BINARY  ;FOR BINARY VERSION ... BR .+4  ;... SWITCH TABLE FORCES ... BR CR.OXT  ;... CORRECT INIT. BR CR.ISP .ENDC MOV CR,R0  ;GET DDB ADDRESS ADD #6,R0  ;... & MOVE TO BUFFER STORE MOV (R0)+,-(SP) ;GET BUFFER POINTER MOV @SP,‰ LEFT SHIFT, CLEAR CARRY ROL R3 ;SHIFT 1 ROL R3 ; 2 ROL R3 ; 3 RTS R5 ;THEN EXIT PRINT: TST @#SR ;IS PRINT-SUPPRESS SWITCH ON? BMI PRTN PRINT1: MOVB (R0)+,R1 BNE .+4 PRTN: RTS PC MOVB R1,@#TPB TSTB @#TPS ;DONE? BPL .-4 ;NOT YET BR PRINT1 MSGA: .BYTE CR,LF,Š) CONTROL CARD SEEN: .IFNDF ONLY26&ONLY29 ;FOR DUAL PUNCH DRIVER ... CR.026: MOV #104,CR.TOS ;... SET TABLE OFFSET ... BR CR.EXT  ;... & IGNORE REST OF CTL CARD CR.029: CLR CR.TOS BR CR.EXT .ENDC .IFDF BLANKS  ;IN SUPPRESS VERSION CR.ZON: CLRB CR.ZSW ;...SET TO OVERRIDE BLANK SUPPRESSION BR CR.EXT  ;AGAIN IGNORE REST OF CARD CR.EON: CLRB CR.ESW ;SET SWITCH TO IGNORE CC.73-80 BR CR.EXT .ENDC ;READER N‹FU CHANNEL #1 JSR PC,PRTONE ;GO OUTPUT IT CLRB FORMFD  ;RESET FLAG AFTER EJECT RTS PC .PAGE PRTONE = . ;SUBRTNE TO PUT OUT ONE CHARACTER BIT #4,@#R.ST ;TEST "PRINTER READY" BEQ .-6 ;WAIT TILL THRU SO WON'T CLOBBER MODE CLR @#R.LF ;MODETO FIRST-CHAR MOV #-1,@#R.WC ;ONE WORD MOV PC,-(SP) ;BUILD ADDRESS... ADD #ONECHR-.Œ-(SP) ;... & BUILD BUFF END SUB @R0,@SP SUB (R0)+,@SP MOV (SP)+,(PC)+ ;SAVE RESULT ... CR.UBE: .WORD 0 .IFDF BINARY  ;IN BINARY VERSION ... MOVB @R0,R0  ;... CHECK MODE BICB #376,R0 MOVB R0,CR.ISW ;IF ASCII CLEAR SWITCH BEQ CR.RDC  ;IF BINARY WANTED ... MOV (SP)+,R0 ;... SET PTRS & SWITCH MOV CR.IBP,R1 CLR R2  ;SET INTERRUPT FLAG CR.BIN: CMP R1,CR.IBE ;INTERNAL BUFF EMPTY? BNE CR.BLP CR.ERD: MOV CR.IBS,CR.IBP ;IF SO RESET INTERNAL PTR �LF .ASCII *DECTAPE FORMATTER V03A* .BYTE CR,LF .ASCII *SWITCH #15 UP TO SUPPRESS TTY MESSAGES* .BYTE CR,LF,0 BELS4: .BYTE 7,7 BELS2: .BYTE 7,7,0 MSG1: .BYTE CR,LF,LF,LF,LF .ASCII *NEXT TAPE: BOTH SWITCHES "UP"* .BYTE CR,LF,0 MSG2: .BYTE CR,LF .ASCII *T&M GOOD: "WRTM" DOWN* .BYTE CR,LF,0 MSG3: .BYTE CR,LF .ASCII *FORMAT COMPLETE* .BYTE 0 .EVEN .PAGE ŽOT READY SUBROUTINE: CR.NRY: MOV CR.NAM,-(SP) ;IDENTIFY DEVICE MOV #402,-(SP) ;GIVE ONT READY CODE IOT   ;... & CALL EDP RTS PC  ;TRY AGAIN IF COME BACK ; ;MISCELLANEOUS DEFINITIONS: CR.CSR=177160 CR.DB1=177162 CR.DB2=177164 CR.SXT=42 CR.RSV=44 CR.TBL: ;PARITY ASCII CONVERSION TABLE FOR 029 PUNCH .IFNDF ONLY26 .BYTE 240  ;SPACE .BYTE 261  ;1 .BYTE 262  ;;2 .BYTE 63  ;3 .BYTE 264  ;4 .BYTE 65  ;5 .BYTE 66  ;6 .�,(SP) ;...FOR THE ONE/CHARACTER WORD MOV (SP)+,@#R.AD ;LOAD MEMORY ADDRESS REG MOV #4000,@#R.CM ; START : NO INTERRUPT TST @#R.ST ;WAIT FOR DONE BPL .-4 BIT #4,@#R.ST ;TEST "PRINTER READY" BEQ .-6 ;SAME AS ABOVE,IN CASE BACK TO AUTO MODE RTS PC WCSAVE: .WORD 0 SAVRTN: .WORD 0 CURBUF: .WORD 0 BUFBGN: .WORD 0 BUFEND: .WORD 0 MONCNT: .WORD � MOV R0,-(SP) ;SAVE USER BUFF PTR ... CR.RDC: .ENDC MOV @SP,(PC)+ CR.UBP: .WORD 0 CLR @(SP)+  ;ZERO UNDERWAY FLAG MOV #101,@#CR.CSR ;ENABLE INT & GO FOR CD READ RTS PC  ;RETURN USER FOR NOW .IFDF BINARY  ;WITH BINARY DATA ... CR.BLP: SWAB @R1  ;... COMPLETE CONVERSION MOV (R1)+,(R0)+ ;... & GIVE TO USER CMP R0,CR.UBE ;USER BUFFER FULL? BNE CR.BIN  ;IF NOT GET NEXT WORD MOV R1,CR.IBP ;OTHERWISE SAVE INT PTR TST R2  ‘ BLKMRK: .WORD 010101 ;INTERBLOCK SYNC=25 .WORD 010110 ;FORWARD BLOCK MARK=26 .WORD 011010 ;REVERSE GUARD=32 .WORD 001000 ;LOCK=10 .WORD 001000 ;REVERSE PARITY=10 .WORD 001000 ;REVERSE FINAL=10 .WORD 001000 ;REVERSE PRE-FINAL=10 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=7’BYTE 267  ;7 .BYTE 270  ;8 .BYTE 240  ;EMPTY .BYTE 72  ;: .BYTE 243  ;# .BYTE 300  ;@ .BYTE 47  ;' .BYTE 275  ;= .BYTE 42  ;" .BYTE 71  ;9 ; .BYTE 60  ;0 .BYTE 257  ;/ .BYTE 123  ;S .BYTE 324  ;T .BYTE 125  ;U .BYTE 126  ;V .BYTE 327  ;W .BYTE 330  ;X .BYTE 131  ;Y .BYTE 240  ;EMPTY .BYTE 335  ;] .BYTE 254  ;, .BYTE 245  ;% .BYTE 137  ;_ .BYTE 276  ;> .BYTE 77  ;? .BYTE 132 0 MONBUF: .WORD 0 ONECHR: .BYTE 0 .BYTE 0 FORMFD: .BYTE 0 TABPTR: .BYTE 0 PRTYCT: .BYTE 0 SHFTCT: .BYTE 0 .EVEN LP.BUF = . ;LOCAL BUFFER .=.+160. ;RESERVE SPACE FOR BUFFER .END ”;COME HERE ON INTERRUPT? BNE CR.ODN  ;IF SO MODE SW. SET MOV @SP,-(SP) ;ELSE MUST SIMULATE ... MOV -(R2),2(SP) ;... STORE PC & PS SUB #16,SP  ;... & DUMMY SAVE REGS. CR.ODN: TST (SP)+  ;IGNORE RETURN PC BR CR.DXT  ;... & TAKE COMPLETION EXIT .ENDC ;INTERRUPT SERVICE ROUTINES: ; A) CHECK FOR ERROR & COLLECT INPUT: CR.INT: MOV R0,-(SP) ;SAVE USER R0 MOV CR.UBP,R0 ;GET USER BUFF PTR ... MOV @#CR.CSR,-(SP) ;... & READER STATUS •0 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 – ;Z ; .BYTE 55  ;- .BYTE 312  ;J .BYTE 113  ;K .BYTE 314  ;L .BYTE 115  ;M .BYTE 116  ;N .BYTE 317  ;O .BYTE 120  ;P .BYTE 321  ;Q .BYTE 240  ;EMPTY .BYTE 41  ;! .BYTE 44  ;$ .BYTE 252  ;* .BYTE 251  ;) .BYTE 273  ;; .BYTE 134  ;\ .BYTE 322  ;R ; .BYTE 246  ;& .BYTE 101  ;A .BYTE 102  ;B .BYTE 303  ;C .BYTE 104  ;D .BYTE 305  ;E .BYTE 306  ;F .BYTE 107  ;—.�¯”(�h¯”,÷æ.”VÀ4�÷ V pþß5pþø×DD÷•Ë.&Ú÷•ØÖ vÀÈÿÀe&¦âä——.L ßApþ‡&ÀîÿæpþÖ b‡;�fÁ—tþÈ‹W £.rØ`W àpW èpW ÈgW Ð`Á¥`æ•!Ë.˜Á¥ æ•?�•Á €ÁeàfÁå �Îåúb.¾Îm`ÿÎaÎe¼�—7 xÿ;ÈÓ7tÿ�€ŠpþÈ‹&.äÀ5€æ$^ ÷•øÿÀJÿÁBÿÅ. Àå(  ýÐ ! @ ý‚É� ÀÜþ˜ASL (SP)+  ;CHECK FOR SPECIAL CASES BCS CR.ERR  ;GO RETRY IF ERROR BMI CR.DUN  ;CLEAN UP IF DONE MOV R1,-(SP) ;NOW SAVE USER R1 .IFDF BINARY  ;IN BINARY VERSION ... CR.ISW: BR .+4  ;... USE APPROPRIATE CONVERSION BR CR.ASC ; B) BINARY CONVERT & STORE: MOV CR.IBP,R1 ;GET INT BUFF PTR MOV @#CR.DB1,-(SP) ;... & INPUT MOV @SP,-(SP) ;... 2 COPIES FOR LATER COMB 1(R0)  ;ODD COLUMN? BPL CR.BST ASL @SP  ;IF SO SHIFT INPUT TO HIGH ASL @SP ™ ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 šG .BYTE 110  ;H .BYTE 240  ;EMPTY .BYTE 333  ;[ .BYTE 56  ;. .BYTE 74  ;< .BYTE 50  ;( .BYTE 53  ;+ .BYTE 336  ;^ .BYTE 311  ;I .ENDC ;PARITY ASCII CONVERSION TABLE FOR "FIELDATA" PUNCH: ; COMPRESSED CARD CODE: ; BYTE BIT POSITIONS: 7 6 5 4 3 2-1-0 ; CARD ROWS PUNCHED: ^ 12 11 ^ 0 9 8 ^ 1,2,3,4,5,6,OR 7 .IFNDF ONLY29 ; COMPRESSED FIELDATx Špþ÷ 8³.0÷ ÿÑÁÆþqH 7ЬÿßÕpþÂ÷DÎþøÍ.V7 Èþõ7Фÿò7Š¢ÿïæ þæŠþÿß5pþÿ.|ü‡ ±²3´56·¸ :£À'½"90¯SÔUVרY Ý¬¥_¾?ZN.¢-ÊKÌMNÏPÑ !$ª©»\Ò¦ABÃDÅÆGH Û.<(+ÞÉ ±²3.È´56·¸ ¦½':¾À90¯SÔUVרY _¬(¥\"Z-ÊKÌMNÏP‹"îÑ  $ªÝ»ÞÒ+ABÃDÅÆGH  .©Û<£É[óœASL @SP ASL @SP CLRB (R1)+  ;MAKE NXT INSTR = MOVB CR.BST: BISB 1(SP),-1(R1) ;SET HIGH BYTE AS REQD. MOVB (SP)+,(R1)+ ;THEN LOW BYTE MOV R1,CR.IBP ;SAVE PTR CMP (SP)+,#7400 ;NOW LOOK FOR EOF CARD BNE CR.BXT DECB @R0  ;... PUNCHED 12-11-0-1 BPL CR.BXT  ;... IN CC 1 THRU 8 ASLB @R0 BPL CR.EOF  ;IF FND IGNORE REST OF CARD BR CR.CXT  ;OTHERWISE TRY NEXT TIME .ENDC ; C) ASCII CONVERT & STORE: CR.ASC: MOVB @#CR.DB�.WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK žA ; ASCII PRINTED CARD CODE PUNCH ; CODE CHARACTER (OCTAL) CODE .BYTE 240 ; SPACE 0 BLANK .BYTE 261 ; 1 1 1 .BYTE 262 ; 2 2 2 .BYTE 063 ; 3 3 3 .BYTE 264 ; 4 4 4 .BYTE 065 ; 5 5 5 .BYTE 066 ; 6 6 6 .BYTE 267 ; 7 7 7 .BYTE 270 Ÿ�+,”VÀ4�÷ V pþß5pþø×DD÷•Ð,&Ú÷•ØÖ vÀÈÿÀe&¦âä——,L ßApþ‡&ÀîÿæpþÖ b‡;�fÁ—tþÈ‹W ¨,rØ`W àpW èpW ÈgW Ð`Á¥`æ•!Ð,˜Á¥ æ•?�•Á €ÁeàfÁå �Îåúg,¾Îm`ÿÎaÎe¼�—7 xÿ;ÈÓ7tÿ�€ŠpþÈ‹&,äÀ5€æ$^ ÷•øÿÀJÿÁBÿÊ, Àå(  ýÐ ! @ ý‚É� ÀÜþx Špþ÷ 8¸,0÷ ÿÑÁÆþqH 7ЬÿßÕpþÂ÷DÎþ 2,R1 ;GET COMPACTED INPUT TSTB @R0  ;IF FIRST C.C. ... BNE CR.CVT CMPB R1,#330 ;... LOOK FOR E-O-F BEQ CR.EOF .IFDF BLANKS  ;FOR BLANK SUPPRESS ... CMPB R1,#340 ;... LOOK FOR SUPPRESS OFF BEQ CR.ZON CMPB R1,#350 ;OPTION TO SUPPRESS CC. 73-80? BEQ CR.EON ;YES:GO SET SWITCH .ENDC .IFNDF ONLY26&ONLY29 ;FOR DUAL PUNCH DRIVER ... CMPB R1,#310 ;... CHECK IF 029 CONTROL B¡DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 1110¢ ; 8 10 8 .BYTE 240 ; EMPTY 11 8-1 .BYTE 246 ; & 12 8-2 .BYTE 275 ; = 13 8-3 .BYTE 047 ; ' 14 8-4 .BYTE 072 ; : 15 8-5 .BYTE 276 ; > 16 8-6 .BYTE 300 ; @ 17 8-7 .BYTE 071 ; 9 20 9 .BYTE 060 ; 0 40 0 .BYTE 257 ; / 41 øÒ,V7 Èþõ7Фÿò7Š¢ÿïæ þæŠþÿß5pþ,|ü‡ ±²3´56·¸ :£À'½"90¯SÔUVרY Ý¬¥_¾?ZS,¢-ÊKÌMNÏPÑ !$ª©»\Ò¦ABÃDÅÆGH Û.<(+ÞÉ ±²3,È´56·¸ ¦½':¾À90¯SÔUVרY _¬(¥\"Z-ÊKÌMNÏP� îÑ  $ªÝ»ÞÒ+ABÃDÅÆGH  .©Û<£É`ø¤EQ CR.029 CMPB R1,#320 ;... OR 026 CONTROL BEQ CR.026 .ENDC CR.CVT: CMPB #140,R1 ;IS CHAR [!]? BNE CR.CV1 ;NO MOVB #41,-(SP) ;YES:LOAD ASCII CODE... BR CR.CV2 ;...FOR BUFFER BELOW CR.CV1: CMPB #240,R1 ;IS CHAR [?]? BNE CR.CV3 ;NO MOVB #77,-(SP) ;YES: LOAD AS ABOVE... CR.CV2: MOVB (SP)+,(R0)+ ;...AND POP FROM STACK TO KEEP IT HONEST BR¥00 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 ¦ 0-1 .BYTE 123 ; S 42 0-2 .BYTE 324 ; T 43 0-3 .BYTE 125 ; U 44 0-4 .BYTE 126 ; V 45 0-5 .BYTE 327 ; W 46 0-6 .BYTE 330 ; X 47 0-7 .BYTE 131 ; Y 50 0-8 .BYTE 240 ; EMPTY 51 0-8-1 .BYTE 137 ; _ 52 0-8-2 .BYTE 254 ; , 53 0-8-3 §èì—rX\( &@p¶' ,ØB¤*üw€ ¬ ¸ þ?0é 6¦œ ¬ ÿ"öd8öT T B¬L¢V˜`~p~õ€nŠd”Z*žð´„öE0Ðf8€f*Â<€M€ Œ�˜`T”<渨 CR.ST1 ;THEN SKIP TO END OF CONVERT LOOP CR.CV3: ;I COULDN'T THINK OF A BETTER WAY TST R1 BPL .+6  ;CONVERT CODES >200 ... ADD #340,R1  ;... TO RANGE >140 MOV R1,-(SP)  ;STACK CODE FOR INDEXING CR.CV4: SUB #40,R1  ;FOR EACH 40 IN CODE ... BMI CR.STO  ;... ADD 21 & STRIP 40 SUB #17,@SP  ;... TO GET TABLE INDEX BR CR.CV4 ;...AND KEEP LOOKING CR.STO: .IFNDF ONLY26&ONLY29 ADD CR.TOS,@SP ;PICK APPROP.© .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ª .BYTE 050 ; ( 54 0-8-4 .BYTE 245 ; % 55 0-8-5 .BYTE 134 ; \ 56 0-8-6 .BYTE 042 ; " 57 0-8-7 .BYTE 132 ; Z 60 0-9 .BYTE 055 ; - 100 11 .BYTE 312 ; J 101 11-1 .BYTE 113 ; K 102 11-2 .BYTE 314 ; L 103 11-3 .BYTE 115 ; M 104«�xˆ‡,öw , �Áe BfÎEÿ¥Í‹€Í“„á7.‚ ¡ ‚ã @ÍÕàÈ D±ˆ�“á$Ä Äe6ñ*D ‡‡¡ôŽæ‹BÒ •á @*h„ŒÇ�‡P%H aw Ɔe¦N1èÄ"—¢í*Œ‡—¢ †Ä¬ÍÓã$”# Ì €Ì‹” Nâ*°ÎC �•Ì‹¤&À“Í•€Á ËEÀ“ m*Ô ËEÿ?‹ Ë ÷ Š€ …& ð °�Ë*ø÷ ¸ ÷Š w 6"PðÃ*&&æ¦f&·!Îû ƒ×/Èû8ŽG– €�‚ƒ*J¬ TABLE .ENDC ADD PC,@SP  ;COMPUTE ADDR OF BYTE REQD ADD #CR.TBL-.,@SP MOVB @(SP)+,(R0)+ ;... & STORE IN BUFFER CR.ST1: CMP R0,CR.UBE ;BUFFER FULL? .PAGE BEQ CR.EXT CR.BXT: BISB @PC,@R0  ;IF NOT SET UNDERWAY FLAG CR.CXT: MOV R0,CR.UBP ;SAVE NEW POINTER MOV (SP)+,R1 ;RESTORE USER REGS. CR.IXT: MOV (SP)+,R0 RTI   ;... & EXIT ; D) CARD COMPLETED: CR.DUN: CLRB @#CR.CSR ;STOP INTERRUPTS TSTB @R0  ;IF NO PROCESSIN­;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD ® 11-4 .BYTE 116 ; N 105 11-5 .BYTE 317 ; O 106 11-6 .BYTE 120 ; P 107 11-7 .BYTE 321 ; Q 110 11-8 .BYTE 240 ; EMPTY 111 11-8-1 .BYTE 240 ; EMPTY 112 11-8-2 .BYTE 044 ; $ 113 11-8-3 .BYTE 252 ; * 114 11-8-4 .BYTE 335 ; ] 115 11-8-5 .BYTE 273 ; ; 116¯„…÷/VüÎýô� ƤûÆe@ÿ8Žšûfæ³*n fƒ"ŠÍÕàÄ �•Á`DÒaÇJ�¢“Y*’æ�’ÄeúÿÍÕà ­üÿõ†Þ ã" �•‡a*¶ ¦ÎEÿ¥ÍÓà ò €œýÿÓw ô*ÚJÿæ ûÀ…`À Ä>ûC“`†# †�0 ¥*þC ø†B 7!$ûó‡ à öä Ë#‡�`*"É+ K¡ŒP † ä àÍ ÷�w ÿ…w àþl*FÅ€@a¬ú�à/�Å Ba+Aaà ýB`AáÑ.jƒ DŠÁÁ@Ám´úÄEþà Dáý· xú‚‡Äð*’É@Bá † á È øÄ w ‚ú‡É0ò , ŒX¶w †þްG YET ... BEQ CR.RPT  ;... CONTINUE BIT #1,R0  ;SEE IF ADDRESS IS EVEN (SHOULD BE FOR CC.81) BNE CR.ERR  ;SOMETIMES MISSED INT ON FIRST CARD MOV (SP)+,R0 ;OTHERWISE RESTORE USER R0 MOV @#CR.RSV,-(SP) ;... & NOW SAVE ALL JSR R5,@(SP)+ CR.CDN: BR .+12  ;SWITCH CLEARED UPON E-O-F MOVB #4,CR.CDN ;AND IMMEDIATELY RESET BR CR.DXT  ;BYPASSES USUAL END-CARD PROCESSING MOV CR.UBP,R0 ;SET USER BUFF PTR .IFDF BINARY  ;FOR BINARY VERSION ... TSTB CR.ISW ± 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=7² 11-8-6 .BYTE 336 ; ^ 117 11-8-7 .BYTE 322 ; R 120 11-9 ; NOTE: SINCE THE [11-0] SERIES IS OMITTED, THE DRIVER STRIPS ; AN OCTAL 40 FROM THE FOLLOWING COMPRESSED CODES BEFORE INDEXING. ; THUS, THE LETTER 'C' IS INTERPRETED AS OCTAL 143, EVEN THOUGH ; THE CARD READER COMPRESSED CODE IS OCTAL 203. .BYTE 053 ; + 200 12 .BYTE 101 ; A 201 12-1 .BYTE 102 ; B ³Ž…d*ÀP7Œ’w \þÅPABCfDÕ‹.� �ÍÅ€¬*äÁ 7ŠøÿÁ<úW£ À ˆ…åj*¥ewöûÁú÷�ŠW£~W£·ŠÂÿÍŠ *,NœN`$ eŒ^ Š Á ß×  ÜÀ’ã Š$ÚÎP¡ tÿ× Q¨ÿ œ ®÷Šüþˆ"*´€B ð÷Hß“1ÿÀâÿ$Â:ÿ‚*ØÓÄ CŒý†â"""ÁÓÁE8ÿb‡w ,üÁw*ü0ÿB�À®ÿ Â5× ‡÷ °ÿwèùðU7$ € É ï÷ æÿ¡ ô7 ~ÿfæ‚> · Ü÷„· Ô÷7 Ò÷ß ´ ;... CHECK IF BINARY READ BNE CR.BDN  ;IF SO ACTION ACCRODINGLY .ENDC MOV CR.UBE,R1 ;FOR ASCII, SET END PTR .IFDF BLANKS  ;... & PERHAPS CHECK SUPPRESS CR.ZSW: BR .+4  ;SWITCH ON? BR CR.ADN  ;IF NOT NO SUPPRESSION CR.ESW: BR .+6 ;SWITCH INITED TO ALLOW CC. 73-80 SUB #8.,R0  ;OTHERWISE LOSE CC 73-80 CMP -(R0),(PC)+ ;TRAILING SPACES NOW SUPPRESSED .BYTE 240,240 BEQ .-4 TST (R0)+  ;ADJUST PTR WHEN DONE CR.ADN: .ENDC CLR -(R1) µ0 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ¶ 202 12-2 .BYTE 303 ; C 203 12-3 .BYTE 104 ; D 204 12-4 .BYTE 305 ; E 205 12-5 .BYTE 306 ; F 206 12-6 .BYTE 107 ; G 207 12-7 .BYTE 110 ; H 210 12-8 .BYTE 240 ; EMPTY 211 12-8-1 .BYTE 240 ; EMPTY 212 12-8-2 .BYTE 056 ; . 213 12-8-3 .BYTE 251 ; ) ·fÿ›*R ÿÅaCÐ$È&püÿcF ý–%æ$–Ñ*v ÅCÁ“%@`Ô³� Aa ŠÁÄ,Ó‹€(q±%µ*š ( à àEä‹€ÈUHQ̳ˆ (& *¾  Î’È ˆãÈ þ†æ,^  öÿ6SæÒ*â âä$Ð%Ê5bƒÎÎec* NaÅ Þ æ�ŽŒ‡ÎÅúŽŒ‡N‘ÅÅ€‡W¡ @** ‡W¡ ‚ ×°ÎŒ„Åe€ÎŒú�%Há  Þ ”*N p þÿM‡úÿÁEÿ¿CP È  "‚‡Ï°ÃUÕ*r  ` (È €ÃU (â0 úÿwêÖ w ö&™*– Å*Í €Ã$$$’ÅEùÿð e)Ó¸ ;CLEAR REST OF BUFFER CMP R1,R0 BHI .-4 MOV (PC)+,@R1 ;FINALLY MOVE IN CR-LF .BYTE 215,12 CR.DXT: MOV CR,R0  ;GET DDB ADDRESS JMP @14(R0)  ;TAKE COMPLETION EXIT .IFDF BINARY CR.BDN: MOV CR.IBS,R1 ;FOR BINARY, INIT INT PTR MOVB @R0,R2  ;EXIT IF EOF SEEN BMI CR.DXT  ;ALSO SETS INTERRUPT FLAG JSR PC,CR.BIN ;ELSE GO MOVE DATA TO USER MOV @#CR.SXT,R5 ;IF COME BACK, MORE READ REQD. JMP 4(R5)  ;SO TAKE SYSTEM EXIT .ENDC ¹ ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 º 214 12-8-4 .BYTE 333 ; [ 215 12-8-5 .BYTE 074 ; < 216 12-8-6 .BYTE 243 ; # 217 12-8-7 .BYTE 311 ; I 220 12-9 ; ALSO NOTE: THE CHARACTERS [?] AND [!] HAVE COMPRESSED CODES OF ; OCTAL [240] AND [140], RESPECTIVELY, MAKING THEM UNIQUE ; CHARACTERS OUTSIDE THE EVALUATION RANGE OF THE DRIVER. THUS ; SPECIAL CODE HAS BEEN INSERTED IN THE DRIVER TO DETECT THESE ; TWO CH»*º ÈU@ àË Ž€ � Šìò �JÞ*Þ  Ê ðU@wøþÊ Á "‹Å�ŒŒ»‡†€ Ý* Îe¢a*YŠüÿ®Á žp þÿ›Å�ÅÅÅŠÕ*& &ìÐ "üÿ E”È T‘È (P ó†$bH*J c… Háà ä ÃUŠÊ  "ƒâ„b*n Ä ÃUE”Þ T‘×0 ×0 Å‹€ÃU Ÿ*’ Ê ¬…Š€È Ä Þ p¤ÃUø2"üÿà×°¬*¶ Úˆw°þÊ üÁ öÿ<úÿ@¹E%ŠI*Ú A!ýÈ ×°5Kæ�ÎEÖŠÁEÁeE*þ U%p!þÿ †Eà…d‘ Q¦˜b¥…epá "Еװî¼;SPECIAL CASE PROCESSING: ; A) ERROR ROUTINE: CR.ERR: CLRB @#CR.CSR ;STOP INTERRUPTS JSR PC,CR.NRY ;INFORM OPERATOR CR.RPT: JSR PC,CR.AGN ;IF RETURN TRY AGAIN BR CR.IXT  ;... & EXIT FOR NOW ; B) END OF FILE CARD SEEN: CR.EOF: MOV CR,R1  ;GET DDB ADDRESS .IFNDF BINARY  ;FOR SIMPLE VERSION ... MOV 10(R1),16(R1) ;... NO DATA READ ON EOF .ENDC .IFDF BINARY  ;MAYBE SOME IF BINARY ... ADD #16,R1  ;SO MOVE TO UNUSED COUNT STORE MOV R0,@R1  ;... & C½.WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK ARACTERS. .ENDC ;INTERNAL BUFFER FOR BINARY STORAGE: .IFDF BINARY CR.BUF: .IFNDF MARKS CR.BSZ=120. .ENDC .IFDF MARKS CR.BSZ=60. .ENDC .=.+CR.BSZ .ENDC .END ¿*" ,ÅÅ€°Þ Q‘Ê Ã5lH!îÿû*F O½Ác Jp þÿ† ÝÿÿÅŒW¡ Åå£*j IŠ×°¡ŒAaÞ Q‘Þ Êœûâ É*Ž `àE€Áôÿ(…f€ò a�Îh*²  Å €„cÀÊ €  Kаüÿð³OˆÂeß*Ö ²ƒÒ$Äd€ ÎdÎ þ†¨ã¸cÄŠüƒ æÃ*ú lþÿ î�¶" ƒá  ò…ƒ Eàý* Œ‡… üfÍÓæ’ Ñ‹¥••Ä €Ê ñŠ DŒð†*B ¶"ᆃ ×¢ÿÿ÷J`÷Ê Ù�רÿÿàJàú�•ª f € ˜b² ðÿ@àæ(Þ Î&^ ‘*€ æþÿö•ÀOMPUTE VALUE REQD SUB CR.UBE,@R1 ASR @R1  ;... AS WORDS! .ENDC COM @R0  ;SET UNDERWAY FLAG TO PREVENT READING MORE CARDS CLRB CR.CDN  ;BYPASS END-CARD PROCESSING FOR E-O-F CR.EXT: BISB #2,@#CR.CSR ;ALLOW REST OF CARD THRU BR CR.CXT ; C) CONTROL CARD SEEN: .IFNDF ONLY26&ONLY29 ;FOR DUAL PUNCH DRIVER ... CR.026: MOV #104,CR.TOS ;... SET TABLE OFFSET ... BR CR.EXT  ;... & IGNORE REST OF CTL CARD CR.029: CLR CR.TOS BR CR.EXT .ENDC .IFDF BLANKS ÁDATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 1110Â;ORIGIN: CARDS 12-21-72 DSCMAG.S01 ;********** D I S C T O M A G T A P E ********** .TITLE DSCMAG ;*********************************************************************** ;THIS PROGRAM TRANSFERS THE CONTENTS OF THE SELECTED DISC TO ;MAG TAPE. EITHER THE RF-11 DISC OR THE DDC DISC CURRENTLY ;CONNECTED MAY BE SELECTED. THE PROGRAM SENSES [NED] FOR THE ;PURPOSE OF DETERMINING WHEN THE OPERATION IS COMPLETE. ;DATA IS TRAæ)ö ˆÀªªþ¤ @*ìÆæ ߀þÿßößàßß Á *@É Áe ü@À€ Àeœ 7ò  ÂÀec*4 È8Žá JÀŠPPPÀüÁîÂ0$*XÃ3Rà üÀ€ ÁÂâ‘Âe‘r,|Âe‘ÑŒ ÑàÊe‘Q$Âe‘Æìð*¢ þÿÀ¦·Zó ƒÜƒ`Ñ ƒÜ†*ÆÑÀe "EÐ 7Rñà ð ñ˜*êð  DÜD` DÜà0 !,ÝÄ:Ì Œ Ô !¦ùw æÂ> ßF±Ä ;IN SUPPRESS VERSION CR.ZON: CLRB CR.ZSW ;...SET TO OVERRIDE BLANK SUPPRESSION BR CR.EXT  ;AGAIN IGNORE REST OF CARD CR.EON: CLRB CR.ESW ;SET SWITCH TO IGNORE CC.73-80 BR CR.EXT .ENDC ;READER NOT READY SUBROUTINE: CR.NRY: MOV CR.NAM,-(SP) ;IDENTIFY DEVICE MOV (PC)+,-(SP) ;12-17-72 .BYTE 002,4 ;MSG S002 ;12-17-72 IOT  Å00 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 ÆNSFERRED FROM DISC IN 16K-WORD BLOCKS. ;IT IS WRITTEN TO MAG TAPE IN 2K-WORD RECORDS. ;THE "DONE" MSG [I100] DISPLAYS THE # OF BLOCKS TRANSFERRED. ;A WRITE CHECK IS PERFORMED AT THE OPTION OF THE OPERATOR. ;OPTION-SELECTION IS DIRECTED THROUGH THE CONSOLE SWITCHES: ; BIT # I F C L E A R / I F S E T ; 0-2 DO NOT SKIP ANY FILES SKIP 1 TO 7 FILE MARKS ; 3 DISABLE TAPE INTERRUPT ENABLE TAPE INTERRUPT ; Ç,4 Á@_fÿ‘ÉÀ߀ ßâÁ0ÑÂ"*ZÑ€ÑÂÉ�w  MONITOR V004A ß‹;*~tÿý€Í‹�_•vÿø0ˆ&t*t&t*t‚:srÑoCyôyZ*¢z/N`³VqÔÐú+ßfEðEý-õ*Æ/Dè' &&SNQKÉ-�î†àÐŨ*ê|—²KÀKoTþþ*÷Â÷¾ Èî÷¬ÂÜ     ú,2·¤  Âå�„ û7 7 hw fÄÙ*XÁ¦@Áe@ ñ ùK"÷æÎeŽ ¤*|Ž ÎÎEÿÎ\± ÀÁŽÉ K"MÑ È ;... & CALL EDP CLRB @#177776 ;DROP CPU LEVEL TO LET IN KB: INTERRUPT;12-19-72 BIT #2000,@#CR.CSR ;WAIT FOR TRANSITION TO "ON-LINE" ;12-17-72 BEQ .-6 ;12-17-72 RTS PC  ;TRY AGAIN IF COME BACK ; ;MISCELLANEOUS DEFINITIONS: CR.CSR=177160 CR.DB1=177162 CR.DB2=177164 CR.SXT=42 CR.RSV=44 CR.TBL: ;PARITY ASCII CONVERSION TABLE FOR 029 PUNCH .IFNDF ONLY26 .BYTE 2É .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 Ê 4 DISABLE DISC INTERRUPT ENABLE DISC INTERRUPT ; 5 DO NOT PERFORM WRITE CHECK / PERFORM WRITE CHECK ; 6-7 SELECT TAPE UNIT 0 TO 3 ; 8-14 SELECT DDC DISC SELECT RF-11 DISC ; 15 REPORT ALL ERRORS IGNORE ALL ERRORS ;ERROR MESSAGES PRINTED BY THIS PROGRAM: ; I100 PROGRAM COMPLETE: DISPLAY # OF 16K-WORD BLOCKS XFERRED ; A100 UPPER BYTE OF CONSOLE SWITCHES NOT SET PROPERLY ; A101 SELECTED TAPË0 € W ÷ÃeÄ ÔÍÀÒÁ÷ òÿðÚ ¶*Êð w Rñ÷ ˜ñÿ< €w$ýæ ÷ ÊñÆeJ,îw LñðºÿB· ´ÿð ð w ñ÷ \ñ^*ÿ< €wèüæ ÷ ŽñÆew ñ÷Úü|ÿ…X*8À ð56 æÎe? 0‡ @†!.\—#€Î€ÎÎEÿ?‚UÂU°6€ 3 w(ÿÀÒ†*„Áð² ð Ã6ðÃ妃 ððw*¨÷ Àðÿ< €wLüæ ÷ òðÆe……�"ÌÀÿìÿ††z †€W Ì40  ;SPACE .BYTE 261  ;1 .BYTE 262  ;;2 .BYTE 63  ;3 .BYTE 264  ;4 .BYTE 65  ;5 .BYTE 66  ;6 .BYTE 267  ;7 .BYTE 270  ;8 .BYTE 240  ;EMPTY .BYTE 72  ;: .BYTE 243  ;# .BYTE 300  ;@ .BYTE 47  ;' .BYTE 275  ;= .BYTE 42  ;" .BYTE 71  ;9 ; .BYTE 60  ;0 .BYTE 257  ;/ .BYTE 123  ;S .BYTE 324  ;T .BYTE 125  ;U .BYTE 126  ;V .BYTE 327  ;W .BYTE 330  ;X .BYTE 131  ;Y .BYTE 240  ;EMPTÍ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD ÎE UNIT NOT READY AND/OR WRITE-ENABLED ; F200 TAPE ERROR. DISPLAY: STATUS + TAPE RECORD NUMBER(0-377) ; F201 DISC ERROR. DISPLAY: STATUS ;*********************************************************************** .PAGE R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 SWR=177570 ;MAG TAPE REGISTERS: TWC = 167540 ;WC TST = 167542 ;STATUS TCD = 167544 ;COMMAND TMA = 167546 ;CMA TIV=104 BFSTRT = 20000 ;START OF 16-K WORD BUFFER DSÏ*†ßpÿÃÃe4K#@$—2 ð œ 2*ª€1Ê € ô3ô æˆæ¸*Έ0 æˆÛ×'@üßfÿDÄe"@"*ò È H P œÁ @`$õ ƒ*   ¦ÂeÅeöÿ•Âe � J- •)3*: ý Åe d%   ÕeÀe-*^â 2 üÿ¢(ˆ(ùÂÂeÒ é€  ¢(**‚戦æˆò €& $ $ ÄeîÿÀà Ãåä*¦ ã( (#(�Q$fŽ ‡ N Âe ‰±¤*Ê&ˆæÎeö&ˆÁ0fÌ 6ÉÉeØæÎešÐY .BYTE 335  ;] .BYTE 254  ;, .BYTE 245  ;% .BYTE 137  ;_ .BYTE 276  ;> .BYTE 77  ;? .BYTE 132  ;Z ; .BYTE 55  ;- .BYTE 312  ;J .BYTE 113  ;K .BYTE 314  ;L .BYTE 115  ;M .BYTE 116  ;N .BYTE 317  ;O .BYTE 120  ;P .BYTE 321  ;Q .BYTE 240  ;EMPTY .BYTE 41  ;! .BYTE 44  ;$ .BYTE 252  ;* .BYTE 251  ;) .BYTE 273  ;; .BYTE 134  ;\ .BYTE 322  ;R ; .BYTE 246  ;& Ñ 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=7ÒCTAB: ;TABLE OF DISC REGISTER ADDRESSES ; FOR THE DDC DISCS: 165300 ;DCS 165302 ;WC 165304 ;CMA 165306 ;DAR 165310 ;DAE 130 ;I.V. 132 ; FOR THE RF-11 DISC: 177460 ;DCS 177462 ;WC 177464 ;CMA 177466 ;DAR Ó*îæˆæ&ˆˆðÿ´ðÿ¶æÎeÄ&ˆ¶*ß“pÿ÷ˆžÅÅeüfæˆÂÂeÂU%æˆA|*6AaW¨ æÎe–&ˆ&ˆçþŠpÿfW¥*Z;A!ûƒå• A…M¢Íq¢ÿÿ� R#?ý‚÷ ?*~‚’$šŠ&æ&¦„ & ÷ €�*¢à `Šþÿ€ƒ̵@ý„‡ˆæ$^ Ãrÿè*ÆÀ&�ÎÅ€—¥ÀeÄ 2& NœN`# ©*ê^GEFILOOTRUÿÿff˜A!N•—£ —£,÷ø*‚l&‡ª,” ÂeÎþÿÊ /Î f�#Z*2)†Êæ"ˆ…#W!ÿ †J‘Ž ò‹ð–%…ÂƒÔ .BYTE 101  ;A .BYTE 102  ;B .BYTE 303  ;C .BYTE 104  ;D .BYTE 305  ;E .BYTE 306  ;F .BYTE 107  ;G .BYTE 110  ;H .BYTE 240  ;EMPTY .BYTE 333  ;[ .BYTE 56  ;. .BYTE 74  ;< .BYTE 50  ;( .BYTE 53  ;+ .BYTE 336  ;^ .BYTE 311  ;I .ENDC ;PARITY ASCII CONVERSION TABLE FOR "FIELDATA" PUNCH: ; COMPRESSED CARD CODE: ; BYTE BIT POSITIONS: 7 6 5 4 3 2-1-0 ; CARD ROWÕ0 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 Ö 177470 ;DAE 204 ;I.V. 206 DINTFG: .WORD 0 TINTFG: .WORD 0 TAPCMD: .WORD 0 DSCBLK: .WORD 0 TMPW01: .WORD 0 TAPADR: .WORD 0 .PAGE DSCMAG: ;ENTRY AND RE-ENTRY POINT CLRB DSWICH ;RESET RF-11 LOGIC SHUNT MOV @#SWR,R0 ;OPTION SELECT PATTERN BIC #100000,R0 ;IGNORE ERROR SUPPRESS BIT MOV #DSCTAB,R5 ;INIT FOR DDC DISC ×*VÂeŒ¦&ˆA‘Ñ• &ˆ÷ ÿÂÂe|ŧ*zÅe¦D ì�w‚þ Ö �  ÷ˆ$ÿD êV¤…i*žÂÂeP¦&ˆ�&ˆ÷ ÌþôÿŠÄe 4*Âw 2ÿðÿ¸€(ÿx�*æAL%ýÉÀÿáÉ‹þ€Ñ ÷�  ðÿ´A* ðÿ¶Ÿ0¶ßpÿôþÿ‚æýÿ÷ 3*.¡Kñ Hñ÷ r ñ c±1 w*R÷ ^ðNˆˆÌ‹mæˆæˆƒÀe &¦*vˆRRRR…ÄeðÿŒRÁe L  , 4*šLÅ ¦Âe$Q$æ æ,^ ‰±�¢ØS PUNCHED: ^ 12 11 ^ 0 9 8 ^ 1,2,3,4,5,6,OR 7 .IFNDF ONLY29 ; COMPRESSED FIELDATA ; ASCII PRINTED CARD CODE PUNCH ; CODE CHARACTER (OCTAL) CODE .BYTE 240 ; SPACE 0 BLANK .BYTE 261 ; 1 1 1 .BYTE 262 ; 2 2 2 .BYTE 063 ; 3 3 3 .BYTE 264 ; 4 4 4 .BYTE 065 ; 5 Ù ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 Ú SWAB R0 ;WHICH DISC? BEQ DSCM10 ;DDC ADD #16,R5 ;BUMP TABLE POINTER INCB DSWICH ;OPEN SHUNT AROUND RF-11 DAR LOGIC CMPB R0,#177 ;IS RF-11 SELECTED, OR DID HE BLOW IT? BEQ DSCM10 JMP SELERR ;SELECT ERROR DSCM10: SWAB R0 ;BACK TO ORIG MOV R0,R1 ASH #6,R1 BIC #-031000-1,R1 ;ISOLATE TAPE UNIT SELECT & INT ENABLEÛ*¾‘L ý‡‚w&t÷ Þ1´9*â V±ì‚B,°ÂB¬¡Œ‰Œ*‘ŒáÅøW¤¤ƒfˆ&ðÿ´ ðÿ¶ŠpÿöÜ**0æÎeŒýŸ04 þÿwJþw ý¦W£ Í•*N,R•A!øƒÊ• Îå‚.ˆÖ æÎešæÎe4í*r¦‚¦/ˆÖ Ö –%Ö ÈÖ …�Q$U$U%À*–Í óö AÁåB ì‡I#ú…ˆ�ö ÷ T*º ‡±üÿf& f ˆa(‘Ö ‘Öµ‚ñ ‡æ*ÞW&ˆ& ˆ�ŠÁ †’%ŠŽ Ž Ž Ž ƒø*à æ,^ ¢ƒbò„)ÌŒ€�Š Ä$Š„�Ü 5 5 .BYTE 066 ; 6 6 6 .BYTE 267 ; 7 7 7 .BYTE 270 ; 8 10 8 .BYTE 240 ; EMPTY 11 8-1 .BYTE 246 ; & 12 8-2 .BYTE 275 ; = 13 8-3 .BYTE 047 ; ' 14 8-4 .BYTE 072 ; : 15 8-5 .BYTE 276 ; > 16 8-6 .BYTE 300 ; @ 17 8-7 Ý.WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK Þ MOV R1,TAPCMD ;SAVE IT BIT #1000,R1 ;WAS INT ENABLED? BEQ DSCM12 ;NO MOV #TAPINT,@#TIV ;SET UP TAPE I.V. MOV #5*40,@#TIV+2 DSCM12: BIT #20,R0 ;IS DISC INT ENABLED? BEQ DSCM14 ;NO MOV #DSCINT,@12(R5) ;SET UP DISC I.V. MOV #6*40,@14(R5) DSCM14: MOV #400,@(R5) ;RESET DISC MOV #40000,@#TCD ;RESET TAPE MOV R0,R2 ß*&ä$ &ˆ”$bÕ$ÒÒÊ" ƒà ƒh)*J„" ˆÁ â��ŠW·x Ó&•—e— ú*n!+fÅfÅeÍ5@'&ˆ&ˆf}�Ö »*’€Í CãåEå Df Í�²ÿõU@�eÉ*¶€÷ žÿ€õU …ÁW É�‡æ·€*ÚšÿÊ w†ÿüÁ � W Mw Øÿò ò÷í*þlÿÊ WÊ Ê W !Ê fÊ �cÁåU 8‚�Y*"WÅe Ê UÎ NÊ UÊ Á ÊÅe Ê Uv*FÊ U …Ê F!¾‡÷-ÿ¨ÿºÁŠ�ÁжÁóË*jÁ FàÊ e· ÖÿF!ú÷-îþ„ÿçÊ ÷‹àþ©æ´à.BYTE 071 ; 9 20 9 .BYTE 060 ; 0 40 0 .BYTE 257 ; / 41 0-1 .BYTE 123 ; S 42 0-2 .BYTE 324 ; T 43 0-3 .BYTE 125 ; U 44 0-4 .BYTE 126 ; V 45 0-5 .BYTE 327 ; W 46 0-6 .BYTE 330 ; X 47 0-7 .BYTE 131 ; Y 50 0-8 .BYTE 240 ; EMPTYáDATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 1110â BIC #-7-1,R2 ;GET # FILES TO SKIP BEQ DSCM20 ;NONE DSCM16: MOV #20,-(SP) JSR PC,TAPEGO ;SPACE PAST [N=(R2)] FILE MARKS .PAGE ;THE MAG TAPE IS NOW POSITIONED IN THE GAP PRECEDING THE FIRST RECORD. ;FIRST READ 16K-WORDS OFF DISC. ;THEN WRITE 8 RECORDS OF 2K-WORDS EACH TO TAPE. ;IF WRITE CHECK SELECTED, BACK UP TAPE, RE-READ THE 8 RECORDS, ;AND WRITE-CHECK TO THE DISC. THEN ADVANCE TO NEXT DISC BLOCK. ;CONTINUE UNTIL ã*ŽfæÊ ÷‹ÊþõÁ´þÅÌþÕ BÕ ÍE*²ÿ¿pS Å$þæŒÿæ`ÿ1ˆ $ „*Ö^C . DATE:- TIMEê*ú:- €ª¿* ÿÿðÌEÿÿEÿÿ‹Ä*ÒÿÅaCÐ$È&püÿcF ý–%æ$–@*öÅCÁ“%@`Ô³� Aa ŠÁÄ,Ó‹€(q±%$*( à àEä‹€ÈUHQ̳ˆ (& „*> Î’È ˆãÈ þ†æ,^  öÿ6Sæ@*bä 51 0-8-1 .BYTE 137 ; _ 52 0-8-2 .BYTE 254 ; , 53 0-8-3 .BYTE 050 ; ( 54 0-8-4 .BYTE 245 ; % 55 0-8-5 .BYTE 134 ; \ 56 0-8-6 .BYTE 042 ; " 57 0-8-7 .BYTE 132 ; Z 60 0-9 .BYTE 055 ; - 100 11 .BYTE 312 ; J å00 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 æA DISC READ REQUEST RESULTS IN A [NED]. CLR R4 ;INIT LOCAL MEMORY OF DAR CLR DSCBLK ;INIT COUNT OF 16K-WORD BLOCKS READ DSCM20: MOV #5,-(SP) JSR PC,DISCGO ;READ NEXT 16-K WORDS FROM DISC MOV #8.,R2 ;INIT TAPE LOOP COUNT MOV #2,-(SP) ;WRITE COMMAND JSR PC,TAPEGO ;GO WRITE THE 8 RECORDS BIT #40,R0 ;WRITE CHECK SELECTED? BEQ çâä$Ð%Ê5bƒÎÎeÑ*†NaÅ Þ æ�ŽŒ‡ÎÅúŽŒ‡N‘ÅÅ€‡W¡ ¯*ª‡W¡ ‚ ×°ÎŒ„Åe€ÎŒú�%Há  Þ *Îp þÿM‡úÿÁEÿ¿CP È  "‚‡Ï°ÃUD*ò ` (È €ÃU (â0 úÿwêÖ w ö&*Å*Í €Ã$$$’ÅEùÿð e)A*:ÈU@ àË Ž€ � Šìò �JL*^ Ê ðU@wøþÊ Á "‹Å�ŒŒ»‡†€ K*‚Îe¢a*YŠüÿ®Á žp þÿ›Å�ÅÅÅŠD*¦&ìÐ "üÿ E”È T‘È (P ó†$b·*Êc… Háà è 101 11-1 .BYTE 113 ; K 102 11-2 .BYTE 314 ; L 103 11-3 .BYTE 115 ; M 104 11-4 .BYTE 116 ; N 105 11-5 .BYTE 317 ; O 106 11-6 .BYTE 120 ; P 107 11-7 .BYTE 321 ; Q 110 11-8 .BYTE 240 ; EMPTY 111 11-8-1 .BYTE 240 ; EMPTY 112 11-8-2 .BYTE 044 ; $ 113 é .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ê DSCM30 ;NO MOV #8.,R2 ;RE-INIT LOOP COUNT MOV #200,-(SP) ;BACK SPACE COMMAND JSR PC,TAPEGO MOV #8.,R2 MOV #1,-(SP) JSR PC,TAPEGO ;RE-READ THE STUFF WE JUST WROTE MOV #7,-(SP) JSR PC,DISCGO ;WRITE CHECK THE DISC DSCM30: ADD #400,R4 ;BUMP THE DAR MEMORY INC DSCBLK ;BUMP BLOCK COUNT BR DSCM20 ;BACK FOR ëä ÃUŠÊ  "ƒâ„bu*îÄ ÃUE”Þ T‘×0 ×0 Å‹€ÃU *Ê ¬…Š€È Ä Þ p¤ÃUø2"üÿà×°*6Úˆw°þÊ üÁ öÿ<úÿ@¹E%Š·*ZA!ýÈ ×°5Kæ�ÎEÖŠÁEÁeEr*~U%p!þÿ †Eà…d‘ Q¦˜b¥…epá "Еװ\*¢,ÅÅ€°Þ Q‘Ê Ã5lH!îÿj*ÆO½Ác Jp þÿ† ÝÿÿÅŒW¡ Åå*ê IŠ×°¡ŒAaÞ Q‘Þ Êœûâ 8*`àE€Áôÿ(…f€ò a�ÎÖ*2 Å €„cÀÊ €  Kаì 11-8-3 .BYTE 252 ; * 114 11-8-4 .BYTE 335 ; ] 115 11-8-5 .BYTE 273 ; ; 116 11-8-6 .BYTE 336 ; ^ 117 11-8-7 .BYTE 322 ; R 120 11-9 ; NOTE: SINCE THE [11-0] SERIES IS OMITTED, THE DRIVER STRIPS ; AN OCTAL 40 FROM THE FOLLOWING COMPRESSED CODES BEFORE INDEXING. ; THUS, THE LETTER 'C' IS INTERPRETED AS OCTAL 143, EVEN THOUGH ; THE CARD READER COMPRí;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD îMORE .PAGE TAPEGO: ;THIS IS THE MAG TAPE "GO" ROUTINE MOV 2(SP),R1 ;GET COMMAND MOV (SP)+,(SP) ;POP RTN ADDR UP ONE MOV R1,TMPW01 ;SAVE IT FOR CHECK BELOW BIS TAPCMD,R1 ;INSERT THE UNIT # AND INTERRUPT BITS MOV #BFSTRT,TAPADR ;INIT LOCAL MEMORY OF TAPE CMA TAPE10: MOV TAPCMD,@#TCD ;SELECT THE UNIT MOV #4000,R3 SOB R3,. ;LOOP TO ALLOW LOGIC TO SETTLE ïüÿð³OˆÂeM*V²ƒÒ$Äd€ ÎdÎ þ†¨ã¸cÄŠüƒ æ1*z lþÿ î�¶" ƒá  ò…ƒ Eàýv*žŒ‡… üfÍÓæ’ Ñ‹¥••Ä €Ê ñŠ DŒð†�*¶"ᆃ ×¢ÿÿ÷J`÷Ê Ù�רÿÿàJàú�• æ€ ˜b² ðÿ@àæ(Þ Î&^ †aÞ‚:?*ÿDqF üŽ Ã Ãe 3‚/Ï*$Âå úÂ. fÁe&œ ÎEøÿ¹*HÎ NaÎe…EM üMÎJ f*l& N�J Ð ÁåÅ fŽ æ,^ €_ÞðESSED CODE IS OCTAL 203. .BYTE 053 ; + 200 12 .BYTE 101 ; A 201 12-1 .BYTE 102 ; B 202 12-2 .BYTE 303 ; C 203 12-3 .BYTE 104 ; D 204 12-4 .BYTE 305 ; E 205 12-5 .BYTE 306 ; F 206 12-6 .BYTE 107 ; G 207 12-7 .BYTE 110 ; H 210 12-8 .BYTE 240 ; EMPTY ñ 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111000 ;MARK DATA=70 .WORD 111011 ;PRE-FINAL=73 .WORD 111011 ;FINAL=73 .WORD 111011 ;PARITY=73 .WORD 111011 ;REVERSE LOCK=73 .WORD 101001 ;GUARD=51 .WORD 100101 ;REVERSE BLOCK MARò MOVB @#TST,R3 ;GET LOWER STATUS BYTE BMI TAPE14 ;READY TAPE12: JMP TAPNRD ;NOT READY TAPE14: ASR R3 ;CHECK FILE PROTECT BIT BCS TAPE12 ;NO WRITE RING TAPE20: CLR TINTFG MOV TAPADR,@#TMA ;SET UP MEMORY ADDRESS MOV #4000,@#TWC ;& WC MOV R1,@#TCD ;PERFORM COMMAND BIT #10,R0 ;IS TAPE INT ENB? BNE TAPE50 ;YES ó*�ÀeÑ  Å ý†Áá AÌ‹$)n*´&æ©EœÅ ÅeAaW$ÿÿìá ì‰ óÔ*Øpñ åÑ EW" gÅEÂ(�‚¥*üÂå³ Ö‡J!ùÒ … W=JÃÅ(É}* Ãúÿûƒ@U%ÍÕEüÃEÿÃæŽ Ž æƒ*D,^ •$)Î6;ÍàÍ Õ ÕÍ"*hÕåˆ&f¦Áæ(Þ ‚�…fˆ€@*Œ0 R—,üÿEƒ K�Sa K�c¬*°¶W" gËeÒ B Q$p˜  Ö�,þzÔU%Åg"Mø0ô 211 12-8-1 .BYTE 240 ; EMPTY 212 12-8-2 .BYTE 056 ; . 213 12-8-3 .BYTE 251 ; ) 214 12-8-4 .BYTE 333 ; [ 215 12-8-5 .BYTE 074 ; < 216 12-8-6 .BYTE 243 ; # 217 12-8-7 .BYTE 311 ; I 220 12-9 ; ALSO NOTE: THE CHARACTERS [?] AND [!] HAVE COMPRESSED CODES OF ; OCTAL [240] AND [140], RESPECTIVELY, MAKING THEM UõK=45 .WORD 010101 ;INTERBLOCK SYNC=25 .PAGE WALBF: .WORD -1 ;-1 REVERSE =0 FORWARD .WORD -1 FBLK: .WORD 1101 ;BLOCK NUMBER GOES HERE .WORD -1 .WORD -1 BYST: .BYTE 3 ;TABLE OF XDA 17 & 16 FOR CMP,OBV,BLK# .BYTE 3 .BYTE 0 .BYTE 0 .BYTE 1 .BYTE 1 .BYTE 2 .BYTE 2 TOG2: XX TOG1: XX TCCM: 177342ö TSTB @#TST BMI .-4 ;FIRST WAIT 'TILL READY GOES FALSE ASLB @#TST ;THEN WAIT 'TILL BUSY GOES FALSE BMI .-4 ;(WAITING FOR A "READY" GIVES RANDOM ERRORS.) TAPE30: TSTB @#TST+1 ;ANY ERRORS? BNE TAPERR ;STATUS ERROR BYTE NOT ZERO TAPE40: ADD #10000,TAPADR ;BUMP LOCAL CMA MEMORY FOR NEXT TIME SOB R2,TAPE10 ;LOOP FOR SPECIFIE+ COUNT RTS PC ;ALL DONE TAPE50÷srÄ*ÿB°bF ý$ÁD`)¤;�D`ˆ*$÷ &æ*Þ   yŒä54-üÿ †&¹*H‚&¦æ(Þ €ˆž$&& Žœæ2*l.^ â �Áåà Ä(´  t  î*�Äe!ö&æ#EÁeÅ  ½*´¥ U Eøÿ÷3!(ô &W E€*ØÕüÍî$ & �Ž Ž æ.^ 8  ÃeÝ*ü CÃåÅÇ@!ùÀå &ææ.^ :  ÷‹ÚþU%Åg"G<øªÑà*NIQUE ; CHARACTERS OUTSIDE THE EVALUATION RANGE OF THE DRIVER. THUS ; SPECIAL CODE HAS BEEN INSERTED IN THE DRIVER TO DETECT THESE ; TWO CHARACTERS. .ENDC ;INTERNAL BUFFER FOR BINARY STORAGE: .IFDF BINARY CR.BUF: .IFNDF MARKS CR.BSZ=120. .ENDC .IFDF MARKS CR.BSZ=60. .ENDC .=.+CR.BSZ .ENDC .END TCST: 177340 TCDT: 177350 TCBA: 177346 TCWC: 177344 RBN: .=.+2204 DATBUF: .=.+1000 .END START ú: WAIT TST TINTFG ;DID INT COME YET? BEQ TAPE50 BR TAPE30 TAPERR: ;A TAPE ERROR HAS BEEN DETECTED BIT #77400,@#TST ;CHECK STATUS BITS OTHER THAN FILE MARK BNE TAPER1 ;SOMETHING ELSE IS THERE BIT #24,TMPW01 ;WAS IT A FILE-MARK REQUEST? BNE TAPE40 ;WE WERE EXPECTING A F/M INDICATION TAPER1: TST @#SWR ;ERR IGNORE BIT ON? BMI TAPE40 ;YES û$B“$‹bF ý–%““‹? �v*$ÁEùÿL05AaAa5ÊEçËEÿø“d ËÓe :*HÁæ(Þ  &æ*Þ €Âeð L*l€ÊU€Ò  âU@ 0  ÷‹tÿU%Ò �Åg"G&æÊEàÒU ë6øøoe*CÓ ÄcF ý–%4ŠÅ4jþÿ¥*$ ÁÜÁ Á Á Á t#   ÷‹¼ÿÅÄ*HÅg"GÅ×<€L… “   F„Ø*lÅ W,#;L,8ű Ñ*�1… ñ -€Bl °00ü0(oQûW,ÀêÂêÄêÆêÈêXZ0ÿ2ÿ4ÿ6ÿ8ÿ„†–,&7ŠpÀxÿÀE€ÅÀ Åe·ŠX wF,L¾ÀWtÁEÿÍwÂÿÁ5ß*Dß FÀ5 ,rý$ ýÀ ýß@dïÂEøÿæA,˜÷ J 7 ~ÿÂæ÷ 8æ÷ ÖÀ5 ê,¾Âæ€÷ Âæ÷ æ÷ °Äe· ÷,ä<ÿÞ�Žw2ÿÁ]*ÿ÷ *ÿß ÿdïÃÁ~×;, bï�w7 ÿß ÿfïß`ï_dïÀ5ß‹bïá,0ý�ߌbïý�ß‹cï ÷eâþ¥~‡÷ Ðþüóß5ý;ORIGIN:DECTAPE 12-21-72 MAGDSC.S01 ;********* M A G T A P E T O D I S C ********** .TITLE MAGDSC ;*********************************************************************** ;THIS PROGRAM TRANSFERS THE CONTENTS OF ONE FILE ON MAG TAPE ;TO THE SELECTED DISC. EITHER THE RF-11 DISC OR THE DDC DISC ;WHICH IS CURRENTLY CONNECTED MAY BE SELECTED. THE PROGRAM ;LOOKS FOR THE TAPE FILE MARK TO DETERMINE WHEN THE TRANSFER ;IS COMPþ MOV DSCBLK,R3 ;CURRENT DISC BLOCK ASH #3,R3 ADD #9.,R3 SUB R2,R3 ;# OF TAPE RECORD IN ERROR MOV @#TST,R1 CLRB R1 BISB R3,R1 ;REPORT ERRORS IN UPPER BYTE; RECORD # IN LOWER MOV R1,-(SP) MOV #3*400+200,-(SP) ;F200: TAPE ERROR IOT EMT 60 ;EXIT .PAGE DISCGO: ;MAKE THE DISC GO MOV #-40000,@2(R5) ;WC ÿ0 Å…*´€ðEè 0Ó ÂÂe° Á0æ(Þ \&ض&æ*Þ € ÅEÿ?¤LQ¢ôø\CyÂ*$CÐ$ÐcF ý–%Á C` ð‹�*$È!(ã &³ ãËeÎ(Þ  &æ*×HÞ   ÷‹®ÿU%Åg"G-ø<ôy1*…¦)ƒSE ý ƒÜà à à à É¡ ¨$¡0  ÷‹ÎÿU%Åg"GAø€N`«*ÿÅa¦c)ÄÔ$B“‹bF ý¹,Vbï÷5Äþî— Lß xÿè�ðþ×tÃe ƒàÌ,|ÁbïŠÁÐfæ€0ˆýÀý  ,¢—v½ýƒŽÀ5ÃU@7 ZþýÃŒ},È�ý‹ý€ý �‡÷ >þü÷BƒÃEÿˆ †,îß xÿ€‡¦æ�0ˆæþæ@0ˆ& æ@è"wþ& æAwØþ· ôý· ðý(µLETE. DATA IS READ FROM TAPE IN 2K-WORD RECORDS. ;IT IS WRITTEN TO DISC IN 16K-WORD BLOCKS. ;THE "DONE" MSG [I100] DISPLAYS THE # OF BLOCKS TRANSFERRED. ;A WRITE CHECK IS PERFORMED AT THE OPTION OF THE OPERATOR. ;OPTION-SELECTION IS DIRECTED THROUGH THE CONSOLE SWITCHES: ; BIT # I F C L E A R / I F S E T ; 0-2 DO NOT SKIP ANY FILES SKIP 1 TO 7 FILE MARKS ; 3 DISABLE TAPE INTERRUPT ENABLE TAPE INTERRUPTFOR 16K WORDS MOV #BFSTRT,@4(R5) ;CMA MOV R4,R3 ;CURRENT DAR DSWICH: BR .+2 ;SHUNT SWITCH AROUND RF-11 LOGIC BR DISC10 CLR R2 ;RF-11 LOGIC: READY FOR EXTENSION BITS ASHC #6,R2 ;SHIFT THE SECTOR ADDRESS TO WORD ADDR MOV R2,@10(R5) ;LOAD UP THE TRACK EXTENSION BITS DISC10: MOV R3,@6(R5) ;DAR (EITHER SECTOR OR WORD ADDRESS) MOV 2(SP),R3 ;GET–%Â"Šâ‹g*$—¢ƒ—¢ a�ÁEù�²[Ó$Á’[�æ޲·*HŽ ‹ÕÁÓÁ þ†c Á Â,æ“J ‹–*lO�c! K ýÁC`‹ä L�Ì5 s÷ V&æ¢*�*Þ €ÁC`Ó$ãU€Ë5Ó$ÂBàÄ s*´ $Í5„$áÊU@¢(‹  ÷‹*ÿc*ØÅÅg"G£“Ü€Á æ(Þ óæ æ Þ*üâ ¶÷–%áÎ0Š ôC`Á Á R* Ä æJ ‹ï„D`$ !ý$$a!! *DˆÐ  (”(Ì �Œ#)Î#ˆ—"Ž £Í‹ÆhãÍŠÇQ$B S(ä$Î3ˆñH&ûoQ¯”(:((î÷æ.ÀêÂêÄêÆêÈêXZ0ÿ2ÿ4ÿ6ÿ8ÿ„†­.&7ŠnÀxÿÀE€ÅÀ Åe·ŠV w} Ü.LÈÀWtÁEÿÍwÂÿÁ5ß4Dß FÀ5¿ 4œ.rý. ýÀ ýß@dïÂEøÿæj  .¶.˜÷ J 7 ~ÿæ÷ àÂæ÷ 0À5 ü.¾Âæ€÷ Âæ÷ æ÷ ®Äe· .ä<ÿÞ�Žw2ÿÁ]*ÿ÷ *ÿß ÿdïà ; 4 DISABLE DISC INTERRUPT ENABLE DISC INTERRUPT ; 5 DO NOT PERFORM WRITE CHECK / PERFORM WRITE CHECK ; 6-7 SELECT TAPE UNIT 0 TO 3 ; 8-14 SELECT DDC DISC SELECT RF-11 DISC ; 15 REPORT ALL ERRORS IGNORE ALL ERRORS ;ERROR MESSAGES PRINTED BY THIS PROGRAM: ; I100 PROGRAM COMPLETE: DISPLAY # OF 16K-WORD BLOCKS XFERRED ; A100 UPPER BYTE OF CONSOLE SWITCHES NOT SET PROPERLY ; A101 SELE COMMAND MOV (SP)+,(SP) ;POP RTN ADDR UP ONE BIT #20,R0 ;IS DISC INT ENB SELECTED? BEQ DISC22 ;NO BIS #100,R3 DISC22: CLR DINTFG MOV R3,@0(R5) ;COMMAND! ASLB R3 ;CHECK INT ENB BMI DISC40 ;ENABLED: WAIT FOR INT TSTB @0(R5) ;WAIT HERE FOR READY BPL .-4 DISC30: ;HERE WHEN READY GOES TRUE OR INT COMES IN TST øî³%*ÿqF üÁ–$$„D`÷ R&æ*$*Þ €Ð ÁD`Ì‹€ÌEùøÈ B‡� È‹9� (=*H$)Ì & & Žœæ.^   ÷‹˜ÿU%R*lÅg"GŒ$ä5Þ´"Û†Ê Ù€ð5`É*�Óó �â³ : Å €ÌEË € È*´ÌUà æ(Þ  ÓÅÅe:ÿ »(„Äå�Ø"$Á `É%ˆÍ‹áÍŠGðø Eá*×€hŒhE×€6 €wÔ7 lS*$ ÕÀÿ÷ÓâÿÁ~×R. bï�wƒ ü‡7 ÿßÿfïß`ï_dïÀ5Ÿ.0ß‹bïý�ߌbïý�ß‹cï ÷eÞþ§~‡÷ Ìþüó®.Vß5bï÷5Àþîß xÿë�òþ×tÃe ƒàÁˆ.|bïŠÁÐfæ€0ˆýÀý  —vö.¢½ýƒŽÀ5ÃU@7 \þýÃŒ�.Èý‹ý€ý �‡÷ @þü÷BƒÃEÿˆ ß 9.îxÿ€‡¦æ�0ˆÂæ÷ Þþæþæ@h.0ˆ& æ@wþ& æAwÎþ· êý· æýó CTED TAPE UNIT NOT READY AND/OR WRITE-ENABLED ; F200 TAPE ERROR. DISPLAY: STATUS + TAPE RECORD NUMBER(0-377) ; F201 DISC ERROR. DISPLAY: STATUS ;*********************************************************************** .PAGE R0=%0 R1=%1 R2=%2 R3=%3 R4=%4 R5=%5 SP=%6 PC=%7 SWR=177570 ;MAG TAPE REGISTERS: TWC = 167540 ;WC TST = 167542 ;STATUS TCD = 167544 ;COMMAND TMA = 167546 ;CMA TIV=104 BFSTRT = 20000 ;START OF 16-K WORD BUFFER  @0(R5) ;ERROR? BMI DSCERR ;YES RTS PC ;EVERYTING'S OK DISC40: WAIT ;WAIT FOR INTERRUPT TST DINTFG ;WAS IT THE DISC INT? BEQ DISC40 ;NO BR DISC30 DSCERR: ; ADISC ERROR OR [NED] HAS OCCURRED MOV @0(R5),R2 MOV R2,R3 BIC #104377,R3 ;CLEAR ERR AND NED BITS (ALSO LOWER BYTE BEQ DONE ;[NED] HAS G ð‹ýÿ7 pÖ  7 H*Hwr¼ü wbÚý7 *å*lCWÊ ÷Õ€†ÿ÷Å€ÿ÷ |Ó7 ñ*�7 ÷¸ÿ—×÷ ¦ÿBß³tÿýÍÕ€s*´ß•@tÿ97 ì×DÄÅ÷÷Å6ÿ7Ñ2ÿG€7 •*ØFÍÕ€—÷ · %& ÷¬ÿ÷nÿÁ À”&*ü÷(Î   õ  ò÷ð7 Nÿß“pÿ÷à÷* 2ÿ·|ÿß³tÿ»æ&^ ƒÂ¤ÿ÷ ®+*DÊ#ŠÊ”÷Ö÷¦—¢ø‚ · `ÿìðZÿw*h° 7 âþ& 7 2÷ Öþ~÷ àþÔ÷ Ôþ°*Œ÷ ¾þÎÀjþÖ ê€£w ®þÁÁe &oQû¯”(0((ø÷æ.ÀêÂêÄêÆêÈêXZ0ÿ2ÿ4ÿ6ÿ8ÿ„†­.&7ŠpÀxÿÀE€ÅÀ Åe·ŠX wy Ü.L¾ÀWtÁEÿÍwÂÿÁ5ß*Dß FÀ5Ó *¦.rý$ ýÀ ýß@dïÂEøÿæt  $À.˜÷ J 7 ~ÿÂæ÷ 8æ÷ ÖÀ5 .¾Âæ€÷ Âæ÷ æ÷ °Äe· .ä<ÿÞ�Žw2ÿÁ]*ÿ÷ *ÿß ÿdïà  DSCTAB: ;TABLE OF DISC REGISTER ADDRESSES ; FOR THE DDC DISCS: 165300 ;DCS 165302 ;WC 165304 ;CMA 165306 ;DAR 165310 ;DAE 130 ;I.V. 132 ; FOR THE RF-11 DISC: 177460 ;DCS 177462 ;WC 177464 ;CMA 177466 ONE TRUE WITH NO OTHER ERRORS TST @#SWR ;ERROR IGNORE ON? BPL .+4 ;NO: CONTINUE RTS PC ;YES: NOTHING ELSE TO DO BUT RETURN MOV R2,-(SP) ;ERROR: PUT STATUS IN MESSAGE MOV (PC)+,-(SP) .BYTE 201,3 ;F201: DISC ERROR IOT EMT 60 .PAGE DONE: ;ALL DONE: WRITE A FILE MARK AND EXIT MOV #1,R2 MOV #4,-(SP) JSR °þ@@–¡ ¡ .*°ÄtÿÔA �¸@ ×w –þÀŸ–þÄpÿÁÁeÂ*Ô�þ�¡ ¡ ÷‹2þé�Ì“@ ‰ p @‡÷ _*ødþè÷ ôÄÄe6Å B Å@þ%wÑìý"Ô*CY7Šøÿ †  ·Šèÿ�à�ÁåXÁeD*@   �÷Ö •ù÷œÁß“pÿˆ*dÃüý©æ4þ� w|þ÷ Ôý’ÃþæÐý· þ*ˆ„ ÄÄe±ÂÀ”÷ŽÎ !€ ÷ xeÅH*¬  w!Dåw!FÅeXL©ö@“ “  *Ð… À•\Äe:•ÅÏ Í Ë W*ôÀ• ׋' “÷ jý% '  + Á~×R. bï�w7 ÿß ÿfïß`ï_dïÀ5ß‹bïø.0ý�ߌbïý�ß‹cï ÷eâþ¥~‡÷ Ðþüóß5Ð.Vbï÷5Äþî— Lß xÿè�ðþ×tÃe ƒàã.|ÁbïŠÁÐfæ€0ˆýÀý  +.¢—v½ýƒŽÀ5ÃU@7 ZþýÃŒ”.È�ý‹ý€ý �‡÷ >þü÷BƒÃEÿˆ �.îß xÿ€‡¦æ�0ˆæþæ@0ˆ& æ@ÿ$wþ& æAwØþ· ôý· ðýó ;DAR 177470 ;DAE 204 ;I.V. 206 DINTFG: .WORD 0 TINTFG: .WORD 0 TAPCMD: .WORD 0 DSCBLK: .WORD 0 TMPW01: .WORD 0 TAPADR: .WORD 0 .PAGE DSCMAG: ;ENTRY AND RE-ENTRY POINT CLRB DSWICH ;RESET RF-11 LOGIC SHUNT MOV @#SWR,R0 ;OPTION SELECT PATTERN BIC #100000,R0 ;IGNORE ERROR SUPPRESS BIT MOV #DSCTAB,R5 ;INIT FOR DDC DISC PC,TAPEGO ;WRITE ONE FILE MARK MOV DSCBLK,-(SP) ;DISPLAY THE NUMBER OF DISC BLOCKS MOV (PC)+,-(SP) .BYTE 100,0 ;I100: ALL DONE IOT EMT 60 SELERR: ;CONSOLE SWITCH SELECT ERROR CLR -(SP) MOV (PC)+,-(SP) .BYTE 100,1 ;A100: UPPER BYTE OF SWITCHES NOT SET IOT ;PRINT MSG & WAIT FOR PROPER SELECTION JMP DSCMAG ;TRY AGAIN TAZ*ÀÕ@W ÷ŠÒÿ€7“ÌÿwzÿÖ €„ 7³Êü\*<¡÷\ýwlþÀ•^$©„ Å U�ƒ÷ Hý×· ýj*`ä÷ùÿ ýàÎ Þ�·Ã”üÛ ™"™÷-€„÷~n*„÷t¥÷ ý¥NÍ•àÁeBCà Ñ5ú*¨Ô „ŽöþÿÆå & Í“É €N ·*ÌN"÷æ7 0üÑ‘ V7 ÀÿGbq ª*ðøÿ‡w &‡O 7ŠèÿÁÁe:Â%*å e‚ ý†ûABC…ÎåX·#ÔÿÎeXƒã8€} € £ø| !*ÀÈà @;********** L O O K ********** 12-22-72 ;THIS "LOOK" FILE CONTAINS EXPLANATIONS OF THE OTHER FILES CONTAINED ON ;THIS TAPE. ; F O R M A T ;THIS IS DIGITAL'S DECTAPE FORMATTER TOG-11 V.02 (DEC-11-YPTB:5-12-71), ;MODIFIED AT DDS TO V.03 TO INCLUDE TELETYPE MESSAGES TO THE OPERATOR. ;IN HAVING THE LOAD MODULE ON DECTAPE RATHER THAN ON PAPER TAPE, ;THE PROCESS OF FORMATTING DECTAPES BECOMES ROUTINE AND QUICK. ;NOTE THAT THIS IS NOT THE NEW VERSION OF THE FORMATTER RELE SWAB R0 ;WHICH DISC? BEQ DSCM10 ;DDC ADD #16,R5 ;BUMP TABLE POINTER INCB DSWICH ;OPEN SHUNT AROUND RF-11 DAR LOGIC CMPB R0,#177 ;IS RF-11 SELECTED, OR DID HE BLOW IT? BEQ DSCM10 JMP SELERR ;SELECT ERROR DSCM10: SWAB R0 ;BACK TO ORIG MOV R0,R1 ASH #6,R1 BIC #-031000-1,R1 ;ISOLATE TAPE UNIT SELECT & INPNRD: ;TAPE NOT READY OR NO WRITE RING CLR -(SP) MOV (PC)+,-(SP) .BYTE 101,1 ;A101: TAPE NOT READY IOT ;PRINT MSG & WAIT FOR OPERATOR TO READY UNIT JMP TAPE10 ;BACK & CHECK AGAIN DSCINT: INC DINTFG ;SHOW INT CAME IN RTI TAPINT: INC TINTFG ;SHOW TAPE INT CAME IN RTI .END DSCMAG ÷$s*$ÀØÿÁæþ $7‚ !7ŠŒ÷vvÃ@÷q*H@&ÎEáðÎP�³Îe ·“dΓà —3ƒ ÷�È*l¡‡ß âþ;�÷'èþ8�ßÅ þÿ—ŒO‡æî*�æ7Œçÿ‡6  ·åŸeâþwŒÓÿŸŠâþA*´×%ã·Šß•âþóÓßÅ þÿæ$^ ‘*ØÀ$ÿÁâþÃÉ )�É� ß àþÇ�ßÅ þÿæ“*ü$^ ÁàþfæÑ5ÎöôþÉ•¥* ÷ ÿÅ&M æˆÿæÁâþðá58âÑ5�e*D× ê†ðU€ Ñ�BÈÀ`äÂѰ ·`YhLÿ7 Úÿ÷ ÆþØ&æ ÏgASED IN LATE ;1972, WHICH ALLEDGEDLY INCLUDES AN ADDITIONAL VERIFICATION PASS. ;AN ATTEMPT SHOULD BE MADE TO OBTAIN A LISTING OF THE SOURCE FOR THAT ;VERSION, SO THAT WE MAY INCLUDE IT IN OUR DECTAPE LIBRARY. ;DETAILED INSTRUCTIONS FOR THE USE OF THE FORMATTER, AND AN EXPLANATION ;OF ITS ERROR MESSAGES CAN BE FOUND WITH THE LISTING. ; C R D O S ;THIS IS DIGITAL'S CARD READER DRIVER [NIZA] V001C, MODIFIED TO V002A ;AT DDS TO ALLOW READING OF UNIVAC "FIELDATA" CODE, AND TO USE OUR OWN ;CONT ENABLE MOV R1,TAPCMD ;SAVE IT BIT #1000,R1 ;WAS INT ENABLED? BEQ DSCM12 ;NO MOV #TAPINT,@#TIV ;SET UP TAPE I.V. MOV #5*40,@#TIV+2 DSCM12: BIT #20,R0 ;IS DISC INT ENABLED? BEQ DSCM14 ;NO MOV #DSCINT,@12(R5) ;SET UP DISC I.V. MOV #6*40,@14(R5) DSCM14: MOV #400,@(R5) ;RESET DISC MOV #40000,@#TCD ;RESET TAPE MOV :(ûoQM,ÀêÂêÄêÆêÈêXZ0ÿ2ÿ4ÿ6ÿ8ÿ„†–,&7ŠnÀxÿÀE€ÅÀ Åe·ŠV wJ,LÈÀWtÁEÿÍwÂÿÁ5ß4Dß FÀ5Œ,rý. ýÀ ýß@dïÂEøÿæ7,˜÷ J 7 ~ÿæ÷ àÂæ÷ 0À5 å,¾Âæ€÷ Âæ÷ æ÷ ®Äe· ù,ä<ÿÞ�Žw2ÿÁ]*ÿ÷ *ÿß ÿdïÃÁ~×;, bï�wƒ ü‡7 ÿßÿfïß`ï_dïÀ5ˆ,0ß‹bïý�ߌbïý�ß‹cï ÷eÞþ§~‡÷ Ìþüøœ€fX*Ú<€††€fÀèÿ7ôÿÄ .*$7èÿ÷•àÿ¦öþÿß>þÿß lÿ�÷ ÊÿR*H· ÄÿߟÂÿnÿ÷‹¸ÿ· ¶ÿßU@lÿ÷$_ ,*l lÿÀŠÿx æ€fæÛ7Š„ÿ÷„ÿ÷e�€ÿ~ÿ÷TÿvÿÉÃø†Ðf*œ.€xÐfÀêÿÄ 7îÿ7}*$êÿßUAhÿ‡ß hÿ �ÿ—jÿÖÿ· Òÿ· ÌÿßUA*Hhÿæ$^ ŠhÿÀ¦ÿÁ°ÿÁå� px6 l æšÿæß hÿø�Ö À|ÿTROL CARDS. NOTE THAT THIS IS NOT V005A, WHICH VERSION IS CONCERNED ;PRIMARILY WITH CHANGES TO THE READING OF BINARY CARDS. THE CURRENT ;UPDATE FOR V002A (UPDATE S2D) INCLUDES PROVISION FOR DETECTING AN ODD ;NUMBER OF INTERRUPTS UPON CARD DONE, AND UPON THIS PRINTING THE ;"NOT READY" MESSAGE TO THE OPERATOR. ADDITIONALLY, THIS MESSAGE HAS ;BEEN CHANGED FROM "A002" TO "S002" IN ORDER TO ELIMINATE THE NEED FOR ;"TRANSITION-TO-ON-LINE" BIT #10. THUS THE OPERATOR HAS ONLY TO RE-START ;THE READER, R0,R2 BIC #-7-1,R2 ;GET # FILES TO SKIP BEQ DSCM20 ;NONE DSCM16: MOV #20,-(SP) JSR PC,TAPEGO ;SPACE PAST [N=(R2)] FILE MARKS .PAGE ;THE MAG TAPE IS NOW POSITIONED IN THE GAP PRECEDING THE FIRST RECORD. ;FIRST READ 8 RECORDS OF 2K-WORDS EACH FROM THE TAPE. ;THEN WRITE THE 16K-WORDS TO DISC AS ONE BLOCK. ;IF WRITE CHECK SELECTED, BACK UP TAPE, RE-READ THE 8 RECORDS, ;AND WRITE-CHECK TO THE DISC. THEN READ THE NEXT 8 ó—,Vß5bï÷5Àþîß xÿë�òþ×tÃe ƒàÁq,|bïŠÁÐfæ€0ˆýÀý  —vß,¢½ýƒŽÀ5ÃU@7 \þýÃŒ�,Èý‹ý€ý �‡÷ @þü÷BƒÃEÿˆ ß ",îxÿ€‡¦æ�0ˆÂæ÷ Þþæþæ@Q,0ˆ& æ@wþ& æAwÎþ· êý· æýú(µòÓø:€MÒ*ÒH€.€M w à÷ðÿ÷�*$îÿ÷eèÿèÿ ÀÎÿw Æ7ØÿÄ  7ÊÿT*HßE@Lÿß LÿN�f¦Á¶ÿ<²ÿß‹Lÿ-€—¢ ¨*lS—¢ Ê‹_—¢ \—¢Y—¢ —¢ ·*�÷ €ÿ÷Qtÿ÷ nÿIŸ”Nÿ÷ dÿ÷ fÿ÷Ç*´^ÿÁ Óß‹Lÿ �wLÿ·JÿßU@Lÿ‚�‚u*Ø�÷$_  LÿÀÿx æÿæ¦ *ü„ƒöþÿÎ&ß‚þÿ…÷ þþ ß• Nÿ˜ ÷ ìþ÷ æþ÷ èþ™÷àþ‚ ¿"ø  AND THE PROGRAM CONTINUES. THIS MEANS, OF COURSE, THAT ;ALL OTHER PROGRAMS MUST WAIT WHILE THE DRIVER IS LOOPING. A FUTURE ;VERSION MIGHT INCORPORATE A FLAG AND CONVERT TO INTERRUPT MODE WHILE ;WAITING FOR THE TRANSITION. ; L P D O S ;THIS IS THE DOS DRIVER FOR OUR LINE PRINTER BY "PER DATA". ;IT OPERATES IN INTERRUPT MODE, EXCEPT DURING PAGE EJECTS, SINCE AT THE ;TIME (ORIGINAL DEVELOPMENT WAS DONE WITH DOS V002) INTERIM RETURNS ;FROM AN "OPEN" WERE NOT WORKING. THE DRIVER SENE ;FROM AN!TAPE RECORDS. ;WHEN A FILE MARK IS DETECTED ON ANY READ, THE PROGRAM ASSUMES IT HAS ;REACHED THE END OF THE TRANSFER. IF THERE ARE NO OTHER ERRORS, ;THE "DONE" SEQUENCE IS ENTERED. THE PRINTOUT OF THE NUMBER OF 16K-WD ;BLOCKS TRANSFERRED PROVIDES A CHECK ON THE SUCCESS OF THE OPERATION. CLR R4 ;INIT LOCAL MEMORY OF DAR CLR DSCBLK ;INIT COUNT OF 16K-WORD BLOCKS WRITTEN DSCM20: MOV #8.,R2 ;INIT TAPE LOOP COUNT #Ew*ÿæ&^ Å –%æˆÃÃeêÿÀÀeA m€À&*$ÂIf•@ä O©W£Ò•^J“ÒÕ@A’Ä*H�ˆ Õ• E  �ŠI£€Ò•\Í‹�ÍŠ§*lW£ À @ @Q• ŠR™Ê‹€ %•�6R˜€z*�bÄI“ôÉ•;fI¥þAe©V!Ó… Ñפ Ì•:*´ Έã•.A!Ë•$�Q$Å ~-0Å*Ø  ä@‚ ß“pÿ ø̔à ä@Îé ü·)*ÿæ&^ –%Á Á Á w8ILL CMD¡INV CMD¡z*$SYN ERR¡ILL DEV¡NO FILE¡ILL ADR¡NO C”$ "OPEN" WERE NOT WORKING. THE DRIVER SENSES THE CONSOLE SWITCHES ;TO PROVIDE DOUBLE-SPACE CAPABILITY (LOWER BYTE = 2) AND TAB-ADJUSTMENT ;SPACING FOR MODIFIED PALUUR LS ;SPACING FOR MODIFIED PAL11R LISTING OUTPUT (UPPER BYTE = 1). ;THE DRIVER ALLOWS OPERATOR STOP OF THE PRINTER, WITH RESUMPTION OF ;PRINTING WITHOUT LOSS OF INFORMATION. ; D D C M A G AND M A G D D C ;THESE COMPLEMENTARY PROGRAMS RUN UNDER DOS TO PERFORM TRANSFERS TO AND ;FROM MAG TAPE FROM AND TO THE DDC DISC. THE SI%MOV #1,-(SP) ;READ THE NEXT 8 RECORDS... JSR PC,TAPEGO ;...AND GO TO "DONE" UPON END-OF-FILE. MOV #3,-(SP) JSR PC,DISCGO ;WRITE THE 16K-WORD BUFFER TO DISC BIT #40,R0 ;WRITE CHECK SELECTED? BEQ DSCM30 ;NO MOV #8.,R2 ;RE-INIT LOOP COUNT MOV #200,-(SP) ;BACK SPACE COMMAND JSR PC,TAPEGO MOV #8.,R2 MOV #1,-(SP) JS'*HORE¡�cà —%8‡÷e÷Žô‹þÿý€L”‡eðË þ€�Ë Ë �·Š‘øðÊ*ÿ×—tÿw æ—w  ÁÝõÿÁaÁeÜ ·*$CÒw ÀÀ  ÂÝÚÿ„Á Ä BŒC À ‘*H Á öw ’W!Ãðÿw „Å èw ä*ljÁ�”ÿ7Œ›ÿ ‡_�tÿæ&^ –¶¶÷Špÿü*�Ãôÿw Pà 泶6 3‹ *´×=Xÿ3‹À0Èe $Ø‹Õ� h�Ò±*ØÃÝÿw ÃÚÿw …Ãe0ß�vÿß‹tÿý€… ü'#š(ZE OF THE DISC IS ;AUTOMATICALLY ALLOWED FOR BY SENSING "NED". THESE PROGRAMS OPERATE ;STRICTLY IN NON-INTERRUPT MODE, WITH THE MAG TAPE LOOP WAITING FOR ;"READY" TO GO TRUE. SINCE THIS HAS BECOME A SUSPECT METHOD IN READING, ;AND SINCE MORE FEATURES WERE DESIRED, "DSCMAG" AND "MAGDSC" WERE ;DEVELOPED, MAKING "DDCMAG" AND "MAGDDC" OBSOLETE. SEE BELOW FOR ;THE DESCRIPTIONS OF "DSCMAG" AND "MAGDSC." ; D S C M A G AND M A G D S C ;THESE ARE THE NEW AND CURRENT PROGRAMS FOR TRANSFERRING)R PC,TAPEGO ;RE-READ THE STUFF WE JUST READ MOV #7,-(SP) JSR PC,DISCGO ;WRITE CHECK THE DISC DSCM30: ADD #400,R4 ;BUMP THE DAR MEMORY INC DSCBLK ;BUMP BLOCK COUNT BR DSCM20 ;BACK FOR MORE .PAGE TAPEGO: ;THIS IS THE MAG TAPE "GO" ROUTINE MOV 2(SP),R1 ;GET COMMAND MOV (SP)+,(SP) ;POP RTN ADDR UP ONE MOV R1,TMPW01 ;SAVE IT FOR C+øþý-²*ÿÍU€…@ ACÍåBc%DUÀÀeŒy*$ `…`ÈEøà ð“ÃààÈ Ðl˜*H@àPöÿHøÿU%Ê &&÷ žÍ,Ë*lÕ-õ“÷ /æ$^ ‚¦æ(Þ ˆæ+*�&^ ‡Àÿ&ð �°*´Å"uöÿæ ÷>Ê €ðU@öåm*Ø æ&^ ö¶Ž÷‹ ÿ÷üùøv/*@à ÄÐ ##`F ý÷‹ÞÿÜ, THE IMAGE OF ;THE DDC OR DEC'S RF-11 DISC TO MAG TAPE. THEY HAVE SWITCH OPTIONS ;WHICH ALLOW SELECI ;WHICH ALLOW SELECTION OF TRANSFER MODES, TAPE FILE, OBJECT DISC, ETC. ;PLEASE SEE THE DESCRIPTION SHEET ;PLEASE REFER TO THE OPERATOR INSTRUCTION SHEET FOR DETAILS. ; M O N L I B . O L D ;THIS IS THE COPY OF MONLIB WHICH INCLUDES "LPDOS.S3D" AND "CRDOS.S2B". ;THAT VERSION (CRDOS.S2B) CONTAINED PROVISION TO EJECT THE FIRST CARD ;UPON AN "OPEN", THUS SUPPOSEDLY ELIMINATING THE PROBLEM OF -HECK BELOW BIS TAPCMD,R1 ;INSERT THE UNIT # AND INTERRUPT BITS MOV #BFSTRT,TAPADR ;INIT LOCAL MEMORY OF TAPE CMA TAPE10: MOV TAPCMD,@#TCD ;SELECT THE UNIT MOV #4000,R3 SOB R3,. ;LOOP TO ALLOW LOGIC TO SETTLE MOVB @#TST,R3 ;GET LOWER STATUS BYTE BMI TAPE20 ;READY JMP TAPNRD TAPE20: CLR TINTFG MOV TAPADR,@#TMA ;SET UP MEMORY ADDRESS MOV #4000,/*$U%MÉ 5ñÃ>Câ× úÿ¦æÇ*H( Ãaã¨Ã˜Å`× (E`× Ú�ƒÖlfS@ ýõMø˜Dç*EáECDæÎe0× ƒfÎåæi*$à Ç`$Ugzw>ÃÞ  ƒ þÿ Ç*HÀå  ƒÀåßÿñÀåÀýÿÀe€ èÉÕ®*lä‹ ã¦f €ÀÓ ‚ €àÀEà € å*�à `—#'ð‚� � � à éW£'‚Í‹ W£ë*´ÉUW£‚Íe ÍeÍe Íe T“�Z�é*؃ Þ  ‚W#™‚‡ ‚TOO MANY ;INTERRUPTS ON THE FIRST CARD. THIS METHOD, HOWEVER, DID NOT APPEAR TO ;WORK 100% OF THE TIME, SO VS2D WAS RELEASED AND APPENDED TO "MONLIB.OLD" ;TO FORM THE NEW MONITOR. SOME DAY IT IS HOPED THAT A CLEAN VERSION OF ;THE LATEST DEC MONITOR WILL BE UPDATED TO INCLUDE OUR LATEST DRIVERS ;AND INCLUDED IN OUR STANDARD DISC OPERATING SYSTEM. ;M W KLEIN 12-22-72 1@#TWC ;& WC MOV R1,@#TCD ;PERFORM COMMAND BIT #10,R0 ;IS TAPE INT ENB? BNE TAPE50 ;YES TSTB @#TST BMI .-4 ;FIRST WAIT 'TILL READY GOES FALSE ASLB @#TST ;THEN WAIT 'TILL BUSY GOES FALSE BMI .-4 ;(WAITING FOR A "READY" GIVES RANDOM ERRORS.) TAPE30: TSTB @#TST+1 ;ANY ERRORS? BNE TAPERR ;STATUS ERROR BYTE NOT ZERO TAPE40: ADD #13Îeò‰Š‰Šä‹}*ü1Â’$ 'èd €Š�âý†��dÀ0Ê ø* 4�@c÷ã Þ  ä‚W3ààÍ Îeõå % •á*DÀE€ÿÀå0Þ Í Í Í @cÍ Í `à ñV%  ÷‹*h–þ$Àg"HÀ˜Í @Œý†�ŠÀÕÀ ÷†U$ߌeF ýÆeædøš|—-*ÿ÷ v&æ*Þ €�…Ò JÊEÿŠl&ƒ1*$†& Š Ê €æE`£"‹D  Ì /*Hƒ øÿúà õæ(Þ ÿ àUà7Š˜ÿž*l ñÿÀÑ   (Hh` �B$ $�Þ50000,TAPADR ;BUMP LOCAL CMA MEMORY FOR NEXT TIME SOB R2,TAPE10 ;LOOP FOR SPECIFIE+ COUNT RTS PC ;ALL DONE TAPE50: WAIT TST TINTFG ;DID INT COME YET? BEQ TAPE50 BR TAPE30 TAPERR: ;A TAPE ERROR HAS BEEN DETECTED BIT #77400,@#TST ;CHECK STATUS BITS OTHER THAN FILE MARK BNE TAPER1 ;SOMETHING ELSE IS THERE BIT #24,TMPW01 ;WAS IT A FILE-MARK REQUES7—øæ²Kö*ÿ×-úÿÿææ,^ �ÃÃeÄÿBÑj*$„ ýßUàþÿ÷ŠÎÿJ þÿæ&^ –%·Ž7ˆå*HÅÅe’w†ÅÅe|w~ÅxU%Í¥Õ �à� *le) &œ ÎE¿µÕÅ EÅe@wH‚O*�’¤·>• ýÂ4Æ.f ýÅ EÅå*´Ð … ý‡!‡w ~Ô‹úôŠÿÿp!‡w ò*ØlÔ‹j!‡w ` Õ�!‡w R ÕAaÅö*üBa !‡w >Õ`!‡w 2 ÕAaÅ@aÂå”* O!Q†•AaP‘ ù!‡w � &•N`Ö‹¾.9T? BNE TAPE40 ;WE WERE EXPECTING A F/M INDICATION CMP R2,#8. ;BE SURE THAT # OF TAPE RECORDS IS CORRECT BEQ DONE ;SAW FILE MARK ON "READ": ASSUME DONE TAPER1: TST @#SWR ;ERR IGNORE BIT ON? BMI TAPE40 ;YES MOV DSCBLK,R3 ;CURRENT DISC BLOCK ASH #3,R3 ADD #9.,R3 SUB R2,R3 ;# OF TAPE RECORD IN ERROR MOV @#TST,R1 CLRB R1 BISB;*D:ÃŽó5@0Ä�€Ä ) �óE4*hÃtà aÔ æbæ`ˆæZˆ÷ \�÷ Xu*ŒÃíT… aÄÃà aè÷ 0Ý€óU w*°Û& æ& ææˆ2ˆw xÿ¬½Ô ø(ÀK¦*æ&^ –%Ä , ô .üÃe ô‡*$�@ÀÀeì(ÐÅ"Åeîÿp &Î ÿ*H‚e—2*¦ÎEÿ?Ž ÎÎ ”cŒcÜ8Ž$)N*lŽ ÓÓ ‹ËEÀ“ S‹ ÊÊeæ$^ Á]*�‚¦æ(Þ ˆæ= R3,R1 ;REPORT ERRORS IN UPPER BYTE; RECORD # IN LOWER MOV R1,-(SP) MOV #3*400+200,-(SP) ;F200: TAPE ERROR IOT EMT 60 ;EXIT .PAGE DISCGO: ;MAKE THE DISC GO MOV #-40000,@2(R5) ;WC FOR 16K WORDS MOV #BFSTRT,@4(R5) ;CMA MOV R4,R3 ;CURRENT DAR DSWICH: BR .+2 ;SHUNT SWITCH AROUND RF-11 LOGIC BR DISC10 CLR R2 ?&^ Á Í  TÁeT*´ É8Ž dƒÁ0B`´Äe Ô& æR*ØŽ$ŠAAIÑe ù“ß‹tÿý€ß•$vÿÅ& g*üÅ ý ÷‹úþU%Åg"G_ ÌøüÐø*C Ó À ËÓeÄ Äe( Ó  ÃeÈ*$&  ÄÅL•Ì¥ üÌ¥ ùÌ¥öÌ‹ôÌ¥8*H Ì¥ I„ ìƒ wæ ÷ P„ ûË¥*Á*lj÷ .g  ÷ 6„ ûË¥, X‚ Ä a*�òTË¥*÷ ñË¥]K IÄ Gƒ HÎ m*´CŽ ƒ A ;RF-11 LOGIC: READY FOR EXTENSION BITS ASHC #6,R2 ;SHIFT THE SECTOR ADDRESS TO WORD ADDR MOV R2,@10(R5) ;LOAD UP THE TRACK EXTENSION BITS DISC10: MOV R3,@6(R5) ;DAR (EITHER SECTOR OR WORD ADDRESS) MOV 2(SP),R3 ;GET COMMAND MOV (SP)+,(SP) ;POP RTN ADDR UP ONE BIT #20,R0 ;IS DISC INT ENB SELECTED? BEQ DISC22 ;NO BIS #100,R3 DISC22: CLR DINTFG CÈB&   „ ÷ èÎ ù‚ øŽ ×*ØöÖ Ë¥:0C Ë¥,µU%à ÷ ¾ä"Ë¥*ô*ü ÷ œÕ Ë¥.§Õ Ë¥[¯Õ Ë¥/.Õ õ* Ë¥<ÆÕ Ë¥ ƒ Ë¥ Ë¥ ö Áa*DÁe”AbE¤÷É‹üAÅ%ÅÖ Å"÷‹œþU%s*hG!æ äå ƒ ä÷ 4Þ÷ .ýË¥:Û *Œ÷ "ýË¥.úË¥$÷óÄ Ö Ê÷ û„ õ*°‡& ƒ Ë¥0 ‚Ë¥Z‡Ë¥9†Ë¥A‚Ž Ž Î ê*ÔÖ ‡ÿÿÿÿÿó ø ÿäøþÅ*E MOV R3,@0(R5) ;COMMAND! ASLB R3 ;CHECK INT ENB BMI DISC40 ;ENABLED: WAIT FOR INT TSTB @0(R5) ;WAIT HERE FOR READY BPL .-4 DISC30: ;HERE WHEN READY GOES TRUE OR INT COMES IN TST @0(R5) ;ERROR? BMI DSCERR ;YES RTS PC ;EVERYTING'S OK DISC40: WAIT ;WAIT FOR INTERRUPT TST DINTFG ;WAS IT THG& & ACB’$2Š„… Ä  AÁe F*$! ! ! ! ! À`Ã0ƒ .ƒ ÷ t1à ´*H÷ Dý Ѥ÷ 1�Ó¥,Á ÷Ë¥,çË¥Š*l<Ë¥ ¶ Ë¥.ÞË¥[åà ÷ fË¥æ*�*8ŽŠ„¶D`Ì%Ö Ê Œ%¢*´Œœÿÿ %2“ÿÿÅ"÷‹6ÿU%Gƒ÷ à Â*Ø÷ Ú1²ƒ÷ ¨ýKŠƒ÷  Ó‹µ€cŠ*ü÷ j2�ÿÿªƒ & ÁÎ’÷ |ö’÷ rýŽ* Ë¥:æŽ � öË¥.óË¥$ðDà UÁ n*D•üÄ Œ ŠÁ F`ÎÕ…æ÷ 0ýË¥:½·*h³ Ó¥*IE DISC INT? BEQ DISC40 ;NO BR DISC30 DSCERR: ; ADISC ERROR OR [NED] HAS OCCURRED MOV @0(R5),R2 MOV R2,R3 BIC #104377,R3 ;CLEAR ERR AND NED BITS (ALSO LOWER BYTE BEQ DONE ;[NED] HAS GONE TRUE WITH NO OTHER ERRORS TST @#SWR ;ERROR IGNORE ON? BPL .+4 ;NO: CONTINUE RTS PC ;YES: NOTHING ELSE TO DO BUT RETURN MOV R2,-(SK@ ‡ã¨÷ û& Î’Îå0À À À Ä*Œ€eô& ƒ Ë¥0 ‚Ë¥Z‡Ë¥9†Ë¥A‚Ž Ž “*°Î Ö ‡&fË¥*À”Ä à ÷ Àÿ ¢*ÔÅ”Åå@Å”Åå@aÄ À À À À À @aéŽ ø…„‡@ø€Eè*ÿæ&^ –%&æˆB A!"‚W£ D•¡ ƒ*$¡,öÀÿà — COK— STE— WAC*HˆÎ&^ €e%Oü‡ÁÿÿI`*là ÂÿîÿZZÿÿÿÿÿÿÀòÿÀaÌ é�” ü‚àÍ*�àg" )ÄeÄm`ÿ& (æ$^ `„ Hàh*´ÃMP) ;ERROR: PUT STATUS IN MESSAGE MOV (PC)+,-(SP) .BYTE 201,3 ;F201: DISC ERROR IOT EMT 60 .PAGE DONE: ;;ALL DONE: EXIT WITH TAPE JUST PAST THE FILE MARK MOV DSCBLK,-(SP) ;DISPLAY THE NUMBER OF DISC BLOCKS MOV (PC)+,-(SP) .BYTE 100,0 ;I100: ALL DONE IOT EMT 60 SELERR: ;CONSOLE SWITCH SELECT ERROR CLR -(SP) MOV O((Ð&‚¦æ(Þ ¿ ÀeÃeÁþÿu*Ø À³6#‹�€#‹ Ž ·Ÿ ü„_*DASA ECODBERE KITIèÿEN©$MOäÿPR AS DU ZZj*€ÿæ&^ –%Á0 Ãe@•@àÀÞÿÀe*¤mæ &  †Î €cÎ Î `@•@àöË @ ýÿ?*È)—#&‹%7 2JANFEBMARAPRMAY»*ìJUNJULAUGSEPOCTNOVDECL£ Äe©*• `Ì ø„Ö ‹Áýÿ%@€ 4¤ï4¤`*4ìW¥-î„& »Î5×"<‹ ÁdÎe³&X�#NàÝQ (PC)+,-(SP) .BYTE 100,1 ;A100: UPPER BYTE OF SWITCHES NOT SET IOT ;PRINT MSG & WAIT FOR PROPER SELECTION JMP DSCMAG ;TRY AGAIN TAPNRD: ;TAPE NOT READY CLR -(SP) MOV (PC)+,-(SP) .BYTE 101,1 ;A101: TAPE NOT READY IOT ;PRINT MSG & WAIT FOR OPERATOR TO READY UNIT JMP TAPE10 ;BACK & CHECK AGAIN DSCINT: INC DINTFG ;SHOW INS�#ÛËeèÎ ü–% · –*€ÿæ&^ –%· ö÷6šDECNOVOCTSEP€*¤AUGJULJUNMAYAPRMARFEBJANXXX .*ÈÅE€… Àåèü†Å5·ŠÛÿÀ Á@`Ãe"*ìÁ”ú Á/:� €àý†W :�à÷ "Á`÷ é*@0ÅÁ-÷ Å ç‡ù�Á”ùô‹þÿý€L�‡ëtÁ� ÷ ®ÿÁü€*€ÿæ&^ –%ÀeÀEÀ· ìÉ•þÿÂ� …*¤‚ hÉŠÂ4“$Ò ÀåJRáÈR•ˆ Xö*ÈA!û⊎ &.ˆÖ PÈÂ…Åå · úÿf¥ž*ì¥%f/ˆÖ @ÂeÒ ‚h—"RA8¦æ"ˆ³T CAME IN RTI TAPINT: INC TINTFG ;SHOW TAPE INT CAME IN RTI .END DSCMAG W*2…ŠÖ È ÷ÉŒ‹",‚’$*ƒÉŠææ,^ �"÷*4À$ �$€R’RÒÿÒÊ"Êåó*X&‚¦Áæ(Þ ˆ€@ð –%Ö  ¶ |A’¡*€þvþv@¡K€€Ã *¤ÐóР„`Be””Ê Ê(”Ì/*ÈÔešÔ EÍ T%T%T%TTT÷ŠpTÔ **ìÓ$Ò ÒÊâ(¦a%”Ô”ŒÌe”âF*ÃeÔÔ Ãe ÔÔÔ „Äe –%ƒ& H*4&ôÄÄeJ#Š## ƒ‚Þ ßpÿ&ˆ¡*Xf&ˆñe"üÿf&ˆÍå[€AAcDÐ#|Dã÷ ‚ 7´FILE ERROR þÒ*š!Ô ûƒ Äí&Ĥ÷ L òà 0*¾ää÷ 8&€ˆ&ˆà 3Ãe0ö ú*â7`$ÿææ Å"U%Á0é YbÇ.$)&]*&ˆ&cA!ããD„åÔ Ô5@Ô 7†ÿÔ´**‡7 DEV. FULL þß•€þÿà ߋtÿý€”f*NvÿˆŠÊÈŠ÷¹�& N˜&Îåæ"ˆW¢0êÓrW¬ æÑ• öû*€ÿæ&^ –%· öæþÿó‹PÎ ¡“  I£ ^*¤W£ W£,C•ÃåA× >†ƒŠÀ À À `À *ÈÀ À`‰Šçà g_ À ÀEÁ A(ò*ìÁeE ÁeE ú‡ÎŠEüÅ`ÅeÀ›*À— EN W=üÿï× ECÃ@Í@@j4ÍPNŠ�• !x*€ÿæ&^ –%À•þÿó  ÀŠa£ Ò W£f*¤R Ò W£K� · Ìc–%¶�@ÀeJ-*È!Š!! ä Ì‹þ€óÃeËËe÷˜úìæ&^ ß“pÿDJ*€ÿæ&^ –%á•þÿæœ2 ÉŠA!@•  .*¤ , Àå0 "‚—3àÎ Î Î Ðê— BEŸ*ÈB W£S ɌΠΠΗ3{*ìÅU%•#‚‹#†Ö A’ ·Š‚>ß‹ctÿý€×'@º* üßfÿA! ¡wV–%€ÄeJ Š  O*4 ÄÄe4Ð   $)3U%À0ÿÀe @´*X  ( úÍæ&^ ÷Æßh | pÿ*€ ÿæ&^ –%ÀeAu  H D! ! f8*¤ Ä h Ô e€ÁeÉ‹a€E ^°æ“Î Š*È þ† ¡Î †e¡&™CÓ õ3õ �Åe c*ì fœÎEøÿÎ „e d- D 1&"* ˆ0)äd ddóEEd÷ 8½*4 “ †5ŠÅ   U%ÖŒ€ Ñ É ß�‰Œ÷ ×*X LÚÉŒa÷ M gñ&&ˆ&ˆ‡�A© | �€K*€ ÿæ&^ –%à ÅÅe0ÁÁe K" †A É §*¤ W$ÿÿ÷@œÀ $`õ @å ýÀÛ*È  F ý‡Àe È8Ž å @Ð P$‰0Œ)*ì ‚ŠÁe ÂŒý†â …A% W)EÑüÉé( î¢(ˆ(ñ÷fó      'd*€ ÿæ&^ –%ó @ä Ì‹þ€×'@üß“fÿØ*¤ Å  D @Àe Ì € ð³ ™*È ô � ° % % EãÁ4Ó$Ñ  À*ì  –%�@ÀeJ!Š!! ÎÎEÿ†÷0ˆv8� · pÁþÿ 2k‹*€ ÿæ&^ –%Ãea£@W£0=&& & „÷Ï*¤ ÀK<<< B•Âå: Âe �À ×*È `À À €`ó ‚À ÌdÔ L Ìbã $ À ø×$"*ì < A! †— ðÿ“ÜÁýÿÖ ƒÁ‹£„a* 2ÀÁÀ � ÷"€õ ÀK ŒX *4 <ô‹þÿý€L‘‡ÎÿIÂÅ/:…Š€à� Áâû€€`¾*X A Ád÷ ØÿÅÎ ð†ú€Å� ÷ ÈÿÅü€�å · â| l*€ ÿæ&^ Ö ÷ s�ÉŒ3 o‚‚ m‡7Rô‹þÿ¢*¤ ý€Œ�‡ Âýÿ¡�A!B•Âå0— Z‚0àW9*È À À À €ÐW£ îÂ Þ Â˜Á BŒý†È oŠÂÕö*ì  ÷†óƒÁÞ Â•/È ÁÞ Â: Î È ÂA,*� ŠÈ ß‹pÿý€Í—rÿÍÅ€Â^UW£î�ŠI£€{*4•\È Í‹€Bœÿÿé�a“æÍŠQ“B“Ž à‚È ÂÃ*XÈ  B¥N÷ Dÿ€ÀÀ…”IŠA’–%  |·Š&*€ÿŽæ&^ �%Ö ƒ& €!ýa£mB—¤:� 2*¤û‡ã(÷ –#†ÃåW¥[6ÆeÁýÿ ·Š¾\£*Ècã÷ p‡Ë ûs!í b¥R©K…÷ 1*ìlÆ ãÚcË Âã A!Û÷ ,‡Â ù÷ J¯*ã ÏW£.Ì… SÂícA!ÇW¥]ûÜÀž*4W£0‡W£9ƒÀ@W£As‡Í¥Z‡f“à••Ê*X‡W£,W£ ùV¥A!¦N÷ Àÿý†À‡À Ò |ÀmþþA*€ÿæ&^ –%€Àew €H R´Õ ¬*¤ýþ  ÃfÎaÞ Å òÆeÁýÿ¾*È· ¸W%!‚¢¨‚ ÷ Þ þD”Þ È È È O*ìbÈ È aB !ŠÃ òÖ ‡÷ Ôÿpþÿ‡Â & W*÷ .À óˆŠ'ÈŠ%Î W¤, 6’ Ã-*4íˆe‡Ô ! ÷ œÿÈ ÎeÞ ÖÈ5à *XÄå0¡óƒÁ ö Ê È÷ fÿ–%ÀÿÀe¿ |Ävÿ*€ÿæ&^ –%· öÁ @Àe ÅeÎ M‚Ów*¤Âe ƒÓ ÊÊ•Ó ÊŠŽ ú‡’$Í‹#¬*ÈCã(õ‹ÿÿñ .Ó È'×$ÿÿà Ĝ¸*ìÄ %Ä`Î(Óÿÿ Ë î×(ÿÿÓ Í‹æ‘*æ,^ „+È Óÿÿ “„!Ã*4ýÄvÿ ‚Âeõ‹ÿÿ   Í‹ÑXå‹Ãe K) É =rÁùÿÁþÿ †*€ÿæ&^ ‚ ¦)á•úÿÓ$÷A!@•  ›*¤ ,‡¦Î Î ŠeÊ Ê Ê Ë Àå@`ò�*ÈÀe ‚2�Ë Àå0 FË DË *ì I²ŠË ;" Ë Àå0 3‚Ê5à0{*Ê Ê Ê `ñÊ5)N ë�ƒ‚€‹ "‚Ò *4à‡ ‰Š‰Š…Å$w €Mð CÇ “#’*Xü•%ÀCáÀ Àmÿ…‰ŒÆe–%A’  |· ¢*€ÿæ&^ –%7 æLÿl�Ö‹û€�Nÿ‡Å iÅ*¤ µ*fÁEÿÀ ØE÷ ’Ì À Ã@ k*ÈEÅ÷ €Ì À N †‚ Q%Ì EŒý†ÀÃ4*ì˜E÷ \Á5ìÌ ÀEÁå €…`…`Ì ò*E †N @’À`ÀCÀ`� õÀ  Á5?ÉÌ *4Á5ÿ½Å—rÿÅE€W¡´$Ì Ì ÀÅ @ŒZ*Xý†Ì ŠÀÕÀ ÷†À: ‡Å F*Áüÿ„ ß |· ¡€ÿæ&^ –%Áüÿ · ðuøü†>*ÿö €wFÅ&M ¦Áe ‘v É*$þÿa(… I D |÷ j‰ Ä ûþÿ*H° ÷ XðÀÿœ ÅEøÿÅ ÅeaE *l& & á EfIDDmÄ &!÷ „È*�& ƒÃe—#À‡ÎåÀÓ ùщ÷ ú„ÄEË*´ðÿÅÄ �Å ü„„ „ „ „ Ä ÄeDbÂe€*Ø�A LAÁ Å ûÔ ! ‡÷ ®0é*ü÷ ªÄeÁå‡ îÅÁeã÷ „ƒ* °°÷ |° æÅ.M Å$M ý*DÅ"÷‹´þU%G€$óCÃEðÿÄu*hà �Ä ü� � � � Á Áe�m AÀ ÞÄ ûl*ŒÑ Àå‡ ûÀeÓÄïÅÅæˆ*°$^ &‚&¦ÁÃe ËE“]ËËe‡*Ôæ(Þ ˆžæ&^ ‡&æð Ý�Ö Å"  øuöÿ’ø¬z™*ÿÅaå Í‹æÄ,L ƒw~ÄB“Œ õ*$ýƒàÇ` 5 þÿð5€ 6 ö ö f*Hwö wæ*ˆð w4‡  �*lþÿD�ÃU€ŒŒ†ÃUÃE€Œ†ÃU Q*�S¦Ž¦�Æå &ˆ…Õ fNUVUeä*´ —#ýÿ<†…¦fæ& *ˆÖ 1ÃU€õ *Ø€ÃU@DÄEÀÿÃU!>†ÃU¦Ã*üfæ& *ˆÖ õ5Àõ €ÃU Ð* ÃUÃCÝÃB E Æe¶ö vW*D¶ööð æ*ˆ Å"U%÷‹¦*h–þGæÎe�þæfÇ.Â Ñ É Ñ Em&ŒÆe¥�å‹ÄÄEv ×&&WøÐî‹*ÿæ&^ &¦Âeþÿp°ð€ÿ*$÷ TðÀÿœ ÅEøÿÅ ÅeE`E& & n*HEfpCCmà æð÷ æ¦~*lÄÔ &ƒ ðæ°÷ îî*�‚¦ ðþÿ°°÷ Ò8 Û*´÷ ÀðÀÿ‚× À‡ÂåÀƒ ùö ÷*ذ°÷ �ö„%Ô Ã ý6Õ*ü0°÷ t„ÄEðÿÅÄ �Å ü„„ ˜* „ „ ÄEÄe„mLAN±Ö °Ö °÷ n*D2Ö °°÷ (æÅ.M °Å$„�*hM Å"÷‹ŽþU%GÅÅæ$^ &‚'*Œ&¦ÁÃe ËE“]ËËeæ(Þ ˆj&°žæ&^ ‡&æð Ý�Ö Å"uöÿsøÔë*ÿÅaÆå å Í‹æÄ,L ƒDÃnî*$ÄB“Œ ýƒàÇ` % ð‹ Z�$Ã7€æ?*H*ˆð æ&ˆÅ—#ýÿL†U%„¦&& & @*l*ˆÖ Aô‹<æÅ,M ‚Ë&&à £*�=�ô €,ˆ+ˆ°°…   ÷ öÆeí*´  ð æ*ˆ…ÅeuF!ü–%Å"U%H*Ø÷‹“$ÿGæÎeÿæfÇ.Å Ñ DÃ!*üd‘ä‹6Ö&æ…U%fNéÃ8W)CÓ$w* Å N! ÅeÄeH!²÷‡ƒ ôæ�ü*D   ÷ Z%ÔDŒ÷ RC€,ˆÆe¨*hŒ¤÷ <…ÅeƒÖ ƒcÁ$ÕB Á ü÷ «*ŒÔDŒ÷ Œ¦æÅ.M …ÅÅT*°æ$^ &‚&¦ÁÃe ËE“]ËÌ*ÔËeæ(Þ ˆžæ&^ ‡&æð Ý�Ö ØøÅ"uöÿ�øÊSNn*ÿ€�Ñ E‚ÂeRRRRRÂå ¼—*$%“Ô ¦Ì 22 2 Å n*Hý‚ò ò F„&USwþÿ=*l&Ö €… p÷ ö4,0·*�ö�ÅEÿÅ Å Å Ô 2% ÄeÅ ùÅ*´0þÿÞÌ 00 0 &÷ ¼*Øžâýÿ0âÿÿÅ"÷‹ÿU%Gš*üÔ þÿE�Å Å Å Å ÅÅ  ƒ …ãë* …#ûƒ�c�cDð  fNUVU00ì*D…%%%à çp¹Ö b¬*hÀÖ âþÿ¼ÅÅæ$^ &‚&¦ÁG›*ŒÃe ËE“]ËËeæ(Þ ˆžæ&X °^ ‡&æð Ý�Ö Å"uöÿOø†�¯*ÿ€ö 9�:Ÿ-  —-‚ö5@%*$…ƒŸ­!æøÿæÇÿà à à …Eº*HÅ ‡6 öÿÿÅ&M ¶¶Ö æ$­*l^ Å"÷‹ŠÿU%Gw‚fþÿ& *�ŽÜÅ …ãÅ þ†pŽ Å,M …'pÄm*´ Ä ýpß„‚…T Ô Åe TÜ*ØTTTTŒìLÅ&M ¶Ž¶™*ü0 õð‹Ÿ ò�þÿœ ÅEøÿÅ CaÃeÄ-* ÅeÕ D!ûK&þÿœ ÄE>*DøÿÄ aÎeÞ fæÅ.M &0 Ÿ$hþÿ& NÝÄ.L &0 æL ³ ø´*ÿÅ&M  Wþÿ„Eœ& … <*$… … ‡„ ü†Îù„e&pÿ ÆÿP*Hœ ÅEøÿÅ ÅeE`E& & 0pw*lfÂ’$EAÁ B`°¦ðÀÿÿ ~ÿ0$*�Ó þã ðÿ nÿ& &DÔ &à ý*´Ã à à ÂÅ ƒ`üà ic £Å€J1 „ ÿ*Ø6!(à ¡ öâ Ž ñ6!‡6 à V*ü¡ èâ Ž —"ÿÿàÃå÷—,üÿTð <* ÿ êþ…þÿBaBaÐ6AÁ �cÑ JQÄ Å €*DûÒ � ‡ÿ ºþ0ÿ ´þ‚Ò !†Å•*héÒÿÿÄåêÿ ’þ’$’Šÿ ð*Œ€þÎåŠ"°ÿ lþâŠcÊ ¢âe*°ÿ Vþ&Å"÷‹BþU%GÔ 0° À*Ôÿ 6þÂå    þÿBÝ‚ ‚ ‚ ¿‡ö eøö ùöøPà¡*ÿÅ&M Ãå §&ì&÷ ž°÷ ±*$Ø&°æì¦÷ €°÷ º„R*H„mƒmÅ$S Å ü¶# Å$**l„m Å ý°°¶#÷ Æ*�f0°÷ Z°Æe Å$M Å"÷‹•*´JÿU%G—-Bö8ö<Å y*Øv! ÅeÄeH!²ö‡¶ ò6‡ÅÝ*üÅæ$^ &‚&¦ÁÃe ËE“]�* ËËeæ(Þ ˆžæ&^ ‡&æð ßDÝ�Ö Å"uöÿø@ßfT*ÿ«Åaå Í‹æÄ,L ƒw¸ÄB“Œ ¼*$ýƒàÇ` 5 þÿð5€ @æ*ˆð Hþÿ·*Hõ €Æå &ˆ—#ýÿ,†…fÖEÀÿ+õU€'*lÆe ÷ tð æ*ˆ Å&M ¶¶æü*�$^ Å"U%÷‹bÿGæÎe\ÿæfÇ.Â*´Æå Â Ñ E¥�勯e ÃEÃL*Ø v É&æÅÅæ$^ &‚A*ü&¦ÁÃe ËE“]ËËeæ(Þ ˆû& žæ&^ ‡&æð Ý�Ö Å"uöÿøTQKé*€Ó$æææËÀÿ¯AcfNlN*$Î £& EÕ CDÄ Ä Ä Ä  à aüCU%¿*HW#ÿÿÕ Âeà ø÷  Î pŽ pÐ*l÷ ŽÚÃÍ0‚ à ûÍP¸Ö Àeº*�ˆ  Å"÷‹bÿU%M–%þÿ& NÝæ.0*´^ 0 ðE€ Äeœ ÃEøÿà Å`Åek*ØD#Eü &ææ.Þ 0 &æ&*üÅÅæ$^ &‚&¦ÁÃe ËEª* “]ËËeæ(Þ ˆžæ&^ ‡&æîDð Ý�Ö Å"uöÿøø–Vq|*³ÿÅaÆå å Í‹æÄ,L ƒwÄBñ*$“Œ ýƒàÇ` 5 þÿð5€ iæ*ˆð pG*Hþÿõ 6€&ˆ„—#ýÿQ†Ÿ- Pô5?*lOÑ &ˆ…Õ fNUVUJ—#ýÿ†,;!9ß*�Ÿ- 8…Õ BBUBU8ð÷ ˜Ö ”””h*´Ö ´ ÷ €ð æ*ˆ 0 Å&M ¶³*ضÖ æ$^ Å"U%÷‹ÿGæÎe ÿæ*üfÇ. ÂÂ Â Ñ E¥�[* å‹ÃÃEÆe v Ã&æÅp*DÅæ$^ &‚&¦ÁÃe ËE“]:*hËËeæ(·Þ ˆžæ&^ ‡&æð Ý�IŒÖ Å"uöÿøþÐ*ÿÅaå Í‹æÄ,L ƒwÄB“Œ s*$ýƒàÇ` 5 þÿð ð5€ wæ*ˆÙ*Hð gæÅ,M …`$Í [€ Æå &ˆ2*l—#ýÿc†…õ b�õ‹g¦¦ æ& *ˆà*�Ö XÄ „ ƒÑ ãƒ#,4�  O*´ ÷ ìQ$”TTT°÷ ØÃeŠ*ØÁ #i÷ ÄþÿfÎ €Á € ðU p€*ü÷ ª8÷ œðE Ö €-ˆÆe EÃS»* ÃÆe v&æÂ ÂÑ*DÂÆå Â Ñ E¥�å‹ä ð æ*ˆ„*hæÅ.M æ&^ ¶¶Ö æ$^ Å"r*ŒU%÷‹nþGæÎehþæfÇ.ÅŪ*°æ$^ &‚&¦ÁÃe ËE“]ËËe *Ôæ(Þ ˆžæ&^ ‡&æð Ý�Ö Å, ø"uöÿnøØ &Ñ*ÿÅaå €�Í‹æÄ,L ƒJÄB“Œ y*$ýƒàÇ` 5 þÿŠ&ˆ…ƒæÎTÖT!¦*HÓ … #… … ÅHÄ �¿#(ˆ¦B*l!'ˆÎ (ˆƒ›÷ ‹÷ è÷ ø8Äe„ E*�„ ÄeÄef$C#‘ã‹Å 0Š æ*ˆCŽ*´Ä.&0 æL &0 þÿ& Žœ*ØL 0Š Æe ö 1&fK÷ Œ(ˆà*ü¦ØÖ Ç�'ˆÅ•••ÎC!ˆ�ÕEðÕ?•M*   �Í›„Âæ*ˆ÷ F0÷ *ðˆ*DðU€ Å"U% ÷‹¨þGæÎe¢þæfZ*hÇ.C& Ž ý“%‡ÅÅæì*Œ$^ &‚&¦ÁÃe ËE“]ËËe«*°æ(Þ ˆžæ&^ ‡&æð Ý�Ö Å"Dà Ôuöÿ¶øü&³*ÿÅ&M –%Ä Ä G�i°€ðU 0 å*$÷ €¸÷ pðE ²œ ÅEðÿÅ N*HCaÃe…Åeð _��pplð Ô*l&pK!ÃüK÷ °þÿó à*�¦æÅ.M °÷ …lÅeÎ*´D—<ÍEÀÍE?ÄEÀÿÄ !> QA*ØÕ • •÷ ¾¦0 æÅ.M & '*ü& NÜM 0 Å"÷‹îþU%GæðDF* &÷ ‚Áp÷ rÅH„ÄeAÇÁeÅÖ*DÅ ý°Å8—,BU%Ä 2! ÄeÐ*hÃeH× øö… óp÷ *„Å$l˜*ŒÄeUÅ ý÷ ƒ wîþÅÅæ *°$^ &‚&¦ÁÃe ËE“]ËËe‡*Ôæ(Þ ˆžæ&^ ‡&æð Ý�Ö Å"  øuöÿ’øÉ-Å*ÿ€�Áe&ðÀÿö Ó$æ *$æEKcKmÓ ÷ Ž‹£; Ñ 8 œë*H ÃEøÿà lþÿÃeÄ$Í5@ý^*lKáá J ææ,^ ¡ËÄe&�*�T&T÷ 0d%aT÷ $Q$KŒ¤Š �*´°Å"÷‹@ÿU%GÅÅæ$^ &E*Ø‚&¦ÁÃe ËE“]ËËeæ(Þ (üˆžæ&^ ‡&æð Ý�Ö Å"uöÿ�øöè'Ô*ÿÅaå Í‹æÄ,L ƒw:ÄB“Œ 9*$ýƒàÇ` 5 þÿ€�&ˆ ‚— ýÿ†ƒœÃEÀÿ«*H× >w†× × ò f€ò5À*leòU@ò €× [æ*ˆ² ¦R*�¦æ× Ž & *ˆÖ G× ‚&ëÏ*´(ˆ°Ì 8�L'ˆ°4e÷ ÌQ$*Ø ô �BBâBä" ± üÿü× ÷ ¬Œs*üÉU@Ò °ðU€ Æe  Å"U%÷‹äþGƒ* æÎeÞþæfÇ.Ö … U¥… … … … U¥Ñ BP*Db‘â‹Ã 0Š æ*ˆ€�Ö BÃÅ.&4*h0 æM &0 & þÿ�M 0Š *Œ¶½&æÃúÅÅæ$^ &*°‚&¦ÁÃe ËE“]ËËeæ(Þ <(Ôˆžæ&^ ‡&æð Ý�Ö Å"uöÿÄøô/®*ÓÿÅaå Í‹æÄ,L ƒTÄB“Œ ýƒà4*$Ç` % $�öÿÿwæ*ˆ<—*HÆå &ˆ…ƒæÎTÖTBÓ$W!ýÿ"‡W!þÿ7‚*l÷ Z¸÷ ú‹K÷ ì+Ä ÷*� �÷ 4¸÷ Ô‹J÷ :Âþÿ Ñ E¥�1*´å‹ÃÆe ÃEv ;&æÂöÿê�*ØÂõÿçÂóÿä’’’æC!ˆŠÊEðÒU€ _*ü   Ö Š•Ê›÷ bÄÄe`ÅÅe`²* S“)ˆÅÿÿB …vð æ*ˆ ‰*D…ÅeuF!ü–%Å"U%÷‹¢þGæÎeœþU*hæfÇ.×ÅÅæ$^ &‚&¦Á *ŒÃe ËE“]ËËeæ(Þ ˆžæ&X*°^ ‡&æð Ý�Ö Å"uöÿæ(ˆ'ˆæ ë&Ô(ˆƒ‹÷ šÿ‡Ò  … ý‡Šø¸ù*„†  ¸7 �8*$œ ÁEøÿ    $— À‡&æÃE*HôĈÂ`‡ÂàB Ä ú†ƒƒ ŠÃÂ Ä ý†ÂEàÔ*lÂ`�`Ä ÿL$$ÁÓÁE0ÿd‡æ$^ Àpÿ *�ÅÿABDU%EÄ �Ä5x Ä �±WŒ»*´‡÷ hÿÅ"U%MðU€ ß ÿÛì¦æì*ØÃÿËË‹þ€Á5ÁEÿÁ•MKãÂ5Ú€üÂ5 çæÿæÕ ø†xÃ*€8 x÷BÀæÿ$Â"ÿ Ê ˆ*$Âe "ÁÓÁE8ÿb‡æ$^ À¾ÿÁ$ÿCÝ*H �B�x  €× ‡÷ ºÿÅ"uà €L lðU€ É ì÷Þÿ¡ ñfæÇø´�€*”HÀ&�÷ ß5pþú 7Š¢Ö f*$^ÀÖÿÀe&¦âä—— ßApþ‡ø*H&ÀîÿæpþÖ J‡*�fßÁ—tþ€ÁeàÈ‹ W Ác*lEW ßSW —MW ¸FfÁå �ÎåúÎmg*�ŠÿÎaÎe˜�—7 šÿ2ÈÓ7–ÿ�€ŠpþÈ‹F*´€æ$^ À|ÿÁtÿ Àå(  ýÐ #*Ø! @ ý‚É� Àÿx Špþ÷ .÷ 0ÿØÁÿÖ*üqH ßÕpþË÷D ÿø7 ÿõ·Š¦ÿò�* æèþ懠±²3´56·¸ :£À'½"90¯SÔUV×z*DØY Ý¬¥_¾?Z-ÊKÌMNÏPÑ !$ª©»\Ò¦ABÃDÅÆGH×*h Û.<(+ÞÉ ±²3´56·¸ _½ÀÞ'\90¯SÔUVרY »Ÿ*Œ¬("£¥Z-ÊKÌMNÏPÑ :$ªÛ¾¦Ò+ABÃDÅÆGH ?.©Ù °ÝB+Xææ÷ * Šß•Rõþ*ÔM÷ ÷ HÉ•ß5"PõÂwšþ‡W¢ô*ø‡Â·"þwïšþÉ•÷ ìÿ.ß5Põ*f*ÅÅEþü…ŒŒŒ   q‘ɕ ñ*@ɕ ß5"Põó ÷Öý7 Òý÷ «*d(þóTõ3 BœA’Â�PÂPõÂ52ÁU€~*ˆÂ5ÁUÂ5"ÁUÂ5@ÁU€ÂEëÿÂy*¬�Ps ÷ ~ý1Šøÿ÷ 6ÿ÷ 2ÿ÷ .ÿ÷ ÿw¢ýÛ*Ðæ$^ À&ýÁRýÅRõÍE@ÂPõ·Š5ýÂ52*ô€€¦æ÷‹&ý€ ÂÝý7‹ýw|ýÂ5:*93· ýÂ5è·ŠÿüÍ5(¦æ#+*<Â51 ɥɥ÷ÜüØüÍ5 ÍUw“5*`Èü• ßÿÿTõwBýÂ5 @ß TõóB“w0ý7ŠŠ„¤ü7Š¢üÇšüïø÷�2*œ¸ÀN�÷ âß5pþú 7ŠR7Ša*$(F·Š"C÷‹˜ &æÎeP—Îex—Ï*H—�ŠëñÀ¨ÿÀe&¦âä—’ÀÅ¡*lþ7�X €ÁÐÿ w Æÿ ÷¸ÿÂÿ&— ó*�ßApþ‡ÉP7 Æÿíw¤ÿ ¦¶Æå£*´Ö q&ÀÎÿæpþÖ x‡G�fÁxÿærþ¦Ë*ØpŠ€Î Î Î Î бÝÿÿ‘•wVÿ—%(ÈŠ¤*ü&€ÈŒa€$Á—tþ€ÁeàÈ‹ W ÁVW ßgW Þ* —aW ¸ZfÁå �ÎåúÎmàþÎaÎeÂ�—L*D7 ÿFÈÓ7<ÿ�û€ŠpþÈ‹0€æ$^ Àò*h"ÿ÷‹\ÿÁòþ È‹� À娠ýЋ*Œ!Š@ ý‚Ñ•�Ñ• Àbþx Á˜þ’ø�÷ ÎþÅq*°"uŠpþ÷ 6÷ lþÇÁ8þÁe Éí”þ‰ Ì*ÔH ßÕpþ·÷D8þø7 2þõ÷•‚ÿñæþ×*øæ‡ ±²3´56·¸ :£À'½"90¯SÔUVרY ÝÝ*¬¥_¾?Z-ÊKÌMNÏPÑ !$ª©»\Ò¦ABÃDÅÆGH Û.<Ç*@(+ÞÉ ±²3´56·¸ _½ÀÞ'\90¯SÔUVרY »¬("£*d¥Z-ÊKÌMNÏPÑ :$ªÛ¾¦Ò+ABÃDÅÆGH ?.©Ýþÿß lÿ�÷ ÊÿR*H· ÄÿߟÂÿnÿ÷‹¸ÿ· ¶ÿßU@lÿ÷$_ ,*l lÿÀŠÿx æ€fæÛ7Š„ÿæÎe‚ÿ=�·~ÿ÷TÿvÿÉvø:€MÒ*ÒH€.€M w à÷ðÿÃÑ*$Ãeêÿ÷èÿ ÀÎÿw Æ7ØÿÄ  7Êÿl*HßE@Lÿß LÿN�f¦Á¶ÿ<²ÿß‹Lÿ-€—¢ ¨*lS—¢ Ê‹_—¢ \—¢Y—¢ —¢ ·*�÷ €ÿ÷Qtÿ÷ nÿIŸ”Nÿ÷ dÿ÷ fÿ÷Ç*´^ÿÁ Óß‹Lÿ �wLÿ·JÿßU@Lÿ‚�‚u*Ø�÷$_  LÿÀÿx æÿæ¦ *ü„ƒöþÿÎ&ß‚þÿ…÷ þþ ß• Nÿ˜ ÷ ìþ÷ æþ÷ èþ™÷àþ‚ ¿"ø–¸r*€P ¸÷VÃÃeæÿÄœÄ`�*$Xß Zß“ÁêÁÊÿQ$ÀÈê```BÂEùÿÊ*HÂUA ‡æ$^ ÁÀêÀ¢ÿB� Â5W*l× ‡÷ ¸ÿæ&^ ðU€ ß Âêì7 rÿf8 �æKø �-*”`À>�÷ `ß5pþú×DD÷•H*$è÷•æßpþß5@pþüÖ vÀ¾ÿÀe&Ø*H¦âä—— ßApþ‡&ÀîÿæpþÖ ý*lb‡;�fÁ—tþÈ‹W Ø`W àpW èpW È“*�gW Ð`Á¥`æ•!Á¥ æ•?�•Á {*´€ÁeàfÁå �ÎåúÎmRÿÎaÎe°�—7 xÿ‰*Ø;ÈÓ7tÿ�€ŠpþÈ‹&À5€æ$^ v*ü÷•øÿÀJÿÁBÿÀå(  ýÐ á* ! @ ý‚É� ÀÒþx Špþ÷ 8÷ ÿÑÁ¼þL*DqH 7ЬÿßÕpþÂ÷DÀþø7 ºþõ7Š‘*h¤ÿò7Š¢ÿïæ–þ懠±²3´56·¸ :£À'<*Œ½"90¯SÔUVרY Ý¬¥_¾?Z-ÊKÌMNÏPÑ !$ª©»\ *°Ò¦ABÃDÅÆGH Û.<(+ÞÉ ±²3´56·¸ ¦½':¾À90*Ô¯SÔUVרY _¬(¥\"Z-ÊKÌMNÏPÑ  $ªÝ»ÞÒ+ABŠøÃDÅÆGH  .©Û<£É7ø€Mü*’|€:€M÷ úß@êÀêÀ5@öÀ5ø*$ó7 2÷ èÖ ÀÊÿx ·7Š(÷  P*HÁÁe$wÁe…wÀ¢ÿÁ Á ÷ =*ltÇê÷ –ß@ê êß5@êõæ$^ ß5b*�êß5ê þÿ êß@êÀê@ À5‘*´÷Äž÷ ð ÷‹¢÷ JÁ’Â�÷ ?*Øæ&^ ÃxÃt÷•y� u…”ÅE€ÿ*üW! W! 3W! W! ï·ŠRW!`é* ÷ ÄS‘÷ŠA÷•9÷ ,݃˕ w$·"<*DÄÄà„ 2 W! (÷•� ×§xÿ·Š*h÷ ¼½Ó• ÷ ìà‚÷Šïø×§yÿ³ÅÅíÔ*ŒW!­÷•ÑéÅ5¥㨣÷‹À÷ h*°›ßªê ê7šß ê×§xÿß ê*ÔßÈê7 €‡÷zwHþ7Š€÷•{fŒw‹d*ør÷ŠoúÖ Å 7ŒdŒ‡æüýæ‡÷•À¼*J÷ 7ŠD‡ß5êü êßÿÿ êæÎe,q*@Ÿêßêß êý€ß5êü‡d‰ø–¸r,€P ¸÷VÃÃeæÿÄœÄ`^,&Xß Zß“ÁêÁÊÿQ$ÀÈê```BÂEùÿÂUA ,L ‡æ$^ ÁÀêÀ¢ÿB� Â5× ‡9*r÷ ¸ÿæ&^ ðU€ ß Âêì7 rÿfæŠø