Hi there
Can someone please give me a clue as to why the unit below (in particular
the Procedure READFORMAT) gives Error #100 when I run it. It plays
a .Wav file but when it reaches the end the error occurs (See * below).
The code was not originally written by me. I have UUENCODED one of the
WAV files which result in the problem and have attached it below.
Thanks in advance
Johan
------------------- S O U R C E C O D E F O L L O W S------------------
{$I-}
UNIT PlayWav; {Converted from source code by Bengt Holgersson}
Interface
Type string63 = string[63];
Procedure PlayWavFile(fn : string63; t : byte);
Implementation
uses dos;
VAR
BytesRead, BlockSize, BlockRest : Word;
dataptr, pp : pointer;
Times, SampRateDiv : byte;
reverse,wavinfo:boolean;
fmt: record
wFormatTag:word;
nChannels:word;
nSamplesPerSec:longint;
nAvgBytesPerSec:longint;
nBlockAlign:word;
wBitsPerSample:word;
end;
PROCEDURE PlaySound(bufptr:pointer;bufctr:longint;ratediv,times:word)
;{assember;}
var
old_int8 : pointer;
timesleft :word;
savemask:byte;
begin;
ASM
jmp @PlayMain
@int8_out_spk:
xor al,al
out 42h,al
mov al,cl
out 42h,al
mov ax,dx
or ax,si
jz @ready
dec bl
jnz @skip
mov bl,bh
mov al,es:[di]
shr al,1
shr al,1
inc al
mov cl,al
inc di
jnz @noseg
mov ax,es
add ax,1000h
mov es,ax
@noseg:
sub si,+01
sbb dx,+00
@skip:
mov al,20h
out 20h,al
iret
@ready:
mov ch,0ffh
jmp @skip
@PlayMain:
cli
mov ax,3508h
int 21h { get int vector 08 in es:bx }
mov word ptr old_int8,bx
mov word ptr old_int8+2,es
in al,21h { interruptmask }
mov savemask,al
mov al,0ffh { disable all interrupts }
out 21h,al
sti
push ds
mov ax,cs
mov ds,ax
mov dx,offset @int8_out_spk
mov ax,2508h
int 21h { set int vector 08 to ds:dx }
pop ds
mov al,34h
out 43h,al { timer 0 mode }
mov al,36h { 22khz }
out 40h,al
xor al,al
out 40h,al
mov al,90h
out 43h,al { timer 2 mode }
in al,61h { enable speaker }
or al,3
out 61h,al
mov cx,times
mov timesleft,cx
mov cl,20h
mov bx,ratediv
mov bh,bl
les si,bufctr
mov dx,es
les di,bufptr
@nexttime:
push di { bufptrlo }
push es { bufptrhi }
push si { bufctrlo }
push dx { bufctrhi }
push bx { ratediv }
xor ch,ch { readyflag = false }
mov al,0feh { enable timerinterrupt }
out 21h,al
@notready:
or ch,ch
jz @notready
cli
mov al,0ffh { disable all interrupts }
out 21h,al
sti
pop bx { ratediv }
pop dx { bufctrhi }
pop si { bufctrlo }
pop es { bufptrhi }
pop di { bufptrlo }
dec word ptr timesleft { more times ? }
jnz @nexttime
in al,61h { disable speaker }
and al,0fch
out 61h,al
mov al,34h
out 43h,al { timer 0 mode }
mov al,0
out 40h,al { timer 0 clock }
out 40h,al { timer 0 clock }
mov al,0b6h
out 43h,al { timer mode }
mov ax,533h
out 42h,al { timer 2 spkr }
mov al,ah
out 42h,al { timer 2 spkr }
push ds
lds dx,dword ptr old_int8
mov ax,2508h
int 21h { set intrpt vector al to ds:dx }
pop ds
mov al,savemask { enable timer and keyboard }
out 21h,al
END;
end;
{ The following procedure is also used to half the samplerate }
PROCEDURE Stereo2Mono(bufptr:pointer;bufctr:longint); assembler;
ASM
les si,bufctr
mov dx,es
les di,bufptr
push ds
mov ax,es
mov ds,ax
mov bx,di
@s2mNext:
mov ax,dx
or ax,si
jz @s2mRdy
xor ah,ah
mov al,es:[di]
mov cx,ax
mov al,es:[di+1]
add ax,cx
shr ax,1
mov ds:[bx],al
inc di
jnz @noseg1
mov ax,es
add ax,1000h
mov es,ax
@noseg1:
inc di
jnz @noseg2
mov ax,es
add ax,1000h
mov es,ax
@noseg2:
inc bx
jnz @noseg3
mov ax,ds
add ax,1000h
mov ds,ax
@noseg3:
sub si,+01
sbb dx,+00
jmp @s2mNext
@s2mRdy:
pop ds
END;
PROCEDURE ReverseData(bufptr:pointer;bufctr:longint); assembler;
ASM
push ds
les bx,bufctr
mov dx,es
les di,bufptr
mov si,di
add si,bx { offset=offset+bufctrlo }
mov ax,dx
adc ax,0 { bufctrhi=bufctrhi+carry }
mov cl,12
shl ax,cl
mov cx,ax
mov ax,es
add ax,cx
mov ds,ax {ds = segment of end of buffer}
shr dx,1
rcr bx,1 { Bufctr = Bufctr / 2 }
@RevNext:
mov ax,bx
or ax,dx
jz @RevRdy
sub si,+01
jnc @Rnoseg1
mov ax,ds
sub ax,1000h
mov ds,ax
@Rnoseg1:
mov al,es:[di] { swap bytes }
xchg al,ds:[si]
mov es:[di],al
inc di
jnz @Rnoseg2
mov ax,es
add ax,1000h
mov es,ax
@Rnoseg2:
sub bx,+01
sbb dx,+00
jmp @RevNext
@RevRdy:
pop ds
END;
PROCEDURE ReadFormat(var f:file);
var
str:string[4];
chunksize:longint;
BEGIN
blockread(f,str[1],4);
str[0]:=#4;
if str='fmt ' then begin
blockread(f,chunksize,4);
if wavinfo then writeln(' ''fmt '' size=',chunksize);
if chunksize=16 then begin
blockread(f,fmt,sizeof(fmt));
if wavinfo then with fmt do begin
writeln(' wFormatTag=',wFormatTag);
writeln(' nChannels=',nChannels);
writeln(' nSamplesPerSec=',nSamplesPerSec);
writeln(' nAvgBytesPerSec=',nAvgBytesPerSec);
writeln(' nBlockAlign=',nBlockAlign);
writeln(' wBitsPerSample=',wBitsPerSample);
end;
if fmt.wFormatTag1 then begin
writeln('Unknown Format (',fmt.wFormatTag,')!');
halt;
end;
case word(fmt.nSamplesPerSec) of
33075..65535:sampratediv:=0;
16538..33074:sampratediv:=1;
9188..16537:sampratediv:=2;
6432..9187:sampratediv:=3;
4962..6431:sampratediv:=4;
4043..4961:sampratediv:=5;
3413..4042:sampratediv:=6;
else halt;
end;
end
else writeln('''fmt '' chunksize error (',chunksize,')!');
end
else writeln('''fmt'' chunk not found!');
END;
PROCEDURE PlayWAVE(var f:file;sampratediv,times:byte);
var
i : integer;
str:string[4];
DataSize,l1:longint;
p1,p2:pointer;
s,o:word;
BEGIN
blockread(f,str[1],4);
str[0]:=#4;
if str='data' then begin
blockread(f,DataSize,4);
if wavinfo then writeln(' ''data'' size=',Datasize);
If MaxAvail>DataSize THEN BEGIN
if DataSize<$FFF0 then Blocksize:=DataSize else
Blocksize:=$8000;
GetMem(pp,BlockSize);
DataPtr:=pp;
blockread(f,pp^,BlockSize,bytesread);
if BlockSize=RIFFsize+8;
end
else Writeln('No RIFF header found!');
END;
PROCEDURE ShowHelp;
BEGIN
Writeln('PLAYWAV Bengt Holgersson 1991');
Writeln('Use: PLAYWAV filename [/N:times] [/R] [/I]');
Writeln(' /N:4 Play WAV 4 times');
Writeln(' /R Play WAV backwards');
Writeln(' /I Show info about WAV');
END;
procedure Getoption(s:string);
var
ch:char;
W:word;
begin
if length(s)<2 then exit;
ch:=s[2];
case upcase(ch) of
'R':reverse:=true;
'N':begin
if s[3]':' then exit;
val(copy(s,4,255),times,w);
if (w>0) or (times<1) then begin
writeln('times should be in the range 1-65535');
end;
end;
'I':wavinfo:=true;
'?':showhelp;
end;
end;
Procedure PlayWavFile(fn : string63; t : byte);
Var f : file;
filename : string63;
i : integer;
BEGIN
wavinfo:= false;
reverse:= false;
Times := t;
filemode := 0;
filename := fn;
if pos('.', filename) = 0 then filename := filename + '.WAV';
assign(f, filename);
reset(f, 1);
IF Ioresult=0 then ReadRIFF(f)
END;
End.
---------------------------------- E N D ---------------------------------
begin 644 C-LACA.WAV
M4DE&1L8J``!7059%9FUT(!`````!``$`$2L``!$K```!``@`9&%T89HJ``"`
M@("`@("`@("`@("`@("`@("`@(&$A(.%A(2$A8.#@8*"@']_?W]]?'Q\>WM[
M>7EY>'AX>'AW=W9X>'AY>WM\?'Y^?GY^?H"!@8&"@X.#@X2$A(2$@X6"@H*"
M@8&!@H*!?X&!@GY^?GY\?'U\?GY^?GY^?G]_?G^`@(&"@H."A(2%A(:&B(:&
MB(B'AX>&AX>%A86%A86%A(.#@X."@H&!?GY^?7U]>WM[>WM\?'Q\?'Q\?GY\
M?7U]?'Y^?G^!@8%_@(!^?GY^?GU]?GU\?'Q[>WIY>GIX>'AX>'5U=G9U=71U
M=75V='1W=W9V>'IZ>7A[>WI[>WM[?7U]?GU]?7Y]?7M[>WQ[?'Q\>WM[?'Q\
M>WI[>WQ[>WQ[>WM\?'IZ?'U]?'V`@'^`@8@X.%AHB(BHB)B8J(B(B'AH:&
MAH2$A(2$@X.#@X."@H*"@(!^?WY^?7Q\?7M\?'U\?GZ`@("!@X.#@X2%A86%
MA86%AH:%@X.#A(&!@8!_?WU\>WMY>'AV=7=W=71T=G1V=G5V=75V=G9V=GAX
M>'EZ>GM[>WU]?GY^?7Y^?GQ\?'M[>WIZ>7EX=W=W=W9V=G9V=G9V=G1U='1V
M=W=X=WIZ>GQ]?7^!@8A(2#A(6%@X2$A(6#@X2$@X."@8&!?W]_?WY^?GU]
M?7Q\?'Q\>WMZ?7Q\?'Y^?G^`@(&"@X.#@X6%A8:&AX6%A86$A(2$A(2%@H.#
M@G]]?7U[>WIY>'AW=G9V=G1T='1T='9U=7AW>'AY>GM[?GU]?7Y^?GY^?GY^
M?GY_@']_?W]^?G]^?GQ]?'Q[>WM[>WIZ>WQ[>WQ]?7U]?W^`@8&!@8&!@8.$
MA(2$AH:'AX>(B(F)B(B*BHB(B(>%A86$A(*"@8"`?GU]?7Q^?GY_?W^`?G]_
M@(&!@8.%A8:(B8F(BHJ+C(Z.CI&1D9&2DI*2D)"0D(^/CHR,C(J(B(6$A(.!
M@(!_?GU]>WEY>'9U=71S'C)&6EIN>HJ*HK*RPLKBXO+[`P,#`P,"^NKJTJJJ?DX>'>G%E
M95Q24DI$0D)$2$Q,4EI:8FMT='N!A(2%A(2#@7M[=G!F9EY:6E924E).3DY0
M4E966F!B8F9J:FQR='1X>GM[>X"`@X>,C)*7G9VFK*RRNKZ^P,3(R,C(R,2Z
MK*R;C8V`<6-C5$0X.#`L+"PP,#`X0$I*5F5E<'A\?("`A86#@8%[=&AH8EQ6
M5E104$Q,3DY.5%967%Y>8V=N;G%V=G=X>'AZ?H&!AXJ*CY6=G:2LM+2ZP,#$
MQ,C(R,3`P+*BHI2$>'AJ7E!00#0T+"@L+"PT-#A`2DI68VMK=7AX>7Q]?7QX
MG5I8V->7%Q85E144%165EQB8F5J;FYQ=7IZ?7Q\?WU^?H*%
MB(B.DI*6G:2DJK*RN+J\O,#`Q,3$P,"VIIN;A8%U=61>7DP\.#@P-#0T0#P\
M1%!65F9R=G9\?7U]?H&!?7EV=F9B8EY85E964%!.4%)26&!B8F9K:VQS>'A\
M?7]_?G]_A(:*BI"4EY>>HJ*JK+*RLK2VMK:^OKR^O+RJIJ:6B8J*>G%H:%1,
M3$9$1$1(3DQ,6%Y>9WA^?H.)AX>*BXN-AX6%?7-P<&IG9V9D8&!@86%D:6]O
M'N"@H.(AX>*BHN+DY24FZ"?GZ*BGY^HHJ*JKJZNNKC$Q,3$Q,"PL+"8
MDH^/>G1T84Q$1#@X.#A`0$!"4%)28&]O='V"@H*%AH:'@("`=&YN:F9C8V1@
M8&!@8F)E;7!P='AX>7Q_?X*"@H2"@X.#AXB(D(^/EIJ?GZBLLK*VNKK`P,C(
MS,S(R+JRLJ20D)"!<6UM5DQ,1D!`0$1,3$I47EYC=8"`@HR,B(R*BHR&A(1_
M7M[>7Q\@(&"@H&`@("#A86*CY&1F)RWM\AHB(
MA8>'AX6!@8!TWM[>X*"?X6%A(*#@X:*BHJ5
ME968HI^?KK*TM+ZZNL3`R,C,S,R^N*RLEIJ.CGQ\?&)44E)$2$A(4$Y.5%YA
M87*`?W^.BHJ'C(J*AH9_?W9S'E[>WA\?W]]@X"`
M@H&!A(>,C(^4E96=G9VDKJRLN+BXN,#`P,C$LK*VG)R0EW]_>'945%1(2$!$
M2$A,3%967F)B>'^`@(^$AX>,AX>%AWIZ='%J:FEM;6EI;&QH;')R='5U>WAX
M>(%[>X2%A(2$B(B(CI:6F)BBHJ*FMK:LOKZ\OLC(Q-#(R+3`P)J8FII^@'9V
M5EA82$1(2$Q04%!:8&!E?'Y^@9"0@HB*BH>%AX=[='1S;6AH7AX?GV"@H&!@8&'@X.3C965FIN;I*JRLK:\P,#$S,S`MKJZEYB6
MEGM]?6]25%1"0D1$3$Q,3EI>7F1_>GJ#C(Q^A(2$@8&!?W5O;VIG965K:6EJ
M;&IJ;'1R'=Y?'Q_@(>'@82$AH2/CY*7GY^=J*BDLK:VO,#`Q,S,S+:^
MGY^4EY>">'9V6%1,3$1(2%!85E9E:FUM@HJ*B9>)B8B%A85\?W]V:&9F8%IF
M9F)F9FEH9F9L;FYR=G1T='1Y>7:`@'Y]A86`BI&1DJ*BG*RHJ+2^O+S,T-#(
MN+:VEH^,C'EO;VQ*1$1`/#Q`4%A86FML;'*'AX^-GY^*B']_?W%Q>&U>7F%8
M5%1E965K-C9JBHJRVOK[`S-34U-C8
MP,24E)"!;'!P>GAW=W-YX&%A8A_?WU]=75V=&YN:7)R;GR&AI*>KJZ\S,S8V-C8V,S,S(=_?V):3DY*
M1C`P0$!`6':4E)VNJJJBEI:=@WY^;U)21#PX.#Q05%1A=75_B)N;E8^'AW1@
M8&!>6EIL;6]O?I"0FKS,S-C8V-C4W-RR?6EI'#`P'$I24HN5CH[$FIJ^N*2D
M@%I`0"0X.#A&;V]M?X2$D7Q\AVU>7E1>5E9Q='1S:V9F6F1Z>H.7EZ"@GY^J
MIJ:RQ,S,U-S(R&QN;BPL+"Q,D:BHU)"0R)V&AIQL5%0L0$`T8)^?DJZ0D'9<
M7&146%AB6EI@>X*"AHIRMRJJK)_7%P\0%)22')R='^.CI%T9V=6
M1$14=82$F9U_?VML;'",MK;(S-34T-#0D$Y"0B`X.$ZLU-34S(:&CT9&5$I4
M5%90D9&(Q,2ZI'%Q3#PT-&%SO*:*BE!$1#A.
M>'B2FYJ:B&YN8%I65F=\BHJ8EI:";FAH:8&@H+;`P,"^P,"84D)")#@X8:S0
MT,S(?W]P4%!24&!@;FMKEZ*TM*:,7%Q`0D),=(Z.H):)B7)@8%A:965ZCYB8
MDX*":V-L;(*?M+2ZO+R\OI.34$!`)#QN;KC4T-#`>WMJ4E965&9R@H*ZV
MGY^`4CP\2%Y>@I>@H)*!;FY@6EI@;8"`DYJ0D'IJ:F9TCX^FM+2ZNL#`KFA(
M2"PL+%B0$1:6GJ/CYN3@8%Q9F9>
M7&EI>HR7EY)^?FQI='2*HK"PMKBXP*)D9$8L-#1AI*3`P+:VCW-@8%Y24E9F
M>'B8LK*XGGEY6$1*2F2`@)"7E)2$=FIJ8%I::8"2DIJ3?'QI:FI]DZJJLK:Z
MNKR`@%(\,#!.@L#`O+Z^H(9J:F)>7E!<;FZ.J+R\KH:&8DY(2%QYC(R1E96.
M@')R:5Y@8':,C):4A85M9G9VC)^?KK"PL+ZBHF!$,#!`9:ZNQ+BXJ(YY>6-G
M5%148&"#H+BXN)9J:E1.3E1J@("*CY.3BGAX:%Y<7&R(B)B7B(AT9V]OAYN;
MJJZTM,"N:&A(,#`\7**BP+:LK)>(B&IJ5%1.6("`H+BXMIMP<%Q66EID='2!
MC)>7E8"`:%I:6FN(FIJ7B8EY;W)RAI:DI*JVML3$='1.-#P\5I*2OJJJJIJ=
M>'AQ4E)(2G9VG;2TL)UX>&5@8&!>86%PA)>7FHAI:5165F>`D9&3BG]_>'1T
M>HB7EZ2NO+S,MK982"PL3ERFIJZ@H)VBGY]W965&0E14B**JJIV2DG9T:FIF
M6%Y>;82$E))]?6A@8V-M?'R'BHJ*AGQS7I\?(&`@(*#A86(CY24EY>7FZ*NKJ2/?W]V'@X:'AX.!@7]Z=G9X
M>WQ\?X"`?'AX>'AW=W9O;FYP=GAX?'IZ>'9V=GAY>WM^@8@X*"@8"`@(*'
MAXF,CHZ-CHR,CI"0CY"1D8^,C(R)AX>$@H2$A(6%A(2"@H*"@8%_?W]^?GY^
M?GU[>WEW=WAY>GI[?'Q\?'Q\?7U\?'M\?'U^@("`?7U]?'U]?7]_?X"!@8&`
M?W]^?7Y^?X""@H."@H&!@(!^?W]_?X*"@X."@H!_?7U]?7U^?W]_@(&!?WY\
M?'M[?'Q\?7U_?X"`?WY[>WU_?WU_?W]^?G]_?GU]?GY^?H"`@("`?W]^?GY^
M?W]_?W^`@']_?GY]?7U^?GY^?X!_?W]^?GY^?W]_?W]_?X"`@8&`@'^`@(!_
M?W]_?G]_@8"`@(!_?W^`@("`?W]_?X"`@8&!@8&!@8*"@8&!@8&!@(&!@8&"
M@H*"@8&!@8&`?W]_?W]_?W]_?WY^?W]_?W]_?W]_?X!_?X"`@(!_?W^`?W]_
M?W]_@8&!@8&`@("`@8&!@8"`@']_?W]^?GY^?GY]?7U]?7U]?7U]?7U]?7U^
M?GY^?W]_?W]_@("`@']_?W^`@8&!@8&!@8&!@8"`@("`@8&!@("`@("`@("`
M@("`@("`@(!_?W]_@(&!@8&!@8&!@8&!@8&!@8*"@8."@H*!@8"!@("!@8*"
M@8&!@8*!@8%_?X!_@("`@8&!@8&!@8&"@H&"@8&"@8&!@("`?W]_?W]_?W]_
M?W]_?GY^?GU]?7Y^?GY^?GU]?7U]?7Y^?7Y^?7^`@']^?W]_?W]^?GU]?7U]
M?7Y^?GY^?GY^?GY^?GY^?GY_?WY_?GY_?W]_?W]_?W]_?W]_?W]_?GY^?GY_
M?W]_?W^`@("`@("`@("`?W]_?W]_?X"`@("`@("`@("`@(&!@8&!@(!_?X!_
M?W]_@(!_?X"`?X!_?W]_?W]_?GY^?GU]?GY^?GY_?W]_?W]_?W]_?W]_?GY^
M?GY^?GY^?7U]?7U]?GY^?GY^?GU]?7U]?'Q]?7U]?GY^?GY^?GY^?GY^?GY^
M?7U]?'Q]?7U]?7Y^?W]_?W^`?W]_?GU]?7U]?7U^?GY^?W]_?W]_?W]_?W^`
M@(!_?W]_?W]_@("`@("`@("`?W]^?GY[?7Y^?G]^?G^`@("`@8&`@8&!@8&!
M@("!@8"`?W^`@8&`@8&!@8&`@(!_?W]_?GY^?GU]?7Y^?7]]?7]^?GY_?GY_
M?GY^?G]_?GY^?G]^?W]]@(!^?WY^?WU_?WU^?GY^?7U\?GU]?7U]?GU^?GU^
M?GM_?7U^?GQ\?WQ\?G]^?GY^?7U^?7U_?8"`?GY_?WY\?']\?GY^?G]_?WQ\
M?WU^?GY_?WY_@(!_?WY^@']_?H"`@()_@H*!@("!@(&!@8*`@(&`@']_@8%_
M@GY^@X"`@'^!@7^`A(1^@8%^@GY^?WY^?WR#@WZ`?W]^?W^!?X"`?W]_?X!^
M?H-[@8%^?WY^?G]_@'V"@GY]?W]\@8%_?'Y^?(*">8![>WZ!=G9_>7E_?'M[
M@'F"@G:$A'J`>WM]?7Y^?8*">H!]?7Z!?'Q^?W^`?GY^?WQ_?WU_?WM\@(!]
M?W]_?GU]@7V`@()]?7]_@H*!@'Y^@WY^@WV"@GR$>GJ&@("`A(&!?X9[>X%\
M?(1]@X."@X-^@8&!@H)_?X"`@(%_@H)\@'M[@GU]@W^!@7R`?GZ`A(1]?W]_
M?7V"@GJ!@7^!@(""@(!^A'Q\@8!^?H!]?7N!>7E_>'U]>'Y^?'M\?("`A85Z
MA85[@'M[?WQ]?7M_?WJ#>GJ"?X"`?'Q\@'Y]?7Y^?GQ\?'QZ?8"`?7]_@GQ_
M?WQ\@("$@(!_>(2$>8%X>()[>X-^?7V&@(2$@(&!@WQ\?(I]?8*`>GI^A(&!
M@GY^@WZ(B'V(=W>%?GZ!?8&!?81_?X1]?7Y_@("`?8*"?H*"?H.`@(@W^#
M@8%_@8.#@7]_@GZ$A'^#>GJ">7E_?WU]?7Y]?7Q]?8!Y@X-\?8"`?X"`>H)]
M?7M_>GI]>7E]>WY^?'Y^?7Z!@7]^@(!]@(![?'U]?WR`@(%Z>H![?W^`@G1T
M?WAX>X%\?']_>WN"?GZ(>8>'?(6%=8=P<(IXAX=\A85]AW]_AGZ*BGB(B'^`
M@H)\@7IZA7EYA'J#@WR"=W>#>WN"?(*"?H%^?GN`@(![@H)^?GY^?X&!?X%]
M?89\?(!_?GYXA'9V?GY^@G>!@7:'@(!^>'A[A'=W@7I\?'M]?72#8&!>81X>(-V=HATB(APB'!P@W)RA7.!@7:">GI\?GYY@7IZA'E_?WF!@7:"
M>'B!=G:!>7]_?8%Y>8=W=X1VB(AYA7M[@WEY?GN*BG:&>GJ$?GZ">X6%?8=\
M?(=\?']Z@8%_?86%>(6%>H%^?G^`@'V!@H*`?8"`>8.#>X=V=HAWAH9[AX=Y
MA7IZ@'U[>X-]?8)[A(1UB')RA7AXA7F!@7Q^?H-[>7E]@7AX@W=W@GE^?GF%
M>'A^?'Q^=WY^?G2(B'*(B'6(;V^*=HZ.(-X@X-Z?GQ\>(.#
M>(-\?()X?'QX?GZ`>H*">H1[>X5X>(>`?W^'>H2$>(R,>(QRGJ'?HB(>8Z.>(AX>(EZ
MB(A]A85[@'Y^?H2$?H*$A(1[AH9ZAH9Y?GY^?'Q\?(EQ<8QXA85ZAGAXAW5U
MD6Z0D'.'='2(=W>'?X&!?7R)B7:)B7.'=W>$?7U\@'Y^?8!]?8%Z>HAUB(AV
MA')RAG!PBFR0D'6*='2&@X.`AGY^A7F#@WJ(B'F$=W>.='20=HZ.>(IZ>HY[
M>W^#>GJ(;8Z.;H^/=)!\?(UWAX=\@8%_?(>'?(IW=XQT=(IVC(R!@X.(@8Z.
M?(!\?(.`@'^#A(2#?W]_@("`@8!\?(-\A85]?W]X?WM[?7IW=WA_?W9Z>WMX
M@GEY@7AX@'M\?'IY>79Y>GIZ=GEY>'AX>WI[>WE]>GI_?7V`?X>'AXJ*BHR-
MC9"5E)27F)65EI"0C'EK:V-86%A>8V-D:&IJ:&-C9F-@8&EH;V]SX:(B(V6EI:;H**BJ+"PNL#,S-C0T(=P1$1"0&IJ='5U@(:*BH.2AH9X
M'9J:F5G9VUV@(!U8U965%Q8FAH=GQ\AX>(
MB(6*D)"BM+3$S-SGU]
M;&1D9'B(B(B%>WMR;6UV@WAX:69B8F!@8&EF8&!A96AH9VAH:&9K:W6!B(B*
MB(B)BY24HK2\O,3$Q-#4U-2'6EH\/%)2)B8R*@(!\/EY>@I*2LL+JZOL#(R+9:6D`P2DIFB(BRFHB(=(2*BGMQ<6%.
M1D98AI24D8"`=G)O;X61AH9N86%L>(B(E)*"@G!G9VEC7EYA:G%Q>']_>6M<
M7%QE972$C(R*@'9V=7IZA(Z7EYV@I*2FJJJNM,#`R-"?GUI$1#A:9V>5H)&1
MB(.#FI%]?6I65DI,7F(E9:6CGIJ:F5A86)@
M9V=N=7M[>G5U:F)C8VET='I^?'QX=G1T=GIZ?X>0D):7E)22D)"5GZRLN,#$
MQ,2+BTX\-#169I65H)24BHB6EH9T8F)43$Q2>9F9G9"0?GAN;G%^?GYS965N
M@(Z.EY6(B'!@8&!D:FIN=79V=7AX>'1K:V=M=75]A(2$?71T&UM=(&(B(Z*BGUF7%QD;')R7Y^?WES'Z&C8V1CX^.CX^/D969F9Z@H*JLK*RJL+"PG&)B5$I86&J$
MH*",AX>`AX*"=G1I:5Y@8'2.CHZ(?7UT;&QL?H1_?WM\?(.#AH:%>FUM:&YN
M='9V=G1O;6UP=G9V=GAX>7I[>WU\?'EW>7E^@H>'C(R,C(R/CY"2DI68FIJ<
MH*"@H)Z>H*"DI*2;;7Q\DH>`@'I]?7QT79V>7EY>'AQ7EZ?'M[>'AX
M>X&&AHN/CXZ,C8V/D)&1E)F9FYZ@H*"=G)R;G9VBJJJJF'EK:V-J:G2$C(R%
M@H"`?WQ\>GET='%T?'R"@(!\=&]O;W9V?7]]?7MY>7EX>7EVGEY>'AX>'EZ>WM\?W^"A8>'B(>'AXF,C(Z/CX^.CX^2E9:6
MEY:5E968F)N@HJ*:>VMK9&EI7EX=G9T='-S8!]?7AP;&QM
M'9V=G9V=G9T=75W>'AX=7%Q;6]SGIX=G9V>'IZ?7]_?W^!
M@8.%AX>'AX>)BXV-C8V,C(R/CY&1D)"0D)*2E).3D8^/CY&2E)27F9F:D8*"
M?'A]?7^%A85^>GIX=G9U=7AX>'AV=GAX>'9T<7%O<'-S=G9V='-Q<7)T=G9U
M='1T=71T='%PGMZ>GI^?GY_@H*#@H*"A8B(B(B(
MB(6$AX>*C(R.C(R,BHJ*BHJ,C(Z/CX^,BHF)B8R,D).1D8V,C(Z0D9&1C(6%
M@X&!A(.$A(![>GIX>WM]?GM[>'=V=GAY>7AV=75V>'AX>7=W=7)S7M[
M>GIV=79V=G9V>'AZ>GQ]?'QY>'AX>GY^@8."@H*!@8@H*#@H6%A86%AH6%
MA8&!@X.%AH:&A8*"@8.#A(*!@8&!@X.%AH:&A(2$@X.#@X2%A8:&AH:%@X&!
M@']_?X&!@8&`?W]]?'Q[>GM[?7U]?'MY>7AY>GIY>'AX>7EY>7Q]?7MZ>GEZ
M?'Q]?7Q\>GIZ>WQ]?7U]?7U^?W]_?WY^?7Q]?8"`@(!_?W]^@("!@8*"@("!
M@8.%A86$@H*`?X"`@H&!@X"`@(!_@8&!@8&`@("`@8"`@']^?GY^?GY^?GY_
M?GY^?GY^?G]_?W]_@(!_?GY^?GY^?7U]?7Q\>WM[?'Q[>GIZ>GEZ>GIZ>GIZ
M>7EZ>GIZ>WQ\?'Q\?'Q\?'U^?GY^?GY^?GY^?GY^?GY^?W]_?W]_?W]_?W^`
M@("!@8&`@("`@(&!@(&!@8&!@8!_?W]_?W]_?W]_?W]_?H"`@("!@8&!@("!
M@8&!@8&!@8!_?W^`?W]_?WY^?GU]?7U]?7U]?7Q]?'Q]?7Q\?'Q\?7Q\?'U]
M?7U\?'Q]?7Q\?'U\?'Q]?7U]?'Q]?'U]?'U]?7U]?7U\?'Q[?'QV$A']]>7E^@8&"@GY^?'I\?'Z`@(*!@8&`@8.#@H.#@8%_?WZ`@("`@8&!
M@("`@(&!@H*"@H*"@8&!@8&!@("`@("`@(&!@8&!@8&!@8"`@("`@(&!@8&!
M@8&!@("!@8&!@8&!@'Y^?G]^?GY^?GY^?7Y^?7U\?'Q\?'U]?7U]>WQ\?7U]
M?GU^?GU]?7U\?'Q\?7U]?'U\?'Q\?'M[>WM[>WM\?'Q\>WM[>WM\?'Q\?'Q]
M?7U]?7U]?7Y^?GY^?GY^?GY]?GU]?GY^?GY^?G]^?GY_?W]_?X"`@8&!@8&`
M@("!@8&`@(&!@8&!@(!_?X"`@("`@("`@("`@("`@(&`@("`@("`?W]_?G]_
M?W]_?W]_?W]_?W]_?WY^?GY^?GY^?GU]?7U]?7U\?7U]?7U]?7U]?7Y^?GY^
M?GY^?GY^?GY^?GY^?GU^?GY]?'Q\?7U]?'U\?'Q\?'Q\?'Q\?7U]?7Y^?GY_
M?W]_?W]_?W]_@']_?W]_?W]_?WY^?GY^?W]_?W]_?X"`@("!@8&!@8&!@8&!
M@8&!@8&!@8&`@8&`@(&!@8"`@("`@("`@(&`@("`@("`@(&!@8&`@("!@(!_
M?W]_?GY^?GY^?GY]?7U]?7U]?7U]?7U]?7Y]?7U]?7U]?GY^?GU]?7U]?'Q\
M?'Q\?'Q\?'Q[>WM[>WM[>WM[>WIZ>GIY>GIZ>GIZ>WQ\?'U]?7U]?7U\?7U]
M?7U]?'U\?'U]?7U]?7U]?7Q\?7U]?7Y]?7]_?GY_?H"`?GY^?GY^?G]_?W^`
M@("`@8&!@8&"@H*"@H*#@X.#@X.#@H*"@X."@H.#@X.#@X.#@X.#@X.#@H*"
M@H&!@8&`@("!?X"`@X&!@8."@H*#@X-^@H*#?7Y^@'Y^?GU^?GZ!@(""@H&!
M@(&!?WQ\?'MZ?'Q[?'Q^?X"`?W]^?GU[>WIY>7EY>7E[?'U]?X!_?W]]?7U\
M>WM\?'U]?G]_@8&`@(&`?7U]?'Q[>WM[>WU\?'U^?GY^?GY]?'U]?'M[?'Q]
M?7U_?W^`@8&!@8&!@("`?W]_?W^`@("`?W]_?GY^?G]^?G]_?W^`@(!_?W]_
M?W]_?GY^?G]_?W^`@("`@("`@("`?W]_?W]_?W]^?GY^?7U]?7U\?'U]?7U]
M?7U]?7U]?'U]?'Q\?'Q[>WQ\?'Q\?'Q\?7U]?'U]?7Q\?'Q\?'Q\?'Q\?'Q\
M?'Q\?'U\?7U]?7U]?7U]?7U\?'Q\?'Q\?'Q]?'U]?GY^?GY_?WY^?W]_?W]_
M@("`?X&!@8"!@8*!@8&!@8&!@H*"@H*#@X.#@X.#@X.#@X*"@H*"@H*"@H&!
M@8&"@H*"@H*"@H&!@8&!@8&!@8&!@8&!@8&!@8&!@8&!@("`?W]_?GY^?GY^
M?GY]?7U]?'Q\?'Q[>WM[>GM[>WM[>WQ\?'Q]?'Q\?'Q\>WMZ>GIZ>GIZ>WMZ
M>WM[>WI[>W
T BAT
'
.
t.bat
t.bat
c:\fd\t.bat
P
P
P
`
`P
P
Quitting c:\fd\mail.bat
3
---------------
FIDO MESSAGE AREA==> TOPIC: 107 PASCAL Ref: F5G00355 Date: 04/12/98
From: PAUL WALKER Time: 12:09pm
\/To: KIM FORWOOD (Read 2 times)
Subj: help
Hi Kim,
Kim Forwood to Brandon King, 10 Apr 98 20:22.
KF> way to get the best speed is to use the best sized buffer, which is
KF> generally an 8k buffer. Take a look at BlockRead/BlockWrite.
I always use the largest buffer that I can, personally. Why is 8Kb faster?
The buffer comes from heap memory, and isn't normally present throughout the
whole program - just disk procedures that set it up as large as they can,
use it, remove it...
Paul (p.r.walker@warwick.ac.uk)
... "It's just life," they say.
--- FMail/386 1.22
---------------
* Origin: The Light Fantastic! (2:254/60.11)
|