1000  !////////////////////////////////////////////////////
1001  ! This program is a modified version of VRAMP program
1002  ! which is V-Rramp test program included in the
1003  ! sample application program disk.
1004  ! Do not use this program for the actual test.
1005  ! This program is just FOR DEMONSTRATION.
1006  !////////////////////////////////////////////////////
1007  !
1460  ASSIGN @Hp4155 TO 800
1470  COM @Hp4155
1480  COM /File_name/ Init_file$[12],Sweep_file$[12],Save_file$[12]
1490  COM /Err/ Err_num(1:6),Err_message$(1:6)[50]
1500  DIM Result_init$[3],Result_sw$[3],Result_fin$[3]
1510  !/////////////// Main /////////////////////////////////////////////
1520  CALL Init_hp4155
1530  !
1540  ON INTR 8 CALL Err_check
1550  ENABLE INTR 8;2
1560  !
1570  CALL Test_setting
1580  !
1590  CALL Get_file
1600  !
1610  CALL Init_fin_test("Init",Result_init$)
1620  CALL Judge(Result_init$,Result_sw$,Result_fin$)
1630  !
1640  CALL Sweep_test(Result_sw$,Vbd,Qbd)
1650  CALL Init_fin_test("Fin",Result_fin$)
1660  !
1670  CALL Judge(Result_init$,Result_sw$,Result_fin$)
1680  CALL Final_session
1690  !
1700  END
1710  !/////////////// Sub //////////////////////////////////////////////
1720 Test_setting:SUB Test_setting
1730    COM /File_name/ Init_file$,Sweep_file$,Save_file$
1740    !
1750    Init_file$="VRSPOT.MES"    ! Spot Measurement Setup File Name
1760    Sweep_file$="VRSWEP.MES"   ! Sweep Measurement Setup File Name
1770    Save_file$=TIME$(TIMEDATE) ! File Name for saving measurement results
1780    Save_file$="D"&Save_file$[1,2]&Save_file$[4,5]&Save_file$[7,7]&".DAT"
1790  SUBEND
1800    !
1810 Init_hp4155:SUB Init_hp4155
1820    COM @Hp4155
1830    !
1840    CLEAR SCREEN
1850    CLEAR @Hp4155
1860    OUTPUT @Hp4155;"*RST"
1870    OUTPUT @Hp4155;"*CLS"
1880    OUTPUT @Hp4155;":STAT:PRES"
1890    OUTPUT @Hp4155;"*ESE 60;*SRE 32;*OPC?"
1900    ENTER @Hp4155;A
1910    OUTPUT @Hp4155;":DISP:WIND:ALL BST"
1920    OUTPUT @Hp4155;":DISP OFF"
1930    PRINT "   <<< Voltage Ramp Test >>>"
1940  SUBEND
1950    !
1960 Get_file:SUB Get_file
1970    COM @Hp4155
1980    COM /File_name/ Init_file$,Sweep_file$,Save_file$
1990    !
2000    OUTPUT @Hp4155;":MMEM:COPY '"&Init_file$&"','DISK','MEM1.MES','MEMORY'"
2010    OUTPUT @Hp4155;":MMEM:COPY '"&Sweep_file$&"','DISK','MEM2.MES','MEMORY'"
2020  SUBEND
2030    !
2040 Init_fin_test:SUB Init_fin_test(I_or_f$,Result$)
2050    COM @Hp4155
2060    !
2070    IF I_or_f$="Init" THEN
2080      PRINT "[1] Initial Test"
2090    ELSE 
2100      PRINT "[3] Final Test"
2110    END IF 
2120    OUTPUT @Hp4155;":MMEM:LOAD:STAT 0,'MEM1.MES','MEMORY'"
2130    OUTPUT @Hp4155;":PAGE:GLIS"
2140    OUTPUT @Hp4155;":DISP ON"
2150    OUTPUT @Hp4155;":PAGE:SCON:SING"
2160    OUTPUT @Hp4155;"*OPC?"
2170    ENTER @Hp4155;A
2180    OUTPUT @Hp4155;":DISP OFF"
2190    !
2200    OUTPUT @Hp4155;":TRAC? 'Ig'"
2210    ENTER @Hp4155;Ig
2220    PRINT "       Ig = ";Ig;"[A]"
2230    IF Ig>1.E-6 THEN
2240      Result$="YES"
2250    ELSE 
2260      Result$="NO"
2270    END IF 
2280  SUBEND
2290    !
2300 Vth_meas:SUB Sweep_test(Result$,Vdb,Qbd)
2310    COM @Hp4155
2320    !
2330    PRINT "[2] Constant Step Time Sweep Test"
2340    OUTPUT @Hp4155;":MMEM:LOAD:STAT 0,'MEM2.MES','MEMORY'"
2350    OUTPUT @Hp4155;":PAGE:GLIS"
2360    OUTPUT @Hp4155;":DISP ON"
2370    OUTPUT @Hp4155;":PAGE:SCON:SING"
2380    REPEAT
2390      OUTPUT @Hp4155;":PAGE:SCON:STAT?"
2400      ENTER @Hp4155;Stat$
2410    UNTIL Stat$<>"MEAS"
2420    OUTPUT @Hp4155;":DISP OFF"
2430    OUTPUT @Hp4155;":MMEM:STOR:TRAC DEF,'MEM3.DAT','MEMORY'"
2440    !
2450    OUTPUT @Hp4155;":STAT:MEAS?"
2460    ENTER @Hp4155;Meas_stat
2470    IF Meas_stat>=8 THEN
2480      Result$="YES"
2490      OUTPUT @Hp4155;":TRAC? 'Vbd'"
2500      ENTER @Hp4155;Vbd
2510      OUTPUT @Hp4155;":PAGE:GLIS:LIST:MARK:DIR? 'Qbd'"
2520      ENTER @Hp4155;Qbd
2530      PRINT "       Vbd = ";Vbd;"[V]"
2540      PRINT "       Qbd = ";Qbd;"[Q]"
2550    ELSE 
2560      Result$="NO"
2570      OUTPUT @Hp4155;":TRAC? '@MY1'"
2580      ENTER @Hp4155;Ig_sw
2590      PRINT "       Ig @40v = ";Ig_sw;"[A]"
2600    END IF 
2610  SUBEND
2620    !
2630 Judge:SUB Judge(Result_init$,Result_sw$,Result_fin$)
2640    COM @Hp4155
2650    !
2660    DISP 
2670    IF Result_init$="YES" THEN
2680      PRINT "         ### Initial Failure (1) ###"
2690      DISP "         ### Initial Failure (1) ###"
2700      CALL Final_session
2710      STOP
2720    END IF 
2730    !
2740    IF Result_sw$="YES" OR Result_sw$="NO" THEN
2750      OUTPUT @Hp4155;":MMEM:LOAD:TRAC DEF,'MEM3.DAT','MEMORY'"
2760      OUTPUT @Hp4155;":PAGE:GLIS"
2770      OUTPUT @Hp4155;":DISP ON"
2780      OUTPUT @Hp4155;":DISP OFF"
2790    END IF 
2800    !
2810    SELECT Result_sw$
2820    CASE "YES"
2830      IF Result_fin$="YES" THEN
2840        PRINT "       ### Catastrophic Failure (2) ###"
2850        DISP "       ### Catastrophic Failure (2) ###"
2860      ELSE 
2870        PRINT "       ### Noncatastrophic Failure (4) ###"
2880        DISP "       ### Noncatastrophic Failure (4) ###"
2890      END IF 
2900    CASE "NO"
2910      IF Result_fin$="YES" THEN
2920        PRINT "       ### Masked Catastrophic Failure (3) ###"
2930        DISP "       ### Masked Catastrophic Failure (3) ###"
2940      ELSE 
2950        PRINT "       ### Others (5) ###"
2960        DISP "       ### Others (5) ###"
2970      END IF 
2980    END SELECT 
2990  SUBEND
3000    !
3010 Final_session:SUB Final_session
3020    COM @Hp4155
3030    COM /File_name/ Init_file$,Sweep_file$,Save_file$
3040    !
3050   ! OUTPUT @Hp4155;":MMEM:STOR:TRAC DEF,'"&Save_file$&"','DISK'"
3060   ! OUTPUT @Hp4155;"*OPC?"
3070   ! ENTER @Hp4155;A
3080    PRINT "================ Measurement Completed !!! ================="
3090   ! PRINT "Save Data File Name : ";Save_file$
3100    PRINT "Test End : ";DATE$(TIMEDATE);",";TIME$(TIMEDATE)
3110    OUTPUT @Hp4155;":PAGE:GLIS"
3120    OUTPUT @Hp4155;":DISP ON"
3130  SUBEND
3140    !
3150 Err_check:SUB Err_check
3160    COM @Hp4155
3170    COM /Err/ Err_num(*),Err_message$(*)
3180    INTEGER I,J
3190    !
3200    OUTPUT @Hp4155;":PAGE:SCON:STOP"
3210    I=0
3220    REPEAT
3230      I=I+1
3240      OUTPUT @Hp4155;":SYST:ERR?"
3250      ENTER @Hp4155;Err_num(I),Err_message$(I)
3260    UNTIL Err_num(I)=0
3270    !
3280    IF I=1 THEN
3290      PRINT "No Error"
3300    ELSE 
3310      PRINT 
3320      PRINT 
3330      FOR J=1 TO I-1
3340        PRINT "### ERROR Occurred ###:";Err_num(J);Err_message$(J)
3350        DISP "### ERROR Occurred ###:";Err_num(J);Err_message$(J)
3360      NEXT J
3370      OUTPUT @Hp4155;"DISP ON"
3380      PRINT 
3390      PRINT "              === Test Aborted ==="
3400      STOP
3410    END IF 
3420  SUBEND
