A program system for spectroelectrochemical measurements

A program system for spectroelectrochemical measurements

OC?X’-8485/88 $3.00 + 0.00 Pergamon Journals Ltd Cornput. Chem. Vol. 12, No. 1, pp. 43-63, 1988 Printed in Great Britain A PROGRAM SYSTEM FOR SP...

1MB Sizes 14 Downloads 148 Views

OC?X’-8485/88 $3.00 + 0.00 Pergamon Journals Ltd

Cornput. Chem. Vol. 12, No. 1, pp. 43-63, 1988

Printed in Great Britain

A PROGRAM

SYSTEM

FOR

SPECTROELECTROCHEMICAL

MEASUREMENTS KURT

KALCHER’,

HERBERT

GRESCHONIG’,

CHRISTIAN

JORDE’

and

ALFRED

LEITNER~

‘Institut fiir Analytische Chemie, %stitut

Karl-Franzens

fiir Physikalische Chemie and ‘Institut fiir Experimentalphysik, Universittit Graz, UniversiWsplatz 1, A-8010 Graz, Austria (Received

10 February

1987)

Abstract-A program system for continuous spectrophotometric surements has been developed. It consists of the BASIC program

monitoring of voltammetric meaSPELECTRO for the diode array spectrophotometer HP 845lA, which controls the recording of u.v./vis spectra and manages the incoming voltammetric data. The FORTRAN-77 program LOADER loads the data from the optical device to an HP 1000 minicomputer. SPECD3, also written in FORTRAN-77, plots the u.v./vis spectra as threedimensional representations with hidden line facility.

INTRODUCTION

Since the development of optically transparent elec(OTE), simultaneous measurements of optical spectra (e.g. u.v./vis) and voltammograms have gained more and more importance in studying electrochemical and surface processes. Conventional spectrophotometers require rather a long period for recording a single spectrum. Thus, changes at the electrode surface during spectral measurement leads to different conditions at the beginning and end of the record. When applying reversed optics technics (diode array photometers) the interval for a measurement is rather short as the monochromator does not work sequentially but with spatial resolution. This implies that the resulting spectrum represents the actual state of the absorbing material at a definite potential. As scans of whole spectra can be performed almost immediately, u.v./vis monitoring over the complete potential range of the voltammogram is possible. Using a buffer memory which avoids slow transfer to external devices, enough spectra can be gathered for a three-dimensional representation within the wavelength-potential-absorbance space. This optional method ensures that much more information is gathered than would be possible if only a few spectra were recorded at selected potentials. trodes

HARDWARE

82937A) interface with the corresponding ROM’s to drive the devices. An external printer (HP 829058) and plotter (HP 7470A) as well as a double disc drive for 31” microfloppies (HP 9121) were connected via the parallel bus. A polarographic interface, developed by Kalcher & Jorde (1986) transferred the voltammetric data from the polarograph to the spectrophotometer. The polarograph was Model PAR 264A (Princeton Applied Research). Further treatment of the collected data as well as 3D-representation of the u.v./vis spectra were achieved by an HP 1000 minicomputer with 1 Mbyte core and 10 Mbyte hard disc, which was connected with the spectrophotometer via the parallel bus. SPECTROELECTROCHEMICAL

MEASUREMENTS

The spectroelectrochemical measurements were controlled by program SPELECTRO, written in an extended BASIC language which includes operation instructions for the optical device. It was run on the integrated processor of the photometer. Figure 2 shows its basic architecture, Appendix 1 displays the listing. The input of data is interactive and selfexplanatory. The first part of the program consists of reading and defining spectral (wavelength limits, time interval for measuring) and voltammetric parameters (potential and current range) as well as checking the 128K memory to ensure that it is working properly. If not all its space is available, the memory can be cleared optionally. The second part performs the actual scanning of optical spectra. The triggering event which controls the progress of measurement is the arrival of a voltammetric data point (current vs potential) at the serial interface. This is actually dependent on the drop clock pulse of the polarograph which in turn triggers the polarographic interface’s A/D conversion

CONFIGURATION

Figure 1 shows the hardware used for spectroelectrochemical measurements. The core of the configuration was a diode array spectrophotometer HP 8451A (HewIett-Packard) with built-in screen, printer/plotter and programmable calculator HP 85. In addition to the standard apparatus, the following equipment was used: a keyboard (HP 98155A), 16K memory (HP 82903A) and 128K memory modules (HP 82909), serial (HP 82939) and parallel (HP 43

KURT

44

HP 8451A

Fig.

RESTART

diode

KALC~R

array

et d.

spectrophotometer

I Hardware configuration.

menu

RESTORE met hod

RESTORE voltamm.

L

1



RESTORE spec tro L

OUTPUT menu

!2 END

measurement

Fig. 2. Fiuw chart of the BASIC

program SPELECTRO.

BASIC

pogrml

for

*p*C+rOslOCtlOCh*ml*,ly

45

Program system for spectroelectrochemical measurements and output (Kalcher, 1986). If the time interval between two voltammetric data is shorter than the time required for a spectral scan and its manipulation, points on the voltammogram can be omitted and only preselected ones chosen. Additionally, before starting a new u.v./vis record, a check is made to ensure that the old one has already finished. If not, the data is omitted as well. If the spectrophotometer is ready for a new spectrum, the preceding one is stored in the 128K memory. Then the next scan is started. It should be stressed that the program does not work synchronously with optical operation, which means that it does not wait until measurement is completed. To avoid delays, output is reduced to a minimum consisting of a short report on the incoming and u.v./vis data during the actual phase of measurement. This procedure is complete when an alphabetical string (e.g. “ENDE”) occurs as termination message from the polarographic interface, which results in a read-error. This string is initiated by the pen-up signal of the polarographic recorder output. Upon termination of spectral measurements, the voltammetric data, received as bits, is transformed by the following equations Y (in V) = Y (start) + V (in bits)+ sign [V (end) - I/ (start)]/lOOO. i (in mA, PA or nA) = i (in bits) * abs (range)/2000. V and i designate potential and current respectively, V (srarr), V (end) the limits of the potential scan, range the chosen current range.

The ensuing third section of SPELECTRO manages the data output, storage and transfer. The type of manipulation required can be selected from menus. The first one performs output operations. Characteristics of the measurement as well as graphic representations of the voltammogram and the u.v./vis spectra can be displayed on the screen, internal and external printers or plotters. Numerical output of data (voltammogram, optical spectra) should be initiated with care to avoid long listings. Negative input on request results either in the operation being applied to all objects (e.g. - I for all spectra) or in a return to the menu depending on the task to be performed. To avoid loss of information when switching off the spectrophotometer, saving of data is provided by a data-storing menu. The voltammogram, u.v./vis spectra and the method itself can be stored on flexible microdiscs. In the interests of convenience the menu also performs disc operations like erasing files, initializing discs and status reports. Optionally, the external printer may record a protocol of the saving tasks performed. File numbers of data to be stored are chosen automatically; the program also indicates disc changes when discs begin to run out of space The method should be saved after storage of data because information derived from the storing process will then be available when the program is restarted, Negative input values produce the same effects as described

above.

The final task which can be done by SPELECTRO is a transfer of all data lo the HP-IB interface. Thus, the program LOADER, which is written in FORTRAN-77 and is straightforward to operate as

--

SPECD3

StOD

l-i

close input flCe

New Urnits -

information

G Plot Of y-axis

0

Plot of x-axis

1

I

Read -

u.v./vis spectrum

4 Determine -

absorption min, max

--t

Read u.v./vis spectrum

End of reading

--)

Read u.v./vis spectrum

End of reading

i t

4 Rewind input fi\e

-

Position first spectrum

Fig. 3.

t

4 Rewind input file

Flow chart OFSPECD~.

--)

Positlon first spectrum

-)

End of reading

46

KURT KALCHER et al. MEASUREMENT + 1 LFeICN)613DATE 10 ‘12 7966 l .** U”l”IS PARAMETERS FROM 350 TO 500 NM POfNtS/SPECTRUM 76 TIME INTERVAL 1 SEC ..C* MEMORY PARAMETERS # MEMORIES 67 START 0 END 66 **** DATA

-1

VOLTAMMETRIC POINTS 67

DATA

in the 128K memory. If voltammetric data are not loaded they are set to 0. The restart then continues with the output menu.

****

3D REPRESENTATION

. ..I

****

. 350

500

OF W/VIS

SPECTRA

All the optical spectra define a space with wavelength as x-, potential as y- and absorbance as z-axis. Thus, a three-dimensional representation yields all the information concerning the measurement at once. For this reason, the program SPECD3 was developed, which runs on the minicomputer HP 1000. It is written in FORTRAN-77 on the basis of a program which has already been published in this journal (Kalcher, 1982). Therefore, information related solely to mathematical background is excluded from further discussion. All unnecessary features of the former program have been omitted and simplifications appropriate to the problem have been introduced where possible. Figure 3 shows the schematic flow chart, Appendix 3 its listing. The limits of wavelength and potential xmin , x,, , y,,,,,,, ymx as well as the spectral data are read from the file created by LOADER. First, the absorbance range z,,, z,, is determined. The direction X for observing the surface is then defined as

X(2) = -cvm,

- Yap.)* abs (fuf)

X(3) = (zmax- *mi,) *fzf

-‘ooo5

I

0 25

Potential Fig. 4.

I

I

I

0

-0.25

-05

[VI

Internal printer/plotter output of SPELECTRO for a mea’surementof hexacyanoferrate(III).

can be seen in Appendix 2, loads all relevant values to the minicomputer and stores them on a file. Care must be paid in defining select code, sender’s and receiver’s addresses for the correspondent logical unit to ensure actual data transfer (e.g. HP-IB address of the photometer = 700, select code HP-IB interface for logical unit 30 of the minicomputer = 10; to activate the connection the output address must be 710, the loading unit must be assigned to 30). During transfer other devices must be turned off in order to avoid disturbances. Internal control characters which sometimes appear at the beginning of strings are eliminated by LOADER. SPELECTRO offers the facility of restarting a completed measurement if at least the method has been saved on disc. The restart menu is entered if the number of the measurement is set to a negative value. If stored properly as described above, the method also contains information on re-establishing data. Spectra need not be restored if they are still present

where fxf, fyf, fis are freely selectable parameters. For methodological reasons (sequential order of the curves away from the observer) the multiplication factor for the y-axis must be negative. In the next step the plotting area is defined (automatic scaling). As the absolute values of the three components differ in some orders of magnitide (e.g. 500 nm, 0.2 V, 0.003 absorbance units), distortions may occur due to numerical inaccuracies. Therefore, the data points are scaled in such a way that the ranges of the axes are of unit length when they are projectively transformed into the drawing plane. A visibility check excludes hidden parts of the line from being plotted. After the graphic representation of all spectra, the program draws the wavelength- and the potential-axes. Their orientation is chosen in a way that usually no parts of the plot are overwritten. To enhance the three dimensional impression, a character slant with direction of the other axis is set for the subscripts. Finally, the title is written above the plot. The program is implemented with standard DGL plotter software (device-independent graphic library from Hewlett-Packard). It should be pointed out that SPECD3 has been designed for single sweep voltammetric measurement only. RESULT Figure

on

the

4 shows a typical output of SPELECTRO internal printer/plotter for the spedro-

Program CFo

-4

CCN>

63

system for spectroelectrochemical measurements

847

3-

)_ *

Fig. 5. Plot of SPECD3 for a measurement

voltammetric measurement of hexacyanoferrate(II1) with an optically transparent gold electrode (60A Au on glass), 1 mm thickness of the solvent layer and a concentration of 300ppm [Fe(CN),13-. Figure 5 is the resulting plot of SPECD3 where fxf= 0.6, fjf = 0.5 and fif = 0.4 respectively. SPELECTRO requires 16558 bytes memory, SPECD3 53882 bytes. The total execution time for the plot of SPECD3 is 4’54”.

of hexacyanoferrate(II1).

polarographic interface. SPECD3 achieving graphic representation Copies of the programs of HP are available from the authors; accompanied by discs.

is a useful means of of data. microdiscs 92191A requests should be

.

Acknowledgement-Two of the authors (K. Kalcher, H. Greschonig) want to thank the “Jubikiumsfond der iIisterreichischen Nationalbank” for the purchase of the spectrophotometer, minicomputer and peripherals.

CONCLUSIONS SPELECTRO is a widely applicable program for spectrophotometric monitoring of voltammetric measurements with a diode array photometer and a

REFERENCES Kalcher K. (1982) Compur. Chem. 6, 39. Kalcher K. & Jorde C. (1986) Compul. Chtw. 10, 201. Appendices

c.* c

I*,,--D

owrleaf

KURT

48

KALCHER

APPENDIX Program

1 2 3 4 s

! 1 PROCRAM

1

FOR

ELECTROCHEMICRL

Listing

SPECTROMERSURE-

1 MENTS

1

18

INTEGER 38 ,U3 20 DIM WsCZQl,V5(200),V6(200~,U7 (200) 25 1 S3 TO S7 -> HPIB RODRESSES 26 ! 53.54 -> EXT.DISK DRIVES 27 1 SS -> EXTERNAL PLOTTER 28 ! S6 --, EXTERMAL PRINTER 29 1 s7 -> HP 1000 30 53-700 @ 54-70t @ 55-705 @ 56 -706 b S7-710 @ J7-0 @ Uls=“” 40 CLEAR B OISP ” PROGRAM FOR SP ECTRO-” . “ELECTROCHEMICfiL MEASURE MENTS” 8 DISP 50 ’ 51 1 52 ’ GENERAL INFORMATION 53 1 60 OISP @ OISP “>:;> GENERFIL PAR AMETERS <>>> UV/VIS PA 230 RAMETERS <<
DISP

“nm-RANGE”;@

INPUT

Xl

,X

et

ai.

1

o/ SPELECTRO

270 IF Xl>X2 OR Xl<190 OR XZ>820 THEN 260 280 ERASE STATUS 290 LAMEDFI Xl TO X2 @ MODE 0.1 300 BEEP 0 OISP “REFERENCE READY [Y/N/O]“;@ INPUT B$ 310 IF i35Ci l==“O” OR B5tl ]-“a” TH EN 400 320 IF 65C 13=“N” THEN 300 330 ON ERROR GOT0 390 340 REFERENCE 10 350 MEASURE X3.0.0.0 360 IF NMEAS-0 THEN 360 370 BEEF C DISP “REMOVE REFERENC E” 0 DISP 380 OFF ERROR % 60T0 400 390 DISP “WAIT FOR LfiMP” @ LAMP I @ GOT0 340 400 DISP “READY TO CONTINUE [Y/N l”;@ INPUT B$@ IF BS[ 1 I-“N’ THEN 230 410 CLEFIR C GOSUB 5000 420 DISP “READY TO CONTINUE [Y/N I”;@ INPUT B$@ IF BBC 1 I=“N” THEN 230 430 1 431 1 432 1 128K MEMORY 433 I 440 CLEAR @ GOSUB 5500 450 DISP “REPIDY TO CONTINUE [Y/N 1” i@ INPUT B5@ IF Et¶C I I-“N” THEN 440 460 ! 461 ! 462 ! VOLTAMMETRIC PARfdlETERS 463 ! 470 CLEFtR @ DISP “>>>> VQLTAMM.P ARAMETERS <
Program system for spectroelectrochemical

470 580 v3=v3+1 590 ! 591 592 533 600 T

1 ! MEASUREMENT ! CLEAR 0 DISP S *: q: i ”

@

“>‘?.b>

MEASUREME

D I SF

610 BEEP @ DISP “SAMPLE REAOY CY INI”:@ INPUT B$@ IF BPC I l=“N” TH EN 610 620 BEEP @ OISP “STfiRT POLAROGRA PHI ” 630 ENTER S i B$ 640 OISP @ DISP @ BEEP @ DISP I’* ** START OF MEASUREMENT ****II @ OISP 650 ON ERROR GOT0 830 660 J1=0 @ JZ-0 @ 33~0 @ .JE=0 670 ENTER S USING “50.X .5D” i V8 .u3 680 58=38+1 @ IF ‘J3=I THEN 700 630 IF 38-INT( J8/‘J3)+U3tl THEN 6 70 700 .Il=Jl+l 710 V5IJl b-U8 @ V6(JI j-U9 @ V7c.J 1 )--I 720 DISP JI;J8;UEi;U9 730 IF Jl-1 THEN 780 740 IF NMEAS-0 THEN 670 750 OISP “TO MEMORY”iJ3+JB 760 TO MEMORY J3tJQ 770 53==53+ 1 760 JZ-JZ+l 790 OISP “MEASURE ” ; JZ 800 U7( J I )-J3+ JQ Bt0 KASURE X3.0.0.0 820 GOTO 670 830 IF J3
measurements

370 ON ERROR GOTO 990 980 ! 981 1 382 1 OUTPUT, STORING, TRANSFER 983 / 990 CLEAR P OISP “>,2> OUTPUT ME NU <10 THEN S9=0 @ GOTO 2000 II30 IF MXl THEN 1300 I 140 PRINTER 1 1150 IF M-2 THEN PRINT (P PRINT 0 PRINT “SPECTROELECTROCHEMICAL” I 160 PRINT “MEASUREMENT X” ;W0 1170 IF M-2 THEN PRINT 1180 PRINT WB @ PRINT I190 PRINT “OfiTE” iW1 iWZiW3 @ PRI NT (200 PRINT m*+*+ UU/UIS l *.*” 1210 PRINT “FROM “:X1 i” TO “iX2i ” l-mm‘O 1220 PRINT “TIME INTER’JPIL .s 3x3; ” set” @ PRINT 1230 PRINT “**,+* MEMORIES l ***‘* 1240 PRINT ‘#“;J3r” FROM “:JB;” TO “I JQ+J3-1 Q PRINT -*se+ VOLT.OATA w.,+e” 1250 PRINT 1260 PRINT 1270 PRINT c ” wJ5B ” 1 I’ 1280 IF M-l 1290 1300

“FROM “iU1;” TO “,U2 “CURRENT RANGE ” ;V41’ THEN

GOT0 390 IF MX2 THEN

COPY

1330

ELSE

PRINT

KURT

50

1310 4200 1320 1330 1340 1350 INPUT 1355 IS 1356 1357 I358 1359 I360 4 .x5 I370 I 380 I390 I 400 1410

SQ-S6

@ PRINTER

S0

Q GOSUB

GOT0 1150 IF M#3 AND Mf4 THEN 1440 PLOTTER 1 DISP “Q’JERLAY YMIN .Y?jAX asi @ X4 .X5 FROM MEMORY” ; Q INPUT

orsb ;

IF 16<0 THEN 1359 DISP “TO MEMORY”;@

INPUT

17

GOTO 1360 f6=J0 @ 17=50+53-l IF MXS THEN OUERLAY XI ,X2 ,X ELSE Y-SCALE X4 TO X5 FOR I-16 TO 17 RECALL WEtlORY I PLOTTER NEXT I IF M-4 THEN COPY @ GOT0 990

IF M-3 THEN INPUT qB@ GOT0 I420 990 AXIS @ GOTO 990 I430 1480 IF MX5 THEN I440 SQ-SS 1450 EDSUB 4200 1460 PLOTTER SQ @ GOT0 1350 I470 IF Mt6 THEN 1580 I480 SB-S6 @ PRINTER SO @ GOSUB 1490 4200 DISP “MEMORY #“;@ INPUT J 1500 54-J @ J5=J 1510 IF ,I<0 THEN 54-50 Q 55=33+3 I520 0-t FOR I-J4 TO J5 1530 RECALL MEMORY I I540 PRINT “--=MEMORY”; I Q PRI I550 NTER NEXT I I560 PRINT @ GOT0 390 1570 IF Mt7 THEN 1680 I580 SQ-56 I? PRINTER SQ @ 6OSUB I590 4200 I==-= VOLT .DATA” PRINT 1600 PRINT “#DATA” IJI B PRINT 1610 POT.E’J PRINT USING “K” : ” 1620 MEW. ” 1 CURR.t” ,VrS,‘I 1630 FOR I-1 TO .JI 1640 PRlNT USING “3X .20_3D .3X .4O .30,3x ,3D’ i U5( I) ,U6( I) ,Ui’( I ) 1650 NEXT I 1660 PRINT 1670 tOT0 990 t660 IF M#8 AND M%3 THEN 1380 1690 PLOTTER t 8 GCLEAR 1700 W8-VI-(UZ-Ul >*.2

KALCHER

et al.

1710 WS=Vt+(VZ vi )/8 1720 W6=-(U4*1 .5) t? W7-V4*9.8/8 1730 SCftLE W8 ,W9 .W6 .W7 1740 WS-<‘JZ-Vl j/4 @ LDIR 0 1750 MOUE Ul .-V4 @ DRAW V2 ,-U4 1760 FOR I=1 TO INTI 1790 LABEL VAL$(Vl+(I-1 )*W5) 1600 NEXT I 1810 MOUE ul+.t+(u2-uI I .-cu4*fi.5 /5 b i820 LABEL “Potential [WI” 1830 YAXIS ‘II ,V4/4 .-V4 .U4 B DEG Q LDIR 90 1640 FOR I-l TO 3 1850 MOUE VI-(Vt-Ut j/32,-(U4*1.1 5 )+( I-l )*V4 1060 LABEL UAL$( -U4+( I-l )*V4) 1870 NEXT I 1860 MOVE WI-(VZ-Ul )*.08.-< .5*U4 1890 1900 E Ul v4 1910 1920 1930 t940 1950

LABEL “Current C “&V$&” 3” MOVE Vl .0 @ DRAW Vi? .0 @ MOV .V4 Q DRAW V2 .V4 Q DRAW VZ .MOUE V5(1 ),U6(1 1 FOR I=1 TO JI DRAW~US~I),UG(I) NEXT I IF W-9 THEN COPY b

GOT0

990

1960 MOUE W8 .W6 @ IF M<10 THEN I NPUT 85 1970 GOTQ 990 1980 SO-55 Q GOSUB 4200 1990 PLOTTER S0 B GOT0 1700 2000 OFF ERROR @ CLEAR @ DISP “> >>> STORE DATA


S.....STATUS

ti

G.....INITIALISE



7..

“MENU

DISKET 01

. . .ERASE NUMBER”

FILES” 40

INPUT

Program system for spectroelectrochemical

M

2100 IF M? THEN 2970 2120 IF fl#i THEN 2150 2130 SQ-SG % PRINTER S0 @ S9-S6 0 GOSUB 42%0 2140 60TO 2000 2150 IF Mt2 THEN 2300 2160 GOSUB 4100 2170 GOSUB 4030 210% UIQ-SI @ ON ERROR GOTO 2260 @ CREATE SS.1 ,Jl*24 @ ASSIGNS I TO S8 219% OFF ERROR @ ON ERROR GOTO 2 200 2200 FOR I-1 TO JI 2210 PRINTt 1 I US(I).UfiII~.V7(1 ) 2220 NEXT I “UOLT.DATA STORED ON *’ 2225 OISP ;s5 2230 IF S9#0 THEN PRINT @ PRINT ‘VOLT. DATA STORED ON ” iSB Q PRI NT 2240 ASSIGN+ 1 TO l 2250 GOT0 2800 2260 BEEP 0 DISP “##t ERROR in c rsat1ng fzle” is5 2270 GOT0 2800 2280 BEEP 0 DISP “+## ERRDR in w rit1rFg on frls”;S5 2290 GOTO 2240 2300 IF M#3 THEN 2520 2310 6OSUB 4100 2320 ON ERROR 6OTO 2370 2330 FOR I==1 TO 9999 234% +KiSIGN# 1 TO “FILE”&VAL$(I) 0 ASSIGN* I TO * 2350 NEXT I 2360 BEEP BI DISP “##s ERROR on d lsk’ ;s0 I 60~0 2800 2370 OFF ERROR @ J7=1-1 0 ON ERR OR GOT0 2460 2380 OISP % DISP “**f STORING .=I LES ***” 2390 FOR I=1 TO 33 2400 J7-J7+1 0 RECALL MEMORY I+J 0-1 2410 TO FILE 57 2420 DISP “MEM. w 1 J0+1-I i” STORED TO FILE” I 57 2430 IF S9#0 THEN PRINT “MEM. ti ; J TO FILE”iJ7 0+1-1 I LI STORED 2440 NEXT I 2450 GOT0 2800 2460 BEEP Q DISP @ DISP **** DIS KETTE D’JERFLOW’ “INSERT NEW DISK” 8 GO 2470 DISP SUB 4100

measurements

2480 GOSUB 4300 2490 IF I-1 THEN OFF ERROR @ ~CFT 0 2320 2500 IF S9#0 THEN PRINT “**+I DIS K CHANGE +**” 2510 GOT0 2410 2S20 IF M+4 THEN 2750 2530 GOSUE 410% 2540 COSUB 4030 2550 ON ERROR GOTO 2260 2560 CREATE 55.1 257% ASSIGN+ I TQ SO 2580 OFF ERROR 2590 ON ERROR GOTO 2280 2600 PRINT# I i W0,Wl ,W2,W3 2610 PRINT+ I I W5 2620 PRINTt I i Xl ,X2,%3 263% PRINT* 1 , J0,Jl ,J2,53.57 2G40 PRINTS 1 i VI ,V2 .‘J3,V4 2650 PRINTt 1 i V5 2660 PRINTS I ; Vlt8 2700 ASSIGNO 1 TO * 2710 OFF ERROR 272% Or5P “METHOD STORED ON ” 15s 2730 IF S980 THEN PRINT ‘METHOD STORED ON m 155 2740 60TO 2800 2750 IF Mt5 THEN 2820 2760 ON ERROR GOT0 2360 2770 GOSUB 4100 2780 CLEAR @ DISP **** STATUS OF DISK”tS0 @ DISP 2790 STATUS FILE ‘9 OFF ERROR 2800 DISP @ DISP “READY TO CONTI NUE CY/NI”;@ INPUT G5@ IF B$Cll= “N” THEN 2800 2810 GOT0 2000 2920 IF Mt6 THEN 206% 2030 GOSUB 4100 2840 GOSUB 4300 2850 GOTO 2000 2860 GOSUB 4100 2870 CLEAR @ STATUS FILE 288% DISP “ERASE FROM FILE”;% IN PUT F8% IF F8<0 THEN 2840 “TO FILE”#R INPUT F9 2890 DISP 290% IF F9iF8 OR FB-0 THEN DISP “NO ACTION” @ GDTD 2000 291% ON ERROR GOT0 2950 2920 FOR I-F8 TO F9 2930 ERASE FILE I 2940 q ISP “FILE” i I : “ERASED” 2950 NEXT I 2960 OFF ERROR 0 MODE 4 0 GOT0 2 800 2970 CLEAR @ OISP “>>>> TRANSFER TO HP1000 <
51

KURT

52

2988 DISP “TRANSFER VIA HPIB [Y/ Nl” :@ INPUT Bf@ IF BBC 1 3=“N” THE N 3230 2990 BEEP @ DISP “SWITCH OFF OTH ER DEVICES1 11 ! I 3000 DISP “CONNECT HP-1000 HPIB” 3010 DISP ‘READY TO,CONTINUE CY/ Nl”;@ INPUT B5@ IF B8[ I l=“N” THE N 3010 3020 BEEP @ OISP “START LOADER P ROGRFlM HP 1000! 1 1” 3030 DISP “REfiDY TO CONTINUE CY/ NJ” :@ INPUT E35@ IF BBC 1 l=“N” THE N 3030 “PORT ID-” i 57 3040 OISP 3050 PRINTER S7 “DODD” i W0 @ G 3060 PRINT USING QSUB 4400 ” K I’ i W5 Q GOSU 3070 PRINT U5ING B 4400 3080 PRINT USING ‘DD,IX,DD,lX.DD DD *I i WI .WZ,WJ @ GOSUB 4400 3090 PRINT USIN “DDO.0” i x3 @ GOSUB 4400 “ODD, IX ,DDD” ; 3100 PRINT USING X1 ,X2 @ EDSUB 4400 3110 PRINT USING “ZO.SD,lX~2D.3O .I : ‘Jl .‘JZ @ GOSUB 4400 3120 PRINT USING “DODD ~ 1 X ,DDDD” : JT , JZ @ GOSUB 4400 3130 FOR I-I TO Jl 3140 PRINT USING “3X ,20.30.3X .40 .30.3x -30” i U5( I) .U6( 11 .V7( I ) 6dSUB i400 . 3156 3160 NEXT I FOR I-J0 TO 50+53-l 3170 RECALL MEMORY I 3180 3190 PRINT USING “DODD” i I PR INTER 3200 3210 NEXT I “@@@@@” 322 0 PRINT DISP @ DISP “READY TO CONTI 3225 NUE CY/NI”:FI INPUT Bsd IF S&C 1 l” N ” THEN 2970 3230 CLEAR @ DISP “?>>> ENO C<>>> RESThRT
*

Z.....RECALL

” 3.....RECALL Ip OISP “MENU NUMBER-i@

VOLT. MEM.FR INPUT

KALCHER

et cd.

MO IF M-0 THEN 990 3310 IF II<0 OR M>3 THEN 3230 3320 IF M#e! THEN 3470 GOSUB 4010 3330 GOSUB 41t0 3335 ON ERROR GOT0 3450 3340 fiSSIGN# 1 TO S$ 3350 3360 OFF ERROR @ ON ERROR 6OTO 3 440 REhO# 1 i W0,WI 3370 .IJ2.W3@ READ x 1 : WB@ REFIDt 1 i Xl .X2.X3 3380 REfi\D# I 7 J0,JI .52.53.57@ 1 F J7>0 THEN J7=57-Jl+7 3390 READ* I i U1 .Ut .V3 .V4@ READ + 1 i Us@ RERDt 1 , VIP 3400 ASSIGNt 1 TO + 3410 DISP “METHOD LOADED FROM ” : SS 3420 DISP “READY TO CONTINUE CY/ Nl”r@ INPUT B$@ IF E5t 13+“N” THE N 3420 3430 GOTO 3250 3440 ASSlGN# 1 TO * 3450 BEEP 8 DISP “XBU ERROR on f 11e “;S$ 8 GOT0 3420 3460 OFF ERROR @ GOT0 3250 3470 IF M#Z THEN 3570 3480 TF Ull*“” THEN GDSUB 4010 E LSE S-§-U15 3485 GOSUE 41 10 3490 ON ERROR GOTD 3450 3500 ASSIGNf 1 TO S5 3530 OFF ERROR @ ON ERROR GOT0 3 440 3520 FOR I-l TO Jl 3530 READ* 1 i US( I ) .U6( I ) ,V7( I ) 3540 NEXT I 3550 OFF ERROR @ DJ5P “UOLT.UATA LOhDED FROM ” : S$ 3560 ASSiGN I TO l @ GOT0 3420 3570 GOSUG 5500 3580 DISP @ OISP “RECALL MEMORIE S” @ 6OSUB 4100 3550 ff 37-O THEN OISP “STPIRTING FROM FILE #“i@ INPUT 57 3600 FOR I-l TO 53 3610 ON ERROR GOT0 3680 3620 RECALL FILE J7+I-1 @ OFF ER ROR @ ON ERROR GOT0 3700 3630 TO MEMORY J0+1-l 3640 OFF ERROR 36S0 DISP “MEM. “: J0+I-1 1 -RESTORE D FROM FILE’gJ7+1-1 3660 NEXT I 3670 GOTQ 3420 3680 BEEP @ DISP “CHANGE DISK 1” 0 GOSUB 4100

Program system for spectraelectrochemical

3690 3700

3620 BEEP Q DISP 60T0

“##t

ERROR

for

nemory’:JQ+I-1 3710 QFF ERROR Q tOT0 3250 4000 1 FILE NCIMES 4010 DISP “FNPUT FILE NAME”; 4020 INPUT Ss@ RETURN 4030 DISP “OUTPUT FILE NAME” i@ G OTO 4020 4100 I SUB’S FOR DEVICES “DISK DRIVE 1 “&yf+L$rS3 4110 KIISP )E’/“LUAL$~S4~B”I” i@ INPUT SQ 4120 IF S0#S3 RND SQ+S4 THEN 411 0 4130 HASS STORAGE IS “:O”&VAL5(S 0) 9 RETURN 4200 BEEP @ DISP “DEUICE”iS0;” R EAOY [Y/N]“;@ ‘INPUT B$@ IF RECll THEN 4200 =“N” 4210 RETURN 4300 BEEP @ DISP “INITIALISING 0 ISK I .’ 4320 ERhSE FILE -1 4330 RETURN 4400 FOR 10=1 TO 50 4410 NEXT I0 4420 RETURN 5000 1 S0Bl 1 5002 ! STPITUS UU/‘JIS 5003 ! 5010 DISP I’=-== UU/VIS STATUS ===” @ DISP 5020 OISP “spectrum from” ;Xl <“to “1XZi’!-Wl’ 5030 DISP “pornts/spectrum” 3INT(

( X2-X 1 )/Z )+ I 5040

DISP

“time

aecl” 5050

DISP

“function

intervnl”:X3;”

I

ABSORBANCE”

5060 OISP @ RETURN 5500 ! 5501 ! 5502 ! STATUS MEMORY SS83 ! 5510 OIS? -==== MEMORY SThTUS --5’. B) DISP 5620 JO.=0 5530 IF STATUS MEMORYCI )#tQ THEN ‘128K MEMORY NOT WOR BEEF B DISP KING PROPERLY” 8 5TOP ’ 128K MEMORY WORKKNG P 5540 DISP ROPERLY m 5550 N==STATUS MEMORY ( 0 I 5560 OISF’ @ OISP ‘free space [by

tssl’rN 5570 N4=ABS( X2-X1

)/2+1

5580 5590 5600

measurements

N4=N4*8+104 Nl -INT( N/N4 OISP “space

)

53

for

spcctra”rN1

5610 IF Nil31000 THEN DISP @ RET URN 5620 DISP @ DISP “ERASE MEMORY C Y/N]” ;@ INPUT BB@ IF q‘BC 1 I-“N” T HEN 5640 5630 ERASE MEMORY -1 Q BEEP C DI SP “MEMORIES ERASED” B SOT0 5550 5640 5650 5660 5670 5680 5690 6000 6001 6002 6003 6010 TUS 6020 6030

ON ERROR GOTO 5680 TO MEMORY .I0 DISP “MEMQRY START+“:JQ ERr)SE MEMORY JQ @ GOT0

5690

JB-J0+1 @ GOT0 5650 DISP @ OFF ERROR Q RETURN 1 1 1 UOLTAMMETRIC STATUS ! IJISP *‘==I= UOLTAMMETRIC ST.4 =zca8’S @ DISp DISP “lnitlal potsnt~al”;Ul q ISP

“final

6040 DISP “current ivs 6050 OISP “points @ DISP 6060 RETURN 9990 END

potential

- iv2

rants

miv4

to

omit

“iv3

54

APPENDIX Program

1 2 3 4 5c 6 7c 8 9 10 1I 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

Bfilcrs

Listing

0.1 oropram

c

for

program

loading

data

running 15 also

able

on

character+40

x fi1

for

program

HP 8451A to load

SPELECTRO

ljstings

BASIC

lu with hp-lb select code to HP8451 hp-ib transfer

inatrumsnt

corrsspondlng address 1~1~30

write< 1 ,* )’ output resd( 1 , ‘(a)‘) fil apanCt00,file=fll)

file

name

got0

99

?_’

1 ti

read< lu .‘(a )’ 1f(x(4:5).aq.‘@@‘)

10

Program

HPl00B

from

character+20 lu-

c c c

of Loader

loader

LOADER

c

2

~fix~l:l~.eq.‘7’~~~1:37~=x~4:40~ WrlteC

I ,*

Wt-lteC

100.*1

1 x x

1f(x(6:8).eq. goto close

99

1 goto

‘END’

99

I0 C 100)

stop end

APPENDIX Program 1 st11cs 2 3 4 5 6

0,l program specd3 character*1 IC character+20 ifil dlmonsion

~(316.31,

7

dlmenslon

y(3),

I3

dimension

ixch(Eii),

z(3).

Listing

3

of SPECD

pl(316.3).

3

pxC316).

rliot(2).

iych(5).

iaac(51,

lnd(316)

~~(316).

rtltl(lQ),

g(3)

idat(

ax(3.3).

axi(3.3)

9 ixch

10

data

1I

ndim-316

12

nl

.iych/ZhWs

.Zhve

.Zhle.Zhng

.Zhth

.ZhPo

in-0

13 14

do

563

r=l

.3

I5

do

563

j-l

.3

ax(

I ,_I I-0.

16

563

17 16 IS 2Q 21 22 23 24

17

writs(

1,171

format

( ///5x,

‘**at*

5PECD3

****‘/5x.

l ‘3D plot of spectroel.ctrochamical write{ I .*)’ Plot-lu = ? _’ r-sad< I ,*) ipl write{ I .*)’ Input file = 7 _’ ifs1 read{ I . ‘(a)‘) vector writsc I ,* )’ Projection

I ,* ly

25

read(

26

y(Z)--abs(y(ZI)

measurements’/)

Cx .y.rl

? _’

.Zhte

.Zhnt

.Zhia

.2hl

I

Program

27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 73 80 81 92 83 84 85 86 87 88 89 90 91 92 93 94 95 96 37

system for spectroelectrochemicl

measurements

1 y-0 i fax-0

19

open!l00,fiLe=ifil ,status=‘old’ read< I00 ,* .err=97 ) number nlin=nlin+l read{ I00,19,crr=97)1tJt1 format< Ix ,10a2 1 nlln=nlin+l raad( I00 ,* .srr-97 1 idat nl in=nlin+! read< 100, ( a I ’ ,err-97 ) IC nlin=nlin+l read< 100.71 .err=97 1 ixmln ~ixmax nl in-nl in+1 fornat(lx,i3,lx,i3) xmin=floatI lxmln) xnax-f loat< ilrman ) npt=< ixman-lxmin j/2+1 read< 100,74 .err=97 ) ymln ,ynax

,err=98)

l

71

nlrn-nlrn+l 74

72 73

c

4 3 76 27

farmet(Ix ,f6.3,1% ,f6.3) read< 100,72 .srr=97)~sss,lx nlin=nlin+l format(lx,l4,lx,i4) da 73 i=l ,isss rcad( I00,‘
of

piotter

ymar-ymln)

surface

zmln-I .e38 zmax--l.e38 ppl=l .e318 do 3 i=l .l’x read< 100,*(a~‘,&r-97) ic nlin=nlln+l do 4 j-l ,npt read( 100,76 ,crr=97 ) ppp nl in-n1 in+1 if~~~.cq.l.and.j.sq.l~.or.~i,~q.l.and.j.aq.n~t~.or. (i.~q.lx.snd.j.es.npt))pp~=amin~(pp.ppl) l(i.eq_lx.end.j.aq.l ).or. zf(ppp.lt.zmin) zmin-ppp if-ppt-zmln pl2,t I-xnax-rmin piz.z>-0. pc 2.3 >=ppl -zmin ~(3.1 )-nnax-xmln p( 3.2 )-ynax-ymin p( 3.3 )‘PP 1 --zmin p(4.1 j-0. p( 4 .Z )-ymax-ymin p(4.3 )~PPl--tmrn z( 1 I-0. z(2 j-0.

55

KURT

56

9s 100 101 102 103 I04 105 106 107 108

et al.

r(3)=t.

ax< T ,l

)==xmax-xnin

ax<2

468

109

,Z )==ymax-ymln ex(3.3 )-znax-zm1n do 465 1-1 ,3 g( I >-sba( ax< i , i ) ) call PrOjeCCAX ,axi .3.3.Y.Q) call dreh( ax I .3.3 .y .z ) call pro~ec(p .pl .4 .ndim.y call drehfpl .4 .ndim.y ,z) rmn-pl( I .t b

.g)

XpIX-=Xll”

1 I0

Ill

ymn-pl(

1 I2

ymx-ymn

II3

do

t ,2

j

2

2 1-Z ,4 if(p1Ci.l ).lt.nmn) if(pl(i,l b.gt.xmx) if(~l(~,z>.lt.ymn~ if~pl(~,2~.gt.ymx~ cant inue

5

nlin-0 rewind 100 do 5 i==i ,isss+7 read( 100,*AaJ nlin-nlin+l cant 1nLJe

I14 I f5 I16 I17 IiE I19 I20 121 22 23 24 25 26 27 26 29 30 131 132 133 134 135 136 I 37 38 39 40 41 42 43 44 45 46 147 149 149 150 I51 I52 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170

KALCHER

do 40 1-1 read< 100, nlin-nlin+l do 41 j-l read<

41

42 40

1s

cant cdl call do

cent cant

.1x ’ ( a )’

xmn=pl(i,l rmx==plCr.l ymrl=pl(i.Z~ ymx=pI
.err=97,,

) I

ic

.err=97

)

ic

.npt I00

-76

.err-97)

ppp

pl

j ,I

)-float<

j-l

)*xstep

p(

J .z

)=floatC

a-l

j*ysttp

p( j .3 )=ppp-zmin inus 1 pro~ec( p .pl drsh(p1 ,npt 42 j-l .npt 1fCxmn.gt.pl(j,t)> Af(xmx.lt.pr(j Af(ymn.gt.pl
,npt .ndrm ,y .g .ndim,y ,z)

.I

>)

>

xmn-pl(J.1) xmx=pl(j ymn-pltj.2) ymx=pl(j.Z)

,I I

writs< 1 , 181 y.xmn.xmx,ymn.ymx.~~~xI~~.j~,j-1 fOrmat ( 3X, ‘p,-O J . V.SCtOF : ' .3f 11 .5//3x, I ‘x-min.x-max [plot) :‘.Zfj1.5/3x. l ‘y-min ,y-max (plot ) : ’ .2?11.5//3x, l : ’ ,3f ‘x-ux pro j _ 11.5/3x 1 t ‘y-ax :‘,3f11_5/3x. proJ. t ‘z-ax : ’ .3f 11 .s/ ) proj. rf(ipl.eq.1 )then Press RETURN to continua!’ write( 1 ,* I’ ic read( 1 , ‘
43

rewind 100 nlin-0 do 43 i-l .issa+7 read{ 100.‘(a)’ ,err=97) nlin-nlrn+l

c

plot

of

linaa

cull zbagn call zdint tip1 .Q,~arr) tf(ipl.sq.1) call adof cell zaspk( 1 .3.1. 1 rul-xmn-(umr-rnn)/3.

IC

.3),i=1

,3)

system for spectroelectrochemical

Program

xwZ=xmx+( xmx-xmn ywt-ymn-(ymx-ynn)/3. yu2=ymx+( ymx--ynn

171

172 173 174 175 176 177 178 79 1 80 161 82 83 84 a5 86

csll

do 10 i=l ,1x read< 100,‘(a) nlin=nlrn+t PC I .2 j-f loat( do

a8

I1

189 I90 131 192 I 53 194 318 195 317 196 I 97 198 133 200 201 12 202 203 204 10 205 206 c 207 208 209 210 ZI I 212 213 214 215 216 217

218 219 220 221 222 223 224 225 226 227 228 223 230 231 232 233 234 235 236 237 238 239 240 241 242

11 j-t read<

)/3. j/3.

.xwZ ,ywl

cant ifly(

endi call

.ywZ)

,err=97)

1-l )tystep ,npt 100.76 .crr=97

nlin-nlin+l p( j .3 F--p< J .3 )-znin p( J .2 )=-PC 1 ,Zd

187 I

zwind(xwt

ic

)

p( j ,3

p( j .I )-float(J-I )*2. inue I j.lt.0. ) then do 317 kkl=l ,npt/Z kkZ=npt-kkl +l do 318 kkJ-=l ,3 r~r-p< kk 1 ,kkJ ) p(kkl ,kkJ )=p(C.kZ ,kkj pCkk2 .kkJ )-rxr cant inue cant inue f pro~ec(p .pl .npt .ndim.y,g) drehtpl .npt .ndim.y,z)

call do I2

j-l

57

measurements

>

)

.npt

I-PI (j .I & py( j )-pl( j .2 ) call contCpx,py,npt call platcpx .py .npt cant inue

pr( J

,ndrm,ind,l) .ndim.Lnd)

X_-IXi§ call sc( xmin ,xmax .naegx call act ymin .ymex .nsegY pl t .l )-xmax-wmin pll ,2+-o. p( 1 ,3)=0. p< 2,l l-0. p(2 .z )-ymax-ymin p(Z .3)-O. p<3 .I )=0. p( 3 ,z )-0. p( 3.3 )=ppp-zmin IP(y{3).lt.O.) then p(3.2 )-ymsx-ymin p(Z,Z)--pCZ.Z)

,ncomx .ncomy

1

)

sndif call

projac(p,pl .3.ndim.y.p) drch(pl .3,ndam.Y.z) call zdpmm(0. .0. .pxQ .PYQ 1 call zdpmm(plCl .I >.pl(l ,Z),pxl call zdpmm(pl(Z,! ),pl(Z.2).px2,pYZ) call rdpmmI 1. , I . ,px3 ,py3 I call zcsiz(3./abs(px3_pxB),~_f~b~~pyQ)) pxl-pxl-px0 PYl-PYl-PY0 pxz-pxz-pm0

call

,pyl)

PYZ’PY2--PY@

xlsn-sqrt(pxl~pxl+pyl*pyl~ ylen-aqrt(px2*px2+pyZ’pyZ) xedd=-pl(2 .l b/ylen*l0.

yadd--pl(2,2)/ylan*t0. zmove( p 1 ( 3,i call call rdraw(plt3.1 ifi

ipl

.nc.‘l ) cs-Cpyi t-list{

then

Mxadd ,p I (3.2 )+xadd+pl(l ,l

*P&i!-pxl

I )-sqrt(

)+Yadd ) >,plC3,2)+ysdd+pl(l

lpy2 )/xlanlylcn t .-c5*c5 l/C6

.2))

KURT

58

243 244 245 246 247 246 249 250 251 252 253 254 255 256 257 256 259 260 261 262 263 264 265 50 266 267 268 269 270 c 271 272 273 274 275 276 277 278 279 260 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314

KALCHER el al

I

IfccpXlrDX2+PYl*DY2).Qt.0.} rlistt call zoaac(l50.0,1 ,id.rlxst,rcrr) rlist( 1 )=pxl/xlen f-list(Z)-pyl/xlan if(pxl.lt.0.) than r11stt 1 )=-rllst( I) r1istu )=-rllst(z) endi f call zoe~c~Z50,0,2,id,ri~st,ierr) andi

)

)=-rlisttl

f

f-1.

if(pxl do 50

.lt .0. ) f--t * 1=0,nsegx xl-plC3.1 )+xadd+floet+pt(t ,1 )/floet(“seQx) yl~pl~3,Z~+yadd+float~i~~pl~i,2~/flaat~nseQx~ call zmove(xf .yl) call zdraw(xl+xadd/S..yi+yadd/5.) call encod< iasc ,5 ,xmin+float ( i )*( xmex-xmin +

ncomx

I

if(ipl.ne.1 *

t

(“S.SQX

call

znove(xl+xadd+.7-pl(I

)+xadd*Z.3+pl(

I .I

pl(3,2)+yedd*2.3+pl(T.2)/2. ~a11

,I

)/xlen*

I

.!S*floet
7-pl~l.2~/~len*l.S+fIoat~nch~*f~

yl+yadd’.

car1 ztext(nch,iasc) cbnt inue call zmove(pli3,l s

b/f loa

-plC

)/Z.-pl(1

,l

I/x

I ,Z)/xlen*f*l.5*10.

I J

10,ixch)

ztext(

y-axis p(3,l

I-0.

P(3,2

)=0.

p( 2.2

)=Ymax-ymln

zf(pyl.lt.0.)

then

)=xnax-rmin p(3,2)-0. p( 1 .l I--p< I .l )

p( 3.1

sndi

f

call

projcc(p,pl

call

drsh(p

call

zdpnm(pl(l

call

zdpmmiDl~2,l~.Dl~2.2~.pr?.pyZ~

.3,ndrm,y,Q>

I

.3 .ndlm ,l

,Y ,z

),pl(l

) ,Z,.pxl

,pyl)

pxl-pxl-px0

PYl-PYl-FYQ px2-pxz-px0 PY2VY2--PY0 xlsn-sqrt~pxl*pxl+pyI+pyl~ Ylen-~qrtip~Zrp~Z+pyZ~pYZ) xadd=-pl<

I ,I

yadd=-pl(l

)/xlsn*lQ.

.Z~/xlen*lQ.

call

znove(pl(3,l

)+xadd,pl(3,Z)+yadd)

call

rdraw{pl(3,1

)+xadd+pl(Z,l

if(

).pll3,2)+yadd+pl(2.2))

ipl.ne. I ) then cs-(py2*Dxl-px2*pyl )/xlen/yLan rlist( 1 )=sqrt( 1 .-cs-cs )Ica If((pxl*plZ+pyi*pyZ

).gt.O.

)

rlist(

1 )=-rlist(

call zoesc1150.0,l ,id,rlist,ierr) rl ist( I )=pxZ/ylen rllst(2 1-pyZ/ylen if(px2.It.0.) than rlist( I )=-rllsti I ) rlist<2)=-rlLst(2) endlf

zoesc(250.0,2,id,rlist,ierr)

call endi f=f

f .

rf(px do Xl-PI

51

),

,nch)

2.1t i-0 (3.1

.0.

f--l

)

_

.naagy

)+xadd+Ploat(i)‘pl(Z,l

I/float(nscgyB

VI-PI call

~3,2~+y~dd+flaat~l~+plo/Ploat~nseQy~

call

zdraw(xl+xadd/5.,yl+y~dd/5_~

Call

sncod(iasc,5,ym~n+flost(i)r(ym~%-ymin)/f~oat~~~~Qy~,

zmove(ul

,yl)

I )

system

Program

315

316 317 318 319 51 320 321 322 323 324 c 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 98 346 347 97 348 349 350 351 352 353 354 355 356 357 358 359 1 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 37s 376 377 378 379 1 380 381 382 383 384 385 2 386 387

for

spectroelectrochemical

59

measurements

ncomy ,nch 1 if(ipl.ne.1) call zmove~xl+xadd+.7-pl~Z,l~/ylcn*l~5*floet~nch~~F, * yt+yadd+.7-pl(Z,Z)/ylen+l .‘%*floatCnch)+f) cell ztext(nch.iasc) cant inue ,l )/ylen*f~l.5+9., cell znove(pl(3.1 )+xadd+2.3+pl~Z.l j/2!. -pl(Z * pl~3,2~+yedd*2.3+pl~Z,2~/2.-pl~2.2~/yle~*f~l.5+~. b call ztext< 9.iych) l

title rlist( calL t-list< rlistC2 call call cell call

1 )=0. zoesc(l50,0,1 .ad,rllst.lerr) I j-1. j-0. zoesclZ50,0.2.~d.rl~st.rerr) zcsiz(5./abs(px3-px0),5./abs(pyQ)) zmove~xmn,ymx+(ymx-ynn)*.DS) ztext(20,1tltl~

cell zend if(ipl.eq.1)

then 1 . ‘(a)‘) gdof adon

read<

call call andi

ic

f

close stop

(100)

wrltr stop

(

write

c I ,*)

I .+)

’ I***

ERROR

IV-I opening

’ *fete*

ERROR

rn

.naeg

,nc)

line

file #

‘,ifif

‘,nlin-1

end

subroutIne

SC< xl

,x2

xd-absCx2-xt ) if
cont(px,py,npt

dimension dimension data

px(ndin), ~~(501 ),

do 1 1-1 ind( i j-1 ~f(m.eq.1) do 2

cant

.npt then is1 .npt cnin( i )=py( 1) cnex ( 1 )‘pyC 1 ) cx( i )-p~( i ) inue

return endif

nc=l nc-0

,ndim,ind,n)

py(ndim), cminl501

cx,cmrn,cmax/l503t0./

nc-2

),

ind(ndin) cmax(50I

)

KURT

60 388 389 390 391 392 393 334 395 396 397 398 399 400 40t 402 403 404 405 406 407 468 409 4f0 41 I 412 413 414 415 416 417 418 419 425 421 422 423 424 42s 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 45s 456 457 458 459 46%

3-l do

et al.

KALCHER

whxle((cx(j)-px(1

)l*(px(npt>-px
11.le.0.)

J-J+1 end do if< j .ge.npt 1 return do 5 k-l .npt if(k.gt.npi-j+I

I

gota

10

kl-j+k-2 cnln(k)wpol(cx
).cmin(kl

).cx(kl+l

),cminIkl+l

),px(k))

cmax(k)-pol(cxCkl

I.cnax(kl

>,cx(kl+l

).cnaxtkl+l

>,pxlk))

ifCpy.ge.cmax(k))

then

cmsx(

k )‘py(

else

if(py(k).le.cmin(k)>

k )

cmin(

k )-py(

then

k 1

else ind( endr goto

10

6 5

k I=0

f 6

if~abs(cn(npt)-px(npt)).lt.l.e-6) cmln{ npt )=py< npt ) cmax( npt )=pyI npt ) goto 5 endI f yl-pol{cx{npt).cmin~npt),px(npt}.pyInpt).px(k)) y2=pol(cxtnpt),c~an(npt~,px(npt),px(k)~ cmin( k )=aminl (yl .y2 ,py( k >) cmax< k >=amaxl(yl .yZ ,py( k ) ) cxCk )-pxCk> cant 1nue

then

return end

function pol=_(yZ-yl return end

pol(xl .yl )*(x3-x!

subroutine

plot

dimension

I

px(

in-1 do I I-I ,npt if(rnd(~b.oq.i) if( im.eq. call 1 m=0 else call endr f ehe Lm=l endr f cant 1nue

.xZ.yZ.x3) )/
(px

ndim

.ndim

,py,npt

),

)+yl

ndin

py(

then I ) then zmove( px(

1 ~ indcndim)

i ) .py(

rdraw
.ind)

i ) )

).pyC~)

1

return end

subrout

dimans

2

I

one

ion

pro

jec(

w .p

w( nd+m ,3 > ,

.npt

.ndim

p( nd;m

.3),

.Y

.Q )

y( 3 )

d=(y( I I*y(l )+y(Z)*y(2>4y(3I*y13)) do I I-I .npt f=(yi 1 )*wI i 11 )/gC I )+y( i! )*w( i ,2 I/g< do 2 j=l .3 pi i .J )=w( i .J )/g( J j-f ly< J )/d cant 1nue

, gI

3 I

2 >+y< 3 )*w(

i ,3 )/gC

3 ) )

Program 461 462 463 464 465 466 467

subroutine

tran5

dlmansion

1

I0

p(3),

do 1 i=l .F do I j-l ,3 t(i,j)-0. t( in.in)-I. goto ~10.20.30~.

spectroelectrochemical

61

measurements

icl=Z icZ=3 isl-2 is2=3 goto

30

icl-l icZ=Z isl-t is2-2

100

t(lrl ,rcl)-51 t( icZ ,Ic2 1-1~5 t( rsl ,lSZ )--sn t (iS2,lSl )=sn do 2 i=l .3 h( I )=0. do 2 j=1 ,3 h( i >=hC I )+t do

3

p< i

,sn,cs,in)

h(3),

t<3,3)

100

icl=l ~c2=3 iE.t=3 1.s2=1 goto 100

2

(p

I”

20

f

i .J )*p(

J

)

3 1-i ,3 )=h( I )

return end

subroutine

512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532

for

return end

468

463 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 408 469 430 491 492 493 494 495 496 437 498 439 500 501 502 503 504 505 506 507 508 509 510 511

system

dlmcnsion dimension data g/l.

1

PC ndrm .3 zhl( I .3>, ,l. ,l ./

projcc(+hl

do 21

2

r=l

( L )-zh2(

,3

I,

.ndlm

.y ,z)

y( 3). z( 3 ) . zh2( I ,3)

yl(31,

zl(3).

h(3).

g(3)

,zhZ,l

,l

,y,g)

1 ,L )

do 100 k-i ,3 goto Il0,20,30>, 10

(p .npt

do I i=l .3 yl(I )=y( i I zhl(l .i)-z(i) call

2

dreh

k

kk=2 if(abs(yl(l )).lt.l.e-6.and.abs(yto).lt.l.s-6) cs-yl(3)/aiqrt
QotQ

100

KURT

62 533 534 53s 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 SC6 567 568 569 578 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 689 590 591 592 593 594 595 596 597 S9B 599 600 60t 602 603 604 605

30

50

4

s 3

et&.

50

QOtO

20

hLCHER

kk-1 if~abr~yl~2~~.lt.l.e-6.and.~bs~yl~3~~.lt,l.~-6~ cs-yl~3~/sqrt~yl~2~~yl~z~+yl~3~~yl~3~~ sn=sqrt(l.-cs*cs) if(yl(2).lt.B. 1 sn=--5l-l goto 50 kk-3 cs=zl(Z)/sqrttzlll sn=sQrt< I .-CsfCS lftzlcl 1.lt.0.) call call do do h< j call do p( i

1

)*zl(l

goto

)+zl(z)+zl(z)l

5rl---sn

Crana(zl .sn .CE, .kk) trans
cant i nue

100

cant xnue raturn end

subroutine

1

2 3

4

iasc

,idim

.rnum

I11-1~ ,nd )

d&nsnsion xasc( Idim) .Jstr(5), jnin( I date Jstr /ZhQi .Zh23,2h4S .2h67 .Zh89/, call ndgtl
1

encod<

1

ndgtl(rnum,l

rn=abs( mum) do 1 1 1 .39 I-n-rn/lQ. if (rn .lt. 1.) cant inue

QOtO

2

1

jmln

1 J goto

>

/2h-.

2

/

100

Program 606 2 607 606 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 I0 631 632 633 634 635 636 I I 637 636

system for specttoelectrochemical

measurements

l-1

return and

dimension ia(4),ib(3),ic(l data icio’33’/ data la/Zhab .Zhcd ,Zhef

entry

j-3 pot0 entry j=4 goto entry

),ld(

,Zh*Z/

1)

! graphic

display

on

I0 Qdcf

!

Qraphlc

display

c,ff

IQ adan

I

alphenum.

pdan

display

on

3’5 QOtO t0 I alphanun. display off entry adof j-6 goto 10 entry cgn ! clear graphic mamcry 3-1 call anove( ic ,2,2 ,lb ,l ) cell snove(ia,7,7,ib,Z) call snove< ia ,4,4, rb .3 ) call snova(ia,J,j,1b,4) cell smove(ia,8,8.1b.5) write< I *l 1 jib fornat( lx .3a2 b

return end

63