PCMCIA-PROG.ps   [plain text]


%!PS-Adobe-2.0
%%Creator: dvips(k) 5.86 Copyright 1999 Radical Eye Software
%%Title: PCMCIA-PROG.dvi
%%Pages: 73
%%PageOrder: Ascend
%%BoundingBox: 0 0 612 792
%%EndComments
%DVIPSWebPage: (www.radicaleye.com)
%DVIPSCommandLine: dvips -t letter PCMCIA-PROG.dvi -o PCMCIA-PROG.ps
%DVIPSParameters: dpi=600, compressed
%DVIPSSource:  TeX output 2000.11.05:1223
%%BeginProcSet: texc.pro
%!
/TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S
N}B/A{dup}B/TR{translate}N/isls false N/vsize 11 72 mul N/hsize 8.5 72
mul N/landplus90{false}def/@rigin{isls{[0 landplus90{1 -1}{-1 1}ifelse 0
0 0]concat}if 72 Resolution div 72 VResolution div neg scale isls{
landplus90{VResolution 72 div vsize mul 0 exch}{Resolution -72 div hsize
mul 0}ifelse TR}if Resolution VResolution vsize -72 div 1 add mul TR[
matrix currentmatrix{A A round sub abs 0.00001 lt{round}if}forall round
exch round exch]setmatrix}N/@landscape{/isls true N}B/@manualfeed{
statusdict/manualfeed true put}B/@copies{/#copies X}B/FMat[1 0 0 -1 0 0]
N/FBB[0 0 0 0]N/nn 0 N/IEn 0 N/ctr 0 N/df-tail{/nn 8 dict N nn begin
/FontType 3 N/FontMatrix fntrx N/FontBBox FBB N string/base X array
/BitMaps X/BuildChar{CharBuilder}N/Encoding IEn N end A{/foo setfont}2
array copy cvx N load 0 nn put/ctr 0 N[}B/sf 0 N/df{/sf 1 N/fntrx FMat N
df-tail}B/dfs{div/sf X/fntrx[sf 0 0 sf neg 0 0]N df-tail}B/E{pop nn A
definefont setfont}B/Cw{Cd A length 5 sub get}B/Ch{Cd A length 4 sub get
}B/Cx{128 Cd A length 3 sub get sub}B/Cy{Cd A length 2 sub get 127 sub}
B/Cdx{Cd A length 1 sub get}B/Ci{Cd A type/stringtype ne{ctr get/ctr ctr
1 add N}if}B/id 0 N/rw 0 N/rc 0 N/gp 0 N/cp 0 N/G 0 N/CharBuilder{save 3
1 roll S A/base get 2 index get S/BitMaps get S get/Cd X pop/ctr 0 N Cdx
0 Cx Cy Ch sub Cx Cw add Cy setcachedevice Cw Ch true[1 0 0 -1 -.1 Cx
sub Cy .1 sub]/id Ci N/rw Cw 7 add 8 idiv string N/rc 0 N/gp 0 N/cp 0 N{
rc 0 ne{rc 1 sub/rc X rw}{G}ifelse}imagemask restore}B/G{{id gp get/gp
gp 1 add N A 18 mod S 18 idiv pl S get exec}loop}B/adv{cp add/cp X}B
/chg{rw cp id gp 4 index getinterval putinterval A gp add/gp X adv}B/nd{
/cp 0 N rw exit}B/lsh{rw cp 2 copy get A 0 eq{pop 1}{A 255 eq{pop 254}{
A A add 255 and S 1 and or}ifelse}ifelse put 1 adv}B/rsh{rw cp 2 copy
get A 0 eq{pop 128}{A 255 eq{pop 127}{A 2 idiv S 128 and or}ifelse}
ifelse put 1 adv}B/clr{rw cp 2 index string putinterval adv}B/set{rw cp
fillstr 0 4 index getinterval putinterval adv}B/fillstr 18 string 0 1 17
{2 copy 255 put pop}for N/pl[{adv 1 chg}{adv 1 chg nd}{1 add chg}{1 add
chg nd}{adv lsh}{adv lsh nd}{adv rsh}{adv rsh nd}{1 add adv}{/rc X nd}{
1 add set}{1 add clr}{adv 2 chg}{adv 2 chg nd}{pop nd}]A{bind pop}
forall N/D{/cc X A type/stringtype ne{]}if nn/base get cc ctr put nn
/BitMaps get S ctr S sf 1 ne{A A length 1 sub A 2 index S get sf div put
}if put/ctr ctr 1 add N}B/I{cc 1 add D}B/bop{userdict/bop-hook known{
bop-hook}if/SI save N @rigin 0 0 moveto/V matrix currentmatrix A 1 get A
mul exch 0 get A mul add .99 lt{/QV}{/RV}ifelse load def pop pop}N/eop{
SI restore userdict/eop-hook known{eop-hook}if showpage}N/@start{
userdict/start-hook known{start-hook}if pop/VResolution X/Resolution X
1000 div/DVImag X/IEn 256 array N 2 string 0 1 255{IEn S A 360 add 36 4
index cvrs cvn put}for pop 65781.76 div/vsize X 65781.76 div/hsize X}N
/p{show}N/RMat[1 0 0 -1 0 0]N/BDot 260 string N/Rx 0 N/Ry 0 N/V{}B/RV/v{
/Ry X/Rx X V}B statusdict begin/product where{pop false[(Display)(NeXT)
(LaserWriter 16/600)]{A length product length le{A length product exch 0
exch getinterval eq{pop true exit}if}{pop}ifelse}forall}{false}ifelse
end{{gsave TR -.1 .1 TR 1 1 scale Rx Ry false RMat{BDot}imagemask
grestore}}{{gsave TR -.1 .1 TR Rx Ry scale 1 1 false RMat{BDot}
imagemask grestore}}ifelse B/QV{gsave newpath transform round exch round
exch itransform moveto Rx 0 rlineto 0 Ry neg rlineto Rx neg 0 rlineto
fill grestore}B/a{moveto}B/delta 0 N/tail{A/delta X 0 rmoveto}B/M{S p
delta add tail}B/b{S p tail}B/c{-4 M}B/d{-3 M}B/e{-2 M}B/f{-1 M}B/g{0 M}
B/h{1 M}B/i{2 M}B/j{3 M}B/k{4 M}B/w{0 rmoveto}B/l{p -4 w}B/m{p -3 w}B/n{
p -2 w}B/o{p -1 w}B/q{p 1 w}B/r{p 2 w}B/s{p 3 w}B/t{p 4 w}B/x{0 S
rmoveto}B/y{3 2 roll p a}B/bos{/SS save N}B/eos{SS restore}B end

%%EndProcSet
TeXDict begin 40258431 52099146 1000 600 600 (PCMCIA-PROG.dvi)
@start
%DVIPSBitmapFont: Fa ecti1000 10 32
/Fa 32 121 df<EA01E0EA07F0120F13F8121FA3120FEA07B0EA0030A21370136013E013
C0120113801203EA0700120E5A5A5A5A5A0D196EB919>39 D<EE01C01603A21607160FA2
161F83163FA2167F16FF16EF150116CFED038FA2ED070FA2150E151E151C1538A203707F
A2EDE007A2EC01C014031580EC0700A2140EA25CA25C027FB5FCA291B6FC9139E00007F8
49481303A2495A130791C7FC5B130E5BA25B1378137013F0487ED807FC4A7EB56C48B512
F0A3343C7BBB3E>65 D<DB03FE130E92393FFF801E92B5EAE03C913903FE01F0913A0FF0
00787CDA3FC0EB3CFC4AC7EA1FF802FE140FEB03FC49481407494815F049481403495A5C
49C813E05B485A5B000317C0485AA2485A1880485A94C7FCA2485AA3127F5BA312FF90CB
FCA41738A217784816707E17F06C5E16015F16036C6C4A5A94C7FC001F150E6D141E000F
5D6D5C6C6C495A6C6CEB03C0D801FEEB0F8027007F807EC8FC6DB45A010F13E0010090C9
FC373D74BA3B>67 D<0103B612FEEFFFC018F0903B0007F8000FF84BEB03FCEF00FE020F
157FF03F804B141F19C0021F150F19E05D1807143F19F05DA2147FA292C8FCA25C180F5C
A2130119E04A151FA2130319C04A153FA201071780187F4A1600A2010F16FEA24A4A5A60
011F15034D5A4A5D4D5A013F4B5A173F4A4AC7FC17FC017FEC03F84C5A91C7EA1FC04949
B45A007F90B548C8FCB712F016803C397CB83F>I<DB03FE130E92393FFF801E92B5EAE0
3C913903FE01F0913A0FF000787CDA3FC0EB3CFC4AC7EA1FF802FE140FEB03FC49481407
494815F049481403495A5C49C813E05B485A5B000317C0485AA2485A1880485A94C7FCA2
485AA3127F5BA312FF90CBFC0307B512E0A392390007FC00705A16075FA36C150F5FA36C
6C141F5F121F6D143F6C7E4C5A6C6C14FF6C6CEB03EFD801FEEB07C728007FC03F07C7FC
90393FFFFC03010F01F0C8FC01001380373D74BA40>71 D<0103B5D8F80FB512E0A39026
0007F8C7381FE0004B5DA2020F153F615DA2021F157F96C7FC5DA2023F5D605DA2027F14
016092C7FCA24A1403605CA249B7FC60A202FCC712070103150F605CA20107151F605CA2
010F153F605CA2011F157F95C8FC5CA2013F5D5F5CA2017F14015F91C7FC491403007FD9
FE01B512F8B55BA243397CB83E>I<0103B512F8A390390007F8005DA2140FA25DA2141F
A25DA2143FA25DA2147FA292C7FCA25CA25CA21301A25CA21303A25CA21307A25CA2130F
A25CA2131FA25CA2133FA25CA2137FA291C8FC497EB6FCA25C25397CB820>I<0103B500
F890387FFFE0A21AC090260007F8C7380FFC004B15E061020F4BC7FC183E4B5C18F0021F
4A5A4D5A4BEB0F804DC8FC023F143C5F4B5B4C5A027FEB07C04CC9FCED001E5E4A5BED01
FCECFE0315070101497E151FECFC7C4B7E903903FDE07FDAFFC07F1580ED003F49488014
F84A131F83130F160F4A801607011F81A24A130383133F16014A80A2017F6E7EA291C8FC
494A7F007F01FE011F13FCB55CA243397CB840>75 D<0107B512FCA25E9026000FF8C7FC
5D5D141FA25DA2143FA25DA2147FA292C8FCA25CA25CA21301A25CA21303A25CA21307A2
5CA2130F170C4A141CA2011F153C17384A1478A2013F157017F04A14E01601017F140317
C091C71207160F49EC1F80163F4914FF000102071300B8FCA25E2E397BB834>I<902607
FFF8923807FFF0614F13E0D9000FEFF0004F5AA2021F167FF1EFC0141DDA1CFCEC01CF02
3C16DF9538039F800238ED071FA20278ED0E3F97C7FC0270151CA202F04B5AF0707E14E0
037E14E0010117FE4D485A02C0EC0380A20103ED0701610280140EA20107ED1C0305385B
14006F137049160705E05B010EEC01C0A2011E913803800F61011CEC0700A2013C020E13
1F4C5C1338ED1FB80178163F04F091C8FC01705CA201F04A5B187E00015DD807F816FEB5
00C09039007FFFFC151E150E4C397AB84A>I<0107B612F817FF1880903B000FF0003FE0
4BEB0FF0EF03F8141FEF01FC5DA2023F15FEA25DA2147FEF03FC92C7FCA24A15F817074A
15F0EF0FE01301EF1FC04AEC3F80EFFE0001034A5AEE0FF091B612C04CC7FCD907F8C9FC
A25CA2130FA25CA2131FA25CA2133FA25CA2137FA291CAFCA25BA25B1201B512FCA33739
7BB838>80 D<92383FC00E913901FFF01C020713FC91391FC07E3C91393F001F7C027CEB
0FF84A130749481303495A4948EB01F0A2495AA2011F15E091C7FCA34915C0A36E90C7FC
A2806D7E14FCECFF806D13F015FE6D6D7E6D14E0010080023F7F14079138007FFC150F15
031501A21500A2167C120EA3001E15FC5EA3003E4A5AA24B5AA2007F4A5A4B5A6D49C7FC
6D133ED8F9F013FC39F8FC03F839F07FFFE0D8E01F138026C003FCC8FC2F3D7ABA2F>83
D<14F8EB07FE90381F871C90383E03FE137CEBF801120148486C5A485A120FEBC001001F
5CA2EA3F801403007F5C1300A21407485C5AA2140F5D48ECC1C0A2141F15831680143F15
87007C017F1300ECFF076C485B9038038F8E391F0F079E3907FE03FC3901F000F0222677
A42A>97 D<133FEA1FFFA3C67E137EA313FE5BA312015BA312035BA31207EBE0F8EBE7FE
9038EF0F80390FFC07C013F89038F003E013E0D81FC013F0A21380A2123F1300A214075A
127EA2140F12FE4814E0A2141F15C05AEC3F80A215005C147E5C387801F8007C5B383C03
E0383E07C0381E1F80D80FFEC7FCEA01F01C3B77B926>I<147F903803FFC090380FC1E0
90381F0070017E13784913383901F801F83803F003120713E0120FD81FC013F091C7FC48
5AA2127F90C8FCA35A5AA45AA3153015381578007C14F0007EEB01E0003EEB03C0EC0F80
6CEB3E00380F81F83803FFE0C690C7FC1D2677A426>I<ED01F815FFA3150316F0A21507
A216E0A2150FA216C0A2151FA21680A2153FA202F81300EB07FE90381F877F90383E03FF
017C5BEBF80112013803F00048485B120FEBC001121F5DEA3F801403127F01005BA21407
5A485CA2140FA248ECC1C0A2141F15C3ED8380143F1587007C017F1300ECFF076C485B90
38038F8E391F0F079E3907FE03FC3901F000F0253B77B92A>I<147F903803FFC090380F
C1E090383F00F0017E13785B485A485A485A120F4913F8001F14F0383F8001EC07E0EC1F
80397F81FF00EBFFF8148090C8FC5A5AA55AA21530007C14381578007E14F0003EEB01E0
EC03C06CEB0F806CEB3E00380781F83803FFE0C690C7FC1D2677A426>I<ED07C0ED1FF0
ED3E38ED7C3CEDF8FC15F9140115F1020313F8EDF0F0160014075DA4140F5DA4141F5D01
0FB512C05B16809039003F800092C7FCA45C147EA414FE5CA413015CA413035CA413075C
A4130F5CA3131F5CA391C8FC5B121CEA7E3EA2EAFE3C137C1378EAF8F01278EA3FC0EA0F
80264C82BA19>I<EB01C0EB07E014F0130F14E01307EB038090C7FCAB13F0EA03FCEA07
1EEA0E1F121CA212385B1270A25BEAF07E12E013FEC65AA212015B1203A25B12075BA200
0F13E013C013C1001F13C01381A2EB83801303EB0700A2130E6C5AEA07F8EA01E0143879
B619>105 D<EB03F0EA01FFA3EA00075CA3130F5CA3131F5CA3133F91C8FCA35B017EEB
0F80ED3FE015F09039FE01C1F09038FC0387EC0707140E0001011C13E0EBF83891383003
800270C7FC00035BEBF1C0EBF38001FFC8FCEA07FC7FEBFFC0EBE7F8380FE1FCEBC07E14
7F80001F809039801F81C0A21583003F013F138001001303A21507481500007E133EEC1E
0E151E00FE6D5A48EB07F80038EB01E0243B7BB926>107 D<EB0FC0EA07FFA3EA001F14
80A2133FA21400A25BA2137EA213FEA25BA21201A25BA21203A25BA21207A25BA2120FA2
5BA2121FA25BA2123FA290C7FCA25AA2EA7E0EA212FE131EEAFC1CA2133C133812F81378
EA7870EA7CE0121FEA0F80123B79B915>I<D801E001FEEB07F03C07F803FF801FFC3C0E
3C0F07C0783E3C1E3E3C03E1E01F261C1F78D9F3C013803C383FF001F7800F02E0140000
7801C013FE007018C002805B4A4848EB1F80EAF07FD8E07E5CA200000207143F01FE1700
495CA2030F5C0001177E495C18FE031F5C120349DA8001131C18F8033F153C0007040313
3849020013F0A24B1570000F17E049017E15F019E003FEECE1C0001FEE01E34949903800
FF000007C70038143C3E2679A444>I<D801E013FE3A07F803FF803A0E3C0F07C03A1E3E
3C03E0261C1F787F39383FF00114E0007813C000708114804A485AEAF07FEAE07EA20000
140701FE5C5BA2150F00015D5B151F5E12034990383F8380160316070007027F13004913
7EA2160E000F147C49141E161C5E001FEC3C7849EB1FE00007C7EA0780292679A42F>I<
147F903803FFC090380FC1F090381F00F8017E137C5B4848137E4848133E0007143F5B12
0F485AA2485A157F127F90C7FCA215FF5A4814FEA2140115FC5AEC03F8A2EC07F015E014
0F007C14C0007EEB1F80003EEB3F00147E6C13F8380F83F03803FFC0C648C7FC202677A4
2A>I<9039078007C090391FE03FF090393CF0787C903938F8E03E9038787FC00170497E
ECFF00D9F0FE148013E05CEA01E113C15CA2D80003143FA25CA20107147FA24A1400A201
0F5C5E5C4B5A131F5EEC80035E013F495A6E485A5E6E48C7FC017F133EEC70FC90387E3F
F0EC0F8001FEC9FCA25BA21201A25BA21203A25B1207B512C0A3293580A42A>I<3903C0
03F0390FF01FFC391E783C0F381C7C703A3C3EE03F8038383FC0EB7F8000781500007013
00151CD8F07E90C7FCEAE0FE5BA2120012015BA312035BA312075BA3120F5BA3121F5BA3
123F90C9FC120E212679A423>114 D<14FE903807FF8090380F83C090383E00E04913F0
0178137001F813F00001130313F0A215E00003EB01C06DC7FC7FEBFFC06C13F814FE6C7F
6D13807F010F13C01300143F141F140F123E127E00FE1480A348EB1F0012E06C133E0070
5B6C5B381E03E06CB45AD801FEC7FC1C267AA422>I<EB0380EB07C0130FA4131F1480A3
133F1400A35B137E007FB5FCA2B6FC3800FC00A312015BA312035BA312075BA3120F5BA3
121FEB801CA2143C003F1338EB0078147014F014E0EB01C0EA3E03381F0780380F0F00EA
07FCEA01F0183579B31C>I<13F8D803FEEB01C0D8078FEB03E0390E0F8007121E121C00
38140F131F007815C01270013F131F00F0130000E015805BD8007E133FA201FE14005B5D
120149137EA215FE120349EBFC0EA20201131E161C15F813E0163CD9F003133814070001
ECF07091381EF8F03A00F83C78E090393FF03FC090390FC00F00272679A42D>I<01F013
0ED803FC133FD8071EEB7F80EA0E1F121C123C0038143F49131F0070140FA25BD8F07E14
0000E08013FEC6485B150E12015B151E0003141C5BA2153C000714385B5DA35DA24A5A14
0300035C6D48C7FC0001130E3800F83CEB7FF8EB0FC0212679A426>I<01F01507D803FC
903903801F80D8071E903907C03FC0D80E1F130F121C123C0038021F131F49EC800F0070
1607A249133FD8F07E168000E0ED000313FEC64849130718000001147E5B03FE5B000316
0E495BA2171E00070101141C01E05B173C1738A217781770020314F05F0003010713016D
486C485A000190391E7C07802800FC3C3E0FC7FC90393FF81FFE90390FE003F0322679A4
37>I<903907E007C090391FF81FF89039787C383C9038F03E703A01E01EE0FE3803C01F
018013C0D8070014FC481480000E1570023F1300001E91C7FC121CA2C75AA2147EA214FE
A25CA21301A24A1370A2010314F016E0001C5B007E1401010714C000FEEC0380010F1307
010EEB0F0039781CF81E9038387C3C393FF03FF03907C00FC027267CA427>I
E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fb cmsy10 10 1
/Fb 1 16 df<EB1FF0EBFFFE487F000714C04814E04814F04814F8A24814FCA3B612FEA9
6C14FCA36C14F8A26C14F06C14E06C14C0000114006C5BEB1FF01F1F7BA42A>15
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fc cmmi10 10 1
/Fc 1 63 df<126012FCB4FCEA7FC0EA1FF0EA07FCEA01FF38007FC0EB1FF0EB07FCEB01
FF9038007FC0EC1FF0EC07FCEC01FF9138007FC0ED1FF0ED07FCED01FF9238007FC0EE1F
F0EE07FCEE01FF9338007F80EF1FC0A2EF7F80933801FF00EE07FCEE1FF0EE7FC04B48C7
FCED07FCED1FF0ED7FC04A48C8FCEC07FCEC1FF0EC7FC04948C9FCEB07FCEB1FF0EB7FC0
4848CAFCEA07FCEA3FF0EA7FC048CBFC12FC1270323279AD41>62
D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fd ectt0900 9 79
/Fd 79 126 df<00101320007C13F838FE01FCAAEAFC00007C13F8A900381370161778AE
27>34 D<90381C01C090383E03E0A7EB7E07017C13C0A3007FB512FEB7FCA36C14FE3900
F80F80A50001131F01F01300A6007FB512FEB7FCA36C14FE3903E03E00A30007137EEBC0
7CA738038038202E7DAD27>I<131FEB7FC0497E5A80EA03F1EBE1F8EA07E013C0A513C1
5C9039C3F1FF80D9E3E113C03803E7E3EBEFC101FF1480913881F800EC01F0EA01FEEBFC
0301F85B00031307D807FC5B120F381FFE0FD83FBE5BEB3F1FD87E1F90C7FC149F38FC0F
BF14FE1307ECFC020103EB0F80EB01F8A238FE03FC387E07FE397F1FFF9F6CB61200149F
6CEB0FFE390FFC03FC3903F000F822307EAE27>38 D<EB01C0EB03E0130F131FEB3FC0EB
7F80EBFE00485A5B1203485A5B485AA2485AA248C7FCA3127EA45AAC127EA47EA36C7EA2
6C7EA26C7E7F6C7E12017F6C7EEB7F80EB3FC0EB1FE0130F1303EB01C0133A73B327>40
D<127012F812FE7E6C7E6C7EEA0FE06C7E12037F6C7E1200137EA27FA2EB1F80A3EB0FC0
A4EB07E0ACEB0FC0A4EB1F80A3EB3F00A2137EA25B1201485A5B1207485AEA3FC0485A48
C7FC5A12F81270133A7AB327>I<130F497EA60078EB81E000FEEB87F000FF138FEBDFBF
6CB512E06C14C0000F1400000313FCC613F0A2000313FC000F13FF003F14C04814E039FF
DFBFF0EB1F8F00FE13870078EB81E00000EB8000A66DC7FC1C207BA627>I<120FEA3FC0
13E0EA7FF0A213F8A2123FA2120F120113F01203EA07E0121FEA7FC0EAFF8013005A1270
0D14738927>44 D<007FB51280B612C0A36C14801A057A9227>I<121EEA7F80A2EAFFC0
A4EA7F80A2EA1E000A0A728927>I<1538157CA215FC15F8140115F0140315E0140715C0
A2140F1580141F15005C143E147E147C14FC5C13015C13035C13075C130F5CA2131F91C7
FC5B133E137E137C13FC5B12015B12035B12075B120F5BA2121F90C8FC5A123E127E127C
12FC5AA212701E3A7CB327>I<EB07E0EB3FFC497E90B5FC4814803903FC3FC03907F00F
E0390FE007F0EBC003391F8001F8A248C712FCA2003E147C007E147EA3007C143E00FC14
3FAC007E147EA46C14FCA2EB8001001F14F8EBC003000F14F0EBE0073907F00FE03903FC
3FC06CB512806C14006D5A6D5AEB07E020307DAE27>I<130E131FA25B5BA25B5A5A127F
B5FCA213BFEA7E3F1200B3AA003FB512805A15C01580A21A2F79AE27>I<EB3FE03801FF
F84813FE000FEBFF804814C0393FE07FE0EB800F397F0007F0007EEB03F800FE13015A6C
14FC1400A3127CC8FCA2140115F8A2140315F01407EC0FE0EC1FC0143FEC7F80ECFF0049
5A495A495A495A495A495A495A01FEC7FC485AD807F81378484813FC485A485A48B5FCB6
FCA36C14F81E2F7CAE27>I<EB1FF8EBFFFE0003EBFF80000F14C015E0391FF01FF0393F
C007F8EB800115FC1400A26CC7FC1204C8FC140115F81403EC07F0140FEC3FE090381FFF
C0491380A215E06D13F09038001FF8EC03FC1401EC00FE157E157F153FA21238127C12FE
A2157F48147E6C14FE007FEB01FCEB8003393FF01FF86CB512F06C14E000031480C6EBFE
00EB1FF820307DAE27>I<EC3F804A7EA214FF5BA2EB03F7EB07E7A2EB0FC71487131FEB
3F07A2137E13FCA2EA01F813F01203EA07E0A2EA0FC0EA1F80A2EA3F00123E127E5AB712
8016C0A36C1580C73807C000A849B5FC491480A36D1400222F7EAE27>I<001FB512E048
14F0A315E090C8FCACEB1FF0EBFFFC14FF158015C09038F03FE09038C00FF0EB0007003E
EB03F8001C1301C7FC15FC1400A3127C12FEA2140115F84813036C14F0007F130F903880
1FE0393FE07FC06CB512806C14006C5B000113F838007FC01E2F7CAD27>I<14FF010713
C0011F13F04913F890B5FC48EB81FC3803FE0113F8EA07F0EA0FE09038C000F8001F1400
485A90C8FCA25A127EEB0FF838FE3FFE48B51280B612C015E09038F80FF09038E007F890
388001FC90C7FC15FE48147E157F153FA3127EA3127F6C147F157E6C6C13FE9038C001FC
120F9038F007F83907F81FF06CB512E06C14C06C148090383FFE00EB0FF820307DAE27>
I<1278B612FE15FFA315FE39FC0001FCEC03F8EC07F0007814E0C7120FEC1FC01580143F
EC7F00147E14FE5C13015C13035C13075CA2495AA3495AA3133F91C7FCA55B137EA9133C
20307DAE27>I<EB0FF0EB7FFE48B512804814C0000F14F0EBF81F391FE007F8393F8001
FC90C7FC4814FE007E147EA56C14FCEB8001391FC003F8390FE007F03907FC3FE00001B5
128039007FFE006D5A90B5FC000314C0390FF00FF0391FC003F8393F8001FC90C7FC007E
147EA248143FA6007E147EA2007F14FE393F8001FC391FE007F8EBF81F6CB512F06C14E0
0001148039007FFE00EB0FF020307DAE27>I<EB0FF0EB7FFC48B5FC4814804814C0390F
F81FE0391FE007F0393FC003F8EB8001D87F0013FC007E130012FE48147EA4157FA37E12
7E007F14FF7E6D5A381FE007380FF01F6CB6FC7E6C143F39007FFC7F90381FF07E90C7FC
A215FCA2140115F8001F1303393F8007F0EC0FE0141FEC3FC09038C0FF806CB512005C6C
13F8000313E0C6138020307DAE27>I<121EEA7F80A2EAFFC0A4EA7F80A2EA1E00C7FCAC
121EEA7F80A2EAFFC0A4EA7F80A2EA1E000A20729F27>I<120FEA3FC0A2EA7FE0A4EA3F
C0A2EA0F00C7FCAC120FEA3FC013E0EA7FF0A213F8A2123FA2120F120113F01203EA07E0
121FEA7FC0EAFF8013005A12700D2A739F27>I<003FB512FCB7FCA4C9FCA8B7FCA4003F
14FC20127D9F27>61 D<EB03F0497EA2497EA4143CEB1F3EA5EB3F3FA3EB3E1FA2017E7F
A4496C7EA548486C7EA390B5FCA24880A3EBF003A248486C7EA4000F803A7FFC0FFF8000
FF15C06D5A497E007F1580222F7EAE27>65 D<007FB5FCB612C08115F87E3907E003FCEC
00FE157E157F81A6157EA25D1403EC0FF890B55A15C015F081819038E000FE157FED3F80
151FA2ED0FC0A6151F1680153FED7F004A5A007FB55AB65A5D15E06C1480222E7FAD27>
I<903803F80E90381FFE1F90383FFFBF90B6FC5A3803FE0F3807F803497E48487E485A49
137FA248C7123FA25A127E151E150012FE5AAA7E127EA2151E007F143F7EA26C7E157F6D
137E6C6C13FE3907F001FCEBF8033903FE0FF86CB512F06C14E0013F13C06D1300EB03F8
20307DAE27>I<387FFFFC14FFB612C06C80813907E00FF81407EC01FC6E7EA2157E157F
811680151FA316C0150FABED1F80A3153F1600A25D15FEA24A5A4A5A140F007FB55A5DB6
5A6C91C7FC14FC222E7FAD27>I<007FB61280B712C0A37E3907E0000FA6ED078092C7FC
A4EC07804A7EA390B5FCA5EBE00FA36E5A91C8FCA4ED03C0ED07E0A7007FB6FCB7FCA36C
15C0232E7FAD27>I<007FB61280B712C0A37E3907E0000FA6ED078092C7FCA4EC07804A
7EA390B5FCA5EBE00FA36E5A91C8FCAC387FFF80B57EA36C5B222E7EAD27>I<903807F0
3890381FFC7C90387FFFFC90B5FC5A3803FC1F3807F00F380FE007EBC003001F13011380
123F90C7FCA2127EA2157892C7FC5AA8EC1FFF4A1380A3007E6D1300EC00FCA36C1301A2
1380121FEBC003120FEBE0073807F00F3803FC1F6CB5FC7EEB7FFE90381FFC78D907F0C7
FC21307DAE27>I<3A7FFE07FFE0B54813F0A36C486C13E03A07E0007E00AF90B512FEA5
9038E0007EB03A7FFE07FFE0B54813F0A36C486C13E0242E7FAD27>I<007FB512E0B612
F0A36C14E039001F8000B3B2007FB512E0B612F0A36C14E01C2E7BAD27>I<90381FFFF8
4913FCA36D13F89038001F80B3AC127CA212FEA2EC3F005C387F81FE13FF6C5B6C5B0007
13E0C690C7FC1E2F7BAD27>I<387FFFC080B5FC7E5CD803F0C8FCB3AAED0780ED0FC0A7
007FB6FCA2B7FC7E1680222E7FAD27>76 D<D87FE0EB7FE0486CEBFFF0A26D5A007F15E0
000F150001B813DFEBBC03A3EBBE07019E139FA3EB9F0FA2018F131FA2149FA2EB879EA4
EB839C14FCA3EB81F8A2EB80F01400AAD87FF0EBFFE0486C4813F0A36C486C13E0242E7F
AD27>I<3A7FF003FFE0486C4813F0A213FC007F6D13E000079038003E0013DEA313CFA3
148013C714C0A213C314E0A213C114F0A3EBC0F8A31478147CA2143C143EA2141E141F14
0FA3EC07BEA3EC03FEEA7FFCEAFFFE1401A26C486C5A242E7FAD27>I<EBFFFC0007EBFF
80001F14E0A24814F0EBC00F397F8007F8EB0003007E1301A348EB00FCB3A76C1301007E
14F8A3007F1303EB8007393FE01FF090B5FC6C14E0A200071480C6EBFC001E307CAE27>
I<007FB5FCB612E081816C803907E003FEEC00FF81ED3F80151F16C0150FA6151F168015
3FED7F005DEC03FE90B55A5D5D5D92C7FC01E0C8FCADEA7FFEB5FCA36C5A222E7FAD27>
I<EBFFFC0007EBFF80001F14E0A24814F0EBE01F397F8007F8EB0003007E1301A300FE14
FC481300B3A4EB07E0A200FE13F1007E14F8EB03F9A2387F01FF1381D83FE013F090B5FC
6C14E0A200071480C6FC9038001FC0A2EC0FE0A2EC07F0A2EC03F8A2EC01F01E397CAE27
>I<387FFFF0B512FE6E7E816C803907E01FF014076E7E1401811400A514015D14034A5A
141F90B55A5D5DA281EBE01F6E7E14076E7EA816F0EDF1F8A4397FFE01FBB5EBFFF08016
E06C48EB7FC0C8EA1F00252F7FAD27>I<90387FC0E03901FFF1F0000713FF5A5AEA3FE0
EB801F387F000F007E130712FE5A1403A3EC01E06C90C7FC127E127FEA3FC013F86CB47E
6C13F86C13FE6CEBFF80C614C0010F13E0010013F0140FEC07F81403140115FC14001278
12FCA46CEB01F8A26C130390388007F09038F01FE090B5FC15C0150000F85B38701FF81E
307CAE27>I<007FB61280B712C0A439FC03F00FA60078EC0780000091C7FCB3AB90B512
C04880A36C5C222E7EAD27>I<3A7FFE01FFF8B54813FCA36C486C13F83A07E0001F80B3
AB6D133F00031500A26D5B0001147E6D13FE6C6C485A90387F87F814FF6D5B010F13C06D
5BD901FEC7FC262F80AD27>I<3A7FFC03FFE06D5A00FF15F0007F15E0497E3A07E0007E
00A46C6C5BA4EBF80100015CA46C6C485AA490387E07E0A56D485AA4011F5B149FA3010F
90C7FCA5EB07FEA46D5AA26D5A242F7FAD27>I<D87FE0EB7FE0486CEBFFF0A36C48EB7F
E0001FC7EA0F80A76C6CEB1F00A614F0EB81F83907C3FC3EA4149CEBC79EA30003143CA3
01E7137CEBEF9FA2140FA200011478A49038FE07F8A300005CA2EBFC0390387801E0242F
7FAD27>I<393FFC1FFE387FFE3F815D383FFC1F3903F00FE001F85B1201EBFC1F00005C
EBFE3F017E90C7FCEB7F7FEB3F7E14FE6D5AA26D5AA26D5AA21303130780130F80131F80
EB3F7E147F497E017E7F141F01FC7F140FD801F87F14071203496C7E120701E07F3A7FFC
0FFF8000FF15C06D5A497E007F1580222E7EAD27>I<3A7FFC03FFE06D5A00FF15F0007F
15E0497E3A07F000FE0000035CEBF80100015CA2EBFC0300005CEBFE07017E5BA26D485A
A290381F9F80A3010F90C7FCA2EB07FEA26D5AA26D5AAF90381FFF80497FA36D5B242E7F
AD27>I<003FB512FE4814FFA4007EC712FEEC01FCA2EC03F8EC07F0A2003CEB0FE0C7EA
1FC0A2EC3F80EC7F00A214FE5C1301495A5C1307495A5C131F495A91C7FC5B13FEA2485A
4848131E153F485A485AA2485A485AA248C7FCB7FCA46C14FE202E7DAD27>I<387FFFF0
B512F8A314F000FCC7FCB3B3ACB512F014F8A36C13F0153A71B327>I<387FFFF0B512F8
A37EEA0001B3B3ACEA7FFFB5FCA36C13F0153A7EB327>93 D<007FB512F8B612FCA46C14
F81E067C7E27>95 D<3801FFE0000713F84813FE486D7E81EBC07FEC0FE0380F8007D802
007FC71203A2EB07FF137F0003B5FC120F5A383FFC03EA7FE0130012FE5AA46C1307007F
130FEBC07F6CB612C06C15E07E000313F83A007FC03FC023207D9F27>97
D<EA7FE0487EA3127F1203A9EC7F809038F1FFE001F713F890B57E81ECC0FF9138007F80
01FCEB1FC049130F16E0491307A216F01503A615076D14E0A2150F6DEB1FC06D133F6DEB
7F809138C1FF00ECFFFE5D01F75B01F313E02601E07FC7FC242E80AD27>I<EB0FFF017F
13C048B512E04814F05A380FF807EA1FE0393FC003E0903880008048C8FC127EA212FE5A
A67E127EA2007F14F0393F8001F813C0381FE003390FF80FF06CB5FC6C14E06C14C06C6C
1300EB0FF81D207B9F27>I<EC1FF84A7EA3141F1400A9EB0FF0EB7FFC48B5FC5A5A380F
F81F381FE007383FC003EB8001EA7F00007E1300A212FE5AA67E007E1301A2007F13037E
EB8007381FE00F380FF03F6CB612E06C15F06C5B38007FF890391FE07FE0242E7EAD27>
I<EB0FF8EB3FFE90B51280000314C04814E0390FFC0FF0391FE003F8EBC001D83F8013FC
48C7FC127E157E12FEB612FEA415FC00FCC8FC7E127E127F6C143C6D137E6C7E01F013FE
390FFC07FC6CB5FC000114F86C14F0013F13C0903807FE001F207D9F27>I<EC1FF0ECFF
F84913FC4913FE5BEB0FF014C0011F137CEC8000A6007FB512F0B612F8A36C14F039001F
8000B3A4003FB512C04814E0A36C14C01F2E7EAD27>I<153F90391FC0FF80D97FF313C0
48B612E05A4814EF390FF07F873A1FC01FC3C0EDC000EB800F48486C7EA66C6C485AEBC0
1FA2390FF07F8090B5C7FC5C485BEB7FF0EB1FC090C9FCA27F6CB5FC15E015F84814FE48
80EB8001007EC7EA3F80007C140F00FC15C0481407A46C140F007C1580007F143F6C6CEB
7F009038F807FF6CB55A000714F86C5CC614C0D90FFCC7FC23337EA027>I<EA7FE0487E
A3127F1203A9EC3FC09038F1FFF001F77F90B57E8114E0EC007F497F5B5BA25BB03A7FFF
83FFF8B500C713FCA36C018313F8262E80AD27>I<130F497E497EA46D5A6DC7FC90C8FC
A7383FFF80487FA37EEA000FB3A4007FB512F0B6FC15F815F07E1D2F7BAE27>I<143C14
7E14FFA4147E143C1400A73801FFFE4813FFA37EC7123FB3B0147E1238007C13FE38FE01
FC1303B512F814F06C13E06C13803807FE0018407CAE27>I<EA7FE07F12FF127FA21201
A991383FFFC04A13E0A36E13C0913803F8004A5A4A5A4A5A4A5A02FFC7FCEBF1FEEBF3FC
EBF7F8EBFFFC8080143F496C7E496C7E01F87FEBF0076E7E6E7E816E7E157E3A7FFFC1FF
F002C313F8B512E36C13C316F0252E80AD27>I<387FFF80B57EA37EEA000FB3B2007FB5
12F8B612FCA36C14F81E2E7CAD27>I<397F07C01F3AFF9FF07FC09039FFF9FFE091B57E
7E3A0FFC7FF1F89038F03FC001E0138001C01300A3EB803EB03A7FF0FFC3FF486C01E313
8001F913E701F813E36C4801C313002920819F27>I<397FE03FC039FFF1FFF001F77F90
B57E6C80000313E0EC007F497F5B5BA25BB03A7FFF83FFF8B500C713FCA36C018313F826
20809F27>I<EB1FE0EB7FF83801FFFE487F481480390FF03FC0391FC00FE0393F8007F0
EB00034814F8007E1301A248EB00FCA76C1301007E14F8A2007F1303393F8007F0A2391F
E01FE0390FF03FC06CB512806C14006C5B38007FF8EB1FE01E207C9F27>I<397FE07F80
39FFF1FFE001F713F890B57E6C800003EBC0FF9138007F8001FCEB1FC049130F16E04913
07A216F01503A615076D14E0A2150F6DEB1FC06D133F6DEB7F809138C1FF00ECFFFE5D01
F75B01F313E0D9F07FC7FC91C8FCAC387FFF80B57EA36C5B2431809F27>I<90380FF03C
90383FFE7E90B5FC000314FE5A380FFC1F381FE007EBC003383F800148C7FC127EA200FE
147E5AA67E007E14FEA2007F1301EA3F80EBC003381FE007380FF81F6CB5FC7E6C147E38
007FFCEB0FF090C7FCAC91381FFFF8A24A13FC6E13F8A226317E9F27>I<397FFC03FC39
FFFE0FFF023F13804A13C0007F90B5FC39007FFE1F14F89138F00F809138E002004AC7FC
5CA291C8FCA2137EAD007FB57EB67EA36C5C22207E9F27>I<9038FFF3800007EBFFC012
1F5A5AEB803F38FC000F5AA2EC07806C90C7FCEA7F8013FC383FFFF06C13FC000713FF00
011480D8000F13C09038003FE014070078EB03F000FC1301A27E14036CEB07E0EBE01F90
B512C01580150000FB13FC38707FF01C207B9F27>I<133C137EA8007FB512F0B612F8A3
6C14F0D8007EC7FCAE1518157EA415FE6D13FC1483ECFFF86D13F06D13E0010313C00100
13001F297EA827>I<397FE007FE486C487EA3007F7F0003EB003FB25DA24A5AEBFC076C
B612F86C15FCA2013F13BF90390FFC1FF82620809F27>I<3A7FFC0FFF80486C4813C0A3
6C486C13803A07C000F800EBE00100035CA2EBF00300015CA2EBF80700005CA390387C0F
80A36D48C7FCA3EB3F3FEB1F3EA214FE6D5AA36D5AA26D5A22207E9F27>I<3A7FFE07FF
E000FF15F06D5A497E007F15E03A0F80001F00A36D5B0007143EA414F0EBC1F83903E3FC
7CA4EBE79EA200011478A301F713F8A2EBFF0F6C5CA3EBFE0790387C03E024207F9F27>
I<393FFC1FFF486C5A168016006C487E3901F807E06C6C485A4A5A017E90C7FC6D5AEB1F
7E5C6D5A13076D5A5C80497E130F497E143EEB3E3FEB7E1F90387C0F8001F87F00016D7E
3803F0033A7FFE1FFF80A2B54813C06C486C1380A222207E9F27>I<3A7FFC0FFF80486C
4813C0A36C486C13803A07E000F800000313015D13F00001130301F85B1200A26D485A13
7CA290387E0F80133EA2011F90C7FC5CA2130F149E14BE130714FC1303A25C1301A25CA2
13035CA213075C1208EA3E0F007F5B131FD87E7FC8FCEA7FFE6C5A5B6C5AEA07C022317E
9F27>I<001FB512FE4814FFA490380001FEEC03FCEC07F8EC0FF0001EEB1FE0C7EA3FC0
EC7F80ECFF00495A495A495AEB1FE0495A495A49C7FC485A4848131E4848133F485A485A
485A485AB7FCA46C14FE20207E9F27>I<EC07F8EC3FFC14FF130315F8903807FE00EB0F
F05C5CB0131FEB7F80EA3FFFB5C7FC5BA27F003F7FEA007FEB1FC0130FB08080EB07FE90
3803FFF815FC1300143FEC07F81E3A7CB327>I<EA7F80EAFFF013FC13FF7E00017F3800
3FC0131F130FB080EB07F8ECFFF06D13FC7FA25B4913F0ECF800EB0FE05CB0131F133F48
B45A007F90C7FCB5FC13FC13F0EA7F801E3A7CB327>125 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fe ecbx1200 12 53
/Fe 53 123 df<ED0FFF4AB512C0020F14F0027F80903A01FFF803FC499038C000FE010F
EB00034948497E49485B5C495A4C138001FF6E13005CA3705AEE01F893C8FCA74BB51280
B9FCA5C69038E00003B3B0007FD9FFC1B6FCA538467EC53E>28 D<EC01E01403EC0FC0EC
1F80EC3F00147E5C1301495A495A5C130F495A133F5C137F49C7FCA2485AA2485AA21207
5BA2120F5BA2121FA25B123FA4485AA612FFA25BAE7FA2127FA66C7EA4121F7FA2120FA2
7F1207A27F1203A26C7EA26C7EA26D7E133F80131F6D7E1307806D7E6D7E1300147E80EC
1F80EC0FC0EC03E014011B6476CA2C>40 D<12F07E127E7E6C7E6C7E6C7E7F6C7E6C7E12
007F137F80133F806D7EA26D7EA26D7EA2801303A2801301A280A27F1580A4EC7FC0A615
E0A2143FAE147FA215C0A6ECFF80A415005BA25CA213035CA213075CA2495AA2495AA249
5A5C137F91C7FC13FE5B1201485A485A5B485A485A48C8FC127E12F85A1B647ACA2C>I<
143E147F4A7EA56EC8FC00081508003E153E007F157FD8FFC0903801FF8001E05B9038F0
3E0701F85BD87FFE013F130001FF5B001F9038BEFFFC000390B512E0C66C91C7FC010F13
F8010113C0A2010F13F8017F13FF0003B612E0001F01BE13FC007F90383E7FFF01FE7FD8
FFF8010F138001F07F9038E07F0301C07FD87F009038007F00003E153E00081508C791C7
FC4A7EA56EC8FC143E292C79CA38>I<EA07C0EA1FF0EA3FF8EA7FFCEAFFFEA7EA7FFCEA
3FF8EA1FF0EA07C00F0F788E1F>46 D<EC03C01407141F147FEB03FF133FB6FCA413C3EA
0003B3B3ADB712FCA5264177C038>49 D<ECFFE0010F13FE013F6D7E90B612E0000315F8
2607FC0313FE3A0FE0007FFFD81F806D138048C7000F13C0488001C015E001F07F00FF6E
13F07F17F881A46C5A6C5A6C5AC9FC17F05DA217E05D17C04B13804B1300A2ED1FFC4B5A
5E4B5A4B5A4A90C7FC4A5A4A5AEC0FF04A5AEC3F804AC7127814FE495A494814F8D907E0
14F0495A495A49C8FC017C140149140348B7FC4816E05A5A5A5A5AB8FC17C0A42D417BC0
38>I<ECFFF0010713FF011F14C0017F14F049C66C7ED803F8EB3FFED807E06D7E81D80F
F86D138013FE001F16C07FA66C5A6C4815806C485BC814005D5E4B5A4B5A4B5A4A5B020F
1380902607FFFEC7FC15F815FF16C090C713F0ED3FFCED0FFEEEFF80816F13C017E0A26F
13F0A217F8A3EA0FC0EA3FF0487EA2487EA217F0A25D17E06C5A494913C05BD83F804913
80D81FF0491300D80FFEEBFFFE6CB612F800015D6C6C14C0011F49C7FC010113E02D427B
C038>I<163FA25E5E5D5DA25D5D5D5DA25D92B5FCEC01F7EC03E7140715C7EC0F87EC1F
07143E147E147C14F8EB01F0EB03E0130714C0EB0F80EB1F00133E5BA25B485A485A485A
120F5B48C7FC123E5A12FCB91280A5C8000F90C7FCAC027FB61280A531417DC038>I<00
07150301E0143F01FFEB07FF91B6FC5E5E5E5E5E16804BC7FC5D15E092C8FC01C0C9FCAA
EC3FF001C1B5FC01C714C001DF14F09039FFE03FFC9138000FFE01FC6D7E01F06D138049
15C0497F6C4815E0C8FC6F13F0A317F8A4EA0F80EA3FE0487E12FF7FA317F05B5D6C4815
E05B007EC74813C0123E003F4A1380D81FC0491300D80FF0495AD807FEEBFFFC6CB612F0
C65D013F1480010F01FCC7FC010113C02D427BC038>I<4AB47E021F13F0027F13FC49B6
FC01079038807F8090390FFC001FD93FF014C04948137F4948EBFFE048495A5A1400485A
120FA248486D13C0EE7F80EE1E00003F92C7FCA25B127FA2EC07FC91381FFF8000FF017F
13E091B512F89039F9F01FFC9039FBC007FE9039FF8003FF17804A6C13C05B6F13E0A249
15F0A317F85BA4127FA5123FA217F07F121FA2000F4A13E0A26C6C15C06D4913806C0180
14006C6D485A6C9038E01FFC6DB55A011F5C010714C0010191C7FC9038003FF02D427BC0
38>I<121E121F13FC90B712FEA45A17FC17F817F017E017C0A2481680007EC8EA3F0000
7C157E5E00785D15014B5A00F84A5A484A5A5E151FC848C7FC157E5DA24A5A14035D1407
4A5AA2141F5D143FA2147F5D14FFA25BA35B92C8FCA35BA55BAA6D5A6D5A6D5A2F447AC2
38>I<EC7FF00103B5FC010F14C0013F14F090397F801FFC3A01FC0003FE48486D7E497F
4848EC7F80163F484815C0A2001F151FA27FA27F7F01FE143F6D158002C0137F02F01400
6C01FC5B6E485A6C9038FF83FCEDE7F86CECFFE06C5D6C92C7FC6D14C06D80010F14F882
013F8090B7FC48013F14802607FC0F14C0260FF80314E04848C6FC496D13F0003F141F48
481307496D13F8150000FF157F90C8123F161F160FA21607A36D15F0127F160F6D15E06C
6C141F6DEC3FC06C6CEC7F80D80FFE903801FF003A07FFC00FFE6C90B55AC615F0013F14
C0010F91C7FC010013F02D427BC038>I<EC7FF0903807FFFE011F6D7E017F14E09039FF
E03FF0489038800FF848496C7E48488048486D7E001F80003F1680A2484815C08117E0A2
12FF17F0A617F8A45D127FA3003F5CA26C7E5D6C6C5B12076C6C131E6CEBC07C6CEBFFF8
013F5B010F01C013F00101130090C8FCA217E05DA2EA03C0D80FF015C0487E486C491380
A217004B5A150F5E49495A6C48495A01C0EBFFE0260FF0035B6CB65A6C4AC7FC6C14F86C
6C13E0D907FEC8FC2D427BC038>I<EE1F80A24C7EA24C7EA34C7EA24B7FA34B7FA24B7F
A34B7F169F031F80161F82033F80ED3E07037E80157C8203FC804B7E02018115F0820203
814B137F0207815D173F020F814B7F021F8292C77EA24A82023E80027E82027FB7FCA291
B87EA2498302F0C8FCA20103834A157F0107834A153FA249488284011F8491C97E498413
3E017E82B6020FB612F0A54C457CC455>65 D<B9FC18F018FE727E19E026003FFCC70007
7F05017F716C7E727E727EA2721380A37213C0A74E1380A24E1300A24E5A4E5A4E5A4D5B
05075B94B5128091B700FCC7FC18F018FF19E002FCC7000113F8716C7EF01FFE727E7213
801AC07213E0A27213F0A31AF8A71AF0A2601AE0604E13C0604E138095B5120005075BBA
12F86119C04EC7FC18E045447CC350>I<DCFFF01470031F01FF14F04AB6EAE0010207ED
F803023FEDFE0791B539E001FF0F4949C7EA3F9F010701F0EC0FFF4901C0804990C87E49
48814948814948167F4849163F4849161F5A4A160F485B19074890CAFC19035A5BA2007F
1801A34994C7FC12FFAE127F7F1AF0A2123FA27F6C18011AE06C7F19036C6D17C06E1607
7E6C6DEE0F806C6DEE1F006D6C5E6D6C167E6D6C6C5D6D6D4A5A6D01F0EC07F0010101FE
EC1FE06D903AFFF001FF80023F90B6C7FC020715FC020115F0DA001F1480030001F8C8FC
44467AC451>I<B9FC18F018FE727E19E026003FFEC7001F13F805017F9438003FFF060F
7F727F727F727F84737E737EA2737EA2737EA21B80A2851BC0A51BE0AD1BC0A51B8061A2
1B006162193F624F5A19FF624E5B06075B4E5B063F90C7FC4DB45A050F13F8BA5A19C04E
C8FC18F095C9FC4B447CC356>I<BA12F8A485D8001F90C71201EF003F180F1803180118
00A2197E193EA3191EA21778A285A405F890C7FCA316011603161F92B5FCA5ED001F1603
16011600A2F101E01778A2F103C0A494C7FC1907A21A80A2190FA2191FA2193FF17F0061
601807181F4DB5FCBBFC61A443447DC34A>I<B712E0A5D8001F90C7FCB3B3B3A4B712E0
A523447DC32A>73 D<B712F0A526003FFECAFCB3B1F00780A4180F1900A460A360A2187E
A218FE170117031707171F177FEE03FFB95AA539447CC343>76 D<B500FE067FB512806E
95B6FCA26F5EA2D8003F50C7FC013D6DEE03DFA2013C6DEE079FA26E6CEE0F1FA26E6C16
1EA26E6C163CA36E6C1678A26E6C16F0A26E6DEC01E0A26E6DEC03C0A36E6DEC0780A26F
6CEC0F00A26F6C141EA26F6C5CA36F6C5CA26F6C5CA26F6D485AA26F6D485AA26F6D485A
A3706C48C7FCA293383FF81EA2706C5AA2706C5AA3706C5AA2705BA2705BA2705BA2B605
7FB6128071C7FCA2173E171C61447CC36A>I<923807FFC092B512FE0207ECFFC0021F15
F091267FFE0013FC902601FFF0EB1FFF01070180010313C04990C76C7FD91FFC6E6C7E49
486F7E49486F7E01FF8348496F7E48496F1380A248496F13C0A24890C96C13E0A24819F0
4982003F19F8A3007F19FC49177FA400FF19FEAD007F19FC6D17FFA3003F19F8A26D5E6C
19F0A26E5D6C19E0A26C6D4B13C06C19806E5D6C6D4B13006C6D4B5A6D6C4B5A6D6C4B5A
6D6C4A5B6D01C001075B6D01F0011F5B010101FE90B5C7FC6D90B65A023F15F8020715C0
02004AC8FC030713C047467AC454>79 D<B9FC18F018FE727E19E0D8001F90C7000F7F05
017F716C7E727E727E721380A21AC084A21AE0A91AC0A24E1380A21A00604E5A4E5A4D48
5A050F5B92B712C096C7FC18FC18C092CBFCB3A7B712E0A543447DC34D>I<DAFFE0131C
010701FE133C013F9038FF807C90B6EAE0FC4815F9489038801FFF3907FC00014848EB00
7F4848143F4848140F491407007F15035B1601160012FF177CA27FA26D153C7F7F6D92C7
FC6C7EEBFFE014FE6CEBFFF015FF6C15E016FC6C816C6F7E6C826C826C6C81011F810107
811300020F80140003077FED007F82040F1380828212F082A282A27EA218007EA26C5D6C
5E6D14036D5D6D140701F84A5A01FFEC3FF002F8EBFFE0486CB65AD8FC1F92C7FCD8F807
14FC48C614F0480107138031467AC43E>83 D<003FBA12E0A59026FE000FEB8003D87FE0
9338003FF049171F90C71607A2007E1803007C1801A300781800A400F819F8481978A5C8
1700B3B3A20107B8FCA545437CC24E>I<B76C010FB512F8A526003FFEC93803E000B3B3
A9011F17076280190F6D606F151F6D95C7FC6D6D5D197E6D6D5D6D6D1403DA7FFC4A5A6E
B4EC3FF0020F9039F003FFE06E90B61280020193C8FC6E6C14FC030F14E09226007FFEC9
FC4D457CC356>I<007FBA12E0BB12F0A46C19E04406776757>95
D<903801FFE0011F13FE017F6D7E48B612E03A03FE007FF84848EB1FFC6D6D7E486C6D7E
A26F7FA36F7F6C5A6C5AEA00F090C7FCA40203B5FC91B6FC1307013F13F19038FFFC0100
0313E0481380381FFE00485A5B127F5B12FF5BA35DA26D5B6C6C5B4B13F0D83FFE013EEB
FFC03A1FFF80FC7F0007EBFFF86CECE01FC66CEB8007D90FFCC9FC322F7DAD36>97
D<EB7FC0B5FCA512037EB1ED0FF892B57E02C314E002CF14F89139DFC03FFC9139FF000F
FE02FCEB03FF4A6D13804A15C04A6D13E05CEF7FF0A218F8173FA318FCAC18F8A2177F18
F0A3EFFFE06E15C06E5B6E491380027C491300496C495A903AFC1FC07FFC496CB512F0D9
F00314C049C691C7FCC8EA1FF036467DC43E>I<EC3FFC49B512C0010F14F0013F14FC90
397FF003FE9039FFC001FF0003495A48494813805B120F485AA2485A6F1300007F6E5AED
00784991C7FCA212FFAC6C7EA3123F6DEC03C0A26C6C1407000F16806D140F6C6DEB1F00
6C6D133E6C01F05B3A007FFC03F86DB55A010F14C0010391C7FC9038003FF82A2F7CAD32
>I<EE03FEED07FFA5ED001F160FB1EC3FE0903803FFFC010FEBFF8F013F14CF9039FFF8
07FF48EBC00148903880007F4890C7123F4848141F49140F121F485AA3127F5BA212FFAC
127FA37F123FA26C6C141FA26C6C143F0007157F6C6C91B5FC6CD9C00314FC6C9038F01F
EF6DB5128F011FEBFE0F010713F89026007FC0EBF80036467CC43E>I<EC3FF80103B57E
010F14E0013F8090397FF83FF89039FFC007FC48496C7E48496C7E48486D1380485A001F
ED7FC05B003FED3FE0A2127F5B17F0161F12FFA290B7FCA401F0C9FCA5127FA27FA2123F
17F06C7E16016C6C15E06C6C14036C6DEB07C06C6DEB0F806C01F0EB3F0090397FFE01FE
011FB55A010714F0010114C09026001FFEC7FC2C2F7DAD33>I<EDFF80020F13E0027F13
F049B512F849EB8FFC90390FFE0FFE90381FFC1F14F8133FEB7FF0A2ED0FFCEBFFE0ED03
F0ED00C01600ABB612F8A5C601E0C7FCB3B0007FEBFFE0A527467DC522>I<DAFFE0137E
010F9039FE03FF80013FEBFF8F90B812C048D9C07F133F489038001FF84848EB0FFC4848
903907FE1F80001F9238FF0F00496D90C7FCA2003F82A8001F93C7FCA26D5B000F5D6C6C
495A6C6C495A6C9038C07FF04890B55A1680D8078F49C8FC018013E0000F90CAFCA47F7F
7F90B612C016FC6CEDFF8017E06C826C16FC7E000382000F82D81FF0C77ED83FC0140748
48020113808248C9FC177FA46D15FF007F17006D5C6C6C4A5A6C6C4A5AD80FFEEC3FF83B
07FFC001FFF0000190B612C06C6C92C7FC010F14F8D9007F90C8FC32427DAC38>I<EB7F
C0B5FCA512037EB1ED07FE92383FFF8092B512E002C114F89139C7F03FFC9138CF801F91
39DF000FFE14DE14FC4A6D7E5CA25CA35CB3A7B60083B512FEA537457CC43E>I<137C48
B4FC4813804813C0A24813E0A56C13C0A26C13806C1300EA007C90C7FCAAEB7FC0EA7FFF
A512037EB3AFB6FCA518467CC520>I<EB7FC0B5FCA512037EB293387FFFE0A593380FE0
004C5A4CC7FC167E5EED03F8ED07E04B5A4B5A037FC8FC15FEECC1FCECC3FE14C7ECDFFF
91B57E82A202F97F02E17F02C07FEC807F6F7E826F7E816F7F836F7F816F7F83707E163F
B60003B512F8A535457DC43B>107 D<EB7FC0B5FCA512037EB3B3B3A3B61280A519457C
C420>I<90277F8007FEEC0FFCB590263FFFC090387FFF8092B5D8F001B512E002816E48
80913D87F01FFC0FE03FF8913D8FC00FFE1F801FFC0003D99F009026FF3E007F6C019E6D
013C130F02BC5D02F86D496D7EA24A5D4A5DA34A5DB3A7B60081B60003B512FEA5572D7C
AC5E>I<90397F8007FEB590383FFF8092B512E0028114F8913987F03FFC91388F801F00
0390399F000FFE6C139E14BC02F86D7E5CA25CA35CB3A7B60083B512FEA5372D7CAC3E>
I<EC1FFC49B512C0010714F0011F14FC90397FF80FFF9026FFC0017F48496C7F4848C7EA
3FE000078248486E7E49140F001F82A2003F82491407007F82A400FF1780AA007F1700A4
6C6C4A5AA2001F5E6D141F000F5E6C6C4A5AA26C6C6CEBFFE06C6D485B27007FF80F90C7
FC6DB55A010F14F8010114C09026001FFCC8FC312F7DAD38>I<90397FC00FF8B590B57E
02C314E002CF14F89139DFC03FFC9139FF001FFE000301FCEB07FF6C496D13804A15C04A
6D13E05C7013F0A2EF7FF8A4EF3FFCACEF7FF8A318F017FFA24C13E06E15C06E5B6E4913
806E4913006E495A9139DFC07FFC02CFB512F002C314C002C091C7FCED1FF092C9FCADB6
7EA536407DAC3E>I<DA3FE0131E902603FFFC133E010F01FF137E013F1480903AFFF80F
E0FE489038E003F148EBC0014890388000FB4890C7127F49143F001F151F485A160F5B12
7FA3485AAC6C7EA46C7EA26C6C141F163F6C6C147F6C15FF6C6D5A6C9038E003EF6C9038
F01FCF6DB5128F011FEBFE0F010313F89038007FC091C7FCAD0307B512FCA536407CAC3B
>I<90387F807FB53881FFE0028313F0028F13F8ED8FFC91389F1FFE000313BE6C13BC14
F8A214F0ED0FFC9138E007F8ED01E092C7FCA35CB3A5B612E0A5272D7DAC2E>I<90391F
FC038090B51287000314FF120F381FF003383FC00049133F48C7121F127E00FE140FA215
077EA27F01E090C7FC13FE387FFFF014FF6C14C015F06C14FC6C800003806C15806C7E01
0F14C0EB003F020313E0140000F0143FA26C141F150FA27EA26C15C06C141FA26DEB3F80
01E0EB7F009038F803FE90B55A00FC5CD8F03F13E026E007FEC7FC232F7CAD2C>I<EB01
E0A51303A41307A2130FA2131FA2133F137F13FF1203000F90B51280B7FCA4C601E0C7FC
B3A3ED01E0A9150302F013C0137F150790393FF80F8090391FFC1F006DB5FC6D13FC0101
5B9038003FE023407EBE2C>I<D97FC049B4FCB50103B5FCA50003EC000F6C81B3A85EA2
5EA25E7E6E491380017FD901F713FE9138F807E76DB512C7010F1407010313FE9026007F
F0EBFC00372E7CAC3E>I<B6903803FFFCA5000101E09038003E006C163C80017F5D8017
F8013F5D6E1301011F5D6E1303010F5D6E13076D5DED800F6D92C7FC15C05E6DEBE01E16
3E6D143CEDF07C027F1378EDF8F8023F5B15FD021F5B15FF6E5BA36E5BA26E90C8FCA26E
5AA26E5AA21578362C7EAB3B>I<B5D8FE1FB539801FFFF0A500019027C0003FE0C7EA7C
007114786E17F86C6F6C5C6E1601017F6E6C5CA26E011F1403013F6F5C6E013F1407011F
6F5CA26E0179140F010F048090C7FC6E01F95C6D02F0EBC01E15806D902681E07F5B18E0
03C3157C6D9139C03FF07815E76DDA801F5B18F803FF14F96E9039000FFDE018FF6E486D
5BA36E486D5BA26E486D90C8FCA24B7F02075DA26E48147C4B143C4C2C7EAB51>I<B500
FE90383FFFF0A5C601F0903803E0006D6C495A6D6C495A011F4AC7FC6E5B6D6C137E6DEB
807C6D6D5A6DEBC1F0EDE3E06DEBF7C06EB45A806E90C8FC5D6E7E6E7F6E7FA24A7F4A7F
8291381F3FFCEC3E1F027C7F4A6C7E49486C7F01036D7F49487E02C08049486C7F49C76C
7E013E6E7E017E141FB500E090B512FCA5362C7EAB3B>I<B6903803FFFCA5000101E090
38003E006C163C80017F5D8017F8013F5D6E1301011F5D6E1303010F5D6E13076D5DED80
0F6D92C7FC15C05E6DEBE01E163E6D143CEDF07C027F1378EDF8F8023F5B15FD021F5B15
FF6E5BA36E5BA26E90C8FCA26E5AA26E5AA21578A215F85D14015D001F1303D83F805B38
7FC007D8FFE05B140F92C9FC5C143E495A387FC1F8EB07F06CB45A6C5B000790CAFCEA01
FC36407EAB3B>I<001FB71280A49026FC001F130001E0495A5B49495A90C7485A48495B
123E4A5B4A5B003C495BA24A90C7FC4A5A4A5AC7FC4A5A495B495BA2495B499038800780
491300A2495A4948130F49481400A2485B48495B485BA248495B4890C75A48485C150348
48EB1FFEB7FCA4292C7DAB32>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Ff ecbx1000 10 64
/Ff 64 123 df<913803FFC0027F13F00103B512FC010FEB00FED93FF8133FD97FE0EBFF
8049485A5A1480484A13C04A6C1380A36F1300167E93C7FCA592383FFFC0B8FCA4000390
C7FCB3ABB5D8FC3F13FFA4303A7EB935>28 D<EA0F80EA3FE0EA7FF0A2EAFFF8A213FCA3
127FA2123FEA0F9CEA001C133C1338A31378137013F0EA01E0A2EA03C0EA0780EA0F005A
121C12180E1D798C1B>44 D<EA0F80EA3FE0EA7FF0A2EAFFF8A5EA7FF0A2EA3FE0EA0F80
0D0D798C1B>46 D<49B4FC011F13F0017F13FC9038FF83FE4848C67E4848EB7F804848EB
3FC04848EB1FE0A2001F15F0A24848EB0FF8A3007F15FCA400FF15FEB3007F15FCA5003F
15F86D131FA2001F15F0A26C6CEB3FE0000715C06C6CEB7F806C6CEBFF003900FF83FE6D
B45A011F13F0010190C7FC27377CB530>48 D<141E143E14FE1307137FB5FCA3138FEA00
0FB3B3A5007FB61280A4213679B530>I<EB0FFE90387FFFC048B512F0000714FC390FE0
3FFF261F800F1380263F000313C0D87F8014E0EBE00100FF6D13F07FA2ED7FF8A46C5A6C
5A0006C7FCC8FCEDFFF0A216E05C16C04A138016004A5A4A5AEC1FF05D4A5A4AC7FC14FE
495AD903F01378495A495A495A49C712F8017C14F05B49130148B6FC5A5A5A5A5A4815E0
B7FCA425367BB530>I<EB03FF011F13F0017F13FC3901FC07FF2603F003138048486C13
C0496C13E0EA0FF86D14F0487EA66C4814E06C5A6C485AC714C04A138016004A5A4A5AEC
3FF090380FFFC05D15F090380007FE913801FF806E13C016E0ED7FF016F8ED3FFCA216FE
EA1FC0487E487E487EA416FCA249137F007F15F801C0EBFFF06C5A6C6C4813E0260FFC07
13806CB61200000114FC6C6C13F0010790C7FC27377CB530>I<ED07C0150FA2151F153F
157F15FF5CA25C5C5C5C143E143C5C5C1301495A5C495A495A5B133E5B13785B485A1203
485A5B48C7FC121E5A127C5AB81280A4C70001EBC000AA0103B61280A429367DB530>I<
001C15C0D81F80130701F8137F90B61280A216005D5D15F05D15804AC7FC14F090C9FCA7
EB03FE90381FFFE0017F13F89038FE07FC9038F003FFD9C0011380496C13C090C7FC000E
15E0C8127F16F0A216F8A3121FEA3FC0487E12FF7FA316F05B15FFD87F8014E0007EC713
C0003E5B003F4913806C6C481300390FF01FFE6CB512F8000114E06C6C1380D90FF8C7FC
25377BB530>I<EC0FF8ECFFFE0103EBFF8090390FF80FC090393FE003E090397F8001F0
9038FF000F48EC1FF84848133F485A120F5B121FA2003FEC1FF0ED0FE0484890C7FCA314
08EC7FF039FFF1FFFC01F313FFD9F78013809039FF007FC049EB3FE04914F0ED1FF85B16
FCA34914FEA4127FA5123F16FCA26C7E16F8000F143F6D14F0000715E06C6CEB7FC03A01
FF81FF806C90B51200013F13FC010F13F00101138027377CB530>I<123C123EEA3FE090
B71280A41700485D5E5E5E5EA2007CC7EA0FC000784A5A4BC7FC00F8147E485C5D14014A
5AC7485A4A5AA24A5A143F4AC8FCA214FEA213015C1303A21307A2130F5CA2131FA5133F
A96D5A6D5A6D5A29397BB730>I<49B47E010F13F0013F13FC9038FE01FF3A01F8007F80
4848EB3FC04848EB1FE0150F484814F01507121FA27F7F7F6D130F01FF14E014C09138E0
1FC06CEBF83F9138FE7F806C9038FFFE005D6C14F06C14FC6C14FF6D14806D14C090B612
E0D803FD14F02607F07F13F848487E261FC00F13FC383F8003007F010013FE90C7127F15
1F00FE140715031501A21500A216FC7E6C14016D14F86C6C13036DEB07F06C6CEB0FE0D8
0FFEEB7FC00003B61200C614FC013F13F00103138027377CB530>I<EB03FF011F13E001
7F13F83901FF01FE48486C7E4848EB7F80484814C0001FEC3FE0485AED1FF0127F16F8A2
12FF16FCA416FEA5007F143FA3123F157F6C7E000F14FF6C6C5A3903FE03DF6CB5129F6C
6C131FD91FFC13FCEB00201400A3D80FE0EB3FF8487E486C14F0A216E0157F16C0EDFF80
495A6C4848130090388007FE390FE01FF86CB55A6C14C0C691C7FCEB1FF027377CB530>
I<ED03E04B7EA24B7EA34B7EA24B7EA34B7EA292B57EA34A8015F302038015E1A2020780
15C0020F80ED807FA2021F80ED003F4A80023E131FA2027E80027C7F02FC814A7FA20101
824A7F49B77EA3498202C0C7FC010F824A147FA2011F8291C8123F4982013E151FA2017E
82017C8101FE83B500F80107B61280A4413A7DB948>65 D<B812C017FC17FF18C028007F
F000037F04007F717E717E171F84A2717EA74D5AA260173F4D5A4D5A4C13C0040F5B91B6
00FCC7FCA2EFFF8002F0C713F0EF3FF8717E717E717E19807113C0A319E0A719C0A25F4D
138019005FEF7FFE4C485AB912F018C095C7FC17F03B397DB844>I<DB3FFCEB01C00203
B5EAC003021FECF00791B6EAFC0F01039039FC00FF3F4901C0EB1FFFD91FFEC77E494814
03D97FF080494880485B48177F4849153F4890C9FC181F485A180F123F5B1807127FA249
93C7FC12FFAD127F7FF003C0123FA27F001F1707A26C6C1780180F6C6D16006C6D5D6C17
3E6C6D157ED97FF85D6D6C4A5A6DB44A5A010701C0EB0FE06D01FCEBFF80010090B548C7
FC021F14F8020314E09126003FFEC8FC3A3B7BB945>I<B87E17F817FF18C028007FF800
0713F09338007FF8EF1FFE717E050313807113C0A27113E0F07FF0A2F03FF8A219FC181F
A219FEA419FFAC19FEA419FC183FA219F8187F19F0F0FFE0A24D13C04D13804D1300EF1F
FEEF7FFC933807FFF0B912C095C7FC17FC178040397DB849>I<B912F0A426007FF8C7FC
EF1FF8170717031701A21700A21878A3043C137C183CA41800167CA216FC150391B5FCA4
ECF8031500167CA2163C180FA3181EA293C7FCA2183EA2183C187CA218FCA2EF01F81703
170F173FEE01FFB9FC18F0A338397DB83F>I<B912C0A43A007FF800039338007FE0171F
170F1707A21703A21701A318F0EE7800A41800A216F8A21501150791B5FCA4ECF8071501
1500A21678A693C8FCADB7FCA434397DB83C>I<DB3FFCEB01C00203B5EAC003021FECF0
0791B6EAFC0F01039039FC00FF3F4901C0EB1FFFD91FFEC77E49481403D97FF080494880
485B48177F4849153F4890C9FC181F485A180F123F5B1807127FA24993C8FC12FFAB043F
B61280A2127F7FDC0003EBC000123FA27F121FA26C7EA26C7F6C7F6C7F7ED97FF85C6D7E
6DB45C010701C05B6D01FCEBFF3F010090B5EAFE0F021FECF8030203ECE0009126003FFE
C9FC413B7BB94B>I<B6D8FC03B612F0A426007FF8C70001EBE000B3A391B8FCA402F8C7
1201B3A6B6D8FC03B612F0A444397DB84B>I<B612FCA439007FF800B3B3ADB612FCA41E
397DB824>I<010FB612C0A4D90001EBE000B3B3EA0F80EA3FE0EA7FF0A2EAFFF8A35E5C
13F0007F495BD83FE091C7FC391F800FFE390FF03FFC6CB512F0000114C026003FFCC8FC
2A3A7FB831>I<B600FC0103B512C0A426007FF8C8381FE00019804EC7FC18FEEF01F84D
5A4D5A4D5AEF3F80057EC8FC5F4C5A4C5AEE0FE0EE1F804CC9FC167E5EED03F84B7E4B7E
4B7E4B7F5D02F9B57EDAFBF77FDAFFE37F15C103807F4A487F4A6D7E4A133F707E707F84
82707F707F8482717E717E8483717F717F858385B600FC017FEBFFE0A443397DB84B>I<
B7FCA426007FF8C9FCB3ACEF0780A5170F1800A35FA25FA25F5F5E5EEE0FFE167FB8FCA4
31397DB839>I<B500F80403B512F06E5EA26E5ED8007FF1E000A2D97BFF161EA201796D
5DA201786D5DA26E6C5DA36E6C4A5AA26E6C4A5AA26E6C4A5AA26E6C4A5AA26E6C141EA3
6E6D5BA26E6D5BA26F6C5BA26F6C485AA36F6C485AA26F6C485AA26F6C48C7FCA2923803
FF1EA36F13BCA26F13F8A2705AA2705AA213FCB500FC6D4848B612F0A2EE0F80EE070054
397DB85B>I<B500FC0203B512F0A28080C66C6D90390003F0006F6E5A81017B7F137981
01787F6E7E6E7E6E7F6E7FA26E7F6E7F6E7F6E7F6F7E153F826F13806F13C06F13E06F13
F06F13F88117FCEE7FFEEE3FFF7013817013C17013E18218F17013F97013FDEF7FFF8383
A28383838383187FA2183F181F01FC160FB500FC150718031801A244397DB84B>I<EDFF
F8020FEBFF80027F14F0903A01FFC01FFC010790380007FFD91FFC010113C0D93FF06D6C
7E49486E7E49486E7E48496E7E48834890C86C7EA248486F1380A248486F13C0A2003F18
E0A348486F13F0A400FF18F8AC007F18F06D5DA3003F18E0A26D5D001F18C0A26C6C4B13
806C18006E5C6C6D4A5A6C5F6C6D4A5A6D6C4A5AD93FFC49485A6DB401075B0107D9C01F
90C7FC010190B512FC6D6C14F0020F1480020001F8C8FC3D3B7BB948>I<B8FC17F017FE
EFFF8028007FF8000F13C0040113E07013F0EF7FF8EF3FFCA2EF1FFEA218FFA818FEA2EF
3FFCA2EF7FF8EFFFF04C13E0040F13C091B7120017FC17E002F8C9FCB3A4B612FCA43839
7DB841>I<EDFFF8020FEBFF80027F14F0903A01FFE03FFC010790380007FFD91FFC0101
13C049486D7FD97FE0EC3FF049486E7E488348496E7E4890C86C7EA248486F1380A2001F
18C04981003F18E0A3007F18F04981A300FF18F8AC007F18F0A36D5D003F18E0A36C6C4B
13C0A2000FDA1FC014806C6C90267FF0071300EDFFF86C903A81F07C0FFE6C903AC3C01E
1FFC6CDA800F5BD97FE3ECBFF0D93FF36DB45AD91FFF5D010701C091C7FC01019038F01F
FC6D6CB500F01308020F6E131C0200EBF9FC92260001FE133C9438FF80FC18FF8219F8A2
8319F0A27113E0A27113C0711380711300EF01FC3E4A7BB948>I<B712FCEEFFE017FC17
FF28007FF8000F13C004017F707F717E717EA2717EA284A760A24D5A604D5A4D5A04035B
041F90C8FC91B612FC17E0839139F8003FFCEE0FFF707F707F8284A2707FA584A51A601A
F084177F1901DD3FFE13E0B600FC011F130394390FFF87C071EBFF8005011400CBEA1FFC
443A7DB848>I<D907FF130E013FEBE01E90B5EAF83E0003ECFE7E3A07FC01FFFE390FF0
001F4848130F48481303491301007F140090C8FC167E5A163EA27F161E7F7F6D91C7FC13
FC387FFFE014FEECFFF06C14FE6F7E6C816C15F06C816C81C681133F010F801301D9000F
1480EC007F030F13C01503818100F0157FA3163FA27E17807E167F6C16007E6D14FE01E0
495A01F813039039FF801FF800FC90B512E0D8F83F5CD8F00749C7FC39E0007FF02A3B7B
B935>I<003FB91280A4D9F800EBF003D87FC09238007FC049161F007EC7150FA2007C17
07A200781703A400F818E0481701A4C892C7FCB3AE010FB7FCA43B387DB742>I<B600FC
011FB512C0A426007FF8C8381FC000725AB3B3181F013F94C7FC8060011F163E6D6C157E
187C6D6C15FC6D6D495A6D6DEB07F06D01F0EB1FE0DA7FFEEBFFC0021FB6C8FC02075C02
0014F0030F1380423A7DB849>I<B600F00103B512E0A4C601F0C83807F0006E5E017F5F
6E150FA2013F5F6E151F011F94C7FC6E5D6D163E6F147E6D167CA26F14FC6D5E6F13016D
5E6F13036D5E811707027F5D6F130F023F5D6F131F021F92C8FC815F6E143EEE807E6E14
7CEEC0FC6E5C16E016E16E5C16F36E5C16FF6F5BA36F5BA26F90C9FCA26F5AA36F5AA26F
5AA26F5A433A7EB848>I<B6D8E01FB500FC90383FFFFCA4000101F0C7D83FFCC8EA7E00
6C71153C171F6E197C017F701578836E7014F8013F6F5E6E1801011F4B6D5CA26E18036D
4B6D5CA26D6D496D495A173C6F170F6D037C6D91C7FCEF787F6F5F6D4B6C6C131E816D02
016E5BEFE01F03F8177C027F01036E13784D7E03FCEE80F8023F49486C5C15FE021F010F
EDC1E04D7E03FF16C36E49EDE3C0041E7F049E15F76E01BC6D5C04FC15FF6E95C8FC4C80
A26E5F4C143F6E5F4C141FA2037F5E4C140FA26F486E5AA2031F5E93C812036F5E5E3A7E
B863>I<B600F049B512E0A4C601FCC8380FF000017F705A6E4B5A6D6C4B5A6D7F4EC7FC
6D6D147E6D7F606D6D495A6D7F4D5A6D6D495A6E7E4D5A6E6C495A6E13804DC8FC6EEBC0
7E6E13E05F6EEBF1F86E13F9EEFBF06EEBFFE0815F6F5B816F90C9FCB3A2021FB6FCA443
397EB848>89 D<007FB9FCBA1280A36C18003905786A4A>95 D<EB3FFE0003B512E0000F
14F8391FF00FFE003FEB03FF6D6C7F6E7FA26F7EA26C5A6C5AEA0380C8FCA2EC3FFF010F
B5FC137F3901FFF87F00071380380FFE00EA3FF85B485A12FF5BA415FF6D5A127F263FF0
0713F83B1FFC1FBFFFC0390FFFFE1F0003EBF80F39003FE0032A257DA42E>97
D<13FFB5FCA412077EAF4AB47E020F13F0023F13FC9138FE03FFDAF00013804AEB7FC002
80EB3FE091C713F0EE1FF8A217FC160FA217FEAA17FCA3EE1FF8A217F06E133F6EEB7FE0
6E14C0903AFDF001FF80903AF8FC07FE009039F03FFFF8D9E00F13E0D9C00390C7FC2F3A
7EB935>I<903801FFC0010F13FC017F13FFD9FF8013802603FE0013C048485AEA0FF812
1F13F0123F6E13804848EB7F00151C92C7FC12FFA9127FA27F123FED01E06C7E15036C6C
EB07C06C6C14806C6C131FC69038C07E006DB45A010F13F00101138023257DA42A>I<EE
7F80ED7FFFA4150381AF903801FF81010F13F1013F13FD9038FFC07F0003EB001FD807FC
1307000F8048487F5B123FA2485AA312FFAA127FA27F123FA26C6C5B000F5C6C6C5B6C6C
4913C02701FF80FD13FE39007FFFF9011F13E1010113012F3A7DB935>I<903803FF8001
1F13F0017F13FC3901FF83FE3A03FE007F804848133F484814C0001FEC1FE05B003FEC0F
F0A2485A16F8150712FFA290B6FCA301E0C8FCA4127FA36C7E1678121F6C6C14F86D14F0
00071403D801FFEB0FE06C9038C07FC06DB51200010F13FC010113E025257DA42C>I<EC
1FF0903801FFFC010713FF90391FF87F8090383FE0FFD9FFC113C0A2481381A24813016E
1380A2ED3E0092C7FCA8B6FCA4000390C8FCB3ABB512FEA4223A7DB91D>I<161FD907FE
EBFFC090387FFFE348B6EAEFE02607FE07138F260FF801131F48486C138F003F15CF4990
387FC7C0EEC000007F81A6003F5DA26D13FF001F5D6C6C4890C7FC3907FE07FE48B512F8
6D13E0261E07FEC8FC90CAFCA2123E123F7F6C7E90B512F8EDFF8016E06C15F86C816C81
5A001F81393FC0000F48C8138048157F5A163FA36C157F6C16006D5C6C6C495AD81FF0EB
07FCD807FEEB3FF00001B612C06C6C91C7FC010713F02B377DA530>I<13FFB5FCA41207
7EAFED7FC0913803FFF8020F13FE91381F03FFDA3C01138014784A7E4A14C05CA25CA291
C7FCB3A3B5D8FC3F13FFA4303A7DB935>I<EA01F0EA07FC487EA2487EA56C5AA26C5AEA
01F0C8FCA913FF127FA412077EB3A9B512F8A4153B7DBA1B>I<141FEC7FC0ECFFE0A249
13F0A56D13E0A2EC7FC0EC1F0091C7FCA9EC0FF0EB0FFFA4EB007F143FB3B0121FEA3F80
EA7FC0EAFFE0EC7FE0A215C014FF6C481380903883FE006CB45A000F13F0000113801C4B
86BA1D>I<13FFB5FCA412077EAF92380FFFE0A4923803FC0016F0ED0FE0ED1F804BC7FC
157E5DEC03F8EC07E04A5A141FEC7FE04A7E8181A2ECCFFEEC0FFF496C7F806E7F6E7F82
157F6F7E6F7E82150F82B5D8F83F13F8A42D3A7EB932>I<13FFB5FCA412077EB3B3ACB5
12FCA4163A7DB91B>I<01FED97FE0EB0FFC00FF902601FFFC90383FFF80020701FF90B5
12E0DA1F81903983F03FF0DA3C00903887801F000749DACF007F00034914DE6D48D97FFC
6D7E4A5CA24A5CA291C75BB3A3B5D8FC1FB50083B512F0A44C257DA451>I<01FEEB7FC0
00FF903803FFF8020F13FE91381F03FFDA3C011380000713780003497E6D4814C05CA25C
A291C7FCB3A3B5D8FC3F13FFA430257DA435>I<903801FFC0010F13F8017F13FFD9FF80
7F3A03FE003FE048486D7E48486D7E48486D7EA2003F81491303007F81A300FF1680A900
7F1600A3003F5D6D1307001F5DA26C6C495A6C6C495A6C6C495A6C6C6CB45A6C6CB5C7FC
011F13FC010113C029257DA430>I<9039FF01FF80B5000F13F0023F13FC9138FE07FFDA
F00113800003496C13C00280EB7FE091C713F0EE3FF8A2EE1FFCA3EE0FFEAA17FC161FA2
17F8163F17F06E137F6E14E06EEBFFC0DAF00313809139FC07FE0091383FFFF8020F13E0
020390C7FC91C9FCACB512FCA42F357EA435>I<49B4EB0780010FEBE00F013FEBF81F90
39FFC07C3F0003EB803E3A07FE000F7F4848EB07FF121F497F123F497F127FA25B12FFAA
6C7EA36C7E5D6C7E000F5C6C6C5B6C6C133F6CEBC0FD39007FFFF1011F13C10101130190
C7FCAC037F13FEA42F357DA432>I<9038FE03F000FFEB0FFEEC3FFF91387C7F809138F8
FFC000075B6C6C5A5CA29138807F80ED3F00150C92C7FC91C8FCB3A2B512FEA422257EA4
27>I<90383FF0383903FFFEF8000F13FF381FC00F383F0003007E1301007C130012FC15
787E7E6D130013FCEBFFE06C13FCECFF806C14C06C14F06C14F81203C614FC131F903800
7FFE140700F0130114007E157E7E157C6C14FC6C14F8EB80019038F007F090B512C000F8
140038E01FF81F257DA426>I<130FA55BA45BA25B5BA25A1207001FEBFFE0B6FCA30003
90C7FCB21578A815F86CEB80F014816CEBC3E090383FFFC06D1380903803FE001D357EB4
25>I<01FFEC3FC0B5EB3FFFA4000714016C80B3A35DA25DA26C5C6E4813E06CD9C03E13
FF90387FFFFC011F13F00103138030257DA435>I<B539F001FFF8A4000390C7EA1F0016
1E6E133E6C153C6E137C6C15786E13F8017F5CECF001013F5C14F8011F495AA2ECFC0701
0F5CECFE0F010791C7FC6E5A6D131E15BE6D13BC15FC6D5BA36E5AA26E5AA26E5AA26E5A
A22D257EA432>I<B500F1B538803FFFA43D07FE000FF80003E06C6C010715C082028015
076C6E6C148015076C01C0ED0F00826E485C017FED801E5D90273FF01E7F5B17C0DAF83E
147C011F90393C3FE078037C14F8903B0FFC781FF0F0A29139FEF00FF10107EDF9E002FF
14FB6D496CB45AA24B7E6D5EA26D496C90C7FCA292C7FC6E5CA2023E147C023C143C4025
7EA445>I<B539F01FFFF0A4000390398003F8006C01C013E06C1407D97FE05B6D6C485A
6E48C7FC90381FFC3E010F5B903807FEFC6D6C5A5D6D5B6D5B6E7E6E7E814A7EA24A7E90
3801F3FFD903E37FD907C17FEB0FC049486C7E4A6C7E013E80496D7E49130F00016E7EB5
90383FFFF8A42D257EA432>I<B539F001FFF8A4000390C7EA1F00161E6E133E6C153C6E
137C6C15786E13F8017F5CECF001013F5C14F8011F495AA2ECFC07010F5CECFE0F010791
C7FC6E5A6D131E15BE6D13BC15FC6D5BA36E5AA26E5AA26E5AA26E5AA292C8FCA25C141E
003F133E387F803C38FFC07C147814F8EBC1F0EBC3E06C485A387D1F80D83FFFC9FCEA1F
FCEA07F02D357EA432>I<003FB612C0A3D9F0031380EB800749481300003E5C003C495A
007C133F5D0078495A14FF5D495B5BC6485B92C7FC495A131F5C495A017FEB03C0EBFFF0
14E04813C05AEC80074813005A49EB0F80485A003F141F4848133F9038F001FFB7FCA322
257DA42A>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fg ecbx1440 14.4 45
/Fg 45 122 df<EE7FFC031FB57E4AB612E0020715F8023F9038C00FFC913AFFFC0001FE
4901F0EB007F010701C0EB03FF4949497F4990C75A5B5C495A4D7F01FF6F5B5CA27190C7
FC715AEF00F895C8FCAA0407B512C0BAFCA5C601F8C7120F83B3B3A6B6D8F807B612C0A5
42547DD349>28 D<913803FF80023F13F849B6FC010715C04901017F903A3FFC007FF8D9
7FF0EB1FFC49486D7E48496D7E4A7F4817804890C76C13C0A248486E13E0A2001F17F0A3
003F17F8A249157FA2007F17FCA600FF17FEB3A5007F17FCA6003F17F86D15FFA3001F17
F0A3000F17E06D5C6C17C0A26C6D4913806C17006E5B6C6D495A6D6C495AD93FFCEB7FF8
903A0FFF01FFE06D90B55A010192C7FCD9003F13F802031380374F7BCD42>48
D<151E153E15FE1403140F147FEB07FF0003B5FCB6FCA3EBF87FEAFC00C7FCB3B3B3A600
7FB712FCA52E4E76CD42>I<EC1FFE49B512F0010F14FC013FECFF804915E02701FF803F
7F2703FC000713FCD807F001017F48486D7FD81F806E138048C87E7013C0D87FE016E001
F8806D16F000FF817F7013F8A56C5AA26C5A6C5AEA0380C914F05EA218E05E18C05E1880
4C13005F4C5A4C5A5F4B5B4B5B4B5B94C7FCED0FFC4B5A4B5AED7FC04B5A4A90C8FCEC03
FC4A5A4A4814F84A5A4A5A4AC8FC02FEEC01F0495A495A495A5CD90F80140349C8FC013E
1507017FB7FC90B812E05A5A5A5A5A5A5AB9FC18C0A4354E7ACD42>I<913807FFC0027F
13FC0103B67E010F15E090261FF80313F890267FC0007F01FEC7EA3FFE48488148486E13
8013FE486C6C6D13C0804817E080A66C5B18C06C5B6C90C75AD80038168090C8FC4C1300
A24C5A5F4C5A4B5B4B13C0030F5BDB7FFEC7FC91387FFFF816C016FCEEFF80DA000313E0
9238007FF8EE3FFE707E70138018C07013E018F07013F8A218FC82A218FEA3EA03C0EA0F
F0EA3FFC487EA2B5FCA218FCA25E18F8A26C4816F0495C4916E0D83FE04A13C06C485CD8
0FF04A1380D807FE91387FFE003B03FFE003FFFC6C90B65A6C6C15E0010F92C7FC010114
FCD9001F1380374F7BCD42>I<17FC1601A216031607160FA2161F163F167FA216FF5D5D
A25D5D5D167F153E157E15FC15F8EC01F01403EC07E015C0EC0F80141FEC3F00143E5C14
FC495A5C495A1307495A5C49C7FC5B137E137C5B1201485A5B485A120F485A90C8FC123E
127E5ABA1280A5C901FCC7FCAF021FB71280A5394F7CCE42>I<486C150601F0153E01FE
EC01FED9FFF0133F91B65A5F5F5F5F5F94C7FC16FC5E16E093C8FC15FC01F0138091CAFC
AC913807FF80023F13F891B512FE01F36E7E9026FFFC0113E09139E0007FF891C76C7E49
6E7E01F86E7E5B7013804916C0C9FC18E08218F0A418F8A31203EA0FE0EA3FF8487EA212
FF7FA218F0A25B5E6C4816E05B01C016C06CC85A18806C6C4A13007FD80FF04A5A6C6CEC
FFFCD803FE4913F02701FFE00F5B6C6CB612806D92C7FC010F14F8010114C09026003FFC
C8FC354F7ACD42>I<ED07FE92B512C0020314F0021F14FC91397FFC01FE9139FFE0007F
01030180EB3F804990C7121F4948EC7FC0494814FF4948010313E0495A49485B5A485BA2
485BA2486F13C091C7FC4803001300177E94C7FC5AA25B127FA2ED3FF04AB5FC020714C0
00FF4914F091391F807FF891393E001FFE02786D7E4A6D13807013C06D5A4A6D13E018F0
5C7013F8A291C813FCA44916FEA3127FA6123FA37F6C17FCA36C17F85E7E6E15F06C17E0
6C6D5B6E15C06C4B13806D6C491300D93FFC495A6DB4EBFFFC010790B512F06D5D010015
80021F01FCC7FC020313C0374F7BCD42>I<121F7F7FEBFF8091B8FCA45A18FE18FC18F8
18F0A218E018C018804817000180C8123E007EC9127E5F007C4B5A4C5A5F16074C5A484B
5A4CC7FC167E167CC912FC4B5A4B5AA24B5A150F4B5AA24B5AA24BC8FC5DA25C5D1403A2
14075D140FA3141FA2143FA34A5AA414FFA65BAB6D5B6E5A6E5A6E5A385279D042>I<91
3803FFC0023F13FC49B67E010715E090260FFC0013F8D93FE0EB1FFCD97F80EB07FE49C7
6C7E496E1380484880000317C049157F120718E0173F120FA27FA27F7F6E147F02E015C0
8002FC14FF6C01FF15806F481300EDE0036C9138F807FE6F485A6C9138FF1FF06CEDFFE0
17806D4AC7FC7F010F6E7E6D81010115F06D81010315FE010F81D93FF71580D97FC115C0
2701FF807F14E048EB001F48486D14F04848010314F848481300496E13FC003F151F4914
07007F6F13FE491400177F00FF163F49151F170F1707A21703A218FCA27F127F6DED07F8
A26C6CED0FF07F6C6CED1FE06C6CED3FC06C6CEDFF806C01C0010313006C01FCEB3FFE6C
6CB612F8011F15E001071580010002FCC7FC020F13C0374F7BCD42>I<913807FF80027F
13F849B512FE01076E7E90261FFE0113E0903A7FF8003FF049486D7E48496D7E48496D7E
484980486F138091C7FC486F13C05A18E0485A18F0A27013F812FFA318FCA618FEA35E12
7FA4003F5DA26C7E5E7E6C6D5B161E6C7F6C6D5B6C6C6C13F890393FFC03F06DB55A0107
4A13FC01001400EC1FF891C8FCA218F85EA301FC16F0487E2607FF8015E05E486D15C0A2
4C1380A24C13005F4A131F6C4B5A49C7485A494A5A6C48495B6D01075B2701FF803F90C7
FC6C90B512FC013F5C6D14C0010791C8FC9038007FF0374F7BCD42>I<173FA24D7EA34D
7EA24C7FA34C7FA24C7FA34C7FA24C7FA34C7F163E83047E80EE7C3F04FC8016F8830301
814C7E03038116E0830307814C7E030F81168083031F811600834B81033E80037E82157C
8403FC824B800201835D840203834B800207835D92B8FC4A83A34A8392C9FC4A83143E85
027E84027C8202FC845C850101854A820103855C850107854A82A2494884D93FF082B600
F0020FB712C0A55A547CD363>65 D<B912FEF0FFF019FE737E1AE0D8000F01C0C7001F7F
06037F727F726C7E867313807313C0A27313E0A37313F0A94F13E0A34F13C01B80614F13
00624F5A06035B4E13E0063F5B92B8C7FC19F8A2F1FF8003C0C7001F13E0060113F89538
007FFE737E070F13C01BE07313F0851BF87313FCA27313FEA31BFFA91BFEA2611BFCA261
4F13F81BF0614F13E0077F13C04EB51280060FEBFE00BB5A1AF01AC04FC7FC19C050527B
D15D>I<932603FFF01407047F01FF140F0307B600E0131F033F03F8133F92B700FE137F
02039126C003FF13FF020F01F8C7EA3FC1023F01C0EC0FE391B5C80003B5FC4901FC8149
49814901E082011F498249498292CA7E4948834948835A4A83485B4885A24849187FA248
5B1B3FA2485B1B1FA25AA21B0091CDFCA2B5FCAE7EA280A36C1A1FA36C7FA21B3F6C7F1B
3E6C7F1B7E6C6D187C6C1AFC6E18F86C19016D6CEF03F06D7E6FEE07E06D6DEE0FC00107
6DEE1F806D01F8EE3F006D6D16FE6D01FF4B5A023F01C0EC07F8020F01FCEC3FF0020390
3AFFC001FFC0020091B6C7FC033F15FC030715F0DB007F1480040301F0C8FC505479D25F
>I<BAFC19F819FF1AE01AF8D8000701F0C7001F13FE06017FDE003F13C0070F7F07037F
737F737F747E747E747F86747F8886888688A2747FA3881B7FA288A51D80AF1D00A564A2
1BFF64A3505BA2505BA2505BA2505B505B99C7FC505A1A7F4F485A4F13F0070F5B073F5B
4EB55A061F49C8FCBB12F81AE097C9FC19F896CAFC59527CD165>I<BB12FEA5D8000F01
E0C700077FF0007F191F190785858586A2F23F80A21A1FA31A0FA4DD01F014C01A07A497
C7FCA21703A31707170F171F17FF92B6FCA5EDE000171F170F17071703A317011BF8A3F2
01F0A394C8FCA21A03A21BE0A21A07A31A0F1BC01A1F1A3FA21A7F1AFF4F13801907191F
197F060FB5FCBCFCA21B00A34D527CD156>I<932603FFF01407047F01FF5C0307B600E0
5B033F03F85B92B700FE5B02039126C003FF5B020F01F8C7EA3FC1023F01C0EC0FE391B5
C80003B5FC4901FC814949814901E082011F498249498292CA7E4948834948835A4A8348
5B4885A2484984A2485B87A2485B87A25AA298C8FC91CFFCA2B5FCAE7E067FB7128080A3
7E95C76C90C7FC807EA36C7FA26C7FA26C7F7E806C7F137F6D7E816D6D93B5FC01077F6D
01F85D6D7F6D01FF5D023F01E0EC0FEF020F01FCEC3FE30203903AFFE001FF81020091B6
C6FC033F03FC133F030703F0130FDB007F02801303040301F8CAFC595479D267>71
D<B8D88007B712FCA5D8000701F0C9003FEB8000B3AE92BAFCA503F0C9123FB3B1B8D880
07B712FCA55E527CD167>I<B81280A5D8000701F0C7FCB3B3B3B2B81280A529527DD130>
I<B812E0A5D8000F01E0CAFCB3B3A91AF8A419011AF0A51903A31907A2190F1AE0191FA2
193F197F19FF60180760187F0503B5FCBB12C0A545527CD14F>76
D<B600F04EB612F06F606F60A3D800076D4E49C7FCA2DADFFFF01F7FA202CF6D173EA302
C76D177CA202C36D17F8A202C16DEE01F0A202C06DEE03E0A36F6CEE07C0A26F6CEE0F80
A26F6CEE1F00A36F6D153EA26F6D5DA26F6D5DA36F6D4A5AA26F6D4A5AA2706C4A5AA370
6C4A5AA2706C4AC7FCA2706D133EA3706D5BA2706D5BA2706D485AA2706D485AA3716C48
5AA2716C485AA2716C48C8FCA37113BEA27113FCA2715BA3715BA2715BA2D91FF06F5AB6
00FE050FB712F0A2725AA272C7FC74527CD17D>I<DA0FFE141C91B500F0133C010702FC
137C011F02FF13FC017F15C19026FFF00113E148903980001FFB4890C7EA07FFD807FC14
014848804848153F171F4848150FA2007F1607491503A2170112FFA217007FA26D167CA2
7F7F6D93C7FC6C7E14C014F8ECFF806C14F8EDFFC06C15FC6CEDFF8017F06C16FC6C826C
707E6C836D82011F8201078213016D6C81020781EC007F030380ED003F04031480160017
3F837113C0838312F883A3837EA319807EA26C5E19007F6D4B5A7F6D4B5A01FC4B5A6D15
1FD9FFC04A5AD97FF8ECFFE028FE1FFF80075B010790B6C7FCD8FC0115FC486C6C14F048
010F14C0489026007FFCC8FC3A5479D249>83 D<003FBB12FCA59126C0007FEB000301FC
C7ED003FD87FF0F00FFE49180749180349180190C81600A2007E1A7EA3007C1A3EA500FC
1A3F481A1FA6C91700B3B3AC49B912C0A550517BD05B>I<B700F8017FB600FC49B612E0
A5D8001F01C0C8001F01E0C9EBC0000E1FC7FC6F6F606D73163E6F81207E6D73167C6F81
20FC6D735E6F6F17016D735E616F1B036D735E616F1B076E4C6E5D7015BF1F0F6E041F6E
5D70031F161F6E9AC8FC073F8070DA3E0F5E6E73143E197E70DA7C07167E6E04FC6E147C
704A7E1FFC6E03016F5C704A7E6E515A060381704A6C15036E735C1807704A6D14076F07
805B7148487F1E0F6F021F04C05B05C090C77E1E1F6F4A04E090C9FCDDE03E6E5C6FF1F0
3E187EDDF07C6E147E6FF1F87C18FC71486E14FC6F01F9715ADDFDF0801DFD6F01FFEFFF
F04E806F62A24E817061A24E81706195C97EA27096CAFC4D82040F60A24D1607040760A2
4D16030403604D160104016083537ED188>87 D<EC3FFE0107B512E0011F14FC017F14FF
2701FFC00F13C02703FE00037F486C01007F6E6D7E486D80707EA2707EA3707F6C5B6C90
C7FC6C5AC9FCA60307B5FC0203B6FC147F0103B7FC011FEBF00F017F1300EBFFFC000313
F04813C0485B4890C7FC5A5B485AF081F012FF5BA35EA26D5C127F6D5C003F03F713C36D
D901E314E06CD9C00714FF00079026F01F8114C06C90B5C61480C602FC6D1300011F01F0
EB3FFC01010180EB07F03C387CB642>97 D<EB3FF8B5FCA51203C6FCB3A4EE7FF00307B5
FC031F14C0037F14F0913AF9FF007FFCDAFFF8EB1FFF03E001077F03806D7F92C76C7F4A
6E7F5C4A6F7E85183F85A38584A31A80AD1A00A36061A261187F616E15FF616E4A5B6E4A
5B6F495BDACFE04990C7FCDA87F0EB3FFE913A01FE01FFF8496CB65A49013F14C0490107
49C8FC90C813E041547DD249>I<913803FFE0023F13FE91B67E010315E0010F9038003F
F8D93FFCEB07FC4948497E4948131F4849497E485B485BA24890C7FC5A5B003F6F5A705A
705A007F92C8FC5BA312FFAD127F7FA3123F7F6CEE0F80A26C6D141F18006C6D5C6C6D14
3E6C6D147E6C6D5C6D6C495A6DB4EB07F0010F9038C01FE06D90B5128001014AC7FCD900
3F13F80203138031387CB63A>I<943803FF80040FB5FCA5EE003F170FB3A4913803FF80
023F13F849B512FE0107ECFF8F011F9038C03FEF90273FFE0007B5FCD97FF8130149487F
484980484980484980488291C8FC5A5B123FA2127F5BA312FFAD127FA37F123FA3121F7F
6C5E6C6D5C5F6C6D91B5FC6C6D5B6C6D4914E0D97FFCD90FEFEBFF80D91FFFEB7F8F0107
90B5120F010114FC6D6C13E00207010049C7FC41547CD249>I<913807FF80027F13F849
B512FE01076E7E011F010313E0903A3FFC007FF0D97FF06D7E49486D7E4849130F48496D
7E48824890C77E1880485A82003F17C0A3485A18E082A212FFA290B8FCA401FCCAFCA612
7FA37F123FA2EF03E06C7E17076C17C06C6D140F18806C6D141F6C6DEC3F006C6D147ED9
7FFC495AD91FFFEB07F86D9038E03FF0010390B512C001005D023F01FCC7FC020113E033
387CB63C>I<ED1FF8913803FFFE020FEBFF80023F14C09139FFF83FE001039038E0FFF0
49138049010113F85BEB3FFEA2EB7FFCA26F13F0495AEE7FE0EE1F8093C7FCAEB712C0A5
C601F8C8FCB3B3A7B612FEA52D547CD328>I<DA1FFE14FE49B539E007FF80010FDAFC1F
13C0013FDAFF7F13E090267FF807EBFF072701FFE001EBF07F48497E484990387FF83F91
C7003F14C048EEFC1F489338FE070049021F90C7FCA2003F82A9001F5EA26D143F6C5E6C
5E6E137F6C6D495A6C6D485B6CD9F80713804890B6C8FCD803EF14FC01C114E02707C01F
FEC9FC49CBFCA2487EA37FA27F13FC90B612FE6CEDFFF017FCEFFF806C8318F06C836C83
7F48B87E1207D80FFCC700037F4848EC003F4848150F48486F138083485A83A56D5D007F
18006D5D003F5F6C6C4B5A01FE153FD807FFED7FF06C01C049485AC601FC011F1380013F
B648C7FC010F15F8010115C0D9000F01F8C8FC3B4F7CB542>I<EB3FF8B5FCA51203C6FC
B3A4EE1FFC93B57E030314E0030F14F892391FC07FFC92397E003FFE03F86D7EECF9F04B
6D7FECFBC0ECFF8092C76C7FA25CA25CA45CB3ACB6D8F807B612C0A542537CD249>I<13
3FEBFFC0487F487FA2487FA66C5BA26C5B6C5B013FC7FC90C8FCAEEB1FF8B5FCA512017E
B3B3A6B612F0A51C547CD324>I<EB3FF8B5FCA51203C6FCB3A50407B512F0A59339007F
F000EF3FC04D5A4DC7FCEE01FC4C5AEE0FF04C5A4C5A4CC8FC16FEED03FC4B5A4B5A4B5A
4B7E4B7EECF9FF02FB7F91B57EA28203BF7F031F7F14FE4A6C7FDAF0077F6F7FA26F7F6F
7F167F83707F707FA2707F707F707FA2707F707F84B6D8F00F14FEA53F537DD245>107
D<EB3FF8B5FCA51203C6FCB3B3B3B1B612F8A51D537CD224>I<D93FF0D91FF84AB47EB5
91B56C010F13F8030302E0013F13FE030F6E90B6FCDB3F809027F803F80F7F922A7E007F
FC07E0077F000302F890283FFE0F80037FC6D9F1F0011F49487EDAF3E0DAFF3E814B153C
DAF7805D92C76C496D7F14FF4A5EA24A5EA34A5EB3ADB6D8F80FB66CB612F8A565367BB5
6E>I<D93FF0EB1FFCB591B57E030314E0030F14F892391FC07FFC92397E003FFE000302
F86D7EC6EBF1F04B6D7FECF3C0ECF78092C76C7F14FF5CA25CA45CB3ACB6D8F807B612C0
A542367CB549>I<913801FFC0023F13FE91B67E010315E0010F018013F8903A3FFC001F
FED97FF0EB07FF49486D7F48496D7F48496D7F91C8127F4883488349153F001F83A2003F
8349151FA2007F83A400FF1880AC007F1800A3003F5F6D153FA2001F5FA26C6C4B5AA26C
6D4A5A6C5F6C6D495B6C6D495B6D6C4990C7FCD93FFCEB1FFE6DB46CB45A010790B512F0
010115C0D9003F49C8FC020313E039387CB642>I<D93FF8EB7FF0B50107B5FC031F14C0
037F14F09126F9FF0013FCDAFFF8EB3FFF000302E0010F7FC602806D7F92C76C7F4A824A
804A6E7F85187F85A2183F85A4721380AD4E1300A44E5AA26118FF616E5C616E4A5B6E4A
5B6F495B03E04990C7FC6FEB7FFE913AF9FE01FFF802F8B65A033F14C0030749C8FC0300
13E093CAFCB1B612F8A5414D7DB549>I<90393FF001FCB590380FFF804B13E0037F13F0
9238FE1FF89138F1F83F00019138F07FFC6CEBF3E015C0ECF780A2ECFF00EE3FF84AEB1F
F0EE0FE093C7FC5CA45CB3ABB612FEA52E367DB535>114 D<903903FFC00E011FEBFC1E
90B6127E000315FE3907FE003FD80FF0130F4848130348481301491300127F90C8127EA2
48153EA27FA27F01F091C7FC13FCEBFF806C13FEECFFF06C14FE6F7E6C15E06C816C15FC
6C81C681133F010F15801301D9000F14C0EC003F030713E0150100F880167F6C153FA216
1F7EA217C07E6D143F17807F6DEC7F0001F85C6DEB03FE9039FF801FFC486CB512F0D8F8
1F14C0D8F00791C7FC39E0007FF02B387CB634>I<147CA614FCA41301A31303A21307A2
130F131F133F137F13FF1203000F90B512FEB7FCA426007FFCC8FCB3A9EE0F80ABEE1F00
6D7EA2011F143E806D6D5A6DEBC1F86DEBFFF001005C023F1380DA03FEC7FC294D7ECB33
>I<D93FF8913801FFC0B50207B5FCA50003ED001FC61607B3AE5FA35FA25F137F5F6D6C
14F7DC01E713F06D6CD907C7EBFFC0903A0FFF801F876D90B51207010114FC6D6C13F002
0701C091C7FC42377CB549>I<B600E090381FFFFCA5000101F8C7000113006CEE007C6E
15FC017F5E8017016D6C5D17036D5E6F13076D5E6F130FA26D6D5C171F6D93C7FC6F5B6D
153E6F137E6D157C8117FC027F5CEDFE01023F5CEDFF036E5C168316876E5C16CF6E5C16
FF6E91C8FCA36E5BA26E5BA26F5AA36F5AA26F5AA26F5AA23E367DB445>I<B600E09038
1FFFFCA5000101F8C7000113006CEE007C6E15FC017F5E6E1401013F5E8017036D6D5C17
076D5E6F130F6D5E6F131F6D93C7FC815F6D6D133E177E6D157C6F13FC027F5C811601DA
3FFF5B16036E5C16876E5C16CF6E5C16EF16FF6E91C8FCA26E5BA26E5BA26F5AA36F5AA2
6F5AA26F5AA35E151F93C9FC5D153E157ED81FC0137C487E486C13FC486C5B14015D4A5A
14074A5A6C48485A4948CAFC495A383F81FC6CB45A6C5B000313C0C648CBFC3E4D7DB445
>121 D E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fh ectt1000 10 75
/Fh 75 123 df<0107131C90380F803EA8011F137EEC007CA4003FB612E0B712F8A43A00
3E00F800A2EB7E01017C5BA8EBFC0301F85BA2B712F8A4003F15E03A01F007C000A30003
130F01E05BA86C486CC7FC25337DB22C>35 D<EB0FC0EB3FE0497E497E80EA01F8EBF07C
147E0003133E13E0A5147E147C9138FC3FF89039F0F87FFCEA01F1EBF3F001F7EB3FF891
38E01F009038FFC03F6CEB803EA2EC007E49137C485A486C13FC00075CEBFF01D80FDF5B
381F9F81383F8F8390380FC3E0387E07E75D38FC03F7EB01FF5D6D1410ED007C80A26CEB
FF80D87E0113C0D87F03EBE0FC3A3F87F7F1F89038FFE3FF6C01C113F06C13806C903800
7FC0D801FCEB1F8026357EB32C>38 D<143814FC13011303EB07F8EB0FF0EB1FC0EB3F80
EB7F0013FE485A485A5B12075B120F5B485AA2123F90C7FCA25A127EA312FE5AAC7E127E
A3127F7EA27F121FA26C7E7F12077F12037F6C7E6C7E137FEB3F80EB1FC0EB0FF0EB07F8
EB03FC130113001438164272B92C>40 D<127012FC7E7E6C7E6C7EEA0FE06C7E6C7E6C7E
6C7E137F7F1480131F14C0130FEB07E0A214F01303A214F81301A314FC1300AC130114F8
A3130314F0A2130714E0A2EB0FC0131F1480133F14005B13FE485A485A485A485AEA3FC0
485A48C7FC5A5A1270164279B92C>I<EB0380497EA60020140800F8143E00FE14FE00FF
13C1EBC7C7EBE7CF003FB512F8000F14E0000314806C140038007FFCA248B5FC48148000
0F14E0003F14F839FFE7CFFEEBC7C7EB07C100FE13C000F8143E0020140800001400A66D
5A1F247AAA2C>I<EA0F80EA1FE0EA3FF0EA7FF8A213FCA3123F121F120F120013F8A212
01EA03F01207EA1FE0EA7FC0EAFF80130012FC12700E17718A2C>44
D<007FB512F0B612F8A36C14F01D0579942C>I<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA
3F80EA1F000B0B708A2C>I<1507ED0F80A2151F16005D153E157E157CA215FC5D14015D
14035D14075D140F5D141F92C7FC5C143EA2147E147C14FC5C13015C13035C13075C130F
5C131F91C8FC5B133EA2137E137C13FC5B12015B12035B12075B120F5B121F90C9FCA25A
123E127E127C12FC5AA2127021417BB92C>I<EB03F8EB0FFE90383FFF80497F90B57E39
01FE0FF03903F803F848486C7EEBE0004848137EA248487FA248C7EA1F80A2003E140F00
7E15C0A3007C140700FC15E0AC6C140F007E15C0A46CEC1F80A36C6CEB3F00A26C6C137E
6D13FE00075CEBF0016C6C485A3901FE0FF06CB55A6D5B6D5BD90FFEC7FCEB03F823357C
B32C>I<1307497EA2131FA2133F137F13FF5A1207127FB5FC13DF139FEA7C1F1200B3AE
007FB512E0B612F0A36C14E01C3477B32C>I<EB0FF890387FFF8048B512E00007804814
FC391FF80FFE393FE001FF903880007F48C7EA3F80007E141F00FE15C0150F6C15E01507
A3127E123CC8FCA2150F16C0151F1680153F16005D15FE4A5A14034A5A4A5A4A5A4A5AEC
FF804948C7FC495A495A495AEB3FE0EB7F8049C8FC485A4848EB03C04848EB07E0EA1FE0
485A48B6FCB7FCA36C15C023347CB32C>I<EB0FFC90387FFF8048B512E0000714F84880
391FF807FEEBC0004848137F6D7F1680151FA26C5A6CC7FCC8FC153F16005D15FE14014A
5AEC1FF890381FFFF0495BA215F86D7F90380007FEEC00FF81ED3F80ED1FC0150FA216E0
1507A2123C127EB4FC150F16C0A248141F007FEC3F806DEB7F006C6C5B391FF807FE6CB5
5A6C5C6C14E0C66C1380D90FFCC7FC23357CB32C>I<000FB512FE4880A35D0180C8FCAD
EB83FE90389FFF8090B512E015F8819038FE03FE9038F000FF01C07F49EB3F8090C7121F
6C15C0C8120FA2ED07E0A4123C127EB4FC150F16C0A248141F007EEC3F80007FEC7F006C
6C5B6D485A391FF80FFC6CB55A6C5C000114C06C6C90C7FCEB0FF823347CB22C>53
D<EC3FC0903801FFF801077F011F7F497F90387FE07F9039FF003F804848137FEA03F848
5A5B000FEC3F004848131E4990C7FC123F90C9FCA25A127EEB03FE90381FFF80D8FC7F13
E000FDB57EB67E9038FE07FC9038F001FE9038C0007F49EB3F8090C7121F16C048140F16
E01507A3127EA47E150F6D14C0001F141F6D1480000F143F6DEB7F003907F801FE3903FE
07FC6CB55A6C5C6D5B011F1380D907FCC7FC23357CB32C>I<EB07FC90383FFF8090B512
E0000314F84880390FFC07FE391FF001FF9038C0007F4848EB3F8090C7121F4815C0007E
140FA56CEC1F80A26C6CEB3F006D5B390FF001FE3903FC07F86CB55A6C6C13C0D907FCC7
FC90387FFFC048B512F03903FC07F8390FF001FE391FC0007F497F48C7EA1F80007EEC0F
C0A248EC07E0A7007EEC0FC0A2007F141F6C6CEB3F806C6CEB7F009038F001FF390FFC07
FE6CB55A6C5CC614E0013F1380D907FCC7FC23357CB32C>56 D<EB07FCEB3FFF90B512C0
488048803907FC07F8390FF001FC48486C7ED83F80137E157F48C77E007EEC1F8012FE5A
ED0FC0A416E0A37E127E007F141F7E6D133F6C6C137F390FF001FF3807FC0F6CB6FC6C14
F76C14C7013F130FD90FF813C090C7FCA2151F1680153F1600000F5C486C137E486C13FE
4A5A4A5A14079038801FF0391FE07FE090B55A6C91C7FC6C5B000113F838007FC023357C
B32C>I<121FEA3F80EA7FC0EAFFE0A5EA7FC0EA3F80EA1F00C7FCAE121FEA3F80EA7FC0
EAFFE0A5EA7FC0EA3F80EA1F000B2470A32C>I<1502ED0F80151F157F15FF913803FE00
EC0FFCEC1FF0EC7FE0ECFF80D903FEC7FC495AEB1FF0495AEBFF80000390C8FCEA07FCEA
1FF8EA3FE0EAFF8090C9FCA27FEA3FE0EA1FF8EA07FC6CB4FCC67FEB3FE06D7EEB07FC6D
7E903800FF80EC7FE0EC1FF0EC0FFCEC03FE913800FF80157F151F150FED0200212A7BAD
2C>60 D<122012F87EB4FC7FEA3FE0EA1FF8EA07FC6CB4FCC67FEB3FE06D7EEB07FC6D7E
903800FF80EC7FE0EC1FF0EC0FFCEC03FE913800FF80157FA215FF913803FE00EC0FFCEC
1FF0EC7FE0ECFF80D903FEC7FC495AEB1FF0495AEBFF80000390C8FCEA07FCEA1FF8EA3F
E0EAFF8090C9FC12FC5A1220212A7BAD2C>62 D<14FE497EA4497FA214EFA2130781A214
C7A2010F7FA314C390381F83F0A590383F01F8A490387E00FCA549137E90B512FEA34880
A29038F8003FA34848EB1F80A4000715C049130FD87FFEEBFFFC6D5AB514FE6C15FC497E
27347EB32C>65 D<007FB512E015F8B612FE6C8016C03903F0003FED0FE0ED07F01503A2
ED01F8A6ED03F0A21507ED0FE0ED1FC0EDFF8090B612005D5D15FF16C09039F0001FE0ED
07F0ED03F81501ED00FCA216FE167EA616FE16FC1501ED03F8150FED3FF0007FB612E016
C0B712806CECFE0015F027337FB22C>I<02FF13700107EBE0F84913F9013F13FD4913FF
EBFF813901FE007F4848131FD807F0130F1507485A491303485A150148C7FCA25A007EEC
00F01600A212FE5AAB7E127EA3007F15F06CEC01F8A26C7EA26C6C13036D14F06C6C1307
16E0D803FC131F6C6CEB3FC03A00FF81FF806DB512006D5B010F5B6D13F0010013802535
7DB32C>I<007FB5FCB612C015F0816C803907E003FEEC00FFED7F80153FED1FC0ED0FE0
A2150716F0150316F81501A4ED00FCACED01F8A3150316F0A2150716E0150FED1FC0153F
ED7F80EDFF00EC03FE007FB55AB65A5D15C06C91C7FC26337EB22C>I<007FB612F0B712
F8A37E3903F00001A7ED00F01600A4EC01E04A7EA490B5FCA5EBF003A46E5A91C8FCA516
3C167EA8007FB612FEB7FCA36C15FC27337EB22C>I<007FB612F8B712FCA37ED803F0C7
FCA716781600A515F04A7EA490B5FCA5EBF001A46E5A92C7FCAD387FFFE0B5FC805C7E26
337EB22C>I<903901FC038090390FFF87C04913EF017F13FF90B6FC4813073803FC0149
7E4848137F4848133F49131F121F5B003F140F90C7FCA2127EED078092C7FCA212FE5AA8
913803FFF84A13FCA27E007E6D13F89138000FC0A36C141FA27F121F6D133F120F6D137F
6C7E6C6C13FF6D5A3801FF076C90B5FC6D13EF011F13CF6DEB0780D901FCC7FC26357DB3
2C>I<D87FFEEBFFFCB54813FEA36C486C13FCD807E0EB0FC0B190B6FCA59038E0000FB3
D87FFEEBFFFCB54813FEA36C486C13FC27337EB22C>I<007FB512F8B612FCA36C14F839
000FC000B3B3A5007FB512F8B612FCA36C14F81E3379B22C>I<0107B512804914C0A36D
148090390003F000B3AF1218127EA2B4FCA24A5A48130F007F131F9038C07FC06CB55A6C
91C7FC6C5B000313F838007FC022347BB22C>I<D87FFCEB7FF8486CEBFFFCA36C48EB7F
F8D807C0EB1F80153FED7F00157E5D4A5A14034A5A5D4A5A4A5A143F4AC7FC147E5CEBC1
F813C3EBC7FCA2EBCFFEEBDFBEEBFFBF141F01FE7F496C7E13F86E7EEBF00301E07FEBC0
01816E7EA2157E153E153F811680ED0FC0A2ED07E0D87FFCEB1FFC486CEB3FFEA36C48EB
1FFC27337EB22C>I<387FFFE0B57EA36C5BD803F0C8FCB3AE16F0ED01F8A8007FB6FCB7
FCA36C15F025337DB22C>I<D87FE0EB0FFC486CEB1FFEA26D133F007F15FC000F15E001
BC137BA4019E13F3A3EB9F01A2018F13E3A21483A2018713C314C7A201831383A214EFA2
01811303A214FFEB80FEA3147C14381400ACD87FF0EB1FFC486CEB3FFEA36C48EB1FFC27
337EB22C>I<D87FF0EB7FFC486CEBFFFEA27F007FEC7FFCD807FEEB07C013DEA213DF13
CFA2148013C714C0A213C314E0A213C114F0A213C014F8A2147CA3143EA2141E141FA214
0F1587A2140715C7A2140315E71401A215F71400A215FFD87FFC137F487E153FA26C48EB
1F8027337EB22C>I<EB7FFF0003B512E0000F14F848804880EBE003EB800048C7127FA2
007E80A300FE158048141FB3A86C143FA2007E1500A3007F5CA26C6C13FEEBF00790B5FC
6C5C6C5C000314E0C66C90C7FC21357BB32C>I<007FB512C0B612F88115FF6C15802603
F00013C0153FED0FE0ED07F0A2150316F81501A6150316F01507A2ED0FE0ED3FC015FF90
B61280160015FC5D15C001F0C8FCB0387FFF80B57EA36C5B25337EB22C>I<EB7FFF0003
B512E0000F14F848804880EBF007EB800048C7127FA2007E80A300FE158048141FB3A7EB
01F0EB03F800FE143F267E01FC1300A2EB00FE007F5C147FD83F8013FEEBF03F90B5FC6C
5C6C5C000314E0C67E90380007F0A26E7EA26E7EA26E7EA2157FA2153E21407BB32C>I<
387FFFFCB67E15E015F86C803907E007FE1401EC007F6F7E151FA26F7EA64B5AA2153F4B
C7FCEC01FE140790B55A5D15E081819038E007FCEC01FE1400157F81A8160FEE1F80A5D8
7FFEEB1FBFB5ECFF00815E6C486D5AC8EA01F029347EB22C>I<90381FF80790B5EA0F80
4814CF000714FF5A381FF01F383FC003497E48C7FC007E147F00FE143F5A151FA46CEC0F
00007E91C7FC127F7FEA3FE0EA1FFCEBFFC06C13FC0003EBFFC06C14F06C6C7F01077F90
38007FFEEC07FF02001380153FED1FC0A2ED0FE0A20078140712FCA56CEC0FC0A26CEC1F
806D133F01E0EB7F009038FE01FF90B55A5D00F914F0D8F83F13C0D8700790C7FC23357C
B32C>I<007FB612FCB712FEA43AFC007E007EA70078153CC71400B3AF90383FFFFCA249
7F6D5BA227337EB22C>I<3B7FFF803FFFC0B56C4813E0A36C496C13C03B03F00001F800
B3AF6D130300015DA26D130700005D6D130F017F495A6D6C485AECE0FF6DB5C7FC6D5B01
0313F86D5B9038003F802B3480B22C>I<D87FFCEB7FFC486CEBFFFEA36C48EB7FFCD80F
C0EB07E06D130F000715C0A36D131F00031580A36D133F00011500A36D5B0000147EA401
7E5BA46D485AA490381F83F0A4010F5B14C7A301075BA214EFA201035BA214FFA26D90C7
FCA46D5A27347EB22C>I<D87FF0EB07FF486C491380A36C486D1300001FC8127CA46C6C
5CA76C6C495AA4143E147FA33A03E0FF83E0A214F7A201E113C3A3000101E35BA201F113
C701F313E7A314C1A200005DA201F713F71480A301FF13FF017F91C7FC4A7EA4013E133E
29347FB22C>I<3A3FFF03FFE0484913F0148714076C6D13E03A01F800FE007F0000495A
13FE017E5BEB7F03013F5B1487011F5B14CF010F5B14FF6D5BA26D90C7FCA26D5AA26D5A
A2497EA2497EA2497F81EB0FCF81EB1FC7EC87F0EB3F83EC03F8EB7F01017E7FEBFE0049
7F0001147E49137F000380491480151FD87FFEEBFFFC6D5AB514FE6C15FC497E27337EB2
2C>I<D87FFCEB7FFC486CEBFFFEA36C48EB7FFCD807F0EB0FC0151F000315806D133F12
016DEB7F0012006D137E017E13FE017F5BEB3F01EC81F8131FEC83F0EB0FC314C7903807
E7E0A201035B14EF6DB45AA292C7FC7F5C147EB0903807FFE0497FA36D5B27337EB22C>
I<003FB612C04815E0A4007EC7EA1FC0ED3F80A2ED7F00157E15FE4A5A003C5CC712034A
5AA24A5A4A5AA24A5A4AC7FCA214FE495AA2495A495AA2495A495AA2495A49C8FCA213FE
485AA24848EB03C049EB07E01207485A5B121F485AA248C7FCB7FCA46C15C023337CB22C
>I<387FFFFCB512FEA314FC00FCC7FCB3B3B3B512FC14FEA36C13FC17416FB92C>I<387F
FFFCB512FEA37EC7127EB3B3B3387FFFFEB5FCA36C13FC17417DB92C>93
D<007FB6FCB71280A46C150021067B7D2C>95 D<3801FFF0000713FE001F6D7E15E04880
9038C01FF81407EC01FC381F80000006C77EC8127EA3ECFFFE131F90B5FC1203120F48EB
807E383FF800EA7FC090C7FC12FE5AA47E007F14FEEB8003383FE01F6CB612FC6C15FE6C
14BF0001EBFE1F3A003FF007FC27247CA32C>97 D<EA7FF0487EA3127F1201AAEC1FE0EC
FFF801FB13FE90B6FC16809138F07FC09138801FE091380007F049EB03F85BED01FC4913
00A216FE167EA816FE6D14FCA2ED01F86D13036DEB07F0150F9138801FE09138E07FC091
B51280160001FB5B01F813F83900F03FC027337FB22C>I<903803FFE0011F13F8017F13
FE48B5FC48804848C6FCEA0FF0485A49137E4848131890C9FC5A127EA25AA8127EA2127F
6C140F6DEB1F806C7E6D133F6C6CEB7F003907FE03FF6CB55A6C5C6C6C5B011F13E00103
90C7FC21247AA32C>I<EC0FFE4A7EA380EC003FAAEB07F8EB3FFE90B512BF4814FF5A38
07FC0F380FF00348487E497E48487F90C7FC007E80A212FE5AA87E007E5CA2007F5C6C7E
5C6C6C5A380FF0073807FC1F6CB612FC6CECBFFE6C143FEB3FFC90390FF01FFC27337DB2
2C>I<EB03FE90381FFFC0017F13F048B57E48803907FE03FE390FF800FFD81FE0EB3F80
5B4848EB1FC090C7120F5A007E15E015075AB7FCA416C000FCC9FC7E127EA2127F6CEC03
C06DEB07E06C7ED80FF0130F6C6CEB3FC001FF13FF000190B512806C1500013F13FC010F
13F00101138023247CA32C>I<EC0FF8EC3FFE91B5FC4914805B903807FC7F14F090390F
E03F0014C092C7FCA6007FB512FEB7FCA36C5C26000FC0C7FCB3A8003FB512F04880A36C
5C21337DB22C>I<ED03F8903907F80FFC90391FFE3FFE017FB6FC48B7FC48ECFE7F9038
FC0FF82607F003133E3A0FE001FC1CD9C0001300001F8049137EA66D13FE000F5CEBE001
6C6C485A3903FC0FF048B5FC5D481480D99FFEC7FCEB87F80180C8FCA37F6C7E90B512F0
6C14FE48ECFF804815E04815F03A3FC0001FF848C7EA03FC007E1400007C157C00FC157E
48153EA46C157E007E15FCD87F801303D83FE0EB0FF8D81FFCEB7FF06CB612E000031580
6C1500D8003F13F8010713C028387EA42C>I<EA7FF0487EA3127F1201AAEC1FE0EC7FFC
9038F9FFFE01FB7F90B6FC9138F03F80ECC01F02807FEC000F5B5BA25BB3267FFFE0B5FC
B500F11480A36C01E0140029337FB22C>I<1307EB1FC0A2497EA36D5AA20107C7FC90C8
FCA7387FFFC080B5FC7EA2EA0007B3A8007FB512FCB612FEA36C14FC1F3479B32C>I<14
0EEC3F80A2EC7FC0A3EC3F80A2EC0E0091C7FCA748B512804814C0A37EC7120FB3B3A214
1F003C1480007E133FB414005CEB01FEEBFFFC6C5B5C001F5B000790C7FC1A467CB32C>
I<EA7FE0487EA3127F1201AA91381FFFF04A13F8A36E13F0913800FE004A5A4A5A4A5A4A
5A4A5A4A5A4AC7FC14FEEBF1FC13F3EBF7FE90B5FCA2EC9F80EC0FC001FE7FEBFC07496C
7E496C7E811400157E811680151F3A7FFFC0FFFCB500E113FEA36C01C013FC27337EB22C
>I<387FFFE0B57EA37EEA0003B3B3A5007FB61280B712C0A36C158022337BB22C>I<3A7F
83F007E09039CFFC1FF83AFFDFFE3FFCD87FFF13FF91B57E3A07FE1FFC3E01FCEBF83F49
6C487E01F013E001E013C0A301C01380B33B7FFC3FF87FF0027F13FFD8FFFE6D13F8D87F
FC4913F0023F137F2D2481A32C>I<397FF01FE039FFF87FFC9038F9FFFE01FB7F6CB6FC
00019038F03F80ECC01F02807FEC000F5B5BA25BB3267FFFE0B5FCB500F11480A36C01E0
140029247FA32C>I<EB07FCEB1FFF017F13C048B512F048803907FC07FC390FF001FE48
486C7E0180133F003F158090C7121F007EEC0FC0A348EC07E0A76C140F007E15C0A2007F
141F6C15806D133F6C6CEB7F006D5B6C6C485A3907FC07FC6CB55A6C5C6C6C13C0011F90
C7FCEB07FC23247CA32C>I<397FF01FE039FFF8FFF801FB13FE90B6FC6C158000019038
F07FC09138801FE091380007F049EB03F85BED01FC491300A216FE167EA816FE6D14FCA2
ED01F86D13036DEB07F0150F9138801FE09138E07FC091B51280160001FB5B01F813F8EC
3FC091C8FCAD387FFFE0B57EA36C5B27367FA32C>I<903903FC078090391FFF0FC0017F
13CF48B512EF4814FF3807FE07380FF00148487E49137F4848133F90C7FC48141F127E15
0F5AA87E007E141FA26C143F7F6C6C137F6D13FF380FF0033807FC0F6CB6FC6C14EF6C6C
138F6D130FEB07F890C7FCAD0203B5FC4A1480A36E140029367DA32C>I<D87FFEEB3FC0
B53801FFF0020713F8021F13FC6C5B39003F7FE1ECFF019138FC00F84A13704A13005CA2
5C5CA391C8FCAF007FB512E0B67EA36C5C26247EA32C>I<90387FF8700003B512F8120F
5A5A387FC00F387E00034813015AA36CEB00F0007F140013F0383FFFC06C13FE6CEBFF80
000314E0C66C13F8010113FCEB0007EC00FE0078147F00FC143F151F7EA26C143F6D133E
6D13FE9038F007FC90B5FC15F815E000F8148039701FFC0020247AA32C>I<131E133FA9
007FB6FCB71280A36C1500D8003FC8FCB1ED03C0ED07E0A5EC800F011FEB1FC0ECE07F6D
B51280160001035B6D13F89038003FE0232E7EAD2C>I<3A7FF003FF80486C487FA3007F
7F0001EB000FB3A3151FA2153F6D137F3900FE03FF90B7FC6D15807F6D13CF902603FE07
130029247FA32C>I<3A7FFF01FFFCB514FE148314016C15FC3A03E0000F80A26D131F00
011500A26D5B0000143EA26D137E017C137CA2017E13FC013E5BA2EB3F01011F5BA21483
010F5BA214C701075BA214EF01035BA214FF6D90C7FCA26D5A147C27247EA32C>I<D87F
FFEB7FFF6EB5FCB515806C16004A7ED807C0EB01F0A66C6C495AA3143E147FA2D801F049
5AECFF87A214F7A201F113C700005D9038F9E3CFA201FB13EFA3D97BC190C7FC017F13FF
A21480A2013F5B90381F007C29247FA32C>I<3A3FFF03FFF048018713F8A36C010313F0
3A00FC007E005D90387E01F8013F5BEB1F83EC87E090380FCFC0903807EF80EB03FF6D90
C7FC5C6D5A147C14FE130180903803EF80903807CFC0EB0FC7EC83E090381F01F0013F7F
EB7E00017C137C49137E0001803A7FFF01FFFC1483B514FE6C15FC140127247EA32C>I<
3A7FFF01FFFCB5008113FE148314816C010113FC3A03E0000F806C7E151F6D140012005D
6D133E137C017E137E013E137CA2013F13FC6D5BA2EB0F815DA2EB07C1ECC3E0A2EB03E3
ECE7C0130114F75DEB00FFA292C7FC80A2143EA2147E147CA214FC5CA2EA0C01003F5BEA
7F83EB87E0EA7E0F495A387FFF806C90C8FC6C5A6C5AEA07E027367EA32C>I<003FB612
E04815F0A4007EC7EA1FE0ED3FC0ED7F80EDFF004A5A003C495AC7485A4A5A4A5A4A5A4A
5A4AC7FCEB01FC495AEB0FF0495A495A495A49C8FC4848EB01E04848EB03F0485A485A48
5A485A485AB7FCA46C15E024247DA32C>I E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fi ecss1000 10 33
/Fi 33 122 df<B512FCA516057F941C>45 D<12FEA70707788617>I<EC07F8A24A7EA2
4A7EA2157EEC3F7F143EA291387E3F80A2147C02FC7F151FA2D901F87F150F01038014F0
A201076D7E14E0A2010F6D7E14C0A2011F6D7E1480013F808191C7FC4981167F137E01FE
6E7E90B7FCA24882A3D803F8C7EA0FF05B00078216075B000F8216035B001F8216015B00
3F6F7EA248C91380177F127E00FE17C0323A7EB937>65 D<913803FF80021F13F891B6FC
4915C013075B4948C61380D97FF0130FD9FFC013034A13014890C9FC485A485A5B120F5B
485AA2485AA3485AA448CAFCAC6C7EA46C7EA36C7EA26C7E7F12077F6C7E6C6C15206C6D
14E06E1301D97FF0130FD91FFE137F6DB6FC6D15C0010115006D5C021F13F0020313802B
3E7BBB35>67 D<B4ED3FC0B3A790B7FCA590C8123FB3AA2A3A78B93B>72
D<12FFB3B3B3A4083A79B917>I<B4FCB3B3B090B612C0A6223A79B92D>76
D<D8FFC0ED07FFA36D5DA26D5D00FE177FA26D153F0178153EA2017C157EA26D15FCA301
3F14016D15F8A26E1303010F15F06E1307A2010715E06E130FA2010315C06E131FA20101
15806E133FA2010015006E5B027C137E027E13FEA2023E5BEC3F01A2021F5B1583A2020F
5B15C702075BA3913803EFC0A215FF6E5BA26E90C7FCA392C8FCA2383A78B949>I<B612
C015F815FF8216E090C77FED1FF8ED07FC15036F7E150082821780A2163FA4167FA21700
5E5E15014B5A1507ED1FF8EDFFF090B65A168093C7FC15F815C090CAFCB3A6293A79B935
>80 D<EB03FF011F13F0017F13FE48B612804815C05A4848C6FCD81FF0EB1F8048481307
01801303007F140090C9FCA212FEA67E7E7F7FEA3FF013FC381FFFC06C13FC6CEBFF806C
14E06C14F86C80013F7F01077FD9007F1380020713C0020013E0157FED1FF0150FA2ED07
F8A21503A6ED07F0124012600078EC0FE0007C141FB4EC3FC001C0EBFF80EBFC036CB612
00001F5C6C14F800015C6C6C13C0D907FEC7FC253E7CBB2E>83 D<B91280A6C7D807F8C8
FCB3B3B0313A7DB938>I<EB1FF0EBFFFC000313FF000F14804814C09038E01FE0903800
0FF0001C13070018EB03F81210C7FCEC01FCA7143FEB0FFF90B5FC1203120F381FFE01EA
3FE0EA7F80130012FEA414037E387F800FEBE03F6CB5FC7E6C13F96C13E1D801FEC7FC1E
287DA628>97 D<12FEB3A4EB01FCEB0FFF013F13C090B57EB67E9038F03FF8EBC007496C
7EEB0001486D7EA2157FA3ED3F80AAED7F00A35D5D14016C5CEB80039038C00FF89038F0
3FF090B55A485C6D5BD91FFEC7FC380007F8213D7ABB2B>I<EB03FE90381FFFC0017F13
E090B512F84814FC3803FC033907F8007CD80FE01338484813081500485AA248C8FCA312
7E12FEA9127FA36C7EA26D1302001F14066C6C131E6C6C137E9038FC03FE6CB5FCC614FC
6D13F0011F13C0903807FC001F287DA625>I<ED3F80B3A4EB0FE0EB3FFC90B5FC4814BF
4814FF3807FE07380FF801381FE00049137F003F143F5B127F90C7FCA312FEAA127FA36C
7E157F6C7E6D13FF380FF0033807FE076CB512BF6C143F6C13FEEB7FF8D90FE0C7FC213D
7DBB2B>I<EB07F8EB1FFE90387FFF8048B512C04814E03907FC0FF0390FF003F8EBE001
391FC000FC49137C003F147E90C7123E5A127E151F12FEB7FCA500FCC8FCA27EA2127EA2
127F7E7F6C7E6D13026C6C130E6C6C133E3903FE01FE6CB5FC6C14FC6D13F0011F13C090
3803FE0020287EA625>I<14FF010313C0130F5B5BEB7F819038FE004049130012015BA2
1203ADB512FCA5D803F8C7FCB3AE1A3D7FBC19>I<903907E001F890383FFC1F90397FFE
FFFC48B6FC5A9039F81FF8003907F00FE048486C7EEBC003A248486C7EA76C6C485AA2EB
E0076C6C485A6C6C485A48B5FC5D4849C7FCEB3FFC381F07E090C9FCA37F7F6CB512C015
F815FE6CECFF8016C04815E05A3A3F80007FF048C7120F007EEC03F8481401A46C140300
7E15F0D87F80130F6C6CEB1FE03A1FFC01FFC06CB612806C1500000114FC6C6C13F00107
90C7FC26387EA52A>I<12FEB3A4EB01FC90380FFF804913C0017F13E090B512F039FFF8
1FF8EBE007EBC003018013FC14011300A35AB3A71E3C7ABB2B>I<12FFA81200AC127FB3
B308397BB814>I<12FEB3A5EC03FE4A5A4A5A4A5A4A5A4A5A4A5A4990C7FC495A5C495A
495A495A495A495A497EB57EA280EBF7F813E3EBC1FCEB80FE497E487F6E7E81141F6E7E
8114076E7E6E7E811400157F1680213C7ABB29>107 D<12FEB3B3B3A6073C7ABB14>I<D9
01FCEB03F83BFE0FFF801FFF496D481380017F6DB512C090B500F114E03CFFF81FFBF03F
F0D9E007EBC00F903AC003FF80070180020013F86E140301005BA3485CB3A735267AA542
>I<EB01FC39FE0FFF804913C0017F13E090B512F039FFF81FF8EBE007EBC003018013FC
14011300A35AB3A71E267AA52B>I<EB03FE90380FFF80013F13E090B512F848803903FE
03FE3907F800FF4848EB7F8049133F4848EB1FC04848EB0FE0A290C712074815F0A2007E
140300FE15F8A9007FEC07F0A36C6CEB0FE0A26C6CEB1FC06D133F6C6CEB7F806C6CEBFF
003903FE03FE6CB55A6C5C6D5B011F13C0D903FEC7FC25287EA62A>I<14F0EAFC07130F
133F137F13FF00FD130013FCEAFFF05B5BA25B90C7FCA35AB3A414267AA51C>114
D<EB7FE03801FFFC0007EBFF804814C05A383FC03F90380007801401007E90C7FCA4127F
A26C7E13F0EBFF806C13F06C13FC6C7F6C7FC61480131F010013C0143FEC0FE0A21407A3
124012600078EB0FC000FE131F39FFC07F8090B5FC6C1400001F5B000313F838007FC01B
287EA620>I<EA01FCAAB6FCA5D801FCC7FCB3A76D138014013900FF07C014FFA26D1300
EB3FFCEB1FE01A307FAE1E>I<00FEEB01FCB3AA1403A214076C131F387F807F90B5FC6C
13F914F1000F13C1D803FCC7FC1E267AA42B>I<B4EC0FE06CEC1FC0A27F003FEC3F80A2
7F001FEC7F00A26C6C137E15FEA26C6C485AA36C6C485AA3D801FC5B140700005C13FE14
0F017E5B137F141F013F5BA2149FD91FBFC7FCA3EB0FBE14FE6D5AA323257FA426>I<00
FED901FEEB01FC007F17F802031403A2018013DF003FEE07F01407ED9F80D81FC016E002
0F140F158FD80FE002C013C0030F131F141FED07E0D807F01680021E143F143E0003DA03
F0130013F8023C5C0001017C147EED01F813FC027814FE0000D9F8005BA24A13FC017C5D
167D137E5C013EEC3DF0013F143F5C011F5D161F36257FA439>I<D87F80EB0FE0003FEC
1FC06C6C133F6DEB7F806C6C1400000714FE6C6C485A3801FC0301FE5B6C6C485A6D485A
90383F9FC0EB1FDF6DB45A92C7FC6D5A6D5A1301A2497E1307497EECDF8090381F9FC090
383F0FE0496C7EEBFE0301FC7F00016D7E48486C7E4848137F120F49EB3F804848EB1FC0
484814E0007FEC0FF048C7EA07F8252580A426>I<B4EC0FE06CEC1FC0A26C7EED3F807F
001FEC7F00A26C7E15FE7F00075C1401EA03F85DEBFC0312015D3800FE075D137E140F01
7F5B133FA290381F9F80A292C7FC130FA2EB079E14DEA2EB03FCA26D5AA35C13035CA213
075C130FA2495A1220D8383FC8FCEA3FFEA25B5BEA0FE023367FA426>I
E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fj ecit1000 10 16
/Fj 16 118 df<EA0F80EA1FC0EA3FE0127FA212FFA3EA7FC0EA3F80EA1E000B0B6F8A2C
>46 D<EC07F0EC1FFCEC7FFE49B5FC5B903907FC1F8090380FF00FEB1FC0D93F8013C090
387F03E79038FE0FFF48485A495A48485A9038E0FE3F000713FC9039C1F81F80380FC3F0
1383381F87E0EB07C0D83F0F1400003E1380A25DD87E1F133E007C1300A2157E157C00FC
14FC00F85C14015D14034A5A00FC139F397C0FFFC05D6D90C7FC387E03FC383E01F8393F
0007C0140F6C6C487E390FE0FFC090B5FC6C91C7FC6C5BC613F8EB3FC0223375B22C>64
D<EB03F090380FFC7890383FFFFC5B90B5FC3801FE1F48486C5AEA07F8380FF00713E0D8
1FC05B1380123F1300485C127EA2140F12FE485CA291381FC180ED87E0143FA2EC7F8F91
38FF0FC05B6C5AD87E07EB1F80D87F0F133F6CB612006C13DFEC8FFE3907FE07FC3901F8
01F0232476A32C>97 D<EC7F80903803FFE0010F13F8013F13FC5B9038FFC1FE3801FE00
3803FC01EA07F8EA0FF001E013FCEA1FC0393F80007090C8FCA2127EA312FE5AA77E007E
141C007F143E6C6C13FEEBC00F6CB5FC6C14FC6C14F0000114C039007FFE001F2475A32C
>99 D<913803FF804A13C0A380EC001F1680A2153FA21600A25DA2157EEB03F090380FFC
FEEB3FFF495B90B5FC3801FE1F3803FC0FD807F85B380FF00713E0EA1FC001805B123F13
005A007E5CA2140F12FE485CA291381FC180EDC7E0EC3F87A2EC7F8F02FF13C049130F6C
5AD87E07EB1F80D87F0F133F6CB612006C13DFEC8FFE3907FE07FC3901F801F0233376B2
2C>I<147F903803FFC0010F13F0013F13F84913FCEBFFC13801FE004848137E485AD80F
E013FE15FC485A383F800190380007F848133F90B512F015E01580B5EAFE0014F000FCC8
FCA6127E151C007F143E6C6C13FEEBC00F6CB5FC6C14FC6C14F0000114C039007FFE001F
2475A32C>I<ED03FCED1FFF4B13C05D17E0EDFE1F15FCA30201EB0FC09238F8078093C7
FCA40103B512F8825B7F5E90260007F0C7FC5DA5140F5DA5141F5DA5143F92C8FCA45C14
7EA514FE5CA313015CA31303001C5B127F130700FF5B130F495AEBFF807E6C90C9FCEA1F
FCEA07F02B457DB22C>I<EC07F091381FFC7891387FFEFC49B5FC5B903807FC3F90380F
F01F90391FE00FF8ECC007EB3F80EB7F00017E14F013FE5B12014914E0A2150F12034914
C0A2151FA2ED3F80A2157F15FF4A13006C6C5A6D5A3800FE1F90B55A7F7FEB1FFC903807
F0FC90C7FC1401A25DA21403A25D003C1307007E495AB4131F4A5A49B45A90B5C7FC5C6C
13F86C13E0000F90C8FC26367BA32C>I<EA07FF487FA37EEA003F91C8FCA25BA2137EA2
13FEA25BEC3FC00001EBFFF090B57E81A248EBF0FEECC07E14005B12075B5BA2484813FE
5D5BA2381FC0015DA2EB8003003FECF03016FCEB000715E04814E1020F13F8007E14C1ED
C3F000FE14C7EDCFE04814FF6E13C0168048903803FE000070EB00FC263379B22C>I<14
0FEC1F80EC3FC0A4EC1F80EC0F0091C7FCA8133FEBFFC0000313F05A487FEA1FE1EA3FC1
1381EA7F01127EEAFE0300FC5B13075C1200130F5C131FA25C133FEC0060EC01F8137F13
7EEBFE0301FC13F01407EC0FE0141FEC3FC090B512806D13005CEB1FF8EB07E01D3475B3
2C>I<3901F007F03907F81FFC390FFC7FFE486CB5FC48B6128090383FFE1F14F8007E13
F014E0EB7FC012FE00FC1380140049133FC6481400A348485B157EA24913FE0003ECFC18
167EEBF00115F8000715FE020313FC01E013F015F1000F15F8EDF3F001C013FF6E13E016
C0496C13806CC7EA3E0027247AA32C>110 D<14FE903807FF80011F13E04913F090B5FC
48EB83F83903FE01FCEBF800485A4848137E485AA2485A90C7FC5A127EA215FE12FE4814
FCA2140115F81403EC07F0A2EC0FE0007EEB1FC0EC3F80007F13FFD83F8313006CB45A14
F86C5B000313C0C648C7FC1F2476A32C>I<D801F8EBFF802607FE0313E0260FFF0F13F8
48019F13FC91B512FED83F9F138190390FFE007E007E49137F4A13FF49485A12FC9138E0
00FE16FC49481378000015005CA249C8FCA3137E13FEA25BA21201A25BA21203A25BA35B
6C5A282479A32C>114 D<ECFFE0010713FC011F7F497F4914809038FF807FEBFC00485A
5BA20003EC3F00151C6C6C90C7FC13FEEBFFF86C13FF6D13C0011F13F001077F9038003F
FC1401EC007EA2001C143E127F157E48147C15FC140148495A39FF803FF06CB55A6C5C6C
5C000749C7FCC613E0212478A32C>I<EB01E0497EA31307A25CA2130FA25CA2131FA25C
007FB5128015C0B6FC7E1580C66CC7FCA2137EA213FEA25BA21201A25BA21203A25BA200
0714C0EC03F013E0A2000F1307EC0FE0EBC01FEC3FC0EC7F809038E1FF006CB45A5C6C5B
6C13E06C6CC7FC1C3374B22C>I<01F8EB01C0D803FEEB03E0486C13075A481380D83F9F
130F131F007F15C0127E013F131F00FE130000FC15805B017E133F120001FE14005B5D12
0149137EA2EDFE180003157E9038F001FCA2140316FE913807F8FC140F9038F81FF92601
FC3F13F890B6FC6C15F090397FFE7FE090393FF83FC090390FE00F8027247AA32C>I
E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fk ecrm1000 10 80
/Fk 80 123 df<486C1360000314E039070001C0000EEB038048EB070000181306003813
0E0030130C0070131C00601318A200E01338481330A400CEEB338039FF803FE001C013F0
A3007F131FA2393F800FE0390E0003801C1981B91C>16 D<001C1307007FEB1FC039FF80
3FE0A201C013F0A3007F131F001CEB073000001300A400011470491360A2000314E090C7
12C048130100061480000E130348EB070048130E485B006013181C1980B91C>I<DA0FF8
13FC91397FFF07FF903B01F807DF83C0903A07E001FF0F903B1F8007FE1FE090393F000F
FC137E16F85B9338F007804848010790C7FC1503ACB812F8A32801F80003F0C7FCB3AB48
6C497E267FFFE0B512F0A3333B7FBA30>27 D<EC0FF8EC7FFE903901F80780903907E001
C090391F8000E090383F0007017E497EA25BA2485A6F5AED018092C8FCA9ED03F0B7FCA3
3901F8000F1503B3AA486C497E267FFFE0B512C0A32A3B7FBA2E>I<EC0FFC91387FFF70
903901F803F0903807E00790381F800FEB3F00137EA25B150748481303ADB7FCA33901F8
0003B3AB486C497E267FFFE0B512C0A32A3B7FBA2E>I<DA0FF0EB1FF0DA7FFEEBFFFC90
3B01F80F83F00F903C07E001CFC00380903C1F8000FF0001C090273F0007FE130F017E49
48497EA2495CA248485C03076E5A03030203C7FC95C8FCA9F007E0BAFCA33C01F80003F0
001F1807B3AA486C496C497E267FFFE0B500C1B51280A3413B7FBA45>I<141FEC7FC090
3801F0E0903803C0600107137090380F803090381F00381518A25BA2133E133F15381530
A215705D5D140190381F838092CAFC1487148E02DC49B51280EB0FF85C4A9039003FF800
0107ED0FC06E5D71C7FC6E140E010F150CD91DFC141C01391518D970FE143801E0153026
01C07F1470D803805D00076D6C5BD80F00EBC00148011F5C4890380FE003003E6E48C8FC
007E903807F8060203130E00FE6E5A6E6C5A1400ED7F706C4B13036F5A6F7E6C6C6D6C5B
7013066C6C496C130E6DD979FE5B281FF001F07F133C3C07F80FE03FC0F86CB539800FFF
F0C69026FE000313C0D91FF0D9007FC7FC393E7DBB41>38 D<121C127FEAFF80A213C0A3
127F121C1200A412011380A2120313005A1206120E5A5A5A12600A1979B917>I<146014
E0EB01C0EB0380EB0700130E131E5B5BA25B485AA2485AA212075B120F90C7FCA25A121E
A2123EA35AA65AB2127CA67EA3121EA2121F7EA27F12077F1203A26C7EA26C7E1378A27F
7F130E7FEB0380EB01C0EB00E01460135278BD20>I<12C07E12707E7E7E120F6C7E6C7E
A26C7E6C7EA21378A2137C133C133E131EA2131F7FA21480A3EB07C0A6EB03E0B2EB07C0
A6EB0F80A31400A25B131EA2133E133C137C1378A25BA2485A485AA2485A48C7FC120E5A
5A5A5A5A13527CBD20>I<EB0380497EA7397803803C00FC147E00FE14FE397F8383FC39
3FC387F8390FE38FE03903FBBF803900FFFE00EB3FF8EB0FE0A2EB3FF8EBFFFE3903FBBF
80390FE38FE0393FC387F8397F8383FC39FE0380FE00FC147E0078143C390007C000A76D
5A1F247BBD2A>I<121C127FEAFF80A213C0A3127F121C1200A412011380A2120313005A
1206120E5A5A5A12600A19798817>44 D<B512FCA516057F941C>I<121C127FEAFF80A5
EA7F00121C0909798817>I<1506A2150E150CA2151C151815381530A215701560A215E0
15C0A214011580A2140315005C1406A2140E140CA2141C1418A214381430A21470146014
E05CA213015CA2130391C7FCA25B1306A2130E130C131C1318A213381330A213701360A2
13E05BA212015B120390C8FCA25A1206A2120E120CA2121C1218A21238123012701260A2
12E05AA21F537BBD2A>I<EB03F8EB1FFF90387E0FC09038F803E03901E000F048481378
0007147C48487FA248C77EA2481580A3007EEC0FC0A500FE15E0B3007E15C0A4007F141F
6C1580A36C1500A26C6C133EA26C6C5B6C6C5BEBF0013900F803E090387E0FC0D91FFFC7
FCEB03F823397DB62A>I<EB01C013031307131F13FFB5FCA2131F1200B3B3A7497E007F
B512F0A31C3779B62A>I<EB0FF0EB7FFE48B57E3903E03FE0390F000FF0001E6D7E001C
6D7E486D7E5A6E7E126012FE6CEC7F807FA56CC7FC121CC8FCEDFF00A25D14015D14035D
4A5A4A5A5D4A5A4AC7FC147E5C495A14E0495A495A49C8FC011EEB01805B5B4913034848
1400485A485A90C75A48B6FC5A5A485CB6FCA321377CB62A>I<EB07F8EB3FFF90B512C0
3901F80FF03903C007F848486C7E390E0001FEEA0F80391FE000FF7FA56C5A6C5AC7485A
A25D14035D4A5A5DEC0F80027FC7FCEB1FFCECFF809038000FE06E7EEC01FC816E7EED7F
80A216C0A2153F16E0A2121EEA7F80A2487EA316C0157F491480007EC7FC0070ECFF006C
495A121E390F8003F83907F00FF00001B512C06C6C90C7FCEB0FF823397DB62A>I<1538
A2157815F8A2140114031407A2140F141F141B14331473146314C313011483EB03031307
1306130C131C131813301370136013C01201EA038013005A120E120C5A123812305A12E0
B712F8A3C73803F800AA4A7E0103B512F8A325387EB72A>I<0006140CD80780133C9038
F003F890B5FC5D5D158092C7FC14FC38067FE090C9FCAAEB07F8EB1FFE9038780F809038
E007E03907C003F0496C7E130000066D7E81C8FC8181A21680A4121C127F5A7FA390C713
005D12FC00605C12704A5A6C5C6C1303001E495A6C6C485A3907E03F800001B5C7FC3800
7FFCEB1FE021397CB62A>I<EC3FC0903801FFF0010713FC90380FE03E90383F80079038
7E001F49EB3F804848137F485A12075B000FEC3F0049131E001F91C7FC5B123FA3127F90
C9FCEB01FC903807FF8039FF1E07E090383801F0496C7E01607F01E0137E497F16805BED
1FC0A390C713E0A57EA47F123F16C0A2001FEC3F807F000F15006D5B000714FE6C6C5B6C
6C485A3900FE07F090387FFFC0011F90C7FCEB03FC23397DB62A>I<12301238123E003F
B612E0A316C05A168016000070C712060060140E5D5D00E014304814705D5DC712014A5A
4AC7FC1406140E5CA25C1478147014F05C1301A213035C1307A2130FA3131F5CA2133FA5
137FA96DC8FC131E233A7BB72A>I<EB03F8EB1FFF017F13C09038FC07F03901E001F839
03C0007C4848133C90C7123E48141E000E141F001E80A3121FA26D5B6D131E7FD80FF85B
6D137C01FF13786C6D5A6CEBE3E0ECF780C601FFC7FC6D5A6D6C7E010F13E0013F7F01F9
7F3901E07FFE48486C7E380F800F48486C1380001E010113C0487F007C143F0078EC1FE0
150F00F81407481403A21501A36C15C0A200781403007C15806C14076CEC0F006C6C131E
D807E0137C3903F803F0C6B55A013F1380D907FCC7FC23397DB62A>I<EB03F8EB1FFF01
7F13C03901FC07E048486C7E3907E001F8000F6D7E4848137E5B003F80A248C71380A25A
ED1FC0A516E0A56C143FA36C7E157F121F6C6C13FF6C6C13DF000313013901F0039F3900
FC0F1FD93FFC13C0EB07F090C7FCA2153F1680A216005D120F486C137E486C5BA24A5A4A
5A49485A381F000F001CEB1F80260F807FC7FC3807FFFE000113F838003FC023397DB62A
>I<121C127FEAFF80A5EA7F00121CC7FCB2121C127FEAFF80A5EA7F00121C092479A317>
I<121C127FEAFF80A5EA7F00121CC7FCB2121C127FEAFF80A213C0A3127F121C1200A412
011380A2120313005A1206120E5A5A5A12600A3479A317>I<007FB812F8B912FCCCFCB0
B912FC6C17F836147B9E41>61 D<1538A3157CA315FEA34A7EA34A6C7EA202077FEC063F
A2020E7FEC0C1FA2021C7FEC180FA202387FEC3007A202707FEC6003A202C07F1501A2D9
01807F81A249C77F167FA20106810107B6FCA24981010CC7121FA2496E7EA3496E7EA349
6E7EA213E0707E1201486C81D80FFC02071380B56C90B512FEA3373C7DBB3E>65
D<B712E016FC16FF0001903980007FC06C90C7EA1FE0707E707E707EA2707EA283A75F16
035F4C5A4C5A4C5A4C5AEEFF8091B500FCC7FCA291C7EA7F80EE1FE0EE07F0707E707E83
707EA21880177F18C0A7188017FFA24C13005F16034C5AEE1FF8486DEB7FF0B812C094C7
FC16F832397DB83B>I<913A01FF800180020FEBE003027F13F8903A01FF807E07903A03
FC000F0FD90FF0EB039F4948EB01DFD93F80EB00FF49C8127F01FE153F12014848151F48
48150FA248481507A2485A1703123F5B007F1601A35B00FF93C7FCAD127F6DED0180A312
3F7F001F160318006C7E5F6C7E17066C6C150E6C6C5D00001618017F15386D6C5CD91FE0
5C6D6CEB03C0D903FCEB0F80902701FF803FC7FC9039007FFFFC020F13F002011380313D
7BBA3C>I<B712C016F816FE000190398001FF806C90C7EA3FE0EE0FF0EE03F8707E707E
177FA2EF3F8018C0171F18E0170F18F0A3EF07F8A418FCAC18F8A4EF0FF0A218E0A2171F
18C0EF3F80A2EF7F0017FE4C5A4C5AEE0FF0EE3FE0486DEBFF80B8C7FC16F816C036397D
B83F>I<B812FEA3000190388000076C90C8FC173F838383A383A31880170116C0A394C7
FCA31501A21503150F91B5FCA3EC000F15031501A21500A21860A318E093C712C0A41701
A3EF0380A21707A2170F173F177F486D903807FF00B9FCA333397EB838>I<B812F8A300
01903880001F6C90C71201EE00FC177C173C171CA2170CA4170E1706A2ED0180A21700A4
1503A21507151F91B5FCA3EC001F15071503A21501A692C8FCAD4813C0B612C0A32F397D
B836>I<DBFF8013C0020FEBF001023F13FC9139FF803F03903A03FC000787D90FF0EB03
CF4948EB00EF4948147F4948143F49C8121F485A4848150F48481507A248481503A2485A
1701123F5B007F1600A448481600AB93B6FCA26C7E9338007FE0EF3FC0A2123F7F121FA2
6C7EA26C7EA26C7E6C7E6C6C157F6D7E6D6C14FF6D6C14EFD90FF8EB03C7D903FEEB0783
903A00FFC03F0191393FFFFC00020F01F0130002001380383D7CBA41>I<B648B512FEA3
0001902680000313006C90C76C5AB3A491B6FCA391C71201B3A6486D497EB648B512FEA3
37397DB83E>I<B612C0A3C6EBC0006D5AB3B3AD497EB612C0A31A397EB81E>I<013FB512
E0A39039001FFC00EC07F8B3B3A3123FEA7F80EAFFC0A44A5A1380D87F005B0070131F6C
5C6C495A6C49C7FC380781FC3801FFF038007F80233B7DB82B>I<B649B5FCA300010180
9038007FF06C90C8EA3F80053EC7FC173C17385F5F4C5A4C5A4CC8FC160E5E5E5E5E4B5A
ED0780030EC9FC5D153E157E15FF5C4A7F4A6C7E140E4A6C7E4A6C7E14704A6C7E4A6C7E
14804A6C7E6F7EA26F7F707EA2707E707EA2707EA2707E707EA2707E707F8484486D497F
B6011FEBFF80A339397DB841>I<B612E0A3000101C0C8FC6C90C9FCB3AD1718A5173817
30A31770A317F0A216011603160FEE1FE0486D13FFB8FCA32D397DB834>I<B5933807FF
F86E5DA20001F0FC002600DFC0ED1BF8A2D9CFE01533A3D9C7F01563A3D9C3F815C3A2D9
C1FCEC0183A3D9C0FEEC0303A2027F1406A36E6C130CA36E6C1318A26E6C1330A36E6C13
60A26E6C13C0A3913901FC0180A3913900FE0300A2ED7F06A3ED3F8CA2ED1FD8A3ED0FF0
A3486C6D5A487ED80FFC6D48497EB500C00203B512F8A2ED018045397DB84C>I<B59138
07FFFE8080C69238007FE06EEC1F80D9DFF0EC0F001706EBCFF8EBC7FCA2EBC3FEEBC1FF
A201C07F6E7EA26E7E6E7E81140F6E7E8114036E7E168080ED7FC016E0153FED1FF0ED0F
F8A2ED07FCED03FEA2ED01FF6F1386A2EE7FC6EE3FE6A2EE1FF6EE0FFEA216071603A216
011600A2177E486C153E487ED80FFC151EB500C0140EA2170637397DB83E>I<EC03FF02
1F13E09138FE01FC903901F8007ED907E0EB1F8049486D7ED93F80EB07F049C76C7E01FE
6E7E48486E7E49157E0003167F4848ED3F80A24848ED1FC0A2001F17E049150F003F17F0
A3007F17F8491507A300FF17FCAC007F17F86D150FA3003F17F0A26C6CED1FE0A36C6CED
3FC0000717806D157F000317006C6C15FEA26C6C4A5A017F4A5A6D6C495A6D6C495AD907
E0EB1F80D903F8017FC7FC903900FE01FC91381FFFE0020390C8FC363D7BBA41>I<B712
C016FC16FF0001D9800013C06C90C7EA1FE0707EEE03F883707EA2707EA21880A71800A2
4C5AA24C5A5FEE0FF04C5AEEFF8091B548C7FC16F091CAFCB3A5487FB6FCA331397EB838
>I<EC03FF021F13E09138FE01FC903901F8007ED907E0EB1F8049486D7ED93F80EB07F0
49C76C7E01FE6E7E48486E7EA24848157F0007178049153F000F17C049151F001F17E0A2
4848ED0FF0A3007F17F8A2491507A200FF17FCAC007F17F8A26D150FA2003F17F0A26C6C
ED1FE0A36C6CED3FC00007027C14804AB4FC3C03F80383807F003B01FC0701C0FEEC0E00
2600FE0CEBE1FC017FEC63F8D93F8CEB77F0D91FCCEB3FE0D907EE14806DB449C7FC0100
D981FC130CEC1FFF0203131C91C7001E131C161F183CEF807CEFC0F8EE0FFFA318F08218
E07013C07013809338007E00364B7BBA41>I<B612FEEDFFE016F8000190388007FE6C90
C76C7EEE3FC0707E707E707EA2707EA283A65FA24C5AA24C5A4C5AEE3F8004FFC8FCED07
FC91B512E05E9138000FF0ED03F8ED00FE82707E707EA2161F83A583A6F00180A217F816
0F1803486D01071400B66D6C5A04011306933800FE0ECAEA3FFCEF07F0393B7DB83D>I<
D90FF813C090383FFE0190B512813903F807E33907E000F74848137F4848133F48C7121F
003E140F007E1407A2007C140312FC1501A36C1400A37E6D14006C7E7F13F86CB47E6C13
F8ECFF806C14E06C14F86C14FEC680013F1480010714C0EB007F020713E0EC007FED3FF0
151F150FED07F8A200C01403A21501A37EA216F07E15036C15E06C14076C15C06C140F6D
EB1F80D8FBF0EB3F00D8F0FE13FE39E03FFFF8010F13E0D8C00190C7FC253D7CBA2E>I<
003FB812E0A3D9C003EB001F273E0001FE130348EE01F00078160000701770A300601730
A400E01738481718A4C71600B3B0913807FF80011FB612E0A335397DB83C>I<B6903807
FFFEA3000101809038007FE06C90C8EA1F80EF0F001706B3B2170E6D150C80171C133F17
186D6C14385F6D6C14F06D6C5C6D6C495A6D6CEB07806D6C49C7FC91387F807E91381FFF
F8020713E09138007F80373B7DB83E>I<B500FC91387FFF80A30003018091380FFC006C
90C8EA07E0715A6C705A6E1403017F93C7FCA280013F1506A26E140E011F150C80010F5D
A28001075DA26E147001031560A26D6C5CA2806D4A5AA2ED8003027F91C8FCA291383FC0
06A215E0021F5BA2EDF01C020F1318A26E6C5AA215FC02035BA2EDFEE002015BA26E6C5A
A36FC9FCA3153EA2151CA3393B7EB83E>I<B5D8FC07B5D8F001B5FCA30007902780001F
FEC7EA1FF86C48C7D80FF8EC07E000010307ED03C01B807F6C6F6C1500A26E5F017F6E6C
1406A280013F4A6C5CA280011F4A6D5BEE067FA26D6C010E6D5BEE0C3FA26D6C011C6D5B
EE181FA26D6C6F5BEE300FA26D6C6F485AEE6007A26D6C4CC7FC9338C003FCA203805D91
3B7F818001FE06A203C1150EDA3FC3C7EAFF0CA203E3151CDA1FE6EC7F98A215F6DA0FFC
EC3FF0A302075E4B141FA202035E4B140FA202015E4B1407A2020093C8FC4B80503B7EB8
55>I<007FB590383FFFFCA3C601F801071380D97FE0D903FCC7FC013FEC01F06D6C5C5F
6D6C5C6D6C13034CC8FC6D6C1306160E6D6C5B6DEB8018163891387FC0306E6C5A16E06E
6C5A91380FF18015FB6EB4C9FC5D14036E7EA26E7F6F7EA24B7E15DF9138019FF0913803
8FF8150F91380607FC91380E03FE140C4A6C7EEC38000230804A6D7E14E04A6D7E49486D
7E130391C76C7E01066E7E130E010C6E7E011C1401013C8101FE822607FF80010713E0B5
00E0013FEBFF80A339397EB83E>I<B500FE91383FFFE0A3000301E0913807FE00C649EC
03F0017F6F5A606D6C5D6D6C140395C7FC6D6C1406A26D6C5C6D6C141C17186D6C143817
306D6D5B6E6C13E05F91383FE0015F91381FF003DA0FF890C8FC1606913807FC0E160C91
3803FE1C913801FF185E6E13B016E0157F6F5AB3A24B7E023FB512C0A33B397FB83E>I<
007FB81280B912C0A26C17803204797041>95 D<EB1FE0EBFFFC3803E03F3907000F8039
0F8007E0486C6C7E13E06E7EA26E7E6C5A6C5AC8FCA4147FEB07FFEB3FE0EBFE00EA03F8
EA0FF0EA1FC0123F485A90C7FC160C12FEA31401A26C13036CEB077C903980063E18383F
C01E3A0FE0781FF03A03FFF00FE03A007F8007C026277DA52A>97
D<EA03F012FFA3120F1203B0EC1FE0EC7FF89038F1E03E9039F3801F809039F7000FC001
FEEB07E049EB03F049EB01F85BED00FCA216FEA2167E167FAA167E16FEA216FC15016D14
F8ED03F07F01EEEB07E001C6EB0FC09039C7801F00903881E07E903800FFF8C7EA1FC028
3B7EB92E>I<EB03FC90381FFF8090387E03E03901F80070484813F83907E001FC380FC0
03A2EA1F80123F90380001F848EB00F01500A2127E12FEAA127E127FA26C14067F001F14
0E6D130C000F141C6C6C13386C6C13706C6C13E039007C07C090381FFF00EB07F81F277D
A525>I<ED0FC0EC03FFA3EC003F150FB0EB03F8EB1FFF90387E078F9038F801EF3903F0
007F4848133F4848131FA24848130F123F90C7FC5AA2127E12FEAA127E127FA27EA26C6C
131FA26C6C133F6C6C137F6C6CEBEFF03A01F801CFFF39007C078F90381FFE0FD907F813
C0283B7DB92E>I<EB07F8EB1FFF90387C0FC03901F803E03903F001F0D807E013F8380F
C0004848137CA248C7127E153E5A153F127E12FEA3B7FCA248C8FCA5127EA2127FA26C14
037F001F14076C6C13060007140E6D131CD801F013386C6C137090387E03E090381FFF80
903803FC0020277EA525>I<147E903803FF8090380FC1E0EB1F8790383F0FF0137EA213
FCA23901F803C091C7FCADB512FCA3D801F8C7FCB3AB487E387FFFF8A31C3B7FBA19>I<
ED03F090390FF00FF890393FFC3C3C9039F81F707C3901F00FE03903E007C03A07C003E0
10000FECF000A248486C7EA86C6C485AA200075C6C6C485A6D485A6D48C7FC38073FFC38
060FF0000EC9FCA4120FA213C06CB512C015F86C14FE6CECFF804815C03A0F80007FE048
C7EA0FF0003E140348140116F8481400A56C1401007C15F06CEC03E0003F1407D80F80EB
0F80D807E0EB3F003901FC01FC39007FFFF0010790C7FC26387EA52A>I<EA03F012FFA3
120F1203B0EC0FF0EC3FFCECF03F9039F1C01F809039F3800FC0EBF70013FE496D7EA25B
A35BB3A3486C497EB500C1B51280A3293A7EB92E>I<EA0380EA0FE0487EA56C5AEA0380
C8FCAAEA03F012FFA312071203B3AA487EB512C0A312387EB717>I<EB01C0EB07F0EB0F
F8A5EB07F0EB01C090C7FCAAEB01F813FFA313071301B3B3A2123C127E00FF13F01303A2
14E038FE07C0127C383C0F00EA0FFEEA03F8154984B719>I<EA03F012FFA3120F1203B1
913801FFFCA39138007FC01600157C15705D4A5A4A5A4AC7FC141E1438147814FC13F1EB
F3FEEBF73F01FE7FEBF81F496C7E8114076E7E6E7E811400157E157F811680ED1FC0486C
EB3FF0B500C0B5FCA3283A7EB92C>I<EA03F012FFA3120F1203B3B3AD487EB512C0A312
3A7EB917>I<2703F00FF0EB1FE000FFD93FFCEB7FF8913AF03F01E07E903BF1C01F8380
3F3D0FF3800FC7001F802603F70013CE01FE14DC49D907F8EB0FC0A2495CA3495CB3A348
6C496CEB1FE0B500C1B50083B5FCA340257EA445>I<3903F00FF000FFEB3FFCECF03F90
39F1C01F803A0FF3800FC03803F70013FE496D7EA25BA35BB3A3486C497EB500C1B51280
A329257EA42E>I<EB03FE90380FFF8090383E03E09038F800F84848137C48487F48487F
4848EB0F80001F15C090C712074815E0A2007EEC03F0A400FE15F8A9007E15F0A2007F14
076C15E0A26C6CEB0FC0000F15806D131F6C6CEB3F006C6C137EC66C13F890387E03F090
381FFFC0D903FEC7FC25277EA52A>I<3903F01FE000FFEB7FF89038F1E07E9039F3801F
803A07F7000FC0D803FEEB07E049EB03F04914F849130116FC150016FEA3167FAA16FEA3
ED01FCA26DEB03F816F06D13076DEB0FE001F614C09039F7803F009038F1E07E9038F0FF
F8EC1FC091C8FCAB487EB512C0A328357EA42E>I<D903F813C090381FFE0190387E0781
9038FC01C33903F000E3000714774848133749133F001F141F485A150F48C7FCA312FEAA
127FA37E6D131F121F6D133F120F6C6C137F6C6C13EF3901F801CF39007E078F90381FFE
0FEB07F890C7FCABED1FE00203B5FCA328357DA42C>I<3807E01F00FFEB7FC09038E1E3
E09038E387F0380FE707EA03E613EE9038EC03E09038FC0080491300A45BB3A2487EB512
F0A31C257EA421>I<EBFF03000313E7380F80FF381E003F487F487F00707F12F0A2807E
A27EB490C7FCEA7FE013FF6C13E06C13F86C7F00037FC67F01071380EB007F141F00C0EB
0FC01407A26C1303A37E15806C13077EEC0F00B4131E38F3C07C38E1FFF038C03F801A27
7DA521>I<1318A51338A31378A313F8120112031207001FB5FCB6FCA2D801F8C7FCB215
C0A93800FC011580EB7C03017E13006D5AEB0FFEEB01F81A347FB220>I<D803F0EB07E0
00FFEB01FFA3000FEB001F00031407B3A4150FA3151F12016D133F0000EC77F86D9038E7
FF8090383F03C790381FFF87903A03FC07E00029267EA42E>I<B538803FFEA33A0FF800
0FF06C48EB07E00003EC03C06D148000011500A26C6C1306A26D130E017E130CA26D5BA2
EC8038011F1330A26D6C5AA214E001075BA2903803F180A3D901FBC7FCA214FF6D5AA214
7CA31438A227257EA32C>I<B53A1FFFE03FFEA3260FF8009038000FF86C48017EEB03E0
18C00003023EEB0180A26C6C013FEB0300A36C6CEC8006156FA2017E9038EFC00C15C717
1CD93F01EBE01815830281EBF038D91F831430150102C3EBF87090260FC6001360A2D907
E66D5A02EC137CA2D903FCEB7F804A133FA2010192C7FC4A7FA20100141E4A130E026013
0C37257EA33C>I<B538807FFFA33A03FE003FF00001EC1F80000092C7FC017E131C6D13
186D6C5AECC070010F5B6D6C5AECF180EB03FB6DB4C8FC6D5AA2147F804A7E8114CF9038
01C7E090380383F090380703F8EB0601496C7E011C137E49137F01787F496D7E486C8000
0FEC3FF0D8FFFE90B51280A329247FA32C>I<B538803FFEA33A0FF8000FF06C48EB07C0
0003EC03806C7E16007F00001406A2017E5BA2137F6D5BA26D6C5AA2ECC070010F1360A2
6D6C5AA214F101035BA2D901FBC7FCA214FF6D5AA2147CA31438A21430A214701460A25C
A2EA7C0100FE5B130391C8FC1306EAFC0EEA701C6C5AEA1FF0EA0FC027357EA32C>I<00
3FB512FCA2EB8003D83E0013F8003CEB07F00038EB0FE012300070EB1FC0EC3F80006013
7F150014FE495AA2C6485A495AA2495A495A495AA290387F000613FEA2485A485A000714
0E5B4848130C4848131CA24848133C48C7127C48EB03FC90B5FCA21F247EA325>I
E
%EndDVIPSBitmapFont
%DVIPSBitmapFont: Fl ecss2074 20.74 20
/Fl 20 121 df<EA7FE0AA1207A2EA0FC0A41380121FA31300A25AA2123EA3127E127CA3
12FC0B2070FA2C>39 D<EF7FFCA34D7EA34C7FA34C805F5F040780187FDC0FF87FA2183F
DC1FF07FA2181F043F8017E0180F047F8017C004FF6D7E1780A24B6E7E1700A24B6E7F5E
A203076E7F5E030F82197F5E031F82193F5E033F6F7EA25E037F6F7EA25E03FF6F7EA24A
49818593C8FC4A84855D020784855D020F717EA24A48831A3FA24A48831A1F5D027F841A
0F5D02FF841A074990BAFCA34986A34986A202FCCBFC010F861B7F5C011F861B3F494885
1B1FA24948851B0FA24948851B075C4887874890CC148087A248481BC087A248481BE01C
7F5B001F1CF01C3F48481BF8A21C1F48481BFC1C0FA248481BFE1C075B5F757BF46A>65
D<94381FFFE04CB67E040F15F8047F15FF4BB812E0030717F8031F17FE5D92B538F0007F
4A91C700035B4A01FCEC007F4A01F0150F4A01C015034A90CAFC4A48173C4A481718DAFF
F094C7FC495B495B495B4990CDFCA2495A495A5C137F5C495AA2485BA2485BA24890CEFC
A25A5BA2485AA3123F5BA4485AA6485AB16C7EA66C7EA47F121FA36C7EA27F7EA26C7FA2
6C7FA26C7FA26D7E80133F806D7E6D7EA26D7F6D7F6D6D5F6D6D1707DA7FFC5F6E6C5F6E
6C177F6E01C0923801FF806E01F015076E01FC151F6E01FF92B5FC6E02F0011F1400033F
90B712FC6F17F003075F030117806F6C4BC7FC040F15F004011580DC001F01F0C8FC5179
74F666>67 D<94381FFFC00403B6FC041F15F0047F15FE4BB87E030717F0031F17FC4B17
FF92B526F0007F14804A91C712034A01FCEC007F4A01E0030F1300021F4915034A90CAFC
4A488303F8171F4A488349491706494994C7FC495B4990CDFCA2495A495A5C137F5C495A
5A5C5A5CA24890CEFCA25A5BA2485AA3123F5BA4485AA6485AB0067FB612E06C7EA66C7E
95C8127FA37F121FA36C7EA27F7EA26C7FA2807E807E6D7E80133F806D7E6D7EA26D7F6D
7F6D7F6D7F6E7E15FE6E7E6E13C002076DED03FF6E01FC151F6E01FF4AB5FC6E02F0137F
033F90B812C06FEFFE00030717F8030117E06F6C93C7FC041F15F0040392C8FCDC001F13
C0537974F66A>71 D<EAFFC0B3B3B3B3B3B3A90A756FF42C>73 D<EAFFC0B3B3B3B3B3B3
90B912FCA83E7570F456>76 D<D8FFFCF33FFFA36D63A26D98B5FCA36E61A201BF1BFD6E
1903019F1BF96E1907A3D98FF0F10FF1A3D987F8F11FE1A26E193F01831BC1A26E197F01
811B81A26E19FF01801B016F5FA2027F19FE6F1703023F19FCA26F1707021F19F8A26F17
0F020F19F06F171FA2020719E06F173FA2020319C06F177F020119806F17FFA26E190070
5DA2037F5F701503A26F6C4B5AA2031F5F70150FA2030F5F70151FA203075F70153FA26F
6C4B5AA203015F7015FFA26F94C7FC715BA2047F5D711303043F5D711307A2041F5D7113
0FA2040F5D71131FA204075D71133F04035DA271137F04015DA27113FF7092C8FC188105
7F5BA218C3053F5BA394381FE7F8A2050F5B18FFA2715BA3715BA2715BA394CBFCA26875
6FF48B>I<B812F0EFFF8018F018FCF0FF808519F08501C0C86C13FE05037FDD007F7F06
1F7F06077F727F06007F197F737E737E190F8685731380A2851BC0A285A21BE0A21A7FA6
1AFFA21BC0A261A21B8061A24F13006162191F4F5A4F5A19FF06035B4E5B061F5B067F5B
0503B5C7FC057F5B90B912F86119C06106FCC8FC18F0188005F0C9FC01C0CDFCB3B3AF4B
756FF466>80 D<91380FFF8049B512F0010F14FC017F14FF48B712C0000782001F824882
DAE0007F49C7EA3FFE01F8140FD81FC06E7E90C86C1380121E00186F13C0001081CAFCEF
7FE0A318F0173FAD93B5FC157F0207B6FC143F49B7FC1307011F153F017FEBF80090B512
804801F8C7FC4813C04890C8FCEA0FFC485A485A5B485A5BA248C9FCA5177FA26D15FFA2
6C6C5C6D5C6D140F6C6C5C01FF91B5FC6CEBE00791B612BF6CEDFE3F16FC6C15F06C15C0
6CECFE006C6C13F0D91FFCC9FC344C77CA4C>97 D<F07FE0B3B3AD4AB47E020F13F8023F
13FE91B612804915E0010715F04915FC4915FE499038F007FF49D9800013FF02FCC7123F
4948804801E0804849804A804890C87E4981485A49167F121F5BA2485AA25B127FA25BA3
12FF90CAFCAD7F127FA47F123FA27FA26C7E18FF6C7E6D5D00075E7F6C6C5D6E5C6C6D5C
02F05C6C6DECFF7F6DB4EB03FE6D9038E01FFC6D90B512F86D15F06D15E06D15806D1500
6D6C13FC021F13E0020390C9FC3B7C78FA52>100 D<ED7FE0913803FFFE021F6D7E4A14
E091B612F84981010781498149D9C01F7F90273FFE00037FD97FF8130002E06E7E4948EC
1FF04849140F4890C86C7E5B48486F7E491501120F496F7E121F49167EA24848167F845B
127FA290CAFCF01F80A2BAFCA748CCFCA47EA37EA27FA36C7EA36C7EA26C7E7F12077F6C
6C17806D16016C6D15076C6D150F6EED3FC0D97FF815FF6D6C14036DB46C131F6DD9F003
B512806D90B712006D16FC01005E6E15E0021F1580020702FCC7FC020114E09126001FFE
C8FC3A4C79CA47>I<DB1FE04AB4FC912601FFFE143F02079026FF8003B5FC4AECC01F02
3F02F0B6FC4A02FB158091BAFC49EBE01F49D9000302FCC7FC49486D01F8C8FC02F89038
007F8049486E7E49486E7E4A140F013F824A1407A249C86C7EA401FE6F7EAA017F4B5AA4
6D6C4A5AA26E140F011F5E6E141F6D6C4A5A6D6C4A5A02FEEB01FF496C4990C9FC499038
E01FFE92B55A495D02BF5C020F14C0496C5CD97E0149CAFC9138001FE001FE90CCFCA67F
A27F8080EB3FF091B612FE6DEDFFF818FF6D17C019F0013F17FC498390BA7E48854801E0
C71203480180DA001F7F4848C900037F4848160049EF3FF84848171F49717E127F491707
8648481703A76D1707007F616D170F003F616D171FD81FFCEF7FF06C6C4D5A6D5E6C01C0
03075B6C01F8033F5BC601FF4AB448C7FC6D01F0011F5B6D90B75A010F17E00103178001
004CC8FC021F15F002031580DA000F01E0C9FC496D7CC950>103
D<EAFFE0ABC7FCB3A9EA7FE0B3B3B3B30B6F74EE25>105 D<DB1FFC923801FFC026FFC0
01B500C0021F13FC020702F0027F13FF021F02FC49B612C04A6E498191B7010F8101C170
488101C37048819027C7FE007F91387FE007D9CFF8010F9027E0FF80007FD9DFE00103D9
F1FEC7EA3FFF4A01004A140FD9FF8091267FF3F88091C8D9FFF01680496F4980495F7182
494D16C0A2496F90C9FCA3495EA4495EB3B3AC624A72C97F>109
D<ED1FF826FFC001B57E020714E0021F14F8027F8091B67E01C18101C316809038C7FE00
D9CFF0011F13C0D9DFE0010713E0D9FF80130191C8FC18F049157F5B173F4916F8A24915
1FA35BA45BB3B3AC354A72C952>I<ED1FFC92B57E020714F0021F14FC027F14FF91B77E
010316E0498249D9F0077F4990C76C7ED93FFCEC1FFED97FF0EC07FF4A8049486E7F4849
6E7F4890C96C7E49163F4848707E49160F000F844916074848707EA34848707EA2491600
007F84A490CB7E481980AC6D17FF007F1900A36D5EA2003F606D1603A2001F606D1607A2
6C6C4C5A6D161F0007606D163F6C6C4C5A6C6D4B5A6E5C6C6D4A5BD97FF8020F90C7FC6D
6C4A5A6DB46CEBFFFC6DD9F0075B6D90B65A6D5E010016806E92C8FC021F14FC020714F0
020114C09126001FFCC9FC414C79CA50>I<ED01F8B46C131F157FEC01FF1407141F5C5C
9138FFFE00018113F0018313C0018790C7FCEB8FFCEB9FF85CEBBFC0A2EBFF8091C8FC5B
A25B5BA35BA25BA45BB3B3A7254A72C936>114 D<91380FFFC091B512FE0107ECFFC001
1F15F8017F15FE90B812804817C05A489038F0003F4890C70003138049EC007FD81FF815
1F491507003F16014992C7FCA2485AA77FA26C7E7F7F6CB4FC6C13C014F86CEBFF806C14
FC6CECFFE06C15FC6D14FF6D15C0010F81010315F8010081020F80DA007F7F03071480DB
003F13C0160F040313E01600EF7FF0173FA2EF1FF8A2170FA7EF1FF0A20070163F127C00
7FEE7FE001C015FF01F0020313C0B5020F138002F0137F91B712006C5E001F5E000716F0
C65E011F1580010302FCC7FCD9000F13C0354C7CCA3D>I<D8FFC0ED1FF8B3B3B0173FA3
177FA217FFA26D5C5E007F5D6D5C6D143F01FEECFFDF273FFF8007139F91B6121F6C15FC
6C15F86C15E06C15806CECFE006C6C13F0D90FFEC9FC354A72C852>117
D<D87FF0EF1FF86C6CEF3FF0001FF07FE06C6CEFFFC06C6C5E6C6C18806E4B13006C6D4B
5A6C4D5A6D6C4B5A6D7E6D6C4B5A6D6C4B5A6E4B5A01074B5B6D6C4A90C7FC6D7F6D6D49
5A6E6C495A6E6C495A021F4A5A6F5C6E6C137F6E6C495A6E6C485B6E018390C8FC6E5C92
387FC7FC16EF6FB45A6F5B6F5B6F5B6F5B6F90C9FCA2835D4B7F4B7F4B7F92383FEFF892
387FC7FCEE83FEEDFF814AEB01FF4A486C7F4A486D7E4A486D7E717E4A48804A486D7E4A
48130702FF6E7E49496D7E92C78049486E7F49486F7E010F707E4948151F4948824A6F7E
017F707E49486F7E48496F13804890C914C0484882F17FE04848EF3FF04848EF1FF84848
18FC007FF00FFE4848EF07FF484980C849>120 D E
%EndDVIPSBitmapFont
end
%%EndProlog
%%BeginSetup
%%Feature: *Resolution 600dpi
TeXDict begin
%%BeginPaperSize: Letter
letter
%%EndPaperSize

%%EndSetup
%%Page: 1 1
1 0 bop 0 201 a Fl(Linux)54 b(PCMCIA)f(Programmer's)g(Guide)p
0 315 3900 24 v 0 428 a Fk(Da)n(vid)27 b(Hinds,)h Fj(dahinds@users.so)o
(urc)o(ef)o(or)o(ge.)o(ne)o(t)p Fk(.)1192 b(v2.29,)26
b(05)h(No)n(v)n(em)n(b)r(er)f(2000)0 734 y Fi(This)34
b(do)r(cument)f(describ)r(es)g(ho)n(w)g(to)g(write)g(k)n(ernel)g
(device)h(drivers)g(fo)n(r)f(the)h(Linux)g(PCMCIA)f(Ca)n(rd)h(Services)
g(interface.)55 b(It)0 848 y(also)28 b(describ)r(es)h(ho)n(w)f(to)h
(write)g(user-mo)r(de)g(utilities)f(fo)n(r)h(communicating)e(with)i(Ca)
n(rd)g(Services.)42 b(The)30 b(latest)e(version)h(of)g(this)0
961 y(do)r(cument)c(can)g(alw)n(a)n(ys)f(b)r(e)i(found)f(at)51
b Fh(<ftp://projects.)o(sou)o(rc)o(efo)o(rg)o(e.)o(net)o(/p)o(ub)o(/pc)
o(mc)o(ia)o(-)t(cs)o(>)p Fi(.)30 b(An)c(HTML)f(version)0
1075 y(is)i(at)56 b Fh(<http://pcmcia-)s(cs)o(.so)o(ur)o(ce)o(for)o(ge)
o(.ne)o(t>)o Fi(.)0 1413 y Fg(Con)l(ten)l(ts)0 1653 y
Ff(1)77 b(In)m(tro)s(duction)3201 b(5)125 1809 y Fk(1.1)83
b(Cop)n(yrigh)n(t)26 b(notice)i(and)f(disclaimer)i(.)41
b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134
b(5)125 1966 y(1.2)83 b(A)n(c)n(kno)n(wledgemen)n(ts)54
b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(6)0 2205 y Ff(2)77
b(Basic)31 b(Concepts)3091 b(6)125 2362 y Fk(2.1)83 b(The)28
b(so)r(c)n(k)n(et)e(in)n(terface)73 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134
b(6)125 2518 y(2.2)83 b(The)28 b(so)r(c)n(k)n(et)e(con)n(troller)37
b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(6)0 2757 y Ff(3)77 b(Card)32
b(Services)g(Subfunction)g(Descriptions)2067 b(7)125
2914 y Fk(3.1)83 b(Clien)n(t)28 b(managemen)n(t)f(functions)62
b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)134 b(7)315 3070 y(3.1.1)94 b(RegisterClien)n(t)20
b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(7)315 3227 y(3.1.2)94
b(DeregisterClien)n(t)78 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134 b(8)315
3383 y(3.1.3)94 b(SetEv)n(en)n(tMask)81 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)
h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)134
b(9)315 3540 y(3.1.4)94 b(BindDevice)58 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)
h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
134 b(9)125 3696 y(3.2)83 b(So)r(c)n(k)n(et)27 b(state)h(con)n(trol)83
b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(10)315 3853 y(3.2.1)h(GetStatus)43
b(.)f(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(10)315 4009 y(3.2.2)h(ResetCard)27
b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(11)315 4166 y(3.2.3)h(Susp)r
(endCard)54 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(11)315 4322
y(3.2.4)h(ResumeCard)73 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(12)315 4479 y(3.2.5)h(EjectCard)40 b(.)i(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(12)315 4635 y(3.2.6)h(InsertCard)81 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(13)125 4792 y(3.3)83 b(IO)28 b(card)e(con\034guration)g(calls)j(.)42
b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)93 b(13)315 4948 y(3.3.1)h(RequestIO)23 b(.)42
b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(13)315 5105 y(3.3.2)h(ReleaseIO)43
b(.)f(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)
h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(15)315 5261 y(3.3.3)h(RequestIR)n
(Q)29 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(15)p eop
%%Page: 2 2
2 1 bop 0 -167 3900 5 v 0 -200 a Ff(CONTENTS)3319 b Fk(2)315
162 y(3.3.4)94 b(ReleaseIR)n(Q)49 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(16)315 318 y(3.3.5)h(RequestCon\034guration)70 b(.)42
b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
93 b(17)315 475 y(3.3.6)h(Mo)r(difyCon\034guration)38
b(.)j(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)93 b(19)315 631 y(3.3.7)h(ReleaseCon\034guration)26
b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)93 b(20)315 788 y(3.3.8)h(GetCon\034gurationInfo)83
b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)93 b(20)125 944 y(3.4)83 b(Card)27 b(Information)g(Structure)g
(\(CIS\))h(calls)h(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)93 b(21)315 1101 y(3.4.1)h(GetFirstT)-7 b(uple,)28
b(GetNextT)-7 b(uple)39 b(.)j(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
h(.)f(.)h(.)93 b(21)315 1257 y(3.4.2)h(GetT)-7 b(upleData)84
b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)93 b(22)315 1413 y(3.4.3)h(P)n(arseT)-7
b(uple)69 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(23)315 1570
y(3.4.4)h(V)-7 b(alidateCIS)37 b(.)k(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(23)315 1726 y(3.4.5)h(ReplaceCIS)54 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(24)125 1883 y(3.5)83 b(Memory)27 b(windo)n(w)g(con)n(trol)50
b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)93 b(25)315 2039 y(3.5.1)h(RequestWindo)n(w)77
b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)93 b(25)315 2196 y(3.5.2)h(Mo)r(difyWindo)n(w)44
b(.)e(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
h(.)f(.)h(.)f(.)h(.)93 b(26)315 2352 y(3.5.3)h(ReleaseWindo)n(w)32
b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)93 b(27)315 2509 y(3.5.4)h(GetFirstWindo)n(w,)28
b(GetNextWindo)n(w)43 b(.)f(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(27)315 2665 y(3.5.5)h(MapMemP)n(age,)27 b(GetMemP)n(age)56
b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(27)125 2822 y(3.6)83 b(Bulk)28 b(Memory)e(Services)51
b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)93 b(28)315 2978 y(3.6.1)h(RegisterMTD)40
b(.)i(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
f(.)h(.)f(.)h(.)f(.)h(.)93 b(28)315 3135 y(3.6.2)h(GetFirstRegion,)27
b(GetNextRegion)78 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
93 b(29)315 3291 y(3.6.3)h(Op)r(enMemory)40 b(.)i(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(30)315 3448 y(3.6.4)h(CloseMemory)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(30)315 3604 y(3.6.5)h(ReadMemory)-7 b(,)26 b(W)-7 b(riteMemory)21
b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(31)315 3760 y(3.6.6)h(RegisterEraseQueue)66 b(.)41
b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)93 b(31)315 3917 y(3.6.7)h(DeregisterEraseQueue)58
b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)93 b(33)315 4073 y(3.6.8)h(Chec)n(kEraseQueue)77
b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)93 b(33)125 4230 y(3.7)83 b(Miscellaneous)27
b(calls)56 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(33)315 4386
y(3.7.1)h(GetCardServicesInfo)48 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(33)315
4543 y(3.7.2)h(A)n(ccessCon\034gurationRegister)19 b(.)41
b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(34)315 4699 y(3.7.3)h(A)n(djustResourceInfo)20 b(.)42
b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)93 b(35)315 4856 y(3.7.4)h(Rep)r(ortError)23
b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(37)0 5095 y Ff(4)77
b(Card)32 b(Information)f(Structure)i(De\034nitions)2030
b(37)125 5252 y Fk(4.1)83 b(CIS)28 b(T)-7 b(uple)28 b(De\034nitions)80
b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)93 b(37)p eop
%%Page: 3 3
3 2 bop 0 -167 3900 5 v 0 -200 a Ff(CONTENTS)3319 b Fk(3)315
162 y(4.1.1)94 b(CISTPL_CHECKSUM)69 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)
f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(38)315 318
y(4.1.2)h(CISTPL_LONGLINK_A,)105 b(CISTPL_LONGLINK_C,)f(CISTPL_LINKT)-7
b(AR)n(GET,)581 432 y(CISTPL_NOLINK)26 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(38)315 588 y(4.1.3)h(CISTPL_LONGLINK_MF)n(C)43 b(.)f(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(38)315 745 y(4.1.4)h
(CISTPL_DEVICE,)29 b(CISTPL_DEVICE_A)64 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)
h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(38)315 901 y(4.1.5)h(CISTPL_VERS_1)30 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)
h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(40)315 1058 y(4.1.6)h(CISTPL_AL)-7 b(TSTR)28 b(.)42
b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)93 b(40)315 1214 y(4.1.7)h(CISTPL_JEDEC_C,)28
b(CISTPL_JEDEC_A)38 b(.)k(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(40)315
1371 y(4.1.8)h(CISTPL_CONFIG,)28 b(CISTPL_CONFIG_CB)55
b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
f(.)h(.)f(.)h(.)f(.)h(.)93 b(40)315 1527 y(4.1.9)h(CISTPL_BAR)51
b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)93 b(41)315 1683 y(4.1.10)52 b(CISTPL_CFT)-7
b(ABLE_ENTR)g(Y)59 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)93 b(41)315 1840 y(4.1.11)52 b(CISTPL_CFT)-7 b(ABLE_ENTR)g(Y_CB)69
b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(45)315
1996 y(4.1.12)52 b(CISTPL_MANFID)80 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)
f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(45)315
2153 y(4.1.13)52 b(CISTPL_FUNCID)31 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(45)315 2309 y(4.1.14)52 b(CISTPL_DEVICE_GEO)42 b(.)g(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(46)315
2466 y(4.1.15)52 b(CISTPL_VERS_2)30 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(47)315 2622 y(4.1.16)52 b(CISTPL_OR)n(G)44 b(.)e(.)f(.)h(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(47)315 2779 y(4.1.17)52 b(CISTPL_F)n(ORMA)-7 b(T)58
b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)93 b(47)125 2935 y(4.2)83 b(CIS)28 b(con\034guration)e
(register)g(de\034nitions)47 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
h(.)f(.)h(.)f(.)h(.)93 b(48)315 3092 y(4.2.1)h(Con\034guration)26
b(Option)h(Register)78 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)93 b(48)315 3248 y(4.2.2)h(Card)27 b(Con\034guration)f(and)h
(Status)h(Register)54 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(49)315 3405 y(4.2.3)h(Pin)28 b(Replacemen)n(t)g(Register)45
b(.)d(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(49)315 3561 y(4.2.4)h(So)r(c)n(k)n(et)27 b(and)g(Cop)n(y)g(Register)
50 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
93 b(50)315 3718 y(4.2.5)h(Extended)28 b(Status)g(Register)60
b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(50)315 3874 y(4.2.6)h(IO)27 b(Base)g(and)g(Size)h(Registers)71
b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(51)0 4114 y Ff(5)77 b(Card)32 b(Services)g(Ev)m(en)m(t)g(Handling)
2417 b(51)125 4270 y Fk(5.1)83 b(Ev)n(en)n(t)28 b(handler)f(op)r
(erations)80 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(51)125 4426 y(5.2)83
b(Ev)n(en)n(t)28 b(descriptions)69 b(.)41 b(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(52)125 4583 y(5.3)83 b(Clien)n(t)28 b(driv)n(er)e(ev)n(en)n(t)h
(handling)h(resp)r(onsibilities)60 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)93 b(53)0 4822 y Ff(6)77 b(Memory)30 b(T)-8 b(ec)m(hnology)32
b(Driv)m(ers)2490 b(53)125 4979 y Fk(6.1)83 b(MTD)29
b(request)d(handling)38 b(.)k(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(53)125
5135 y(6.2)83 b(MTD)29 b(help)r(er)e(functions)59 b(.)42
b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
f(.)h(.)f(.)h(.)93 b(55)315 5292 y(6.2.1)h(MTDRequestWindo)n(w,)28
b(MTDReleaseWindo)n(w)e(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(55)p eop
%%Page: 4 4
4 3 bop 0 -167 3900 5 v 0 -200 a Ff(CONTENTS)3319 b Fk(4)315
162 y(6.2.2)94 b(MTDMo)r(difyWindo)n(w)39 b(.)i(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(55)315
318 y(6.2.3)h(MTDSetV)-7 b(pp)76 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(56)315 475 y(6.2.4)h(MTDRD)n(YMask)24 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)
h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(56)0 714 y Ff(7)77 b(Driv)m(er)32 b(Services)g(In)m(terface)2643
b(57)125 871 y Fk(7.1)83 b(In)n(terface)27 b(to)h(other)f(clien)n(t)g
(driv)n(ers)58 b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
f(.)h(.)f(.)h(.)93 b(57)315 1027 y(7.1.1)h(The)28 b(dev_link_t)f
(structure)37 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
h(.)f(.)h(.)93 b(57)315 1184 y(7.1.2)h(register_p)r(ccard_driv)n(er)68
b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)93 b(58)315 1340 y(7.1.3)h(unregister_p)r(ccard_driv)n(er)40
b(.)i(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(59)125 1496 y(7.2)83 b(The)28 b(CardBus)e(clien)n(t)i(in)n(terface)76
b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)93 b(59)315 1653 y(7.2.1)h(register_driv)n(er)53
b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)93 b(59)315 1809 y(7.2.2)h(unregister_driv)n(er)
26 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
h(.)f(.)h(.)f(.)h(.)93 b(59)315 1966 y(7.2.3)h(The)28
b(driv)n(er_op)r(erations)c(en)n(try)j(p)r(oin)n(ts)21
b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(60)125
2122 y(7.3)83 b(In)n(terface)27 b(to)h(user)f(mo)r(de)g(utilities)74
b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)93 b(60)315 2279 y(7.3.1)h(Card)27 b(Services)f(ev)n(en)n(t)h
(noti\034cations)61 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)93 b(60)315 2435 y(7.3.2)h(Io)r(ctl)28 b(descriptions)42
b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
f(.)h(.)f(.)h(.)93 b(61)0 2675 y Ff(8)77 b(Anatom)m(y)31
b(of)h(a)g(Card)g(Services)g(Clien)m(t)f(Driv)m(er)1916
b(63)125 2831 y Fk(8.1)83 b(Mo)r(dule)28 b(initialization)f(and)h
(clean)n(up)34 b(.)42 b(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
h(.)f(.)h(.)93 b(63)125 2988 y(8.2)83 b(The)28 b(*_attac)n(h\(\))f(and)
g(*_detac)n(h\(\))g(functions)53 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)
h(.)f(.)h(.)93 b(63)125 3144 y(8.3)83 b(The)28 b(*_con\034g\(\))e(and)i
(*_release\(\))e(functions)66 b(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)93 b(64)125 3301 y(8.4)83 b(The)28 b(clien)n(t)g(ev)n(en)n(t)f
(handler)46 b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(64)125 3457 y(8.5)83
b(Lo)r(c)n(king)27 b(and)g(sync)n(hronization)f(issues)45
b(.)c(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g
(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(64)125 3614 y(8.6)83 b(Using)28 b(existing)f(Lin)n(ux)g(driv)n(ers)f
(to)i(access)e(PC)i(Card)f(devices)d(.)42 b(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(64)0 3853 y Ff(9)77 b(The)31 b(So)s(c)m(k)m(et)i(Driv)m(er)g(La)m(y)m
(er)2650 b(65)125 4009 y Fk(9.1)83 b(Card)27 b(Services)g(en)n(try)g(p)
r(oin)n(ts)g(for)g(so)r(c)n(k)n(et)g(driv)n(ers)h(.)41
b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(65)125 4166
y(9.2)83 b(Services)27 b(pro)n(vided)f(b)n(y)i(the)g(so)r(c)n(k)n(et)e
(driv)n(er)69 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f
(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
93 b(65)315 4322 y(9.2.1)h(SS_InquireSo)r(c)n(k)n(et)79
b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)
h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f
(.)h(.)f(.)h(.)93 b(66)315 4479 y(9.2.2)h(SS_RegisterCallbac)n(k)26
b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)93 b(67)315 4635 y(9.2.3)h(SS_GetStatus)80
b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)
g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)93 b(67)315 4792 y(9.2.4)h(SS_GetSo)r(c)n(k)n
(et,)27 b(SS_SetSo)r(c)n(k)n(et)33 b(.)42 b(.)g(.)f(.)h(.)f(.)h(.)f(.)h
(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)
f(.)h(.)f(.)h(.)f(.)h(.)93 b(68)315 4948 y(9.2.5)h(SS_GetIOMap,)27
b(SS_SetIOMap)52 b(.)42 b(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h
(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)
h(.)93 b(69)315 5105 y(9.2.6)h(SS_GetMemMap,)28 b(SS_SetMemMap)71
b(.)41 b(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)
f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93 b(70)315
5261 y(9.2.7)h(SS_GetBridge,)27 b(SS_SetBridge)e(.)42
b(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h
(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(71)p eop
%%Page: 5 5
5 4 bop 0 -167 3900 5 v 0 -200 a Ff(1.)73 b(In)m(tro)s(duction)3184
b Fk(5)315 162 y(9.2.8)94 b(SS_Pro)r(cSetup)68 b(.)42
b(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f
(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
f(.)h(.)f(.)h(.)93 b(71)125 318 y(9.3)83 b(Supp)r(orting)28
b(un)n(usual)f(so)r(c)n(k)n(et)f(arc)n(hitectures)60
b(.)41 b(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)
f(.)h(.)f(.)h(.)f(.)h(.)g(.)f(.)h(.)f(.)h(.)f(.)h(.)93
b(72)0 558 y Ff(10)29 b(Where)i(to)h(Go)f(for)h(More)f(Information)2201
b(73)0 896 y Fg(1)131 b(In)l(tro)t(duction)0 1135 y Fk(The)30
b(Lin)n(ux)g(k)n(ernel)f(PCMCIA)h(system)g(has)g(three)f(main)h(comp)r
(onen)n(ts.)44 b(A)n(t)30 b(the)g(lo)n(w)n(est)f(lev)n(el)g(are)g(the)i
(so)r(c)n(k)n(et)e(driv)n(ers.)0 1248 y(Next)c(is)f(the)g(Card)g
(Services)f(mo)r(dule.)36 b(Driv)n(ers)23 b(for)g(sp)r(eci\034c)i
(cards)e(are)g(la)n(y)n(ered)f(on)i(top)g(of)h(Card)e(Services.)35
b(One)23 b(sp)r(ecial)0 1362 y(Card)e(Services)h(clien)n(t,)h(called)f
(Driv)n(er)f(Services,)i(pro)n(vides)d(a)i(link)h(b)r(et)n(w)n(eek)e
(user)h(lev)n(el)g(utilit)n(y)g(programs)e(and)i(the)h(k)n(ernel)0
1475 y(facilities.)0 1632 y(The)32 b(so)r(c)n(k)n(et)e(driv)n(er)g(la)n
(y)n(er)g(is)i(lo)r(osely)e(based)h(on)h(the)g(So)r(c)n(k)n(et)f
(Services)f(API.)j(There)e(are)f(t)n(w)n(o)h(so)r(c)n(k)n(et)g(driv)n
(er)f(mo)r(dules.)0 1745 y(The)g Fh(tcic)d Fk(mo)r(dule)j(supp)r(orts)f
(the)h(Datab)r(o)r(ok)f(TCIC-2)f(family)i(of)g(host)f(con)n(trollers.)
40 b(The)30 b Fh(i82365)d Fk(mo)r(dule)j(supp)r(orts)0
1859 y(the)24 b(In)n(tel)h(i82365sl)c(family)j(and)g(v)-5
b(arious)23 b(In)n(tel-compatible)g(con)n(trollers,)g(including)h
(Cirrus,)g(VLSI,)h(Ricoh,)f(and)g(V)-7 b(adem)0 1973
y(c)n(hips.)40 b(In)29 b(addition,)g(the)g Fh(i82365)d
Fk(mo)r(dule)j(implemen)n(ts)g(supp)r(ort)g(for)f(CardBus)f(con)n
(trollers)g(that)i(follo)n(w)f(the)h(\020Y)-7 b(en)n(ta\021)0
2086 y(register-lev)n(el)25 b(sp)r(eci\034cation.)0 2243
y(Card)38 b(Services)g(is)h(the)g(largest)e(single)i(comp)r(onen)n(t)f
(of)h(the)g(pac)n(k)-5 b(age.)69 b(It)39 b(pro)n(vides)f(an)g(API)i
(somewhat)e(similar)g(to)0 2356 y(DOS)31 b(Card)e(Services,)h(adapted)g
(to)h(a)f(Unix)g(en)n(vironmen)n(t.)45 b(The)30 b(Lin)n(ux)g(implemen)n
(tation)h(w)n(as)e(based)h(in)h(part)f(on)g(the)0 2470
y(Solaris)c(in)n(terface)h(sp)r(eci\034cation.)38 b(It)28
b(is)f(implemen)n(ted)i(in)f(the)g Fh(pcmcia_core)23
b Fk(mo)r(dule.)38 b(Most)28 b(v)n(ersion)e(2.1)h(features)g(are)0
2583 y(implemen)n(ted,)h(with)g(some)f(PC)h(Card)f(95)g(features.)0
2740 y(The)f(Driv)n(er)e(Services)h(la)n(y)n(er)e(implemen)n(ts)j(a)f
(user)g(mo)r(de)h(pseudo-device)e(for)h(accessing)f(some)h(Card)f
(Services)h(functions)0 2853 y(from)31 b(utilit)n(y)h(programs.)45
b(It)32 b(is)f(resp)r(onsible)g(for)f(k)n(eeping)h(trac)n(k)f(of)h(all)
g(clien)n(t)h(driv)n(ers,)e(and)i(for)e(matc)n(hing)h(up)h(driv)n(ers)0
2967 y(with)c(ph)n(ysical)f(so)r(c)n(k)n(ets.)35 b(It)28
b(is)g(implemen)n(ted)g(in)f(the)h Fh(ds)f Fk(mo)r(dule.)0
3123 y(This)46 b(do)r(cumen)n(t)g(describ)r(es)g(the)g(k)n(ernel)f(in)n
(terface)g(to)h(the)h(Card)e(Services)g(and)h(Driv)n(er)f(Services)g
(mo)r(dules,)50 b(and)0 3237 y(the)45 b(user)f(in)n(terface)g(to)h
(Driv)n(er)f(Services.)87 b(It)45 b(is)g(in)n(tended)g(for)f(use)h(b)n
(y)f(clien)n(t)h(device)g(driv)n(er)e(dev)n(elop)r(ers.)87
b(The)0 3351 y(Lin)n(ux)35 b(PCMCIA-HO)n(WTO)f(describ)r(es)g(ho)n(w)g
(to)h(install)g(and)f(use)h(Lin)n(ux)f(PCMCIA)i(supp)r(ort.)58
b(It)35 b(is)g(a)n(v)-5 b(ailable)33 b(from)0 3464 y
Fh(projects.sourcef)o(or)o(ge.)o(ne)o(t)21 b Fk(in)28
b Fh(/pub/pcmcia-cs)p Fk(.)0 3756 y Fe(1.1)112 b(Cop)m(yrigh)m(t)36
b(notice)h(and)h(disclaimer)0 3966 y Fk(Cop)n(yrigh)n(t)26
b(\(c\))i(1996,)e(1997)f(Da)n(vid)j(A.)g(Hinds)0 4122
y(This)20 b(do)r(cumen)n(t)h(ma)n(y)f(b)r(e)g(repro)r(duced)g(or)f
(distributed)i(in)g(an)n(y)e(form)h(without)h(m)n(y)f(prior)g(p)r
(ermission.)33 b(Mo)r(di\034ed)21 b(v)n(ersions)0 4236
y(of)27 b(this)g(do)r(cumen)n(t,)g(including)g(translations)f(in)n(to)g
(other)h(languages,)e(ma)n(y)h(b)r(e)h(freely)g(distributed,)g(pro)n
(vided)f(that)h(they)0 4349 y(are)g(clearly)f(iden)n(ti\034ed)i(as)f
(suc)n(h,)g(and)g(this)h(cop)n(yrigh)n(t)e(is)i(included)g(in)n(tact.)0
4506 y(This)38 b(do)r(cumen)n(t)g(ma)n(y)f(b)r(e)h(included)g(in)g
(commercial)f(distributions)g(without)h(m)n(y)g(prior)e(consen)n(t.)67
b(While)38 b(it)g(is)g(not)0 4619 y(required,)44 b(I)d(w)n(ould)g(lik)n
(e)f(to)h(b)r(e)h(informed)f(of)g(suc)n(h)g(usage.)76
b(If)42 b(y)n(ou)e(in)n(tend)i(to)f(incorp)r(orate)e(this)j(do)r(cumen)
n(t)f(in)g(a)0 4733 y(published)28 b(w)n(ork,)e(please)h(con)n(tact)g
(me)h(to)f(mak)n(e)g(sure)g(y)n(ou)f(ha)n(v)n(e)h(the)h(latest)f(a)n(v)
-5 b(ailable)26 b(v)n(ersion.)0 4889 y(This)37 b(do)r(cumen)n(t)h(is)f
(pro)n(vided)f(\020AS)i(IS\021,)f(with)h(no)f(express)f(or)h(implied)h
(w)n(arran)n(ties.)63 b(Use)38 b(the)g(information)e(in)i(this)0
5003 y(do)r(cumen)n(t)28 b(at)f(y)n(our)f(o)n(wn)h(risk.)p
eop
%%Page: 6 6
6 5 bop 0 -167 3900 5 v 0 -200 a Ff(2.)73 b(Basic)32
b(Concepts)3073 b Fk(6)0 162 y Fe(1.2)112 b(A)m(c)m(kno)m(wledgemen)m
(ts)0 372 y Fk(I'd)33 b(lik)n(e)g(to)g(thank)f(all)h(the)g(Lin)n(ux)g
(users)f(who)h(ha)n(v)n(e)e(help)r(ed)j(test)f(and)g(debug)g(this)g
(soft)n(w)n(are,)f(and)h(who)g(ha)n(v)n(e)f(help)r(ed)0
485 y(with)e(driv)n(er)e(dev)n(elopmen)n(t.)41 b(I)30
b(should)f(also)f(thank)h(Lin)n(us)g(T)-7 b(orv)i(alds,)29
b(Donald)g(Bec)n(k)n(er,)f(Alan)i(Co)n(x,)f(and)g(Bjorn)f(Ekw)n(all)0
599 y(for)i(Lin)n(ux)h(k)n(ernel)f(dev)n(elopmen)n(t)g(help.)46
b(I'm)31 b(esp)r(ecially)f(grateful)g(to)h(Mic)n(hael)f(Bender)g(for)h
(man)n(y)f(helpful)h(discussions)0 712 y(ab)r(out)c(the)h(Solaris)f
(implemen)n(tation.)0 1051 y Fg(2)131 b(Basic)45 b(Concepts)0
1308 y Fe(2.1)112 b(The)38 b(so)s(c)m(k)m(et)f(in)m(terface)0
1518 y Fk(The)24 b(PC)h(Card)f(bus)g(has)g(t)n(w)n(o)f(basic)h(op)r
(erating)f(mo)r(des:)35 b(\020memory-only\021)29 b(and)24
b(\020memory)f(and)h(IO\021.)f(The)i(\034rst)f(mo)r(de)g(w)n(as)0
1632 y(de\034ned)j(b)n(y)f(the)h(original)d(V)-7 b(ersion)26
b(1.0)g(sp)r(eci\034cation)f(and)i(only)f(supp)r(orts)f(simple)i
(memory)f(cards.)35 b(The)26 b(second)g(mo)r(de,)0 1746
y(de\034ned)g(in)f(V)-7 b(ersion)25 b(2.0,)g(rede\034nes)f(a)h(few)h
(of)f(the)h(memory)e(card)g(con)n(trol)g(signals)g(to)i(supp)r(ort)f
(IO)g(p)r(ort)g(addressing)e(and)0 1859 y(IO)k(in)n(terrupt)g
(signalling.)0 2016 y(PC)k(Card)e(devices)g(ha)n(v)n(e)g(t)n(w)n(o)g
(memory)g(spaces:)41 b(\020attribute)30 b(memory\021)35
b(and)30 b(\020common)f(memory\021.)43 b(The)30 b(in)n(terface)f(can)0
2129 y(address)k(up)h(to)g(16MB)f(of)h(eac)n(h)f(t)n(yp)r(e)h(of)g
(memory)-7 b(.)56 b(A)n(ttribute)34 b(memory)g(is)g(t)n(ypically)f
(used)h(for)f(holding)h(descriptiv)n(e)0 2243 y(information)20
b(and)g(con\034guration)f(registers.)33 b(Common)20 b(memory)g(ma)n(y)f
(include)i(the)g(bulk)g(storage)d(of)j(a)f(memory)g(card,)h(or)0
2356 y(device)h(bu\033ers)f(in)h(the)h(case)d(of)i(IO)g(cards.)33
b(All)23 b(cards)d(that)i(are)f(complian)n(t)h(with)g(the)g(v)n(ersion)
e(2.0)h(PC)i(Card)e(sp)r(eci\034cation)0 2470 y(should)j(ha)n(v)n(e)f
(a)h(Card)f(Information)h(Structure)g(\(or)f(\020CIS\021\))h(in)h
(attribute)f(memory)-7 b(,)24 b(whic)n(h)g(describ)r(es)g(the)g(card)g
(and)g(ho)n(w)0 2584 y(it)k(should)f(b)r(e)h(con\034gured.)0
2740 y(Separate)f(con)n(trol)h(signals)f(allo)n(w)h(cards)f(to)h
(signal)g(their)h(op)r(erating)e(status)h(to)h(the)g(host.)39
b(These)29 b(signals)e(include)i(card)0 2854 y(detect,)f(ready/busy)-7
b(,)26 b(write)h(protect,)g(battery)h(lo)n(w,)e(and)i(battery)f(dead.)0
3010 y(The)g(\020memory)e(and)i(IO\021)33 b(in)n(terface)26
b(mo)r(de)h(allo)n(ws)e(cards)h(to)h(address)e(up)i(to)g(64K)e(of)i(IO)
f(p)r(orts.)36 b(It)28 b(also)d(allo)n(ws)h(cards)f(to)0
3124 y(signal)j(IO)h(in)n(terrupts,)g(and)g(routes)f(one)h(card)f
(output)i(to)f(the)g(host)g(system's)g(sp)r(eak)n(er.)40
b(In)29 b(this)h(mo)r(de,)f(sev)n(eral)f(of)h(the)0 3237
y(memory)e(card)g(con)n(trol)f(signals)h(are)f(una)n(v)-5
b(ailable)27 b(b)r(ecause)g(those)g(pins)h(are)f(used)h(to)f(carry)f
(the)i(extra)f(IO)g(card)g(signals.)0 3351 y(On)h(some)f(cards,)g
(these)h(signals)e(can)i(instead)f(b)r(e)i(read)e(from)g(a)h(sp)r
(ecial)f(con\034guration)f(register)h(in)h(attribute)g(memory)-7
b(,)0 3464 y(the)28 b(\020Pin)g(Replacemen)n(t)f(Register\021.)0
3756 y Fe(2.2)112 b(The)38 b(so)s(c)m(k)m(et)f(con)m(troller)0
3966 y Fk(The)c(so)r(c)n(k)n(et)e(con)n(troller)g(serv)n(es)g(as)h(a)h
(bridge)f(b)r(et)n(w)n(een)g(PC)i(Card)d(devices)i(and)f(the)h(system)g
(bus.)52 b(There)32 b(are)g(sev)n(eral)0 4080 y(v)-5
b(arieties)29 b(of)g(con)n(trollers,)f(but)j(all)e(share)f(the)i(same)f
(basic)g(functionalit)n(y)-7 b(.)43 b(The)30 b(So)r(c)n(k)n(et)f
(Services)f(soft)n(w)n(are)g(la)n(y)n(er)g(tak)n(es)0
4193 y(care)e(of)i(all)f(the)h(details)g(of)f(ho)n(w)g(to)g(program)f
(the)i(host)f(con)n(troller.)0 4350 y(The)33 b(so)r(c)n(k)n(et)e(con)n
(troller)g(has)h(the)i(job)e(of)h(mapping)f(windo)n(ws)g(of)h
(addresses)e(in)i(the)g(host)g(memory)f(and)g(IO)h(spaces)e(to)0
4463 y(windo)n(ws)i(of)h(addresses)e(in)i(card)f(space.)54
b(All)35 b(supp)r(orted)e(con)n(trollers)f(supp)r(ort)h(at)h(least)f
(four)g(indep)r(enden)n(t)i(memory)0 4577 y(windo)n(ws)27
b(and)g(t)n(w)n(o)g(IO)g(windo)n(ws)g(p)r(er)g(so)r(c)n(k)n(et.)0
4733 y(Eac)n(h)34 b(memory)f(windo)n(w)h(is)g(de\034ned)h(b)n(y)e(a)h
(base)g(address)f(in)h(the)h(host)f(address)f(space,)i(a)f(base)f
(address)g(in)h(the)h(card)0 4847 y(address)25 b(space,)i(and)f(a)g
(windo)n(w)h(size.)36 b(Some)26 b(con)n(trollers)f(di\033er)i(in)f
(their)h(alignmen)n(t)f(rules)g(for)h(memory)e(windo)n(ws,)h(but)0
4960 y(all)k(con)n(trollers)e(will)i(supp)r(ort)g(windo)n(ws)f(whose)h
(size)f(is)h(at)g(least)g(4K)f(and)h(also)f(a)h(p)r(o)n(w)n(er)f(of)h
(t)n(w)n(o,)g(and)g(where)f(the)i(base)0 5074 y(address)e(is)i(a)f(m)n
(ultiple)h(of)f(the)h(windo)n(w)f(size.)46 b(Eac)n(h)30
b(windo)n(w)g(can)g(b)r(e)h(programmed)e(to)h(p)r(oin)n(t)h(to)f
(either)g(attribute)h(or)0 5188 y(common)c(memory)-7
b(.)p eop
%%Page: 7 7
7 6 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33 b(Services)f
(Subfunction)g(Descriptions)2049 b Fk(7)0 162 y(IO)38
b(windo)n(ws)f(di\033er)h(from)g(memory)f(windo)n(ws)g(in)h(that)g
(host)g(addresses)e(that)j(fall)f(within)g(an)g(IO)g(windo)n(w)f(are)g
(not)0 275 y(mo)r(di\034ed)28 b(b)r(efore)f(they)h(are)f(passed)g(on)g
(to)h(an)f(IO)h(card.)36 b(E\033ectiv)n(ely)-7 b(,)28
b(the)g(base)f(addresses)f(of)i(the)g(windo)n(w)f(in)h(the)g(host)0
389 y(and)33 b(card)f(address)g(spaces)h(are)f(alw)n(a)n(ys)f(equal.)53
b(IO)33 b(windo)n(ws)g(also)f(ha)n(v)n(e)g(no)h(alignmen)n(t)f(or)h
(size)g(restrictions;)i(an)d(IO)0 502 y(windo)n(w)27
b(can)g(start)g(and)h(end)f(on)h(an)n(y)e(b)n(yte)i(b)r(oundary)f(in)g
(the)h(64K)f(IO)g(address)f(space.)0 659 y(The)k(PC)g(Card)e(bus)i
(de\034nes)f(a)h(single)f(in)n(terrupt)g(signal)f(from)i(the)g(card)e
(to)i(the)g(con)n(troller.)40 b(The)30 b(con)n(troller)e(then)i(has)0
772 y(the)i(resp)r(onsibilit)n(y)g(of)g(steering)f(this)h(in)n(terrupt)
g(to)g(an)f(appropriate)g(in)n(terrupt)g(request)h(\(\020irq\021\))f
(line.)51 b(All)32 b(con)n(trollers)0 886 y(supp)r(ort)f(steering)g
(card)g(IO)g(in)n(terrupts)g(to)g(essen)n(tially)g(an)n(y)g(free)g(in)n
(terrupt)g(line.)49 b(Because)31 b(steering)f(happ)r(ens)i(in)g(the)0
1000 y(con)n(troller,)26 b(the)i(card)e(itself)i(is)g(una)n(w)n(are)d
(of)j(whic)n(h)f(in)n(terrupt)h(it)g(uses.)0 1156 y(All)34
b(PC)g(Card)e(con)n(trollers)f(can)i(generate)f(in)n(terrupts)h(in)g
(resp)r(onse)f(to)i(card)e(status)h(c)n(hanges.)52 b(These)33
b(in)n(terrupts)g(are)0 1270 y(distinct)27 b(from)f(the)h(IO)g(in)n
(terrupts)f(generated)f(b)n(y)h(an)h(IO)f(card,)g(and)g(use)h(a)f
(separate)f(in)n(terrupt)h(line.)37 b(Signals)26 b(that)g(can)0
1383 y(generate)g(in)n(terrupts)h(include)h(card)f(detect,)h
(ready/busy)-7 b(,)26 b(write)h(protect,)g(battery)g(lo)n(w,)g(and)h
(battery)f(dead.)0 1720 y Fg(3)131 b(Card)44 b(Services)h(Subfunction)g
(Descriptions)0 1959 y Fk(Card)27 b(Services)f(calls)h(ha)n(v)n(e)g
(the)h(general)e(form:)208 2180 y Fd(#include)41 b("cs_types.h")208
2284 y(#include)g("cs.h")208 2492 y(int)e(CardServices\(int)k(subfunc,)
e(void)f(*arg1,)h(void)f(*arg2,)g(...\);)0 2723 y Fk(Some)34
b(Card)f(Services)g(functions)h(require)e(additional)i
Fh(#include)c Fk(statemen)n(ts.)56 b(The)34 b(particular)e(subfunction)
j(deter-)0 2836 y(mines)g(the)g(n)n(um)n(b)r(er)g(of)f(exp)r(ected)h
(argumen)n(ts.)58 b(A)35 b(return)f(co)r(de)h(of)f Fh(CS_SUCCESS)d
Fk(indicates)k(that)g(a)f(call)g(succeeded.)0 2950 y(Other)27
b(return)g(co)r(des)g(indicate)h(errors.)0 3240 y Fe(3.1)112
b(Clien)m(t)36 b(managemen)m(t)h(functions)0 3450 y Fk(Device)47
b(driv)n(ers)f(that)h(use)g(Card)f(Services)g(functions)i(are)e(called)
g(\020clien)n(ts\021.)95 b(A)47 b(device)g(driv)n(er)f(should)h(use)g
(the)0 3564 y Fh(RegisterClient)15 b Fk(call)20 b(to)g(get)g(a)g(clien)
n(t)g(handle)h(b)r(efore)f(using)g(other)f(services.)34
b(Most)20 b(Card)f(Services)h(functions)g(will)h(tak)n(e)0
3677 y(this)k(clien)n(t)f(handle)g(as)g(an)g(argumen)n(t.)34
b(Before)24 b(unloading,)g(driv)n(ers)f(should)h(also)f(unregister)g
(with)i Fh(DeregisterClien)o(t)p Fk(.)0 3948 y Ff(3.1.1)94
b(RegisterClien)m(t)208 4137 y Fd(int)39 b
(CardServices\(RegisterClient,)46 b(client_handle_t)c(*client,)f
(client_reg_t)h(*reg\);)0 4368 y Fk(The)28 b Fh(client_reg_t)22
b Fk(data)27 b(structure)g(is)h(giv)n(en)e(b)n(y:)208
4574 y Fd(typedef)40 b(struct)h(client_reg_t)h({)521
4678 y(dev_info_t)238 b(*dev_info;)521 4783 y(u_int)433
b(Attributes;)521 4887 y(u_int)g(EventMask;)521 4991
y(int)511 b(\(*event_handler\)\(event_t)44 b(event,)d(int)f(priority,)
1816 5095 y(event_callback_args_t)j(*args\);)521 5199
y(event_callback_args_t)123 b(event_callback_args;)521
5303 y(u_int)433 b(Version;)208 5407 y(})39 b(client_reg_t;)p
eop
%%Page: 8 8
8 7 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33 b(Services)f
(Subfunction)g(Descriptions)2049 b Fk(8)0 162 y Fh(RegisterClient)24
b Fk(establishes)k(a)h(link)h(b)r(et)n(w)n(een)f(a)g(clien)n(t)h(driv)n
(er)e(and)h(Card)g(Services,)g(and)g(connects)g(the)h(clien)n(t)g(with)
0 275 y(an)d(appropriate)f(so)r(c)n(k)n(et.)36 b(The)27
b Fh(dev_info)d Fk(parameter)i(is)i(used)f(b)n(y)h(Card)e(Services)h
(to)g(matc)n(h)h(the)f(clien)n(t)h(with)g(a)f(so)r(c)n(k)n(et)0
389 y(and)33 b(function;)j(this)d(corresp)r(ondence)e(is)i(normally)e
(established)i(b)n(y)f(Driv)n(er)g(Services)g(via)g(a)h(call)f(to)h
Fh(BindDevice)p Fk(.)49 b(If)0 502 y(successful,)27 b(a)g(clien)n(t)h
(handle)g(will)f(b)r(e)h(returned)f(in)h Fh(client)p
Fk(.)0 659 y(The)g(follo)n(wing)e(\035ags)h(can)g(b)r(e)h(sp)r
(eci\034ed)g(in)f Fh(Attributes)p Fk(:)0 882 y Fh(INFO_MASTER_CLIE)o
(NT)208 1029 y Fk(F)-7 b(or)25 b(use)g(only)g(b)n(y)h(the)g(Driv)n(er)e
(Services)h(clien)n(t.)36 b(Among)26 b(other)f(things,)h(sp)r
(eci\034es)f(that)h(this)g(clien)n(t)g(should)f(not)h(b)r(e)208
1142 y(automatically)g(un)n(b)r(ound)i(when)f(a)h(card)e(is)i(ejected)g
(from)f(this)h(so)r(c)n(k)n(et.)0 1322 y Fh(INFO_IO_CLIENT)208
1469 y Fk(Sp)r(eci\034es)f(that)h(this)g(clien)n(t)g(is)f(an)g(IO)h
(card)e(driv)n(er.)0 1649 y Fh(INFO_MTD_CLIENT)208 1796
y Fk(Sp)r(eci\034es)h(that)h(this)g(clien)n(t)g(is)f(a)g(Memory)g(T)-7
b(ec)n(hnology)26 b(Driv)n(er.)0 1976 y Fh(INFO_MEM_CLIENT)208
2122 y Fk(Sp)r(eci\034es)h(that)h(this)g(clien)n(t)g(is)f(a)g(memory)g
(card)g(driv)n(er.)0 2302 y Fh(INFO_CARD_SHARE)208 2449
y Fk(Included)g(for)h(compatibilit)n(y)-7 b(,)27 b(has)g(no)g
(e\033ect.)0 2629 y Fh(INFO_CARD_EXCL)208 2776 y Fk(Included)g(for)h
(compatibilit)n(y)-7 b(,)27 b(has)g(no)g(e\033ect.)0
2999 y Fh(EventMask)h Fk(sp)r(eci\034es)k(what)f(ev)n(en)n(ts)g(this)h
(clien)n(t)g(should)f(b)r(e)i(noti\034ed)e(of.)50 b(The)31
b Fh(event_handler)c Fk(en)n(try)k(p)r(oin)n(t)h(will)g(b)r(e)0
3112 y(called)c(b)n(y)f(Card)g(Services)g(when)h(an)g(ev)n(en)n(t)f(in)
h Fh(EventMask)d Fk(is)i(pro)r(cessed.)37 b(The)28 b
Fh(event_handler_ar)o(gs)21 b Fk(structure)28 b(is)f(a)0
3226 y(template)k(for)f(the)h(structure)f(that)h(will)g(b)r(e)g(passed)
f(to)g(the)h(ev)n(en)n(t)f(handler.)46 b(The)30 b Fh(Version)e
Fk(parameter)h(iden)n(ti\034es)i(the)0 3340 y(Card)c(Services)f(v)n
(ersion)g(lev)n(el)h(that)h(this)g(driv)n(er)e(exp)r(ects;)i(it)g(is)f
(curren)n(tly)g(ignored.)0 3496 y(A)c(driv)n(er)f(should)h(b)r(e)g
(prepared)f(to)h(handle)f(Card)h(Services)f(ev)n(en)n(ts)g(b)r(efore)g
(calling)h Fh(RegisterClient)p Fk(.)29 b(This)23 b(call)g(will)g(al-)0
3610 y(w)n(a)n(ys)f(generate)h(a)g Fh(CS_REGISTRATION_)o(CO)o(MP)o(LET)
o(E)18 b Fk(ev)n(en)n(t,)24 b(and)f(ma)n(y)g(also)g(generate)f(an)h
(arti\034cial)g Fh(CS_CARD_INSERTIO)o(N)0 3723 y Fk(ev)n(en)n(t)k(if)h
(the)g(so)r(c)n(k)n(et)f(is)g(curren)n(tly)g(o)r(ccupied.)0
3880 y(Return)h(co)r(des:)0 4103 y Fh(CS_OUT_OF_RESOUR)o(CE)208
4249 y Fk(An)g(appropriate)d(so)r(c)n(k)n(et)i(could)g(not)h(b)r(e)g
(found)g(for)f(this)g(driv)n(er.)0 4522 y Ff(3.1.2)94
b(DeregisterClien)m(t)208 4713 y Fd(int)39 b
(CardServices\(DeregisterClien)q(t,)45 b(client_handle_t)e(client\);)0
4952 y Fh(DeregisterClient)23 b Fk(sev)n(ers)28 b(the)h(connection)g(b)
r(et)n(w)n(een)h(a)f(clien)n(t)g(and)h(Card)e(Services.)42
b(It)30 b(should)f(b)r(e)h(called)f(after)g(the)0 5066
y(clien)n(t)e(has)f(freed)h(an)n(y)f(resources)e(it)k(has)e(allo)r
(cated.)36 b(Once)26 b(a)g(connection)h(is)f(brok)n(en,)g(it)h(cannot)g
(b)r(e)g(reestablished)f(un)n(til)0 5180 y(after)h(another)g(call)g(to)
g Fh(BindDevice)p Fk(.)0 5336 y(Return)h(co)r(des:)p
eop
%%Page: 9 9
9 8 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33 b(Services)f
(Subfunction)g(Descriptions)2049 b Fk(9)0 162 y Fh(CS_BAD_HANDLE)208
303 y Fk(The)27 b(clien)n(t)h(handle)f(is)h(in)n(v)-5
b(alid.)0 471 y Fh(CS_IN_USE)208 612 y Fk(The)27 b(clien)n(t)h(still)g
(has)f(allo)r(cated)g(resources,)e(suc)n(h)i(as)g(IO)h(p)r(ort)f(windo)
n(ws)g(or)f(an)i(in)n(terrupt,)f(or)g(the)h(so)r(c)n(k)n(et)e
(con\034g-)208 725 y(uration)g(is)i(lo)r(c)n(k)n(ed.)0
993 y Ff(3.1.3)94 b(SetEv)m(en)m(tMask)208 1178 y Fd(int)39
b(CardServices\(SetEventMask,)45 b(client_handle_t)e(client,)e
(eventmask_t)g(*mask\);)0 1388 y Fk(The)28 b Fh(eventmask_t)23
b Fk(structure)k(is)g(giv)n(en)g(b)n(y:)208 1578 y Fd(typedef)40
b(struct)h(eventmask_t)g({)521 1683 y(u_int)433 b(Attributes;)521
1787 y(u_int)g(EventMask;)208 1891 y(})39 b(eventmask_t;)0
2090 y Fh(SetEventMask)23 b Fk(up)r(dates)k(the)h(mask)f(that)h
(determines)f(whic)n(h)h(ev)n(en)n(ts)f(this)g(clien)n(t)h(will)g(b)r
(e)g(noti\034ed)g(of.)0 2247 y(Return)g(co)r(des:)0 2446
y Fh(CS_BAD_HANDLE)208 2587 y Fk(The)f(clien)n(t)h(handle)f(is)h(in)n
(v)-5 b(alid.)0 2855 y Ff(3.1.4)94 b(BindDevice)208 3040
y Fd(int)39 b(CardServices\(BindDevice,)45 b(bind_req_t)c(*req\);)0
3250 y Fk(The)28 b Fh(bind_req)c Fk(structure)j(is)g(giv)n(en)g(b)n(y:)
208 3440 y Fd(typedef)40 b(struct)h(bind_req_t)g({)521
3544 y(socket_t)316 b(Socket;)521 3648 y(u_char)394 b(Function;)521
3753 y(dev_info_t)238 b(*dev_info;)208 3857 y(})39 b(bind_req_t;)0
4056 y Fh(BindDevice)21 b Fk(asso)r(ciates)h(a)j(device)f(driv)n(er)g
(with)h(a)f(particular)f(so)r(c)n(k)n(et.)35 b(It)25
b(is)g(normally)e(called)i(b)n(y)f(Driv)n(er)g(Services)f(after)0
4170 y(a)31 b(newly)g(inserted)g(card)g(has)f(b)r(een)i(iden)n
(ti\034ed.)49 b(Once)31 b(a)g(driv)n(er)f(has)g(b)r(een)i(b)r(ound)g
(to)f(a)g(so)r(c)n(k)n(et,)g(it)h(will)f(b)r(e)h(eligible)f(to)0
4283 y(register)c(as)g(a)h(clien)n(t)h(of)f(that)g(so)r(c)n(k)n(et.)38
b(Note)28 b(that)h(this)g(call)e(do)r(es)h(not)h(tak)n(e)e(a)h(clien)n
(t)g(handle)h(as)e(an)h(argumen)n(t.)38 b(This)28 b(is)0
4397 y(the)g(only)f(Card)g(Services)f(call)i(that)f(tak)n(es)g(a)g(so)r
(c)n(k)n(et)g(n)n(um)n(b)r(er)g(as)g(an)g(argumen)n(t.)0
4553 y(The)19 b Fh(Function)d Fk(\034eld)k(sp)r(eci\034es)f(whic)n(h)g
(function\(s\))h(of)f(a)g(m)n(ultifunction)h(card)e(are)g(to)h(b)r(e)h
(b)r(ound)f(to)g(this)h(driv)n(er.)33 b(F)-7 b(unction)0
4667 y(n)n(um)n(b)r(ers)21 b(corresp)r(ond)f(to)h(en)n(tries)g(in)g
(the)h(card's)f Fh(CISTPL_LONGLINK)o(_M)o(FC)15 b Fk(tuple.)35
b(If)22 b Fh(Function)c Fk(is)k(set)f(to)h Fh(BIND_FN_ALL)p
Fk(,)0 4781 y(the)27 b(driv)n(er)e(will)i(b)r(e)g(b)r(ound)g(to)f(all)g
(card)g(functions.)37 b(A)27 b(driv)n(er)e(will)i(only)f(b)r(e)h(able)f
(to)g(access)g(CIS)g(tuples)h(corresp)r(onding)0 4894
y(to)g(functions)h(for)f(whic)n(h)h(it)g(is)f(b)r(ound.)0
5051 y(Return)h(co)r(des:)0 5250 y Fh(CS_BAD_SOCKET)208
5391 y Fk(The)f(sp)r(eci\034ed)h(so)r(c)n(k)n(et)e(n)n(um)n(b)r(er)i
(is)f(in)n(v)-5 b(alid.)p eop
%%Page: 10 10
10 9 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(10)0
162 y Fe(3.2)112 b(So)s(c)m(k)m(et)37 b(state)h(con)m(trol)0
372 y Fk(These)27 b(functions)g(are)g(more)f(or)g(less)h(concerned)f
(with)i(getting)f(and)g(setting)g(the)h(curren)n(t)e(op)r(erating)g
(state)h(of)g(a)g(so)r(c)n(k)n(et.)0 485 y Fh(GetStatus)33
b Fk(returns)k(the)g(curren)n(t)f(so)r(c)n(k)n(et)g(state.)65
b Fh(ResetCard)33 b Fk(is)k(used)g(to)g(send)g(a)g(hard)f(reset)h
(signal)f(to)h(a)f(so)r(c)n(k)n(et.)0 599 y Fh(SuspendCard)c
Fk(and)k Fh(ResumeCard)d Fk(can)j(b)r(e)g(used)h(to)f(p)r(o)n(w)n(er)f
(do)n(wn)h(and)h(p)r(o)n(w)n(er)e(up)i(a)f(so)r(c)n(k)n(et)f(without)i
(releasing)e(the)0 712 y(driv)n(ers)24 b(curren)n(tly)h(b)r(ound)h(to)f
(that)h(so)r(c)n(k)n(et.)35 b Fh(EjectCard)22 b Fk(and)k
Fh(InsertCard)21 b Fk(essen)n(tially)k(mimic)h(real)f(card)g(ejection)g
(and)0 826 y(insertion)i(ev)n(en)n(ts.)0 1097 y Ff(3.2.1)94
b(GetStatus)208 1285 y Fd(int)39 b(CardServices\(GetStatus,)45
b(client_handle_t)d(client,)f(cs_status_t)h(*status\);)0
1512 y Fk(The)28 b Fh(cs_status_t)23 b Fk(data)k(structure)g(is)g(giv)n
(en)g(b)n(y:)208 1716 y Fd(typedef)40 b(struct)h(cs_status_t)g({)521
1820 y(u_char)394 b(Function;)521 1924 y(u_int)433 b(CardState;)521
2028 y(u_int)g(SocketState;)208 2132 y(})39 b(cs_status_t;)0
2345 y Fh(GetStatus)g Fk(returns)i(the)i(curren)n(t)f(status)g(of)g(a)g
(clien)n(t's)h(so)r(c)n(k)n(et.)80 b(F)-7 b(or)42 b(cards)f(that)i(are)
e(con\034gured)g(in)i(IO)f(mo)r(de,)0 2459 y Fh(GetStatus)33
b Fk(uses)j(the)g(Pin)h(Replacemen)n(t)f(Register)g(and)g(Extended)h
(Status)g(Register)e(to)h(determine)h(the)f(card)g(sta-)0
2573 y(tus.)52 b(F)-7 b(or)32 b(normal)g(clien)n(ts,)i(the)f
Fh(Function)c Fk(\034eld)k(is)f(ignored,)h(but)g(for)f(clien)n(ts)h(b)r
(ound)g(with)g Fh(BIND_FN_ALL)p Fk(,)28 b(this)33 b(\034eld)0
2686 y(sp)r(eci\034es)22 b(the)h(function)g(whose)f(con\034guration)f
(registers)f(should)j(b)r(e)f(used)h(to)f(determine)h(the)g(so)r(c)n(k)
n(et)e(state,)i(if)g(the)g(so)r(c)n(k)n(et)0 2800 y(is)k(curren)n(tly)g
(con\034gured.)36 b(The)27 b(follo)n(wing)g(\035ags)f(are)h(de\034ned)h
(in)g Fh(CardState)p Fk(:)0 3027 y Fh(CS_EVENT_CARD_DE)o(TE)o(CT)208
3171 y Fk(Sp)r(eci\034es)f(that)h(the)g(so)r(c)n(k)n(et)f(is)g(o)r
(ccupied.)0 3346 y Fh(CS_EVENT_CB_DETE)o(CT)208 3491
y Fk(Sp)r(eci\034es)g(that)h(the)g(so)r(c)n(k)n(et)f(is)g(o)r(ccupied)h
(b)n(y)f(a)g(CardBus)f(device.)0 3666 y Fh(CS_EVENT_WRITE_P)o(RO)o(TEC)
o(T)208 3810 y Fk(Sp)r(eci\034es)h(that)h(the)g(card)f(is)g(curren)n
(tly)g(write)g(protected.)0 3985 y Fh(CS_EVENT_BATTERY)o(_L)o(OW)208
4130 y Fk(Sp)r(eci\034es)g(that)h(the)g(card)f(battery)g(is)g(lo)n(w.)0
4305 y Fh(CS_EVENT_BATTERY)o(_D)o(EAD)208 4449 y Fk(Sp)r(eci\034es)g
(that)h(the)g(card)f(battery)g(is)g(dead.)0 4624 y Fh(CS_EVENT_READY_C)
o(HA)o(NGE)208 4768 y Fk(Sp)r(eci\034es)g(that)h(the)g(card)f(is)g
(ready)-7 b(.)0 4943 y Fh(CS_EVENT_PM_SUSP)o(EN)o(D)208
5088 y Fk(Sp)r(eci\034es)27 b(that)h(the)g(so)r(c)n(k)n(et)f(is)g(susp)
r(ended.)0 5263 y Fh(CS_EVENT_REQUEST)o(_A)o(TTE)o(NT)o(IO)o(N)208
5407 y Fk(Sp)r(eci\034es)g(that)h(the)g(request)f(atten)n(tion)g(bit)h
(in)g(the)g(extended)g(status)f(register)f(is)i(set.)p
eop
%%Page: 11 11
11 10 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(11)0
162 y Fh(CS_EVENT_CARD_IN)o(SE)o(RTI)o(ON)208 308 y Fk(Sp)r(eci\034es)
29 b(that)g(a)g(card)f(insertion)g(ev)n(en)n(t)h(is)g(in)g(progress.)39
b(An)29 b(insertion)g(ev)n(en)n(t)f(will)h(b)r(e)h(sen)n(t)f(to)f(the)i
(clien)n(t)f(when)208 422 y(so)r(c)n(k)n(et)d(setup)i(is)f(complete.)0
602 y Fh(CS_EVENT_3VCARD)208 749 y Fk(Indicates)g(that)h(the)g(card)e
(supp)r(orts)h(3.3V)g(op)r(eration.)0 929 y Fh(CS_EVENT_XVCARD)208
1076 y Fk(Indicates)k(that)g(the)h(card)e(supp)r(orts)h(\020X.X\021V)h
(op)r(eration.)47 b(The)31 b(actual)g(v)n(oltage)f(is)h(curren)n(tly)f
(unde\034ned)i(in)g(the)208 1189 y(sp)r(eci\034cation.)0
1429 y Fh(SocketState)15 b Fk(is)20 b(curren)n(tly)e(un)n(used,)k(but)e
(in)g(theory)-7 b(,)21 b(it)f(should)f(latc)n(h)g(c)n(hanges)g(in)h
(the)g(state)f(of)h(the)g(\034elds)g(in)g Fh(CardState)p
Fk(.)0 1585 y(Return)28 b(co)r(des:)0 1808 y Fh(CS_BAD_HANDLE)208
1955 y Fk(The)f(clien)n(t)h(handle)f(is)h(in)n(v)-5 b(alid.)0
2227 y Ff(3.2.2)94 b(ResetCard)208 2418 y Fd(int)39 b
(CardServices\(ResetCard,)45 b(client_handle_t)d(client\);)0
2658 y Fh(ResetCard)23 b Fk(requests)k(that)g(a)g(clien)n(t's)g(so)r(c)
n(k)n(et)f(b)r(e)h(reset.)36 b(When)28 b(this)g(call)e(is)h(made,)g
(Card)g(Services)f(sends)h(all)g(clien)n(ts)f(a)0 2771
y Fh(CS_EVENT_RESET_R)o(EQ)o(UES)o(T)e Fk(ev)n(en)n(t.)44
b(If)30 b(an)n(y)f(clien)n(t)h(rejects)g(the)g(request,)h(Card)e
(Services)g(sends)g(the)i(initiating)f(clien)n(t)0 2885
y(a)j Fh(CS_EVENT_RESET_)o(CO)o(MPL)o(ET)o(E)27 b Fk(ev)n(en)n(t)33
b(with)g Fh(event_callback_ar)o(gs)o(.i)o(nfo)26 b Fk(set)33
b(to)g(the)h(return)f(co)r(de)f(of)i(the)f(clien)n(t)0
2999 y(that)28 b(rejected)f(the)h(request.)0 3155 y(If)j(all)g(clien)n
(ts)f(agree)f(to)i(the)g(request,)g(Card)e(Services)h(sends)g(a)h
Fh(CS_EVENT_RESET_)o(PHY)o(SI)o(CA)o(L)25 b Fk(ev)n(en)n(t,)31
b(then)g(resets)f(the)0 3269 y(so)r(c)n(k)n(et.)58 b(When)36
b(the)f(so)r(c)n(k)n(et)f(signals)g(that)i(it)f(is)g(ready)-7
b(,)36 b(a)f Fh(CS_EVENT_CARD_R)o(ESE)o(T)29 b Fk(ev)n(en)n(t)34
b(is)h(generated.)59 b(Finally)-7 b(,)36 b(a)0 3382 y
Fh(CS_EVENT_RESET_C)o(OM)o(PLE)o(TE)28 b Fk(ev)n(en)n(t)34
b(is)g(sen)n(t)g(to)h(the)g(initiating)f(clien)n(t,)i(with)f
Fh(event_callback_ar)o(gs)o(.i)o(nfo)28 b Fk(set)34 b(to)0
3496 y(zero.)0 3652 y(Return)28 b(co)r(des:)0 3875 y
Fh(CS_BAD_HANDLE)208 4022 y Fk(The)f(clien)n(t)h(handle)f(is)h(in)n(v)
-5 b(alid.)0 4202 y Fh(CS_NO_CARD)208 4349 y Fk(The)27
b(so)r(c)n(k)n(et)g(assigned)f(to)h(this)h(clien)n(t)g(is)f(curren)n
(tly)g(v)-5 b(acan)n(t.)0 4529 y Fh(CS_IN_USE)208 4675
y Fk(This)27 b(so)r(c)n(k)n(et)g(is)g(curren)n(tly)g(b)r(eing)g(reset.)
0 4948 y Ff(3.2.3)94 b(Susp)s(endCard)208 5139 y Fd(int)39
b(CardServices\(SuspendCard,)45 b(client_handle_t)e(client\);)p
eop
%%Page: 12 12
12 11 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(12)0
162 y(Card)31 b(Services)h(sends)g(all)g(clien)n(ts)g
Fh(CS_EVENT_PM_SUSP)o(EN)o(D)26 b Fk(ev)n(en)n(ts,)33
b(then)g(sh)n(uts)f(do)n(wn)g(and)g(turns)g(o\033)g(p)r(o)n(w)n(er)g
(to)g(the)0 275 y(so)r(c)n(k)n(et.)0 432 y(Return)c(co)r(des:)0
655 y Fh(CS_BAD_HANDLE)208 801 y Fk(The)f(clien)n(t)h(handle)f(is)h(in)
n(v)-5 b(alid.)0 981 y Fh(CS_NO_CARD)208 1128 y Fk(The)27
b(so)r(c)n(k)n(et)g(assigned)f(to)h(this)h(clien)n(t)g(is)f(curren)n
(tly)g(v)-5 b(acan)n(t.)0 1308 y Fh(CS_IN_USE)208 1455
y Fk(This)27 b(so)r(c)n(k)n(et)g(is)g(already)f(susp)r(ended.)0
1728 y Ff(3.2.4)94 b(ResumeCard)208 1918 y Fd(int)39
b(CardServices\(ResumeCard,)45 b(client_handle_t)d(client\);)0
2158 y Fk(After)28 b(restoring)e(p)r(o)n(w)n(er)g(to)h(the)h(so)r(c)n
(k)n(et,)f(Card)g(Services)f(will)i(notify)g(all)f(clien)n(ts)g(with)i
Fh(CS_EVENT_PM_RES)o(UM)o(E)22 b Fk(ev)n(en)n(ts.)0 2314
y(Return)28 b(co)r(des:)0 2537 y Fh(CS_BAD_HANDLE)208
2684 y Fk(The)f(clien)n(t)h(handle)f(is)h(in)n(v)-5 b(alid.)0
2864 y Fh(CS_NO_CARD)208 3011 y Fk(The)27 b(so)r(c)n(k)n(et)g(assigned)
f(to)h(this)h(clien)n(t)g(is)f(curren)n(tly)g(v)-5 b(acan)n(t.)0
3191 y Fh(CS_IN_USE)208 3338 y Fk(This)27 b(so)r(c)n(k)n(et)g(is)g(not)
h(curren)n(tly)e(susp)r(ended.)0 3610 y Ff(3.2.5)94 b(EjectCard)208
3801 y Fd(int)39 b(CardServices\(EjectCard,)45 b(client_handle_t)d
(client\);)0 4041 y Fk(Card)24 b(Services)g(sends)h(eject)h(ev)n(en)n
(ts)e(to)h(all)g(clien)n(ts,)h(then)f(sh)n(uts)g(do)n(wn)g(and)g(turns)
g(o\033)g(p)r(o)n(w)n(er)f(to)h(the)h(so)r(c)n(k)n(et.)35
b(All)25 b(clien)n(ts)0 4154 y(except)j(for)f(Driv)n(er)f(Services)h
(will)g(b)r(e)h(unlink)n(ed)g(from)f(the)h(so)r(c)n(k)n(et.)0
4311 y(Return)g(co)r(des:)0 4534 y Fh(CS_BAD_HANDLE)208
4680 y Fk(The)f(clien)n(t)h(handle)f(is)h(in)n(v)-5 b(alid.)0
4860 y Fh(CS_NO_CARD)208 5007 y Fk(The)27 b(so)r(c)n(k)n(et)g(assigned)
f(to)h(this)h(clien)n(t)g(is)f(curren)n(tly)g(v)-5 b(acan)n(t.)p
eop
%%Page: 13 13
13 12 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(13)0
162 y Ff(3.2.6)94 b(InsertCard)208 353 y Fd(int)39 b
(CardServices\(InsertCard,)45 b(client_handle_t)d(client\);)0
592 y Fk(Card)27 b(Services)f(sends)i(insertion)e(ev)n(en)n(ts)h(to)h
(all)f(clien)n(ts)g(of)h(this)g(so)r(c)n(k)n(et)e(\(normally)-7
b(,)27 b(only)g(Driv)n(er)g(Services\).)0 749 y(Return)h(co)r(des:)0
971 y Fh(CS_BAD_HANDLE)208 1118 y Fk(The)f(clien)n(t)h(handle)f(is)h
(in)n(v)-5 b(alid.)0 1298 y Fh(CS_NO_CARD)208 1445 y
Fk(The)27 b(so)r(c)n(k)n(et)g(assigned)f(to)h(this)h(clien)n(t)g(is)f
(curren)n(tly)g(v)-5 b(acan)n(t.)0 1625 y Fh(CS_IN_USE)208
1772 y Fk(The)27 b(so)r(c)n(k)n(et)g(has)g(already)f(b)r(een)i
(con\034gured.)0 2063 y Fe(3.3)112 b(IO)37 b(card)h(con\034guration)f
(calls)0 2273 y Fk(The)27 b(normal)g(order)e(of)j(ev)n(en)n(ts)e(is)h
(for)g(a)g(driv)n(er)f(to)h(reserv)n(e)e(IO)i(p)r(orts)g(and)g(an)g(in)
n(terrupt)g(line)g(with)h(calls)f(to)g Fh(RequestIO)0
2387 y Fk(and)h Fh(RequestIRQ)p Fk(,)c(then)k(to)g(call)g
Fh(RequestConfigura)o(tio)o(n)22 b Fk(to)28 b(actually)f(con\034gure)g
(the)h(so)r(c)n(k)n(et.)38 b(If)28 b(an)n(y)g(of)g(these)g(calls)0
2501 y(fails,)f(a)h(driv)n(er)e(should)h(b)r(e)h(sure)f(to)g(release)g
(an)n(y)f(resources)g(it)i(successfully)f(reserv)n(ed.)0
2657 y(Multifunction)f(cards)e(can)h(ha)n(v)n(e)f(separate)f
(con\034gurations)h(for)g(eac)n(h)g(card)h(function.)36
b(Ho)n(w)n(ev)n(er,)24 b(the)h(con\034gurations)e(do)0
2771 y(need)28 b(to)f(b)r(e)h(consisten)n(t)f(with)h(one)g(another.)36
b(While)28 b(eac)n(h)f(card)g(function)h(has)f(its)h(o)n(wn)f(set)g(of)
h(con\034guration)e(registers,)0 2884 y(eac)n(h)h(so)r(c)n(k)n(et)f
(has)h(only)g(a)h(single)f(in)n(terrupt)g(line)h(and)f(can)g(only)g
(map)h(t)n(w)n(o)f(con)n(tiguous)f(ranges)g(of)h(IO)g(p)r(orts.)0
3041 y(CardBus)e(cards)h(are)f(con\034gured)h(somewhat)g(di\033eren)n
(tly)-7 b(.)36 b(The)27 b Fh(RequestIO)c Fk(and)j Fh(RequestConfigura)o
(tio)o(n)20 b Fk(calls)26 b(ha)n(v)n(e)0 3154 y(similar)39
b(roles,)k(ho)n(w)n(ev)n(er,)e(Card)e(Services)h(tak)n(es)f(resp)r
(onsibilit)n(y)g(for)h(most)g(of)g(the)h(con\034guration)d(details,)44
b(and)c(the)0 3268 y(con)n(ten)n(ts)27 b(of)g(the)h(request)f
(structures)g(are)g(ignored.)0 3540 y Ff(3.3.1)94 b(RequestIO)208
3731 y Fd(int)39 b(CardServices\(RequestIO,)45 b(client_handle_t)d
(client,)f(io_req_t)g(*req\);)0 3971 y Fk(The)28 b Fh(io_req_t)c
Fk(data)j(structure)g(is)g(giv)n(en)g(b)n(y:)208 4184
y Fd(typedef)40 b(struct)h(io_req_t)g({)521 4288 y(ioaddr_t)316
b(BasePort1;)521 4392 y(ioaddr_t)g(NumPorts1;)521 4497
y(u_int)433 b(Attributes1;)521 4601 y(ioaddr_t)316 b(BasePort2;)521
4705 y(ioaddr_t)g(NumPorts2;)521 4809 y(u_int)433 b(Attributes2;)521
4913 y(u_int)g(IOAddrLines;)208 5017 y(})39 b(io_req_t;)0
5240 y Fh(RequestIO)20 b Fk(reserv)n(es)h(IO)j(p)r(ort)f(windo)n(ws)g
(for)g(a)g(card.)35 b Fh(BasePort1)20 b Fk(sp)r(eci\034es)j(the)h(base)
f(IO)g(p)r(ort)h(address)e(of)i(the)g(windo)n(w)0 5354
y(to)36 b(b)r(e)g(reserv)n(ed.)60 b(If)36 b Fh(NumPorts2)c
Fk(is)k(non-zero,)g(a)g(second)f(IO)h(p)r(ort)f(windo)n(w)h(will)g
(also)e(b)r(e)j(reserv)n(ed.)60 b Fh(IOAddrLines)p eop
%%Page: 14 14
14 13 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(14)0
162 y(sp)r(eci\034es)22 b(the)h(n)n(um)n(b)r(er)f(of)h(address)e(lines)
h(that)h(are)f(actually)f(deco)r(ded)i(b)n(y)f(the)h(card.)34
b(The)23 b(IO)f(p)r(ort)g(allo)r(cation)f(algorithm)0
275 y(assumes)40 b(that)i(an)n(y)f(alias)f(of)h(the)h(requested)f
(address\(es\))f(that)i(preserv)n(es)d(the)j(lo)n(w)n(er)e
Fh(IOAddrLines)c Fk(bits)42 b(will)g(b)r(e)0 389 y(acceptable,)27
b(and)g(will)h(up)r(date)g Fh(BasePort1)c Fk(and)j Fh(BasePort2)d
Fk(to)k(re\035ect)f(the)h(address)e(range\(s\))g(actually)h(assigned.)0
545 y(Prior)33 b(to)h(release)f(3.1.4,)h(the)h Fh(IOAddrLines)29
b Fk(\034eld)35 b(w)n(as)e(ignored.)55 b(The)34 b(allo)r(cator)e(alw)n
(a)n(ys)g(tried)i(to)g(assign)f(the)i(exact)0 659 y(address)29
b(range)h(requested,)g(unless)h(the)g(base)e(address)h(w)n(as)f(zero;)i
(in)g(that)g(case,)g(it)g(w)n(ould)f(assign)f(an)n(y)h(a)n(v)-5
b(ailable)29 b(win-)0 772 y(do)n(w)j(aligned)f(to)i(the)f(nearest)g(p)r
(o)n(w)n(er)f(of)h(t)n(w)n(o)g(larger)e(than)i(the)h(windo)n(w)f(size.)
51 b(The)32 b(new)g(allo)r(cator)f(v)n(eri\034es)g(that)i(the)0
886 y Fh(IOAddrLines)17 b Fk(parameter)i(agrees)g(with)j(the)f
(requested)g(windo)n(w)f(parameters,)h(and)g(defaults)g(to)g(the)h
(pre-3.1.4)d(b)r(eha)n(vior)0 1000 y(if)28 b(an)f(inconsistency)g(is)h
(found.)0 1156 y(With)35 b(m)n(ultifunction)h(cards,)f(this)f(call)g
(will)h(allo)r(cate)f(IO)g(p)r(orts)g(for)g(eac)n(h)f(card)h(function)h
(in)f(suc)n(h)g(a)g(w)n(a)n(y)g(that)g(all)g(a)0 1270
y(card's)25 b(p)r(orts)h(can)g(b)r(e)g(mapp)r(ed)h(b)n(y)f(the)g(t)n(w)
n(o)g(lo)n(w-lev)n(el)e(IO)i(p)r(ort)g(windo)n(ws)f(asso)r(ciated)g
(with)i(eac)n(h)e(ph)n(ysical)g(so)r(c)n(k)n(et.)36 b(F)-7
b(or)0 1383 y(example,)33 b(if)f(the)h(driv)n(ers)d(for)i(a)g(h)n(yp)r
(othetical)f(four-function)h(card)f(eac)n(h)h(attempt)g(to)g(allo)r
(cate)f(one)h(IO)g(windo)n(w)f(of)h(8)0 1497 y(p)r(orts,)27
b(Card)g(Services)f(will)i(consolidate)f(these)g(in)n(to)g(a)h(single)f
(con)n(tiguous)f(32-p)r(ort)g(blo)r(c)n(k.)0 1653 y(When)38
b(this)h(function)f(is)g(in)n(v)n(ok)n(ed)e(b)n(y)i(a)f(CardBus)g
(clien)n(t,)k(the)d(IO)g(request)f(structure)g(is)h(ignored.)67
b(Instead,)40 b(Card)0 1767 y(Services)d(examines)g(the)h(card)e(and)i
(allo)r(cates)e(an)n(y)h(necessary)f(system)i(resources:)54
b(this)38 b(includes)g(IO)f(and)h(memory)0 1880 y(space,)25
b(as)h(w)n(ell)f(as)g(an)h(in)n(terrupt,)g(if)g(needed.)36
b(One)26 b(call)f(will)h(reserv)n(e)e(all)h(resources)f(needed)i(for)f
(all)h(card)f(functions,)h(not)0 1994 y(just)i(the)g(function)g(of)g
(the)g(clien)n(t)f(making)g(the)h(call.)0 2150 y(This)50
b(call)g(do)r(es)g(not)g(actually)g(con\034gure)f(a)h(so)r(c)n(k)n
(et's)f(IO)h(windo)n(ws:)82 b(this)50 b(is)g(done)g(b)n(y)g(a)g
(subsequen)n(t)g(call)g(to)0 2264 y Fh(RequestConfigura)o(ti)o(on)p
Fk(.)0 2420 y(The)28 b(follo)n(wing)e(\035ags)h(can)g(b)r(e)h(sp)r
(eci\034ed)g(in)f Fh(Attributes1)c Fk(and)28 b Fh(Attributes2)p
Fk(:)0 2643 y Fh(IO_DATA_PATH_WID)o(TH)208 2790 y Fk(This)20
b(\034eld)h(ma)n(y)f(either)g(b)r(e)i Fh(IO_DATA_PATH_WI)o(DT)o(H_)o
(16)14 b Fk(for)21 b(16-bit)e(access,)i(or)f Fh(IO_DATA_PATH_WID)o(TH)o
(_8)14 b Fk(for)20 b(8-bit)208 2904 y(access,)26 b(or)h
Fh(IO_DATA_PATH_WI)o(DT)o(H_A)o(UT)o(O)22 b Fk(to)27
b(dynamically)g(size)g(the)h(bus)g(based)f(on)g(the)h(access)e(size.)0
3127 y(Return)i(co)r(des:)0 3350 y Fh(CS_BAD_HANDLE)208
3496 y Fk(The)f(clien)n(t)h(handle)f(is)h(in)n(v)-5 b(alid.)0
3676 y Fh(CS_NO_CARD)208 3823 y Fk(The)27 b(so)r(c)n(k)n(et)g(assigned)
f(to)h(this)h(clien)n(t)g(is)f(curren)n(tly)g(v)-5 b(acan)n(t.)0
4003 y Fh(CS_IN_USE)208 4150 y Fk(This)27 b(so)r(c)n(k)n(et's)f(IO)i
(windo)n(ws)e(ha)n(v)n(e)h(already)f(b)r(een)i(reserv)n(ed.)0
4330 y Fh(CS_CONFIGURATION)o(_L)o(OCK)o(ED)208 4477 y
Fk(This)f(so)r(c)n(k)n(et's)f(con\034guration)g(has)h(b)r(een)h(lo)r(c)
n(k)n(ed)f(b)n(y)g(a)g(call)g(to)h Fh(RequestConfigura)o(ti)o(on)o
Fk(.)0 4657 y Fh(CS_BAD_ATTRIBUTE)208 4803 y Fk(An)g(unsupp)r(orted)f
(attribute)h(\035ag)f(w)n(as)f(sp)r(eci\034ed.)0 4983
y Fh(CS_UNSUPPORTED_F)o(UN)o(CTI)o(ON)208 5130 y Fk(F)-7
b(or)26 b(a)i(CardBus)e(clien)n(t,)i(this)g(is)f(returned)g(if)h(Card)f
(Services)g(w)n(as)f(not)i(con\034gured)e(with)i(CardBus)e(supp)r(ort.)
p eop
%%Page: 15 15
15 14 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(15)0
162 y Ff(3.3.2)94 b(ReleaseIO)208 352 y Fd(int)39 b
(CardServices\(ReleaseIO,)45 b(client_handle_t)d(client,)f(io_req_t)g
(*req\);)0 586 y Fh(ReleaseIO)34 b Fk(un-reserv)n(es)i(IO)i(p)r(ort)g
(windo)n(ws)f(allo)r(cated)h(b)n(y)f(a)h(previous)f(call)h(to)g
Fh(RequestIO)p Fk(.)c(The)39 b Fh(req)e Fk(parameter)0
700 y(should)26 b(b)r(e)h(the)g(same)e(one)h(passed)g(to)g
Fh(RequestIO)p Fk(.)d(If)j(sev)n(eral)f(card)g(functions)i(are)e
(sharing)g(a)h(larger)e(IO)i(p)r(ort)h(windo)n(w,)0 813
y(p)r(orts)e(released)f(b)n(y)h(one)f(function)i(ma)n(y)f(not)g(b)r
(ecome)g(a)n(v)-5 b(ailable)24 b(for)h(other)f(uses)h(un)n(til)h(all)f
(card)f(functions)h(ha)n(v)n(e)f(released)0 927 y(their)k(IO)f(p)r
(orts.)0 1083 y(F)-7 b(or)27 b(a)g(CardBus)f(clien)n(t,)i(this)g(call)f
(releases)f(all)h(system)h(resources)d(allo)r(cated)i(for)g(this)h
(card.)0 1240 y(Return)g(co)r(des:)0 1459 y Fh(CS_BAD_HANDLE)208
1605 y Fk(The)f(clien)n(t)h(handle)f(is)h(in)n(v)-5 b(alid.)0
1783 y Fh(CS_CONFIGURATION)o(_L)o(OCK)o(ED)208 1928 y
Fk(This)33 b(so)r(c)n(k)n(et's)f(con\034guration)g(has)h(b)r(een)g(lo)r
(c)n(k)n(ed)g(b)n(y)g(a)g(call)g(to)g Fh(RequestConfigurat)o(io)o(n)p
Fk(.)48 b(The)34 b(con\034guration)208 2042 y(should)27
b(b)r(e)h(released)e(b)r(efore)h(calling)g(ReleaseIO.)0
2220 y Fh(CS_BAD_ARGS)208 2366 y Fk(The)g(parameters)f(in)i
Fh(req)e Fk(do)h(not)h(matc)n(h)f(the)h(parameters)e(passed)h(to)g
Fh(RequestIO)p Fk(.)0 2637 y Ff(3.3.3)94 b(RequestIR)m(Q)208
2827 y Fd(int)39 b(CardServices\(RequestIRQ,)45 b(client_handle_t)d
(client,)f(irq_req_t)g(*req\);)0 3062 y Fk(The)28 b Fh(irq_req_t)23
b Fk(structure)k(is)h(giv)n(en)f(b)n(y:)208 3271 y Fd(typedef)40
b(struct)h(irq_req_t)g({)521 3376 y(u_int)433 b(Attributes;)521
3480 y(u_int)g(AssignedIRQ;)521 3584 y(u_int)g(IRQInfo1,)41
b(IRQInfo2;)521 3688 y(void)472 b(*\(Handler\)\(int,)42
b(struct)f(pt_regs)g(*\);)521 3792 y(void)472 b(*Instance)208
3896 y(})39 b(irq_req_t;)0 4115 y Fh(RequestIRQ)25 b
Fk(reserv)n(es)j(an)h(in)n(terrupt)g(line)h(for)f(use)g(b)n(y)g(a)h
(card.)41 b(The)30 b Fh(IRQInfo1)c Fk(and)k Fh(IRQInfo2)c
Fk(\034elds)j(corresp)r(ond)f(to)0 4229 y(the)35 b(in)n(terrupt)g
(description)g(b)n(ytes)f(in)i(a)e Fh(CFTABLE_ENTRY)c
Fk(tuple.)60 b(If)36 b Fh(IRQ_INFO2_VALID)28 b Fk(is)35
b(set)h(in)f Fh(IRQInfo1)p Fk(,)f(then)0 4342 y Fh(IRQInfo2)24
b Fk(is)k(a)f(bit-mapp)r(ed)h(mask)f(of)g(allo)n(w)n(ed)g(in)n(terrupt)
g(v)-5 b(alues.)36 b(Eac)n(h)28 b(bit)g(corresp)r(onds)e(to)h(one)g(in)
n(terrupt)g(line:)38 b(bit)0 4456 y(0)33 b(=)g(irq)g(0,)i(bit)f(1)f(=)g
(irq)g(1,)i(etc.)54 b(So,)35 b(a)e(mask)g(of)g(0x1100)e(w)n(ould)i
(mean)g(that)h(in)n(terrupts)f(12)g(and)g(8)g(could)g(b)r(e)h(used.)0
4569 y(If)c Fh(IRQ_INFO2_VALID)23 b Fk(is)30 b(not)f(set,)h
Fh(IRQInfo1)d Fk(is)i(just)h(the)g(desired)f(in)n(terrupt)g(n)n(um)n(b)
r(er.)43 b(If)30 b(the)f(call)h(is)f(successful,)h(the)0
4683 y(reserv)n(ed)c(in)n(terrupt)h(is)g(returned)g(in)h
Fh(AssignedIRQ)p Fk(.)0 4839 y(If)37 b(the)g Fh(IRQ_HANDLER_PRES)o(EN)o
(T)31 b Fk(\035ag)36 b(is)g(set,)j(then)e(this)g(call)f(also)g(sp)r
(eci\034es)g(an)g(in)n(terrupt)h(handler)f(to)g(b)r(e)h(installed)0
4953 y(when)31 b(the)g(in)n(terrupt)f(is)g(enabled.)45
b(When)31 b Fh(RequestConfigurat)o(io)o(n)24 b Fk(is)31
b(called,)g(the)g(handler)e(giv)n(en)h(b)n(y)g Fh(Handler)e
Fk(will)0 5066 y(b)r(e)23 b(installed.)36 b(F)-7 b(or)22
b(2.0)g(and)h(later)g(k)n(ernels,)g(the)g(in)n(terrupt)g(handler)f
(will)i(b)r(e)f(installed)g(with)h(the)f(device)g(\020instance\021)29
b(giv)n(en)0 5180 y(in)c Fh(Instance)p Fk(.)32 b(F)-7
b(or)24 b(pre-2.1.60)f(k)n(ernels,)h(the)h(k)n(ernel)e
Fh(irq2dev_map)d Fk(table)25 b(will)g(also)e(b)r(e)i(up)r(dated.)37
b(With)25 b(m)n(ultifunction)0 5294 y(cards,)g(the)h(in)n(terrupt)f
(will)g(b)r(e)h(allo)r(cated)f(in)h(shared)e(mo)r(de,)i(and)f(the)h
(handler\(s\))g(ha)n(v)n(e)e(resp)r(onsibilit)n(y)g(for)h(determining)0
5407 y(whic)n(h)34 b(card)g(function\(s\))i(require)d(atten)n(tion)h
(when)h(an)f(in)n(terrupt)h(is)f(receiv)n(ed.)57 b(If)35
b(a)f(clien)n(t)h(instead)f(b)n(ypasses)f(Card)p eop
%%Page: 16 16
16 15 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(16)0
162 y(Services)30 b(to)i(install)f(its)h(o)n(wn)f(in)n(terrupt)g
(service)f(routine,)i(it)g(should)f(allo)r(cate)g(the)h(in)n(terrupt)f
(in)h(shared)e(mo)r(de)i(if)g(this)0 275 y(clien)n(t)c(could)f(b)r(e)h
(b)r(ound)g(to)f(a)g(m)n(ultifunction)i(card.)0 432 y(The)f(follo)n
(wing)e(\035ags)h(can)g(b)r(e)h(sp)r(eci\034ed)g(in)f
Fh(Attributes)p Fk(:)0 655 y Fh(IRQ_FORCED_PULSE)208
801 y Fk(Sp)r(eci\034es)g(that)h(the)g(in)n(terrupt)f(should)g(b)r(e)h
(con\034gured)e(for)h(pulsed)h(mo)r(de,)f(rather)g(than)g(the)h
(default)g(lev)n(el)f(mo)r(de.)0 981 y Fh(IRQ_TYPE_TIME)208
1128 y Fk(Sp)r(eci\034es)36 b(that)h(this)f(in)n(terrupt)g(can)g(b)r(e)
h(time-shared)e(with)i(other)e(Card)h(Services)f(driv)n(ers.)62
b(Only)36 b(one)f(driv)n(er)208 1242 y(should)27 b(enable)g(the)h(in)n
(terrupt)f(at)h(an)n(y)e(time.)0 1422 y Fh(IRQ_FIRST_SHARED)208
1569 y Fk(In)c(conjunction)f(with)i Fh(IRQ_TYPE_TIME)p
Fk(,)16 b(this)23 b(should)e(b)r(e)h(set)g(b)n(y)g(the)g(\034rst)g
(driv)n(er)e(requesting)h(a)h(shared)e(in)n(terrupt.)0
1749 y Fh(IRQ_HANDLER_PRES)o(EN)o(T)208 1895 y Fk(Indicates)27
b(that)h(the)g Fh(Handler)c Fk(\034eld)k(p)r(oin)n(ts)g(to)f(an)g(in)n
(terrupt)h(service)e(routine)h(that)h(should)f(b)r(e)h(installed.)0
2118 y(Return)g(co)r(des:)0 2341 y Fh(CS_BAD_HANDLE)208
2488 y Fk(The)f(clien)n(t)h(handle)f(is)h(in)n(v)-5 b(alid.)0
2668 y Fh(CS_NO_CARD)208 2815 y Fk(The)27 b(so)r(c)n(k)n(et)g(assigned)
f(to)h(this)h(clien)n(t)g(is)f(curren)n(tly)g(v)-5 b(acan)n(t.)0
2995 y Fh(CS_IN_USE)208 3141 y Fk(An)28 b(in)n(terrupt)f(has)g(already)
f(b)r(een)i(reserv)n(ed)e(for)h(this)g(so)r(c)n(k)n(et,)g(or)g(the)h
(requested)e(in)n(terrupt)i(is)f(una)n(v)-5 b(ailable.)0
3321 y Fh(CS_CONFIGURATION)o(_L)o(OCK)o(ED)208 3468 y
Fk(This)27 b(card)g(function's)h(con\034guration)d(has)j(b)r(een)f(lo)r
(c)n(k)n(ed)g(b)n(y)g(a)h(call)f(to)g Fh(RequestConfigura)o(tio)o(n)p
Fk(.)0 3648 y Fh(CS_BAD_ATTRIBUTE)208 3795 y Fk(An)h(unsupp)r(orted)f
(attribute)h(\035ag)f(w)n(as)f(sp)r(eci\034ed.)0 4068
y Ff(3.3.4)94 b(ReleaseIR)m(Q)208 4258 y Fd(int)39 b
(CardServices\(ReleaseIRQ,)45 b(client_handle_t)d(client,)f(irq_req_t)g
(*req\);)0 4498 y Fh(ReleaseIRQ)28 b Fk(un-reserv)n(es)i(an)i(in)n
(terrupt)f(assigned)g(b)n(y)h(an)g(earlier)f(call)h(to)g
Fh(RequestIRQ)p Fk(.)c(The)k Fh(req)f Fk(structure)g(should)0
4612 y(b)r(e)d(the)h(same)e(structure)h(that)g(w)n(as)f(passed)g(to)h
Fh(RequestIRQ)p Fk(.)c(If)29 b(a)e(handler)h(w)n(as)f(sp)r(eci\034ed)h
(in)g(the)h Fh(RequestIRQ)24 b Fk(call,)k(it)0 4725 y(will)g(b)r(e)g
(unregistered)e(at)h(this)h(time.)0 4882 y(Return)g(co)r(des:)0
5104 y Fh(CS_BAD_HANDLE)208 5251 y Fk(The)f(clien)n(t)h(handle)f(is)h
(in)n(v)-5 b(alid.)p eop
%%Page: 17 17
17 16 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(17)0
162 y Fh(CS_CONFIGURATION)o(_L)o(OCK)o(ED)208 308 y Fk(This)33
b(so)r(c)n(k)n(et's)f(con\034guration)g(has)h(b)r(een)g(lo)r(c)n(k)n
(ed)g(b)n(y)g(a)g(call)g(to)g Fh(RequestConfigurat)o(io)o(n)p
Fk(.)48 b(The)34 b(con\034guration)208 422 y(should)27
b(b)r(e)h(released)e(b)r(efore)h(calling)g(ReleaseIR)n(Q.)0
602 y Fh(CS_BAD_IRQ)208 749 y Fk(The)g(parameters)f(in)i
Fh(req)e Fk(do)h(not)h(matc)n(h)f(the)h(parameters)e(passed)h(to)g
Fh(RequestIRQ)p Fk(.)0 1021 y Ff(3.3.5)94 b(RequestCon\034guration)208
1212 y Fd(int)39 b(CardServices\(RequestConfigur)q(ation)q(,)45
b(client_handle_t)e(client,)d(config_req_t)i(*req\);)0
1452 y Fk(The)28 b Fh(config_req_t)22 b Fk(structure)27
b(is)h(giv)n(en)e(b)n(y:)208 1665 y Fd(typedef)40 b(struct)h
(config_req_t)h({)521 1769 y(u_int)433 b(Attributes;)521
1873 y(u_int)g(Vcc,)40 b(Vpp1,)g(Vpp2;)521 1978 y(u_int)433
b(IntType;)521 2082 y(u_int)g(ConfigBase;)521 2186 y(u_char)394
b(Status,)41 b(Pin,)f(Copy,)g(ExtStatus;)521 2290 y(u_char)394
b(ConfigIndex;)521 2394 y(u_int)433 b(Present;)208 2498
y(})39 b(config_req_t;)0 2721 y Fh(RequestConfigura)o(ti)o(on)34
b Fk(is)41 b(resp)r(onsible)f(for)g(actually)g(con\034guring)g(a)g(so)r
(c)n(k)n(et.)76 b(This)40 b(includes)h(setting)g(v)n(oltages,)0
2835 y(setting)28 b(CIS)f(con\034guration)f(registers,)g(setting)h(up)h
(IO)g(p)r(ort)f(windo)n(ws,)g(and)g(setting)h(up)g(in)n(terrupts.)0
2991 y Fh(IntType)d Fk(sp)r(eci\034es)i(the)h(t)n(yp)r(e)g(of)f(in)n
(terface)g(to)g(use)h(for)f(this)h(card.)35 b(It)28 b(ma)n(y)f(b)r(e)h
Fh(INT_MEMORY)p Fk(,)c Fh(INT_MEMORY_AND_)o(IO)o Fk(,)e(or)0
3105 y Fh(INT_CARDBUS)p Fk(.)h(V)-7 b(oltages)27 b(are)f(sp)r
(eci\034ed)i(in)g(units)g(of)f(1/10)f(v)n(olt.)36 b(Curren)n(tly)-7
b(,)27 b Fh(Vpp1)f Fk(m)n(ust)i(equal)f Fh(Vpp2)p Fk(.)0
3261 y(With)38 b(m)n(ultifunction)g(cards,)g(eac)n(h)e(card)g(function)
i(is)f(con\034gured)e(separately)-7 b(.)64 b(Eac)n(h)37
b(function)g(has)g(its)g(o)n(wn)f(set)h(of)0 3375 y(CIS)32
b(con\034guration)e(registers.)48 b(Ho)n(w)n(ev)n(er,)31
b(all)g(functions)h(m)n(ust)g(b)r(e)g(con\034gured)f(with)h(the)g(same)
g(p)r(o)n(w)n(er)e(and)i(in)n(terface)0 3488 y(settings.)0
3645 y(When)k(in)n(v)n(ok)n(ed)f(b)n(y)g(a)g(CardBus)g(clien)n(t,)j
(most)d(of)h(the)g(request)f(structure)h(is)f(ignored,)i(and)f(all)f
(card)g(functions)h(will)0 3758 y(b)r(e)29 b(con\034gured)e(based)g(on)
h(data)g(collected)g(in)g(a)g(previous)f Fh(RequestIO)d
Fk(call.)39 b(This)28 b(includes)g(con\034guring)f(the)h(CardBus)0
3872 y(bridge,)21 b(as)e(w)n(ell)g(as)h(initializing)f(the)h(Command,)h
(Base)e(A)n(ddress,)i(and)f(In)n(terrupt)f(Line)h(registers)e(in)i(eac)
n(h)f(card)g(function's)0 3985 y(con\034guration)26 b(space.)36
b Fh(IntType)25 b Fk(m)n(ust)i(b)r(e)h(set)g(to)f Fh(INT_CARDBUS)c
Fk(in)28 b(this)g(case.)0 4142 y(The)36 b(follo)n(wing)f(\035ags)g(can)
g(b)r(e)h(sp)r(eci\034ed)g(in)g Fh(Attributes)p Fk(.)58
b(DMA)37 b(and)e(sp)r(eak)n(er)g(con)n(trol)f(are)h(not)h(supp)r(orted)
g(on)f(all)0 4256 y(systems.)0 4478 y Fh(CONF_ENABLE_IRQ)208
4625 y Fk(Enable)27 b(the)h(IO)g(in)n(terrupt)f(reserv)n(ed)e(b)n(y)j
(a)f(previous)f(call)h(to)h Fh(RequestIRQ)p Fk(.)0 4805
y Fh(CONF_ENABLE_DMA)208 4952 y Fk(Enable)f(DMA)i(accesses)d(for)h
(this)h(so)r(c)n(k)n(et.)0 5132 y Fh(CONF_ENABLE_SPKR)208
5279 y Fk(Enable)f(sp)r(eak)n(er)f(output)j(from)e(this)h(so)r(c)n(k)n
(et.)p eop
%%Page: 18 18
18 17 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(18)0
162 y(The)30 b Fh(Present)d Fk(parameter)i(is)g(a)h(bit)g(map)g(sp)r
(ecifying)g(whic)n(h)g(CIS)g(con\034guration)e(registers)h(are)g
(implemen)n(ted)h(b)n(y)g(this)0 275 y(card.)35 b Fh(ConfigBase)21
b Fk(giv)n(es)j(the)i(o\033set)f(of)g(the)g(con\034guration)f
(registers)f(in)i(attribute)g(memory)-7 b(.)36 b(The)25
b(follo)n(wing)f(registers)0 389 y(can)j(b)r(e)h(sp)r(eci\034ed:)0
612 y Fh(PRESENT_OPTION)208 759 y Fk(Sp)r(eci\034es)k(that)h(the)g
(Con\034guration)e(Option)i(Register)f(is)g(presen)n(t.)52
b(The)32 b(COR)h(register)e(will)i(b)r(e)g(set)f(using)h(the)208
872 y Fh(ConfigIndex)23 b Fk(parameter.)0 1052 y Fh(PRESENT_STATUS)208
1199 y Fk(Sp)r(eci\034es)34 b(that)g(the)g(Card)f(Con\034guration)g
(and)g(Status)h(Register)f(is)h(presen)n(t.)55 b(The)34
b(CCSR)g(will)h(b)r(e)f(initialized)208 1312 y(with)28
b(the)g Fh(Status)d Fk(parameter.)0 1492 y Fh(PRESENT_PIN_REPL)o(AC)o
(E)208 1639 y Fk(Sp)r(eci\034es)37 b(that)h(the)g(Pin)g(Replacemen)n(t)
f(Register)g(is)g(presen)n(t.)66 b(The)37 b(PRR)h(will)g(b)r(e)g
(initialized)g(with)f(the)h Fh(Pin)208 1753 y Fk(parameter.)0
1933 y Fh(PRESENT_COPY)208 2080 y Fk(Sp)r(eci\034es)d(that)h(the)g(So)r
(c)n(k)n(et)e(and)h(Cop)n(y)g(Register)f(is)i(presen)n(t.)59
b(The)36 b(SCR)f(will)h(b)r(e)g(initialized)f(with)h(the)g
Fh(Copy)208 2193 y Fk(parameter.)0 2373 y Fh(PRESENT_EXT_STAT)o(US)208
2520 y Fk(Sp)r(eci\034es)23 b(that)g(the)h(Extended)g(Status)f
(Register)f(is)h(presen)n(t.)35 b(The)23 b(ESR)h(will)f(b)r(e)g
(initialized)h(with)f(the)h Fh(ExtStatus)208 2633 y Fk(parameter.)0
2856 y(Return)k(co)r(des:)0 3079 y Fh(CS_BAD_HANDLE)208
3226 y Fk(The)f(clien)n(t)h(handle)f(is)h(in)n(v)-5 b(alid.)0
3406 y Fh(CS_NO_CARD)208 3553 y Fk(The)27 b(so)r(c)n(k)n(et)g(assigned)
f(to)h(this)h(clien)n(t)g(is)f(curren)n(tly)g(v)-5 b(acan)n(t.)0
3733 y Fh(CS_OUT_OF_RESOUR)o(CE)208 3880 y Fk(Card)26
b(Services)h(w)n(as)f(unable)i(to)f(allo)r(cate)g(a)g(memory)g(windo)n
(w)g(to)g(access)g(the)h(card's)e(con\034guration)g(registers.)0
4060 y Fh(CS_CONFIGURATION)o(_L)o(OCK)o(ED)208 4206 y
Fk(This)h(card's)g(con\034guration)e(has)i(already)f(b)r(een)i(lo)r(c)n
(k)n(ed)f(b)n(y)g(another)g(call)g(to)h Fh(RequestConfigur)o(at)o(io)o
(n)p Fk(.)0 4386 y Fh(CS_BAD_VCC)208 4533 y Fk(The)f(requested)g(V)-7
b(cc)28 b(v)n(oltage)e(is)h(not)h(supp)r(orted.)0 4713
y Fh(CS_BAD_VPP)208 4860 y Fk(The)f(requested)g(V)-7
b(pp1/V)g(pp2)27 b(v)n(oltage)f(is)i(not)f(supp)r(orted.)0
5040 y Fh(CS_UNSUPPORTED_M)o(OD)o(E)208 5187 y Fk(A)40
b(non-CardBus)e(clien)n(t)i(attempted)h(to)f(con\034gure)e(a)i(CardBus)
f(card,)j(or)d(a)h(CardBus)f(clien)n(t)h(attempted)g(to)208
5300 y(con\034gure)26 b(a)h(non-CardBus)f(card.)p eop
%%Page: 19 19
19 18 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(19)0
162 y Ff(3.3.6)94 b(Mo)s(difyCon\034guration)208 351
y Fd(int)39 b(CardServices\(ModifyConfigura)q(tion,)46
b(client_handle_t)c(client,)f(modconf_t)g(*mod\);)0 584
y Fk(The)28 b Fh(modconf_t)23 b Fk(structure)k(is)h(giv)n(en)f(b)n(y:)
208 792 y Fd(typedef)40 b(struct)h(modconf_t)g({)521
896 y(u_int)433 b(Attributes;)521 1000 y(u_int)g(Vcc,)40
b(Vpp1,)g(Vpp2;)208 1104 y(})f(modconf_t;)0 1322 y Fh(ModifyConfigurat)
o(io)o(n)49 b Fk(mo)r(di\034es)54 b(some)g(attributes)h(of)f(a)h(so)r
(c)n(k)n(et)e(that)i(has)f(b)r(een)h(con\034gured)e(b)n(y)i(a)f(call)g
(to)0 1435 y Fh(RequestConfigura)o(ti)o(on)p Fk(.)0 1592
y(The)28 b(follo)n(wing)e(\035ags)h(can)g(b)r(e)h(sp)r(eci\034ed)g(in)f
Fh(Attributes)p Fk(:)0 1809 y Fh(CONF_IRQ_CHANGE_)o(VA)o(LID)208
1955 y Fk(Indicates)g(that)h(the)g(CONF_ENABLE_IR)n(Q)f(setting)g
(should)h(b)r(e)g(up)r(dated.)0 2132 y Fh(CONF_ENABLE_IRQ)208
2277 y Fk(Sp)r(eci\034es)f(that)h(IO)f(in)n(terrupts)g(should)h(b)r(e)g
(enabled)f(for)g(this)h(so)r(c)n(k)n(et.)0 2455 y Fh(CONF_VCC_CHANGE_)o
(VA)o(LID)208 2600 y Fk(Indicates)f(that)h(V)-7 b(cc)27
b(should)h(b)r(e)g(up)r(dated.)0 2777 y Fh(CONF_VPP1_CHANGE)o(_V)o(ALI)
o(D)208 2923 y Fk(Indicates)f(that)h(V)-7 b(pp1)27 b(should)h(b)r(e)g
(up)r(dated.)0 3100 y Fh(CONF_VPP2_CHANGE)o(_V)o(ALI)o(D)208
3245 y Fk(Indicates)f(that)h(V)-7 b(pp2)27 b(should)h(b)r(e)g(up)r
(dated.)0 3463 y(Curren)n(tly)-7 b(,)26 b(V)-7 b(pp1)27
b(and)g(V)-7 b(pp2)27 b(m)n(ust)f(alw)n(a)n(ys)f(ha)n(v)n(e)h(the)h
(same)f(v)-5 b(alue.)37 b(So,)26 b(the)h(t)n(w)n(o)f(v)-5
b(alues)27 b(m)n(ust)g(alw)n(a)n(ys)d(b)r(e)k(c)n(hanged)d(at)0
3576 y(the)j(same)f(time.)0 3733 y(Return)h(co)r(des:)0
3950 y Fh(CS_BAD_HANDLE)208 4096 y Fk(The)f(clien)n(t)h(handle)f(is)h
(in)n(v)-5 b(alid.)0 4273 y Fh(CS_NO_CARD)208 4418 y
Fk(The)27 b(so)r(c)n(k)n(et)g(assigned)f(to)h(this)h(clien)n(t)g(is)f
(curren)n(tly)g(v)-5 b(acan)n(t.)0 4596 y Fh(CS_CONFIGURATION)o(_L)o
(OCK)o(ED)208 4741 y Fk(This)27 b(actually)g(means)g(that)h(this)g(so)r
(c)n(k)n(et)e(has)h Ff(not)h Fk(b)r(een)g(lo)r(c)n(k)n(ed.)0
4918 y Fh(CS_BAD_VCC)208 5064 y Fk(The)f(requested)g(V)-7
b(cc)28 b(v)n(oltage)e(is)h(not)h(supp)r(orted.)0 5241
y Fh(CS_BAD_VPP)208 5386 y Fk(The)f(requested)g(V)-7
b(pp1/V)g(pp2)27 b(v)n(oltage)f(is)i(not)f(supp)r(orted.)p
eop
%%Page: 20 20
20 19 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(20)0
162 y Ff(3.3.7)94 b(ReleaseCon\034guration)208 353 y
Fd(int)39 b(CardServices\(ReleaseConfigur)q(ation)q(,)45
b(client_handle_t)e(client,)d(config_req_t)i(*req\);)0
592 y Fh(ReleaseConfigura)o(ti)o(on)22 b Fk(un-con\034gures)27
b(a)i(so)r(c)n(k)n(et)e(previously)g(set)i(up)g(b)n(y)f(a)h(call)f(to)g
Fh(RequestConfigurat)o(io)o(n)p Fk(.)34 b(The)0 706 y
Fh(req)26 b Fk(parameter)g(should)i(b)r(e)g(the)g(same)f(one)g(used)g
(to)h(con\034gure)e(the)i(so)r(c)n(k)n(et.)0 862 y(Return)g(co)r(des:)0
1085 y Fh(CS_BAD_HANDLE)208 1232 y Fk(The)f(windo)n(w)g(handle)h(is)f
(in)n(v)-5 b(alid,)28 b(or)e(the)i(so)r(c)n(k)n(et)f(is)g(not)h
(con\034gured.)0 1504 y Ff(3.3.8)94 b(GetCon\034gurationInfo)208
1695 y Fd(int)39 b(CardServices\(GetConfiguratio)q(nInfo)q(,)45
b(client_handle_t)e(client,)d(config_info_t)i(*config\);)0
1935 y Fk(The)28 b Fh(config_info_t)22 b Fk(structure)27
b(is)g(giv)n(en)g(b)n(y:)208 2148 y Fd(typedef)40 b(struct)h
(config_info_t)h({)521 2252 y(u_char)394 b(Function;)521
2356 y(u_int)433 b(Attributes;)521 2461 y(u_int)g(Vcc,)40
b(Vpp1,)g(Vpp2;)521 2565 y(u_int)433 b(IntType;)521 2669
y(u_int)g(ConfigBase;)521 2773 y(u_char)394 b(Status,)41
b(Pin,)f(Copy,)g(Option,)h(ExtStatus;)521 2877 y(u_int)433
b(Present;)521 2981 y(u_int)g(AssignedIRQ;)521 3085 y(u_int)g
(IRQAttributes;)521 3189 y(ioaddr_t)316 b(BasePort1;)521
3293 y(ioaddr_t)g(NumPorts1;)521 3398 y(u_int)433 b(Attributes1;)521
3502 y(ioaddr_t)316 b(BasePort2;)521 3606 y(ioaddr_t)g(NumPorts2;)521
3710 y(u_int)433 b(Attributes2;)521 3814 y(u_int)g(IOAddrLines;)208
3918 y(})39 b(config_info_t;)0 4141 y Fh(GetConfiguration)o(In)o(fo)15
b Fk(returns)21 b(the)g(curren)n(t)g(so)r(c)n(k)n(et)f(con\034guration)
g(as)g(it)i(w)n(as)e(set)i(up)f(b)n(y)g Fh(RequestIO)p
Fk(,)d Fh(RequestIRQ)p Fk(,)0 4255 y(and)48 b Fh(RequestConfigur)o(at)o
(io)o(n)p Fk(.)91 b(Most)48 b(\034elds)f(will)h(only)f(b)r(e)i
(\034lled)f(in)g(if)g(the)g(so)r(c)n(k)n(et)e(is)i(fully)g
(con\034gured;)57 b(the)0 4368 y Fh(CONF_VALID_CLIEN)o(T)35
b Fk(\035ag)k(in)i Fh(Attributes)c Fk(indicates)j(this)h(fact.)76
b(F)-7 b(or)40 b(normal)g(clien)n(ts)g(b)r(ound)h(to)g(a)f(single)g
(card)0 4482 y(function,)30 b(the)g Fh(Function)c Fk(\034eld)j(is)g
(ignored,)g(and)g(data)f(for)h(that)h(clien)n(t's)f(assigned)f
(function)h(is)g(returned.)42 b(F)-7 b(or)28 b(clien)n(ts)0
4595 y(b)r(ound)g(to)f Fh(BIND_FN_ALL)p Fk(,)c(this)28
b(\034eld)g(sp)r(eci\034es)g(whic)n(h)f(function's)h(con\034guration)e
(data)h(should)g(b)r(e)h(returned.)0 4752 y(F)-7 b(or)27
b(CardBus)f(cards,)g(the)i Fh(ConfigBase)23 b Fk(\034eld)28
b(is)f(set)g(to)h(the)f(card's)g(PCI)h(v)n(endor/device)d(ID,)j(and)f
(the)h Fh(Option)d Fk(\034eld)i(is)0 4865 y(set)h(to)f(the)h(CardBus)e
(PCI)i(bus)g(n)n(um)n(b)r(er.)0 5022 y(Return)g(co)r(des:)0
5245 y Fh(CS_BAD_HANDLE)208 5391 y Fk(The)f(windo)n(w)g(handle)h(is)f
(in)n(v)-5 b(alid,)28 b(or)e(the)i(so)r(c)n(k)n(et)f(is)g(not)h
(con\034gured.)p eop
%%Page: 21 21
21 20 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(21)0
162 y Fh(CS_NO_CARD)208 306 y Fk(The)27 b(so)r(c)n(k)n(et)g(assigned)f
(to)h(this)h(clien)n(t)g(is)f(curren)n(tly)g(v)-5 b(acan)n(t.)0
480 y Fh(CS_CONFIGURATION)o(_L)o(OCK)o(ED)208 624 y Fk(This)27
b(actually)g(means)g(that)h(the)g(con\034guration)e(has)h
Ff(not)g Fk(b)r(een)h(lo)r(c)n(k)n(ed.)0 913 y Fe(3.4)112
b(Card)38 b(Information)e(Structure)h(\(CIS\))f(calls)0
1123 y Fk(The)26 b(de\034nition)g(of)f(the)h(Card)f(Information)g
(Structure)h(\(CIS\))g(is)g(the)g(dark)n(est)e(c)n(hapter)h(of)g(the)h
(PC)h(Card)d(standard.)36 b(All)0 1237 y(v)n(ersion)23
b(2)h(complian)n(t)g(cards)f(should)h(ha)n(v)n(e)g(a)g(CIS,)h(whic)n(h)
f(describ)r(es)g(the)h(card)e(and)i(ho)n(w)e(it)i(should)g(b)r(e)f
(con\034gured.)35 b(The)0 1351 y(CIS)27 b(is)g(a)f(link)n(ed)h(list)g
(of)f(\020tuples\021)34 b(in)27 b(the)g(card's)f(attribute)h(memory)e
(space.)36 b(Eac)n(h)27 b(tuple)g(consists)f(of)h(an)f(iden)n
(ti\034cation)0 1464 y(co)r(de,)f(a)f(length)h(b)n(yte,)g(and)g(a)f
(series)f(of)i(data)f(b)n(ytes.)36 b(The)24 b(la)n(y)n(out)g(of)g(the)h
(data)f(b)n(ytes)h(for)f(some)g(tuple)h(t)n(yp)r(es)g(is)f(absurdly)0
1578 y(complicated,)j(in)h(an)f(apparen)n(t)g(e\033ort)g(to)g(use)h(ev)
n(ery)e(last)h(bit.)0 1734 y(The)g Fh(ValidateCIS)22
b Fk(call)27 b(c)n(hec)n(ks)e(to)i(see)g(if)g(a)f(card)g(has)h(a)f
(reasonable)f(CIS.)i(The)g Fh(GetFirstTuple)21 b Fk(and)27
b Fh(GetNextTuple)0 1848 y Fk(calls)41 b(are)f(used)i(to)f(step)h
(through)f(CIS)g(tuple)h(lists.)79 b Fh(GetTupleData)36
b Fk(extracts)41 b(data)g(b)n(ytes)g(from)g(a)g(tuple.)80
b(And)0 1961 y Fh(ParseTuple)33 b Fk(unpac)n(ks)j(most)g(tuple)i(t)n
(yp)r(es)e(in)n(to)h(more)f(easily)g(used)h(forms.)64
b(Finally)-7 b(,)39 b(the)e Fh(ReplaceCIS)c Fk(call)k(allo)n(ws)0
2075 y(a)27 b(clien)n(t)h(to)f(pro)n(vide)g(Card)f(Services)h(with)h(a)
f(substitute)h(for)f(the)h(CIS)g(found)g(on)f(the)h(card.)0
2345 y Ff(3.4.1)94 b(GetFirstT)-8 b(uple,)30 b(GetNextT)-8
b(uple)208 2533 y Fd(#include)41 b("cistpl.h")208 2741
y(int)e(CardServices\(GetFirstTuple,)46 b(client_handle_t)c(client,)f
(tuple_t)g(*tuple\);)208 2846 y(int)e(CardServices\(GetNextTuple,)45
b(client_handle_t)e(client,)e(tuple_t)f(*tuple\);)0 3071
y Fk(The)28 b Fh(tuple_t)c Fk(data)j(structure)g(is)h(giv)n(en)f(b)n
(y:)208 3273 y Fd(typedef)40 b(struct)h(tuple_t)g({)521
3378 y(u_int)433 b(Attributes;)521 3482 y(cis_data_t)238
b(DesiredTuple;)521 3586 y(u_int)433 b(Flags;)521 3690
y(cisdata_t)277 b(TupleCode;)521 3794 y(u_int)433 b(TupleLink;)521
3898 y(cisdata_t)277 b(TupleOffset;)521 4002 y(cisdata_t)g
(TupleDataMax;)521 4106 y(cisdata_t)g(TupleDataLen;)521
4210 y(cisdata_t)g(*TupleData;)208 4315 y(})39 b(tuple_t;)0
4526 y Fh(GetFirstTuple)29 b Fk(searc)n(hes)k(a)i(card's)f(CIS)h(for)f
(the)h(\034rst)g(tuple)g(co)r(de)g(matc)n(hing)f Fh(DesiredTuple)p
Fk(.)54 b(The)35 b(sp)r(ecial)f(co)r(de)0 4640 y Fh(RETURN_FIRST_TUP)o
(LE)24 b Fk(will)32 b(matc)n(h)e(the)h(\034rst)g(tuple)h(of)e(an)n(y)h
(kind.)47 b(If)31 b(successful,)g Fh(TupleCode)d Fk(is)i(set)h(to)g
(the)g(co)r(de)g(of)0 4754 y(the)d(\034rst)f(matc)n(hing)g(tuple)h
(found,)g(and)g Fh(TupleLink)c Fk(is)j(the)h(address)e(of)i(this)g
(tuple)g(in)g(attribute)f(memory)-7 b(.)0 4910 y Fh(GetNextTuple)23
b Fk(is)28 b(lik)n(e)f Fh(GetFirstTuple)p Fk(,)22 b(except)28
b(that)g(giv)n(en)f(a)h Fh(tuple_t)d Fk(structure)i(returned)g(b)n(y)h
(a)f(previous)g(call)g(to)0 5024 y Fh(GetFirstTuple)22
b Fk(or)27 b Fh(GetNextTuple)p Fk(,)22 b(it)28 b(will)g(return)f(the)h
(next)g(tuple)g(matc)n(hing)f Fh(DesiredTuple)p Fk(.)0
5180 y(These)e(functions)g(will)g(automatically)f(tra)n(v)n(erse)f(an)n
(y)h(link)h(tuples)h(found)f(in)g(the)h(CIS.)f(F)-7 b(or)24
b(m)n(ultifunction)i(cards)e(ha)n(ving)0 5294 y(a)36
b Fh(CISTPL_LONGLINK_)o(MFC)30 b Fk(tuple,)39 b(these)e(functions)g
(will)f(automatically)g(follo)n(w)g(just)h(the)g(CIS)f(c)n(hain)g(sp)r
(eci\034c)h(to)f(a)0 5407 y(clien)n(t)28 b(driv)n(er's)e(assigned)g
(function.)37 b(If)28 b(a)g(clien)n(t)f(w)n(as)g(b)r(ound)h(to)f
Fh(BIND_FN_ALL)p Fk(,)c(then)28 b(all)f(tuples)h(will)g(b)r(e)g
(returned.)p eop
%%Page: 22 22
22 21 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(22)0
162 y(The)28 b(follo)n(wing)e(\035ags)h(can)g(b)r(e)h(sp)r(eci\034ed)g
(in)f Fh(Attributes)p Fk(:)0 401 y Fh(TUPLE_RETURN_LIN)o(K)208
548 y Fk(Indicates)74 b(that)h(link)h(tuples)f(\()p Fh
(CISTPL_LONGLINK_)o(A)p Fk(,)69 b Fh(CISTPL_LONGLINK_)o(C)p
Fk(,)g Fh(CISTPL_LONGLINK_)o(MF)o(C)p Fk(,)208 662 y
Fh(CISTPL_NOLINK)p Fk(,)13 b Fh(CISTPL_LINKTARGET)o Fk(\))h(should)k(b)
r(e)i(returned.)34 b(Normally)18 b(these)h(tuples)g(are)f(pro)r(cessed)
g(silen)n(tly)-7 b(.)0 842 y Fh(TUPLE_RETURN_COM)o(MO)o(N)208
988 y Fk(Indicates)29 b(that)g(tuples)h(in)f(the)h(\020common\021)35
b(CIS)29 b(section)g(of)g(a)g(m)n(ultifunction)i(CIS)e(should)g(b)r(e)h
(returned.)41 b(In)30 b(the)208 1102 y(absence)f(of)g(this)h(\035ag,)g
(normally)-7 b(,)29 b(Card)g(Services)g(will)h(only)g(return)f(tuples)h
(sp)r(eci\034c)g(to)g(the)g(function)g(b)r(ound)g(to)208
1215 y(the)e(clien)n(t.)0 1455 y(Return)g(co)r(des:)0
1678 y Fh(CS_BAD_HANDLE)208 1825 y Fk(The)f(clien)n(t)h(handle)f(is)h
(in)n(v)-5 b(alid.)0 2005 y Fh(CS_OUT_OF_RESOUR)o(CE)208
2151 y Fk(Card)26 b(Services)h(w)n(as)f(unable)i(to)f(set)h(up)g(a)f
(memory)g(windo)n(w)g(to)g(map)h(the)g(card's)e(CIS.)0
2331 y Fh(CS_NO_MORE_ITEMS)208 2478 y Fk(There)h(w)n(ere)f(no)h(tuples)
h(matc)n(hing)f Fh(DesiredTuple)p Fk(.)0 2751 y Ff(3.4.2)94
b(GetT)-8 b(upleData)208 2942 y Fd(#include)41 b("cistpl.h")208
3150 y(int)e(CardServices\(GetTupleData,)45 b(client_handle_t)e
(client,)e(tuple_t)f(*tuple\);)0 3389 y Fh(GetTupleData)23
b Fk(extracts)k(a)h(series)e(of)i(data)g(b)n(ytes)f(from)h(the)g(sp)r
(eci\034ed)h(tuple,)f(whic)n(h)g(m)n(ust)g(ha)n(v)n(e)f(b)r(een)h
(returned)g(b)n(y)f(a)0 3503 y(previous)h(call)h(to)g
Fh(GetFirstTuple)24 b Fk(or)29 b Fh(GetNextTuple)p Fk(.)37
b(A)30 b(maxim)n(um)f(of)h Fh(TupleDataMax)24 b Fk(b)n(ytes)29
b(will)h(b)r(e)f(copied)g(in)n(to)0 3617 y(the)h Fh(TupleData)d
Fk(bu\033er,)j(starting)f(at)h(an)g(o\033set)g(of)g Fh(TupleOffset)25
b Fk(b)n(ytes.)44 b(The)30 b(n)n(um)n(b)r(er)g(of)f(b)n(ytes)h(copied)g
(is)g(returned)0 3730 y(in)e Fh(TupleDataLen)p Fk(.)0
3887 y(Return)g(co)r(des:)0 4109 y Fh(CS_BAD_HANDLE)208
4256 y Fk(The)f(clien)n(t)h(handle)f(is)h(in)n(v)-5 b(alid.)0
4436 y Fh(CS_OUT_OF_RESOUR)o(CE)208 4583 y Fk(Card)26
b(Services)h(w)n(as)f(unable)i(to)f(set)h(up)g(a)f(memory)g(windo)n(w)g
(to)g(map)h(the)g(card's)e(CIS.)0 4763 y Fh(CS_NO_MORE_ITEMS)208
4910 y Fk(The)f(tuple)g(do)r(es)g(not)g(con)n(tain)g(an)n(y)f(more)h
(data.)35 b Fh(TuppleOffset)20 b Fk(is)25 b(greater)f(than)h(or)f
(equal)h(to)g(the)g(length)h(of)f(the)208 5023 y(tuple.)p
eop
%%Page: 23 23
23 22 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(23)0
162 y Ff(3.4.3)94 b(P)m(arseT)-8 b(uple)208 353 y Fd(#include)41
b("cistpl.h")208 561 y(int)e(CardServices\(ParseTuple,)45
b(client_handle_t)d(client,)f(tuple_t)g(*tuple,)g(cisparse_t)g
(*parse\);)0 800 y Fk(The)28 b Fh(cisparse_t)23 b Fk(data)k(structure)g
(is)h(giv)n(en)e(b)n(y:)208 1014 y Fd(typedef)40 b(union)h(cisparse_t)g
({)521 1118 y(cistpl_device_t)357 b(device;)521 1222
y(cistpl_checksum_t)279 b(checksum;)521 1326 y(cistpl_longlink_t)g
(longlink;)521 1430 y(cistpl_longlink_mfc_t)123 b(longlink_mfc;)521
1534 y(cistpl_vers_1_t)357 b(version_1;)521 1638 y(cistpl_altstr_t)g
(altstr;)521 1743 y(cistpl_jedec_t)396 b(jedec;)521 1847
y(cistpl_manfid_t)357 b(manfid;)521 1951 y(cistpl_funcid_t)g(funcid;)
521 2055 y(cistpl_config_t)g(config;)521 2159 y(cistpl_cftable_entry_t)
84 b(cftable_entry;)521 2263 y(cistpl_device_geo_t)201
b(device_geo;)521 2367 y(cistpl_vers_2_t)357 b(version_2;)521
2471 y(cistpl_org_t)474 b(org;)521 2575 y(cistpl_format_t)357
b(format;)208 2680 y(})39 b(cisparse_t;)0 2902 y Fh(ParseTuple)32
b Fk(in)n(terprets)k(tuple)h(data)f(returned)g(b)n(y)g(a)h(previous)e
(call)h(to)g Fh(GetTupleData)p Fk(.)59 b(The)37 b(structure)f(returned)
0 3016 y(dep)r(ends)27 b(on)f(the)h(t)n(yp)r(e)f(of)h(the)g(parsed)e
(tuple.)37 b(See)27 b(the)f Fh(cistpl.h)e Fk(\034le)i(for)g(these)g
(structure)g(de\034nitions;)h(some)f(of)h(them)0 3130
y(are)g(quite)g(complex.)0 3286 y(Return)h(co)r(des:)0
3509 y Fh(CS_BAD_TUPLE)208 3656 y Fk(An)20 b(error)e(w)n(as)g(encoun)n
(ted)i(during)f(parsing)f(of)i(this)g(tuple.)35 b(The)20
b(tuple)g(ma)n(y)f(b)r(e)h(incomplete,)h(or)e(ma)n(y)g(b)r(e)h
(formatted)208 3769 y(incorrectly)-7 b(.)0 3949 y Fh(CS_UNSUPPORTED_F)o
(UN)o(CTI)o(ON)208 4096 y(ParseTuple)23 b Fk(cannot)k(parse)f(the)i(sp)
r(eci\034ed)g(tuple)g(t)n(yp)r(e.)0 4369 y Ff(3.4.4)94
b(V)-8 b(alidateCIS)208 4560 y Fd(int)39 b(CardServices\(ValidateCIS,)
45 b(client_handle_t)e(client,)d(cisinfo_t)i(*cisinfo\);)0
4799 y Fk(The)28 b Fh(cisinfo_t)23 b Fk(structure)k(is)h(giv)n(en)f(b)n
(y:)208 5012 y Fd(typedef)40 b(struct)h(cisinfo_t)g({)521
5117 y(u_int)433 b(Chains;)208 5221 y(})39 b(cisinfo_t;)p
eop
%%Page: 24 24
24 23 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(24)0
162 y Fh(ValidateCIS)29 b Fk(attempts)k(to)g(v)n(erify)f(that)i(a)e
(card)h(has)f(a)h(reasonable)e(Card)h(Information)h(Structure.)53
b(It)33 b(returns)g(the)0 275 y(n)n(um)n(b)r(er)27 b(of)h(tuples)g
(found)g(in)f Fh(Chains)p Fk(.)35 b(If)28 b(the)g(CIS)f(app)r(ears)g
(to)g(b)r(e)h(unin)n(terpretable,)f Fh(Chains)e Fk(will)j(b)r(e)g(set)f
(to)h(0.)0 432 y(Return)g(co)r(des:)0 655 y Fh(CS_BAD_HANDLE)208
801 y Fk(The)f(clien)n(t)h(handle)f(is)h(in)n(v)-5 b(alid.)0
981 y Fh(CS_OUT_OF_RESOUR)o(CE)208 1128 y Fk(Card)26
b(Services)h(w)n(as)f(unable)i(to)f(set)h(up)g(a)f(memory)g(windo)n(w)g
(to)g(map)h(the)g(card's)e(CIS.)0 1401 y Ff(3.4.5)94
b(ReplaceCIS)208 1592 y Fd(int)39 b(CardServices\(ReplaceCIS,)45
b(client_handle_t)d(client,)f(cisdump_t)g(*cisinfo\);)0
1831 y Fk(The)28 b Fh(cisdump_t)23 b Fk(structure)k(is)h(giv)n(en)f(b)n
(y:)208 2045 y Fd(typedef)40 b(struct)h(cisdump_t)g({)521
2149 y(u_int)433 b(Length;)521 2253 y(cisdata_t)277 b
(Data[CISTPL_MAX_CIS_SIZE];)208 2357 y(})39 b(cisinfo_t;)0
2580 y Fh(ReplaceCIS)26 b Fk(allo)n(ws)j(a)h(clien)n(t)g(to)h(pass)e
(Card)h(Services)f(a)h(replacemen)n(t)f(for)h(the)h(CIS)f(found)h(on)f
(a)g(card.)44 b(Its)31 b(in)n(tended)0 2693 y(application)23
b(is)g(for)h(cards)e(with)i(incomplete)g(or)f(inaccurate)f(CIS)i
(information.)35 b(If)24 b(a)f(correct)f(CIS)i(can)g(b)r(e)g(deduced)f
(from)0 2807 y(other)33 b(information)h(a)n(v)-5 b(ailable)32
b(for)i(the)g(card,)h(this)f(allo)n(ws)f(that)h(information)g(to)g(b)r
(e)g(pro)n(vided)f(to)h(clien)n(ts)g(in)g(a)g(clean)0
2921 y(fashion.)43 b(The)29 b(alternativ)n(e)g(is)g(to)h(p)r(ollute)g
(clien)n(t)f(source)g(co)r(de)g(with)h(\034xes)g(targeted)e(for)h(eac)n
(h)g(card)g(with)h(a)f(CIS)h(error.)0 3034 y(The)i(replacemen)n(t)g
(CIS)g(remains)g(in)h(e\033ect)f(un)n(til)h(the)g(card)e(is)i(ejected,)
h(and)e(all)g(tuple-related)g(services)f(will)h(use)h(the)0
3148 y(replacemen)n(t)27 b(instead)g(of)h(the)f(card's)g(actual)g(CIS.)
0 3304 y(The)35 b Fh(Length)d Fk(\034eld)k(giv)n(es)d(the)j(n)n(um)n(b)
r(er)e(of)h(b)n(ytes)g(of)f(CIS)h(data)g(in)g(the)g Fh(Data)f
Fk(arra)n(y)-7 b(.)56 b(The)35 b Fh(Data)e Fk(arra)n(y)g(can)i(b)r(e)g
(con-)0 3418 y(sidered)30 b(to)g(b)r(e)g(just)h(the)f(ev)n(en)g(b)n
(ytes)g(of)g(a)g(card's)f(attribute)h(memory)-7 b(.)44
b(It)31 b(should)e(con)n(tain)h(all)g(required)f(features)g(of)h(a)0
3531 y(normal)e(CIS,)h(including)f(an)h(initial)g Fh(CISTPL_DEVICE)23
b Fk(tuple)29 b(and)g(a)f(\034nal)h Fh(CISTPL_END)24
b Fk(tuple.)41 b(Long)28 b(links)h(\(including)0 3645
y Fh(CISTPL_LONGLINK_)o(MF)o(C)p Fk(\))i(ma)n(y)k(b)r(e)i(used:)54
b(all)36 b(target)f(addresses)g(are)g(in)n(terpreted)h(in)g(the)h
(replacemen)n(t)e(CIS)i(space.)0 3758 y(In)h(general,)i(a)e(replacemen)
n(t)f(CIS)i(should)f(also)f(con)n(tain)h(the)g(same)g(basic)g(iden)n
(ti\034cation)g(tuples)g(\()p Fh(CISTPL_MANFID)p Fk(,)0
3872 y Fh(CISTPL_VERS_1)p Fk(\))22 b(as)27 b(the)h(original)e(card.)0
4029 y(This)i(service)e(w)n(as)h(added)g(in)h(release)e(3.0.1.)0
4185 y(Return)i(co)r(des:)0 4408 y Fh(CS_BAD_HANDLE)208
4555 y Fk(The)f(clien)n(t)h(handle)f(is)h(in)n(v)-5 b(alid.)0
4735 y Fh(CS_OUT_OF_RESOUR)o(CE)208 4881 y Fk(Card)26
b(Services)h(w)n(as)f(unable)i(to)f(allo)r(cate)g(memory)g(to)g(hold)h
(the)f(replacemen)n(t)g(CIS.)p eop
%%Page: 25 25
25 24 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(25)0
162 y Fe(3.5)112 b(Memory)37 b(windo)m(w)g(con)m(trol)0
372 y Fk(Eac)n(h)31 b(so)r(c)n(k)n(et)e(can)i(ha)n(v)n(e)f(up)h(to)g
(four)f(activ)n(e)g(memory)g(windo)n(ws,)h(mapping)g(p)r(ortions)f(of)h
(card)e(memory)i(in)n(to)f(the)h(host)0 485 y(system)24
b(address)e(space.)35 b(A)24 b(PC)g(Card)f(device)h(can)f(address)g(at)
h(most)f(16MB)g(of)h(b)r(oth)g(common)f(and)h(attribute)g(memory)-7
b(.)0 599 y(Windo)n(ws)30 b(should)g(t)n(ypically)g(b)r(e)g(sized)g(to)
h(a)f(p)r(o)n(w)n(er)f(of)h(t)n(w)n(o.)44 b(Dep)r(ending)31
b(on)f(so)r(c)n(k)n(et)f(capabilities,)i(they)f(ma)n(y)g(need)g(to)0
712 y(b)r(e)e(aligned)f(on)g(a)g(b)r(oundary)g(that)h(is)f(a)h(m)n
(ultiple)g(of)f(the)h(windo)n(w)f(size)g(in)h(b)r(oth)g(the)g(host)f
(and)h(card)e(address)h(spaces.)0 869 y(A)e(memory)f(windo)n(w)g(is)h
(initialized)g(b)n(y)f(a)g(call)h(to)f Fh(RequestWindow)p
Fk(.)31 b(Some)24 b(windo)n(w)g(attributes)h(can)f(b)r(e)h(mo)r
(di\034ed)g(using)0 983 y Fh(ModifyWindow)p Fk(.)k(The)20
b(segmen)n(t)f(of)h(card)e(memory)h(mapp)r(ed)h(to)g(the)g(windo)n(w)f
(can)g(b)r(e)h(mo)r(di\034ed)g(using)f Fh(MapMemPage)p
Fk(.)31 b(And)0 1096 y(windo)n(ws)24 b(are)g(released)g(with)i
Fh(ReleaseWindow)p Fk(.)k(Unlik)n(e)25 b(almost)g(all)g(other)f(Card)h
(Services)f(subfunctions,)h(the)h(memory)0 1210 y(windo)n(w)h
(functions)h(normally)e(act)i(on)f Fh(window_handle_t)21
b Fk(handles,)27 b(rather)g(than)h Fh(client_handle_t)21
b Fk(handles.)0 1480 y Ff(3.5.1)94 b(RequestWindo)m(w)208
1669 y Fd(int)39 b(CardServices\(RequestWindow,)46 b(client_handle_t)c
(*handle,)f(win_req_t)g(*req\);)0 1898 y Fk(The)28 b
Fh(win_req_t)23 b Fk(structure)k(is)h(giv)n(en)f(b)n(y:)208
2102 y Fd(typedef)40 b(struct)h(win_req_t)g({)521 2206
y(u_int)433 b(Attributes;)521 2310 y(u_long)394 b(Base;)521
2415 y(u_int)433 b(Size;)521 2519 y(u_int)g(AccessSpeed;)208
2623 y(})39 b(win_req_t;)0 2837 y Fh(RequestWindow)32
b Fk(maps)k(a)h(windo)n(w)g(of)g(card)f(memory)g(in)n(to)h(system)g
(memory)-7 b(.)65 b(On)36 b(en)n(try)-7 b(,)39 b(the)f
Fh(handle)d Fk(parameter)0 2950 y(should)c(p)r(oin)n(t)g(to)g(a)f(v)-5
b(alid)31 b(clien)n(t)g(handle.)47 b(On)31 b(return,)g(this)g(will)h(b)
r(e)f(replaced)f(b)n(y)h(a)f Fh(window_handle_t)25 b
Fk(handle)31 b(that)0 3064 y(should)c(b)r(e)h(used)g(in)g(subsequen)n
(t)f(calls)g(to)g Fh(ModifyWindow)p Fk(,)c Fh(MapMemPage)p
Fk(,)g(and)28 b Fh(ReleaseWindow)p Fk(.)0 3220 y(The)g(follo)n(wing)e
(\035ags)h(can)g(b)r(e)h(sp)r(eci\034ed)g(in)f Fh(Attributes)p
Fk(:)0 3435 y Fh(WIN_MEMORY_TYPE)208 3579 y Fk(This)33
b(\034eld)h(can)f(b)r(e)h(either)f Fh(WIN_MEMORY_TYPE_)o(CM)27
b Fk(for)33 b(common)g(memory)-7 b(,)34 b(or)f Fh(WIN_MEMORY_TYPE)o(_A)
o(M)28 b Fk(for)33 b(at-)208 3693 y(tribute)27 b(memory)-7
b(.)0 3868 y Fh(WIN_DATA_WIDTH)208 4013 y Fk(Either)28
b Fh(WIN_DATA_WIDTH_)o(16)21 b Fk(for)27 b(16-bit)g(accesses,)f(or)h
Fh(WIN_DATA_WIDTH_)o(8)21 b Fk(for)27 b(8-bit)h(access.)0
4188 y Fh(WIN_ENABLE)208 4333 y Fk(If)g(this)f(is)h(set,)g(the)f(windo)
n(w)g(is)h(turned)g(on.)0 4509 y Fh(WIN_USE_WAIT)208
4653 y Fk(Sp)r(eci\034es)f(that)h(the)g(con)n(troller)e(should)h
(observ)n(e)f(the)i(card's)e(MW)-9 b(AIT)28 b(signal.)0
4829 y Fh(WIN_MAP_BELOW_1M)o(B)208 4973 y Fk(Requests)e(that)g(the)h
(windo)n(w)f(b)r(e)g(mapp)r(ed)h(b)r(elo)n(w)f(the)h(1MB)f(address)f(b)
r(oundary)-7 b(.)35 b(This)27 b(ma)n(y)e(not)i(b)r(e)f(p)r(ossible)g
(on)208 5087 y(some)h(platforms.)0 5263 y Fh(WIN_STRICT_ALIGN)208
5407 y Fk(Requests)g(that)h(the)g(windo)n(w)f(base)g(b)r(e)g(aligned)g
(to)h(a)f(m)n(ultiple)h(of)g(the)g(windo)n(w)f(size.)36
b(A)n(dded)28 b(in)g(release)e(3.1.2.)p eop
%%Page: 26 26
26 25 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(26)0
162 y Fh(Base)21 b Fk(sp)r(eci\034es)h(the)h(base)e(ph)n(ysical)h
(address)f(of)h(the)g(windo)n(w)g(in)h(system)f(memory)-7
b(.)34 b(If)23 b(zero,)f(Card)g(Services)f(will)h(set)h
Fh(Base)0 275 y Fk(to)32 b(the)h(\034rst)g(a)n(v)-5 b(ailable)31
b(windo)n(w)h(address.)50 b Fh(Size)31 b Fk(sp)r(eci\034es)i(the)g
(windo)n(w)f(size)g(in)h(b)n(ytes.)51 b(If)33 b(zero,)g(Card)e
(Services)h(will)0 389 y(set)e Fh(Size)f Fk(to)i(the)f(smallest)g
(windo)n(w)g(size)g(supp)r(orted)g(b)n(y)h(the)f(host)h(con)n(troller.)
43 b Fh(AccessSpeed)26 b Fk(sp)r(eci\034es)k(the)h(memory)0
502 y(access)26 b(sp)r(eed,)i(in)g(nanoseconds.)0 659
y(Return)g(co)r(des:)0 882 y Fh(CS_BAD_HANDLE)208 1029
y Fk(The)f(clien)n(t)h(handle)f(is)h(in)n(v)-5 b(alid.)0
1209 y Fh(CS_NO_CARD)208 1355 y Fk(The)27 b(so)r(c)n(k)n(et)g(assigned)
f(to)h(this)h(clien)n(t)g(is)f(curren)n(tly)g(v)-5 b(acan)n(t.)0
1535 y Fh(CS_BAD_ATTRIBUTE)208 1682 y Fk(An)28 b(unsupp)r(orted)f
(windo)n(w)g(attribute)h(w)n(as)e(requested.)0 1862 y
Fh(CS_OUT_OF_RESOUR)o(CE)208 2009 y Fk(The)h(maxim)n(um)h(n)n(um)n(b)r
(er)f(of)g(memory)g(windo)n(ws)g(for)g(this)h(so)r(c)n(k)n(et)e(are)h
(already)f(b)r(eing)h(used.)0 2189 y Fh(CS_IN_USE)208
2336 y(RequestWindow)22 b Fk(w)n(as)k(unable)i(to)f(\034nd)h(a)f(free)h
(windo)n(w)f(of)g(system)g(memory)-7 b(.)0 2516 y Fh(CS_BAD_SIZE)208
2662 y Fk(,)0 2842 y Fh(CS_BAD_BASE)208 2989 y Fk(Either)28
b Fh(Base)e Fk(or)g Fh(Size)g Fk(do)r(es)h(not)h(satisfy)f(the)h
(alignmen)n(t)f(rules)g(for)g(this)h(so)r(c)n(k)n(et.)0
3262 y Ff(3.5.2)94 b(Mo)s(difyWindo)m(w)208 3453 y Fd(int)39
b(CardServices\(ModifyWindow,)45 b(window_handle_t)e(handle,)e
(modwin_t)g(*mod\);)0 3692 y Fk(The)28 b Fh(modwin_t)c
Fk(structure)j(is)g(giv)n(en)g(b)n(y:)208 3906 y Fd(typedef)40
b(struct)h(modwin_t)g({)521 4010 y(u_int)433 b(Attributes;)521
4114 y(u_int)g(AccessSpeed;)208 4218 y(})39 b(modwin_t;)0
4441 y Fh(ModifyWindow)28 b Fk(mo)r(di\034es)k(the)h(attributes)f(of)h
(a)f(windo)n(w)g(handle)g(returned)g(b)n(y)g(a)h(previous)e(call)h(to)g
Fh(RequestWindow)p Fk(.)0 4554 y(The)c(follo)n(wing)e(attributes)h(can)
h(b)r(e)g(c)n(hanged:)0 4777 y Fh(WIN_MEMORY_TYPE)208
4924 y Fk(This)33 b(\034eld)h(can)f(b)r(e)h(either)f
Fh(WIN_MEMORY_TYPE_)o(CM)27 b Fk(for)33 b(common)g(memory)-7
b(,)34 b(or)f Fh(WIN_MEMORY_TYPE)o(_A)o(M)28 b Fk(for)33
b(at-)208 5038 y(tribute)27 b(memory)-7 b(.)0 5218 y
Fh(WIN_DATA_WIDTH)208 5364 y Fk(Either)28 b Fh(WIN_DATA_WIDTH_)o(16)21
b Fk(for)27 b(16-bit)g(accesses,)f(or)h Fh(WIN_DATA_WIDTH_)o(8)21
b Fk(for)27 b(8-bit)h(access.)p eop
%%Page: 27 27
27 26 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(27)0
162 y Fh(WIN_ENABLE)208 308 y Fk(If)28 b(this)f(is)h(set,)g(the)f
(windo)n(w)g(is)h(turned)g(on.)0 531 y Fh(AccessSpeed)23
b Fk(giv)n(es)j(the)i(new)g(memory)f(access)f(sp)r(eed,)i(in)g
(nanoseconds.)0 688 y(Return)g(co)r(des:)0 911 y Fh(CS_BAD_HANDLE)208
1058 y Fk(The)f(windo)n(w)g(handle)h(is)f(in)n(v)-5 b(alid.)0
1330 y Ff(3.5.3)94 b(ReleaseWindo)m(w)208 1521 y Fd(int)39
b(CardServices\(ReleaseWindow,)46 b(window_handle_t)c(handle\);)0
1761 y Fh(ReleaseWindow)22 b Fk(releases)k(a)h(memory)g(windo)n(w)g
(previously)f(allo)r(cated)h(with)h Fh(RequestWindow)p
Fk(.)0 1917 y(Return)g(co)r(des:)0 2140 y Fh(CS_BAD_HANDLE)208
2287 y Fk(The)f(windo)n(w)g(handle)h(is)f(in)n(v)-5 b(alid.)0
2559 y Ff(3.5.4)94 b(GetFirstWindo)m(w,)30 b(GetNextWindo)m(w)208
2750 y Fd(int)39 b(CardServices\(GetFirstWindow,)46 b(client_handle_t)c
(*client,)f(win_req_t)g(*req\);)208 2854 y(int)e
(CardServices\(GetNextWindow,)46 b(window_handle_t)c(*handle,)f
(win_req_t)g(*req\);)0 3094 y Fk(These)35 b(calls)g(sequen)n(tially)g
(retriev)n(e)f(windo)n(w)h(con\034guration)e(information)i(for)g(all)g
(of)h(a)f(so)r(c)n(k)n(et's)f(memory)h(windo)n(ws.)0
3207 y Fh(GetFirstWindow)27 b Fk(replaces)k(the)j(clien)n(t)e(windo)n
(w)h(handle)f(with)i(a)e(memory)g(windo)n(w)g(handle,)i(whic)n(h)f
(will)g(in)g(turn)g(b)r(e)0 3321 y(up)r(dated)28 b(b)n(y)f(calls)g(to)h
Fh(GetNextWindow)p Fk(.)0 3477 y(These)f(services)f(w)n(ere)h(added)g
(in)h(release)e(3.1.0.)0 3634 y(Return)i(co)r(des:)0
3857 y Fh(CS_BAD_HANDLE)208 4004 y Fk(The)f(clien)n(t)h(handle)f(is)h
(in)n(v)-5 b(alid.)0 4184 y Fh(CS_NO_MORE_ITEMS)208 4330
y Fk(No)27 b(more)g(windo)n(ws)f(ara)h(con\034gured)f(for)h(this)h(so)r
(c)n(k)n(et.)0 4603 y Ff(3.5.5)94 b(MapMemP)m(age,)29
b(GetMemP)m(age)208 4794 y Fd(int)39 b(CardServices\(MapMemPage,)45
b(window_handle_t)d(handle,)f(memreq_t)g(*req\);)208
4898 y(int)e(CardServices\(GetMemPage,)45 b(window_handle_t)d(handle,)f
(memreq_t)g(*req\);)0 5137 y Fk(The)28 b Fh(memreq_t)c
Fk(structure)j(is)g(giv)n(en)g(b)n(y:)p eop
%%Page: 28 28
28 27 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(28)208
162 y Fd(typedef)40 b(struct)h(memreq_t)g({)521 266 y(u_int)433
b(CardOffset;)521 370 y(page_t)394 b(Page;)208 474 y(})39
b(memreq_t;)0 697 y Fh(MapMemPage)17 b Fk(sets)j(the)i(address)d(of)i
(card)f(memory)g(that)h(is)g(mapp)r(ed)g(to)g(the)g(base)g(of)g(a)f
(memory)g(windo)n(w)g(to)h Fh(CardOffset)p Fk(.)0 810
y(The)k(windo)n(w)f(should)h(ha)n(v)n(e)e(b)r(een)i(created)f(b)n(y)h
(a)f(call)h(to)f Fh(RequestWindow)p Fk(.)31 b(The)25
b Fh(Page)e Fk(parameter)g(is)i(not)g(implemen)n(ted)0
924 y(in)i(this)g(v)n(ersion)e(and)h(should)g(b)r(e)h(set)g(to)g(0.)36
b(In)26 b(turn)h Fh(GetMemPage)c Fk(retriev)n(es)i(the)i(curren)n(t)e
(card)h(address)f(mapping)h(for)g(a)0 1038 y(memory)h(windo)n(w.)0
1194 y(The)h Fh(GetMemPage)23 b Fk(service)j(w)n(as)h(added)g(in)h
(release)e(3.1.0.)0 1351 y(Return)i(co)r(des:)0 1573
y Fh(CS_BAD_HANDLE)208 1720 y Fk(The)f(windo)n(w)g(handle)h(is)f(in)n
(v)-5 b(alid.)0 1900 y Fh(CS_BAD_PAGE)208 2047 y Fk(The)27
b Fh(Page)f Fk(v)-5 b(alue)28 b(w)n(as)e(non-zero.)0
2227 y Fh(CS_BAD_OFFSET)208 2374 y Fk(The)h(requested)g
Fh(CardOffset)c Fk(w)n(as)k(out)h(of)f(range)f(or)h(did)h(not)f(ha)n(v)
n(e)g(prop)r(er)f(alignmen)n(t.)0 2665 y Fe(3.6)112 b(Bulk)37
b(Memory)g(Services)0 2875 y Fk(Bulk)30 b(memory)g(services)f(pro)n
(vide)g(a)i(higher)e(lev)n(el)h(in)n(terface)g(for)g(accessing)f
(memory)h(regions)f(than)h(that)h(pro)n(vided)e(b)n(y)0
2989 y(the)h(memory)e(windo)n(w)h(services.)40 b(A)29
b(clien)n(t)h(using)e(bulk)i(memory)e(calls)h(do)r(es)f(not)i(need)f
(to)g(kno)n(w)f(an)n(ything)h(ab)r(out)g(the)0 3103 y(underlying)23
b(memory)g(organization)e(or)i(access)g(metho)r(ds.)35
b(The)24 b(device-sp)r(eci\034c)f(co)r(de)h(is)g(pac)n(k)-5
b(aged)22 b(in)n(to)h(a)h(sp)r(ecial)f(Card)0 3216 y(Services)k(clien)n
(t)g(called)g(a)h(Memory)e(T)-7 b(ec)n(hnology)26 b(Driv)n(er.)0
3489 y Ff(3.6.1)94 b(RegisterMTD)208 3680 y Fd(int)39
b(CardServices\(RegisterMTD,)45 b(client_handle_t)e(handle,)d
(mtd_reg_t)i(*reg\);)0 3919 y Fk(The)28 b Fh(mtd_reg_t)23
b Fk(data)28 b(structure)f(is)g(giv)n(en)g(b)n(y:)208
4133 y Fd(typedef)40 b(union)h(mtd_reg_t)g({)521 4237
y(u_int)433 b(Attributes;)521 4341 y(u_int)g(Offset;)521
4445 y(u_long)394 b(MediaID;)208 4549 y(})39 b(mtd_reg_t;)0
4772 y Fh(RegisterMTD)19 b Fk(informs)k(Card)f(Services)g(that)i(this)f
(clien)n(t)h(MTD)g(will)f(handle)g(requests)g(for)g(a)f(sp)r(eci\034ed)
i(memory)e(region.)0 4885 y(The)34 b Fh(Offset)e Fk(\034eld)j(sp)r
(eci\034es)f(the)h(starting)f(address)f(of)h(the)h(memory)e(region.)57
b(The)34 b(follo)n(wing)f(\034elds)i(are)e(de\034ned)i(in)0
4999 y Fh(Attributes)p Fk(:)0 5222 y Fh(REGION_TYPE)208
5369 y Fk(Either)28 b Fh(REGION_TYPE_CM)21 b Fk(for)27
b(common)g(memory)-7 b(,)27 b(or)g Fh(REGION_TYPE_AM)22
b Fk(for)27 b(attribute)g(memory)-7 b(.)p eop
%%Page: 29 29
29 28 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(29)0
162 y(The)27 b Fh(MediaID)e Fk(\034eld)i(is)g(recorded)f(b)n(y)h(Card)f
(Services,)h(and)g(will)g(b)r(e)h(passed)e(to)h(the)h(MTD)f(as)g(part)g
(of)g(an)n(y)f(request)h(that)0 275 y(references)f(this)i(memory)f
(region.)0 432 y(Once)f(an)h(MTD)g(is)g(b)r(ound)g(to)g(a)g(memory)f
(region)f(b)n(y)i(a)f(call)h(to)g Fh(RegisterMTD)p Fk(,)22
b(it)27 b(will)h(remain)e(b)r(ound)h(un)n(til)g(the)h(MTD)0
545 y(calls)f Fh(DeregisterClient)o Fk(.)0 702 y(Return)h(co)r(des:)0
908 y Fh(CS_BAD_HANDLE)208 1051 y Fk(The)f(clien)n(t)h(handle)f(is)h
(in)n(v)-5 b(alid.)0 1222 y Fh(CS_BAD_OFFSET)208 1365
y Fk(Either)34 b(the)g(o\033set)f(do)r(es)h(not)f(matc)n(h)h(a)f(v)-5
b(alid)34 b(memory)f(region)f(for)h(this)h(card,)h(or)e(another)f(MTD)i
(has)g(already)208 1479 y(registered)26 b(for)h(this)g(region.)0
1748 y Ff(3.6.2)94 b(GetFirstRegion,)29 b(GetNextRegion)208
1934 y Fd(int)39 b(CardServices\(GetFirstRegion,)46 b(client_handle_t)c
(handle,)f(region_info_t)h(*region\);)208 2039 y(int)d
(CardServices\(GetNextRegion,)46 b(client_handle_t)c(handle,)f
(region_info_t)h(*region\);)0 2257 y Fk(The)28 b Fh(region_info_t)22
b Fk(data)27 b(structure)g(is)g(giv)n(en)g(b)n(y:)208
2454 y Fd(typedef)40 b(union)h(region_info_t)h({)521
2558 y(u_int)433 b(Attributes;)521 2662 y(u_int)g(CardOffset;)521
2766 y(u_int)g(RegionSize;)521 2871 y(u_int)g(AccessSpeed;)521
2975 y(u_int)g(BlockSize;)521 3079 y(u_int)g(PartMultiple;)521
3183 y(u_char)394 b(JedecMfr,)41 b(JedecInfo;)521 3287
y(memory_handle_t)i(next;)208 3391 y(})c(region_info_t;)0
3597 y Fh(GetFirstRegion)15 b Fk(and)20 b Fh(GetNextRegion)15
b Fk(summarize)k(the)i(information)f(in)h(a)f(card's)f
Fh(CISTPL_DEVICE)p Fk(,)c Fh(CISTPL_JEDEC)p Fk(,)0 3711
y(and)30 b Fh(CISTPL_DEVICE_GEO)24 b Fk(tuples.)46 b
Fh(CardOffset)26 b Fk(giv)n(es)j(the)i(starting)f(address)f(of)i(a)f
(region.)44 b Fh(RegionSize)26 b Fk(giv)n(es)k(the)0
3824 y(length)h(of)f(the)h(region)f(in)g(b)n(ytes.)46
b Fh(AccessSpeed)26 b Fk(giv)n(es)k(the)h(device's)f(cycle)g(time)h(in)
g(nanoseconds.)44 b Fh(BlockSize)27 b Fk(giv)n(es)0 3938
y(the)g(erase)e(blo)r(c)n(k)h(size)g(in)h(b)n(ytes,)f(and)g
Fh(PartMultiple)c Fk(giv)n(es)j(the)i(minim)n(um)g(gran)n(ularit)n(y)c
(of)k(partitions)e(on)i(this)f(device,)0 4052 y(in)i(units)g(of)f
Fh(BlockSize)p Fk(.)33 b Fh(JedecMfr)25 b Fk(and)i Fh(JedecInfo)d
Fk(giv)n(e)j(the)h(JEDEC)g(iden)n(ti\034cation)g(b)n(ytes)f(for)g(this)
h(region.)0 4208 y(The)g(follo)n(wing)e(\034elds)i(are)e(de\034ned)i
(in)g Fh(Attributes)p Fk(:)0 4427 y Fh(REGION_TYPE)208
4569 y Fk(Either)g Fh(REGION_TYPE_CM)21 b Fk(for)27 b(common)g(memory)
-7 b(,)27 b(or)g Fh(REGION_TYPE_AM)22 b Fk(for)27 b(attribute)g(memory)
-7 b(.)0 4788 y(When)25 b(these)g(calls)g(are)f(made)g(b)n(y)h(an)g
(MTD)g(clien)n(t,)h(only)e(regions)g(that)h(ha)n(v)n(e)f(b)r(een)h(b)r
(ound)g(to)g(this)h(clien)n(t)f(through)f(calls)0 4902
y(to)j Fh(BindMTD)e Fk(will)j(b)r(e)g(returned.)0 5058
y(Return)g(co)r(des:)0 5265 y Fh(CS_BAD_HANDLE)208 5407
y Fk(The)f(clien)n(t)h(handle)f(is)h(in)n(v)-5 b(alid.)p
eop
%%Page: 30 30
30 29 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(30)0
162 y Fh(CS_NO_MORE_ITEMS)208 308 y Fk(No)27 b(more)g(memory)f(regions)
g(are)h(de\034ned.)0 581 y Ff(3.6.3)94 b(Op)s(enMemory)208
772 y Fd(int)39 b(CardServices\(OpenMemory,)45 b(client_handle_t)d
(*handle,)f(open_mem_t)h(*req\);)0 1012 y Fk(The)28 b
Fh(open_mem_t)23 b Fk(structure)k(is)g(giv)n(en)g(b)n(y:)208
1225 y Fd(typedef)40 b(struct)h(open_mem_t)g({)521 1329
y(u_int)433 b(Attributes;)521 1433 y(u_int)g(Offset;)208
1537 y(})39 b(open_mem_t;)0 1760 y Fh(OpenMemory)26 b
Fk(is)k(used)g(to)g(obtain)g(a)f(handle)h(for)g(accessing)f(a)g(memory)
h(region)e(via)i(the)g(other)g(bulk)g(memory)f(services.)0
1874 y(The)36 b Fh(Offset)e Fk(\034eld)i(sp)r(eci\034es)g(the)g(base)g
(address)f(of)h(the)g(region)f(to)h(b)r(e)g(accessed.)61
b(If)37 b(successful,)h(the)e(clien)n(t)g(handle)0 1987
y(argumen)n(t)26 b(is)i(replaced)f(b)n(y)g(the)h(new)f(memory)g
(handle.)0 2144 y(The)h(follo)n(wing)e(\034elds)i(are)e(de\034ned)i(in)
g Fh(Attributes)p Fk(:)0 2367 y Fh(MEMORY_TYPE)208 2513
y Fk(Either)g Fh(MEMORY_TYPE_CM)21 b Fk(for)27 b(common)g(memory)-7
b(,)27 b(or)g Fh(MEMORY_TYPE_AM)22 b Fk(for)27 b(attribute)g(memory)-7
b(.)0 2693 y Fh(MEMORY_EXCLUSIVE)208 2840 y Fk(Sp)r(eci\034es)27
b(that)h(this)g(clien)n(t)g(should)f(ha)n(v)n(e)f(exclusiv)n(e)h
(access)f(to)i(this)g(memory)e(region.)0 3063 y(Return)i(co)r(des:)0
3286 y Fh(CS_BAD_HANDLE)208 3433 y Fk(The)f(windo)n(w)g(handle)h(is)f
(in)n(v)-5 b(alid.)0 3613 y Fh(CS_BAD_OFFSET)208 3760
y Fk(Either)33 b(the)g(o\033set)f(do)r(es)g(not)h(sp)r(ecify)g(a)f(v)-5
b(alid)33 b(region,)f(or)g(the)h(region)e(do)r(es)i(not)f(ha)n(v)n(e)g
(an)g(asso)r(ciated)f(MTD)i(to)208 3873 y(service)26
b(bulk)i(memory)e(requests.)0 4146 y Ff(3.6.4)94 b(CloseMemory)208
4337 y Fd(int)39 b(CardServices\(CloseMemory,)45 b(memory_handle_t)e
(handle\);)0 4576 y Fh(CloseMemory)24 b Fk(releases)j(a)h(memory)g
(handle)g(returned)g(b)n(y)g(a)g(previous)g(call)g(to)g
Fh(OpenMemory)p Fk(.)36 b(A)29 b(clien)n(t)f(should)h(release)0
4690 y(all)e(memory)g(handles)g(b)r(efore)g(calling)g
Fh(DeregisterClient)o Fk(.)0 4846 y(Return)h(co)r(des:)0
5069 y Fh(CS_BAD_HANDLE)208 5216 y Fk(The)f(memory)g(handle)g(is)h(in)n
(v)-5 b(alid.)p eop
%%Page: 31 31
31 30 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(31)0
162 y Ff(3.6.5)94 b(ReadMemory)-8 b(,)29 b(W)-8 b(riteMemory)208
353 y Fd(int)39 b(CardServices\(ReadMemory,)45 b(memory_handle_t)d
(handle)f(mem_op_t)g(*req,)f(caddr_t)h(buf\);)208 457
y(int)e(CardServices\(WriteMemory,)45 b(memory_handle_t)e(handle,)d
(mem_op_t)h(*req,)g(caddr_t)f(buf\);)0 696 y Fk(The)28
b Fh(mem_io_t)c Fk(structure)j(is)g(giv)n(en)g(b)n(y:)208
910 y Fd(typedef)40 b(struct)h(mem_op_t)g({)521 1014
y(u_int)433 b(Attributes;)521 1118 y(u_int)g(Offset;)521
1222 y(u_int)g(Count;)208 1326 y(})39 b(mem_op_t;)0 1549
y Fh(ReadMemory)23 b Fk(and)j Fh(WriteMemory)c Fk(read)k(from)g(and)h
(write)f(to)h(a)f(card)g(memory)g(area)f(de\034ned)i(b)n(y)f(the)h(sp)r
(eci\034ed)g(memory)0 1663 y(handle,)i(returned)g(b)n(y)f(a)h(previous)
e(call)i(to)g Fh(OpenMemory)p Fk(.)36 b(The)29 b Fh(Offset)e
Fk(\034eld)i(giv)n(es)f(the)h(o\033set)g(of)f(the)i(op)r(eration)d
(from)0 1776 y(the)h(start)f(of)h(the)g(card)f(memory)g(region.)37
b(The)28 b Fh(Count)d Fk(\034eld)k(giv)n(es)d(the)i(n)n(um)n(b)r(er)g
(of)g(b)n(ytes)f(to)h(b)r(e)g(transferred.)36 b(The)28
b Fh(buf)0 1890 y Fk(\034eld)j(p)r(oin)n(ts)f(to)g(a)g(host)g(memory)f
(bu\033er)i(to)f(b)r(e)h(the)g(destination)f(for)f(a)h
Fh(ReadMemory)d Fk(op)r(eration,)i(or)h(the)h(source)e(for)g(a)0
2003 y Fh(WriteMemory)23 b Fk(op)r(eration.)0 2160 y(The)28
b(follo)n(wing)e(\034elds)i(are)e(de\034ned)i(in)g Fh(Attributes)p
Fk(:)0 2383 y Fh(MEM_OP_BUFFER)208 2529 y Fk(Either)22
b Fh(MEM_OP_BUFFER_U)o(SE)o(R)16 b Fk(if)22 b(the)g(host)g(bu\033er)g
(is)f(in)h(a)f(user)g(memory)g(segmen)n(t,)i(or)d Fh(MEM_OP_BUFFER_KER)
o(NE)o(L)208 2643 y Fk(if)28 b(the)g(host)f(bu\033er)h(is)f(in)h(k)n
(ernel)f(memory)-7 b(.)0 2823 y Fh(MEM_OP_DISABLE_E)o(RA)o(SE)208
2970 y Fk(Sp)r(eci\034es)27 b(that)h(a)f(card)g(area)f(should)h(not)h
(b)r(e)g(erased)e(b)r(efore)h(it)h(is)g(written.)0 3150
y Fh(MEM_OP_VERIFY)208 3297 y Fk(Sp)r(eci\034es)f(v)n(eri\034cation)f
(of)i(write)f(op)r(erations.)0 3519 y(Return)h(co)r(des:)0
3742 y Fh(CS_BAD_HANDLE)208 3889 y Fk(The)f(windo)n(w)g(handle)h(is)f
(in)n(v)-5 b(alid.)0 4069 y Fh(CS_BAD_OFFSET)208 4216
y Fk(The)27 b(sp)r(eci\034ed)h(card)f(o\033set)g(is)h(b)r(ey)n(ond)f
(the)h(end)g(of)f(the)h(memory)f(region.)0 4396 y Fh(CS_BAD_SIZE)208
4543 y Fk(The)g(sp)r(eci\034ed)h(transfer)f(size)g(extends)g(past)h
(the)f(end)h(of)g(the)g(memory)e(region.)0 4815 y Ff(3.6.6)94
b(RegisterEraseQueue)208 5006 y Fd(int)39 b
(CardServices\(RegisterEraseQu)q(eue,)46 b(client_handle_t)c(*handle,)f
(eraseq_hdr_t)h(*header\);)0 5246 y Fk(The)28 b Fh(eraseq_hdr_t)22
b Fk(structure)27 b(is)h(giv)n(en)e(b)n(y:)p eop
%%Page: 32 32
32 31 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(32)208
162 y Fd(typedef)40 b(struct)h(erase_queue_header_t)i({)521
266 y(int)511 b(QueueEntryCount;)521 370 y(eraseq_entry_t)82
b(*QueueEntryArray;)208 474 y(})39 b(eraseq_hdr_t;)0
697 y Fk(This)i(call)f(registers)f(a)i(queue)g(of)f(erase)g(requests)g
(with)h(Card)f(Services.)76 b(An)41 b Fh(eraseq_handle_t)35
b Fk(handle)41 b(will)g(b)r(e)0 810 y(returned)26 b(in)g
Fh(*handle)p Fk(.)34 b(When)26 b(this)h(clien)n(t)f(calls)g
Fh(CheckEraseQueue)o Fk(,)21 b(Card)k(Services)g(will)i(scan)e(the)i
(queue)f(and)g(b)r(egin)0 924 y(async)n(hronous)f(pro)r(cessing)h(of)i
(an)n(y)e(new)i(requests.)0 1081 y(The)g Fh(eraseq_entry_t)21
b Fk(structure)27 b(is)h(giv)n(en)f(b)n(y:)208 1294 y
Fd(typedef)40 b(struct)h(eraseq_entry_t)h({)521 1398
y(memory_handle_t)h(Handle;)521 1502 y(u_char)394 b(State;)521
1606 y(u_int)433 b(Size;)521 1710 y(u_int)g(Offset;)521
1814 y(void)472 b(*Optional;)208 1919 y(})39 b(eraseq_entry_t;)0
2141 y Fk(In)k(an)g(erase)e(queue)i(en)n(try)-7 b(,)46
b(the)d Fh(Header)e Fk(\034eld)i(should)f(b)r(e)i(a)e(memory)g(handle)h
(returned)f(b)n(y)h(a)f(previous)g(call)g(to)0 2255 y
Fh(OpenMemory)p Fk(.)33 b(The)27 b Fh(State)f Fk(\034eld)i(indicates)f
(the)h(state)f(of)h(the)g(erase)e(request.)36 b(The)28
b(follo)n(wing)e(v)-5 b(alues)27 b(are)g(de\034ned:)0
2495 y Fh(ERASE_QUEUED)208 2641 y Fk(Set)h(b)n(y)f(the)h(clien)n(t)f
(to)h(indicate)f(that)h(this)g(is)g(a)f(new)g(request.)0
2821 y Fh(ERASE_IDLE)208 2968 y Fk(Set)h(b)n(y)f(the)h(clien)n(t)f(to)h
(indicate)f(that)h(this)g(en)n(try)f(is)g(not)h(activ)n(e.)0
3148 y Fh(ERASE_PASSED)208 3295 y Fk(Set)g(b)n(y)f(the)h(MTD)g(to)f
(indicate)h(successful)f(completion.)0 3475 y Fh(ERASE_FAILED)208
3622 y Fk(Set)h(b)n(y)f(the)h(MTD)g(to)f(indicate)h(that)g(the)g(erase)
e(failed.)0 3802 y Fh(ERASE_MEDIA_WRPR)o(OT)208 3948
y Fk(Indicates)h(that)h(the)g(region)e(is)h(write)h(protected.)0
4128 y Fh(ERASE_NOT_ERASAB)o(LE)208 4275 y Fk(Indicates)f(that)h(this)f
(region)g(do)r(es)g(not)g(supp)r(ort)h(erase)e(op)r(erations.)0
4455 y Fh(ERASE_BAD_OFFSET)208 4602 y Fk(Indicates)h(that)h(the)g
(erase)e(do)r(es)h(not)h(start)f(on)g(an)g(erase)f(blo)r(c)n(k)h(b)r
(oundary)-7 b(.)0 4782 y Fh(ERASE_BAD_SIZE)208 4929 y
Fk(Indicates)27 b(that)h(the)g(requested)e(erase)h(size)g(is)g(not)h(a)
f(m)n(ultiple)h(of)g(the)g(erase)e(blo)r(c)n(k)h(size.)0
5109 y Fh(ERASE_BAD_SOCKET)208 5256 y Fk(Set)h(b)n(y)f(the)h(MTD)g(to)f
(indicate)h(that)g(there)f(is)g(no)h(card)e(presen)n(t.)p
eop
%%Page: 33 33
33 32 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(33)0
162 y(A)n(dditionally)-7 b(,)25 b(the)g(macro)e Fh(ERASE_IN_PROGRES)o
(S\(\))18 b Fk(will)25 b(return)f(a)g(true)h(condition)f(for)g(v)-5
b(alues)24 b(of)h Fh(State)d Fk(that)j(indicate)0 275
y(an)i(erase)f(is)i(b)r(eing)g(pro)r(cessed.)0 432 y(The)d
Fh(Size)f Fk(\034eld)h(giv)n(es)f(the)i(size)f(of)g(the)h(erase)e
(request)g(in)i(b)n(ytes.)36 b(The)25 b Fh(Offset)e Fk(\034eld)i(giv)n
(es)f(the)i(o\033set)f(from)g(the)g(start)g(of)0 545
y(the)j(region.)36 b(The)27 b(size)h(and)f(o\033set)h(should)f(b)r(e)h
(aligned)f(to)h(erase)e(blo)r(c)n(k)h(b)r(oundaries.)36
b(The)28 b Fh(Optional)c Fk(\034eld)k(is)g(not)f(used)0
659 y(b)n(y)g(Card)g(Services)g(and)g(ma)n(y)g(b)r(e)h(used)f(b)n(y)h
(the)g(clien)n(t)f(driv)n(er.)0 815 y(Return)h(co)r(des:)0
1038 y Fh(CS_BAD_HANDLE)208 1185 y Fk(The)f(clien)n(t)h(handle)f(is)h
(in)n(v)-5 b(alid.)0 1458 y Ff(3.6.7)94 b(DeregisterEraseQueue)208
1649 y Fd(int)39 b(CardServices\(DeregisterErase)q(Queue)q(,)45
b(eraseq_handle_t)e(handle\);)0 1888 y Fh(DeregisterEraseQ)o(ue)o(ue)24
b Fk(frees)29 b(a)h(queue)g(previously)f(registered)f(b)n(y)i(a)f(call)
h(to)g Fh(RegisterEraseQue)o(ue)o Fk(.)39 b(If)30 b(there)g(are)0
2002 y(an)n(y)d(p)r(ending)h(requests)e(in)i(the)g(sp)r(eci\034ed)g
(queue,)f(the)h(call)f(will)h(fail.)0 2158 y(Return)g(co)r(des:)0
2381 y Fh(CS_BAD_HANDLE)208 2528 y Fk(The)f(erase)f(queue)i(handle)f
(is)h(in)n(v)-5 b(alid.)0 2708 y Fh(CS_BUSY)208 2855
y Fk(The)27 b(erase)f(queue)i(has)f(erase)f(requests)h(p)r(ending.)0
3127 y Ff(3.6.8)94 b(Chec)m(kEraseQueue)208 3318 y Fd(int)39
b(CardServices\(CheckEraseQueue)q(,)45 b(eraseq_handle_t)d(handle\);)0
3558 y Fk(This)c(call)h(noti\034es)f(Card)g(Services)f(that)i(there)f
(are)g(new)g(erase)f(requests)h(in)h(a)f(queue)g(previously)g
(registered)f(with)0 3671 y Fh(RegisterEraseQue)o(ue)o
Fk(.)0 3828 y(T)n(ypically)-7 b(,)22 b(a)g(clien)n(t)g(will)g
(initially)g(assign)f(eac)n(h)g(erase)g(queue)h(en)n(try)f(the)i(state)
f(v)-5 b(alue)21 b Fh(ERASE_IDLE)p Fk(.)d(When)23 b(new)f(requests)0
3941 y(are)27 b(added)h(to)g(the)g(queue,)g(the)h(clien)n(t)f(will)g
(set)g(their)g(states)f(to)h Fh(ERASE_QUEUED)p Fk(,)23
b(and)28 b(call)g Fh(CheckEraseQueue)o Fk(.)33 b(When)0
4055 y(the)j(clien)n(t)g(is)g(noti\034ed)g(of)g(an)g(erase)f
(completion)g(ev)n(en)n(t,)j(it)e(will)h(c)n(hec)n(k)e(the)h(state)g
(\034eld)g(to)g(determine)g(whether)g(the)0 4168 y(request)27
b(w)n(as)f(successful.)0 4325 y(Return)i(co)r(des:)0
4548 y Fh(CS_BAD_HANDLE)208 4694 y Fk(The)f(erase)f(queue)i(handle)f
(is)h(in)n(v)-5 b(alid.)0 4986 y Fe(3.7)112 b(Miscellaneous)37
b(calls)0 5196 y Ff(3.7.1)94 b(GetCardServicesInfo)208
5387 y Fd(int)39 b(CardServices\(GetCardServices)q(Info,)46
b(servinfo_t)41 b(*info\);)p eop
%%Page: 34 34
34 33 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(34)0
162 y(The)28 b Fh(servinfo_t)23 b Fk(structure)k(is)g(giv)n(en)g(b)n
(y:)208 361 y Fd(typedef)40 b(struct)h(servinfo_t)g({)521
466 y(char)472 b(Signature[2];)521 570 y(u_int)433 b(Count;)521
674 y(u_int)g(Revision;)521 778 y(u_int)g(CSLevel;)521
882 y(char)472 b(*VendorString;)208 986 y(})39 b(servinfo_t;)0
1195 y Fh(GetCardServicesI)o(nf)o(o)26 b Fk(returns)31
b(revision)g(information)h(ab)r(out)f(this)i(v)n(ersion)d(of)i(Card)g
(Services.)49 b Fh(Signature)28 b Fk(is)k(set)0 1309
y(to)c(\020CS\021.)g Fh(Count)f Fk(is)h(set)h(to)f(the)h(n)n(um)n(b)r
(er)f(of)g(so)r(c)n(k)n(ets)f(curren)n(tly)h(con\034gured.)38
b Fh(Revision)25 b Fk(is)j(set)h(to)f(the)h(revision)e(lev)n(el)h(of)0
1422 y(the)e(Card)e(Services)h(pac)n(k)-5 b(age,)24 b(and)h
Fh(CSLevel)d Fk(is)k(set)f(to)g(the)h(lev)n(el)f(of)g(compliance)f
(with)i(the)g(PC)g(Card)e(standard.)35 b(These)0 1536
y(are)27 b(enco)r(ded)g(as)g(BCD)h(n)n(um)n(b)r(ers.)36
b Fh(VendorString)23 b Fk(is)k(set)h(to)f(p)r(oin)n(t)h(to)f(an)h(R)n
(CS)f(iden)n(ti\034cation)g(string.)0 1692 y(This)h(call)f(alw)n(a)n
(ys)e(succeeds.)0 1962 y Ff(3.7.2)94 b(A)m
(ccessCon\034gurationRegister)208 2150 y Fd(#include)41
b("cisreg.h")208 2358 y(int)e(CardServices\(AccessConfigura)q(tionR)q
(egis)q(ter,)46 b(client_handle_t)c(handle,)f(conf_reg_t)g(*reg\);)0
2580 y Fk(The)28 b Fh(conf_reg_t)23 b Fk(structure)k(is)g(giv)n(en)g(b)
n(y:)208 2780 y Fd(typedef)40 b(struct)h(conf_reg_t)g({)521
2884 y(u_char)394 b(Function;)521 2988 y(u_int)433 b(Action;)521
3092 y(off_t)g(Offset;)521 3196 y(u_int)g(Value;)208
3300 y(})39 b(conf_reg_t;)0 3510 y Fk(F)-7 b(or)33 b(normal)g(clien)n
(ts)h(b)r(ound)g(to)f(a)h(sp)r(eci\034c)g(card)f(function,)j(the)e
Fh(Function)c Fk(\034eld)k(is)g(ignored.)54 b(F)-7 b(or)33
b(clien)n(ts)h(b)r(ound)g(to)0 3623 y Fh(BIND_FN_ALL)p
Fk(,)23 b(this)28 b(\034eld)g(sp)r(eci\034es)f(whic)n(h)h(function's)g
(con\034guration)d(registers)h(should)h(b)r(e)h(accessed.)0
3780 y(The)g Fh(Action)d Fk(parameter)h(can)h(b)r(e)h(one)f(of)h(the)g
(follo)n(wing:)0 3989 y Fh(CS_READ)208 4132 y Fk(Read)f(the)h(sp)r
(eci\034ed)g(con\034guration)d(register)h(and)i(return)f
Fh(Value)p Fk(.)0 4305 y Fh(CS_WRITE)208 4449 y Fk(W)-7
b(rite)27 b Fh(Value)f Fk(to)h(the)h(sp)r(eci\034ed)g(con\034guration)e
(register.)0 4658 y Fh(AccessConfigurat)o(io)o(nRe)o(gi)o(st)o(er)36
b Fk(either)42 b(reads)f(or)g(writes)h(the)g(one-b)n(yte)g(CIS)g
(con\034guration)e(register)h(at)h(o\033set)0 4771 y
Fh(Offset)26 b Fk(from)i(the)h(start)e(of)i(the)f(con\034g)g(register)f
(area.)37 b(It)29 b(can)f(only)g(b)r(e)h(used)f(for)g(a)g(so)r(c)n(k)n
(et)f(that)i(has)f(b)r(een)g(con\034gured)0 4885 y(with)g
Fh(RequestConfigura)o(ti)o(on)p Fk(.)0 5041 y(The)g(follo)n(wing)e(v)-5
b(alues)27 b(for)g Fh(Offset)e Fk(are)i(de\034ned)h(in)g
Fh(cistpl.h)p Fk(:)0 5264 y Fh(CISREG_COR)208 5407 y
Fk(The)f(Con\034guration)f(Option)h(Register.)p eop
%%Page: 35 35
35 34 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(35)0
162 y Fh(CISREG_CCSR)208 308 y Fk(The)27 b(Card)g(Con\034guration)f
(and)h(Status)h(Register.)0 488 y Fh(CISREG_PRR)208 635
y Fk(The)f(Pin)h(Replacemen)n(t)g(Register.)0 815 y Fh(CISREG_SCR)208
962 y Fk(The)f(So)r(c)n(k)n(et)g(and)g(Cop)n(y)g(Register.)0
1142 y Fh(CISREG_ESR)208 1289 y Fk(The)g(Extended)i(Status)e(Register.)
0 1469 y Fh(CISREG_IOBASE0)p Ff(..)o Fh(CI)o(SR)o(EG_)o(IO)o(BA)o(SE3)
208 1616 y Fk(The)g(I/O)g(Base)f(Registers.)0 1796 y
Fh(CISREG_IOSIZE)208 1942 y Fk(The)h(I/O)g(Size)g(Register.)0
2182 y(Return)h(co)r(des:)0 2405 y Fh(CS_BAD_HANDLE)208
2552 y Fk(The)f(clien)n(t)h(handle)f(is)h(in)n(v)-5 b(alid.)0
2732 y Fh(CS_BAD_ARGS)208 2878 y Fk(The)27 b(sp)r(eci\034ed)h
Fh(Action)d Fk(is)j(not)f(supp)r(orted.)0 3058 y Fh(CS_CONFIGURATION)o
(_L)o(OCK)o(ED)208 3205 y Fk(This)g(actually)g(means)g(that)h(the)g
(con\034guration)e(has)h Ff(not)g Fk(b)r(een)h(lo)r(c)n(k)n(ed.)0
3385 y Fh(CS_OUT_OF_RESOUR)o(CE)208 3532 y Fk(Card)e(Services)h(w)n(as)
f(unable)i(to)f(allo)r(cate)g(a)g(memory)g(windo)n(w)g(to)g(access)g
(the)h(card's)e(con\034guration)g(registers.)0 3804 y
Ff(3.7.3)94 b(A)m(djustResourceInfo)208 3995 y Fd(int)39
b(CardServices\(AdjustResourceI)q(nfo,)46 b(client_handle_t)c(handle,)f
(adjust_t)g(*adj\);)0 4235 y Fk(The)28 b Fh(adjust_t)c
Fk(structure)j(is)g(giv)n(en)g(b)n(y:)208 4448 y Fd(typedef)40
b(struct)h(adjust_t)g({)521 4552 y(u_int)433 b(Action;)521
4657 y(u_int)g(Resource;)521 4761 y(u_int)g(Attributes;)521
4865 y(union)41 b({)835 4969 y(struct)g(memory)f({)1149
5073 y(u_long)393 b(Base;)1149 5177 y(u_long)g(Size;)835
5281 y(})39 b(memory;)835 5385 y(struct)i(io)e({)p eop
%%Page: 36 36
36 35 bop 0 -167 3900 5 v 0 -200 a Ff(3.)73 b(Card)33
b(Services)f(Subfunction)g(Descriptions)2008 b Fk(36)1149
162 y Fd(ioaddr_t)315 b(BasePort;)1149 266 y(ioaddr_t)g(NumPorts;)1149
370 y(u_int)432 b(IOAddrLines;)835 474 y(})39 b(io;)835
578 y(struct)i(irq)e({)1149 682 y(u_int)432 b(IRQ;)835
786 y(})39 b(irq;)521 890 y(})h(resource;)208 995 y(})f(adjust_t;)0
1217 y Fh(AdjustResourceIn)o(fo)32 b Fk(is)38 b(used)h(to)f(tell)h
(Card)f(Services)g(what)g(resources)f(ma)n(y)g(or)h(ma)n(y)g(not)h(b)r
(e)g(allo)r(cated)e(b)n(y)i(PC)0 1331 y(Card)29 b(devices.)44
b(The)30 b(normal)f(Lin)n(ux)h(resource)e(managemen)n(t)h(systems)h
(\(the)h(*_region)c(calls)j(for)f(IO)h(p)r(orts,)g(in)n(terrupt)0
1445 y(allo)r(cation\))d(are)f(resp)r(ected)i(b)n(y)f(Card)g(Services,)
f(but)i(this)g(call)f(giv)n(es)g(the)h(user)f(another)f(lev)n(el)h(of)h
(con)n(trol.)0 1601 y(The)g Fh(Action)d Fk(parameter)h(can)h(ha)n(v)n
(e)f(the)i(follo)n(wing)f(v)-5 b(alues:)0 1824 y Fh(ADD_MANAGED_RESO)o
(UR)o(CE)208 1971 y Fk(Place)37 b(the)g(sp)r(eci\034ed)h(resource)d
(under)i(Card)g(Services)f(con)n(trol,)i(so)f(that)g(it)h(ma)n(y)e(b)r
(e)i(allo)r(cated)e(b)n(y)h(PC)h(Card)208 2084 y(devices.)0
2264 y Fh(REMOVE_MANAGED_R)o(ES)o(OUR)o(CE)208 2411 y
Fk(Remo)n(v)n(e)26 b(the)i(sp)r(eci\034ed)g(resource)d(from)j(Card)e
(Services)h(con)n(trol.)0 2634 y(A)n(t)20 b(initialization)g(time,)i
(Card)d(Services)g(assumes)f(that)i(it)h(can)e(use)h(all)g(a)n(v)-5
b(ailable)18 b(in)n(terrupts,)j(but)f(IO)g(p)r(orts)f(and)h(memory)0
2748 y(regions)26 b(m)n(ust)i(b)r(e)g(explicitly)f(enabled)h(with)g
Fh(ADD_MANAGED_RES)o(OU)o(RCE)o Fk(.)0 2904 y(The)g Fh(Resource)c
Fk(parameter)i(can)h(ha)n(v)n(e)f(the)i(follo)n(wing)f(v)-5
b(alues:)0 3127 y Fh(RES_MEMORY_RANGE)208 3274 y Fk(Sp)r(eci\034es)27
b(a)g(memory)g(range)f(resource,)g(describ)r(ed)h(b)n(y)h
Fh(adj-)p Fc(>)p Fh(resource.m)o(em)o(ory)o Fk(.)0 3454
y Fh(RES_IO_RANGE)208 3600 y Fk(Sp)r(eci\034es)f(an)h(IO)f(p)r(ort)g
(resource,)f(describ)r(ed)h(b)n(y)h Fh(adj-)p Fc(>)p
Fh(resource.i)o(o)p Fk(.)0 3780 y Fh(RES_IRQ)208 3927
y Fk(Sp)r(eci\034es)f(an)h(in)n(terrupt)f(resource,)f(describ)r(ed)h(b)
n(y)g Fh(adj-)p Fc(>)p Fh(resource.ir)o(q)p Fk(.)0 4150
y(The)h(follo)n(wing)e(\035ags)h(ma)n(y)f(b)r(e)i(sp)r(eci\034ed)g(in)g
Fh(Attributes)p Fk(:)0 4373 y Fh(RES_RESERVED)208 4520
y Fk(Indicates)k(that)g(the)h(resource)e(should)h(b)r(e)h(reserv)n(ed)d
(for)i(PC)h(Card)f(devices)g(that)g(sp)r(eci\034cally)g(request)g(it.)
52 b(The)208 4633 y(resource)28 b(will)i(not)h(b)r(e)f(allo)r(cated)g
(for)f(a)h(device)g(that)g(asks)f(Card)h(Services)f(for)h(an)n(y)f(a)n
(v)-5 b(ailable)29 b(lo)r(cation.)44 b(This)30 b(is)208
4747 y(not)d(implemen)n(ted)h(y)n(et.)0 4970 y(Return)g(co)r(des:)0
5193 y Fh(CS_UNSUPPORTED_F)o(UN)o(CTI)o(ON)208 5339 y
Fk(The)f(sp)r(eci\034ed)h Fh(Action)d Fk(or)i Fh(Resource)d
Fk(is)j(not)h(supp)r(orted.)p eop
%%Page: 37 37
37 36 bop 0 -167 3900 5 v 0 -200 a Ff(4.)73 b(Card)33
b(Information)e(Structure)h(De\034nitions)2019 b Fk(37)0
162 y Fh(CS_BAD_BASE)208 308 y Fk(The)27 b(sp)r(eci\034ed)h(IO)f
(address)f(is)i(out)f(of)h(range.)0 488 y Fh(CS_BAD_SIZE)208
635 y Fk(The)f(sp)r(eci\034ed)h(memory)f(or)f(IO)i(windo)n(w)f(size)g
(is)g(out)h(of)f(range.)0 815 y Fh(CS_IN_USE)208 962
y Fk(The)g(sp)r(eci\034ed)h(in)n(terrupt)f(is)h(curren)n(tly)e(allo)r
(cated)h(b)n(y)g(a)g(Card)g(Services)g(clien)n(t.)0 1235
y Ff(3.7.4)94 b(Rep)s(ortError)208 1426 y Fd(int)39 b
(CardServices\(ReportError,)45 b(client_handle_t)e(handle,)d
(error_info_t)i(*err\);)0 1665 y Fk(The)28 b Fh(error_info_t)22
b Fk(structure)27 b(is)h(giv)n(en)e(b)n(y:)208 1878 y
Fd(typedef)40 b(struct)h(error_info_t)h({)521 1983 y(int)511
b(func;)521 2087 y(int)g(retcode;)208 2191 y(})39 b(error_info_t;)0
2414 y Fh(ReportError)26 b Fk(generates)j(a)h(k)n(ernel)g(error)f
(message)g(giv)n(en)g(a)i(Card)e(Services)h(function)h(co)r(de)g(and)f
(its)h(return)f(co)r(de.)46 b(If)0 2527 y(the)28 b(clien)n(t)g(handle)f
(is)h(v)-5 b(alid,)27 b(then)h(the)g(error)e(will)i(b)r(e)f(pre\034xed)
h(with)g(the)g(clien)n(t)f(driv)n(er's)f(name.)37 b(F)-7
b(or)27 b(example:)208 2757 y Fd(error_info_t)41 b(err)f(=)g({)f
(RequestIO,)j(CS_BAD_HANDLE)g(};)208 2861 y(CardServices\(ReportError,)
i(handle,)d(&err\);)0 3101 y Fk(could)27 b(generate)g(the)h(follo)n
(wing)e(message:)208 3314 y Fd(serial_cs:)41 b(RequestIO:)g(Bad)f
(handle)0 3537 y Fk(This)28 b(call)f(alw)n(a)n(ys)e(succeeds.)0
3876 y Fg(4)131 b(Card)44 b(Information)g(Structure)i(De\034nitions)0
4133 y Fe(4.1)112 b(CIS)37 b(T)-9 b(uple)37 b(De\034nitions)0
4343 y Fk(The)e(Card)f(Services)g Fh(ParseTuple)d Fk(function)36
b(in)n(terprets)e(ra)n(w)g(CIS)h(tuple)h(data)e(from)h(a)g(call)f(to)h
Fh(GetTupleData)30 b Fk(and)0 4457 y(returns)g(the)h(tuple)h(con)n(ten)
n(ts)e(in)h(a)f(form)h(dep)r(endan)n(t)g(on)f(the)h(tuple)h(t)n(yp)r
(e.)46 b(This)31 b(section)f(describ)r(es)h(the)g(parsed)f(tuple)0
4570 y(con)n(ten)n(ts.)208 4800 y Fd(#include)41 b("cistpl.h")p
eop
%%Page: 38 38
38 37 bop 0 -167 3900 5 v 0 -200 a Ff(4.)73 b(Card)33
b(Information)e(Structure)h(De\034nitions)2019 b Fk(38)0
162 y Ff(4.1.1)94 b(CISTPL_CHECKSUM)0 372 y Fk(The)28
b Fh(cistpl_checksum)o(_t)21 b Fk(structure)27 b(is)h(giv)n(en)e(b)n
(y:)208 585 y Fd(typedef)40 b(struct)h(cistpl_checksum_t)i({)521
689 y(u_short)355 b(addr;)521 793 y(u_short)g(len;)521
898 y(u_char)394 b(sum;)208 1002 y(})39 b(cistpl_checksum_t;)0
1274 y Ff(4.1.2)94 b(CISTPL_LONGLINK_A,)143 b(CISTPL_LONGLINK_C,)g
(CISTPL_LINKT)-8 b(AR)m(GET,)292 1388 y(CISTPL_NOLINK)0
1598 y Fk(The)28 b Fh(cistpl_longlink)o(_t)21 b Fk(structure)27
b(is)h(giv)n(en)e(b)n(y:)208 1811 y Fd(typedef)40 b(struct)h
(cistpl_longlink_t)i({)521 1915 y(u_int)433 b(addr;)208
2020 y(})39 b(cistpl_longlink_t;)0 2242 y Fk(These)30
b(tuples)g(are)f(p)r(oin)n(ters)g(to)h(additional)g(c)n(hains)f(of)h
(CIS)g(tuples,)h(either)f(in)g(attribute)g(or)f(common)h(memory)-7
b(.)43 b(Eac)n(h)0 2356 y(CIS)36 b(tuple)g(c)n(hain)f(can)g(ha)n(v)n(e)
g(at)g(most)h(one)f(long)g(link.)61 b Fh(CISTPL_LONGLINK_)o(A)30
b Fk(tuples)36 b(p)r(oin)n(t)g(to)f(attribute)h(memory)-7
b(,)0 2470 y(and)26 b Fh(CISTPL_LONGLINK_)o(C)21 b Fk(tuples)26
b(p)r(oin)n(t)h(to)f(common)g(memory)-7 b(.)36 b(The)26
b(standard)f(CIS)i(c)n(hain)f(starting)f(at)i(address)e(0)h(in)0
2583 y(attribute)31 b(memory)g(has)f(an)h(implied)h(long)e(link)h(to)g
(address)f(0)h(in)g(common)g(memory)-7 b(.)47 b(A)31
b Fh(CISTPL_NOLINK)26 b Fk(tuple)31 b(can)0 2697 y(b)r(e)d(used)f(to)h
(cancel)f(this)h(default)g(link.)0 2853 y(The)h(\034rst)g(tuple)g(of)g
(a)f(c)n(hain)h(p)r(oin)n(ted)g(to)f(b)n(y)h(a)f(long)h(link)g(m)n(ust)
g(b)r(e)g(a)f Fh(CISTPL_LINKTARGE)o(T)p Fk(.)23 b(The)29
b(CS)g(tuple)g(handling)0 2967 y(co)r(de)j(will)g(automatically)f
(follo)n(w)h(long)f(links)h(and)g(v)n(erify)f(link)i(targets;)g(these)f
(tuples)g(are)g(normally)f(in)n(visible)g(unless)0 3080
y(the)d Fh(TUPLE_RETURN_LIN)o(K)21 b Fk(attribute)28
b(is)g(sp)r(eci\034ed)f(in)h Fh(GetNextTuple)p Fk(.)0
3353 y Ff(4.1.3)94 b(CISTPL_LONGLINK_MF)m(C)0 3563 y
Fk(The)28 b Fh(cistpl_longlink)o(_m)o(fc_)o(t)21 b Fk(structure)27
b(is)h(giv)n(en)f(b)n(y:)208 3776 y Fd(typedef)40 b(struct)h
(cistpl_longlink_mfc_t)j({)521 3881 y(int)197 b(nfn;)521
3985 y(struct)41 b({)835 4089 y(u_char)80 b(space;)835
4193 y(u_int)119 b(addr;)521 4297 y(})40 b(fn[CISTPL_MAX_FUNCTIONS;)208
4401 y(})f(cistpl_longlink_mfc_t;)0 4624 y Fk(This)c(tuple)g(iden)n
(ti\034es)g(a)g(m)n(ultifunction)h(card,)g(and)e(sp)r(eci\034es)h(long)
f(link)h(p)r(oin)n(ters)g(to)f(CIS)h(c)n(hains)g(sp)r(eci\034c)g(for)f
(eac)n(h)0 4738 y(function.)79 b(The)41 b Fh(space)e
Fk(\034eld)j(is)f(either)g Fh(CISTPL_MFC_ATTR)35 b Fk(or)41
b Fh(CISTPL_MFC_COMM)o(ON)35 b Fk(for)41 b(attribute)g(or)g(common)0
4851 y(memory)27 b(space.)0 5124 y Ff(4.1.4)94 b(CISTPL_DEVICE,)32
b(CISTPL_DEVICE_A)0 5334 y Fk(The)c Fh(cistpl_device_t)21
b Fk(structure)27 b(is)g(giv)n(en)g(b)n(y:)p eop
%%Page: 39 39
39 38 bop 0 -167 3900 5 v 0 -200 a Ff(4.)73 b(Card)33
b(Information)e(Structure)h(De\034nitions)2019 b Fk(39)208
162 y Fd(typedef)40 b(struct)h(cistpl_device_t)h({)521
266 y(int)511 b(ndev;)521 370 y(struct)41 b({)835 474
y(u_char)394 b(type;)835 578 y(u_char)g(wp;)835 682 y(u_int)433
b(speed;)835 786 y(u_int)g(size;)521 890 y(})40 b
(dev[CISTPL_MAX_DEVICES];)208 995 y(})f(cistpl_device_t;)0
1217 y Fk(The)33 b Fh(CISTPL_DEVICE)28 b Fk(tuple)34
b(describ)r(es)f(address)f(regions)g(in)i(a)f(card's)f(common)h(memory)
-7 b(.)54 b(The)33 b Fh(CISTPL_DEVICE_A)0 1331 y Fk(tuple)i(describ)r
(es)f(regions)f(in)i(attribute)f(memory)-7 b(.)57 b(The)35
b Fh(type)e Fk(\035ag)h(indicates)g(the)h(t)n(yp)r(e)f(of)h(memory)f
(device)g(for)g(this)0 1445 y(region.)40 b(The)29 b Fh(wp)g
Fk(\035ag)f(indicates)h(if)h(this)f(region)f(is)h(write)g(protected.)41
b(The)29 b Fh(speed)e Fk(\034eld)i(is)g(in)h(nanoseconds,)e(and)h
Fh(size)0 1558 y Fk(is)e(in)g(b)n(ytes.)37 b(A)n(ddress)26
b(regions)f(are)h(assumed)h(to)g(b)r(e)g(ordered)f(consecutiv)n(ely)f
(starting)i(with)g(address)f(0.)36 b(The)27 b(follo)n(wing)0
1672 y(device)g(t)n(yp)r(es)h(are)e(de\034ned:)0 1911
y Fh(CISTPL_DTYPE_NUL)o(L)208 2058 y Fk(Sp)r(eci\034es)h(that)h(there)g
(is)f(no)g(device,)h(or)e(a)h(\020hole\021)34 b(in)28
b(the)g(card)e(address)h(space.)0 2238 y Fh(CISTPL_DTYPE_ROM)208
2385 y Fk(Mask)n(ed)f(R)n(OM)0 2565 y Fh(CISTPL_DTYPE_OTP)o(RO)o(M)208
2712 y Fk(One-t)n(yp)r(e)h(programmable)e(R)n(OM.)0 2892
y Fh(CISTPL_DTYPE_EPR)o(OM)208 3038 y Fk(UV)j(erasable)e(PR)n(OM.)0
3218 y Fh(CISTPL_DTYPE_EEP)o(RO)o(M)208 3365 y Fk(Electrically)h
(erasable)f(PR)n(OM.)0 3545 y Fh(CISTPL_DTYPE_FLA)o(SH)208
3692 y Fk(Flash)h(EPR)n(OM.)0 3872 y Fh(CISTPL_DTYPE_SRA)o(M)208
4019 y Fk(Static)g(or)g(non-v)n(olatile)f(RAM.)0 4199
y Fh(CISTPL_DTYPE_DRA)o(M)208 4345 y Fk(Dynamic)h(or)g(v)n(olatile)f
(RAM.)0 4525 y Fh(CISTPL_DTYPE_FUN)o(CS)o(PEC)208 4672
y Fk(Sp)r(eci\034es)20 b(a)f(function-sp)r(eci\034c)h(device,)h(suc)n
(h)f(as)f(a)g(memory-mapp)r(ed)g(IO)g(device)h(or)f(bu\033er,)j(as)d
(opp)r(osed)g(to)h(general)208 4786 y(purp)r(ose)27 b(storage.)0
4966 y Fh(CISTPL_DTYPE_EXT)o(EN)o(D)208 5113 y Fk(Sp)r(eci\034es)g(an)h
(extended)f(device)h(t)n(yp)r(e.)37 b(This)27 b(t)n(yp)r(e)h(is)f
(reserv)n(ed)f(for)h(future)h(use.)p eop
%%Page: 40 40
40 39 bop 0 -167 3900 5 v 0 -200 a Ff(4.)73 b(Card)33
b(Information)e(Structure)h(De\034nitions)2019 b Fk(40)0
162 y Ff(4.1.5)94 b(CISTPL_VERS_1)0 372 y Fk(The)28 b
Fh(cistpl_vers_1_t)21 b Fk(structure)27 b(is)g(giv)n(en)g(b)n(y:)208
585 y Fd(typedef)40 b(struct)h(cistpl_vers_1_t)h({)521
689 y(u_char)394 b(major;)521 793 y(u_char)g(minor;)521
898 y(int)511 b(ns;)521 1002 y(int)g(ofs[CISTPL_VERS_1_MAX_PROD_STRI)q
(NGS];)521 1106 y(char)472 b(str[254];)208 1210 y(})39
b(cistpl_vers_1_t;)0 1433 y Fk(The)29 b Fh(ns)g Fk(\034eld)g(sp)r
(eci\034es)g(the)h(n)n(um)n(b)r(er)f(of)g(pro)r(duct)h(information)e
(strings)g(in)i(the)g(tuple.)42 b(The)29 b(string)g(data)g(is)g(con)n
(tained)0 1546 y(in)f(the)g Fh(str)e Fk(arra)n(y)-7 b(.)35
b(Eac)n(h)27 b(string)g(is)g(n)n(ull)h(terminated,)g(and)f
Fh(ofs)f Fk(giv)n(es)h(the)h(o\033set)f(to)h(the)g(start)f(of)g(eac)n
(h)g(string.)0 1819 y Ff(4.1.6)94 b(CISTPL_AL)-8 b(TSTR)0
2029 y Fk(The)28 b Fh(cistpl_altstr_t)21 b Fk(structure)27
b(is)g(giv)n(en)g(b)n(y:)208 2242 y Fd(typedef)40 b(struct)h
(cistpl_altstr_t)h({)521 2347 y(int)511 b(ns;)521 2451
y(int)g(ofs[CISTPL_ALTSTR_MAX_STRINGS];)521 2555 y(char)472
b(str[254];)208 2659 y(})39 b(cistpl_altstr_t;)0 2882
y Fk(The)28 b Fh(ns)e Fk(\034eld)i(sp)r(eci\034es)g(the)g(n)n(um)n(b)r
(er)f(of)h(alternate)e(language)g(strings)h(in)h(the)g(tuple.)37
b(The)28 b(string)e(data)i(is)f(con)n(tained)g(in)0 2995
y(the)h Fh(str)e Fk(arra)n(y)-7 b(.)35 b(Eac)n(h)27 b(string)g(is)h(n)n
(ull)f(terminated,)h(and)f Fh(ofs)g Fk(giv)n(es)f(the)i(o\033set)f(to)h
(the)g(start)f(of)g(eac)n(h)g(string.)0 3268 y Ff(4.1.7)94
b(CISTPL_JEDEC_C,)33 b(CISTPL_JEDEC_A)0 3478 y Fk(The)28
b Fh(cistpl_jedec_t)21 b Fk(structure)27 b(is)h(giv)n(en)f(b)n(y:)208
3691 y Fd(typedef)40 b(struct)h(cistpl_jedec_t)h({)521
3796 y(int)511 b(nid;)521 3900 y(struct)41 b({)835 4004
y(u_char)80 b(mfr;)835 4108 y(u_char)g(info;)521 4212
y(})40 b(id[CISTPL_MAX_DEVICES];)208 4316 y(})f(cistpl_jedec_t;)0
4539 y Fk(JEDEC)33 b(iden)n(ti\034ers)e(describ)r(e)h(the)g(sp)r
(eci\034c)g(device)g(t)n(yp)r(e)g(used)f(to)h(implemen)n(t)h(a)e
(region)g(of)g(card)g(memory)-7 b(.)49 b(The)32 b Fh(nid)0
4653 y Fk(\034eld)e(sp)r(eci\034es)g(the)h(n)n(um)n(b)r(er)f(of)g
(JEDEC)h(iden)n(ti\034ers)f(in)g(the)h(tuple.)45 b(There)29
b(should)h(b)r(e)h(a)f(one-to-one)e(corresp)r(ondence)0
4766 y(b)r(et)n(w)n(een)f(JEDEC)i(iden)n(ti\034ers)e(and)h(device)f
(descriptions)g(in)g(the)h(corresp)r(onding)e Fh(CISTPL_DEVICE)c
Fk(tuple.)0 5039 y Ff(4.1.8)94 b(CISTPL_CONFIG,)32 b(CISTPL_CONFIG_CB)0
5249 y Fk(The)c Fh(cistpl_config_t)21 b Fk(structure)27
b(is)g(giv)n(en)g(b)n(y:)p eop
%%Page: 41 41
41 40 bop 0 -167 3900 5 v 0 -200 a Ff(4.)73 b(Card)33
b(Information)e(Structure)h(De\034nitions)2019 b Fk(41)208
162 y Fd(typedef)40 b(struct)h(cistpl_config_t)h({)521
266 y(u_char)394 b(last_idx;)521 370 y(u_int)433 b(base;)521
474 y(u_int)g(rmask[4];)521 578 y(u_char)394 b(subtuples;)208
682 y(})39 b(cistpl_config_t;)0 905 y Fk(The)28 b Fh(last_idx)d
Fk(\034eld)k(giv)n(es)e(the)i(index)f(of)g(the)h(highest)f(n)n(um)n(b)r
(ered)g(con\034guration)f(table)h(en)n(try)-7 b(.)39
b(The)28 b Fh(base)f Fk(\034eld)h(giv)n(es)0 1019 y(the)j(o\033set)f
(of)g(a)g(card's)g(con\034guration)e(registers)h(in)i(attribute)f
(memory)-7 b(.)44 b(The)31 b Fh(rmask)d Fk(arra)n(y)g(is)j(a)e(series)h
(of)g(bit)h(masks)0 1132 y(indicating)22 b(whic)n(h)h(con\034guration)e
(registers)g(are)h(presen)n(t.)34 b(Bit)23 b(0)f(of)h
Fh(rmask[0])c Fk(is)k(for)f(the)h(COR,)g(bit)g(1)f(is)h(for)f(the)h
(CCSR,)0 1246 y(and)j(so)g(on.)37 b(The)26 b Fh(subtuples)d
Fk(\034eld)k(giv)n(es)e(the)i(n)n(um)n(b)r(er)g(of)f(b)n(ytes)g(of)h
(subtuples)g(follo)n(wing)e(the)i(normal)f(tuple)h(con)n(ten)n(ts.)0
1402 y(F)-7 b(or)27 b Fh(CISTPL_CONFIG_CB)o Fk(,)22 b
Fh(rmask)j Fk(is)j(unde\034ned,)g(and)f Fh(base)f Fk(p)r(oin)n(ts)i(to)
f(the)h(CardBus)f(status)g(registers.)0 1675 y Ff(4.1.9)94
b(CISTPL_BAR)0 1885 y Fk(The)28 b Fh(cistpl_bar_t)22
b Fk(structure)27 b(is)h(giv)n(en)e(b)n(y:)208 2098 y
Fd(typedef)40 b(struct)h(cistpl_bar_t)h({)521 2203 y(u_char)394
b(attr;)521 2307 y(u_int)433 b(size;)208 2411 y(})39
b(cistpl_long_t;)0 2634 y Fk(A)22 b Fh(CISTPL_BAR)c Fk(tuple)23
b(describ)r(es)e(the)h(c)n(haracteristics)e(of)i(an)f(address)g(space)g
(region)g(p)r(oin)n(ted)h(to)g(b)n(y)f(a)h(PCI)g(base)f(address)0
2747 y(register,)26 b(for)h(CardBus)g(cards.)0 2904 y(The)h(follo)n
(wing)e(bit)i(\034elds)g(are)e(de\034ned)i(in)g Fh(attr)p
Fk(:)0 3127 y Fh(CISTPL_BAR_SPACE)208 3273 y Fk(Iden)n(ti\034es)34
b(the)h(base)f(address)f(register,)i(from)f(1)g(to)h(6.)57
b(A)35 b(v)-5 b(alue)34 b(of)h(7)f(describ)r(es)g(the)h(card's)e
(Extension)i(R)n(OM)208 3387 y(space.)0 3567 y Fh(CISTPL_BAR_SPACE)o
(_I)o(O)208 3714 y Fk(If)28 b(set,)f(this)h(address)e(register)g(maps)i
(IO)f(space)g(\(as)g(opp)r(osed)g(to)g(memory)g(space\).)0
3894 y Fh(CISTPL_BAR_PREFE)o(TC)o(H)208 4040 y Fk(If)h(set,)f(this)h
(region)e(can)h(b)r(e)h(prefetc)n(hed.)37 b(con)n(troller.)0
4220 y Fh(CISTPL_BAR_CACHE)o(AB)o(LE)208 4367 y Fk(If)28
b(set,)f(this)h(region)e(is)i(cac)n(heable)e(as)h(w)n(ell)g(as)g
(prefetc)n(hable.)0 4547 y Fh(CISTPL_BAR_1MEG_)o(MA)o(P)208
4694 y Fk(If)h(set,)f(this)h(region)e(should)i(only)f(b)r(e)h(mapp)r
(ed)g(in)n(to)f(the)h(\034rst)f(1MB)g(of)h(the)g(host's)f(ph)n(ysical)f
(address)h(space.)0 4967 y Ff(4.1.10)93 b(CISTPL_CFT)-8
b(ABLE_ENTR)g(Y)0 5177 y Fk(The)28 b Fh(cistpl_cftable_)o(en)o(try)o
(_t)21 b Fk(structure)27 b(is)g(giv)n(en)g(b)n(y:)p eop
%%Page: 42 42
42 41 bop 0 -167 3900 5 v 0 -200 a Ff(4.)73 b(Card)33
b(Information)e(Structure)h(De\034nitions)2019 b Fk(42)208
162 y Fd(typedef)40 b(struct)h(cistpl_cftable_entry_t)j({)521
266 y(u_char)394 b(index;)521 370 y(u_char)g(flags;)521
474 y(u_char)g(interface;)521 578 y(cistpl_power_t)82
b(vcc,)40 b(vpp1,)g(vpp2;)521 682 y(cistpl_timing_t)j(timing;)521
786 y(cistpl_io_t)199 b(io;)521 890 y(cistpl_irq_t)160
b(irq;)521 995 y(cistpl_mem_t)g(mem;)521 1099 y(u_char)394
b(subtuples;)208 1203 y(})39 b(cistpl_cftable_entry_t;)0
1424 y Fk(A)d Fh(CISTPL_CFTABLE_E)o(NT)o(RY)29 b Fk(structure)35
b(describ)r(es)g(a)g(complete)g(op)r(erating)g(mo)r(de)g(for)g(a)h
(card.)59 b(Man)n(y)35 b(sections)g(are)0 1538 y(optional.)51
b(The)32 b Fh(index)f Fk(\034eld)h(giv)n(es)f(the)i(con\034guration)e
(index)i(for)e(this)i(op)r(erating)e(mo)r(de;)k(writing)d(this)h(v)-5
b(alue)32 b(to)h(the)0 1651 y(card's)26 b(Con\034guration)g(Option)i
(Register)e(selects)h(this)h(mo)r(de.)37 b(The)28 b(follo)n(wing)e
(\034elds)i(are)e(de\034ned)i(in)g Fh(flags)p Fk(:)0
1889 y Fh(CISTPL_CFTABLE_D)o(EF)o(AUL)o(T)208 2035 y
Fk(Sp)r(eci\034es)f(that)h(this)g(is)f(the)h(default)g(con\034guration)
e(table)i(en)n(try)-7 b(.)0 2214 y Fh(CISTPL_CFTABLE_B)o(VD)o(S)208
2361 y Fk(Sp)r(eci\034es)38 b(that)g(this)g(con\034guration)e(implemen)
n(ts)i(the)h(BVD1)f(and)g(BVD2)g(signals)e(in)i(the)h(Pin)f(Replacemen)
n(t)208 2474 y(Register.)0 2653 y Fh(CISTPL_CFTABLE_W)o(P)208
2800 y Fk(Sp)r(eci\034es)27 b(that)g(this)g(con\034guration)e(implemen)
n(ts)i(the)g(write)g(protect)f(signal)g(in)h(the)g(Pin)h(Replacemen)n
(t)e(Register.)0 2979 y Fh(CISTPL_CFTABLE_R)o(DY)o(BSY)208
3125 y Fk(Sp)r(eci\034es)h(that)h(this)g(con\034guration)e(implemen)n
(ts)i(the)g(Ready/Busy)e(signal)g(in)i(the)g(Pin)g(Replacemen)n(t)g
(Register.)0 3305 y Fh(CISTPL_CFTABLE_M)o(WA)o(IT)208
3451 y Fk(Sp)r(eci\034es)f(that)h(the)g Fh(WAIT)e Fk(signal)h(should)g
(b)r(e)h(observ)n(ed)e(during)h(memory)g(access)f(cycles.)0
3630 y Fh(CISTPL_CFTABLE_A)o(UD)o(IO)208 3777 y Fk(Sp)r(eci\034es)19
b(that)h(this)g(con\034guration)d(generates)h(an)h(audio)g(signal)g
(that)g(can)g(b)r(e)h(routed)f(to)g(the)h(host)f(system)g(sp)r(eak)n
(er.)0 3956 y Fh(CISTPL_CFTABLE_R)o(EA)o(DON)o(LY)208
4102 y Fk(Sp)r(eci\034es)27 b(that)h(the)g(card)f(has)g(a)g(memory)g
(region)f(that)i(is)f(read-only)f(in)i(this)g(con\034guration.)0
4281 y Fh(CISTPL_CFTABLE_P)o(WR)o(DOW)o(N)208 4428 y
Fk(Sp)r(eci\034es)f(that)g(this)g(con\034guration)e(supp)r(orts)i(a)f
(p)r(o)n(w)n(er)g(do)n(wn)g(mo)r(de,)h(via)g(the)g(Card)f
(Con\034guration)f(and)i(Status)208 4541 y(Register.)0
4779 y(The)h Fh(cistpl_power_t)21 b Fk(structure)27 b(is)h(giv)n(en)f
(b)n(y:)208 4991 y Fd(typedef)40 b(struct)h(cistpl_power_t)h({)521
5095 y(u_char)394 b(present;)521 5199 y(u_char)g(flags;)521
5303 y(u_int)433 b(param[7];)208 5407 y(})39 b(cistpl_power_t;)p
eop
%%Page: 43 43
43 42 bop 0 -167 3900 5 v 0 -200 a Ff(4.)73 b(Card)33
b(Information)e(Structure)h(De\034nitions)2019 b Fk(43)0
162 y(The)36 b Fh(present)c Fk(\034eld)k(is)g(bit)g(mapp)r(ed)g(and)f
(indicates)g(whic)n(h)h(parameters)d(are)i(presen)n(t)g(for)g(this)h(p)
r(o)n(w)n(er)e(signal.)60 b(The)0 275 y(follo)n(wing)26
b(indices)i(are)f(de\034ned:)0 515 y Fh(CISTPL_POWER_VNO)o(M)208
662 y Fk(The)g(nominal)g(supply)h(v)n(oltage.)0 842 y
Fh(CISTPL_POWER_VMI)o(N)208 988 y Fk(The)f(minim)n(um)h(supply)g(v)n
(oltage.)0 1168 y Fh(CISTPL_POWER_VMA)o(X)208 1315 y
Fk(The)f(maxim)n(um)h(supply)f(v)n(oltage.)0 1495 y Fh
(CISTPL_POWER_IST)o(AT)o(IC)208 1642 y Fk(The)g(con)n(tin)n(uous)g
(supply)g(curren)n(t)g(required.)0 1822 y Fh(CISTPL_POWER_IAV)o(G)208
1969 y Fk(The)g(maxim)n(um)h(curren)n(t)e(a)n(v)n(eraged)f(o)n(v)n(er)h
(one)h(second.)0 2149 y Fh(CISTPL_POWER_IPE)o(AK)208
2295 y Fk(The)g(maxim)n(um)h(curren)n(t)e(a)n(v)n(eraged)f(o)n(v)n(er)h
(10)g(ms.)0 2475 y Fh(CISTPL_POWER_IDO)o(WN)208 2622
y Fk(The)h(curren)n(t)g(required)f(in)i(p)r(o)n(w)n(er)f(do)n(wn)g(mo)r
(de.)0 2862 y(V)-7 b(oltages)26 b(are)h(giv)n(en)g(in)h(units)g(of)f
(10)g(micro)n(v)n(olts.)35 b(Curren)n(ts)26 b(are)h(giv)n(en)f(in)i
(units)g(of)g(100)e(nanoamp)r(eres.)0 3018 y(The)i Fh(cistpl_timing_t)
21 b Fk(structure)27 b(is)g(giv)n(en)g(b)n(y:)208 3232
y Fd(typedef)40 b(cistpl_timing_t)j({)521 3336 y(u_int)433
b(wait,)40 b(waitscale;)521 3440 y(u_int)433 b(ready,)40
b(rdyscale;)521 3544 y(u_int)433 b(reserved,)41 b(rsvscale;)208
3648 y(})e(cistpl_timing_t;)0 3871 y Fk(Eac)n(h)25 b(time)h(consists)e
(of)h(a)g(base)g(time)h(in)f(nanoseconds,)f(and)h(a)g(scale)g(m)n
(ultiplier.)36 b(Unsp)r(eci\034ed)26 b(times)f(ha)n(v)n(e)f(v)-5
b(alues)25 b(of)g(0.)0 4027 y(The)j Fh(cistpl_io_t)23
b Fk(structure)k(is)g(giv)n(en)g(b)n(y:)208 4241 y Fd(typedef)40
b(struct)h(cistpl_io_t)g({)521 4345 y(u_char)394 b(flags;)521
4449 y(int)511 b(nwin;)521 4553 y(struct)41 b({)835 4657
y(u_int)433 b(base;)835 4761 y(u_int)g(len;)521 4865
y(})40 b(win[CISTPL_IO_MAX_WIN;)208 4970 y(})f(cistpl_io_t;)0
5192 y Fk(The)c(n)n(um)n(b)r(er)f(of)g(IO)h(windo)n(ws)e(is)i(giv)n(en)
e(b)n(y)i Fh(nwin)p Fk(.)56 b(Eac)n(h)34 b(windo)n(w)g(is)h(describ)r
(ed)f(b)n(y)g(a)g(base)g(address,)h Fh(base)p Fk(,)g(and)f(a)0
5306 y(length)28 b(in)f(b)n(ytes,)h Fh(len)p Fk(.)35
b(The)28 b(follo)n(wing)e(bit)j(\034elds)e(are)g(de\034ned)h(in)f
Fh(flags)p Fk(:)p eop
%%Page: 44 44
44 43 bop 0 -167 3900 5 v 0 -200 a Ff(4.)73 b(Card)33
b(Information)e(Structure)h(De\034nitions)2019 b Fk(44)0
162 y Fh(CISTPL_IO_LINES_)o(MA)o(SK)208 300 y Fk(The)27
b(n)n(um)n(b)r(er)g(of)h(IO)f(lines)h(deco)r(ded)f(b)n(y)g(this)h
(card.)0 464 y Fh(CISTPL_IO_8BIT)208 602 y Fk(Indicates)f(that)h(the)g
(card)e(supp)r(orts)h(split)h(8-bit)g(accesses)d(to)j(16-bit)f(IO)g
(registers.)0 765 y Fh(CISTPL_IO_16BIT)208 904 y Fk(Indicates)g(that)h
(the)g(card)e(supp)r(orts)h(full)i(16-bit)d(accesses)g(to)i(IO)f
(registers.)0 1102 y(The)h Fh(cistpl_irq_t)22 b Fk(structure)27
b(is)h(giv)n(en)e(b)n(y:)208 1282 y Fd(typedef)40 b(struct)h
(cistpl_irq_t)h({)521 1386 y(u_int)433 b(IRQInfo1;)521
1490 y(u_int)g(IRQInfo2;)208 1594 y(})39 b(cistpl_irq_t;)0
1784 y Fk(The)28 b(follo)n(wing)e(bit)i(\034elds)g(are)e(de\034ned)i
(in)g Fh(IRQInfo1)p Fk(:)0 1974 y Fh(IRQ_MASK)208 2112
y Fk(A)f(sp)r(eci\034c)h(in)n(terrupt)f(n)n(um)n(b)r(er)h(that)f(this)h
(card)f(should)g(use.)0 2276 y Fh(IRQ_NMI_ID)p Ff(,)g
Fh(IRQ_IOCK_ID)p Ff(,)g Fh(IRQ_BERR_ID)p Ff(,)f Fh(IRQ_VEND_ID)208
2414 y Fk(When)19 b Fh(IRQ_INFO2_VALID)12 b Fk(is)18
b(set,)j(these)d(indicate)h(if)g(a)f(corresp)r(onding)f(sp)r(ecial)h
(in)n(terrupt)g(signal)g(ma)n(y)f(b)r(e)i(assigned)208
2528 y(to)g(this)h(card.)33 b(The)20 b(four)f(\035ags)g(are)g(for)g
(the)h(non-mask)-5 b(able,)20 b(IO)f(c)n(hec)n(k,)i(bus)f(error,)f(and)
g(v)n(endor)g(sp)r(eci\034c)h(in)n(terrupts.)0 2691 y
Fh(IRQ_INFO2_VALID)208 2830 y Fk(Indicates)27 b(that)h
Fh(IRQInfo2)c Fk(con)n(tains)i(a)i(v)-5 b(alid)27 b(bit)h(mask)f(of)h
(allo)n(w)n(ed)e(in)n(terrupt)h(request)g(n)n(um)n(b)r(ers.)0
2993 y Fh(IRQ_LEVEL_ID)208 3131 y Fk(Indicates)g(that)h(the)g(card)e
(supp)r(orts)h(lev)n(el)g(mo)r(de)h(in)n(terrupts.)0
3295 y Fh(IRQ_PULSE_ID)208 3433 y Fk(Indicates)f(that)h(the)g(card)e
(supp)r(orts)h(pulse)h(mo)r(de)g(in)n(terrupts.)0 3597
y Fh(IRQ_SHARE_ID)208 3735 y Fk(Indicates)f(that)h(the)g(card)e(supp)r
(orts)h(sharing)g(in)n(terrupts.)0 3925 y(If)h Fh(IRQInfo1)c
Fk(is)k(0,)f(then)h(no)f(in)n(terrupt)h(information)e(is)i(a)n(v)-5
b(ailable.)0 4081 y(The)28 b Fh(cistpl_mem_t)22 b Fk(structure)27
b(is)h(giv)n(en)e(b)n(y:)208 4262 y Fd(typedef)40 b(struct)h
(cistpl_mem_t)h({)521 4366 y(u_char)394 b(nwin;)521 4470
y(struct)41 b({)835 4574 y(u_int)433 b(len;)835 4678
y(u_int)g(card_addr;)835 4782 y(u_int)g(host_addr;)521
4886 y(})40 b(win[CISTPL_MEM_MAX_WIN;)208 4990 y(})f(cistpl_mem_t;)0
5180 y Fk(The)c(n)n(um)n(b)r(er)f(of)h(memory)f(windo)n(ws)g(is)h(giv)n
(en)f(b)n(y)g Fh(nwin)p Fk(.)57 b(Eac)n(h)35 b(windo)n(w)f(is)h
(describ)r(ed)f(b)n(y)h(an)f(address)g(in)h(the)g(card)0
5294 y(memory)26 b(space,)g Fh(card_addr)p Fk(,)d(an)j(address)f(in)i
(the)g(host)f(memory)g(space,)g Fh(host_addr)p Fk(,)d(and)j(a)h(length)
f(in)h(b)n(ytes,)f Fh(len)p Fk(.)36 b(If)0 5407 y(the)28
b(host)f(address)g(is)g(0,)g(the)h(p)r(osition)f(of)h(the)g(windo)n(w)f
(is)g(arbitrary)-7 b(.)p eop
%%Page: 45 45
45 44 bop 0 -167 3900 5 v 0 -200 a Ff(4.)73 b(Card)33
b(Information)e(Structure)h(De\034nitions)2019 b Fk(45)0
162 y Ff(4.1.11)93 b(CISTPL_CFT)-8 b(ABLE_ENTR)g(Y_CB)0
372 y Fk(The)28 b Fh(cistpl_cftable_)o(en)o(try)o(_c)o(b_)o(t)22
b Fk(structure)27 b(is)g(giv)n(en)g(b)n(y:)208 585 y
Fd(typedef)40 b(struct)h(cistpl_cftable_entry_cb_t)k({)521
689 y(u_char)394 b(index;)521 793 y(u_char)g(flags;)521
898 y(cistpl_power_t)82 b(vcc,)40 b(vpp1,)g(vpp2;)521
1002 y(u_char)394 b(io;)521 1106 y(cistpl_irq_t)160 b(irq;)521
1210 y(u_char)394 b(mem;)521 1314 y(u_char)g(subtuples;)208
1418 y(})39 b(cistpl_cftable_entry_cb_t;)0 1641 y Fk(A)34
b Fh(CISTPL_CFTABLE_EN)o(TR)o(Y_C)o(B)28 b Fk(structure)33
b(describ)r(es)h(a)g(complete)g(op)r(erating)f(mo)r(de)h(for)f(a)h
(CardBus)f(card.)56 b(Man)n(y)0 1755 y(\034elds)28 b(are)e(iden)n
(tical)h(to)h(corresp)r(onding)d(\034elds)j(in)g Fh(CISTPL_CFTABLE_)o
(ENT)o(RY)o Fk(.)0 1911 y(The)c Fh(io)e Fk(and)i Fh(mem)e
Fk(\034elds)h(sp)r(ecify)h(whic)n(h)f(base)g(address)f(registers)g
(need)i(to)f(b)r(e)h(initialized)g(for)f(this)g(con\034guration.)34
b(Bits)23 b(1)0 2025 y(through)h(6)g(corresp)r(ond)f(to)i(the)g(six)f
(base)g(address)g(registers,)f(and)i(bit)g(7)f(indicates)h(the)g
(expansion)e(R)n(OM)i(base)f(register.)0 2297 y Ff(4.1.12)93
b(CISTPL_MANFID)0 2507 y Fk(The)28 b Fh(cistpl_manfid_t)21
b Fk(structure)27 b(is)g(giv)n(en)g(b)n(y:)208 2721 y
Fd(typedef)40 b(struct)h(cistpl_manfid_t)h({)521 2825
y(u_short)355 b(manf;)521 2929 y(u_short)g(card;)208
3033 y(})39 b(cistpl_manfid_t;)0 3256 y Fk(The)27 b Fh(manf)f
Fk(\034eld)i(iden)n(ti\034es)f(the)h(card)e(man)n(ufacturer.)36
b(The)27 b Fh(card)f Fk(\034eld)h(is)g(c)n(hosen)g(b)n(y)g(the)g(v)n
(endor)f(and)i(should)f(iden)n(tify)0 3369 y(the)h(card)f(t)n(yp)r(e)g
(and)h(mo)r(del.)0 3642 y Ff(4.1.13)93 b(CISTPL_FUNCID)0
3852 y Fk(The)28 b Fh(cistpl_funcid_t)21 b Fk(structure)27
b(is)g(giv)n(en)g(b)n(y:)208 4066 y Fd(typedef)40 b(struct)h
(cistpl_funcid_t)h({)521 4170 y(u_char)394 b(func;)521
4274 y(u_char)g(sysinit;)208 4378 y(})39 b(cistpl_funcid_t;)0
4601 y Fk(The)30 b Fh(func)e Fk(\034eld)i(iden)n(ti\034es)f(the)h(card)
f(function.)44 b(The)29 b Fh(sysinit)e Fk(\034eld)j(con)n(tains)f(sev)n
(eral)e(bit-mapp)r(ed)j(\035ags)f(describing)0 4714 y(ho)n(w)e(the)h
(card)f(should)g(b)r(e)h(con\034gured)e(at)i(b)r(o)r(ot)f(time.)0
4871 y(The)h(follo)n(wing)e(functions)i(are)e(de\034ned:)0
5110 y Fh(CISTPL_FUNCID_MU)o(LT)o(I)208 5257 y Fk(A)h(m)n
(ulti-function)i(card.)p eop
%%Page: 46 46
46 45 bop 0 -167 3900 5 v 0 -200 a Ff(4.)73 b(Card)33
b(Information)e(Structure)h(De\034nitions)2019 b Fk(46)0
162 y Fh(CISTPL_FUNCID_ME)o(MO)o(RY)208 308 y Fk(A)27
b(simple)h(memory)f(device.)0 488 y Fh(CISTPL_FUNCID_SE)o(RI)o(AL)208
635 y Fk(A)g(serial)g(p)r(ort)g(or)g(mo)r(dem)h(device.)0
815 y Fh(CISTPL_FUNCID_PA)o(RA)o(LLE)o(L)208 962 y Fk(A)f(parallel)g(p)
r(ort)g(device.)0 1142 y Fh(CISTPL_FUNCID_FI)o(XE)o(D)208
1289 y Fk(A)g(\034xed)h(disk)f(device.)0 1469 y Fh(CISTPL_FUNCID_VI)o
(DE)o(O)208 1616 y Fk(A)g(video)h(in)n(terface.)0 1796
y Fh(CISTPL_FUNCID_NE)o(TW)o(ORK)208 1942 y Fk(A)f(net)n(w)n(ork)g
(adapter.)0 2122 y Fh(CISTPL_FUNCID_AI)o(MS)208 2269
y Fk(An)h(auto-incremen)n(ting)e(mass)g(storage)g(device.)0
2509 y(The)i(follo)n(wing)e(\035ags)h(are)f(de\034ned)i(in)g
Fh(sysinit)p Fk(:)0 2732 y Fh(CISTPL_SYSINIT_P)o(OS)o(T)208
2878 y Fk(Indicates)f(that)h(the)g(system)f(should)g(attempt)h(to)g
(con\034gure)e(this)i(card)f(during)g(its)g(p)r(o)n(w)n(er-on)f
(initialization.)0 3058 y Fh(CISTPL_SYSINIT_R)o(OM)208
3205 y Fk(Indicates)h(that)h(the)g(card)e(con)n(tains)h(a)g(system)g
(expansion)g(R)n(OM)g(that)h(should)f(b)r(e)h(con\034gured)e(at)i(b)r
(o)r(ot)f(time.)0 3478 y Ff(4.1.14)93 b(CISTPL_DEVICE_GEO)0
3688 y Fk(The)28 b Fh(cistpl_device_g)o(eo)o(_t)21 b
Fk(structure)27 b(is)h(giv)n(en)e(b)n(y:)208 3901 y Fd(typedef)40
b(struct)h(cistpl_device_geo_t)i({)521 4005 y(int)511
b(ngeo;)521 4109 y(struct)41 b({)835 4213 y(u_char)394
b(buswidth;)835 4318 y(u_int)433 b(erase_block;)835 4422
y(u_int)g(read_block;)835 4526 y(u_int)g(write_block;)835
4630 y(u_int)g(partition;)835 4734 y(u_int)g(interleave;)521
4838 y(})40 b(geo[CISTPL_MAX_DEVICES];)208 4942 y(})f
(cistpl_device_geo_t;)0 5165 y Fk(The)31 b Fh(erase_block)p
Fk(,)c Fh(read_block)p Fk(,)g(and)k Fh(write_block)26
b Fk(sizes)k(are)g(in)h(units)g(of)f Fh(buswidth)e Fk(b)n(ytes)i(times)
h Fh(interleave)p Fk(.)0 5279 y(The)d Fh(partition)23
b Fk(size)28 b(is)f(in)h(units)g(of)g Fh(erase_block)p
Fk(.)p eop
%%Page: 47 47
47 46 bop 0 -167 3900 5 v 0 -200 a Ff(4.)73 b(Card)33
b(Information)e(Structure)h(De\034nitions)2019 b Fk(47)0
162 y Ff(4.1.15)93 b(CISTPL_VERS_2)0 372 y Fk(The)28
b Fh(cistpl_vers_2_t)21 b Fk(structure)27 b(is)g(giv)n(en)g(b)n(y:)208
585 y Fd(typedef)40 b(struct)h(cistpl_vers_2_t)h({)521
689 y(u_char)394 b(vers;)521 793 y(u_char)g(comply;)521
898 y(u_short)355 b(dindex;)521 1002 y(u_char)394 b(vspec8,)41
b(vspec9;)521 1106 y(u_char)394 b(nhdr;)521 1210 y(int)511
b(vendor,)41 b(info;)521 1314 y(char)472 b(str[244];)208
1418 y(})39 b(cistpl_vers_2_t;)0 1641 y Fk(The)25 b Fh(vers)d
Fk(\034eld)j(should)f(alw)n(a)n(ys)f(b)r(e)i(0.)35 b(The)25
b Fh(comply)d Fk(\034eld)j(indicates)f(the)h(degree)e(of)i(standard)e
(compliance)h(and)g(should)0 1755 y(also)32 b(b)r(e)h(0.)53
b(The)33 b Fh(dindex)d Fk(\034eld)k(reserv)n(es)c(the)k(sp)r(eci\034ed)
f(n)n(um)n(b)r(er)f(of)h(b)n(ytes)g(at)g(the)g(start)f(of)h(common)g
(memory)-7 b(.)52 b(The)0 1868 y Fh(vspec8)35 b Fk(and)j
Fh(vspec9)d Fk(\034elds)j(ma)n(y)f(con)n(tain)g(v)n(endor-sp)r
(eci\034c)g(information.)67 b(The)37 b Fh(nhdr)g Fk(\034eld)h(giv)n(es)
e(the)j(n)n(um)n(b)r(er)e(of)0 1982 y(copies)26 b(of)h(the)g(CIS)h
(that)f(are)f(presen)n(t)g(on)h(this)g(card.)36 b(The)27
b Fh(str)e Fk(arra)n(y)g(con)n(tains)h(t)n(w)n(o)g(strings:)36
b(a)26 b(v)n(endor)g(name,)h(and)f(an)0 2095 y(informational)e(message)
f(describing)h(the)h(card.)35 b(The)25 b(o\033set)f(of)h(the)g(v)n
(endor)f(string)g(is)g(giv)n(en)g(b)n(y)h Fh(vendor)p
Fk(,)d(and)j(the)g(o\033set)0 2209 y(of)j(the)f(pro)r(duct)h(info)g
(string)f(is)g(in)h Fh(info)p Fk(.)0 2481 y Ff(4.1.16)93
b(CISTPL_OR)m(G)0 2692 y Fk(The)28 b Fh(cistpl_org_t)22
b Fk(structure)27 b(is)h(giv)n(en)e(b)n(y:)208 2905 y
Fd(typedef)40 b(struct)h(cistpl_org_t)h({)521 3009 y(u_char)394
b(data_org;)521 3113 y(char)472 b(desc[30];)0 3336 y
Fk(This)38 b(tuple)h(describ)r(es)f(the)g(data)g(organization)e(of)i(a)
g(memory)g(partition.)68 b(The)39 b(follo)n(wing)e(v)-5
b(alues)38 b(are)f(de\034ned)i(for)0 3450 y Fh(data_org)p
Fk(:)0 3689 y Fh(CISTPL_ORG_FS)208 3836 y Fk(The)27 b(partition)g(con)n
(tains)g(a)g(\034lesystem.)0 4016 y Fh(CISTPL_ORG_APPSP)o(EC)208
4163 y Fk(The)g(partition)g(is)h(in)g(an)f(application)g(sp)r(eci\034c)
g(format.)0 4343 y Fh(CISTPL_ORG_XIP)208 4489 y Fk(The)g(partition)g
(follo)n(ws)g(the)h(Execute-In-Place)f(sp)r(eci\034cation.)0
4729 y(The)h Fh(desc)e Fk(\034eld)h(giv)n(es)g(a)g(text)h(description)f
(of)g(the)h(data)f(organization.)0 5002 y Ff(4.1.17)93
b(CISTPL_F)m(ORMA)-8 b(T)0 5212 y Fk(The)28 b Fh(cistpl_format_t)21
b Fk(structure)27 b(is)g(giv)n(en)g(b)n(y:)p eop
%%Page: 48 48
48 47 bop 0 -167 3900 5 v 0 -200 a Ff(4.)73 b(Card)33
b(Information)e(Structure)h(De\034nitions)2019 b Fk(48)208
162 y Fd(typedef)40 b(struct)h(cistpl_org_t)h({)521 266
y(u_char)394 b(type;)521 370 y(u_char)g(edc;)521 474
y(u_int)433 b(offset;)521 578 y(u_int)g(length;)0 801
y Fk(This)32 b(tuple)h(describ)r(es)f(the)h(data)f(recording)e(format)i
(for)g(a)g(memory)g(region.)50 b(The)32 b(follo)n(wing)f(v)-5
b(alues)32 b(are)g(de\034ned)h(for)0 915 y Fh(type)p
Fk(:)0 1154 y Fh(CISTPL_FORMAT_DI)o(SK)208 1301 y Fk(The)27
b(partition)g(uses)g(a)h(disk-lik)n(e)e(format.)0 1481
y Fh(CISTPL_FORMAT_ME)o(M)208 1628 y Fk(The)h(partition)g(uses)g(a)h
(memory-lik)n(e)d(format.)0 1867 y(The)j(follo)n(wing)e(v)-5
b(alues)27 b(are)g(de\034ned)h(for)f Fh(edc)p Fk(:)0
2107 y Fh(CISTPL_EDC_NONE)208 2253 y Fk(No)g(error)f(detection)h(co)r
(de)h(is)f(used.)0 2433 y Fh(CISTPL_EDC_CKSUM)208 2580
y Fk(Eac)n(h)g(blo)r(c)n(k)g(has)g(a)g(one-b)n(yte)g(arithmetic)g(c)n
(hec)n(ksum.)0 2760 y Fh(CISTPL_EDC_CRC)208 2907 y Fk(Eac)n(h)g(blo)r
(c)n(k)g(has)g(a)g(t)n(w)n(o-b)n(yte)f(cyclic)i(redundancy)e(c)n(hec)n
(k.)0 3087 y Fh(CISTPL_EDC_PCC)208 3234 y Fk(The)h(en)n(tire)g
(partition)g(has)g(a)h(one-b)n(yte)e(c)n(hec)n(ksum.)0
3473 y(The)j Fh(offset)d Fk(\034eld)j(sp)r(eci\034es)g(the)g(address)f
(of)h(the)g(\034rst)f(data)h(b)n(yte,)g(and)f Fh(length)f
Fk(sp)r(eci\034es)i(the)g(total)f(n)n(um)n(b)r(er)h(of)g(data)0
3587 y(b)n(ytes)e(in)h(this)g(partition.)0 3878 y Fe(4.2)112
b(CIS)37 b(con\034guration)h(register)e(de\034nitions)0
4088 y Fk(The)29 b(PC)h(Card)e(standard)g(de\034nes)h(a)g(few)g
(standard)f(con\034guration)g(registers)f(lo)r(cated)i(in)g(a)g(card's)
f(attribute)h(memory)0 4202 y(space.)66 b(A)38 b(card's)e
Fh(CONFIG)g Fk(tuple)i(sp)r(eci\034es)f(whic)n(h)h(of)f(these)h
(registers)d(are)i(implemen)n(ted.)67 b(Programs)36 b(using)h(these)0
4316 y(de\034nitions)28 b(should)f(include:)208 4546
y Fd(#include)41 b("cisreg.h")0 4818 y Ff(4.2.1)94 b(Con\034guration)31
b(Option)g(Register)0 5028 y Fk(This)23 b(register)e(should)i(b)r(e)g
(presen)n(t)f(for)h(virtually)f(all)g(IO)h(cards.)34
b(W)-7 b(riting)23 b(to)g(this)g(register)e(selects)i(a)f
(con\034guration)f(table)0 5142 y(en)n(try)27 b(and)g(enables)g(a)g
(card's)g(IO)g(functions.)0 5298 y(The)h(follo)n(wing)e(bit)i(\034elds)
g(are)e(de\034ned:)p eop
%%Page: 49 49
49 48 bop 0 -167 3900 5 v 0 -200 a Ff(4.)73 b(Card)33
b(Information)e(Structure)h(De\034nitions)2019 b Fk(49)0
162 y Fh(COR_CONFIG_MASK)208 307 y Fk(Sp)r(eci\034es)27
b(the)h(con\034guration)e(table)i(index)f(describing)g(the)h(card's)e
(curren)n(t)h(op)r(erating)f(mo)r(de.)0 484 y Fh(COR_LEVEL_REQ)208
629 y Fk(Sp)r(eci\034es)h(that)h(the)g(card)f(should)g(generate)f(lev)n
(el)h(mo)r(de)h(\(edge-triggered\))e(in)n(terrupts,)h(the)h(default.)0
806 y Fh(COR_SOFT_RESET)208 951 y Fk(Setting)34 b(this)h(bit)g(p)r
(erforms)e(a)h(\020soft\021)41 b(reset)33 b(op)r(eration.)56
b(Driv)n(ers)33 b(should)h(use)g(the)h Fh(ResetCard)c
Fk(call)j(to)g(reset)f(a)208 1065 y(card,)26 b(rather)h(than)g(writing)
h(directly)f(to)g(this)h(register.)0 1336 y Ff(4.2.2)94
b(Card)32 b(Con\034guration)g(and)g(Status)g(Register)0
1546 y Fk(The)c(follo)n(wing)e(bit)i(\034elds)g(are)e(de\034ned:)0
1762 y Fh(CCSR_INTR_ACK)208 1908 y Fk(If)i(this)f(bit)i(is)e(set,)h
(then)g(the)g Fh(CCSR_INTR_PENDI)o(NG)21 b Fk(bit)28
b(will)g(remain)f(set)g(un)n(til)h(it)g(is)g(explicitly)g(cleared.)0
2084 y Fh(CCSR_INTR_PENDIN)o(G)208 2230 y Fk(Signals)40
b(that)i(the)g(card)e(is)i(curren)n(tly)e(asserting)g(an)h(in)n
(terrupt)g(request.)78 b(This)41 b(signal)g(ma)n(y)g(b)r(e)g(helpful)i
(for)208 2343 y(supp)r(orting)27 b(in)n(terrupt)g(sharing.)0
2520 y Fh(CCSR_POWER_DOWN)208 2665 y Fk(Setting)g(this)h(bit)g(signals)
f(that)h(the)g(card)e(should)i(en)n(ter)f(a)g(p)r(o)n(w)n(er)f(do)n(wn)
h(state.)0 2842 y Fh(CCSR_AUDIO_ENA)208 2987 y Fk(Sp)r(eci\034es)g
(that)h(the)g(card's)f(audio)g(output)h(should)f(b)r(e)h(enabled.)0
3164 y Fh(CCSR_IOIS8)208 3309 y Fk(This)20 b(is)h(used)g(b)n(y)f(the)i
(host)e(to)h(indicate)g(that)g(it)g(can)g(only)f(p)r(erform)g(8-bit)h
(IO)f(op)r(erations)g(and)h(that)g(16-bit)f(accesses)208
3423 y(will)27 b(b)r(e)h(carried)e(out)i(as)f(t)n(w)n(o)g(8-bit)g
(accesses.)0 3600 y Fh(CCSR_SIGCHG_ENA)208 3745 y Fk(This)j(indicates)g
(to)g(the)h(card)e(that)i(it)g(should)f(use)g(the)g Fh(SIGCHG)e
Fk(signal)i(to)g(indicate)g(c)n(hanges)f(in)i(the)f Fh(WP)p
Fk(,)g Fh(READY)p Fk(,)208 3858 y Fh(BVD1)p Fk(,)c(and)h
Fh(BVD2)f Fk(signals.)0 4035 y Fh(CCSR_CHANGED)208 4180
y Fk(This)f(bit)h(signals)f(to)g(the)h(host)g(that)g(one)f(of)h(the)g
(signals)e(in)i(the)g(Pin)h(Replacemen)n(t)e(Register)g(has)g(c)n
(hanged)f(state.)0 4452 y Ff(4.2.3)94 b(Pin)31 b(Replacemen)m(t)f
(Register)0 4662 y Fk(Signals)f(in)h(this)h(register)d(replace)h
(signals)g(that)h(are)f(not)h(a)n(v)-5 b(ailable)28 b(when)i(a)g(so)r
(c)n(k)n(et)f(is)h(op)r(erating)e(in)j(memory)e(and)g(IO)0
4775 y(mo)r(de.)41 b(An)30 b(IO)e(card)g(will)i(normally)d(assert)h
(the)i Fh(SIGCHG)c Fk(signal)i(to)h(indicate)g(that)g(one)g(of)g(these)
g(signals)f(has)g(c)n(hanged)0 4889 y(state,)f(then)h(a)g(driv)n(er)e
(can)h(p)r(oll)h(this)g(register)e(to)h(\034nd)h(out)g(sp)r
(eci\034cally)f(what)g(happ)r(ened.)0 5045 y(The)h(follo)n(wing)e(bit)i
(\034elds)g(are)e(de\034ned:)0 5262 y Fh(PRR_WP_STATUS)208
5407 y Fk(The)h(curren)n(t)g(state)g(of)h(the)g(write)f(protect)g
(signal.)p eop
%%Page: 50 50
50 49 bop 0 -167 3900 5 v 0 -200 a Ff(4.)73 b(Card)33
b(Information)e(Structure)h(De\034nitions)2019 b Fk(50)0
162 y Fh(PRR_READY_STATUS)208 307 y Fk(The)27 b(curren)n(t)g(state)g
(of)h(the)g(ready)e(signal.)0 483 y Fh(PRR_BVD2_STATUS)208
628 y Fk(The)h(curren)n(t)g(state)g(of)h(the)g(battery)f(w)n(arn)f
(signal.)0 804 y Fh(PRR_BVD1_STATUS)208 949 y Fk(The)h(curren)n(t)g
(state)g(of)h(the)g(battery)f(dead)g(signal.)0 1126 y
Fh(PRR_WP_EVENT)208 1271 y Fk(Indicates)g(that)h(the)g(write)f(protect)
g(signal)g(has)g(c)n(hanged)f(state)i(since)f(the)h(PRR)g(register)e(w)
n(as)h(last)g(read.)0 1447 y Fh(PRR_READY_EVENT)208 1592
y Fk(Indicates)g(that)h(the)g(ready)e(signal)h(has)g(c)n(hanged)f
(state)i(since)f(the)h(PRR)g(register)e(w)n(as)h(last)g(read.)0
1769 y Fh(PRR_BVD2_EVENT)208 1914 y Fk(Indicates)g(that)h(the)g
(battery)f(w)n(arn)f(signal)h(has)g(c)n(hanged)f(state)i(since)f(the)h
(PRR)g(register)e(w)n(as)h(last)g(read.)0 2090 y Fh(PRR_BVD1_EVENT)208
2235 y Fk(Indicates)g(that)h(the)g(battery)f(dead)g(signal)g(has)g(c)n
(hanged)f(state)h(since)h(the)g(PRR)g(register)e(w)n(as)h(last)g(read.)
0 2451 y(This)33 b(register)f(can)g(also)g(b)r(e)i(written.)54
b(In)33 b(this)h(case,)f(the)h Fh(STATUS)c Fk(bits)k(act)f(as)f(a)h
(mask;)i(if)f(a)f Fh(STATUS)d Fk(bit)k(is)f(set,)i(the)0
2564 y(corresp)r(onding)26 b Fh(EVENT)f Fk(bit)j(is)g(up)r(dated)g(b)n
(y)f(the)h(write.)0 2835 y Ff(4.2.4)94 b(So)s(c)m(k)m(et)32
b(and)h(Cop)m(y)f(Register)0 3045 y Fk(This)i(register)f(is)h(used)g
(when)g(sev)n(eral)f(iden)n(tical)g(cards)g(ma)n(y)h(b)r(e)g(set)h(up)f
(to)g(share)f(the)i(same)e(range)g(of)h(IO)g(p)r(orts,)h(to)0
3159 y(em)n(ulate)22 b(an)g(ISA)h(bus)g(card)f(that)g(w)n(ould)g(con)n
(trol)g(sev)n(eral)e(devices.)35 b(F)-7 b(or)22 b(example,)h(an)f(ISA)h
(hard)f(driv)n(e)g(con)n(troller)e(migh)n(t)0 3273 y(con)n(trol)j(sev)n
(eral)f(driv)n(es,)i(selectable)g(b)n(y)g(writing)g(a)g(driv)n(e)g(n)n
(um)n(b)r(er)g(to)g(an)g(IO)g(p)r(ort.)35 b(F)-7 b(or)24
b(sev)n(eral)f(card)g(driv)n(es)g(to)h(em)n(ulate)0 3386
y(this)29 b(con)n(troller)e(in)n(terface,)h(eac)n(h)g(needs)h(to)g
(\020kno)n(w\021)34 b(whic)n(h)29 b(driv)n(e)f(it)h(is,)g(so)f(that)h
(it)h(can)e(iden)n(tify)h(whic)n(h)g(IO)f(op)r(erations)0
3500 y(are)f(in)n(tended)g(for)h(it.)0 3656 y(The)g(follo)n(wing)e(bit)
i(\034elds)g(are)e(de\034ned:)0 3872 y Fh(SCR_SOCKET_NUM)208
4017 y Fk(This)h(should)g(indicate)h(the)g(so)r(c)n(k)n(et)e(n)n(um)n
(b)r(er)i(in)f(whic)n(h)h(the)g(card)f(is)g(lo)r(cated.)0
4193 y Fh(SCR_COPY_NUM)208 4338 y Fk(If)20 b(sev)n(eral)f(iden)n(tical)
h(cards)g(are)f(installed)i(in)g(a)f(system,)h(this)g(\034eld)g(should)
f(b)r(e)h(set)g(to)f(a)g(unique)h(n)n(um)n(b)r(er)f(iden)n(tifying)208
4452 y(whic)n(h)27 b(of)h(the)g(iden)n(tical)f(cards)f(this)i(is.)0
4723 y Ff(4.2.5)94 b(Extended)31 b(Status)h(Register)0
4933 y Fk(The)c(follo)n(wing)e(bit)i(\034elds)g(are)e(de\034ned:)0
5149 y Fh(ESR_REQ_ATTN_ENA)208 5294 y Fk(When)k(set,)g(the)g
Fh(CCSR_CHANGED)24 b Fk(bit)31 b(will)e(b)r(e)h(set)g(when)g(the)g
Fh(ESR_REQ_ATTN)24 b Fk(bit)31 b(is)e(set,)h(p)r(ossibly)f(generating)f
(a)208 5407 y(status)f(c)n(hange)f(in)n(terrupt.)p eop
%%Page: 51 51
51 50 bop 0 -167 3900 5 v 0 -200 a Ff(5.)73 b(Card)33
b(Services)f(Ev)m(en)m(t)g(Handling)2405 b Fk(51)0 162
y Fh(ESR_REQ_ATTN)208 303 y Fk(Signals)26 b(a)h(card)g(ev)n(en)n(t,)g
(suc)n(h)g(as)g(an)h(incoming)f(call)g(for)g(a)g(mo)r(dem.)0
571 y Ff(4.2.6)94 b(IO)31 b(Base)h(and)g(Size)g(Registers)0
781 y Fk(F)-7 b(or)18 b(m)n(ultifunction)h(cards,)g(these)g(registers)e
(are)g(used)i(to)f(tell)h(the)g(card)e(ho)n(w)h(the)h(host)f(IO)g
(windo)n(ws)g(ha)n(v)n(e)f(b)r(een)i(con\034gured)0 895
y(for)29 b(eac)n(h)g(card)g(function.)45 b(There)29 b(are)g(four)g(IO)h
(Base)f(registers,)f(from)i Fh(CISREG_IOBASE_0)24 b Fk(to)29
b Fh(CISREG_IOBASE_3)p Fk(,)c(for)0 1009 y(the)j(lo)n(w-order)e
(through)h(high-order)f(b)n(ytes)h(of)h(an)g(IO)f(address)g(up)h(to)g
(32)f(bits)h(long.)37 b(The)28 b Fh(CISREG_IOSIZE)23
b Fk(register)j(is)0 1122 y(supp)r(osed)32 b(to)g(b)r(e)g(written)h(as)
e(the)i(n)n(um)n(b)r(er)f(of)g(IO)f(p)r(orts)h(allo)r(cated,)h(min)n
(us)f(one.)50 b(F)-7 b(or)32 b(MF)n(C-complian)n(t)f(cards,)h(Card)0
1236 y(Services)27 b(will)g(automatically)g(set)g(all)h(of)f(these)h
(registers)d(when)j Fh(RequestConfigura)o(tio)o(n)21
b Fk(is)28 b(called.)0 1570 y Fg(5)131 b(Card)44 b(Services)h(Ev)l(en)l
(t)g(Handling)0 1808 y Fk(Card)27 b(Services)f(ev)n(en)n(ts)h(ha)n(v)n
(e)f(sev)n(eral)g(sources:)125 2021 y Fb(\017)41 b Fk(Card)26
b(status)i(c)n(hanges)e(rep)r(orted)g(b)n(y)i(the)g(lo)n(w-lev)n(el)e
(so)r(c)n(k)n(et)g(driv)n(ers.)125 2191 y Fb(\017)41
b Fk(Arti\034cial)27 b(ev)n(en)n(ts)g(generated)f(b)n(y)h(Card)g
(Services)g(itself.)125 2360 y Fb(\017)41 b Fk(A)n(dv)-5
b(anced)27 b(P)n(o)n(w)n(er)f(Managemen)n(t)g(\(APM\))k(ev)n(en)n(ts.)
125 2530 y Fb(\017)41 b Fk(Ev)n(en)n(ts)27 b(generated)f(b)n(y)i(other)
f(Card)f(Services)h(clien)n(ts.)0 2743 y(So)r(c)n(k)n(et)g(driv)n(er)f
(ev)n(en)n(ts)h(ma)n(y)g(b)r(e)h(either)f(in)n(terrupt-driv)n(en)f(or)h
(p)r(olled.)0 3030 y Fe(5.1)112 b(Ev)m(en)m(t)37 b(handler)h(op)s
(erations)0 3240 y Fk(When)j(Card)e(Services)h(recognizes)e(that)j(an)f
(ev)n(en)n(t)g(has)g(o)r(ccurred,)i(it)f(c)n(hec)n(ks)e(the)i(ev)n(en)n
(t)f(mask)g(of)g(eac)n(h)g(clien)n(t)g(to)0 3354 y(determine)29
b(whic)n(h)g(clien)n(ts)f(should)h(receiv)n(e)f(an)g(ev)n(en)n(t)h
(noti\034cation.)40 b(When)29 b(a)g(clien)n(t)g(registers)e(with)i
(Card)f(Services,)h(it)0 3468 y(sp)r(eci\034es)e(an)h(ev)n(en)n(t)f
(handler)g(callbac)n(k)f(function.)37 b(This)28 b(handler)f(should)g
(ha)n(v)n(e)f(the)i(form:)208 3671 y Fd(int)39 b
(\(*event_handler\)\(event_t)45 b(event,)40 b(int)g(priority,)h
(event_callback_args_t)j(*args\);)0 3885 y Fk(The)36
b Fh(priority)d Fk(parameter)h(is)i(set)g(to)f(either)h
Fh(CS_EVENT_PRI_LOW)29 b Fk(for)36 b(ordinary)e(ev)n(en)n(ts,)j(or)e
Fh(CS_EVENT_PRI_HIG)o(H)0 3998 y Fk(for)e(ev)n(en)n(ts)g(that)i
(require)d(an)i(immediate)g(resp)r(onse.)55 b(The)34
b(only)f(high)h(priorit)n(y)f(ev)n(en)n(t)g(is)h Fh(CS_EVENT_CARD_R)o
(EMO)o(VA)o(L)p Fk(.)0 4112 y(A)c(clien)n(t)f(ev)n(en)n(t)g(handler)f
(should)h(pro)r(cess)f(this)i(ev)n(en)n(t)e(as)h(e\036cien)n(tly)g(as)g
(p)r(ossible)f(so)h(that)g(Card)g(Services)f(can)h(quic)n(kly)0
4225 y(notify)f(other)f(clien)n(ts.)0 4382 y(The)h Fh(event_callback_)o
(ar)o(gs_)o(t)21 b Fk(structure)27 b(is)h(giv)n(en)f(b)n(y:)208
4574 y Fd(typedef)40 b(struct)h(event_callback_args_t)j({)521
4678 y(client_handle_t)357 b(client_handle;)521 4783
y(void)786 b(*info;)521 4887 y(void)g(*mtdrequest;)521
4991 y(void)g(*buffer;)521 5095 y(void)g(*misc;)521 5199
y(void)g(*client_data;)521 5303 y(struct)41 b(bus_operations)121
b(*bus;)208 5407 y(})39 b(event_callback_args_t;)p eop
%%Page: 52 52
52 51 bop 0 -167 3900 5 v 0 -200 a Ff(5.)73 b(Card)33
b(Services)f(Ev)m(en)m(t)g(Handling)2405 b Fk(52)0 162
y(The)31 b Fh(client_handle)26 b Fk(mem)n(b)r(er)32 b(is)f(set)g(to)h
(the)f(handle)h(of)f(the)h(clien)n(t)f(whose)g(so)r(c)n(k)n(et)f(w)n
(as)g(resp)r(onsible)h(for)g(the)h(ev)n(en)n(t.)0 275
y(This)c(is)f(useful)i(if)f(a)f(driv)n(er)g(is)h(b)r(ound)g(to)f(sev)n
(eral)f(so)r(c)n(k)n(ets.)37 b(The)28 b Fh(info)e Fk(\034eld)i(is)g
(curren)n(tly)e(only)i(used)f(to)h(return)f(an)h(exit)0
389 y(status)j(from)f(a)h(call)f(to)h Fh(ResetCard)p
Fk(.)43 b(The)31 b Fh(client_data)26 b Fk(\034eld)31
b(ma)n(y)g(b)r(e)g(used)g(b)n(y)f(a)h(driv)n(er)e(to)i(p)r(oin)n(t)g
(to)g(a)f(lo)r(cal)h(data)0 502 y(structure)c(asso)r(ciated)f(with)i
(this)g(device.)37 b(The)27 b(remaining)g(\034elds)g(are)g(curren)n
(tly)g(un)n(used.)0 659 y(F)-7 b(or)26 b(so)r(c)n(k)n(ets)g(that)h(do)g
(not)g(directly)g(map)f(cards)g(in)n(to)h(the)g(host)g(IO)g(and)f
(memory)g(space,)h(the)g Fh(bus)f Fk(\034eld)h(is)g(a)g(p)r(oin)n(ter)f
(to)0 772 y(a)h(table)h(of)f(en)n(try)g(p)r(oin)n(ts)h(for)f(IO)g
(primitiv)n(es)g(for)g(this)h(so)r(c)n(k)n(et.)0 1064
y Fe(5.2)112 b(Ev)m(en)m(t)37 b(descriptions)0 1264 y
Fh(CS_EVENT_CARD_IN)o(SE)o(RTI)o(ON)208 1411 y Fk(This)30
b(ev)n(en)n(t)g(signals)g(that)h(a)f(card)g(has)g(b)r(een)h(inserted.)
45 b(If)32 b(a)e(driv)n(er)f(is)i(b)r(ound)g(to)f(an)g(already)g(o)r
(ccupied)g(so)r(c)n(k)n(et,)208 1525 y(Card)c(Services)h(will)h(send)f
(the)h(driv)n(er)e(an)i(arti\034cial)e(insertion)h(ev)n(en)n(t.)0
1705 y Fh(CS_EVENT_CARD_RE)o(MO)o(VAL)208 1852 y Fk(This)i(ev)n(en)n(t)
f(signals)g(that)i(a)e(card)g(has)h(b)r(een)h(remo)n(v)n(ed.)39
b(This)30 b(ev)n(en)n(t)e(should)h(b)r(e)g(handled)h(with)f(minim)n(um)
h(dela)n(y)208 1965 y(so)c(that)i(Card)f(Services)g(can)g(notify)h(all)
f(clien)n(ts)g(as)g(quic)n(kly)g(as)g(p)r(ossible.)0
2145 y Fh(CS_EVENT_BATTERY)o(_L)o(OW)208 2292 y Fk(This)g(ev)n(en)n(t)g
(signals)f(a)i(c)n(hange)e(of)i(state)f(of)g(the)h(\020battery)f(lo)n
(w\021)34 b(signal.)0 2472 y Fh(CS_EVENT_BATTERY)o(_D)o(EAD)208
2619 y Fk(This)27 b(ev)n(en)n(t)g(signals)f(a)i(c)n(hange)e(of)i(state)
f(of)g(the)h(\020battery)f(dead\021)34 b(signal.)0 2799
y Fh(CS_EVENT_READY_C)o(HA)o(NGE)208 2945 y Fk(This)27
b(ev)n(en)n(t)g(signals)f(a)i(c)n(hange)e(of)i(state)f(of)g(the)h
(\020ready\021)33 b(signal.)0 3125 y Fh(CS_EVENT_WRITE_P)o(RO)o(TEC)o
(T)208 3272 y Fk(This)27 b(ev)n(en)n(t)g(signals)f(a)i(c)n(hange)e(of)i
(state)f(of)g(the)h(\020write)f(protect\021)34 b(signal.)0
3452 y Fh(CS_EVENT_REGISTR)o(AT)o(ION)o(_C)o(OM)o(PLE)o(TE)208
3599 y Fk(This)27 b(ev)n(en)n(t)g(is)h(sen)n(t)f(to)g(a)h(driv)n(er)e
(after)h(a)g(successful)g(call)h(to)f Fh(RegisterClient)p
Fk(.)0 3779 y Fh(CS_EVENT_RESET_R)o(EQ)o(UES)o(T)208
3926 y Fk(This)32 b(ev)n(en)n(t)g(is)g(sen)n(t)g(when)h(a)f(clien)n(t)h
(calls)e Fh(ResetCard)p Fk(.)48 b(An)33 b(ev)n(en)n(t)f(handler)g(can)g
(v)n(eto)f(the)i(reset)f(op)r(eration)f(b)n(y)208 4039
y(returning)26 b(failure.)0 4219 y Fh(CS_EVENT_RESET_P)o(HY)o(SIC)o(AL)
208 4366 y Fk(This)h(is)h(sen)n(t)f(to)g(all)h(clien)n(ts)f(just)h(b)r
(efore)f(a)h(reset)f(signal)f(is)i(sen)n(t)f(to)g(a)h(card.)0
4546 y Fh(CS_EVENT_CARD_RE)o(SE)o(T)208 4693 y Fk(This)37
b(ev)n(en)n(t)f(signals)g(that)h(a)g(reset)f(op)r(eration)g(is)h
(\034nished.)65 b(The)37 b(success)f(or)h(failure)f(of)h(the)h(reset)e
(should)h(b)r(e)208 4806 y(determined)27 b(using)g Fh(GetStatus)p
Fk(.)0 4986 y Fh(CS_EVENT_RESET_C)o(OM)o(PLE)o(TE)208
5133 y Fk(This)g(ev)n(en)n(t)g(is)h(sen)n(t)f(to)g(a)h(clien)n(t)f
(that)h(has)f(called)g Fh(ResetCard)d Fk(to)k(signal)e(the)i(end)g(of)f
(reset)g(pro)r(cessing.)p eop
%%Page: 53 53
53 52 bop 0 -167 3900 5 v 0 -200 a Ff(6.)73 b(Memory)31
b(T)-8 b(ec)m(hnology)32 b(Driv)m(ers)2478 b Fk(53)0
162 y Fh(CS_EVENT_PM_SUSP)o(EN)o(D)208 308 y Fk(This)25
b(ev)n(en)n(t)f(signals)g(that)h(Card)g(Services)f(has)g(receiv)n(ed)g
(either)h(a)g(user)f(initiated)i(or)e(APM)i(susp)r(end)f(request.)36
b(An)208 422 y(ev)n(en)n(t)27 b(handler)g(can)g(v)n(eto)g(the)h(susp)r
(end)f(b)n(y)h(returning)e(failure.)0 602 y Fh(CS_EVENT_PM_RESU)o(ME)
208 749 y Fk(This)h(signals)f(that)i(the)g(system)g(is)f(bac)n(k)g(on)g
(line)h(after)f(a)g(susp)r(end/resume)g(cycle.)0 929
y Fh(CS_EVENT_MTD_REQ)o(UE)o(ST)208 1076 y Fk(This)36
b(is)h(used)g(to)f(initiate)i(an)e(MTD)h(memory)f(op)r(eration.)64
b(A)37 b(description)f(of)h(the)g(request)f(is)h(passed)f(in)h(the)208
1189 y Fh(mtdrequest)23 b Fk(\034eld)28 b(of)f(the)h(callbac)n(k)e
(argumen)n(ts.)36 b(A)28 b(host)f(bu\033er)h(address)e(ma)n(y)h(b)r(e)h
(passed)f(in)h Fh(buffer)p Fk(.)0 1369 y Fh(CS_EVENT_ERASE_C)o(OM)o
(PLE)o(TE)208 1516 y Fk(This)33 b(is)g(used)g(to)g(signal)f(a)g(clien)n
(t)h(that)h(a)e(queued)i(erase)d(op)r(eration)h(has)h(completed.)53
b(A)33 b(p)r(oin)n(ter)g(to)g(the)g(erase)208 1630 y(queue)27
b(en)n(try)g(is)g(returned)h(in)f(the)h Fh(info)e Fk(\034eld)i(of)g
(the)g(callbac)n(k)e(argumen)n(ts.)0 1921 y Fe(5.3)112
b(Clien)m(t)36 b(driv)m(er)g(ev)m(en)m(t)h(handling)g(resp)s
(onsibilities)0 2131 y Fk(A)29 b(clien)n(t)h(driv)n(er)d(should)i(resp)
r(ond)f(to)h Fh(CS_EVENT_CARD_INS)o(ER)o(TI)o(ON)23 b
Fk(and)29 b Fh(CS_EVENT_CARD_R)o(EM)o(OVA)o(L)23 b Fk(ev)n(en)n(ts)28
b(b)n(y)h(con-)0 2245 y(\034guring)35 b(and)h(un-con\034guring)f(the)i
(so)r(c)n(k)n(et.)62 b(Because)35 b(card)g(remo)n(v)-5
b(al)35 b(is)i(a)f(high)g(priorit)n(y)f(ev)n(en)n(t,)j(the)e(driv)n(er)
f(should)0 2358 y(immediately)30 b(blo)r(c)n(k)g(IO)g(to)g(the)h(so)r
(c)n(k)n(et,)f(p)r(erhaps)g(b)n(y)g(setting)g(a)g(\035ag)g(in)g(a)g
(device)g(structure,)h(and)f(sc)n(hedule)g(all)g(other)0
2472 y(sh)n(utdo)n(wn)d(pro)r(cessing)f(to)h(happ)r(en)h(later)f(using)
g(a)h(timer)f(in)n(terrupt.)0 2628 y(When)d(a)f Fh(CS_EVENT_PM_RESE)o
(T_)o(REQ)o(UE)o(ST)17 b Fk(ev)n(en)n(t)23 b(is)g(receiv)n(ed,)h(a)f
(driv)n(er)f(should)h(blo)r(c)n(k)g(IO)g(and)h(release)e(a)h(lo)r(c)n
(k)n(ed)f(so)r(c)n(k)n(et)0 2742 y(con\034guration.)48
b(When)32 b(a)f Fh(CS_EVENT_CARD_RES)o(ET)25 b Fk(is)32
b(receiv)n(ed,)g(a)f(driv)n(er)f(should)i(restore)e(the)i(so)r(c)n(k)n
(et)f(con\034guration)0 2855 y(and)c(un)n(blo)r(c)n(k)g(IO.)0
3012 y(A)i Fh(CS_EVENT_PM_SUS)o(PE)o(ND)22 b Fk(ev)n(en)n(t)28
b(should)g(b)r(e)g(handled)h(somewhat)e(lik)n(e)h(a)g
Fh(CS_EVENT_PM_RESE)o(T_)o(REQ)o(UE)o(ST)22 b Fk(ev)n(en)n(t,)28
b(in)0 3126 y(that)j(IO)f(should)g(b)r(e)h(blo)r(c)n(k)n(ed)f(and)g
(the)h(so)r(c)n(k)n(et)e(con\034guration)g(should)h(b)r(e)h(released.)
45 b(When)31 b(a)f Fh(CS_EVENT_PM_RES)o(UM)o(E)0 3239
y Fk(ev)n(en)n(t)54 b(is)g(receiv)n(ed,)60 b(a)54 b(driv)n(er)f(can)g
(exp)r(ect)i(a)f(card)f(to)h(b)r(e)h(ready)e(to)i(b)r(e)f
(recon\034gured,)59 b(similar)54 b(to)g(when)g(a)0 3353
y Fh(CS_EVENT_CARD_RE)o(SE)o(T)22 b Fk(ev)n(en)n(t)27
b(is)g(receiv)n(ed.)0 3691 y Fg(6)131 b(Memory)44 b(T)-11
b(ec)l(hnology)45 b(Driv)l(ers)0 3930 y Fk(A)30 b(Memory)g(T)-7
b(ec)n(hnology)28 b(Driv)n(er)h(\(\020MTD\021\))i(is)f(used)g(b)n(y)g
(Card)f(Services)g(to)h(implemen)n(t)h(bulk)f(memory)f(services)g(for)g
(a)0 4043 y(particular)e(t)n(yp)r(e)i(of)g(memory)f(device.)40
b(An)29 b(MTD)h(should)e(register)f(as)i(a)f(normal)g(Card)g(Services)f
(clien)n(t)i(with)g(a)g(call)f(to)0 4157 y Fh(RegisterClient)p
Fk(.)g(When)21 b(it)f(receiv)n(es)e(a)i(card)f(insertion)g(ev)n(en)n
(t,)i(it)f(should)g(use)g Fh(GetFirstRegion)14 b Fk(and)20
b Fh(GetNextRegion)0 4270 y Fk(to)25 b(iden)n(tify)g(memory)f(regions)f
(that)i(it)g(will)g(administer.)35 b(Then,)26 b(it)f(should)g(use)f
Fh(RegisterMTD)c Fk(to)25 b(tak)n(e)f(con)n(trol)f(of)i(these)0
4384 y(regions.)57 b(MTD)35 b(read,)h(write,)h(cop)n(y)-7
b(,)35 b(and)g(erase)e(requests)h(are)g(pac)n(k)-5 b(aged)33
b(in)n(to)i Fh(CS_EVENT_MTD_REQ)o(UE)o(ST)28 b Fk(ev)n(en)n(ts)34
b(b)n(y)0 4498 y(Card)27 b(Services,)f(and)i(passed)f(to)g(the)h(MTD's)
g(ev)n(en)n(t)f(handler)g(for)g(pro)r(cessing.)0 4789
y Fe(6.1)112 b(MTD)38 b(request)f(handling)0 4999 y Fk(An)26
b(MTD)h(receiv)n(es)e(requests)g(from)g(Card)g(Services)g(in)i(the)f
(form)g(of)g Fh(CS_EVENT_MTD_RE)o(QUE)o(ST)19 b Fk(ev)n(en)n(ts.)36
b(Card)25 b(Services)0 5113 y(passes)32 b(a)g(description)g(of)g(the)i
(request)e(in)g(the)i Fh(mtdrequest)28 b Fk(\034eld)33
b(of)g(the)g(ev)n(en)n(t)f(callbac)n(k)f(argumen)n(ts.)51
b(F)-7 b(or)32 b(requests)0 5226 y(that)c(transfer)e(data)h(to)h(or)f
(from)g(the)h(host,)f(the)h(host)f(bu\033er)h(address)e(is)i(passed)f
(in)g(the)h Fh(buffer)d Fk(\034eld.)0 5383 y(The)j Fh(mtd_request_t)22
b Fk(structure)27 b(is)g(giv)n(en)g(b)n(y:)p eop
%%Page: 54 54
54 53 bop 0 -167 3900 5 v 0 -200 a Ff(6.)73 b(Memory)31
b(T)-8 b(ec)m(hnology)32 b(Driv)m(ers)2478 b Fk(54)208
162 y Fd(typedef)40 b(struct)h(mtd_request_t)h({)521
266 y(u_int)433 b(SrcCardOffset;)521 370 y(u_int)g(DestCardOffset;)521
474 y(u_int)g(TransferLength;)521 578 y(u_int)g(Function;)521
682 y(u_long)394 b(MediaID;)521 786 y(u_int)433 b(Status;)521
890 y(u_int)g(Timeout;)208 995 y(})39 b(mtd_request_t;)0
1210 y Fk(The)28 b Fh(Function)c Fk(\034eld)k(is)f(bit)h(mapp)r(ed)g
(and)g(describ)r(es)e(the)i(action)f(to)h(b)r(e)g(p)r(erformed)f(b)n(y)
g(this)h(request:)0 1425 y Fh(MTD_REQ_ACTION)208 1569
y Fk(Either)g Fh(MTD_REQ_ERASE)p Fk(,)22 b Fh(MTD_REQ_READ)p
Fk(,)g Fh(MTD_REQ_WRITE)p Fk(,)h(or)j Fh(MTD_REQ_COPY)p
Fk(.)0 1745 y Fh(MTD_REQ_NOERASE)208 1890 y Fk(F)-7 b(or)28
b(a)g(write)h(command)f(that)i(is)e(sized)h(and)g(aligned)f(on)h(erase)
e(blo)r(c)n(k)h(b)r(oundaries,)h(this)g(sp)r(eci\034es)g(that)g(no)f
(erase)208 2004 y(should)f(b)r(e)h(p)r(erformed.)0 2180
y Fh(MTD_REQ_VERIFY)208 2325 y Fk(Sp)r(eci\034es)f(that)h(writes)f
(should)h(b)r(e)g(v)n(eri\034ed.)0 2501 y Fh(MTD_REQ_READY)208
2646 y Fk(Indicates)i(that)g(this)h(request)f(is)g(a)g(retry)g(of)g(a)g
(previously)f(request)h(that)h(w)n(as)e(dela)n(y)n(ed)g(un)n(til)i(the)
g(card)e(asserted)208 2759 y Fh(READY)p Fk(.)0 2935 y
Fh(MTD_REQ_TIMEOUT)208 3080 y Fk(Indicates)e(that)h(this)f(request)g
(is)h(a)f(retry)g(of)g(a)g(previously)g(request)f(that)i(w)n(as)f(dela)
n(y)n(ed)f(b)n(y)i(a)f(timeout.)0 3256 y Fh(MTD_REQ_FIRST)208
3401 y Fk(Indicates)g(that)h(this)f(request)g(is)h(the)g(\034rst)f(in)h
(a)f(series)g(of)g(requests.)0 3577 y Fh(MTD_REQ_LAST)208
3722 y Fk(Indicates)g(that)h(this)f(request)g(is)h(the)g(last)f(of)h(a)
f(series)f(of)i(requests.)0 3898 y Fh(MTD_REQ_KERNEL)208
4043 y Fk(Indicates)e(that)g(the)h(host)f(bu\033er)h(for)e(a)h(read)g
(or)f(write)i(command)e(is)i(lo)r(cated)f(in)g(k)n(ernel)g(memory)-7
b(,)26 b(as)f(opp)r(osed)h(to)208 4156 y(user)g(memory)-7
b(.)0 4371 y(The)35 b Fh(MediaID)d Fk(\034eld)j(is)g(the)g(v)-5
b(alue)35 b(sp)r(eci\034ed)g(in)g(the)h Fh(RegisterMTD)30
b Fk(request)k(for)h(this)g(region.)58 b(The)35 b Fh(Status)d
Fk(\034eld)j(is)0 4485 y(used)30 b(b)n(y)g(the)g(MTD)h(when)f(it)h(is)f
(unable)g(to)g(satisfy)g(a)f(request)h(b)r(ecause)f(a)h(device)g(is)g
(busy)-7 b(.)44 b(MTD)31 b(requests)e(normally)0 4598
y(run)h(without)h(blo)r(c)n(king.)44 b(If)30 b(an)g(MTD)h(request)f(w)n
(ould)f(blo)r(c)n(k,)i(it)f(should)g(return)g(an)g(error)e(co)r(de)i
(of)h Fh(CS_BUSY)p Fk(,)c(and)j(set)0 4712 y Fh(Status)25
b Fk(to)j(one)f(of)g(the)h(ha)n(v)n(e)f(the)h(follo)n(wing)e(v)-5
b(alues:)0 4942 y Fh(MTD_WAITREQ)208 5086 y Fk(Sp)r(eci\034es)22
b(that)h(the)g(request)f(should)g(b)r(e)h(retried)f(after)g(another)g
(MTD)h(request)f(curren)n(tly)f(in)i(progress)d(completes.)0
5262 y Fh(MTD_WAITTIMER)208 5407 y Fk(Sp)r(eci\034es)27
b(that)h(the)g(request)f(should)g(b)r(e)h(con)n(tin)n(ued)f(after)h
(the)g(time)g(sp)r(eci\034ed)f(in)h(the)g Fh(timeout)d
Fk(\034eld.)p eop
%%Page: 55 55
55 54 bop 0 -167 3900 5 v 0 -200 a Ff(6.)73 b(Memory)31
b(T)-8 b(ec)m(hnology)32 b(Driv)m(ers)2478 b Fk(55)0
162 y Fh(MTD_WAITRDY)208 308 y Fk(Sp)r(eci\034es)24 b(that)h(the)g
(request)f(should)h(b)r(e)g(con)n(tin)n(ued)f(when)h(the)f(card)g
(signals)g Fh(READY)p Fk(,)e(or)i(when)h(the)g(time)g(sp)r(eci\034ed)
208 422 y(in)i Fh(Timeout)e Fk(elapses,)i(whic)n(hev)n(er)f(happ)r(ens)
i(\034rst.)0 602 y Fh(MTD_WAITPOWER)208 749 y Fk(Sp)r(eci\034es)g(that)
g(the)h(request)e(should)h(b)r(e)g(retried)f(after)h(something)g(happ)r
(ens)g(that)g(a\033ects)g(p)r(o)n(w)n(er)f(a)n(v)-5 b(ailabilit)n(y)26
b(to)208 862 y(the)i(so)r(c)n(k)n(et.)0 1102 y(F)-7 b(or)27
b Fh(MTD_WAITTIMER)22 b Fk(and)27 b Fh(MTD_WAITRDY)p
Fk(,)d(the)j Fh(Timeout)e Fk(\034eld)j(will)g(sp)r(ecify)g(the)g
(timeout)g(in)n(terv)-5 b(al)26 b(in)i(milliseconds.)0
1393 y Fe(6.2)112 b(MTD)38 b(help)s(er)f(functions)0
1604 y Fk(Since)31 b(an)f(MTD)h(pro)r(cesses)d(requests)i(generated)f
(b)n(y)h(Card)g(Services,)g(there)g(ma)n(y)g(b)r(e)h(some)e
(restrictions)g(on)h(the)h(sorts)0 1717 y(of)i(Card)f(Services)g(calls)
g(that)h(can)g(b)r(e)g(safely)g(made)f(from)h(the)g(MTD)h(ev)n(en)n(t)e
(handler.)52 b(The)33 b(MTD)h(help)r(er)f(functions)0
1831 y(pro)n(vide)28 b(a)g(limited)h(set)g(of)g(sp)r(ecial)f(services)g
(that)h(ma)n(y)f(b)r(e)h(needed)g(b)n(y)f(an)h(MTD)g(but)h(w)n(ould)e
(b)r(e)h(tric)n(ky)f(to)h(implemen)n(t)0 1944 y(using)f(the)g(normal)f
(Card)h(Services)f(calls.)37 b(In)29 b(the)f(Lin)n(ux)g(implemen)n
(tation,)g(most)g(CS)g(calls)g(can)g(b)r(e)g(safely)g(made)f(from)0
2058 y(an)g(MTD)h(ev)n(en)n(t)f(handler,)g(but)i(the)f(MTD)g(help)r(er)
f(in)n(terface)g(is)h(included)g(for)f(compatibilit)n(y)-7
b(.)208 2288 y Fd(#include)41 b("cs_types.h")208 2392
y(#include)g("cs.h")208 2496 y(#include)g("bulkmem.h")208
2704 y(int)e(MTDHelperEntry\(int)44 b(subfunc,)d(void)f(*arg1,)g(void)g
(*arg2\);)0 2977 y Ff(6.2.1)94 b(MTDRequestWindo)m(w,)30
b(MTDReleaseWindo)m(w)208 3168 y Fd(int)39 b
(MTDHelperEntry\(MTDRequestWin)q(dow,)46 b(client_handle_t)c(*handle,)f
(win_req_t)g(*mod\);)208 3272 y(int)e(MTDHelperEntry\(MTDReleaseWin)q
(dow,)46 b(window_handle_t)c(handle\);)0 3511 y Fk(These)27
b(services)f(are)h(iden)n(tical)g(to)h(the)g(standard)e(Card)h
(Services)g Fh(RequestWindow)22 b Fk(and)27 b Fh(ReleaseWindow)22
b Fk(calls.)0 3784 y Ff(6.2.2)94 b(MTDMo)s(difyWindo)m(w)208
3975 y Fd(int)39 b(MTDHelperEntry\(MTDModifyWind)q(ow,)45
b(memory_handle_t)e(handle,)e(mtd_mod_req_t)h(*mod\);)0
4214 y Fk(The)28 b Fh(mtd_mod_req_t)22 b Fk(structure)27
b(is)g(giv)n(e)g(b)n(y:)208 4428 y Fd(typedef)40 b(struct)h
(mtd_mod_req_t)h({)521 4532 y(u_int)433 b(Attributes;)521
4636 y(u_int)g(AccessSpeed;)521 4740 y(u_int)g(CardOffset;)208
4844 y(})39 b(mtd_mod_req_t;)0 5067 y Fh(MTDModifyWindow)21
b Fk(is)28 b(essen)n(tially)e(equiv)-5 b(alen)n(t)28
b(to)f(using)g(the)h(normal)f Fh(ModifyWindow)22 b Fk(and)28
b Fh(MapMemPage)23 b Fk(calls.)0 5224 y(The)28 b(follo)n(wing)e
(\035ags)h(can)g(b)r(e)h(sp)r(eci\034ed)g(in)f Fh(Attributes)p
Fk(:)p eop
%%Page: 56 56
56 55 bop 0 -167 3900 5 v 0 -200 a Ff(6.)73 b(Memory)31
b(T)-8 b(ec)m(hnology)32 b(Driv)m(ers)2478 b Fk(56)0
162 y Fh(WIN_MEMORY_TYPE)208 306 y Fk(Either)28 b Fh(WIN_MEMORY_TYPE)o
(_C)o(M)22 b Fk(for)27 b(common)g(memory)-7 b(,)26 b(or)h
Fh(WIN_MEMORY_TYPE_)o(AM)21 b Fk(for)27 b(attribute)h(memory)-7
b(.)0 482 y Fh(WIN_USE_WAIT)208 627 y Fk(Sp)r(eci\034es)27
b(that)h(the)g(con)n(troller)e(should)h(observ)n(e)f(the)i(card's)e(MW)
-9 b(AIT)28 b(signal.)0 855 y(A)g(windo)n(w)f(con\034gured)f(with)i
Fh(MTDModifyWindow)22 b Fk(will)28 b(alw)n(a)n(ys)d(b)r(e)j(enabled,)f
(and)h(ha)n(v)n(e)e(a)h(16)g(bit)h(data)f(width.)0 1012
y(Return)h(co)r(des:)0 1226 y Fh(CS_BAD_HANDLE)208 1371
y Fk(The)f(memory)g(handle)g(is)h(in)n(v)-5 b(alid.)0
1641 y Ff(6.2.3)94 b(MTDSetV)-8 b(pp)208 1830 y Fd(int)39
b(MTDHelperEntry\(MTDSetVpp,)45 b(client_handle_t)e(client,)d
(mtd_vpp_req_t)i(*req\);)208 2049 y(typedef)e(struct)h(mtd_vpp_req_t)h
({)521 2153 y(u_char)394 b(Vpp1,)40 b(Vpp2;)208 2258
y(})f(mtd_vpp_req_t;)0 2486 y Fh(MTDSetVpp)25 b Fk(c)n(hanges)j(the)i
(programming)d(v)n(oltage)g(for)i(a)f(so)r(c)n(k)n(et.)41
b Fh(Vpp1)28 b Fk(and)h Fh(Vpp2)e Fk(should)i(b)r(e)h(giv)n(en)e(in)h
(units)h(of)f(1/10)0 2600 y(v)n(olt.)36 b(Curren)n(tly)-7
b(,)27 b Fh(Vpp1)f Fk(should)h(alw)n(a)n(ys)f(equal)h
Fh(Vpp2)p Fk(.)0 2756 y(Return)h(co)r(des:)0 2971 y Fh(CS_BAD_HANDLE)
208 3115 y Fk(The)f(clien)n(t)h(handle)f(is)h(in)n(v)-5
b(alid.)0 3291 y Fh(CS_BAD_VPP)208 3435 y Fk(The)27 b(sp)r(eci\034ed)h
(V)-7 b(pp)28 b(is)g(not)f(a)n(v)-5 b(ailable,)26 b(or)h(V)-7
b(pp1)28 b(do)r(es)f(not)h(equal)f(V)-7 b(pp2.)0 3706
y Ff(6.2.4)94 b(MTDRD)m(YMask)208 3895 y Fd(int)39 b
(MTDHelperEntry\(MTDRDYMask,)45 b(client_handle_t)e(client,)e
(mtd_rdy_req_t)h(*req\);)208 4114 y(typedef)e(struct)h(mtd_rdy_req_t)h
({)521 4218 y(u_int)433 b(Mask;)208 4322 y(})39 b(mtd_rdy_req_t;)0
4551 y Fh(MTDRDYMask)d Fk(selects)k(whether)g(or)g(not)g
Fh(CS_EVENT_READY_C)o(HAN)o(GE)34 b Fk(ev)n(en)n(ts)39
b(will)i(b)r(e)g(enabled.)75 b(The)40 b(clien)n(t)g(should)0
4665 y(already)d(ha)n(v)n(e)g(indicated)i(to)f(Card)g(Services)f(that)i
(it)g(should)f(receiv)n(e)f(ready)g(c)n(hange)h(ev)n(en)n(ts,)i(via)e
(a)g(call)g(to)g(either)0 4778 y Fh(RegisterClient)18
b Fk(or)23 b Fh(SetEventMask)p Fk(.)30 b(Ready)24 b(c)n(hange)e(ev)n
(en)n(ts)h(will)h(b)r(e)h(enabled)e(if)h(the)h Fh(CS_EVENT_READY_)o(CH)
o(ANG)o(E)18 b Fk(bit)0 4892 y(is)27 b(set)h(in)g(the)g
Fh(Mask)e Fk(argumen)n(t.)0 5048 y(Return)i(co)r(des:)0
5263 y Fh(CS_BAD_HANDLE)208 5407 y Fk(The)f(clien)n(t)h(handle)f(is)h
(in)n(v)-5 b(alid.)p eop
%%Page: 57 57
57 56 bop 0 -167 3900 5 v 0 -200 a Ff(7.)73 b(Driv)m(er)33
b(Services)f(In)m(terface)2631 b Fk(57)0 162 y Fg(7)131
b(Driv)l(er)46 b(Services)f(In)l(terface)0 400 y Fk(Driv)n(er)24
b(Services)g(pro)n(vides)g(a)h(link)g(b)r(et)n(w)n(een)g(Card)g
(Services)f(clien)n(t)h(driv)n(ers)f(and)h(user)f(mo)r(de)i(utilities)g
(lik)n(e)e(the)i Fh(cardmgr)0 514 y Fk(daemon.)48 b(It)31
b(is)h(a)f(sort)f(of)h(Card)g(Services)f(\020sup)r(er-clien)n(t\021.)47
b(Driv)n(er)31 b(Services)f(uses)h(the)h Fh(BindDevice)27
b Fk(function)32 b(to)f(link)0 628 y(other)20 b(clien)n(t)i(driv)n(ers)
d(with)i(their)g(corresp)r(onding)e(cards.)34 b(Unlik)n(e)21
b(other)f(clien)n(ts,)i(Driv)n(er)e(Services)g(remains)h(p)r(ermanen)n
(tly)0 741 y(b)r(ound)28 b(to)f(all)h(so)r(c)n(k)n(ets)e(as)h(cards)f
(are)h(inserted)g(and)g(remo)n(v)n(ed.)0 1027 y Fe(7.1)112
b(In)m(terface)38 b(to)f(other)g(clien)m(t)e(driv)m(ers)0
1238 y Fk(Driv)n(er)d(Services)h(k)n(eeps)f(trac)n(k)g(of)i(all)f
(clien)n(t)g(driv)n(ers)f(that)i(are)e(installed)h(and)g(ready)g(to)g
(attac)n(h)g(to)g(a)g(so)r(c)n(k)n(et.)53 b(Clien)n(t)0
1351 y(driv)n(ers)29 b(need)h(to)g(ha)n(v)n(e)g(en)n(try)f(p)r(oin)n
(ts)i(for)f(creating)f(and)h(deleting)g(device)g(\020instances\021,)g
(where)g(one)g(device)g(instance)g(is)0 1465 y(ev)n(erything)c(needed)i
(to)f(manage)g(one)g(ph)n(ysical)g(card.)0 1621 y(Eac)n(h)j(clien)n(t)g
(driv)n(er)f(is)h(iden)n(ti\034ed)g(b)n(y)g(a)g(unique)g(16-c)n
(haracter)d(tag)j(that)g(has)f(the)i(sp)r(ecial)f(t)n(yp)r(e)g
Fh(dev_info_t)p Fk(,)d(de\034ned)0 1735 y(in)h Fh(cs_types.h)p
Fk(.)33 b(Eac)n(h)27 b(device)g(instance)g(is)h(describ)r(ed)f(b)n(y)g
(a)h Fh(dev_link_t)23 b Fk(structure.)0 2002 y Ff(7.1.1)94
b(The)32 b(dev_link_t)g(structure)0 2212 y Fk(The)c Fh(dev_node_t)23
b Fk(and)k Fh(dev_link_t)d Fk(data)j(structures)g(are)f(giv)n(en)h(b)n
(y:)208 2402 y Fd(#include)41 b("ds.h")208 2610 y(typedef)f(struct)h
(dev_node_t)g({)521 2714 y(char)786 b(dev_name[DEV_NAME_LEN];)521
2818 y(u_char)708 b(major,)40 b(minor;)521 2922 y(struct)h(dev_node_t)
277 b(*next;)208 3026 y(})208 3235 y(typedef)40 b(struct)h(dev_link_t)g
({)521 3339 y(dev_node_t)552 b(*dev;)521 3443 y(u_int)747
b(state,)40 b(open;)521 3547 y(struct)h(wait_queue)277
b(*pending)521 3651 y(struct)41 b(timer_list)277 b(release)521
3755 y(client_handle_t)357 b(handle;)521 3859 y(io_req_t)630
b(io;)521 3963 y(irq_req_t)591 b(irq;)521 4067 y(config_req_t)474
b(conf;)521 4172 y(window_handle_t)357 b(win;)521 4276
y(void)786 b(*priv;)521 4380 y(struct)41 b(dev_link_t)277
b(*next;)208 4484 y(})39 b(dev_link_t;)0 4683 y Fk(The)27
b Fh(dev)f Fk(\034eld)h(of)g(the)g Fh(dev_link_t)c Fk(structure)j(p)r
(oin)n(ts)h(to)f(a)h(link)n(ed)g(list)g(of)g Fh(dev_node_t)22
b Fk(structures.)36 b(In)27 b Fh(dev_node_t)p Fk(,)0
4796 y(the)38 b Fh(dev_name)c Fk(\034eld)k(should)g(b)r(e)g(\034lled)g
(in)g(b)n(y)f(the)h(driv)n(er)e(with)j(a)e(device)g(\034le)h(name)f
(for)h(accessing)e(this)i(device,)i(if)0 4910 y(appropriate.)e(F)-7
b(or)28 b(example,)g(the)h Fh(serial_cs)c Fk(driv)n(er)i(uses)h(names)g
(lik)n(e)h(\020)7 b Fh(ttyS1)p Fk(\021.)37 b(The)28 b
Fh(major)f Fk(and)h Fh(minor)f Fk(\034elds)h(giv)n(e)0
5024 y(ma)5 b(jor)28 b(and)h(minor)g(device)g(n)n(um)n(b)r(ers)g(for)g
(accessing)f(this)i(device.)42 b(Driv)n(er)28 b(Services)g(rela)n(ys)g
(these)i(\034elds)f(to)g(user)g(mo)r(de)0 5137 y(programs)c(via)i(the)h
Fh(DS_GET_DEVICE_IN)o(FO)21 b Fk(io)r(ctl.)0 5294 y(In)26
b Fh(dev_link_t)p Fk(,)d(the)j Fh(state)f Fk(\034eld)h(should)g(b)r(e)h
(used)f(to)g(k)n(eep)g(trac)n(k)f(of)h(the)g(curren)n(t)g(device)g
(state.)36 b(The)26 b(follo)n(wing)f(\035ags)0 5407 y(are)i(de\034ned:)
p eop
%%Page: 58 58
58 57 bop 0 -167 3900 5 v 0 -200 a Ff(7.)73 b(Driv)m(er)33
b(Services)f(In)m(terface)2631 b Fk(58)0 162 y Fh(DEV_PRESENT)208
308 y Fk(Indicates)28 b(that)g(the)h(card)f(is)g(presen)n(t.)39
b(This)28 b(bit)h(should)f(b)r(e)h(set)g(and)f(cleared)f(b)n(y)h(the)h
(driv)n(er's)e(ev)n(en)n(t)h(handler)g(in)208 422 y(resp)r(onse)e(to)h
(card)g(insertion)g(and)g(remo)n(v)-5 b(al)27 b(ev)n(en)n(ts.)0
602 y Fh(DEV_CONFIG)208 749 y Fk(Indicates)g(that)h(the)g(card)e(is)i
(con\034gured)e(for)h(use.)0 929 y Fh(DEV_CONFIG_PENDI)o(NG)208
1076 y Fk(Indicates)g(that)h(con\034guration)d(is)j(in)g(progress.)0
1256 y Fh(DEV_SUSPEND)208 1402 y Fk(Indicates)f(that)h(the)g(card)e(is)
i(susp)r(ended.)0 1582 y Fh(DEV_BUSY)208 1729 y Fk(Indicates)h(that)g
(an)g(IO)h(op)r(eration)e(is)h(in)h(progress.)40 b(This)29
b(bit)h(ma)n(y)f(b)r(e)h(used)f(as)g(an)g(in)n(terlo)r(c)n(k)g(to)g
(prev)n(en)n(t)f(access)208 1843 y(con\035icts.)0 2023
y Fh(DEV_STALE_CONFIG)208 2169 y Fk(F)-7 b(or)18 b(some)g(driv)n(ers,)h
(when)g(a)g(running)f(card)g(is)h(ejected,)i(the)e(so)r(c)n(k)n(et)f
(should)g(not)h(b)r(e)g(uncon\034gured)f(un)n(til)i(an)n(y)e(devices)
208 2283 y(corresp)r(onding)23 b(to)j(this)f(card)g(are)g(closed.)35
b(This)26 b(\035ag)e(indicates)i(that)g(the)g(so)r(c)n(k)n(et)e(should)
h(b)r(e)h(uncon\034gured)f(when)208 2397 y(the)j(device)f(is)g(closed.)
0 2577 y Fh(DEV_STALE_LINK)208 2723 y Fk(A)e(driv)n(er)e(instance)i
(should)f(not)h(b)r(e)g(deleted)g(un)n(til)g(all)g(its)g(resources)d
(are)i(released.)35 b(This)24 b(\035ag)g(indicates)h(that)g(this)208
2837 y(driv)n(er)h(instance)h(should)g(b)r(e)h(freed)g(as)f(so)r(on)f
(as)h(the)h(so)r(c)n(k)n(et)f(is)g(uncon\034gured.)0
3076 y(The)e Fh(open)e Fk(\034eld)h(is)h(a)f(usage)g(coun)n(t)g(for)g
(this)h(device.)35 b(The)25 b(device)f(should)h(only)f(b)r(e)h(freed)f
(when)h(the)g(op)r(en)f(coun)n(t)h(is)f(zero.)0 3190
y(The)k Fh(pending)c Fk(\034eld)k(can)f(b)r(e)h(used)g(to)f(manage)g(a)
g(queue)g(of)h(pro)r(cesses)e(w)n(aiting)h(to)g(use)g(the)h(device.)0
3347 y(The)j Fh(release)d Fk(\034eld)k(is)e(used)h(to)g(sc)n(hedule)g
(device)g(sh)n(utdo)n(wn)f(pro)r(cessing)g(when)h(a)f(card)g(is)h
(ejected.)48 b(A)31 b(card)f(remo)n(v)-5 b(al)0 3460
y(ev)n(en)n(t)31 b(needs)h(to)f(b)r(e)h(handled)g(at)g(high)f(priorit)n
(y)-7 b(,)32 b(so)f(a)g(driv)n(er's)f(ev)n(en)n(t)h(handler)g(will)h(t)
n(ypically)f(deal)h(with)g(an)f(eject)h(b)n(y)0 3574
y(resetting)25 b(the)g Fh(DEV_PRESENT)c Fk(bit)26 b(in)f(the)h(device)f
(state,)g(then)h(sc)n(heduling)f(the)g(sh)n(utdo)n(wn)g(pro)r(cessing)f
(to)h(run)g(at)g(a)g(later)0 3687 y(time.)0 3844 y(The)31
b Fh(handle)p Fk(,)e Fh(io)p Fk(,)h Fh(irq)p Fk(,)h Fh(conf)p
Fk(,)f(and)g Fh(win)g Fk(\034elds)g(comprise)g(all)g(the)h(normal)f
(data)g(structures)g(needed)g(to)h(con\034gure)e(an)0
3957 y(ordinary)d(PC)i(Card)f(IO)g(device)0 4114 y(The)22
b Fh(priv)e Fk(\034eld)i(can)g(b)r(e)g(used)g(for)f(an)n(y)g(sort)g(of)
h(priv)-5 b(ate)22 b(data)f(structure)g(needed)h(to)g(manage)f(the)h
(device.)35 b(The)22 b Fh(next)e Fk(\034eld)0 4227 y(can)27
b(b)r(e)h(used)g(to)f(build)h(link)n(ed)g(lists)f(of)h
Fh(dev_link_t)23 b Fk(structures,)k(for)g(driv)n(ers)f(that)i(can)f
(handle)g(m)n(ultiple)h(instances.)0 4500 y Ff(7.1.2)94
b(register_p)s(ccard_driv)m(er)208 4691 y Fd(int)39 b
(register_pccard_driver\(dev_i)q(nfo_t)46 b(*dev_info,)1266
4795 y(dev_link_t)c(*\(*attach\)\(void\),)1266 4899 y(void)f
(\(*detach\)\(dev_link_t)i(*\)\);)0 5139 y Fh(register_pccard_)o(dr)o
(ive)o(r)23 b Fk(informs)28 b(Driv)n(er)g(Services)g(that)i(a)e(clien)n
(t)i(driv)n(er)d(is)i(presen)n(t)g(and)f(ready)g(to)h(b)r(e)h(b)r(ound)
f(to)0 5252 y(so)r(c)n(k)n(ets.)34 b(When)25 b(Driv)n(er)f(Services)f
(receiv)n(es)g(a)h Fh(DS_BIND_REQUEST)18 b Fk(io)r(ctl)25
b(that)f(matc)n(hes)g(this)h(driv)n(er's)e Fh(dev_info)e
Fk(string,)0 5366 y(it)i(will)g(call)f(the)h(driv)n(er's)e
Fh(attach\(\))e Fk(en)n(try)j(p)r(oin)n(t.)36 b(When)23
b(it)g(gets)f(a)g Fh(DS_UNBIND_REQUES)o(T)17 b Fk(io)r(ctl,)23
b(it)g(will)g(call)f Fh(detach\(\))p Fk(.)p eop
%%Page: 59 59
59 58 bop 0 -167 3900 5 v 0 -200 a Ff(7.)73 b(Driv)m(er)33
b(Services)f(In)m(terface)2631 b Fk(59)0 162 y Ff(7.1.3)94
b(unregister_p)s(ccard_driv)m(er)208 348 y Fd(int)39
b(unregister_pccard_driver\(dev)q(_info)q(_t)45 b(*dev_info\);)0
562 y Fk(This)28 b(informs)f(Driv)n(er)f(Services)h(that)h(it)g(should)
f(no)g(longer)f(bind)i(so)r(c)n(k)n(ets)f(to)g(the)h(sp)r(eci\034ed)g
(clien)n(t)f(driv)n(er.)0 849 y Fe(7.2)112 b(The)38 b(CardBus)g(clien)m
(t)d(in)m(terface)0 1060 y Fk(The)d(CardBus)e(card)h(in)n(terface)g(is)
g(designed)h(to)f(b)r(e)h(essen)n(tially)f(an)g(extension)g(of)h(the)g
(PCI)g(bus.)49 b(CardBus)31 b(cards)f(are)0 1173 y(t)n(ypically)k
(designed)f(using)h(standard)f(PCI)i(c)n(hip)f(sets.)57
b(F)-7 b(or)33 b(simplicit)n(y)i(in)f(the)h(clien)n(t)f(driv)n(ers,)g
(and)g(maxim)n(um)g(co)r(de)0 1287 y(sharing)29 b(with)j(regular)c(k)n
(ernel)i(PCI)h(driv)n(ers,)f(w)n(e)h(pro)n(vide)e(a)h(sort)g(of)h
(\020sup)r(er)f(clien)n(t\021)37 b(for)30 b(con\034guring)g(CardBus)f
(cards.)0 1400 y(This)f(is)f(implemen)n(ted)h(in)g(the)g
Fh(cb_enabler)23 b Fk(mo)r(dule.)0 1557 y(The)35 b Fh(cb_enabler)d
Fk(mo)r(dule)j(is)h(somewhat)e(similar)h(in)h(philosoph)n(y)e(to)h(the)
h(Driv)n(er)f(Services)f(la)n(y)n(er)g(for)h(16-bit)f(cards.)0
1670 y(CardBus)18 b(clien)n(t)g(driv)n(ers)g(register)f(with)i(it,)i
(and)e(pro)n(vide)e(a)i(few)g(en)n(try)f(p)r(oin)n(ts)h(for)f(handling)
g(device)h(setup)g(and)g(sh)n(utdo)n(wn,)0 1784 y(as)34
b(w)n(ell)h(as)f(p)r(o)n(w)n(er)g(managemen)n(t)g(handling.)59
b(The)35 b Fh(cb_enabler)30 b Fk(mo)r(dule)36 b(tak)n(es)e(care)f(of)i
(con\034guring)f(the)h(card)f(and)0 1897 y(\034elding)28
b(Card)e(Services)h(ev)n(en)n(ts.)36 b(So,)27 b(all)g(CardBus-sp)r
(eci\034c)g(co)r(de)g(is)g(in)h(the)g(enabler)f(rather)f(than)i(the)g
(PCI)g(driv)n(er.)0 2054 y(It)37 b(is)g(not)f(mandatory)g(for)g
(CardBus)f(clien)n(ts)i(to)f(use)h(the)g Fh(cb_enabler)32
b Fk(in)n(terface.)64 b(If)37 b(a)f(particular)g(clien)n(t)g(requires)0
2168 y(more)25 b(direct)h(con)n(trol)e(o)n(v)n(er)g(its)i(CardBus)f
(con\034guration)f(than)i(is)f(pro)n(vided)g(through)g(the)h
Fh(cb_enabler)c Fk(mo)r(dule,)k(it)g(can)0 2281 y(register)g(directly)h
(with)h(Card)f(Services)g(and)g(p)r(erform)g(Card)g(Services)f(calls)h
(directly)-7 b(,)28 b(just)g(lik)n(e)f(a)g(16-bit)g(clien)n(t.)0
2438 y(The)f Fh(cb_enabler)d Fk(mo)r(dule)j(has)g(t)n(w)n(o)f(en)n(try)
h(p)r(oin)n(ts:)36 b Fh(register_driver)20 b Fk(and)26
b Fh(unregister_drive)o(r)p Fk(.)31 b(A)n(t)26 b(some)g(p)r(oin)n(t,)0
2551 y(these)i(functions)f(ma)n(y)g(migrate)g(in)n(to)g(the)h(k)n
(ernel:)36 b(hence)28 b(the)f(generic)g(names.)0 2819
y Ff(7.2.1)94 b(register_driv)m(er)208 3005 y Fd(int)39
b(register_driver\(struct)44 b(driver_operations)f(*ops\);)0
3220 y Fk(The)28 b Fh(driver_operatio)o(ns)21 b Fk(structure)27
b(is)h(giv)n(en)e(b)n(y:)208 3414 y Fd(typedef)40 b(struct)h
(driver_operations)i({)521 3518 y(char)472 b(*name)521
3622 y(dev_node_t)238 b(*\(*attach\))41 b(\(dev_locator_t)h(*loc\);)521
3726 y(void)472 b(\(*suspend\))41 b(\(dev_node_t)h(*dev\);)521
3830 y(void)472 b(\(*resume\))41 b(\(dev_node_t)h(*dev\);)521
3934 y(void)472 b(\(*detach\))41 b(\(dev_node_t)h(*dev\);)208
4038 y(})d(driver_operations;)0 4241 y Fk(The)f Fh(name)f
Fk(\034eld)h(is)g(used)g(b)n(y)f Fh(cb_enabler)d Fk(when)39
b(registering)d(this)i(clien)n(t)g(with)h(Card)e(Services.)67
b(The)38 b(rest)g(of)g(the)0 4355 y(structure)27 b(describ)r(es)g(a)g
(set)h(of)f(ev)n(en)n(t)g(handlers)g(for)g(this)h(clien)n(t.)0
4511 y(The)g(function)g(returns)f(0)g(on)g(success,)g(and)g(-1)g(on)g
(failure.)0 4779 y Ff(7.2.2)94 b(unregister_driv)m(er)208
4965 y Fd(void)40 b(unregister_driver\(struct)k(driver_operations)f
(*ops\);)0 5180 y Fk(The)19 b Fh(ops)e Fk(parameter)h(should)g(b)r(e)h
(the)h(same)e(structure)g(p)r(oin)n(ter)g(passed)g(to)h(a)f(prior)g
(successful)g(call)h(to)f Fh(register_driver)p Fk(.)0
5294 y(The)29 b(clien)n(t)h(should)f(tak)n(e)f(care)g(to)i(only)e(call)
h(this)h(function)g(when)f(no)g(devices)g(are)f(curren)n(tly)g(b)r
(eing)i(managed)e(b)n(y)h(this)0 5407 y(clien)n(t.)p
eop
%%Page: 60 60
60 59 bop 0 -167 3900 5 v 0 -200 a Ff(7.)73 b(Driv)m(er)33
b(Services)f(In)m(terface)2631 b Fk(60)0 162 y Ff(7.2.3)94
b(The)32 b(driv)m(er_op)s(erations)f(en)m(try)i(p)s(oin)m(ts)0
372 y Fk(The)c Fh(attach\(\))c Fk(en)n(try)j(p)r(oin)n(t)g(is)h(used)f
(to)h(con\034gure)e(a)h(single)g(device,)h(giv)n(en)e(a)h(\020device)g
(lo)r(cator\021)34 b(structure)28 b(describing)0 485
y(where)f(to)g(\034nd)h(it.)0 642 y(The)g Fh(dev_locator_t)22
b Fk(structure)27 b(is)g(giv)n(en)g(b)n(y:)208 827 y
Fd(typedef)40 b(struct)h(dev_locator_t)h({)521 931 y(enum)e({)g
(LOC_ISA,)h(LOC_PCI)g(})e(bus;)521 1035 y(union)i({)835
1140 y(struct)g({)1149 1244 y(u_short)354 b(io_base_1,)42
b(io_base_2;)1149 1348 y(u_long)393 b(mem_base;)1149
1452 y(u_char)g(irq,)40 b(dma;)835 1556 y(})f(isa;)835
1660 y(struct)i({)1149 1764 y(u_char)393 b(bus;)1149
1868 y(u_char)g(devfn;)835 1972 y(})39 b(pci;)521 2077
y(})h(b;)208 2181 y(})f(dev_locator_t;)0 2375 y Fk(The)23
b Fh(attach\(\))c Fk(function)24 b(should)e(return)h(either)g
Fh(NULL)e Fk(or)h(a)g(v)-5 b(alid)23 b Fh(dev_node_t)c
Fk(structure)j(describing)g(the)h(new)g(device.)0 2489
y(All)31 b(the)g(other)f(en)n(try)g(p)r(oin)n(ts)h(will)g(use)f(this)h
(p)r(oin)n(ter)g(to)f(iden)n(tify)h(the)g(device)g(to)f(b)r(e)h
(manipulated.)47 b(The)30 b Fh(cb_enabler)0 2603 y Fk(mo)r(dule)21
b(will)g(in)n(v)n(ok)n(e)e(the)j Fh(attach\(\))17 b Fk(and)k
Fh(detach\(\))d Fk(en)n(try)i(p)r(oin)n(ts)h(in)g(resp)r(onse)f(to)g
(card)g(insertion)h(and)f(remo)n(v)-5 b(al)20 b(ev)n(en)n(ts.)0
2716 y(The)28 b Fh(suspend\(\))23 b Fk(and)28 b Fh(resume\(\))c
Fk(en)n(try)j(p)r(oin)n(ts)h(will)f(b)r(e)h(called)f(in)h(resp)r(onse)f
(to)g(p)r(o)n(w)n(er)g(managemen)n(t)f(ev)n(en)n(ts.)0
2873 y(There)h(is)g(no)g(w)n(a)n(y)f(for)h(a)g(driv)n(er)f(to)h(refuse)
g(a)f Fh(suspend\(\))e Fk(or)i Fh(detach\(\))e Fk(ev)n(en)n(t.)37
b(When)27 b(a)g Fh(detach\(\))d Fk(ev)n(en)n(t)j(is)g(receiv)n(ed,)0
2986 y(the)f(driv)n(er)e(should)h(blo)r(c)n(k)f(an)n(y)h(subsequen)n(t)
g(IO)g(to)g(the)h(sp)r(eci\034ed)f(device,)h(but)g(ma)n(y)e(preserv)n
(e)g(in)n(ternal)g(data)h(structures)0 3100 y(un)n(til)j(the)g(k)n
(ernel)f(device)g(is)g(actually)g(closed.)0 3385 y Fe(7.3)112
b(In)m(terface)38 b(to)f(user)g(mo)s(de)g(utilities)0
3595 y Fk(Driv)n(er)32 b(Services)g(creates)g(a)g(pseudo-device)g(for)h
(comm)n(unicating)f(with)h(user)g(mo)r(de)g(PC)g(Card)g(utilities.)53
b(The)33 b(ma)5 b(jor)0 3709 y(n)n(um)n(b)r(er)25 b(of)g(the)g(device)g
(is)f(c)n(hosen)g(dynamically)-7 b(,)25 b(and)g(PC)g(Card)f(utilities)i
(should)f(read)f Fh(/proc/devices)19 b Fk(to)25 b(determine)0
3823 y(it.)37 b(Minor)27 b(device)h(n)n(um)n(b)r(ers)f(corresp)r(ond)e
(to)j(so)r(c)n(k)n(et)e(n)n(um)n(b)r(ers,)h(starting)g(with)h(0.)0
3979 y(Only)g(one)h(pro)r(cess)f(is)g(allo)n(w)n(ed)g(to)g(op)r(en)h(a)
g(so)r(c)n(k)n(et)e(for)i(read/write)e(access.)39 b(Other)28
b(pro)r(cesses)g(can)g(op)r(en)h(the)g(so)r(c)n(k)n(et)f(in)0
4093 y(read-only)20 b(mo)r(de.)35 b(A)21 b(read-only)f(connection)h(to)
g(Driv)n(er)f(Services)h(can)g(p)r(erform)g(a)g(subset)g(of)h
Fh(ioctl)d Fk(calls.)34 b(A)22 b(read/write)0 4206 y(connection)27
b(can)g(issue)g(all)h Fh(ioctl)d Fk(calls,)i(and)h(can)f(also)f(receiv)
n(e)g(Card)h(Services)g(ev)n(en)n(t)g(noti\034cations.)0
4473 y Ff(7.3.1)94 b(Card)32 b(Services)g(ev)m(en)m(t)g
(noti\034cations)0 4683 y Fk(Driv)n(er)24 b(Services)h(implemen)n(ts)g
Fh(read\(\))e Fk(and)i Fh(select\(\))d Fk(functions)k(for)f(ev)n(en)n
(t)g(noti\034cation.)35 b(Reading)25 b(from)g(a)g(PC)h(Card)0
4796 y(device)d(returns)g(an)g(unsigned)h(long)e(v)-5
b(alue)24 b(con)n(taining)e(all)i(the)g(ev)n(en)n(ts)e(receiv)n(ed)h(b)
n(y)g(Driv)n(er)f(Services)h(since)g(the)h(previous)0
4910 y Fh(read\(\))p Fk(.)47 b(If)32 b(no)f(ev)n(en)n(ts)g(ha)n(v)n(e)g
(b)r(een)h(receiv)n(ed,)f(the)i(call)e(will)h(blo)r(c)n(k)f(un)n(til)h
(the)g(next)g(ev)n(en)n(t.)49 b(A)32 b Fh(select\(\))c
Fk(call)j(can)h(b)r(e)0 5024 y(used)c(to)f(monitor)g(sev)n(eral)f(so)r
(c)n(k)n(ets)g(for)h(new)g(ev)n(en)n(ts.)0 5180 y(The)121
b(follo)n(wing)g(ev)n(en)n(ts)f(are)h(monitored)g(b)n(y)g(Driv)n(er)f
(Services:)224 b Fh(CS_EVENT_CARD_I)o(NS)o(ERT)o(IO)o(N)p
Fk(,)0 5294 y Fh(CS_EVENT_CARD_RE)o(MO)o(VAL)o Fk(,)311
b Fh(CS_EVENT_RESET_PH)o(YS)o(ICA)o(L)p Fk(,)g Fh(CS_EVENT_CARD_RE)o
(SE)o(T)p Fk(,)g(and)0 5407 y Fh(CS_EVENT_RESET_C)o(OM)o(PLE)o(TE)o
Fk(.)p eop
%%Page: 61 61
61 60 bop 0 -167 3900 5 v 0 -200 a Ff(7.)73 b(Driv)m(er)33
b(Services)f(In)m(terface)2631 b Fk(61)0 162 y Ff(7.3.2)94
b(Io)s(ctl)31 b(descriptions)0 372 y Fk(Most)c(Driv)n(er)g(Services)f
Fh(ioctl)g Fk(op)r(erations)g(directly)h(map)h(to)f(Card)g(Services)g
(functions.)37 b(An)28 b(io)r(ctl)f(call)h(has)f(the)h(form:)208
602 y Fd(int)39 b(ioctl\(int)j(fd,)d(int)h(cmd,)g(ds_ioctl_arg_t)j
(*arg\);)0 841 y Fk(The)28 b(ds_io)r(ctl_arg_t)d(structure)i(is)g(giv)n
(en)g(b)n(y:)208 1055 y Fd(typedef)40 b(union)h(ds_ioctl_arg_t)h({)521
1159 y(servinfo_t)238 b(servinfo;)521 1263 y(adjust_t)316
b(adjust;)521 1367 y(config_info_t)121 b(config;)521
1471 y(tuple_t)355 b(tuple;)521 1575 y(tuple_parse_t)121
b(tuple_parse;)521 1679 y(client_req_t)160 b(client_req;)521
1783 y(status_t)316 b(status;)521 1888 y(conf_reg_t)238
b(conf_reg;)521 1992 y(cisinfo_t)277 b(cisinfo;)521 2096
y(region_info_t)121 b(region;)521 2200 y(bind_info_t)199
b(bind_info;)521 2304 y(mtd_info_t)238 b(mtd_info;)521
2408 y(cisdump_t)277 b(cisdump;)208 2512 y(})39 b(ds_ioctl_arg_t;)0
2735 y Fk(The)28 b(follo)n(wing)e Fh(ioctl)g Fk(commands)g(execute)i
(the)g(corresp)r(onding)d(Card)i(Services)g(function:)0
2958 y Fh(DS_GET_CARD_SERV)o(IC)o(ES_)o(IN)o(FO)208 3105
y Fk(Calls)g Fh(CardServices\(Ge)o(tC)o(ar)o(dSe)o(rv)o(ic)o(esI)o(nf)o
(o,)37 b(...,)42 b(&arg-)p Fc(>)p Fh(servinfo\))p Fk(.)0
3285 y Fh(DS_ADJUST_RESOUR)o(CE)o(_IN)o(FO)208 3432 y
Fk(Calls)27 b Fh(CardServices\(Ad)o(ju)o(st)o(Res)o(ou)o(rc)o(eIn)o(fo)
o(,)38 b(...,)j(&arg-)p Fc(>)p Fh(adjust\))p Fk(.)0 3612
y Fh(DS_GET_CONFIGURA)o(TI)o(ON_)o(IN)o(FO)208 3758 y
Fk(Calls)27 b Fh(CardServices\(Ge)o(tC)o(on)o(fig)o(ur)o(at)o(ion)o(In)
o(fo,)37 b(...,)42 b(&arg-)p Fc(>)p Fh(config\))p Fk(.)0
3938 y Fh(DS_GET_FIRST_TUP)o(LE)208 4085 y Fk(Calls)27
b Fh(CardServices\(Ge)o(tF)o(ir)o(stT)o(up)o(le)o(,)38
b(...,)k(&arg-)p Fc(>)p Fh(tuple\))p Fk(.)0 4265 y Fh(DS_GET_NEXT_TUPL)
o(E)208 4412 y Fk(Calls)27 b Fh(CardServices\(Ge)o(tN)o(ex)o(tTu)o(pl)o
(e,)37 b(...,)42 b(&arg-)p Fc(>)p Fh(tuple\))p Fk(.)0
4592 y Fh(DS_GET_TUPLE_DAT)o(A)208 4739 y Fk(Calls)26
b Fh(CardServices\(Get)o(Tup)o(le)o(Dat)o(a,)37 b(...,)42
b(&arg-)p Fc(>)p Fh(tuple_par)o(se)o(.tu)o(pl)o(e\))p
Fk(.)30 b(The)e(tuple)g(data)e(is)i(returned)208 4852
y(in)f Fh(arg-)p Fc(>)p Fh(tuple_parse.)o(da)o(ta)o Fk(.)0
5032 y Fh(DS_PARSE_TUPLE)208 5179 y Fk(Calls)1137 b Fh
(CardServices\(Par)o(se)o(Tu)o(ple)o(,)37 b(...,)42 b(&arg-)p
Fc(>)p Fh(tuple_pars)o(e.t)o(up)o(le)o(,)208 5293 y(&arg-)p
Fc(>)p Fh(tuple_par)o(se)o(.p)o(ars)o(e\))o Fk(.)p eop
%%Page: 62 62
62 61 bop 0 -167 3900 5 v 0 -200 a Ff(7.)73 b(Driv)m(er)33
b(Services)f(In)m(terface)2631 b Fk(62)0 162 y Fh(DS_RESET_CARD)208
302 y Fk(Calls)27 b Fh(CardServices\(Re)o(se)o(tC)o(ard)o(,)37
b(...\))p Fk(.)0 469 y Fh(DS_GET_STATUS)208 610 y Fk(Calls)27
b Fh(CardServices\(Ge)o(tS)o(ta)o(tus)o(,)37 b(...,)42
b(&arg-)p Fc(>)p Fh(status\))p Fk(.)0 777 y Fh(DS_ACCESS_CONFIG)o(UR)o
(ATI)o(ON)o(_R)o(EGI)o(ST)o(ER)208 917 y Fk(Calls)27
b Fh(CardServices\(Ac)o(ce)o(ss)o(Con)o(fi)o(gu)o(rat)o(io)o(nRe)o(gi)o
(st)o(er,)37 b(...,)42 b(&arg-)p Fc(>)p Fh(conf_reg\))o
Fk(.)0 1084 y Fh(DS_VALIDATE_CIS)208 1225 y Fk(Calls)27
b Fh(CardServices\(Va)o(li)o(da)o(teC)o(IS)o(,)37 b(...,)42
b(&arg-)p Fc(>)p Fh(cisinfo\))p Fk(.)0 1392 y Fh(DS_SUSPEND_CARD)208
1532 y Fk(Calls)27 b Fh(CardServices\(Su)o(sp)o(en)o(dCa)o(rd)o(,)37
b(...\))p Fk(.)0 1699 y Fh(DS_RESUME_CARD)208 1840 y
Fk(Calls)27 b Fh(CardServices\(Re)o(su)o(me)o(Car)o(d,)37
b(...\))p Fk(.)0 2007 y Fh(DS_EJECT_CARD)208 2147 y Fk(Calls)27
b Fh(CardServices\(Ej)o(ec)o(tC)o(ard)o(,)37 b(...\))p
Fk(.)0 2315 y Fh(DS_INSERT_CARD)208 2455 y Fk(Calls)27
b Fh(CardServices\(In)o(se)o(rt)o(Car)o(d,)37 b(...\))p
Fk(.)0 2622 y Fh(DS_GET_FIRST_REG)o(IO)o(N)208 2763 y
Fk(Calls)27 b Fh(CardServices\(Ge)o(tF)o(ir)o(stR)o(eg)o(io)o(n,)37
b(...,)42 b(&arg-)p Fc(>)p Fh(region\))p Fk(.)0 2930
y Fh(DS_GET_NEXT_REGI)o(ON)208 3070 y Fk(Calls)27 b Fh
(CardServices\(Ge)o(tN)o(ex)o(tRe)o(gi)o(on)o(,)38 b(...,)k(&arg-)p
Fc(>)p Fh(region\))p Fk(.)0 3237 y Fh(DS_REPLACE_CIS)208
3378 y Fk(Calls)27 b Fh(CardServices\(Re)o(pl)o(ac)o(eCI)o(S,)37
b(...,)42 b(&arg-)p Fc(>)p Fh(cisdump\))p Fk(.)0 3575
y(The)31 b(follo)n(wing)f Fh(ioctl)e Fk(commands)j(in)n(v)n(ok)n(e)e
(sp)r(ecial)h(Driv)n(er)g(Services)g(functions.)47 b(They)30
b(act)h(on)g Fh(bind_info_t)26 b Fk(struc-)0 3688 y(tures:)208
3876 y Fd(typedef)40 b(struct)h(bind_info_t)g({)521 3980
y(dev_info_t)552 b(dev_info;)521 4084 y(u_char)708 b(function;)521
4189 y(struct)41 b(dev_info_t)277 b(*instance;)521 4293
y(char)786 b(name[DEV_NAME_LEN];)521 4397 y(u_char)708
b(major,)40 b(minor;)521 4501 y(void)786 b(*next;)208
4605 y(})39 b(bind_info_t;)0 4813 y Fh(DS_BIND_REQUEST)208
4953 y Fk(This)25 b(call)g(connects)g(a)g(so)r(c)n(k)n(et)f(to)h(a)g
(clien)n(t)h(driv)n(er.)34 b(The)26 b(sp)r(eci\034ed)f(device)g(ID)h
Fh(dev_info)c Fk(is)k(lo)r(ok)n(ed)e(up)i(in)f(the)h(list)208
5066 y(of)j(registered)e(driv)n(ers.)40 b(If)29 b(this)g(is)g(a)g(m)n
(ultifunction)h(card,)e(the)i Fh(function)25 b Fk(\034eld)30
b(iden)n(ti\034es)f(whic)n(h)f(card)h(function)208 5180
y(is)h(b)r(eing)h(b)r(ound.)48 b(If)31 b(found,)h(the)g(driv)n(er)d(is)
i(b)r(ound)h(to)e(this)i(so)r(c)n(k)n(et)d(and)i(function)h(using)e
(the)i Fh(BindDevice)26 b Fk(call.)208 5294 y(Then,)31
b(Driv)n(er)f(Services)g(calls)g(the)h(clien)n(t)g(driv)n(er's)f
Fh(attach\(\))d Fk(en)n(try)j(p)r(oin)n(t)h(to)g(create)f(a)g(device)h
(instance.)46 b(The)208 5407 y(new)27 b Fh(dev_link_t)d
Fk(p)r(oin)n(ter)j(is)g(returned)g(in)h Fh(instance)p
Fk(.)p eop
%%Page: 63 63
63 62 bop 0 -167 3900 5 v 0 -200 a Ff(8.)73 b(Anatom)m(y)32
b(of)g(a)g(Card)g(Services)g(Clien)m(t)f(Driv)m(er)1904
b Fk(63)0 162 y Fh(DS_GET_DEVICE_IN)o(FO)208 306 y Fk(This)27
b(call)h(retriev)n(es)e(the)i Fh(dev_name)p Fk(,)c Fh(major)p
Fk(,)i(and)i Fh(minor)d Fk(en)n(tries)i(from)h(the)g
Fh(dev_link_t)23 b Fk(structure)k(p)r(oin)n(ted)h(to)208
419 y(b)n(y)f Fh(instance)p Fk(.)0 593 y Fh(DS_UNBIND_REQUES)o(T)208
737 y Fk(This)g(call)g(calls)g(the)h Fh(detach\(\))c
Fk(function)k(for)g(the)f(sp)r(eci\034ed)h(driv)n(er)e(and)i(instance,)
f(sh)n(utting)h(do)n(wn)f(this)h(device.)0 962 y(Finally)-7
b(,)28 b(the)g Fh(DS_BIND_MTD)23 b Fk(request)j(tak)n(es)h(an)g
(argumen)n(t)g(of)g(t)n(yp)r(e)h Fh(mtd_info_t)p Fk(:)208
1177 y Fd(typedef)40 b(struct)h(mtd_info_t)g({)521 1281
y(dev_info_t)238 b(dev_info;)521 1385 y(u_int)433 b(Attributes;)521
1489 y(u_int)g(CardOffset;)208 1593 y(})39 b(mtd_info_t;)0
1818 y Fk(This)32 b(call)g(asso)r(ciates)f(an)h(MTD)h(iden)n(ti\034ed)g
(b)n(y)f Fh(dev_info)d Fk(with)k(a)f(memory)g(region)f(describ)r(ed)h
(b)n(y)g Fh(Attributes)c Fk(and)0 1932 y Fh(CardOffset)p
Fk(,)23 b(whic)n(h)28 b(ha)n(v)n(e)e(the)i(same)f(meanings)g(as)g(in)h
(the)g(Card)e(Services)h Fh(BindMTD)e Fk(call.)0 2267
y Fg(8)131 b(Anatom)l(y)44 b(of)g(a)g(Card)f(Services)i(Clien)l(t)h
(Driv)l(er)0 2506 y Fk(Eac)n(h)29 b(release)f(of)i(the)g(Lin)n(ux)f
(Card)f(Services)h(pac)n(k)-5 b(age)28 b(comes)h(with)h(a)f(w)n
(ell-commen)n(ted)f(\020dumm)n(y\021)36 b(clien)n(t)30
b(driv)n(er)e(that)0 2620 y(should)k(b)r(e)h(used)f(as)g(a)g(starting)f
(p)r(oin)n(t)i(for)f(writing)g(a)g(new)g(driv)n(er.)50
b(Lo)r(ok)32 b(for)g(it)g(in)h Fh(clients/dummy_cs)o(.c)o
Fk(.)46 b(This)32 b(is)0 2733 y(not)f(just)g(a)g(piece)g(of)g(sample)f
(co)r(de:)43 b(it)32 b(is)e(written)h(to)g(function)h(as)e(a)g(sort)g
(of)h(generic)f(card)g(enabler.)46 b(If)31 b(b)r(ound)h(to)e(an)0
2847 y(IO)i(card,)g(it)g(will)g(read)f(the)h(card's)f(CIS)h(and)g
(con\034gure)f(the)h(card)f(appropriately)-7 b(,)31 b(assuming)g(that)h
(the)g(card's)f(CIS)h(is)0 2960 y(complete)27 b(and)h(accurate.)0
3249 y Fe(8.1)112 b(Mo)s(dule)38 b(initialization)32
b(and)39 b(clean)m(up)0 3459 y Fk(All)29 b(loadable)f(mo)r(dules)g(m)n
(ust)h(supply)f Fh(init_module\(\))c Fk(and)k Fh(cleanup_module\(\))22
b Fk(functions,)29 b(whic)n(h)g(are)e(in)n(v)n(ok)n(ed)g(b)n(y)0
3573 y(the)k(mo)r(dule)f(supp)r(ort)h(co)r(de)f(when)g(the)h(mo)r(dule)
g(is)f(installed)g(and)h(remo)n(v)n(ed.)43 b(A)31 b(clien)n(t)g(driv)n
(er's)d(init)j(function)g(should)0 3687 y(register)k(the)i(driv)n(er)e
(with)i(Driv)n(er)f(Services,)h(via)f(the)h Fh(register_pccard_)o(dri)o
(ve)o(r\(\))30 b Fk(call.)63 b(The)37 b(clean)n(up)f(function)0
3800 y(should)27 b(use)g Fh(unregister_pcca)o(rd_)o(dr)o(iv)o(er\()o
(\))21 b Fk(to)27 b(unregister)f(with)h(Driv)n(er)f(Services.)36
b(Dep)r(ending)28 b(on)e(the)i(driv)n(er,)e(the)0 3914
y(clean)n(up)h(function)h(ma)n(y)f(also)f(need)i(to)g(free)f(an)n(y)g
(device)g(structures)g(that)h(still)f(exist)h(at)f(sh)n(utdo)n(wn)g
(time.)0 4203 y Fe(8.2)112 b(The)38 b(*_attac)m(h\(\))f(and)h(*_detac)m
(h\(\))f(functions)0 4413 y Fk(The)h Fh(*_attach\(\))33
b Fk(en)n(try)k(p)r(oin)n(t)h(is)g(resp)r(onsible)e(for)h(creating)g
(an)g(\020instance\021)44 b(of)37 b(the)h(driv)n(er,)h(setting)f(up)g
(an)n(y)f(data)0 4526 y(structures)21 b(needed)i(to)f(manage)e(one)i
(card.)34 b(The)23 b Fh(*_attach\(\))18 b Fk(function)k(should)g(allo)r
(cate)f(and)h(initialize)g(a)g Fh(dev_link_t)0 4640 y
Fk(structure,)29 b(and)g(call)f Fh(RegisterClient)c Fk(to)k(establish)h
(a)g(link)g(with)g(Card)g(Services.)40 b(It)29 b(returns)g(a)f(p)r(oin)
n(ter)h(to)g(the)g(new)0 4754 y Fh(dev_link_t)23 b Fk(structure,)k(or)g
Fh(NULL)f Fk(if)i(the)g(new)g(instance)f(could)g(not)h(b)r(e)g
(created.)0 4910 y(The)e Fh(*_detach\(\))21 b Fk(en)n(try)k(p)r(oin)n
(t)h(deletes)g(a)f(driv)n(er)g(instance)g(created)g(b)n(y)g(a)g
(previous)g(call)g(to)h Fh(*_attach)p Fk(.)33 b(It)26
b(also)e(breaks)0 5024 y(the)k(link)g(with)g(Card)e(Services,)h(using)g
Fh(DeregisterClient)o Fk(.)0 5180 y(The)32 b Fh(*_attach\(\))c
Fk(en)n(try)j(p)r(oin)n(t)h(is)g(called)g(b)n(y)f(Driv)n(er)g(Services)
g(when)h(a)g(card)f(has)g(b)r(een)h(successfully)g(iden)n(ti\034ed)g
(and)0 5294 y(mapp)r(ed)40 b(to)g(a)f(matc)n(hing)g(driv)n(er)f(b)n(y)i
(a)f Fh(DS_BIND_REQUEST)34 b Fk(io)r(ctl\(\).)74 b(The)39
b Fh(*_detach\(\))d Fk(en)n(try)j(p)r(oin)n(t)h(is)g(called)f(in)0
5407 y(resp)r(onse)26 b(to)i(a)f Fh(DS_UNBIND_REQUES)o(T)22
b Fk(io)r(ctl\(\))28 b(call.)p eop
%%Page: 64 64
64 63 bop 0 -167 3900 5 v 0 -200 a Ff(8.)73 b(Anatom)m(y)32
b(of)g(a)g(Card)g(Services)g(Clien)m(t)f(Driv)m(er)1904
b Fk(64)0 162 y Fe(8.3)112 b(The)38 b(*_con\034g\(\))f(and)h
(*_release\(\))f(functions)0 372 y Fk(The)c Fh(*_config\(\))28
b Fk(function)33 b(is)g(called)f(to)g(prepare)f(a)i(card)e(for)h(IO.)h
(Most)f(driv)n(ers)f(read)h(some)g(con\034guration)e(details)0
485 y(from)35 b(the)g(card)g(itsef,)i(but)f(most)f(ha)n(v)n(e)f(at)h
(least)f(some)h(built-in)g(kno)n(wledge)f(of)h(ho)n(w)g(the)g(device)g
(should)g(b)r(e)h(set)f(up.)0 599 y(F)-7 b(or)29 b(example,)i(the)f
(serial)f(card)g(driv)n(er)g(reads)g(a)g(card's)g Fh(CFTABLE_ENTRY)c
Fk(tuples)30 b(to)g(determine)g(appropriate)f(IO)g(p)r(ort)0
712 y(base)g(addresses)e(and)i(corresp)r(onding)f(con\034guration)f
(indices,)j(but)g(the)g(driv)n(er)e(ignores)g(the)h(in)n(terrupt)g
(information)g(in)0 826 y(the)34 b(CIS.)f(The)h Fh(*_config)c
Fk(function)k(will)f(parse)g(relev)-5 b(an)n(t)32 b(parts)h(of)g(a)g
(card's)g(CIS,)g(then)h(mak)n(e)f(calls)f(to)i Fh(RequestIO)p
Fk(,)0 940 y Fh(RequestIRQ)p Fk(,)23 b(and/or)j Fh(RequestWindow)p
Fk(,)d(then)28 b(call)f Fh(RequestConfigur)o(ati)o(on)o
Fk(.)0 1096 y(When)37 b(a)e(card)h(is)g(successfully)f(con\034gured,)i
(the)g Fh(*_config\(\))32 b Fk(routine)k(should)g(\034ll)g(in)g(the)h
Fh(dev_name)p Fk(,)e Fh(major)p Fk(,)h(and)0 1210 y Fh(minor)25
b Fk(\034elds)h(in)h(the)g Fh(dev_link_t)c Fk(structure.)36
b(These)26 b(\034elds)h(will)g(b)r(e)g(returned)f(to)h(user)f(programs)
e(b)n(y)i(Driv)n(er)g(Services)0 1323 y(in)i(resp)r(onse)e(to)i(a)f
Fh(DS_GET_DEVICE_IN)o(FO)21 b Fk(io)r(ctl\(\).)0 1480
y(The)h Fh(*_release\(\))17 b Fk(function)23 b(should)e(release)g(an)n
(y)g(resource)f(allo)r(cated)h(b)n(y)g(a)h(previous)f(call)g(to)h
Fh(*_config\(\))p Fk(,)d(and)i(blank)0 1593 y(out)28
b(the)g(device's)f Fh(dev_name)d Fk(\034eld.)0 1750 y(The)30
b Fh(*_config\(\))c Fk(and)31 b Fh(*_release)26 b Fk(functions)31
b(are)e(normally)g(called)h(in)h(resp)r(onse)e(to)h(card)f(status)h(c)n
(hange)f(ev)n(en)n(ts)h(or)0 1863 y(from)25 b(timer)h(in)n(terrupts.)35
b(Th)n(us,)26 b(they)g(cannot)f(sleep,)h(and)f(should)g(not)h(call)f
(other)g(k)n(ernel)f(functions)i(that)g(migh)n(t)g(blo)r(c)n(k.)0
2148 y Fe(8.4)112 b(The)38 b(clien)m(t)d(ev)m(en)m(t)i(handler)0
2358 y Fk(The)28 b Fh(*_event\(\))23 b Fk(en)n(try)k(p)r(oin)n(t)h(is)g
(called)f(from)g(Card)g(Services)f(to)i(notify)g(a)f(driv)n(er)f(of)h
(card)g(status)g(c)n(hange)g(ev)n(en)n(ts.)0 2643 y Fe(8.5)112
b(Lo)s(c)m(king)37 b(and)i(sync)m(hronization)d(issues)0
2853 y Fk(A)25 b(con\034gured)e(so)r(c)n(k)n(et)g(should)h(only)g(b)r
(e)h(released)e(when)i(all)f(asso)r(ciated)f(devices)h(are)f(closed.)35
b(Releasing)23 b(a)h(so)r(c)n(k)n(et)g(allo)n(ws)0 2967
y(its)i(system)f(resources)e(to)i(b)r(e)h(allo)r(cated)f(for)g(use)g(b)
n(y)g(another)g(device.)35 b(If)26 b(the)g(released)e(resources)f(are)i
(reallo)r(cated)f(while)0 3080 y(IO)j(to)h(the)g(original)e(device)h
(is)g(still)h(in)g(progress,)d(the)j(original)e(driv)n(er)g(ma)n(y)h
(in)n(terfere)g(with)h(use)g(of)f(the)h(new)g(device.)0
3237 y(A)h(driv)n(er)e(instance)h(should)g(only)g(b)r(e)h(freed)f
(after)g(its)h(corresp)r(onding)d(so)r(c)n(k)n(et)h(con\034guration)g
(has)h(b)r(een)h(released.)38 b(Card)0 3350 y(Services)29
b(requires)g(that)h(a)g(clien)n(t)g(explicitly)g(release)f(an)n(y)g
(allo)r(cated)h(resources)e(b)r(efore)h(a)h(call)g(to)g
Fh(DeregisterClien)o(t)0 3464 y Fk(will)e(succeed.)0
3620 y(All)i(loadable)f(mo)r(dules)h(ha)n(v)n(e)f(a)h(\020use)f(coun)n
(t\021)36 b(that)30 b(is)g(used)g(b)n(y)g(the)g(system)g(to)g
(determine)g(when)g(it)g(is)g(safe)g(to)g(unload)0 3734
y(a)h(mo)r(dule.)48 b(The)32 b(con)n(v)n(en)n(tion)d(in)j(clien)n(t)f
(driv)n(ers)f(is)h(to)g(incremen)n(t)g(the)h(use)f(coun)n(t)g(when)h(a)
f(device)g(is)g(op)r(ened,)h(and)f(to)0 3847 y(decremen)n(t)e(the)g
(coun)n(t)g(when)h(a)f(device)g(is)g(closed.)41 b(So,)29
b(a)g(driv)n(er)f(can)h(b)r(e)h(unloaded)f(whenev)n(er)f(all)h(asso)r
(ciated)f(devices)0 3961 y(are)35 b(closed.)61 b(in)37
b(particular,)f(a)g(driv)n(er)f(can)g(b)r(e)i(unloaded)e(ev)n(en)h(if)g
(it)h(is)f(still)g(b)r(ound)g(to)g(a)g(so)r(c)n(k)n(et,)h(and)e(the)i
(mo)r(dule)0 4074 y(clean)n(up)28 b(co)r(de)h(needs)g(to)f(b)r(e)i
(able)e(to)h(appropriately)e(free)h(an)n(y)g(suc)n(h)h(resources)e
(that)i(are)f(still)h(allo)r(cated.)40 b(This)28 b(should)0
4188 y(alw)n(a)n(ys)h(b)r(e)h(safe,)h(b)r(ecause)f(if)h(the)g(driv)n
(er)f(has)g(a)g(use)g(coun)n(t)g(of)h(zero,)f(all)g(devices)g(are)g
(closed,)g(whic)n(h)h(means)f(all)g(activ)n(e)0 4302
y(so)r(c)n(k)n(ets)c(can)h(b)r(e)h(released,)f(and)g(all)g(device)h
(instances)f(can)g(b)r(e)h(detac)n(hed.)0 4458 y(If)f(a)f(driv)n(er's)e
Fh(*_release\(\))e Fk(function)27 b(is)f(called)g(while)h(a)f(device)g
(is)g(still)g(op)r(en,)h(it)g(should)f(set)g(the)h Fh(DEV_STALE_CONFI)o
(G)0 4572 y Fk(\035ag)j(in)h(the)g(device)f(state,)h(to)f(signal)g
(that)h(the)g(device)f(should)g(b)r(e)h(released)f(when)g(the)h(driv)n
(er's)e Fh(close\(\))f Fk(function)j(is)0 4685 y(called.)36
b(If)25 b Fh(*_detach\(\))d Fk(is)j(called)g(for)f(a)h(con\034gured)f
(device,)i(the)f Fh(DEV_STALE_LINK)20 b Fk(\035ag)k(should)h(b)r(e)h
(set)f(to)g(signal)g(that)0 4799 y(the)j(instance)f(should)g(b)r(e)h
(detac)n(hed)g(when)f(the)h Fh(*_release\(\))23 b Fk(function)28
b(is)g(called.)0 5084 y Fe(8.6)112 b(Using)37 b(existing)f(Lin)m(ux)i
(driv)m(ers)e(to)h(access)h(PC)f(Card)h(devices)0 5294
y Fk(Man)n(y)24 b(of)g(the)h(curren)n(t)f(clien)n(t)g(driv)n(ers)f(use)
i(existing)f(Lin)n(ux)g(driv)n(er)f(co)r(de)h(to)h(p)r(erform)f(device)
g(IO)g(op)r(erations.)34 b(The)25 b(Card)0 5407 y(Services)i(clien)n(t)
i(mo)r(dule)g(handles)f(card)f(con\034guration)g(and)h(resp)r(onds)g
(to)g(card)g(status)g(c)n(hange)f(ev)n(en)n(ts,)h(but)h(delegates)p
eop
%%Page: 65 65
65 64 bop 0 -167 3900 5 v 0 -200 a Ff(9.)73 b(The)32
b(So)s(c)m(k)m(et)h(Driv)m(er)g(La)m(y)m(er)2638 b Fk(65)0
162 y(device)28 b(IO)h(to)f(a)h(compatible)f(driv)n(er)g(for)g(a)g(con)
n(v)n(en)n(tional)f(ISA)i(bus)g(card.)39 b(In)29 b(some)f(cases,)g(a)g
(con)n(v)n(en)n(tional)f(driv)n(er)g(can)0 275 y(b)r(e)35
b(used)g(without)g(mo)r(di\034cation.)57 b(Ho)n(w)n(ev)n(er,)35
b(to)f(fully)h(supp)r(ort)g(PC)g(Card)f(features)g(lik)n(e)g(hot)g(sw)n
(apping)g(and)g(p)r(o)n(w)n(er)0 389 y(managemen)n(t,)e(there)g(needs)f
(to)h(b)r(e)g(some)g(comm)n(unication)f(b)r(et)n(w)n(een)g(the)i(PC)f
(Card)f(clien)n(t)h(co)r(de)g(and)g(the)g(device)f(IO)0
502 y(co)r(de.)0 659 y(Most)i(Lin)n(ux)g(driv)n(ers)f(exp)r(ect)i(to)f
(prob)r(e)g(for)f(devices)h(at)g(b)r(o)r(ot)h(time,)h(and)e(are)g(not)g
(designed)g(to)g(handle)g(adding)g(and)0 772 y(remo)n(ving)d(devices.)
47 b(One)31 b(side-e\033ect)h(of)f(the)h(mo)n(v)n(e)e(to)n(w)n(ards)f
(driv)n(er)h(mo)r(dularization)g(is)i(that)f(it)h(is)f(usually)g
(easier)f(to)0 886 y(adapt)d(a)g(mo)r(dularized)g(driv)n(er)f(to)i
(handle)f(remo)n(v)-5 b(able)27 b(devices.)0 1043 y(It)k(is)f(imp)r
(ortan)n(t)g(that)h(a)f(device)h(driv)n(er)e(b)r(e)i(able)f(to)h(reco)n
(v)n(er)d(from)i(ha)n(ving)f(a)h(device)h(disapp)r(ear)e(at)h(an)h
(inappropriate)0 1156 y(time.)58 b(A)n(t)35 b(b)r(est,)h(the)f(driv)n
(er)e(should)h(c)n(hec)n(k)g(for)g(device)g(presence)f(b)r(efore)h
(attempting)h(an)n(y)f(IO)g(op)r(eration)f(or)g(b)r(efore)0
1270 y(handling)28 b(an)g(IO)h(in)n(terrupt.)39 b(Lo)r(ops)28
b(that)h(c)n(hec)n(k)e(device)h(status)h(should)f(ha)n(v)n(e)f
(timeouts)i(so)f(they)h(will)f(ev)n(en)n(tually)g(exit)0
1383 y(if)g(a)f(device)h(nev)n(er)e(resp)r(onds.)0 1540
y(The)d Fh(dummy_cs)d Fk(driv)n(er)i(ma)n(y)g(b)r(e)i(useful)f(for)g
(loading)f(legacy)g(driv)n(ers)f(for)i(compatible)g(PC)g(Card)g
(devices.)34 b(After)24 b(binding)0 1653 y Fh(dummy_cs)c
Fk(to)j(a)g(card,)h(the)f(legacy)f(driv)n(er)g(mo)r(dule)i(ma)n(y)f(b)r
(e)g(able)g(to)h(detect)g(and)f(comm)n(unicate)f(with)i(the)g(device)f
(as)g(if)h(it)0 1767 y(w)n(ere)f(not)h(a)g(PC)g(Card.)35
b(This)24 b(arrangemen)n(t)e(will)i(generally)f(not)h(supp)r(ort)g
(clean)f(hot)h(sw)n(apping)f(or)g(p)r(o)n(w)n(er)g(managemen)n(t)0
1880 y(functions,)28 b(ho)n(w)n(ev)n(er)d(it)j(ma)n(y)f(b)r(e)h(useful)
g(as)f(a)g(basis)g(for)g(later)g(dev)n(eloping)f(a)h(more)g
(full-featured)h(clien)n(t)f(driv)n(er.)0 2219 y Fg(9)131
b(The)44 b(So)t(c)l(k)l(et)h(Driv)l(er)g(La)l(y)l(er)0
2457 y Fk(In)26 b(the)h(Lin)n(ux)f(PCMCIA)g(mo)r(del,)h(the)f(\020So)r
(c)n(k)n(et)g(Services\021)31 b(la)n(y)n(er)25 b(is)h(a)f(priv)-5
b(ate)26 b(API)h(in)n(tended)f(only)g(for)f(the)i(use)f(of)g(Card)0
2571 y(Services.)48 b(The)32 b(API)h(is)f(based)f(lo)r(osely)g(on)g
(the)h(PCMCIA)h(So)r(c)n(k)n(et)e(Services)g(sp)r(eci\034cation,)h(but)
g(is)g(orien)n(ted)f(to)n(w)n(ards)0 2685 y(supp)r(ort)c(for)g(the)h
(common)f(x86)g(laptop)g(host)g(con)n(troller)f(t)n(yp)r(es.)0
2976 y Fe(9.1)112 b(Card)38 b(Services)f(en)m(try)g(p)s(oin)m(ts)g(for)
g(so)s(c)m(k)m(et)g(driv)m(ers)0 3186 y Fk(Card)27 b(Services)f(pro)n
(vides)g(sp)r(ecial)i(en)n(try)f(p)r(oin)n(ts)g(for)g(registering)f
(and)h(unregistering)f(so)r(c)n(k)n(et)h(driv)n(ers:)208
3416 y Fd(typedef)40 b(int)g(\(*ss_entry_t\)\(u_int)k(sock,)c(u_int)g
(cmd,)g(void)g(*arg\);)208 3520 y(extern)g(int)g
(register_ss_entry\(int)k(nsock,)c(ss_entry_t)i(entry\);)208
3624 y(extern)e(void)g(unregister_ss_entry\(ss_entry_)q(t)45
b(entry\);)0 3864 y Fk(The)e(so)r(c)n(k)n(et)e(driv)n(er)h(in)n(v)n(ok)
n(es)f Fh(register_ss_ent)o(ry)36 b Fk(with)44 b Fh(nsock)c
Fk(indicating)j(ho)n(w)f(man)n(y)g(so)r(c)n(k)n(ets)g(are)f(o)n(wned)h
(b)n(y)0 3977 y(this)c(driv)n(er,)h(and)f Fh(entry)e
Fk(p)r(oin)n(ting)i(to)g(the)g(function)h(that)f(will)g(pro)n(vide)f
(so)r(c)n(k)n(et)g(services)f(for)h(these)h(so)r(c)n(k)n(ets.)67
b(The)0 4091 y Fh(unregister_ss_en)o(tr)o(y)29 b Fk(routine)35
b(can)f(b)r(e)i(safely)f(in)n(v)n(ok)n(ed)e(whenev)n(er)h(Card)g
(Services)g(do)r(es)h(not)g(ha)n(v)n(e)f(an)n(y)g(callbac)n(k)0
4205 y(functions)28 b(registered)e(for)h(so)r(c)n(k)n(ets)f(o)n(wned)h
(b)n(y)g(this)h(driv)n(er.)0 4496 y Fe(9.2)112 b(Services)37
b(pro)m(vided)g(b)m(y)h(the)f(so)s(c)m(k)m(et)g(driv)m(er)0
4706 y Fk(So)r(c)n(k)n(et)27 b(Services)f(calls)h(ha)n(v)n(e)g(the)h
(follo)n(wing)e(form:)208 4936 y Fd(#include)41 b("pcmcia/ss.h")208
5144 y(int)e(\(*ss_entry\)\(u_int)k(sock,)e(int)f(service,)h(void)f
(*arg\);)0 5384 y Fk(Non-zero)26 b(return)h(co)r(des)g(indicate)h(that)
g(a)f(request)g(failed.)p eop
%%Page: 66 66
66 65 bop 0 -167 3900 5 v 0 -200 a Ff(9.)73 b(The)32
b(So)s(c)m(k)m(et)h(Driv)m(er)g(La)m(y)m(er)2638 b Fk(66)0
162 y Ff(9.2.1)94 b(SS_InquireSo)s(c)m(k)m(et)208 353
y Fd(int)39 b(\(*ss_entry\)\(u_int)k(sock,)e(SS_InquireSocket,)i
(socket_cap_t)e(*cap\);)0 592 y Fk(The)28 b Fh(socket_cap_t)22
b Fk(data)27 b(structure)g(is)h(giv)n(en)e(b)n(y:)208
806 y Fd(typedef)40 b(struct)h(socket_cap_t)h({)521 910
y(u_int)433 b(features;)521 1014 y(u_int)g(irq_mask;)521
1118 y(u_int)g(map_size;)521 1222 y(u_char)394 b(pci_irq;)521
1326 y(u_char)g(cardbus;)521 1430 y(struct)41 b(bus_operations)h(*bus;)
208 1534 y(})d(socket_cap_t;)0 1757 y Fk(The)d Fh(SS_InquireSocket)30
b Fk(service)35 b(is)h(used)g(to)h(retriev)n(e)e(so)r(c)n(k)n(et)g
(capabilities.)62 b(The)36 b Fh(irq_mask)d Fk(\034eld)k(is)f(a)g(bit)h
(mask)0 1871 y(indicating)j(whic)n(h)g(ISA)h(in)n(terrupts)f(can)g(b)r
(e)g(con\034gured)f(for)h(IO)g(cards.)74 b(The)40 b Fh(map_size)d
Fk(\034eld)k(giv)n(es)e(the)h(address)0 1984 y(gran)n(ularit)n(y)21
b(of)j(memory)f(windo)n(ws.)35 b(The)24 b Fh(pci_irq)d
Fk(\034eld,)k(if)g(not)f(zero,)f(is)h(the)h(PCI)f(in)n(terrupt)g(n)n
(um)n(b)r(er)f(assigned)g(to)h(this)0 2098 y(so)r(c)n(k)n(et.)35
b(It)24 b(is)g(indep)r(enden)n(t)h(of)f Fh(irq_mask)p
Fk(,)e(and)i(can)g(actually)f(b)r(e)i(used)f(in)g(an)n(y)g(situation)g
(where)f(exactly)h(one)f(in)n(terrupt)0 2211 y(is)31
b(asso)r(ciated)e(with)i(a)g(sp)r(eci\034c)g(so)r(c)n(k)n(et.)45
b(F)-7 b(or)30 b(CardBus)g(bridges,)h(the)g Fh(cardbus)d
Fk(\034eld)j(should)f(b)r(e)i(non-zero,)e(and)g(giv)n(es)0
2325 y(the)e(PCI)g(bus)g(n)n(um)n(b)r(er)f(of)g(the)h(CardBus)f(side)g
(of)h(the)g(bridge.)0 2482 y(F)-7 b(or)26 b(so)r(c)n(k)n(ets)g(that)h
(do)g(not)g(directly)g(map)f(cards)g(in)n(to)h(the)g(host)g(IO)g(and)f
(memory)g(space,)h(the)g Fh(bus)f Fk(\034eld)h(is)g(a)g(p)r(oin)n(ter)f
(to)0 2595 y(a)h(table)h(of)f(en)n(try)g(p)r(oin)n(ts)h(for)f(IO)g
(primitiv)n(es)g(for)g(this)h(so)r(c)n(k)n(et.)0 2752
y(The)g(follo)n(wing)e(\035ags)h(ma)n(y)f(b)r(e)i(sp)r(eci\034ed)g(in)g
Fh(features)p Fk(:)0 2991 y Fh(SS_CAP_PAGE_REGS)208 3138
y Fk(Indicates)f(that)h(this)f(so)r(c)n(k)n(et)g(supp)r(orts)g(full)h
(32-bit)f(addressing)f(for)h(16-bit)g(PC)h(Card)f(memory)f(windo)n(ws.)
0 3318 y Fh(SS_CAP_VIRTUAL_B)o(US)208 3465 y Fk(Indicates)f(that)i
(16-bit)e(card)h(memory)f(and)h(IO)g(accesses)f(m)n(ust)h(b)r(e)h(p)r
(erformed)e(using)h(the)h(bus)f(op)r(erations)f(table,)208
3578 y(rather)h(than)i(using)f(nativ)n(e)g(bus)h(op)r(erations.)0
3758 y Fh(SS_CAP_MEM_ALIGN)208 3905 y Fk(Indicates)f(that)h(memory)e
(windo)n(ws)h(m)n(ust)h(b)r(e)g(aligned)f(b)n(y)g(the)h(windo)n(w)f
(size.)0 4085 y Fh(SS_CAP_STATIC_MA)o(P)208 4232 y Fk(Indicates)c(that)
h(memory)f(windo)n(ws)h(are)e(statically)i(mapp)r(ed)g(at)g(\034xed)g
(lo)r(cations)f(in)h(the)g(host)g(address)e(space,)i(and)208
4345 y(cannot)j(b)r(e)h(rep)r(ositioned.)0 4525 y Fh(SS_CAP_PCCARD)208
4672 y Fk(Indicates)f(that)h(this)f(so)r(c)n(k)n(et)g(supp)r(orts)g
(16-bit)g(PC)h(cards.)0 4852 y Fh(SS_CAP_CARDBUS)208
4999 y Fk(Indicates)f(that)h(this)f(so)r(c)n(k)n(et)g(supp)r(orts)g
(32-bit)g(CardBus)f(cards.)p eop
%%Page: 67 67
67 66 bop 0 -167 3900 5 v 0 -200 a Ff(9.)73 b(The)32
b(So)s(c)m(k)m(et)h(Driv)m(er)g(La)m(y)m(er)2638 b Fk(67)0
162 y Ff(9.2.2)94 b(SS_RegisterCallbac)m(k)208 353 y
Fd(int)39 b(\(*ss_entry\)\(u_int)k(sock,)e(SS_RegisterCallback,)i
(ss_callback_t)f(*call\);)0 592 y Fk(The)28 b Fh(ss_callback_t)22
b Fk(data)27 b(structure)g(is)g(giv)n(en)g(b)n(y:)208
806 y Fd(typedef)40 b(struct)h(ss_callback_t)h({)521
910 y(void)472 b(\(*handler\)\(void)42 b(*info,)f(u_int)f(events\);)521
1014 y(void)472 b(*info;)208 1118 y(})39 b(ss_callback_t;)0
1341 y Fk(The)25 b Fh(SS_RegisterCallba)o(ck)19 b Fk(service)24
b(sets)h(up)g(a)g(callbac)n(k)f(function)i(to)f(b)r(e)h(in)n(v)n(ok)n
(ed)d(when)j(the)g(so)r(c)n(k)n(et)e(driv)n(er)g(receiv)n(es)0
1454 y(card)33 b(status)h(c)n(hange)e(ev)n(en)n(ts.)55
b(T)-7 b(o)33 b(unregister)g(a)g(callbac)n(k,)i(this)f(function)g(is)g
(called)f(with)h(a)g(handler)f(v)-5 b(alue)34 b(of)g
Fh(NULL)p Fk(.)0 1568 y(Only)27 b(one)g(callbac)n(k)g(function)h(can)f
(b)r(e)h(registered)e(p)r(er)h(so)r(c)n(k)n(et.)0 1724
y(The)g(handler)f(will)h(b)r(e)g(called)g(with)g(the)g(v)-5
b(alue)27 b(of)g Fh(info)e Fk(that)i(w)n(as)f(passed)g(to)h
Fh(SS_RegisterCall)o(bac)o(k)21 b Fk(for)26 b(this)h(so)r(c)n(k)n(et,)0
1838 y(and)g(with)h(a)g(bit)g(map)f(of)h(ev)n(en)n(ts)e(in)i(the)g
Fh(events)d Fk(parameter.)36 b(The)27 b(follo)n(wing)g(ev)n(en)n(ts)g
(are)f(de\034ned:)0 2077 y Fh(SS_DETECT)208 2224 y Fk(A)h(card)g
(detect)h(c)n(hange)f(\(insertion)g(or)f(remo)n(v)-5
b(al\))27 b(has)g(b)r(een)h(detected.)0 2404 y Fh(SS_READY)208
2551 y Fk(A)f(memory)g(card's)g(ready)f(signal)h(has)g(c)n(hanged)f
(state.)0 2731 y Fh(SS_BATDEAD)208 2878 y Fk(A)h(memory)g(card)g(has)g
(raised)f(the)i(battery-dead)f(signal.)0 3058 y Fh(SS_BATWARN)208
3205 y Fk(A)g(memory)g(card)g(has)g(raised)f(the)i(battery-lo)n(w)e
(signal.)0 3385 y Fh(SS_STSCHG)208 3531 y Fk(An)i(IO)f(card)f(has)h
(raised)g(the)h(status)f(c)n(hange)g(signal.)0 3804 y
Ff(9.2.3)94 b(SS_GetStatus)208 3995 y Fd(int)39 b(\(*ss_entry\)\(u_int)
k(sock,)e(SS_GetStatus,)h(u_int)e(*status\);)0 4234 y
Fk(The)35 b Fh(SS_GetStatus)30 b Fk(service)k(returns)h(the)g(curren)n
(t)f(status)h(of)g(this)g(so)r(c)n(k)n(et.)59 b(The)35
b Fh(status)d Fk(parameter)i(will)h(b)r(e)h(con-)0 4348
y(structed)27 b(out)h(of)g(the)g(follo)n(wing)e(\035ags:)0
4587 y Fh(SS_WRPROT)208 4734 y Fk(The)h(card)g(is)g(write-protected.)0
4914 y Fh(SS_BATDEAD)208 5061 y Fk(A)g(memory)g(card)g(has)g(raised)f
(the)i(battery-dead)f(signal.)0 5241 y Fh(SS_BATWARN)208
5388 y Fk(A)g(memory)g(card)g(has)g(raised)f(the)i(battery-lo)n(w)e
(signal.)p eop
%%Page: 68 68
68 67 bop 0 -167 3900 5 v 0 -200 a Ff(9.)73 b(The)32
b(So)s(c)m(k)m(et)h(Driv)m(er)g(La)m(y)m(er)2638 b Fk(68)0
162 y Fh(SS_READY)208 306 y Fk(A)27 b(memory)g(card)g(has)g(raised)f
(its)i(ready)f(signal.)0 482 y Fh(SS_DETECT)208 627 y
Fk(A)g(card)g(is)h(presen)n(t.)0 802 y Fh(SS_POWERON)208
947 y Fk(P)n(o)n(w)n(er)e(has)h(b)r(een)h(applied)f(to)h(the)g(so)r(c)n
(k)n(et.)0 1122 y Fh(SS_STSCHG)208 1267 y Fk(An)g(IO)f(card)f(has)h
(raised)g(the)h(status)f(c)n(hange)g(signal.)0 1443 y
Fh(SS_CARDBUS)208 1587 y Fk(The)g(so)r(c)n(k)n(et)g(con)n(tains)f(a)h
(CardBus)g(card)f(\(as)i(opp)r(osed)f(to)g(a)g(16-bit)g(PC)h(Card\).)0
1763 y Fh(SS_3VCARD)208 1908 y Fk(The)f(card)g(m)n(ust)h(b)r(e)f(op)r
(erated)g(at)h(no)f(more)g(than)g(3.3V.)0 2083 y Fh(SS_XVCARD)208
2228 y Fk(The)g(card)g(m)n(ust)h(b)r(e)f(op)r(erated)g(at)h(no)f(more)g
(than)g(X.XV)i(\(not)f(y)n(et)f(de\034ned\).)0 2499 y
Ff(9.2.4)94 b(SS_GetSo)s(c)m(k)m(et,)32 b(SS_SetSo)s(c)m(k)m(et)208
2687 y Fd(int)39 b(\(*ss_entry\)\(u_int)k(sock,)e(SS_GetSocket,)h
(socket_state_t)g(*\);)208 2791 y(int)d(\(*ss_entry\)\(u_int)k(sock,)e
(SS_SetSocket,)h(socket_state_t)g(*\);)0 3020 y Fk(The)28
b Fh(socket_state_t)21 b Fk(data)27 b(structure)g(is)h(giv)n(en)f(b)n
(y:)208 3225 y Fd(typedef)40 b(struct)h(socket_state_t)h({)521
3329 y(u_int)433 b(flags;)521 3433 y(u_int)g(csc_mask;)521
3537 y(u_char)394 b(Vcc,)40 b(Vpp;)521 3641 y(u_char)394
b(io_irq;)208 3745 y(})39 b(socket_state_t;)0 3960 y
Fk(The)23 b Fh(csc_mask)d Fk(\034eld)j(indicates)g(whic)n(h)g(ev)n(en)n
(t)f(t)n(yp)r(es)h(should)g(generate)f(card)g(status)h(c)n(hange)e(in)n
(terrupts.)35 b(The)23 b(follo)n(wing)0 4073 y(ev)n(en)n(t)k(t)n(yp)r
(es)h(can)f(b)r(e)h(monitored:)0 4302 y Fh(SS_DETECT)208
4446 y Fk(Card)e(detect)i(c)n(hanges)e(\(insertion)i(or)e(remo)n(v)-5
b(al\).)0 4622 y Fh(SS_READY)208 4767 y Fk(Memory)26
b(card)h(ready/busy)f(c)n(hanges.)0 4942 y Fh(SS_BATDEAD)208
5087 y Fk(Memory)g(card)h(battery-dead)f(c)n(hanges.)0
5263 y Fh(SS_BATWARN)208 5407 y Fk(Memory)g(card)h(battery-lo)n(w)f(c)n
(hanges.)p eop
%%Page: 69 69
69 68 bop 0 -167 3900 5 v 0 -200 a Ff(9.)73 b(The)32
b(So)s(c)m(k)m(et)h(Driv)m(er)g(La)m(y)m(er)2638 b Fk(69)0
162 y Fh(SS_STSCHG)208 308 y Fk(IO)27 b(card)f(status)i(c)n(hanges.)0
548 y(The)h Fh(Vcc)e Fk(and)h Fh(Vpp)g Fk(parameters)f(are)g(in)i
(units)g(of)g(0.1)e(v)n(olts.)40 b(If)29 b(non-zero,)e
Fh(io_irq)f Fk(sp)r(eci\034es)i(an)h(in)n(terrupt)f(n)n(um)n(b)r(er)g
(to)0 662 y(b)r(e)g(assigned)e(to)i(the)g(card,)e(in)i(IO)f(mo)r(de.)37
b(The)28 b(follo)n(wing)e(\034elds)i(are)f(de\034ned)g(in)h
Fh(flags)p Fk(:)0 901 y Fh(SS_PWR_AUTO)208 1048 y Fk(Indicates)f(that)h
(the)g(so)r(c)n(k)n(et)e(should)h(automatically)g(p)r(o)n(w)n(er)f(up)i
(so)r(c)n(k)n(ets)e(at)i(card)e(insertion)h(time,)h(if)g(supp)r(orted.)
0 1228 y Fh(SS_IOCARD)208 1375 y Fk(Indicates)34 b(that)i(the)f(so)r(c)
n(k)n(et)f(should)h(b)r(e)h(con\034gured)e(for)g(\020memory)g(and)h
(IO\021)42 b(in)n(terface)34 b(mo)r(de,)j(as)e(opp)r(osed)f(to)208
1488 y(simple)27 b(memory)g(card)g(mo)r(de.)0 1668 y
Fh(SS_RESET)208 1815 y Fk(Indicates)g(that)h(the)g(card's)e(hardw)n
(are)f(reset)i(signal)g(should)g(b)r(e)h(raised.)0 1995
y Fh(SS_SPKR_ENA)208 2142 y Fk(Indicates)f(that)h(sp)r(eak)n(er)e
(output)i(should)f(b)r(e)h(enabled)f(for)g(this)h(so)r(c)n(k)n(et.)0
2322 y Fh(SS_OUTPUT_ENA)208 2468 y Fk(Indicates)f(that)h(data)f
(signals)f(to)h(the)h(card)f(should)g(b)r(e)h(activ)-5
b(ated.)0 2741 y Ff(9.2.5)94 b(SS_GetIOMap,)31 b(SS_SetIOMap)208
2932 y Fd(int)39 b(\(*ss_entry\)\(u_int)k(sock,)e(SS_GetIOMap,)h
(pccard_io_map)g(*\);)208 3036 y(int)d(\(*ss_entry\)\(u_int)k(sock,)e
(SS_SetIOMap,)h(pccard_io_map)g(*\);)0 3276 y Fk(The)28
b Fh(pccard_io_map)22 b Fk(data)27 b(structure)g(is)g(giv)n(en)g(b)n
(y:)208 3489 y Fd(typedef)40 b(struct)h(pccard_io_map)h({)521
3593 y(u_char)394 b(map;)521 3697 y(u_char)g(flags;)521
3801 y(u_short)355 b(speed;)521 3905 y(u_short)g(start,)40
b(stop;)208 4010 y(})f(pccard_io_map;)0 4232 y Fk(The)20
b Fh(SS_GetIOMap)15 b Fk(and)20 b Fh(SS_SetIOMap)c Fk(en)n(tries)j(are)
g(used)h(to)g(con\034gure)f(IO)g(space)g(windo)n(ws.)34
b(IO)20 b(windo)n(ws)f(are)g(assumed)0 4346 y(to)25 b(not)f(supp)r(ort)
h(address)e(translation.)35 b(The)25 b(Lin)n(ux)f(Card)g(Services)g(la)
n(y)n(er)f(assumes)h(that)h(eac)n(h)f(so)r(c)n(k)n(et)g(has)g(at)h
(least)f(t)n(w)n(o)0 4460 y(indep)r(enden)n(tly)k(con\034gurable)e(IO)h
(p)r(ort)h(windo)n(ws.)0 4616 y(The)40 b Fh(map)e Fk(\034eld)i(sp)r
(eci\034es)f(whic)n(h)g(IO)h(map)f(should)g(b)r(e)h(accessed.)71
b(The)40 b Fh(speed)d Fk(\034eld)j(is)g(the)g(map)f(access)f(sp)r(eed)i
(in)0 4730 y(nanoseconds.)50 b(The)33 b Fh(start)e Fk(and)h
Fh(stop)f Fk(\034elds)i(giv)n(e)f(the)h(lo)n(w)n(er)e(and)h(upp)r(er)h
(addresses)e(for)h(the)h(IO)f(map.)52 b(The)33 b Fh(flags)0
4843 y Fk(\034eld)28 b(is)f(comp)r(osed)g(of)h(the)g(follo)n(wing:)0
5083 y Fh(MAP_ACTIVE)208 5230 y Fk(Sp)r(eci\034es)f(that)h(the)g
(address)e(map)i(should)f(b)r(e)h(enabled.)p eop
%%Page: 70 70
70 69 bop 0 -167 3900 5 v 0 -200 a Ff(9.)73 b(The)32
b(So)s(c)m(k)m(et)h(Driv)m(er)g(La)m(y)m(er)2638 b Fk(70)0
162 y Fh(MAP_16BIT)208 308 y Fk(Sp)r(eci\034es)27 b(that)h(the)g(map)g
(should)f(b)r(e)h(con\034gured)e(for)h(16-bit)g(accesses)f(\(as)h(opp)r
(osed)g(to)h(8-bit\).)0 488 y Fh(MAP_AUTOSZ)208 634 y
Fk(Sp)r(eci\034es)e(that)h(the)f(map)g(should)g(b)r(e)h(con\034gured)e
(to)h(auto-size)f(bus)h(accesses)f(in)i(resp)r(onse)e(to)h(the)g
(card's)g Fh(IOCS16)208 748 y Fk(signal.)0 927 y Fh(MAP_0WS)208
1074 y Fk(Requests)h(zero)f(w)n(ait)h(states,)h(as)e(opp)r(osed)h(to)h
(standard)e(ISA)i(bus)g(timing.)0 1253 y Fh(MAP_WRPROT)208
1400 y Fk(Sp)r(eci\034es)f(that)h(the)g(map)g(should)f(b)r(e)h(write)f
(protected.)0 1579 y Fh(MAP_USE_WAIT)208 1726 y Fk(Sp)r(eci\034es)g
(that)h(access)e(timing)i(should)g(resp)r(ect)f(the)h(card's)e
Fh(WAIT)g Fk(signal.)0 1905 y Fh(MAP_PREFETCH)208 2052
y Fk(Sp)r(eci\034es)h(that)h(this)g(map)f(ma)n(y)g(b)r(e)h
(con\034gured)f(for)g(prefetc)n(hing.)0 2324 y Ff(9.2.6)94
b(SS_GetMemMap,)29 b(SS_SetMemMap)208 2515 y Fd(int)39
b(\(*ss_entry\)\(u_int)k(sock,)e(SS_GetMemMap,)h(pccard_mem_map)g(*\);)
208 2619 y(int)d(\(*ss_entry\)\(u_int)k(sock,)e(SS_SetMemMap,)h
(pccard_mem_map)g(*\);)0 2857 y Fk(The)28 b Fh(pccard_mem_map)21
b Fk(data)27 b(structure)g(is)h(giv)n(en)f(b)n(y:)208
3070 y Fd(typedef)40 b(struct)h(pccard_mem_map)h({)521
3174 y(u_char)394 b(map;)521 3278 y(u_char)g(flags;)521
3382 y(u_short)355 b(speed;)521 3486 y(u_long)394 b(sys_start,)41
b(sys_stop;)521 3590 y(u_int)433 b(card_start;)208 3694
y(})39 b(pccard_mem_map;)0 3916 y Fk(The)c Fh(map)f Fk(\034eld)i(sp)r
(eci\034es)f(the)g(map)h(n)n(um)n(b)r(er.)59 b(The)35
b Fh(speed)f Fk(\034eld)h(sp)r(eci\034es)g(an)g(access)f(sp)r(eed)h(in)
h(nanoseconds.)58 b(The)0 4030 y Fh(sys_start)22 b Fk(and)k
Fh(sys_stop)c Fk(\034elds)k(giv)n(e)f(the)i(starting)e(and)g(ending)h
(addresses)e(for)i(the)g(windo)n(w)f(in)h(the)h(host's)e(ph)n(ysical)0
4143 y(address)31 b(space.)51 b(The)32 b Fh(card_start)d
Fk(v)-5 b(alue)32 b(sp)r(eci\034es)g(the)h(card)f(address)f(to)h(b)r(e)
h(mapp)r(ed)g(to)f Fh(sys_start)p Fk(.)48 b(The)32 b(Lin)n(ux)0
4257 y(Card)24 b(Services)h(la)n(y)n(er)e(assumes)i(that)g(eac)n(h)g
(so)r(c)n(k)n(et)f(has)h(at)g(least)g(four)g(indep)r(enden)n(tly)h
(con\034gurable)d(memory)i(windo)n(ws.)0 4495 y Fh(MAP_ACTIVE)208
4642 y Fk(Sp)r(eci\034es)i(that)h(the)g(address)e(map)i(should)f(b)r(e)
h(enabled.)0 4821 y Fh(MAP_16BIT)208 4968 y Fk(Sp)r(eci\034es)f(that)h
(the)g(map)g(should)f(b)r(e)h(con\034gured)e(for)h(16-bit)g(accesses)f
(\(as)h(opp)r(osed)g(to)h(8-bit\).)0 5147 y Fh(MAP_AUTOSZ)208
5294 y Fk(Sp)r(eci\034es)e(that)h(the)f(map)g(should)g(b)r(e)h
(con\034gured)e(to)h(auto-size)f(bus)h(accesses)f(in)i(resp)r(onse)e
(to)h(the)g(card's)g Fh(IOCS16)208 5407 y Fk(signal.)p
eop
%%Page: 71 71
71 70 bop 0 -167 3900 5 v 0 -200 a Ff(9.)73 b(The)32
b(So)s(c)m(k)m(et)h(Driv)m(er)g(La)m(y)m(er)2638 b Fk(71)0
162 y Fh(MAP_0WS)208 308 y Fk(Requests)27 b(zero)f(w)n(ait)h(states,)h
(as)e(opp)r(osed)h(to)h(standard)e(ISA)i(bus)g(timing.)0
488 y Fh(MAP_WRPROT)208 635 y Fk(Sp)r(eci\034es)f(that)h(the)g(map)g
(should)f(b)r(e)h(write)f(protected.)0 815 y Fh(MAP_ATTRIB)208
962 y Fk(Sp)r(eci\034es)g(that)h(the)g(map)g(should)f(b)r(e)h(for)f
(attribute)h(\(as)f(opp)r(osed)g(to)g(common\))g(memory)-7
b(.)0 1142 y Fh(MAP_USE_WAIT)208 1289 y Fk(Sp)r(eci\034es)27
b(that)h(access)e(timing)i(should)g(resp)r(ect)f(the)h(card's)e
Fh(WAIT)g Fk(signal.)0 1561 y Ff(9.2.7)94 b(SS_GetBridge,)30
b(SS_SetBridge)208 1752 y Fd(int)39 b(\(*ss_entry\)\(u_int)k(sock,)e
(SS_GetBridge,)h(cb_bridge_map)g(*\);)208 1856 y(int)d
(\(*ss_entry\)\(u_int)k(sock,)e(SS_SetBridge,)h(cb_bridge_map)g(*\);)0
2096 y Fk(The)28 b Fh(cb_bridge_map)22 b Fk(data)27 b(structure)g(is)g
(giv)n(en)g(b)n(y:)208 2309 y Fd(typedef)40 b(struct)h(cb_bridge_map)h
({)521 2413 y(u_char)394 b(map;)521 2518 y(u_char)g(flags;)521
2622 y(u_int)433 b(start,)40 b(stop;)208 2726 y(})f(cb_bridge_map;)0
2949 y Fk(The)f Fh(SS_GetBridge)32 b Fk(and)38 b Fh(SS_SetBridge)33
b Fk(en)n(try)k(p)r(oin)n(ts)g(are)g(used)h(for)f(con\034guring)f
(bridge)h(address)g(windo)n(ws)g(for)0 3062 y(CardBus)d(devices.)59
b(They)35 b(are)f(similar)g(to)h(the)h(16-bit)e(IO)h(and)g(memory)f
(map)h(services.)58 b(It)36 b(is)f(assumed)g(that)g(eac)n(h)0
3176 y(CardBus)26 b(so)r(c)n(k)n(et)h(has)g(at)g(least)g(t)n(w)n(o)g
(IO)g(and)h(t)n(w)n(o)f(memory)f(bridge)h(windo)n(ws.)36
b(The)28 b Fh(flags)d Fk(\034eld)j(is)g(comp)r(osed)f(of:)0
3415 y Fh(MAP_ACTIVE)208 3562 y Fk(Sp)r(eci\034es)g(that)h(the)g
(address)e(map)i(should)f(b)r(e)h(enabled.)0 3742 y Fh(MAP_PREFETCH)208
3889 y Fk(Sp)r(eci\034es)f(that)h(this)g(map)f(can)h(b)r(e)g
(con\034gured)e(for)h(prefetc)n(hing.)0 4069 y Fh(MAP_IOSPACE)208
4216 y Fk(Sp)r(eci\034es)g(that)h(this)g(map)f(should)h(b)r(e)g(for)f
(IO)g(space)g(\(as)g(opp)r(osed)g(to)g(memory)g(space\).)0
4488 y Ff(9.2.8)94 b(SS_Pro)s(cSetup)208 4679 y Fd(int)39
b(\(*ss_entry\)\(u_int)k(sock,)e(SS_ProcSetup,)h(struct)e
(proc_dir_entry)j(*base\);)0 4919 y Fk(Card)30 b(Services)g(uses)g
(this)h(en)n(try)f(p)r(oin)n(t)h(to)f(giv)n(e)g(the)h(so)r(c)n(k)n(et)f
(driv)n(er)f(a)h(pro)r(cfs)h(directory)e(handle)i(under)f(whic)n(h)h
(it)g(ma)n(y)0 5032 y(create)24 b(status)h(\034les)g(for)f(a)h(sp)r
(eci\034c)g(so)r(c)n(k)n(et.)35 b(It)25 b(is)g(the)g(so)r(c)n(k)n(et)f
(driv)n(er's)g(resp)r(onsbilit)n(y)g(to)g(delete)i(an)n(y)e(pro)r(c)g
(en)n(tries)g(b)r(efore)0 5146 y(it)k(is)f(unloaded.)p
eop
%%Page: 72 72
72 71 bop 0 -167 3900 5 v 0 -200 a Ff(9.)73 b(The)32
b(So)s(c)m(k)m(et)h(Driv)m(er)g(La)m(y)m(er)2638 b Fk(72)0
162 y Fe(9.3)112 b(Supp)s(orting)37 b(un)m(usual)i(so)s(c)m(k)m(et)e
(arc)m(hitectures)0 372 y Fk(The)28 b(So)r(c)n(k)n(et)f(Services)g(in)n
(terface)h(is)g(orien)n(ted)f(to)n(w)n(ards)f(so)r(c)n(k)n(et)h(con)n
(trollers)f(that)i(allo)n(w)f(PCMCIA)i(cards)e(to)h(b)r(e)g(con\034g-)0
485 y(ured)g(to)g(mimic)g(nativ)n(e)g(system)g(devices)g(with)g(the)h
(same)e(functionalit)n(y)-7 b(.)39 b(The)28 b(ExCA)h(standard)e(sp)r
(eci\034es)h(that)g(so)r(c)n(k)n(et)0 599 y(con)n(trollers)d(should)i
(pro)n(vide)e(t)n(w)n(o)h(IO)h(and)g(\034v)n(e)f(memory)h(windo)n(ws)f
(p)r(er)h(so)r(c)n(k)n(et,)f(whic)n(h)h(can)f(b)r(e)i(indep)r(enden)n
(tly)f(con\034g-)0 712 y(ured)21 b(and)h(p)r(ositioned)f(in)h(the)g
(host)f(address)g(space)g(and)g(mapp)r(ed)h(to)f(arbitrary)f(segmen)n
(ts)h(of)g(card)g(address)f(space.)34 b(Some)0 826 y(con)n(trollers)29
b(and)i(arc)n(hitectures)e(do)i(not)g(pro)n(vide)f(this)h(lev)n(el)g
(of)g(functionalit)n(y)-7 b(.)47 b(In)31 b(these)g(situations,)h(So)r
(c)n(k)n(et)e(Services)0 940 y(can)d(e\033ectiv)n(ely)h(virtualize)e
(the)i(so)r(c)n(k)n(et)f(in)n(terface)g(for)g(clien)n(t)g(driv)n(ers.)0
1096 y(On)g(the)h(clien)n(t)f(side)g(\(including)h(in)n(ternal)e(Card)h
(Services)f(uses\),)h(to)g(use)g(the)h(virtualized)e(so)r(c)n(k)n(et)g
(in)n(terface,)h(co)r(de)g(m)n(ust)0 1210 y(\034rst)g(sp)r(ecify:)208
1438 y Fd(#include)41 b("pcmcia/bus_ops.h")0 1676 y Fk(All)28
b(IO)e(op)r(erations)g(then)i(need)f(to)g(b)r(e)h(replaced)e(with)i
(new)f(bus-neutral)f(forms.)37 b(The)27 b(follo)n(wing)f(functions)h
(need)h(to)f(b)r(e)0 1790 y(virtualized:)125 2028 y Fb(\017)41
b Fh(inb)p Fk(,)26 b Fh(inw)p Fk(,)g Fh(inl)p Fk(,)h
Fh(inw_ns)p Fk(,)e Fh(inl_ns)125 2207 y Fb(\017)41 b
Fh(insb)p Fk(,)26 b Fh(insw)p Fk(,)g Fh(insl)p Fk(,)g
Fh(insw_ns)p Fk(,)e Fh(insl_ns)125 2387 y Fb(\017)41
b Fh(outb)p Fk(,)26 b Fh(outw)p Fk(,)g Fh(outl)p Fk(,)g
Fh(outw_ns)p Fk(,)e Fh(outl_ns)125 2566 y Fb(\017)41
b Fh(outsb)p Fk(,)25 b Fh(outsw)p Fk(,)h Fh(outsl)p Fk(,)f
Fh(outsw_ns)p Fk(,)g Fh(outsl_ns)125 2746 y Fb(\017)41
b Fh(readb)p Fk(,)25 b Fh(readw)p Fk(,)h Fh(readl)p Fk(,)f
Fh(readw_ns)p Fk(,)g Fh(readl_ns)125 2925 y Fb(\017)41
b Fh(writeb)p Fk(,)25 b Fh(writew)p Fk(,)g Fh(writel)p
Fk(,)g Fh(writew_ns)p Fk(,)f Fh(writel_ns)125 3105 y
Fb(\017)41 b Fh(ioremap)p Fk(,)24 b Fh(iounmap)125 3284
y Fb(\017)41 b Fh(memcpy_fromio)p Fk(,)22 b Fh(memcpy_toio)125
3463 y Fb(\017)41 b Fh(request_irq)p Fk(,)23 b Fh(free_irq)0
3702 y Fk(The)e(bus-neutral)g(functions)h(ha)n(v)n(e)e(a)h(pre\034x)g
(of)g(\020)7 b Fh(bus_)p Fk(\021,)20 b(with)i(a)f(new)g(\034rst)h
(argumen)n(t,)f(the)h(bus)f(op)r(erations)f(table)i(p)r(oin)n(ter)0
3815 y(returned)27 b(b)n(y)g Fh(SS_InquireSocket)p Fk(.)k(F)-7
b(or)26 b(example,)i Fh(inb\(port\))23 b Fk(should)28
b(b)r(e)g(replaced)e(with)i Fh(bus_inb\(bus,)39 b(port\))p
Fk(.)0 3972 y(All)29 b(the)g(IO)g(primitiv)n(es)f(are)g(de\034ned)h(as)
f(macros)f(that)i(call)f(en)n(try)g(p)r(oin)n(ts)h(in)g(the)g(bus)g(op)
r(erations)e(table.)40 b(There)28 b(is)h(not)0 4085 y(a)e(one-to-one)f
(mapping)h(from)g(IO)h(primitiv)n(es)f(to)g(bus)h(op)r(eration)e(en)n
(try)h(p)r(oin)n(ts.)0 4242 y(The)h(bus)f(op)r(erations)f(table)i(is)f
(de\034ned)h(as:)208 4470 y Fd(typedef)40 b(struct)h(bus_operations)h
({)521 4574 y(void)158 b(*priv;)521 4678 y(u32)197 b(\(*b_in\)\(void)42
b(*bus,)e(u32)g(port,)g(s32)g(sz\);)521 4783 y(void)158
b(\(*b_ins\)\(void)42 b(*bus,)e(u32)g(port,)h(void)f(*buf,)1188
4887 y(u32)g(count,)g(s32)g(sz\);)521 4991 y(void)158
b(\(*b_out\)\(void)42 b(*bus,)e(u32)g(val,)g(u32)g(port,)h(s32)e(sz\);)
521 5095 y(void)158 b(\(*b_outs\)\(void)42 b(*bus,)f(u32)f(port,)g
(void)g(*buf,)1227 5199 y(u32)g(count,)h(s32)f(sz\);)521
5303 y(void)158 b(*\(*b_ioremap\)\(void)43 b(*bus,)e(u_long)f(ofs,)g
(u_long)h(sz\);)521 5407 y(void)158 b(\(*b_iounmap\)\(void)43
b(*bus,)d(void)g(*addr\);)p eop
%%Page: 73 73
73 72 bop 0 -167 3900 5 v 0 -200 a Ff(10.)73 b(Where)32
b(to)f(Go)h(for)g(More)f(Information)2141 b Fk(73)521
162 y Fd(u32)197 b(\(*b_read\)\(void)42 b(*bus,)f(void)f(*addr,)g(s32)g
(sz\);)521 266 y(void)158 b(\(*b_write\)\(void)43 b(*bus,)d(u32)g(val,)
g(void)g(*addr,)g(s32)g(sz\);)521 370 y(void)158 b
(\(*b_copy_from\)\(void)43 b(*bus,)e(void)f(*d,)g(void)g(*s,)g(u32)g
(count\);)521 474 y(void)158 b(\(*b_copy_to\)\(void)43
b(*bus,)d(void)g(*d,)g(void)g(*s,)g(u32)g(count\);)521
578 y(int)197 b(\(*b_request_irq\)\(void)44 b(*bus,)c(u_int)g(irq,)1502
682 y(void)g(\(*handler\)\(int,)i(void)e(*,)2129 786
y(struct)h(pt_regs)g(*\),)1502 890 y(u_long)f(flags,)h(const)f(char)g
(*device,)1502 995 y(void)g(*dev_id\);)521 1099 y(void)158
b(\(*b_free_irq\)\(void)43 b(*bus,)e(u_int)f(irq,)g(void)g(*dev_id\);)
208 1203 y(})f(bus_operations;)0 1415 y Fk(The)31 b Fh(priv)e
Fk(\034eld)i(can)f(b)r(e)h(used)g(for)f(an)n(y)g(purp)r(ose)g(b)n(y)g
(the)h(so)r(c)n(k)n(et)f(driv)n(er,)g(for)g(instance,)h(to)g(indicate)g
(whic)n(h)f(of)h(sev)n(eral)0 1529 y(so)r(c)n(k)n(ets)f(is)g(b)r(eing)h
(addressed.)46 b(The)31 b Fh(b_in)p Fk(,)f Fh(b_out)p
Fk(,)g Fh(b_read)p Fk(,)f(and)i Fh(b_write)d Fk(en)n(try)i(p)r(oin)n
(ts)h(eac)n(h)f(supp)r(ort)h(b)n(yte,)g(w)n(ord,)0 1642
y(and)26 b(dw)n(ord)g(op)r(erations,)f(either)h(b)n(yte-sw)n(app)r(ed)g
(or)f(unsw)n(app)r(ed.)36 b(The)27 b Fh(sz)f Fk(parameter)e(is)j(0,)f
(1,)g(or)g(2)g(for)g(b)n(yte,)g(w)n(ord,)g(or)0 1756
y(dw)n(ord)h(accesses;)f(-1)g(and)i(-2)f(select)g(w)n(ord)f(and)i(dw)n
(ord)e(unsw)n(app)r(ed)i(accesses.)0 2090 y Fg(10)131
b(Where)44 b(to)f(Go)h(for)g(More)g(Information)0 2328
y Fk(The)36 b Fa(Linux)h(Kernel)h(Hackers')g(Guide)6
b Fk(,)40 b(written)c(b)n(y)g(Mic)n(hael)f(Johnson,)i(is)f(a)g(go)r(o)r
(d)f(source)g(of)h(general)f(information)0 2442 y(ab)r(out)27
b(writing)g(Lin)n(ux)g(device)h(driv)n(ers.)35 b(It)28
b(is)f(a)n(v)-5 b(ailable)26 b(from)h(the)h(usual)f(Lin)n(ux)g(FTP)h
(sites,)g(and)f(is)g(included)h(in)g(man)n(y)0 2555 y(compilations)f
(of)g(Lin)n(ux)g(do)r(cumen)n(tation.)0 2712 y(The)e(PC)h(Card)e
(standard)g(is)h(only)f(a)n(v)-5 b(ailable)24 b(from)h(the)g(PCMCIA)h
(asso)r(ciation)d(itself,)j(and)f(is)g(somewhat)f(exp)r(ensiv)n(e)h
(for)0 2825 y(non-mem)n(b)r(ers.)36 b(The)27 b(PCMCIA)i(asso)r(ciation)
d(is)h(at)55 b Fh(<http://www.pc-)t(ca)o(rd)o(.c)o(om>)o
Fk(,)22 b(or:)208 3028 y Fd(Personal)41 b(Computer)f(Memory)h(Card)f
(International)i(Association)208 3132 y(1030)e(East)g(Duane)g(Avenue,)h
(Suite)f(G)208 3237 y(Sunnyvale,)h(CA)f(94086)g(USA)208
3341 y(\(408\))g(720-0107,)h(\(408\))f(720-9416)h(FAX,)f(\(408\))h
(720-9388)g(BBS)0 3553 y Fk(An)36 b(alternativ)n(e)e(is)h(the)h
Fa(PCMCIA)i(Develop)l(er's)g(Guide)6 b Fk(,)38 b(b)n(y)d(Mic)n(hael)g
(Mori,)i(ISBN)e(0-9640342-1-2,)d(a)n(v)-5 b(ailable)33
b(from)0 3667 y(Sycard)27 b(T)-7 b(ec)n(hnology)g(,)25
b(at)56 b Fh(<http://www.syc)o(ar)o(d.c)o(om)o(>)22 b
Fk(or:)208 3870 y Fd(Sycard)40 b(Technology)208 3974
y(1180-F)g(Miraloma)h(Way)208 4078 y(Sunnyvale,)g(CA)f(94086)g(USA)208
4182 y(\(408\))g(749-0130,)h(\(408\))f(749-1323)h(FAX)0
4394 y Fk(The)34 b Fa(PCMCIA)j(Softwar)l(e)f(Develop)l(er's)i(Handb)l
(o)l(ok)44 b Fk(b)n(y)34 b(Stev)n(en)g(Kipisz,)h(Dana)f(Beatt)n(y)-7
b(,)35 b(and)f(Brian)f(Mo)r(ore)g(includes)0 4508 y(an)d(o)n(v)n
(erview)f(of)i(the)g(PC)g(Card)f(standard,)h(and)f(descriptions)g(of)h
(ho)n(w)f(to)h(write)f(clien)n(t)h(driv)n(ers.)45 b(It)31
b(also)f(includes)h(the)0 4622 y(Lin)n(ux)k(PCMCIA)h(Programmer's)c
(Guide,)38 b(as)c(an)h(app)r(endix.)59 b(It)36 b(is)f(published)g(b)n
(y)g(P)n(eer-to-P)n(eer)e(Comm)n(unications,)0 4735 y(ISBN)28
b(1-57398-010-2.)0 4892 y(Larry)39 b(Levine)i(has)g(written)g(a)g(more)
f(general)g(in)n(tro)r(duction)h(to)g(PCMCIA)h(called)e(the)i
Fa(PCMCIA)h(Primer)9 b Fk(.)79 b(It)41 b(is)0 5005 y(published)28
b(b)n(y)f(M)h(&)f(T)h(Bo)r(oks,)e(ISBN)i(1-55828-437-0.)0
5162 y(Programming)36 b(information)h(for)g(v)-5 b(arious)37
b(PC)h(Card)f(host)g(con)n(trollers)f(is)h(a)n(v)-5 b(ailable)37
b(from)g(the)h(corresp)r(onding)e(c)n(hip)0 5275 y(v)n(endors.)f
(Generally)-7 b(,)25 b(data)h(sheets)g(are)f(either)h(a)n(v)-5
b(ailable)24 b(on)i(line)g(or)g(can)f(b)r(e)i(ordered)d(from)i(eac)n(h)
f(compan)n(y's)g(w)n(eb)h(site.)0 5389 y(A)i(collection)f(of)g
(datasheets)g(can)g(b)r(e)h(found)g(at)55 b Fh(<http:/pcmcia-)t(cs.)o
(so)o(ur)o(cef)o(or)o(ge)o(.ne)o(t/)o(sp)o(ecs)o(>)p
Fk(.)p eop
%%Trailer
end
userdict /end-hook known{end-hook}if
%%EOF