$ od -c -N 50000 [Indigo]<XPort>CRuntime>Private>BWSMStreamImpl.mesa!1
0000000 - - C o p y r i g h t ( C )
0000020 1 9 8 3 , 1 9 8 4 b y
0000040 X e r o x C o r p o r a t i o
0000060 n . A l l r i g h t s r e
0000100 s e r v e d . \r - - B W S M
0000120 S t r e a m I m p l . m e s a
0000140 L a s t e d i t e d b y \r
0000160 - - P X K , \t 2 7 - J
0000200 a n - 8 4 1 3 : 5 4 : 4 3 \r -
0000220 - L X R , \t 9 - J a
0000240 n - 8 4 1 2 : 1 9 : 2 2 \r - -
0000260 R X J , \t 2 1 - D e
0000300 c - 8 3 9 : 1 9 : 3 2 \r - -
0000320 D W E , \t 2 8 - J u l
0000340 - 8 3 1 4 : 1 2 : 4 3 \r - -
0000360 B G Y , \t 1 5 - A u g
0000400 - 8 4 1 4 : 0 8 : 3 2 \r - -
0000420 M E W \t \t 2 3 - M a y - 8 6 1
0000440 0 : 2 3 : 0 2 \r \r D I R E C T O
0000460 R Y \r B y t e B l t U S I
0000500 N G [ B y t e B l t ] , \r
0000520 E n v i r o n m e n t U S I N
0000540 G [ B l o c k , B y t e ,
0000560 b y t e s P e r P a g e , P a
0000600 g e C o u n t ] , \r F i l e
0000620 U S I N G [ F i l e , G e
0000640 t S i z e , n u l l F i l e ,
0000660 P a g e C o u n t , P a g e
0000700 N u m b e r ] , \r H e a p
0000720 U S I N G [ C r e a t e U n i
0000740 f o r m ] , \r I n l i n e
0000760 U S I N G [ H i g h H a l f ,
0001000 L o n g C O P Y , L o n g D
0001020 i v , L o n g D i v M o d ,
0001040 L o n g M u l t , L o w H a l
0001060 f ] , \r M F i l e U S I N
0001100 G [ \r A c c e s s ,
0001120 A c q u i r e , B y t e C o u
0001140 n t , d o n t C a r e , E r
0001160 r o r , G e t A c c e s s ,
0001200 G e t L e n g t h , H a n d l
0001220 e , \r O b j e c t , P
0001240 l e a s e R e l e a s e P r o c
0001260 , R e l e a s e , R e l e a
0001300 s e C h o i c e , R e l e a s
0001320 e D a t a , \r S e t A
0001340 c c e s s , S e t R e l e a s
0001360 e D a t a , S e t L e n g t h
0001400 , T y p e ] , \r M F i l e
0001420 O p s , \r M S t r e a m U
0001440 S I N G [ E r r o r C o d e ,
0001460 R e l e a s e D a t a , H a
0001500 n d l e , P l e a s e R e l e
0001520 a s e P r o c ] , \r B W S M
0001540 S t r e a m O p s U S I N G
0001560 [ H a n d l e , m S t r e a m
0001600 P a s s w o r d , M y H a n d
0001620 l e , O b j e c t , S t r e
0001640 a m O b j e c t ] , \r M U s
0001660 a g e U S I N G [ m F i l e
0001700 L o c a l S t r e a m ] , \r
0001720 S p a c e U S I N G [ \r
0001740 A l l o c a t e , D e a l
0001760 l o c a t e , F o r c e O u t
0002000 , I n t e r v a l , M a k e
0002020 R e a d O n l y , M a k e W r
0002040 i t a b l e , \r M a p
0002060 A t , U n m a p A t ] , \r
0002100 S p e c i a l M F i l e U S I
0002120 N G [ G e t C a p a W i t h A
0002140 c c e s s ] , \r S t r e a m
0002160 U S I N G [ \r B l o
0002200 c k , B y t e , C o m p l e
0002220 t i o n C o d e , d e f a u l
0002240 t I n p u t O p t i o n s , E
0002260 n d O f S t r e a m , \r
0002300 G e t P o s i t i o n P r o c e
0002320 d u r e , G e t P r o c e d u
0002340 r e , H a n d l e , I n p u
0002360 t O p t i o n s , O b j e c t
0002400 , \r P u t B y t e P r o
0002420 c e d u r e , P u t P r o c e
0002440 d u r e , P u t W o r d P r o
0002460 c e d u r e , S e n d A t t e
0002500 n t i o n P r o c e d u r e , \r
0002520 S e n d N o w P r o c e
0002540 d u r e , S e t P o s i t i o
0002560 n P r o c e d u r e , S e t S
0002600 S T P r o c e d u r e , \r
0002620 W a i t A t t e n t i o n P r
0002640 o c e d u r e ] ; \r \r B W S M S
0002660 t r e a m I m p l : M O N I T
0002700 O R L O C K S s t r e a m H
0002720 a n d l e . l o c k U S I N G
0002740 s t r e a m H a n d l e : H
0002760 a n d l e \r I M P O R T S \r
0003000 B y t e B l t , F i l
0003020 e , H e a p , I n l i n e ,
0003040 M F i l e , M F i l e O p s
0003060 , S p a c e , S p e c i a l
0003100 M F i l e , S t r e a m \r
0003120 E X P O R T S M S t r e a m ,
0003140 B W S M S t r e a m O p s \r
0003160 S H A R E S F i l e = \r
0003200 B E G I N \r \r - - T y p
0003220 e s : \r \r F H a n d l e
0003240 : T Y P E = M F i l e . H
0003260 a n d l e ; \r H a n d l e :
0003300 T Y P E = B W S M S t r e
0003320 a m O p s . H a n d l e ; \r
0003340 M y H a n d l e : T Y P E =
0003360 B W S M S t r e a m O p s . M
0003400 y H a n d l e ; \r S t r e a
0003420 m O b j e c t : T Y P E =
0003440 B W S M S t r e a m O p s . S t
0003460 r e a m O b j e c t ; \r O b
0003500 j e c t : T Y P E = B W S
0003520 M S t r e a m O p s . O b j e c
0003540 t ; \r \r h e a p : U N C O
0003560 U N T E D Z O N E = H e a
0003600 p . C r e a t e U n i f o r m [
0003620 \r i n i t i a l : 2 ,
0003640 o b j e c t S i z e : S I Z
0003660 E [ S t r e a m O b j e c t ] ]
0003700 ; \r R e l e a s e D a t a :
0003720 T Y P E = M S t r e a m .
0003740 R e l e a s e D a t a ; \r l
0003760 e a d e r P a g e s : C A R D
0004000 I N A L = 1 ; \r \r E
0004020 r r o r : P U B L I C E R R
0004040 O R [ \r s t r e a m :
0004060 S t r e a m . H a n d l e ,
0004100 c o d e : M S t r e a m . E r
0004120 r o r C o d e ] = C O D E ;
0004140 \r \r - - O p e r a t i
0004160 o n s : \r \r b y t e s P e r
0004200 P a g e : C A R D I N A L =
0004220 E n v i r o n m e n t . b y t
0004240 e s P e r P a g e ; \r \r C o
0004260 n v e r t H a n d l e : P U B
0004300 L I C P R O C E D U R E [ s
0004320 t r e a m : S t r e a m . H a
0004340 n d l e ] R E T U R N S [ M
0004360 y H a n d l e ] = { \r
0004400 R E T U R N [ C o n v e r t H
0004420 a n d l e I n l i n e [ s t r e
0004440 a m ] ] } ; \r \r C o n v e r
0004460 t H a n d l e I n l i n e : P
0004500 R O C E D U R E [ s t r e a m
0004520 : S t r e a m . H a n d l e ]
0004540 R E T U R N S [ M y H a n d
0004560 l e ] = I N L I N E { \r
0004600 R E T U R N [ @ L O O P H
0004620 O L E [ s t r e a m , H a n d
0004640 l e ] . o b j e c t ] } ; \r \r
0004660 V a l i d a t e H a n d l e :
0004700 P R O C E D U R E [ s t r e
0004720 a m : S t r e a m . H a n d l
0004740 e ] R E T U R N S [ h : M
0004760 y H a n d l e ] = { \r
0005000 I F s t r e a m = N I L
0005020 T H E N E R R O R E r r o
0005040 r [ s t r e a m , i n v a l i
0005060 d H a n d l e ] ; \r h
0005100 254 C o n v e r t H a n d l e I
0005120 n l i n e [ s t r e a m ] ; \r
0005140 I F s t r e a m . g e t
0005160 P o s i t i o n # G e t I n
0005200 d e x O R h . p a s s w o r
0005220 d # B W S M S t r e a m O p
0005240 s . m S t r e a m P a s s w o r
0005260 d T H E N \r E R R
0005300 O R E r r o r [ s t r e a m ,
0005320 i n v a l i d H a n d l e ] }
0005340 ; \r \r I s I t : P U B L I
0005360 C P R O C E D U R E [ s t r
0005400 e a m : S t r e a m . H a n d
0005420 l e ] R E T U R N S [ i s i
0005440 t : B O O L E A N 254 T R U
0005460 E ] = { \r [ ] 254
0005500 V a l i d a t e H a n d l e [ s
0005520 t r e a m ! E r r o r = >
0005540 { i s i t 254 F A L S E ;
0005560 C O N T I N U E } ] } ; \r \r
0005600 C r e a t e : P U B L I C P
0005620 R O C E D U R E [ \r f
0005640 i l e : F H a n d l e , r e
0005660 l e a s e : R e l e a s e D a
0005700 t a , \r o p t i o n s :
0005720 S t r e a m . I n p u t O p t
0005740 i o n s 254 S t r e a m . d e
0005760 f a u l t I n p u t O p t i o n
0006000 s , \r s t r e a m B a s
0006020 e : F i l e . P a g e N u m b
0006040 e r 254 0 ] \r R E T U
0006060 R N S [ s t r e a m : S t r
0006100 e a m . H a n d l e ] = \r
0006120 B E G I N \r h : H
0006140 a n d l e ; \r c a p a b
0006160 i l i t y : F i l e . F i l e
0006200 254 F i l e . n u l l F i l e
0006220 ; \r r e a d , w r i t
0006240 e , s h r i n k : B O O L E
0006260 A N 254 F A L S E ; \r
0006300 f i l e P a g e s : F i l e .
0006320 P a g e C o u n t ; \r l
0006340 e n g t h : L O N G C A R D
0006360 I N A L ; \r s e t L e n
0006400 g t h : B O O L E A N 254 F
0006420 A L S E ; \r l e n g t h
0006440 254 M F i l e . G e t L e n g
0006460 t h [ f i l e ! M F i l e . E
0006500 r r o r = > E r r o r [ N I
0006520 L , i n v a l i d F i l e ] ]
0006540 ; \r c a p a b i l i t y
0006560 254 S p e c i a l M F i l e .
0006600 G e t C a p a W i t h A c c e s
0006620 s [ f i l e ! \r M
0006640 F i l e . E r r o r = > E r
0006660 r o r [ N I L , i n v a l i d
0006700 F i l e ] ] ; \r f i l e
0006720 P a g e s 254 F i l e . G e t
0006740 S i z e [ c a p a b i l i t y ]
0006760 - ( l e a d e r P a g e s
0007000 + s t r e a m B a s e ) ; \r
0007020 I F I n l i n e . H i g
0007040 h H a l f [ f i l e P a g e s ]
0007060 # 0 T H E N E R R O R
0007100 E r r o r [ N I L , f i l e T
0007120 o o L o n g ] ; \r S E L
0007140 E C T M F i l e . G e t A c c
0007160 e s s [ f i l e ] F R O M \r
0007200 w r i t e O n l y =
0007220 > w r i t e 254 s h r i n k
0007240 254 T R U E ; \r l
0007260 o g = > s e t L e n g t h
0007300 254 w r i t e 254 r e a d 254
0007320 T R U E ; \r r e a
0007340 d W r i t e = > w r i t e
0007360 254 r e a d 254 s h r i n k
0007400 254 T R U E ; \r r e
0007420 a d O n l y = > r e a d 254
0007440 T R U E ; \r E N D
0007460 C A S E ; \r h 254 h e
0007500 a p . N E W [ S t r e a m O b j
0007520 e c t 254 [ \r s t
0007540 r e a m : [ \r
0007560 g e t B y t e : G e t B y t e
0007600 , \r p u t B y t
0007620 e : P u t B y t e , \r
0007640 g e t W o r d : G e t
0007660 W o r d , \r p u
0007700 t W o r d : P u t W o r d , \r
0007720 g e t : G e t
0007740 B l o c k , \r p
0007760 u t : P u t B l o c k , \r
0010000 d e l e t e : D e
0010020 l e t e , \r s e
0010040 t S S T : S e t S S T N o p ,
0010060 \r s e n d A t t
0010100 e n t i o n : S e n d A t t e
0010120 n t i o n N o p , \r
0010140 w a i t A t t e n t i o n :
0010160 W a i t A t t e n t i o n N o
0010200 p , \r g e t P o
0010220 s i t i o n : G e t I n d e x
0010240 , \r \t s e t P o s i t i o n :
0010260 S e t I n d e x , \r \t s e n d N
0010300 o w : S e n d N o w , \r \t o p
0010320 t i o n s : o p t i o n s , \r
0010340 \t c l i e n t D a t a : N I L
0010360 ] , \r o b j e c t :
0010400 [ \r r e a d :
0010420 r e a d , \r w
0010440 r i t e : w r i t e , \r
0010460 s h r i n k : s h r
0010500 i n k , \r f i l
0010520 e P a g e s : C A R D I N A L
0010540 [ f i l e P a g e s ] , \r
0010560 l e n g t h : l e n
0010600 g t h , \r r e l
0010620 e a s e : r e l e a s e , \r
0010640 s t r e a m B a s
0010660 e : s t r e a m B a s e , \r
0010700 f i l e : f i l
0010720 e , \r c a p a :
0010740 c a p a b i l i t y , \r \t b u
0010760 f f e r S p a c e P a g e s :
0011000 l o c a l B u f f e r P a g e s
0011020 ] ] ] ; \r I F ~ h .
0011040 o b j e c t . r e a d T H E N
0011060 { \r h . s t r e a
0011100 m . g e t B y t e 254 h . s t
0011120 r e a m . g e t W o r d 254 G
0011140 e t E r r o r ; \r h
0011160 . s t r e a m . g e t 254 G e
0011200 t B l o c k E r r o r } ; \r
0011220 I F h . o b j e c t . w r
0011240 i t e T H E N { \r
0011260 I F h . o b j e c t . f i l
0011300 e P a g e s = 0 T H E N
0011320 { \r M F i l e O
0011340 p s . S e t M i n i m u m F i l
0011360 e D a t a P a g e s [ h . o b j
0011400 e c t . f i l e , 1 ] ; \r \t h
0011420 . o b j e c t . f i l e P a g e
0011440 s 254 1 } } \r E L S
0011460 E { \r h . s t r e
0011500 a m . p u t B y t e 254 L O O
0011520 P H O L E [ P u t E r r o r ] ;
0011540 \r h . s t r e a m .
0011560 p u t W o r d 254 P u t E r r
0011600 o r ; \r h . s t r e
0011620 a m . p u t 254 P u t B l o c
0011640 k E r r o r ; \r I F
0011660 h . o b j e c t . f i l e P a
0011700 g e s < h . o b j e c t . b
0011720 u f f e r S p a c e P a g e s
0011740 T H E N \r h . o
0011760 b j e c t . b u f f e r S p a c
0012000 e P a g e s 254 h . o b j e c
0012020 t . f i l e P a g e s } ; \r
0012040 I F s e t L e n g t h T
0012060 H E N { M F i l e . S e t L e
0012100 n g t h [ h . o b j e c t . f i
0012120 l e , 0 ] ; h . o b j e c t
0012140 . l e n g t h 254 0 } ; \r
0012160 S e t u p B u f f e r [ @ h
0012200 . o b j e c t , 0 ] ; \r
0012220 M F i l e . S e t R e l e a s
0012240 e D a t a [ f i l e , [ S t r
0012260 e a m R e l e a s e , h ] ] ;
0012300 \r R E T U R N [ @ h . s
0012320 t r e a m ] ; \r E N D ;
0012340 \r \r S t r e a m R e l e a s
0012360 e : M F i l e . P l e a s e R
0012400 e l e a s e P r o c = { \r
0012420 h : M y H a n d l e =
0012440 C o n v e r t H a n d l e I n
0012460 l i n e [ i n s t a n c e D a t
0012500 a ] ; \r s t r e a m H a
0012520 n d l e : H a n d l e ; \r
0012540 c : M F i l e . R e l e a
0012560 s e C h o i c e ; \r [ c
0012600 , s t r e a m H a n d l e ]
0012620 254 R e a l R e l e a s e [ f i
0012640 l e , h , i n s t a n c e D
0012660 a t a ] ; \r I F c =
0012700 g o A h e a d T H E N I n
0012720 t e r n a l D e l e t e [ h ,
0012740 @ s t r e a m H a n d l e . s t
0012760 r e a m , h . f i l e ] ; \r
0013000 R E T U R N [ c ] } ; \r
0013020 \r R e a l R e l e a s
0013040 e : E N T R Y P R O C E D U
0013060 R E [ \r f i l e : M
0013100 F i l e . H a n d l e , h :
0013120 M y H a n d l e , s t r e a m
0013140 H a n d l e : H a n d l e ]
0013160 \r R E T U R N S [ c :
0013200 M F i l e . R e l e a s e C h
0013220 o i c e , s : H a n d l e ]
0013240 = { \r E N A B L E
0013260 U N W I N D = > N U L L ;
0013300 \r I F h . r e l e
0013320 a s e . p r o c = N I L T
0013340 H E N R E T U R N [ n o , s
0013360 t r e a m H a n d l e ] ; \r
0013400 I F h . f i l e = N
0013420 I L T H E N R E T U R N [ l
0013440 a t e r , s t r e a m H a n d
0013460 l e ] ; \r c 254 h .
0013500 r e l e a s e . p r o c [ @ s t
0013520 r e a m H a n d l e . s t r e a
0013540 m , h . r e l e a s e . c l i
0013560 e n t I n s t a n c e D a t a ]
0013600 ; \r R E T U R N [ c ,
0013620 s t r e a m H a n d l e ] } ;
0013640 \r \r D o n t R e l e a s
0013660 e : P U B L I C M S t r e a
0013700 m . P l e a s e R e l e a s e P
0013720 r o c = { R E T U R N [ n o
0013740 ] } ; \r \r M a k e F i l
0013760 e : P R O C E D U R E [ \r
0014000 n a m e : L O N G S T
0014020 R I N G , a c c e s s : M F
0014040 i l e . A c c e s s , t y p e
0014060 : M F i l e . T y p e 254 u
0014100 n k n o w n ] \r R E T U
0014120 R N S [ f i l e : M F i l e
0014140 . H a n d l e ] = { \r
0014160 f i l e 254 M F i l e . A c
0014200 q u i r e [ n a m e , a c c e
0014220 s s , [ ] , \r I
0014240 F a c c e s s = r e a d O
0014260 n l y T H E N F A L S E E
0014300 L S E T R U E , M F i l e .
0014320 d o n t C a r e , t y p e !
0014340 \r M F i l e . E r
0014360 r o r = > E r r o r [ N I L
0014400 , f i l e N o t A v a i l a b
0014420 l e ] ] } ; \r \r N o t I
0014440 m p l e m e n t e d : E R R O
0014460 R = C O D E ; \r \r
0014500 L o g : P U B L I C P R O
0014520 C E D U R E [ n a m e : L O
0014540 N G S T R I N G , r e l e a
0014560 s e : R e l e a s e D a t a ]
0014600 \r R E T U R N S [ S t
0014620 r e a m . H a n d l e ] = {
0014640 E R R O R N o t I m p l e m e
0014660 n t e d } ; \r \r R e
0014700 a d O n l y : P U B L I C P
0014720 R O C E D U R E [ n a m e :
0014740 L O N G S T R I N G , r e l
0014760 e a s e : R e l e a s e D a t
0015000 a ] \r R E T U R N S [
0015020 S t r e a m . H a n d l e ] =
0015040 { \r R E T U R N [ C r
0015060 e a t e [ M a k e F i l e [ n a
0015100 m e , r e a d O n l y ] , r
0015120 e l e a s e ] ] } ; \r \r
0015140 R e a d W r i t e : P U B
0015160 L I C P R O C E D U R E [ \r
0015200 n a m e : L O N G S
0015220 T R I N G , r e l e a s e :
0015240 R e l e a s e D a t a , t y p
0015260 e : M F i l e . T y p e 254
0015300 u n k n o w n ] \r R E T
0015320 U R N S [ S t r e a m . H a n
0015340 d l e ] = { \r R E T
0015360 U R N [ C r e a t e [ M a k e F
0015400 i l e [ n a m e , r e a d W r
0015420 i t e , t y p e ] , r e l e
0015440 a s e ] ] } ; \r \r W
0015460 r i t e O n l y : P U B L I C
0015500 P R O C E D U R E [ \r
0015520 n a m e : L O N G S T R I
0015540 N G , r e l e a s e : R e l
0015560 e a s e D a t a , t y p e :
0015600 M F i l e . T y p e 254 u n k
0015620 n o w n ] \r R E T U R N
0015640 S [ S t r e a m . H a n d l e
0015660 ] = { \r R E T U R N
0015700 [ C r e a t e [ M a k e F i l e
0015720 [ n a m e , w r i t e O n l y
0015740 , t y p e ] , r e l e a s e
0015760 ] ] } ; \r \r G e t R e l
0016000 e a s e D a t a : P U B L I C
0016020 P R O C E D U R E [ s t r e
0016040 a m : M S t r e a m . H a n d
0016060 l e ] R E T U R N S [ R e l
0016100 e a s e D a t a ] = \r
0016120 { R E T U R N [ R e a l G e t R
0016140 e l e a s e D a t a [ V a l i d
0016160 a t e H a n d l e [ s t r e a m
0016200 ] , L O O P H O L E [ s t r e
0016220 a m ] ] ] } ; \r \r R e a l G
0016240 e t R e l e a s e D a t a : E
0016260 N T R Y P R O C E D U R E [
0016300 h : M y H a n d l e , s t r
0016320 e a m H a n d l e : H a n d l
0016340 e ] R E T U R N S [ R e l e
0016360 a s e D a t a ] = \r {
0016400 R E T U R N [ h . r e l e a s e
0016420 ] } ; \r \r S e t R e l e a s
0016440 e D a t a : P U B L I C P R
0016460 O C E D U R E [ \r s t
0016500 r e a m : M S t r e a m . H a
0016520 n d l e , r e l e a s e : R
0016540 e l e a s e D a t a ] = { \r
0016560 h : M y H a n d l e
0016600 = V a l i d a t e H a n d l e
0016620 [ s t r e a m ] ; \r R e
0016640 a l S e t R e l e a s e D a t a
0016660 [ h , L O O P H O L E [ s t r
0016700 e a m ] , r e l e a s e ] } ;
0016720 \r \r R e a l S e t R e l e a
0016740 s e D a t a : E N T R Y P R
0016760 O C E D U R E [ h : M y H a
0017000 n d l e , s t r e a m H a n d
0017020 l e : H a n d l e , r e l e
0017040 a s e : R e l e a s e D a t a
0017060 ] = \r { h . r e l e a
0017100 s e 254 r e l e a s e } ; \r \r
0017120 B a c k u p L o g : P U B
0017140 L I C P R O C E D U R E [ s
0017160 t r e a m : M S t r e a m . H
0017200 a n d l e , c o u n t : M F
0017220 i l e . B y t e C o u n t ] \r
0017240 R E T U R N S [ b a c
0017260 k e d U p : M F i l e . B y t
0017300 e C o u n t ] = { E R R O R
0017320 N o t I m p l e m e n t e d }
0017340 ; \r \r S e t L o g R e a d L
0017360 e n g t h : P U B L I C P R
0017400 O C E D U R E [ \r s t
0017420 r e a m : M S t r e a m . H a
0017440 n d l e , p o s i t i o n :
0017460 L O N G I N T E G E R ] =
0017500 { \r E R R O R N o t I
0017520 m p l e m e n t e d } ; \r \r
0017540 S e t A c c e s s : P U B L I
0017560 C P R O C E D U R E [ s t r
0017600 e a m : M S t r e a m . H a n
0017620 d l e , a c c e s s : M F i
0017640 l e . A c c e s s ] = \r
0017660 B E G I N \r h : M y
0017700 H a n d l e = V a l i d a t
0017720 e H a n d l e [ s t r e a m ] ;
0017740 \r S E L E C T a c c e
0017760 s s F R O M \r w
0020000 r i t e O n l y , l o g , r
0020020 e a d W r i t e , r e a d O n
0020040 l y = > N U L L ; \r
0020060 E N D C A S E = > E r r
0020100 o r [ s t r e a m , i n v a l
0020120 i d O p e r a t i o n ] ; \r
0020140 C l e a n u p [ h , h . f
0020160 i l e ] ; \r M F i l e .
0020200 S e t A c c e s s [ h . f i l e
0020220 , a c c e s s ! \r
0020240 M F i l e . E r r o r = >
0020260 E r r o r [ s t r e a m , f
0020300 i l e N o t A v a i l a b l e ]
0020320 ] ; - - c a t c h e r r o
0020340 r s ? \r h . c a p a 254
0020360 S p e c i a l M F i l e . G e
0020400 t C a p a W i t h A c c e s s [
0020420 h . f i l e ! \r M
0020440 F i l e . E r r o r = > E r
0020460 r o r [ s t r e a m , i n v a
0020500 l i d F i l e ] ] ; \r h
0020520 . r e a d 254 a c c e s s #
0020540 w r i t e O n l y A N D a
0020560 c c e s s # l o g ; \r
0020600 h . w r i t e 254 a c c e s
0020620 s # r e a d O n l y ; \r
0020640 I F h . r e a d T H E N
0020660 { \r s t r e a m .
0020700 g e t B y t e 254 G e t B y t
0020720 e ; \r s t r e a m .
0020740 g e t W o r d 254 G e t W o r
0020760 d ; \r s t r e a m .
0021000 g e t 254 G e t B l o c k } \r
0021020 E L S E { \r
0021040 s t r e a m . g e t B y t e
0021060 254 G e t E r r o r ; \r
0021100 s t r e a m . g e t W o r d
0021120 254 G e t E r r o r ; \r
0021140 s t r e a m . g e t 254
0021160 G e t B l o c k E r r o r } ; \r
0021200 I F h . w r i t e T
0021220 H E N { \r s t r e
0021240 a m . p u t B y t e 254 P u t
0021260 B y t e ; \r s t r e
0021300 a m . p u t W o r d 254 P u t
0021320 W o r d ; \r s t r e
0021340 a m . p u t 254 P u t B l o c
0021360 k } \r E L S E { \r
0021400 s t r e a m . p u t B y
0021420 t e 254 L O O P H O L E [ P u
0021440 t E r r o r ] ; \r s
0021460 t r e a m . p u t W o r d 254
0021500 P u t E r r o r ; \r
0021520 s t r e a m . p u t 254 P u t
0021540 B l o c k E r r o r } ; \r
0021560 S E L E C T a c c e s s F
0021600 R O M \r r e a d O n
0021620 l y = > S p a c e . M a k e
0021640 R e a d O n l y [ h . b u f f e
0021660 r S p a c e ] ; \r E
0021700 N D C A S E = > { \r
0021720 d e s i r e d P a g e s
0021740 : C A R D I N A L = l o c
0021760 a l B u f f e r P a g e s ; \r \t
0022000 I F h . b u f f e r S p a c e
0022020 P a g e s # d e s i r e d P
0022040 a g e s T H E N { \r \t I
0022060 F h . b u f f e r S p a c e P
0022100 a g e s # 0 T H E N { \r
0022120 [ ] 254
0022140 S p a c e . U n m a p A t [ h
0022160 . b u f f e r S p a c e . p o i
0022200 n t e r ] ; \r
0022220 S p a c e . D e a l l o c
0022240 a t e [ h . b u f f e r S p a c
0022260 e ] } ; \r \t h . b u f f e
0022300 r 254 N I L ; \r \t h . b u
0022320 f f e r S p a c e P a g e s 254
0022340 d e s i r e d P a g e s ; \r \t
0022360 S e t u p B u f f e r [ h ,
0022400 h . f i r s t F i l e P a g e
0022420 I n B u f f e r ] } \r \t E L S E
0022440 S p a c e . M a k e W r i t a
0022460 b l e [ h . b u f f e r S p a c
0022500 e ] } ; \r E N D ; \r \r
0022520 - - G e n e r i c S t r e
0022540 a m p r o c e d u r e s ; a
0022560 s s u m e h a n d l e o k \r
0022600 \r G e t B y t e : P R O C
0022620 E D U R E [ s t r e a m : S
0022640 t r e a m . H a n d l e ] R E
0022660 T U R N S [ b y t e : U N S
0022700 P E C I F I E D [ 0 . . 2 5 6 )
0022720 ] = \r B E G I N \r
0022740 h : M y H a n d l e 254
0022760 C o n v e r t H a n d l e I n l
0023000 i n e [ s t r e a m ] ; \r
0023020 W H I L E h . i n d e x =
0023040 h . d a t a B y t e s I n B u
0023060 f f e r D O \r I F
0023100 h . e o f I n B u f f e r T
0023120 H E N { S I G N A L S t r e
0023140 a m . E n d O f S t r e a m [ 0
0023160 ] ; R E T U R N [ 0 ] } ; \r
0023200 A d v a n c e B u f f
0023220 e r [ h ] ; \r E N D
0023240 L O O P ; \r b y t e 254
0023260 h . b u f f e r [ h . i n d e
0023300 x ] ; \r h . i n d e x
0023320 254 h . i n d e x + 1 ; \r
0023340 R E T U R N \r E N
0023360 D ; \r \r G e t I n d e x :
0023400 S t r e a m . G e t P o s i t i
0023420 o n P r o c e d u r e = { \r
0023440 h : M y H a n d l e
0023460 = C o n v e r t H a n d l e I
0023500 n l i n e [ s H ] ; \r p
0023520 o s i t i o n 254 I n l i n e
0023540 . L o n g M u l t [ h . f i r s
0023560 t F i l e P a g e I n B u f f e
0023600 r , b y t e s P e r P a g e ]
0023620 + h . i n d e x } ; \r \r
0023640 G e t W o r d : P R O C E D U
0023660 R E [ s t r e a m : S t r e
0023700 a m . H a n d l e ] R E T U R
0023720 N S [ U N S P E C I F I E D ]
0023740 = \r B E G I N \r
0023760 t : U N S P E C I F I E D
0024000 = C A R D I N A L [ G e t B y
0024020 t e [ s t r e a m ] ] * 2 5
0024040 6 ; \r R E T U R N [ t
0024060 + G e t B y t e [ s t r e a m
0024100 ] ] \r E N D ; \r \r G
0024120 e t E r r o r : P R O C E D U
0024140 R E [ s t r e a m : S t r e
0024160 a m . H a n d l e ] R E T U R
0024200 N S [ U N S P E C I F I E D ]
0024220 = { \r E R R O R E
0024240 r r o r [ s t r e a m , i n v
0024260 a l i d O p e r a t i o n ] } ;
0024300 \r \r P u t B y t e : S t r
0024320 e a m . P u t B y t e P r o c e
0024340 d u r e = { \r h :
0024360 M y H a n d l e = C o n v e
0024400 r t H a n d l e I n l i n e [ s
0024420 H ] ; \r W H I L E h .
0024440 i n d e x = h . d a t a B y
0024460 t e s I n B u f f e r D O \r
0024500 I F h . d a t a B y
0024520 t e s I n B u f f e r = h .
0024540 b u f f e r B y t e s T H E N
0024560 A d v a n c e B u f f e r [ h
0024600 ] \r E L S E \r
0024620 B E G I N \r
0024640 h . d a t a B y t e s I n
0024660 B u f f e r 254 h . d a t a B
0024700 y t e s I n B u f f e r + 1
0024720 ; \r \t h . l e n g t h 254 h .
0024740 l e n g t h + 1 ; \r
0024760 h . l e n g t h C h a n
0025000 g e d 254 T R U E ; \r
0025020 E N D ; \r E
0025040 N D L O O P ; \r h . b u
0025060 f f e r [ h . i n d e x ] 254
0025100 b y t e ; \r h . i n d e
0025120 x 254 h . i n d e x + 1 }
0025140 ; \r \r P u t W o r d : S t
0025160 r e a m . P u t W o r d P r o c
0025200 e d u r e = { \r P u
0025220 t B y t e [ s H , C A R D I N
0025240 A L [ w o r d ] / 2 5 6 ] ;
0025260 P u t B y t e [ s H , C A R
0025300 D I N A L [ w o r d ] M O D
0025320 2 5 6 ] } ; \r \r P u t E r r
0025340 o r : S t r e a m . P u t W o
0025360 r d P r o c e d u r e = { E
0025400 R R O R E r r o r [ s H , i
0025420 n v a l i d O p e r a t i o n ]
0025440 } ; \r \r S e t I n d e x :
0025460 S t r e a m . S e t P o s i t i
0025500 o n P r o c e d u r e = { \r
0025520 h : M y H a n d l e
0025540 = C o n v e r t H a n d l e I
0025560 n l i n e [ s H ] ; \r f
0025600 i l e P a g e , b y t e : C
0025620 A R D I N A L ; \r b u f
0025640 f e r P a g e : C A R D I N A
0025660 L = h . f i r s t F i l e P
0025700 a g e I n B u f f e r ; \r
0025720 o l d F i l e P a g e s : C
0025740 A R D I N A L = h . f i l e
0025760 P a g e s ; \r b u f f e
0026000 r P a g e s : C A R D I N A L
0026020 = h . b u f f e r B y t e s
0026040 / b y t e s P e r P a g e ; \r
0026060 s e t u p O f f s e t :
0026100 C A R D I N A L = l o c a l
0026120 O f f s e t ; \r I F (
0026140 I n l i n e . L o n g M u l t [
0026160 b u f f e r P a g e , b y t e
0026200 s P e r P a g e ] + h . i n
0026220 d e x ) = p o s i t i o n
0026240 T H E N \r R E T U R
0026260 N ; \r I F I n l i n e
0026300 . H i g h H a l f [ p o s i t i
0026320 o n ] > = b y t e s P e r P
0026340 a g e T H E N G O T O O u
0026360 t O f R a n g e ; \r [ f
0026400 i l e P a g e , b y t e ] 254
0026420 I n l i n e . L o n g D i v M
0026440 o d [ p o s i t i o n , b y t
0026460 e s P e r P a g e ] ; \r
0026500 I F h . b u f f e r = N I
0026520 L O R f i l e P a g e ~ I
0026540 N [ b u f f e r P a g e . . b u
0026560 f f e r P a g e + b u f f e r P
0026600 a g e s ) T H E N \r
0026620 B E G I N \r g r o
0026640 w F i l e : B O O L E A N ; \r
0026660 I F p o s i t i o
0026700 n > h . l e n g t h T H E
0026720 N { \r I F ~
0026740 h . w r i t e T H E N G O T
0026760 O O u t O f R a n g e ; \r
0027000 h . f i l e P a g e
0027020 s 254 f i l e P a g e + g
0027040 r o w I n c r e m e n t ; \r \t g
0027060 r o w F i l e 254 T R U E ; \r
0027100 \t h . l e n g t h 254 p o s i
0027120 t i o n ; \r \t h . l e n g t h C
0027140 h a n g e d 254 T R U E } \r
0027160 E L S E g r o w F i
0027200 l e 254 F A L S E ; \r
0027220 S e t u p B u f f e r [ h ,
0027240 M A X [ f i l e P a g e , s
0027260 e t u p O f f s e t ] - s e t u
0027300 p O f f s e t , g r o w F i l
0027320 e ! \r U N W I
0027340 N D = > h . f i l e P a g e
0027360 s 254 o l d F i l e P a g e s
0027400 ] ; \r E N D \r
0027420 E L S E I F p o s i t i o
0027440 n > h . l e n g t h A N D
0027460 ~ h . w r i t e T H E N G
0027500 O T O O u t O f R a n g e ; \r
0027520 h . i n d e x 254 \r
0027540 ( f i l e P a g e - h .
0027560 f i r s t F i l e P a g e I n B
0027600 u f f e r ) * b y t e s P e
0027620 r P a g e + b y t e ; \r
0027640 I F h . i n d e x > h
0027660 . d a t a B y t e s I n B u f f
0027700 e r T H E N { \r
0027720 h . d a t a B y t e s I n B u f
0027740 f e r 254 h . i n d e x ; \r
0027760 h . l e n g t h 254
0030000 C o m p u t e L e n g t h [ h ]
0030020 ; \r h . l e n g t h
0030040 C h a n g e d 254 T R U E } ;
0030060 \r R E T U R N ; \r
0030100 E X I T S O u t O f R a n g
0030120 e = > E R R O R E r r o r
0030140 [ s H , i n d e x O u t O f R
0030160 a n g e ] } ; \r \r G e t B l
0030200 o c k : S t r e a m . G e t P
0030220 r o c e d u r e = \r B
0030240 E G I N \r h : M y H a
0030260 n d l e = C o n v e r t H a
0030300 n d l e I n l i n e [ s H ] ; \r
0030320 b u f f e r B l o c k :
0030340 E n v i r o n m e n t . B l o
0030360 c k ; \r c o u n t R e m
0030400 a i n i n g : C A R D I N A L
0030420 254 b l o c k . s t o p I n d
0030440 e x P l u s O n e - b l o c k .
0030460 s t a r t I n d e x ; \r
0030500 c o u n t T r a n s f e r r e d
0030520 : C A R D I N A L ; \r
0030540 s s t 254 0 ; \r b y t
0030560 e s T r a n s f e r r e d 254
0030600 0 ; \r w h y 254 n o r
0030620 m a l ; \r W H I L E c
0030640 o u n t R e m a i n i n g #
0030660 0 D O \r b u f f e
0030700 r B l o c k 254 [ \r
0030720 b l o c k P o i n t e r :
0030740 h . b u f f e r , \r
0030760 s t a r t I n d e x : h
0031000 . i n d e x , \r
0031020 s t o p I n d e x P l u s O n e
0031040 : h . d a t a B y t e s I n B
0031060 u f f e r ] ; \r c o
0031100 u n t T r a n s f e r r e d 254
0031120 B y t e B l t . B y t e B l t
0031140 [ f r o m : b u f f e r B l o
0031160 c k , t o : b l o c k ] ; \r
0031200 h . i n d e x 254
0031220 h . i n d e x + c o u n t T
0031240 r a n s f e r r e d ; \r
0031260 b y t e s T r a n s f e r r
0031300 e d 254 b y t e s T r a n s f
0031320 e r r e d + c o u n t T r a
0031340 n s f e r r e d ; \r
0031360 I F ( c o u n t R e m a i n i
0031400 n g 254 c o u n t R e m a i n
0031420 i n g - c o u n t T r a n s
0031440 f e r r e d ) = 0 T H E N
0031460 E X I T ; \r I F
0031500 h . e o f I n B u f f e r T H
0031520 E N \r B E G I N
0031540 \r I F o p t i
0031560 o n s . s i g n a l E n d O f S
0031600 t r e a m T H E N \r
0031620 S I G N A L S t r e
0031640 a m . E n d O f S t r e a m [ b
0031660 l o c k . s t a r t I n d e x +
0031700 c o u n t T r a n s f e r r e d
0031720 ] ; \r w h y 254
0031740 e n d O f S t r e a m ; \r
0031760 E X I T \r
0032000 E N D ; \r b l
0032020 o c k . s t a r t I n d e x 254
0032040 b l o c k . s t a r t I n d e
0032060 x + c o u n t T r a n s f e
0032100 r r e d ; \r A d v a
0032120 n c e B u f f e r [ h ] ; \r
0032140 E N D L O O P ; \r
0032160 R E T U R N \r E N D ;
0032200 \r \r G e t B l o c k E r r o
0032220 r : S t r e a m . G e t P r o
0032240 c e d u r e = { E R R O R
0032260 E r r o r [ s H , i n v a l i
0032300 d O p e r a t i o n ] } ; \r \r
0032320 P u t B l o c k : S t r e a
0032340 m . P u t P r o c e d u r e =
0032360 \r B E G I N \r h
0032400 : M y H a n d l e = C o n
0032420 v e r t H a n d l e I n l i n e
0032440 [ s H ] ; \r b u f f e r
0032460 B l o c k : E n v i r o n m e
0032500 n t . B l o c k ; \r c o
0032520 u n t R e m a i n i n g : C A
0032540 R D I N A L 254 b l o c k . s
0032560 t o p I n d e x P l u s O n e -
0032600 b l o c k . s t a r t I n d e x
0032620 ; \r c o u n t T r a n s
0032640 f e r r e d : C A R D I N A L
0032660 ; \r W H I L E c o u n
0032700 t R e m a i n i n g # 0 D
0032720 O \r b u f f e r B l
0032740 o c k 254 [ \r
0032760 b l o c k P o i n t e r : h .
0033000 b u f f e r , \r
0033020 s t a r t I n d e x : h . i n
0033040 d e x , \r s t o
0033060 p I n d e x P l u s O n e : h
0033100 . b u f f e r B y t e s ] ; \r
0033120 c o u n t T r a n s f
0033140 e r r e d 254 B y t e B l t .
0033160 B y t e B l t [ f r o m : b l
0033200 o c k , t o : b u f f e r B
0033220 l o c k ] ; \r h . i
0033240 n d e x 254 h . i n d e x +
0033260 c o u n t T r a n s f e r r e
0033300 d ; \r I F h . e o
0033320 f I n B u f f e r A N D h .
0033340 i n d e x > h . d a t a B y
0033360 t e s I n B u f f e r T H E N
0033400 { \r \t h . d a t a B y t e s I
0033420 n B u f f e r 254 h . i n d e
0033440 x ; \r \t h . l e n g t h 254 C
0033460 o m p u t e L e n g t h [ h ] ;
0033500 \r \t h . l e n g t h C h a n g e
0033520 d 254 T R U E } ; \r
0033540 I F ( c o u n t R e m a i n
0033560 i n g 254 c o u n t R e m a i
0033600 n i n g - c o u n t T r a n
0033620 s f e r r e d ) = 0 T H E
0033640 N E X I T ; \r I F
0033660 h . e o f I n B u f f e r T
0033700 H E N { \r h .
0033720 d a t a B y t e s I n B u f f e
0033740 r 254 h . b u f f e r B y t e
0033760 s ; \r \t h . l e n g t h 254 C
0034000 o m p u t e L e n g t h [ h ] ;
0034020 \r \t h . l e n g t h C h a n g e
0034040 d 254 T R U E } ; \r
0034060 b l o c k . s t a r t I n d e
0034100 x 254 b l o c k . s t a r t I
0034120 n d e x + c o u n t T r a n
0034140 s f e r r e d ; \r A
0034160 d v a n c e B u f f e r [ h ] ;
0034200 \r E N D L O O P ; \r
0034220 I F e n d R e c o r d
0034240 T H E N C l e a n u p [ h ,
0034260 h . f i l e ] ; \r R E
0034300 T U R N \r E N D ; \r \r
0034320 P u t B l o c k E r r o r :
0034340 S t r e a m . P u t P r o c e d
0034360 u r e = { E R R O R E r r
0034400 o r [ s H , i n v a l i d O p
0034420 e r a t i o n ] } ; \r \r S e
0034440 n d N o w : S t r e a m . S e
0034460 n d N o w P r o c e d u r e =
0034500 \r B E G I N \r h
0034520 : M y H a n d l e = C o n
0034540 v e r t H a n d l e I n l i n e
0034560 [ s H ] ; \r I F e n d
0034600 R e c o r d T H E N C l e a
0034620 n u p [ h , h . f i l e ] ; \r
0034640 R E T U R N \r E
0034660 N D ; \r \r D e l e t e : P
0034700 R O C E D U R E [ s t r e a m
0034720 : S t r e a m . H a n d l e ]
0034740 = { \r h : M y H a
0034760 n d l e = C o n v e r t H a
0035000 n d l e I n l i n e [ s t r e a
0035020 m ] ; \r c o p y : M F
0035040 i l e . H a n d l e 254 N I L
0035060 ; \r C h e c k D e l e t
0035100 e : E N T R Y P R O C E D U
0035120 R E [ s t r e a m H a n d l e
0035140 : H a n d l e ] = { \r
0035160 c o p y 254 h . f i l
0035200 e ; \r h . f i l e
0035220 254 N I L } ; \r B E G I
0035240 N E N A B L E M F i l e . E
0035260 r r o r = > I F c o d e
0035300 = c o u r i e r E r r o r T
0035320 H E N G O T O r e m o t e E
0035340 r r o r ; \r C h e c k D
0035360 e l e t e [ L O O P H O L E [ s
0035400 t r e a m ] ] ; \r I F
0035420 c o p y # N I L T H E N
0035440 { I n t e r n a l D e l e t e [
0035460 h , s t r e a m , c o p y ]
0035500 ; M F i l e . R e l e a s e [
0035520 c o p y ] } ; \r E X I T
0035540 S r e m o t e E r r o r = >
0035560 N U L L ; \r E N D ; \r
0035600 } ; \r \r I n t e r n
0035620 a l D e l e t e : P R O C E D
0035640 U R E [ \r h : M y H
0035660 a n d l e , s t r e a m : S
0035700 t r e a m . H a n d l e , f i
0035720 l e : M F i l e . H a n d l e
0035740 ] = { \r i n d e x :
0035760 L O N G C A R D I N A L 254
0036000 s t r e a m . g e t P o s i t
0036020 i o n [ s t r e a m ] ; \r
0036040 B E G I N E N A B L E M F
0036060 i l e . E r r o r = > I F
0036100 c o d e = c o u r i e r E r
0036120 r o r T H E N G O T O r e
0036140 m o t e E r r o r ; \r E
0036160 m p t y B u f f e r [ h , T R
0036200 U E , f i l e ] ; \r I
0036220 F ~ h . r e a d 253 A N D i
0036240 n d e x # 0 273 T H E N M
0036260 F i l e . S e t L e n g t h [ f
0036300 i l e , i n d e x ] ; \r
0036320 E X I T S r e m o t e E r r
0036340 o r = > N U L L ; \r
0036360 E N D ; \r L O O P H O L
0036400 E [ s t r e a m , L O N G P
0036420 O I N T E R T O W O R D ] 255
0036440 254 0 ; \r I n l i n e
0036460 . L o n g C O P Y [ f r o m :
0036500 s t r e a m , t o : s t r e
0036520 a m + 1 , n w o r d s :
0036540 S I Z E [ S t r e a m O b j e c
0036560 t ] - 1 ] ; \r h e a
0036600 p . F R E E [ @ s t r e a m ] }
0036620 ; \r \r S e t S S T N o p :
0036640 S t r e a m . S e t S S T P r o
0036660 c e d u r e = { } ; \r \r
0036700 S e n d A t t e n t i o n N o p
0036720 : S t r e a m . S e n d A t t
0036740 e n t i o n P r o c e d u r e
0036760 = { } ; \r \r W a i t A t t
0037000 e n t i o n N o p : S t r e a
0037020 m . W a i t A t t e n t i o n P
0037040 r o c e d u r e = { R E T U
0037060 R N [ 0 ] } ; \r \r - - F i
0037100 l e S t r e a m s p e c i f i
0037120 c p r o c e d u r e s ; m u
0037140 s t v a l i d a t e h a n d
0037160 l e \r \r C o p y : P U B L
0037200 I C P R O C E D U R E [ f r
0037220 o m , t o : S t r e a m . H
0037240 a n d l e , b y t e s : L O
0037260 N G C A R D I N A L ] \r
0037300 R E T U R N S [ b y t e s C
0037320 o p i e d : L O N G C A R D
0037340 I N A L ] = { \r b u
0037360 f f e r B l o c k : E n v i r
0037400 o n m e n t . B l o c k ; \r
0037420 b y t e s T o T r a n s f e
0037440 r : C A R D I N A L ; \r
0037460 f r o m H , t o H : M y H
0037500 a n d l e 254 N I L ; \r
0037520 f r o m H 254 V a l i d a t
0037540 e H a n d l e [ f r o m ! E
0037560 r r o r = > C O N T I N U E
0037600 ] ; \r t o H 254 V a l
0037620 i d a t e H a n d l e [ t o !
0037640 E r r o r = > C O N T I N
0037660 U E ] ; \r b y t e s C o
0037700 p i e d 254 0 ; \r S E
0037720 L E C T T R U E F R O M \r
0037740 f r o m H # N I L
0037760 = > { \r W H
0040000 I L E b y t e s # 0 D O
0040020 \r \t b y t e s T o T r a n s
0040040 f e r 254 f r o m H . d a t a
0040060 B y t e s I n B u f f e r -
0040100 f r o m H . i n d e x ; \r \t
0040120 I F b y t e s T o T r a n s f
0040140 e r > b y t e s T H E N
0040160 b y t e s T o T r a n s f e r
0040200 254 I n l i n e . L o w H a l f
0040220 [ b y t e s ] ; \r \t b u f f
0040240 e r B l o c k 254 [ \r \t
0040260 b l o c k P o i n t e r : f
0040300 r o m H . b u f f e r , \r \t
0040320 s t a r t I n d e x : f r
0040340 o m H . i n d e x , \r \t
0040360 s t o p I n d e x P l u s O n e
0040400 : f r o m H . i n d e x +
0040420 b y t e s T o T r a n s f e r ]
0040440 ; \r \t I F b u f f e r B l
0040460 o c k . s t a r t I n d e x #
0040500 b u f f e r B l o c k . s t o
0040520 p I n d e x P l u s O n e T H
0040540 E N \r \t t o . p u t [ t
0040560 o , b u f f e r B l o c k ,
0040600 F A L S E ] ; \r \t f r o m H
0040620 . i n d e x 254 f r o m H . i
0040640 n d e x + b y t e s T o T r
0040660 a n s f e r ; \r \t b y t e s
0040700 254 b y t e s - b y t e s
0040720 T o T r a n s f e r ; \r \t b
0040740 y t e s C o p i e d 254 b y t
0040760 e s C o p i e d + b y t e s
0041000 T o T r a n s f e r ; \r \t I
0041020 F b y t e s = 0 O R f
0041040 r o m H . e o f I n B u f f e r
0041060 T H E N R E T U R N ; \r \t
0041100 A d v a n c e B u f f e r [ f
0041120 r o m H ] ; \r \t E N D L O O
0041140 P } ; \r t o H #
0041160 N I L = > { \r
0041200 b y t e s T r a n s f e r r e
0041220 d : C A R D I N A L ; \r \t w h
0041240 y : S t r e a m . C o m p l e
0041260 t i o n C o d e ; \r \t W H I L E
0041300 b y t e s # 0 D O \r \t
0041320 b y t e s T o T r a n s f e r
0041340 254 t o H . b u f f e r B y t
0041360 e s - t o H . i n d e x ; \r
0041400 \t I F b y t e s T o T r a
0041420 n s f e r > b y t e s T H
0041440 E N b y t e s T o T r a n s f
0041460 e r 254 I n l i n e . L o w H
0041500 a l f [ b y t e s ] ; \r \t b
0041520 u f f e r B l o c k 254 [ \r \t
0041540 b l o c k P o i n t e r
0041560 : t o H . b u f f e r , \r \t
0041600 s t a r t I n d e x : t
0041620 o H . i n d e x , \r \t s
0041640 t o p I n d e x P l u s O n e :
0041660 t o H . i n d e x + b y t
0041700 e s T o T r a n s f e r ] ; \r \t
0041720 [ b y t e s T r a n s f e r
0041740 r e d , w h y , ] 254 f r
0041760 o m . g e t [ \r \t f r o
0042000 m , b u f f e r B l o c k ,
0042020 S t r e a m . d e f a u l t I n
0042040 p u t O p t i o n s ] ; \r \t
0042060 I F w h y = s s t C h a n
0042100 g e T H E N \r \t E R R
0042120 O R E r r o r [ f r o m , o
0042140 t h e r ] ; \r \t t o H . i n
0042160 d e x 254 t o H . i n d e x
0042200 + b y t e s T r a n s f e r r
0042220 e d ; \r \t b y t e s 254 b
0042240 y t e s - b y t e s T r a n
0042260 s f e r r e d ; \r \t b y t e
0042300 s C o p i e d 254 b y t e s C
0042320 o p i e d + b y t e s T r a
0042340 n s f e r r e d ; \r \t I F
0042360 t o H . e o f I n B u f f e r
0042400 A N D t o H . i n d e x >
0042420 t o H . d a t a B y t e s I n B
0042440 u f f e r T H E N { \r \t
0042460 t o H . d a t a B y t e s I
0042500 n B u f f e r 254 t o H . i n
0042520 d e x ; \r \t t o H . l e
0042540 n g t h 254 C o m p u t e L e
0042560 n g t h [ t o H ] ; \r \t
0042600 t o H . l e n g t h C h a n g e
0042620 d 254 T R U E } ; \r \t I F
0042640 b y t e s = 0 O R w h
0042660 y = e n d O f S t r e a m
0042700 T H E N R E T U R N ; \r \t
0042720 I F t o H . b u f f e r B y t
0042740 e s = t o H . i n d e x T
0042760 H E N { \r \t I F t o
0043000 H . e o f I n B u f f e r T H
0043020 E N { \r
0043040 t o H . d a t a B y t e s
0043060 I n B u f f e r 254 t o H . b
0043100 u f f e r B y t e s ; \r \t
0043120 t o H . l e n g t h 254
0043140 C o m p u t e L e n g t h [ t o
0043160 H ] ; \r \t t o H . l
0043200 e n g t h C h a n g e d 254 T
0043220 R U E } ; \r
0043240 A d v a n c e B u f f e r [
0043260 t o H ] } ; \r \t E N D L O O
0043300 P } ; \r E N D C A S
0043320 E = > E R R O R E r r o r
0043340 [ f r o m , i n v a l i d H a
0043360 n d l e ] } ; \r \r S h a
0043400 r e B l o c k : P U B L I C
0043420 P R O C E D U R E [ \r
0043440 s t r e a m : S t r e a m . H
0043460 a n d l e , s t a r t : L O
0043500 N G C A R D I N A L , l e n
0043520 g t h : C A R D I N A L ] \r
0043540 R E T U R N S [ b l o c
0043560 k : E n v i r o n m e n t . B
0043600 l o c k ] = { \r h :
0043620 M y H a n d l e = V a l i
0043640 d a t e H a n d l e [ s t r e a
0043660 m ] ; \r S e t I n d e x
0043700 [ s t r e a m , s t a r t ] ;
0043720 \r I F ~ h . e o f I n
0043740 B u f f e r A N D h . i n d
0043760 e x = h . d a t a B y t e s
0044000 I n B u f f e r T H E N A d
0044020 v a n c e B u f f e r [ h ] ; \r
0044040 b l o c k 254 [ \r
0044060 b l o c k P o i n t e r
0044100 : h . b u f f e r , \r
0044120 s t a r t I n d e x : h .
0044140 i n d e x , \r s t o
0044160 p I n d e x P l u s O n e :
0044200 - - c h e c k f o r o v e
0044220 r f l o w \r I F
0044240 l e n g t h > L A S T [ C
0044260 A R D I N A L ] - h . i n d
0044300 e x T H E N h . d a t a B y
0044320 t e s I n B u f f e r \r
0044340 E L S E M I N [ h .
0044360 d a t a B y t e s I n B u f f e
0044400 r , h . i n d e x + l e n
0044420 g t h ] ] } ; \r \r G
0044440 e t F i l e : P U B L I C P
0044460 R O C E D U R E [ s t r e a m
0044500 : S t r e a m . H a n d l e ]
0044520 \r R E T U R N S [ f i
0044540 l e : M F i l e . H a n d l e
0044560 ] = { \r R E T U R N
0044600 [ V a l i d a t e H a n d l e [
0044620 s t r e a m ] . f i l e ] } ; \r
0044640 \r E n d O f : P U
0044660 B L I C P R O C E D U R E [
0044700 s t r e a m : S t r e a m . H
0044720 a n d l e ] R E T U R N S [
0044740 B O O L E A N ] = { \r
0044760 h : M y H a n d l e = V
0045000 a l i d a t e H a n d l e [ s t
0045020 r e a m ] ; \r R E T U R
0045040 N [ h . e o f I n B u f f e r
0045060 A N D h . i n d e x = h .
0045100 d a t a B y t e s I n B u f f e
0045120 r ] } ; \r \r G e t L e n g t
0045140 h : P U B L I C P R O C E D
0045160 U R E [ s t r e a m : S t r
0045200 e a m . H a n d l e ] \r
0045220 R E T U R N S [ f i l e L e n
0045240 g t h : L O N G C A R D I N
0045260 A L ] = { \r h : M
0045300 y H a n d l e = V a l i d a
0045320 t e H a n d l e [ s t r e a m ]
0045340 ; \r R E T U R N [ h . l
0045360 e n g t h ] } ; \r \r S e t L
0045400 e n g t h : P U B L I C P R
0045420 O C E D U R E [ s t r e a m :
0045440 S t r e a m . H a n d l e ,
0045460 f i l e L e n g t h : L O N G
0045500 C A R D I N A L ] = \r
0045520 B E G I N \r h : M y
0045540 H a n d l e = V a l i d a t
0045560 e H a n d l e [ s t r e a m ] ;
0045600 \r 253 I F M F i l e . G
0045620 e t A c c e s s [ h . f i l e ]
0045640 = l o g T H E N \r
0045660 I F h . l e n g t h <
0045700 f i l e L e n g t h \r
0045720 O R f i l e L e n g
0045740 t h < M F i l e O p s . G e
0045760 t R e a d L e n g t h F o r L o
0046000 g [ h . f i l e ] T H E N \r
0046020 E R R O R E r r o
0046040 r [ s t r e a m , i n v a l i
0046060 d O p e r a t i o n ] \r
0046100 E L S E R E T U R N ; 273 \r
0046120 I n t e r n a l S e t L
0046140 e n g t h [ h , s t r e a m ,
0046160 f i l e L e n g t h ] ; \r
0046200 E N D ; \r \r I n t e r n
0046220 a l S e t L e n g t h : P R O
0046240 C E D U R E [ \r h :
0046260 M y H a n d l e , s t r e a m
0046300 : S t r e a m . H a n d l e ,
0046320 f i l e L e n g t h : L O N
0046340 G C A R D I N A L ] = \r
0046360 B E G I N \r o l d L
0046400 e n g t h : L O N G C A R D
0046420 I N A L ; \r n e w L e n
0046440 g t h I n P a g e s : F i l e
0046460 . P a g e C o u n t = P a g
0046500 e s F o r B y t e s [ f i l e L
0046520 e n g t h ] - h . s t r e a
0046540 m B a s e ; \r b u f f e
0046560 r M i n : L O N G C A R D I
0046600 N A L = I n l i n e . L o n
0046620 g M u l t [ \r h . f
0046640 i r s t F i l e P a g e I n B u
0046660 f f e r , b y t e s P e r P a
0046700 g e ] ; \r I F ~ h . w
0046720 r i t e T H E N E R R O R
0046740 E r r o r [ s t r e a m , i n
0046760 v a l i d O p e r a t i o n ] ;
0047000 \r I F I n l i n e . H
0047020 i g h H a l f [ n e w L e n g t
0047040 h I n P a g e s ] # 0 T H
0047060 E N \r E R R O R E
0047100 r r o r [ s t r e a m , i n d
0047120 e x O u t O f R a n g e ] ; \r
0047140 o l d L e n g t h 254 h
0047160 . l e n g t h ; \r M F i
0047200 l e . S e t L e n g t h [ h . f
0047220 i l e , f i l e L e n g t h ]
0047240 ; \r h . l e n g t h 254
0047260 f i l e L e n g t h ; \r
0047300 I F n e w L e n g t h I n P
0047320 a g e s > h . f i l e P a g
0047340 e s T H E N \r h
0047360 . f i l e P a g e s 254 I n l
0047400 i n e . L o w H a l f [ n e w L
0047420 e n g t h I n P a g e s ] ; \r
0047440 S E L E C T T R U E F
0047460 R O M \r f i l e L e
0047500 n g t h < b u f f e r M i n
0047520 = > { \r p a
0047540 g e : C A R D I N A L 254 \r \t
0047560 I F f i l e L e n g t h
0047600 < = h . b u f f e r S p a c e
0047620 P a g e s * b y t e s P e r P a
0047640 g e / 2 T H E N 0 \r \t E
0047660 L S E ( I n l i n e . L o n g
0047700 D i v [ f i l e L e n g t h ,
0047720 b y t e s P e r P a g e ] -
0047740 h . b u f f e r S p a c e P a g
0047760 e s / 2 ) ; \r S
0050000 e t u p B u f f e r [ h , p a
0050020 g e ] ; \r \t h . i n d e x 254
0050040 h . d a t a B y t e s I n B u f
0050060 f e r } ; \r f i l e
0050100 L e n g t h > b u f f e r M
0050120 i n + h . b u f f e r B y t
0050140 e s = > h . e o f I n B u f
0050160 f e r 254 F A L S E ; \r
0050200 o l d L e n g t h > f
0050220 i l e L e n g t h = > { \r
0050240 h . d a t a B y t
0050260 e s I n B u f f e r 254 I n l
0050300 i n e . L o w H a l f [ f i l e
0050320 L e n g t h - b u f f e r M
0050340 i n ] ; \r \t h . i n d e x 254
0050360 M I N [ h . d a t a B y t e s I
0050400 n B u f f e r , h . i n d e x
0050420 ] ; \r \t h . e o f I n B u f f e
0050440 r 254 T R U E } ; \r
0050460 E N D C A S E = > h . d
0050500 a t a B y t e s I n B u f f e r
0050520 254 I n l i n e . L o w H a l
0050540 f [ f i l e L e n g t h - b
0050560 u f f e r M i n ] ; \r R
0050600 E T U R N ; \r E N D ; \r
0050620 \r - - U t i l i t i e s \r
0050640 \r m a x B u f f e r P a g e
0050660 s : C A R D I N A L = 4 0
0050700 ; \r s w a p U n i t S i z e
0050720 : C A R D I N A L = 5 ; \r
0050740 g r o w I n c r e m e n t :
0050760 C A R D I N A L = 1 0 ; \r
0051000 \r l o c a l B u f f e r
0051020 P a g e s : C A R D I N A L
0051040 254 m a x B u f f e r P a g e s
0051060 ; \r l o c a l O f f s e t :
0051100 C A R D I N A L 254 s w a p
0051120 U n i t S i z e ; \r \r C
0051140 o m p u t e L e n g t h : P R
0051160 O C E D U R E [ h : M y H a
0051200 n d l e ] R E T U R N S [ L
0051220 O N G C A R D I N A L ] =
0051240 I N L I N E { \r R E T
0051260 U R N [ I n l i n e . L o n g M
0051300 u l t [ h . f i r s t F i l e P
0051320 a g e I n B u f f e r , b y t
0051340 e s P e r P a g e ] + h . d
0051360 a t a B y t e s I n B u f f e r
0051400 ] } ; \r \r C l e a n u p
0051420 : P R O C E D U R E [ h :
0051440 M y H a n d l e , f i l e :
0051460 M F i l e . H a n d l e ] = \r
0051500 B E G I N \r I F
0051520 h . w r i t e T H E N { \r
0051540 S p a c e . F o r c
0051560 e O u t [ h . b u f f e r S p a
0051600 c e ] } ; \r I F h . l
0051620 e n g t h C h a n g e d T H E
0051640 N { \r M F i l e .
0051660 S e t L e n g t h [ f i l e ,
0051700 h . l e n g t h ] ; \r
0051720 h . l e n g t h C h a n g e d
0051740 254 F A L S E } ; \r E
0051760 N D ; \r \r S e t u p B u
0052000 f f e r : P R O C E D U R E
0052020 [ \r h : M y H a n d l
0052040 e , f i l e P a g e : C A R
0052060 D I N A L , s e t L e n g t h
0052100 : B O O L E A N 254 F A L S
0052120 E ] = \r B E G I N \r
0052140 f i l e P a g e s F o l l
0052160 o w i n g : C A R D I N A L ;
0052200 \r i n d e x O f S t a r
0052220 t O f B u f f e r : L O N G
0052240 C A R D I N A L ; \r I F
0052260 h . b u f f e r S p a c e P a
0052300 g e s = 0 O R h . f i l
0052320 e P a g e s < = f i l e P a
0052340 g e T H E N { \r
0052360 h . i n d e x 254 h . b u f f
0052400 e r B y t e s 254 h . d a t a
0052420 B y t e s I n B u f f e r 254
0052440 0 ; \r h . e o f I n
0052460 B u f f e r 254 T R U E ; \r
0052500 R E T U R N } ; \r
0052520 I F h . b u f f e r =
0052540 N I L T H E N \r B
0052560 E G I N \r h . b u f
0052600 f e r S p a c e 254 S p a c e
0052620 . A l l o c a t e [ c o u n t :
0052640 h . b u f f e r S p a c e P a
0052660 g e s ] ; \r h . b u
0052700 f f e r 254 h . b u f f e r S
0052720 p a c e . p o i n t e r ; \r
0052740 E N D \r E L S E
0052760 E m p t y B u f f e r [ h ,
0053000 F A L S E ] ; \r I F s
0053020 e t L e n g t h T H E N \r
0053040 M F i l e O p s . S e
0053060 t M i n i m u m F i l e D a t a
0053100 P a g e s [ h . f i l e , h .
0053120 f i l e P a g e s + h . s t
0053140 r e a m B a s e ! \r
0053160 U N W I N D = > { S
0053200 p a c e . D e a l l o c a t e [
0053220 h . b u f f e r S p a c e ] ;
0053240 h . b u f f e r 254 N I L } ]
0053260 ; \r [ ] 254 S p a c e
0053300 . M a p A t [ \r a t
0053320 : h . b u f f e r S p a c e ,
0053340 \r w i n d o w :
0053360 [ h . c a p a , f i l e P a g
0053400 e + ( l e a d e r P a g e s
0053420 + h . s t r e a m B a s e )
0053440 , h . b u f f e r S p a c e P
0053460 a g e s ] , \r a c c
0053500 e s s : I F h . r e a d A
0053520 N D ~ h . w r i t e A N D
0053540 ~ h . s h r i n k T H E N r
0053560 e a d O n l y E L S E r e a
0053600 d W r i t e , \r u s
0053620 a g e : M U s a g e . m F i l
0053640 e L o c a l S t r e a m , \r
0053660 s w a p U n i t s : [
0053700 u n i f o r m [ s w a p U n i t
0053720 S i z e ] ] ] ; \r f i l
0053740 e P a g e s F o l l o w i n g
0053760 254 h . f i l e P a g e s -
0054000 f i l e P a g e ; \r i n
0054020 d e x O f S t a r t O f B u f f
0054040 e r 254 L O N G [ f i l e P a
0054060 g e ] * b y t e s P e r P a g e
0054100 ; \r - - b u g w i
0054120 t h h . s t r e a m B a s e
0054140 i n h e r e s o m e w h e r
0054160 e * * * * * * * * * * * *
0054200 * * * \r I F h . e o f
0054220 I n B u f f e r 254 ( h . l e
0054240 n g t h < = ( i n d e x O f
0054260 S t a r t O f B u f f e r +
0054300 h . b u f f e r S p a c e P a g
0054320 e s * b y t e s P e r P a g e )
0054340 ) T H E N \r h . d
0054360 a t a B y t e s I n B u f f e r
0054400 254 I n l i n e . L o w H a l
0054420 f [ h . l e n g t h - i n d
0054440 e x O f S t a r t O f B u f f e
0054460 r ] \r E L S E h . d a
0054500 t a B y t e s I n B u f f e r
0054520 254 h . b u f f e r S p a c e P
0054540 a g e s * b y t e s P e r P a g
0054560 e ; \r h . b u f f e r B
0054600 y t e s 254 \r M I N
0054620 [ f i l e P a g e s F o l l o w
0054640 i n g , h . b u f f e r S p a
0054660 c e P a g e s ] * b y t e s
0054700 P e r P a g e ; \r h . f
0054720 i r s t F i l e P a g e I n B u
0054740 f f e r 254 f i l e P a g e ;
0054760 \r R E T U R N \r
0055000 E N D ; \r \r E m p t y B u f
0055020 f e r : P R O C E D U R E [
0055040 h : M y H a n d l e , d e l
0055060 e t e : B O O L E A N , f i
0055100 l e : M F i l e . H a n d l e
0055120 254 N I L ] = \r B E
0055140 G I N \r I F h . b u f
0055160 f e r = N I L T H E N R
0055200 E T U R N ; \r I F f i
0055220 l e = N I L T H E N f i
0055240 l e 254 h . f i l e ; \r
0055260 C l e a n u p [ h , f i l e
0055300 ! U N W I N D = > I F
0055320 d e l e t e T H E N { \r
0055340 [ ] 254 S p a c e . U
0055360 n m a p A t [ h . b u f f e r S
0055400 p a c e . p o i n t e r ] ; \r
0055420 S p a c e . D e a l l
0055440 o c a t e [ h . b u f f e r S p
0055460 a c e ] ; \r h . b
0055500 u f f e r 254 N I L } ] ; \r
0055520 I F d e l e t e T H E
0055540 N { \r [ ] 254 S
0055560 p a c e . U n m a p A t [ h . b
0055600 u f f e r S p a c e . p o i n t
0055620 e r ] ; \r S p a c e
0055640 . D e a l l o c a t e [ h . b u
0055660 f f e r S p a c e ] ; \r
0055700 h . b u f f e r 254 N I
0055720 L } \r E L S E [ ] 254
0055740 S p a c e . U n m a p A t [ h
0055760 . b u f f e r S p a c e . p o i
0056000 n t e r ] ; \r h . i n d
0056020 e x 254 h . b u f f e r B y t
0056040 e s 254 h . d a t a B y t e s
0056060 I n B u f f e r 254 0 ; \r
0056100 R E T U R N \r E N D
0056120 ; \r \r A d v a n c e B u f f
0056140 e r : P R O C E D U R E [ h
0056160 : M y H a n d l e ] = \r
0056200 B E G I N \r f i l e
0056220 P a g e s I n B u f f e r : C
0056240 A R D I N A L = h . b u f f
0056260 e r B y t e s / b y t e s P e r
0056300 P a g e ; \r n e x t P a
0056320 g e : C A R D I N A L = h
0056340 . f i r s t F i l e P a g e I n
0056360 B u f f e r + f i l e P a g
0056400 e s I n B u f f e r ; \r
0056420 o l d F i l e P a g e s : C A
0056440 R D I N A L = h . f i l e P
0056460 a g e s ; \r c h a n g e
0056500 S i z e : B O O L E A N 254
0056520 F A L S E ; \r s e t u p
0056540 O f f s e t : C A R D I N A L
0056560 254 0 ; \r I F n e x
0056600 t P a g e > = h . f i l e P
0056620 a g e s T H E N { \r
0056640 h . f i l e P a g e s 254
0056660 h . f i l e P a g e s + g r
0056700 o w I n c r e m e n t ; c h a
0056720 n g e S i z e 254 T R U E } ;
0056740 \r S e t u p B u f f e r
0056760 [ h , M A X [ n e x t P a g e
0057000 , s e t u p O f f s e t ] - s
0057020 e t u p O f f s e t , c h a n
0057040 g e S i z e ! \r U
0057060 N W I N D = > h . f i l e P
0057100 a g e s 254 o l d F i l e P a
0057120 g e s ] ; \r h . i n d e
0057140 x 254 \r M I N [ ( n
0057160 e x t P a g e - h . f i r s t F
0057200 i l e P a g e I n B u f f e r )
0057220 * b y t e s P e r P a g e ,
0057240 h . d a t a B y t e s I n B u
0057260 f f e r ] ; \r R E T U R
0057300 N \r E N D ; \r \r P a
0057320 g e s F o r B y t e s : P R O
0057340 C E D U R E [ w : L O N G
0057360 C A R D I N A L ] R E T U R N
0057400 S [ p : L O N G C A R D I
0057420 N A L ] = \r I N L I N
0057440 E { R E T U R N [ ( w + b y t
0057460 e s P e r P a g e - 1 ) / b y t
0057500 e s P e r P a g e ] } ; \r \r
0057520 E N D . o f M S t r e a
0057540 m I m p l \r \r \r
0057554