Listing of file='P31D030C' on disk='vmedia/702-0079.wvd.zip'
# Sector 179, program filename = 'P31D030C'
0010 REM . 2231W-3-01 (1/16/77) 340013
0150 DIM I7$(1)5,G$33,I$(1)8,F$(4)33,T$(1)1,E$40,G$(4)40,D$56,H$56,A1$2,F1$(4)
33,A2$2,B$16,D$(100,8)2,A3$10,B1$2,C$3,J$2,K$1,M$30,N$35,O$30,P$30,K1$(1)
1,B2$10,C2$3,D2$3
0160 B$=HEX(01300231043208331034203540368037)
: D1$="EXPANDED"
: E1$="LINE FEED TEST"
: F1$="PRINT"
: G1$="SELECT"
: M$="ACCEPTABLE RESULT IS "
: N$="VERTICALLY SPACED DOWN THIS PAGE "
0230 P$="2231W-3 PRINTER DIAGNOSTIC"
: O$="DEPRESS - RETURN(EXEC) "
: INIT(0A)J$
: INIT(0A)K$
: INIT(0A)C$
: GOSUB '110
: PRINT HEX(030A)
: GOSUB '201
: PRINT TAB(18);"STATIC PRINTER CONDITIONS"
: PRINT K$
: PRINT TAB(20);"POWER MUST BE ON"
0310 PRINT TAB(17);G1$;" LAMP MUST BE ON"
: PRINT TAB(16);"WIDE PAPER IN THE PRINTER"
: PRINT TAB(12);"ADJUST TOP OF FORM TO LINE NO 4"
: PRINT J$
: PRINT TAB(6);O$;" TO START ";P$
: $IF ON /000,390
: T2=80
: GOTO 400
0390 T2=8000
0400 GOSUB 5120
: GOSUB '0
0420 DEFFN'1
: GOSUB '105("COMPLETE PRINTER")
: GOSUB '32
: GOSUB '35
: GOSUB '40
: GOSUB '50
: GOSUB 3610
: GOSUB '80
: GOSUB '90
: GOSUB '120
: STOP "END OF PRINTER DIAGNOSTIC"
: LOAD DC T#6,"START"
0540 DEFFN'2
: GOSUB '105("DATA BUFFER")
0550 GOSUB '32
: GOTO 550
0570 DEFFN'3
: GOSUB '105("HEAD SOLENOID")
0580 GOSUB '35
: GOTO 580
0600 DEFFN'4
: GOSUB '105("SPIRAL PATTERN")
0610 GOSUB '40
: GOTO 610
0630 DEFFN'5
: GOSUB '105("PAPER MOTION")
0640 GOSUB '50
: GOTO 640
0660 DEFFN'6
: GOSUB '105("COMPLETE CHARACTER SET")
0670 GOSUB '70
: GOTO 670
0690 DEFFN'7
: GOSUB '105("SPECIAL PATTERN")
0700 GOSUB '80
: GOTO 700
0730 DEFFN'8
: GOSUB '105("GRAPHIC CRT OUTPUT")
0740 GOSUB '120
: GOTO 740
0790 DEFFN'16
: RETURN CLEAR
0810 GOSUB 4970
: PRINT TAB(4);"* PRINTER SUB TEST MENU *"
: GOSUB 5000
: PRINT TAB(15);"SPECIAL FUNCTION KEY DESIGNATION"
: PRINT K$
: PRINT TAB(5);" 9 - ";E1$;TAB(33);"14 - REPETITIVE CHAR OUTPUT"
0870 PRINT TAB(5);"10 - VERTICAL TAB TEST";TAB(33);"15 - ALTERNATING BIT PATTE
RN"
: PRINT TAB(5);"11 - CARRIAGE RETURN TESTS";TAB(33);"16 - ";D1$;" SPIRAL"
0890 PRINT TAB(5);"12 - PIN ";G1$;"ION TEST";TAB(33);"17 - OPERATOR ACTION TES
TS"
: PRINT TAB(5);"13 - DIAGONAL LINE TEST";TAB(33);"18 - LINE FEED ";G1$;"ION
"
: PRINT TAB(33);"31 - RETURN TO MASTER MENU"
0920 KEYIN B1$,920,940
: GOTO 920
0940 IF B1$<=HEX(08)THEN 920
: ON VAL(B1$)GOTO 920,920,920,920,920,920,920,920,960,980,1000,1030,1120,10
50,1060,1080,1110,1150,920,920,920,920,920,920,920,920,920,920,920,920,12
00
0960 GOSUB '105("LINE FEED")
: GOTO 2560
0980 GOSUB '105("VERTICAL TAB")
: GOTO 2800
1000 GOSUB '105("CARRIAGE RETURN")
: GOTO 3050
1030 GOTO 6820
1050 GOTO 5600
1060 GOSUB '105("ALTERNATING BIT PATTERN")
: GOTO 5510
1080 GOSUB '105("EXPANDED SPIRAL PATTERN")
: GOTO 2400
1110 GOTO 4320
1120 GOSUB '105("DIAGONAL LINE")
: GOTO 6290
1150 PRINT HEX(03)
: INIT(00)C2$,D2$
: PRINT C$;C$
: INPUT "ENTER THE LINE FEED SPACING INCREMENT TO BE TESTED(1-15)",R
: IF R>16THEN 1150
: GOSUB '105("LINE FEED SPACING")
: GOTO 6430
1200 GOSUB '0
1240 DEFFN'31
1250 DEFFN'0
: RETURN CLEAR
1270 GOSUB '110
: GOSUB 4970
: PRINT TAB(4);"* MASTER MENU *"
: GOSUB 5000
: PRINT TAB(17);"SPECIAL FUNCTION KEY DESIGNATION"
: PRINT K$
1330 PRINT TAB(5);"1 - COMPLETE PRINTER TEST";TAB(33);"5 - PAPER MOTION TESTS"
: PRINT TAB(5);"2 - DATA BUFFER TEST";TAB(33);"6 - COMPLETE CHARACTER SET"
1350 PRINT TAB(5);"3 - HEAD SOLENOID TEST";TAB(33);"7 - SPECIAL PATTERN TEST"
: PRINT TAB(5);"4 - SPIRAL PATTERN TEST";TAB(33);"8 - GRAPHIC OUTPUT TEST"
: PRINT TAB(32);"16 - PRINTER SUB TEST-MENU"
: PRINT K$
1390 STOP " ( PRESS DESIRED S.F. KEY ) "
: GOSUB '100
1510 DEFFN'32
1540 D$="DATA BITS "
: GOSUB '100
: GOSUB 2940
: PRINT HEX(0E);"DATA BUFFER TEST"
: PRINT J$
: A1$=HEX(00)
: PRINT D$;" 1 THROUGH 6 HEX(3F=?)"
: INIT(3F)G$
: GOSUB 1810
: PRINT K$
: PRINT D$;" 5 & 6 HEX(30=0)"
: INIT(30)G$
: GOSUB 1810
: PRINT K$
1660 PRINT D$;" 1,3,5 & 6 HEX(35=5)"
: INIT(35)G$
: GOSUB 1810
: PRINT K$
: PRINT D$;" 2,4,5 & 6 HEX(3A=:)"
: INIT(3A)G$
: GOSUB 1810
: PRINT K$
: PRINT D$;" 5,6 & 7 HEX(70=p)"
: INIT(70)G$
: GOSUB 1810
: PRINT K$
: PRINT D$;" 2,4 & 6 HEX(2A=*)"
: INIT(2A)G$
: GOSUB 1810
1770 PRINT K$
: PRINT D$;" 1,3,5 & 7 HEX(55=U)"
: INIT(55)G$
: PRINT K$
1810 FOR I=1TO 5
: PRINT A1$;G$;G$;G$;G$
: NEXT I
: RETURN
1850 DEFFN'35
: GOSUB 2940
: GOSUB '100
: PRINT HEX(0E);"HEAD SOLENOID FIRING TEST";HEX(0D0A)
: FOR K=1TO 2
: PRINT HEX(410D420D430D440D450D460D)
: FOR I=1TO 5
: PRINT "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890-=!@#$%^&*()";
1930 PRINT "?.abcdefghijklmnopqrstuv";
: PRINT "wxyz!@#$%^&*()-+1234567890-=';/.:?ABCDEFGHIJKLMNOPQRSTUVWXYZ";
: PRINT HEX(0E)
: PRINT "TTTTT=====55555wwwwwjjjjmmmm;;;;;;;;jjjjjjjjtt==55wwjjMM";
1970 PRINT "++;;;;BBBN"
: NEXT I
: FOR I=1TO 3
: FOR J=1TO (65)
: PRINT "AB";
: NEXT J
: PRINT "AB"
: NEXT I
: PRINT J$
: NEXT K
: RETURN
2150 DEFFN'40
: GOSUB '100
: GOSUB 2940
: PRINT HEX(0E);"SPIRAL PRINT TEST";HEX(0D0A)
: F$=HEX(00)
2200 K1$(1)=HEX(10)
: FOR I=1TO 132
: MAT COPY K1$()TO F$()<I,1>
: IF K1$(1)<HEX(7E)THEN 2250
: K1$(1)=HEX(0F)
2250 ADD(K1$(1),01)
: IF K1$(1)<>HEX(20)THEN 2280
: ADD(K1$(1),01)
2280 NEXT I
: FOR I=1TO 112
: FOR J=1TO 4
: PRINT F$;F$(J);
: NEXT J
: K1$(1)=STR(F$(1),1,1)
: MAT COPY F$()<2,131>TO F$()
: STR(F$(4),33,1)=K1$(1)
: IF I<>57THEN 2390
: IF F$=HEX(0E)THEN 2450
: GOSUB 2940
2390 NEXT I
2400 F$=HEX(0E)
: GOSUB 2940
: PRINT F$;D1$;" SPIRAL PRINT TEST"
: PRINT K$
: GOTO 2200
2450 IF VAL(B1$)=16THEN 2400
: RETURN
2550 DEFFN'50
2560 GOSUB '100
: GOSUB 2940
: PRINT HEX(0E);E1$;" #1 - (HEX CODE 0A)"
: PRINT J$
: PRINT HEX(2A)
: FOR I=1TO 17
: PRINT HEX(0A0A2A)
: NEXT I
: PRINT K$
: PRINT M$;" 18 STARS ";
: PRINT N$
: IF VAL(B1$)=9THEN 2560
2800 GOSUB 2940
: PRINT HEX(0E);"VERTICAL TAB TEST (HEX CODE-0B)"
: FOR I=1TO 9
: PRINT HEX(0B);"VERTICAL TAB NO.";I
: NEXT I
: PRINT C$
: I=10
: PRINT M$;
: PRINT " 9 EVENLY SPACED VERTICAL ";
: PRINT "TABS SIX LINES APART."
: IF VAL(B1$)=10THEN 2800
: GOTO 3050
2940 PRINT HEX(0C)
: PRINT "(TOP OF FORM TEST - HEX CODE 0C) MUST BE THE FIRST ";
: PRINT "LINE OF PRINT AT THE TOP OF A NEW PAGE."
: PRINT K$
: RETURN
3050 GOSUB 2940
3060 PRINT HEX(0E);"CARRIAGE RETURN TEST SECTION"
: PRINT K$
: PRINT HEX(0E);"SINGLE CHARACTER CARRIAGE RETURN TEST"
: PRINT K$
: C2$=HEX(210D00)
: FOR I=1TO 57
: PRINT C2$;
: ADD(STR(C2$,1,1),01)
: NEXT I
3160 GOSUB 2940
: PRINT HEX(0E);"FIVE LINES OF 82 CHARACTERS ENDING THE LINE ";
: PRINT "WITH A - HEX CODE (0D)."
: PRINT K$
: GOSUB 3380
: FOR I=1TO 5
: PRINT STR(G$,1,29);
: PRINT " PROGRAM SENT HEX CODE(0D) AT THE END OF THIS LINE.";
3240 PRINT HEX(0D)
: NEXT I
3280 PRINT J$
: PRINT HEX(0E);"PRINT 5 LINES OF 132 CHARACTERS PER LINE, ";
: PRINT "USING THE HARDWARE C/R."
: PRINT K$
: FOR I=1TO 5
: PRINT G$;G$;G$;G$;STR(G$,1,12);
: NEXT I
: GOSUB 3420
3380 G$="123456789-123456789-123456789-"
: RETURN
3420 PRINT J$
: PRINT HEX(0E);"PRINT 5 LINES TO ";
: PRINT "DEMONSTRATE THE HARDWARE C/R (LINE OVER RUN)"
: PRINT K$
: FOR I=1TO 5
: PRINT G$;G$;G$;G$;STR(G$,1,12);
: PRINT "OVER RUN FROM PREVIOUS LINE"
: NEXT I
: IF VAL(B1$)=11THEN 3060
: RETURN
3590 DEFFN'70
: GOSUB 2940
: PRINT HEX(0E);"PRINTABLE HEX CODES"
3610 PRINT C$
3640 PRINT TAB(10);"112 CHARACTER SET-CODES 10 TO 7E ";
: PRINT "FIRST CHAR IS HEX(20),(LAST CHARACTER IS HEX(20), REPLACES HEX(7F)
"
: PRINT K$
: INIT(2A)G$(1)
: GOSUB 3810
: INIT(0F)D$
: INIT(46)H$
: FOR I=1TO 56
: ADD(STR(D$,I),01)
3720 ADD(STR(H$,I),01)
: NEXT I
3770 FOR I=1TO 5
: PRINT "* ";D$;
: PRINT H$;" *"
: NEXT I
3810 PRINT G$(1);G$(1);STR(G$(1),1,36)
: RETURN
3860 DEFFN'80
: GOSUB '100
3930 GOSUB 2940
: PRINT HEX(0E);"SPECIAL PATTERN TEST"
: PRINT K$
3960 MAT REDIM G$(26)5
: N=RND(0)
: N=0
3990 P3=1
: INIT(10)I7$()
: FOR I=1TO 26
: BIN(STR(I7$(1),1))=INT(RND(1)*94+33)
: G$(I)=STR(I7$(1),1)
: STR(I7$(1),2)=STR(I7$(1),1)
: MAT COPY I7$()TO G$()<P3,5>
: P3=P3+5
: NEXT I
4110 FOR I=1TO 26
: PRINT TAB(I*5-5);STR(G$(I),1,1);
: NEXT I
: PRINT " "
: FOR J=1TO 4
: FOR I=1TO 25
: PRINT STR(G$(I),1,5);
: NEXT I
: PRINT STR(G$(26),1,5)
: NEXT J
: N=N+1
: IF N<11THEN 3990
: MAT REDIM G$(4)40
4270 RETURN
4320 DEFFN'90
4360 GOSUB 4890
: PRINT HEX(0C0C0C)
: PRINT TAB(20);"PRINTS AT - 6 LINES PER INCH"
: GOSUB 4920
: PRINT TAB(10);"(TO START ";G1$;"/DE";G1$;" AND AUDIO ALARM TESTS)"
: GOSUB '100
: GOSUB 5120
4490 GOSUB 4890
: PRINT TAB(15);"(TO START THE PRINTER CLEAR TEST)"
: GOSUB '100
: GOSUB 2940
: PRINT J$
: PRINT HEX(0E);" VERIFY THAT THE AUDIO ALARM IS SOUNDING"
: PRINT J$
: K=1
: GOSUB 5150
: GOSUB 4890
: PRINT HEX(0C0C0C)
4590 PRINT TAB(17);"PERFORM THE FOLLOWING FUNCTIONS"
: PRINT K$
: PRINT TAB(10);"DEPRESS ";G1$;" AND THEN CLEAR ON THE PRINTER"
: PRINT K$;TAB(27);"T H E N"
: PRINT K$;TAB(20);"DEPRESS - RETURN(EXEC)"
: GOSUB '100
: PRINT HEX(0B0B)
4660 PRINT " - - E R R O R - - IN ";
: GOSUB 5090
: GOSUB '110
: FOR I=1TO 7
: PRINT HEX(0C)
: NEXT I
: PRINT
: PRINT TAB(10);HEX(0A);" RE-SELECT THE PRINTER "
: PRINT C$
: GOSUB 4930
: GOSUB 5090
: GOSUB '100
4780 PRINT HEX(0E);"OPERATOR SELECT CLEAR TEST"
4860 IF VAL(B1$)=17THEN 4360
: RETURN
4890 GOSUB 4970
: PRINT K$
: PRINT TAB(20);"OPERATOR ACTION REQUIRED"
4920 PRINT K$
4930 PRINT TAB(20);O$
: PRINT J$
: RETURN
4970 GOSUB '110
: PRINT J$
: PRINT HEX(030A);TAB(20);P$
5000 PRINT TAB(4);
: FOR I=1TO 56
: PRINT "*";
: NEXT I
: PRINT
: RETURN
5090 T1=1
: J=T2
: GOTO 5180
5120 T1=2
: J=T2
: GOTO 5180
5150 T1=3
: J=T2/50
: K=1
5180 FOR I=1TO J
: KEYIN F$,5210,5210
: GOTO 5220
5210 IF F$=HEX(0D)THEN 5240
5220 NEXT I
: GOTO 5290
5240 I=J
: NEXT I
5250 RETURN
5290 ON T1GOTO 5180,5370,5390
5310 STOP "ERROR IN KEYIN SUBROUTINE"
5330 GOTO 5250
5370 PRINT HEX(07)
: GOTO 5180
5390 GOSUB '100
: PRINT "THE OPERATOR MUST DE";G1$;;" AND";" RE-";G1$;" THIS PRINTER ";
: PRINT "AT LEAST ONCE PER LINE FOR ABOUT 5 LINES ";
: PRINT "OF PRINT AT THIS TIME - LINE NO.";K
: PRINT HEX(07)
: K=K+1
: GOTO 5180
5460 RETURN
5510 GOSUB '100
: PRINT HEX(0C0D)
5530 FOR I=1TO 528
: PRINT "U*";
: NEXT I
: IF VAL(B1$)=15THEN 5530
5600 PRINT HEX(030A0A)
: GOSUB '110
: PRINT TAB(10);"ENTER THE CHARACTER(S) THAT YOU WANT REPEATED"
: INPUT H$
: GOSUB '105("REPETITIVE CHAR OUTPUT")
: GOSUB '100
5660 PRINT H$;
: PRINT H$;
: PRINT H$;
: GOTO 5660
5700 IF VAL(B1$)=14THEN 5600
: RETURN
5720 DEFFN'105(D$)
: GOSUB '110
: PRINT HEX(030A0A0A0A0A)
: PRINT TAB(10);"* * * * * * * * * * * * * * * * * * * * * * * *"
: PRINT TAB(10);"* *"
5770 PRINT TAB(10);"*";TAB(35-INT(LEN(D$)/2));D$;TAB(56);"*"
: PRINT TAB(10);"* *"
: PRINT TAB(10);"* TEST IN PROGRESS *"
5800 PRINT TAB(10);"* *"
: PRINT TAB(10);"* * * * * * * * * * * * * * * * * * * * * * * *"
: PRINT HEX(0A)
: PRINT TAB(10);"KEY HALT/STEP & SFK 31 TO RETURN TO MAIN MENU"
5840 GOSUB '100
: PRINT HEX(0D)
: RETURN
5880 DEFFN'110
: SELECT PRINT 005(64)
: RETURN
5910 DEFFN'120
: GOSUB '100
: GOSUB 2940
: GOSUB '110
5930 GOSUB '100
: PRINT HEX(0E);"GRAPHIC OUTPUT TEST SECTION";HEX(0A0A)
: PRINT HEX(0E);"0"
: PRINT HEX(0E);"1 LOW"
: PRINT HEX(0E);"2 ORDER"
: PRINT HEX(0E);"3 BITS"
5960 PRINT HEX(0E);"4";
: PRINT TAB(7);
: PRINT HEX(0E5F);"THIS IS THE PIN FIRING ORDER FROM HIGH ORDER TO LOW ORDE
R"
: PRINT HEX(0E);"5 HIGH"
: PRINT HEX(0E);"6 ORDER"
: PRINT HEX(0E);"7 BITS"
: IF VAL(B1$)=12THEN 6860
6040 PRINT HEX(0A0E);"THIS TEST PRINTS 5 LINES OF RANDOM MULTIPLE PIN SETTINGS
"
: PRINT HEX(0A)
: FOR I=1TO 100
: FOR J=1TO 8
: X=INT(RND(1)*255)
: INIT(00)A1$
: BIN(STR(A1$,1,2))=X
: D$(I,J)=A1$
: NEXT J
: NEXT I
: GOSUB 6750
6180 PRINT K$
: A1$=HEX(8000)
: A2$=HEX(0100)
: K=7
: L=0
: GOSUB 6630
: PRINT J$
: A1$=HEX(4000)
: A2$=HEX(0200)
: K=6
: L=1
: GOSUB 6630
: PRINT J$
: A1$=HEX(2000)
: A2$=HEX(0400)
: K=5
: L=2
: GOSUB 6630
: PRINT J$
: A1$=HEX(1000)
: A2$=HEX(0800)
: K=4
: L=3
: GOSUB 6630
: PRINT J$
6290 GOSUB 2940
6300 PRINT HEX(0A0E);"FIVE SERIES OF DIAGONAL LINES BEGINNING WITH THE 0 BIT "
;
: PRINT K$
: A1$=HEX(8000)
: FOR I=1TO 100
: FOR J=1TO 8
: ROTATE(STR(A1$,1,1),1)
: D$(I,J)=A1$
: NEXT J
: NEXT I
: GOSUB 6750
: IF VAL(B1$)=13THEN 6300
6410 INIT(00)C2$,D2$
: R=INT((RND(1)*8)+1)
6430 GOSUB '100
: PRINT C$
: PRINT HEX(0E);"LINE FEED SPACING TEST IS MEASURED IN ";R;" INCREMENTS"
: PRINT K$
6460 FOR I=1TO R
: IF INT(I*72/R)=I*72/RTHEN 6490
: NEXT I
6490 PRINT HEX(0E);"THE GAP SHOULD BE ";I;" INCH/ES APART"
: C2$=HEX(090054)
: D2$=HEX(09000A)
: BIN(STR(C2$,2,1))=R
: BIN(STR(D2$,2,1))=R
: PRINT C2$
: FOR J=1TO (72/R)*I-1
: PRINT D2$
: NEXT J
: PRINT "T"
: IF VAL(B1$)=18THEN 6460
6600 RETURN
6630 FOR I=1TO 49
: FOR J=1TO 8
: D$(I,J)=A1$
: NEXT J
: NEXT I
: FOR I=50TO 100
: FOR J=1TO 8
: D$(I,J)=A2$
: NEXT J
: NEXT I
: D$(1,1)=HEX(F000)
: D$(100,8)=HEX(0F00)
: FOR I=1TO 5
6740 PRINT HEX(0E);"PRINTS FIVE LINES OF ALTERNATING ";K;" BIT &";L;" BIT FIR
ING PATTERNS"
6750 FOR I=1TO 5
: A3$=HEX(0700)
: PRINT HEX(090F08);D$()
: $GIO/005(12114100,A3$)
: NEXT I
: RETURN
6810 DEFFN'140
6820 GOSUB '110
: PRINT HEX(030A0A)
: PRINT TAB(5);"THE PRINTER IS NOW PRINTING A LAYOUT OF THE BIT PATTERN";HE
X(0A)
: GOTO 5930
6860 GOSUB '110
6870 PRINT TAB(5);"ENTER THE 1 DIGIT CORRESPONDING TO THE BIT YOU DESIRE (0-7)
";
: INPUT A1$
: IF A1$<HEX(30)THEN 7030
: IF A1$>HEX(37)THEN 7030
: $TRAN(STR(A1$,1),B$)R
: GOSUB '105("PIN SELECTION TEST")
: STR(A1$,2,1)=HEX(00)
6940 FOR I=1TO 100
: FOR J=1TO 8
: D$(I,J)=A1$
: NEXT J
: NEXT I
: D$(1,1)=HEX(FF00)
: PRINT HEX(0A0E);"SINGLE PIN SELECTION TEST";HEX(0A)
6990 GOSUB 6750
: GOTO 6990
7010 IF VAL(B1$)=13THEN 6820
: RETURN
7030 PRINT HEX(030A)
: PRINT TAB(13);"ILLEGAL HEX DIGITS. PLEASE TRY AGAIN"
: PRINT J$
: GOTO 6870
8000 DEFFN'201
: PRINT "1. 204","2. 214","3. 215","4. 216"
: PRINT HEX(0C0C);
: INPUT "SELECT PRINTER ADDRESS",Q
: PRINT HEX(0A0A0A0D)
: RETURN
8500 DEFFN'100
: ON Q GOTO 8520,8530,8540,8550
8520 SELECT PRINT 204(132)
: RETURN
8530 SELECT PRINT 214(132)
: RETURN
8540 SELECT PRINT 215(132)
: RETURN
8550 SELECT PRINT 216(132)
: RETURN