beautypg.com

Measurement Computing Personal488 rev.3.0 For DOS & Windows 3.Xi User Manual

Page 188

background image

II. SOFTWARE GUIDES - 9. Driver488/SUB

9G. Pascal

Personal488 User’s Manual, Rev. 3.0

II-173

begin

{ Check if the interrupt was due to a Service Request }
sp: = ioSPoll (ieee);
if sp = 0 then begin

Writeln (‘No SRQ detected’);
halt;

end;

{ Check that the Service Request was from the ADC488 }
stadc: = ioSPoll (adc);
if not bitSet (stadc,64) then begin

Writeln (‘Not an ADC488 SRQ.SPOLL = ‘,stadc);
halt;

end;

{ Interpret the Serial Poll response }
if bitSet(stadc,1) then

Writeln (‘Triggered’);

if bitSet(stadc,2) then

Writeln(‘Trigger overrun’);

if bitSet(stadc,4) then

Writeln(‘Buffer overrun’);

if bitSet(stadc,8) then

{ Read and interpret the ADC488 error status }
Writeln(‘ADC488 error’);
errnum: = 5;
lrv: = ioOutput (adc,’E?’);
lrv: = ioEnter (adc,errtext);
Val (errtext,errnum,code);
ifbitSet (errnum,1) then

Writeln (‘Invalid DDC’);

ifbitSet (errnum,2) then

Writeln (‘Invalid DDC option’);

ifbitSet (errnum,4) then

Writeln (‘Conflict error’);

ifbitSet (errnum,8) then

Writeln (‘NVRAM setup error’);

ifbitSet (errnum,16) then

Writeln (‘Calibration error’);

ifbitSet (errnum,32) then

Writeln (‘NVRAM calibration error’);

end;

ifbitSet (stadc,32) then

Writeln (‘Ready’);

ifbitSet (stadc,64) then

Writeln (‘SRQ asserted’);

ifbitSet (stadc,128) then

Writeln (‘Data acquisition complete’);

{ Set up interrupt pointers }
nilptr: = nil;
rv: = ioOnEvent (ieee,@isr,nilptr);

end;

{ Display Status from Driver488/SUB }
procedure showstat (substat : StatPtr);

begin

Write(‘SC

: ‘, substat^.SC);

Write(‘CA

: ‘, substat^.CA);

Write(‘Primaddr

: ‘, substat^.Primaddr);

Write(‘Secaddr

: ‘, substat^.Secaddr);

Writeln(‘SRQ

: ‘, substat^.SRQ);

Write(‘addrChange

: ‘, substat^.addrChange);

Write(‘talker

: ‘, substat^.talker);