Skip site navigation (1)Skip section navigation (2)
Date:      Wed, 22 Jan 1997 07:50:00 -0800
From:      Amancio Hasty <hasty@rah.star-gate.com>
To:        multimedia@freebsd.org
Subject:   grabber-meteor.cc (packed mode) for Pentium Pro Users
Message-ID:  <199701221550.HAA00337@rah.star-gate.com>

next in thread | raw e-mail | index | archive | help
This is a multipart MIME message.

--===_0_Wed_Jan_22_07:48:28_PST_1997
--------


Hi,

The packed mode for the Bt848 and the Meteor is slightly different or at
least the way that meteor driver has been programmed. This means
that you can't use this grabber-meteor.cc with an Intel Smart Video
Recorder cause it is a quick hack to check the meteor.

At any rate, more to the point, I tested this lightly over here and
will be interested to hear from other Pentium PRO owners. I still consider
the Matrox Meteor outright dangerous with a PPRO and a Natoma chipset...

What follows is grabber-meteor.cc for vic-2.8 .

	Cheers,
	Amancio


--===_0_Wed_Jan_22_07:48:28_PST_1997
Content-Type: application/octet-stream
Content-Description: grabber-meteor.cc
Content-Transfer-Encoding: base64

LyoKICogQ29weXJpZ2h0IChjKSBKaW0gTG93ZSwgMTk5NSwgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICoKICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CiAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwogKiBhcmUgbWV0OgogKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAogKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCiAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CiAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ciBpbiB0aGUKICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KICogMy4gQWxsIGFkdmVydGlzaW5nIG1h
dGVyaWFscyBtZW50aW9uaW5nIGZlYXR1cmVzIG9yIHVzZSBvZiB0aGlzIHNvZnR3YXJlCiAq
ICAgIG11c3QgZGlzcGxheSB0aGUgZm9sbG93aW5nIGFja25vd2xlZGdlbWVudDoKICogICAg
ICBUaGlzIHByb2R1Y3QgaW5jbHVkZXMgc29mdHdhcmUgZGV2ZWxvcGVkIGJ5IEppbSBMb3dl
CiAqIDQuIFRoZSBuYW1lIG9mIHRoZSBhdXRob3IgbWF5IG5vdCBiZSB1c2VkIHRvIGVuZG9y
c2Ugb3IgcHJvbW90ZSBwcm9kdWN0cwogKiAgICBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2Fy
ZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KICoKICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQVVUSE9SIGBgQVMgSVMnJyBBTkQgQU5Z
IEVYUFJFU1MgT1IKICogSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgVEhFIElNUExJRUQKICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQogKiBESVNDTEFJ
TUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsCiAqIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
IENPTlNFUVVFTlRJQUwgREFNQUdFUwogKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKICogU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
CiAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hF
VEhFUiBJTiBDT05UUkFDVCwKICogU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOCiAqIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQog
KiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICovCgovKgogKiAxLjAJMTEvMDkvOTUK
ICoJSW5pdGlhbCBSZWxlYXNlLgogKiAxLjEJMTIvMjAvOTUKICoJQ2hhbmdlZCB0byB1c2Ug
bmV3IG1vZGUgaW4gbWV0ZW9yIGRyaXZlciAoTUVURU9SX0dFT19ZVVZfNDIyKSBhbmQKICoJ
YWxsb3cgZXZlbiBvbmx5IGZpZWxkcyB0byBiZSBjYXB0dXJlZCB1bmRlciBjZXJ0YWluIGNv
bmRpdGlvbnMuCiAqCUFkZGVkIEZSQU1FX0NOVFMgZGVidWdnaW5nIG9wdGlvbi4KICogMS4y
CTMvMjUvOTYKICoJQ2hhbmdlZCB0aGUgY29uZGl0aW9ucyBFVkVOX09OTFkgbW9kZSB3YXMg
c3BlY2lmaWVkLiAgV2Ugbm93IGNoZWNrCiAqCXRoZSBzdGF0dXMgdG8gZGV0ZXJtaW5lIGlm
IHdlIGNhbiBydW4gaW4gRVZFTl9PTkxZIG1vZGUuCiAqIDEuMwk1LzEzLzk2CiAqCUFkZGVk
IHRoZSBmcHMgY29kZSB0byB0aGUgZ3JhYmJlciBzbyB3ZSBvbmx5IHRyYW5zZmVyIHdoYXQg
d2UgbmVlZC4KICoJCiAqLwoKLyojZGVmaW5lIEZSQU1FX0NOVFMgLyogcHJpbnQgZnJhbWUg
Y291bnRzIGFuZCBmcHMgd2hlbiBkZXZpY2Ugc3RvcHMgLS0gZGVidWcgKi8KI2luY2x1ZGUg
PHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KI2luY2x1ZGUgPHVuaXN0ZC5oPgojaW5j
bHVkZSA8ZmNudGwuaD4KI2luY2x1ZGUgPHN5cy90eXBlcy5oPgojaW5jbHVkZSA8c3lzL2lv
Y3RsLmg+CiNpbmNsdWRlIDxzeXMvbW1hbi5oPgojaWZkZWYgRlJBTUVfQ05UUwojaW5jbHVk
ZSA8c3lzL3RpbWUuaD4KI2VuZGlmCgojaW5jbHVkZSAiZ3JhYmJlci5oIgojaW5jbHVkZSAi
VGNsLmgiCiNpbmNsdWRlICJkZXZpY2UtaW5wdXQuaCIKI2luY2x1ZGUgIm1vZHVsZS5oIgoK
I2luY2x1ZGUgPG1hY2hpbmUvaW9jdGxfbWV0ZW9yLmg+CgovKlhYWCovCiNkZWZpbmUgTlRT
Q19XSURUSCAzMjAKI2RlZmluZSBOVFNDX0hFSUdIVCAyNDAKI2RlZmluZSBQQUxfV0lEVEgg
Mzg0CiNkZWZpbmUgUEFMX0hFSUdIVCAyODgKI2RlZmluZSBDSUZfV0lEVEggMzUyCiNkZWZp
bmUgQ0lGX0hFSUdIVCAyODgKCgpjbGFzcyBNZXRlb3JHcmFiYmVyIDogcHVibGljIEdyYWJi
ZXIgewogcHVibGljOgoJTWV0ZW9yR3JhYmJlcihjb25zdCBjaGFyKiBuYW1lLCBjb25zdCBj
aGFyKiBmb3JtYXQpOwoJdmlydHVhbCB+TWV0ZW9yR3JhYmJlcigpOwoJdmlydHVhbCB2b2lk
IHN0YXJ0KCk7Cgl2aXJ0dWFsIHZvaWQgc3RvcCgpOwoJdmlydHVhbCB2b2lkIGZwcyhpbnQp
OwogcHJvdGVjdGVkOgoJdmlydHVhbCBpbnQgY29tbWFuZChpbnQgYXJnYywgY29uc3QgY2hh
cipjb25zdCogYXJndik7Cgl2aXJ0dWFsIGludCBjYXB0dXJlKCk7Cgl2aXJ0dWFsIGludCBn
cmFiKCk7Cgl2b2lkIGZvcm1hdCgpOwoJdm9pZCBzZXRzaXplKCk7CgoJaW50IHZpZGVvX2Zv
cm1hdF87CS8qIHZpZGVvIGlucHV0IGZvcm1hdDogTlRTQyBvciBQQUwgKi8KCWludCBkZXZf
OwkJLyogZGV2aWNlIGZkICovCglpbnQgcG9ydF87CQkvKiB2aWRlbyBpbnB1dCBwb3J0ICov
CglpbnQgY29kZXJfZm9ybWF0XzsJLyogNDExLCA0MjIsIG9yIGNpZiAqLwoJdV9pbnQgYmFz
ZXdpZHRoXzsJLyogSGVpZ2h0IG9mIGZyYW1lIHRvIGJlIGNhcHR1cmVkICovCgl1X2ludCBi
YXNlaGVpZ2h0XzsJLyogV2lkdGggb2YgZnJhbWUgdG8gYmUgY2FwdHVyZWQgKi8KCXVfaW50
IGRlY2ltYXRlXzsJLyogZGl2aXNpb24gb2YgYmFzZSBzaXplcyAqLwoJdm9sYXRpbGUgdV9p
bnQqIHB5dXZfOwkvKiBwb2ludGVyIHRvIHl1diBkYXRhICovCiNpZmRlZiBGUkFNRV9DTlRT
CglzdHJ1Y3QgbWV0ZW9yX2NvdW50cyBjbnRzXzsJLyogcG9pbnRlciB0byBjb3VudGVycyAq
LwoJZG91YmxlCXN0YXJ0X3RpbWVfOwojZW5kaWYKfTsKCnN0YXRpYyBjb25zdCBpbnQJZl80
MTEgPSAwOwkvKiBjb2Rlcl9mb3JtYXRfcyAqLwpzdGF0aWMgY29uc3QgaW50CWZfNDIyID0g
MTsKc3RhdGljIGNvbnN0IGludAlmX2NpZiA9IDI7CgpjbGFzcyBNZXRlb3JEZXZpY2UgOiBw
dWJsaWMgSW5wdXREZXZpY2UgewogcHVibGljOgoJTWV0ZW9yRGV2aWNlKGNvbnN0IGNoYXIq
IG5pY2tuYW1lLCBjb25zdCBjaGFyKiBkZXZuYW1lLCBpbnQgZnJlZSk7Cgl2aXJ0dWFsIGlu
dCBjb21tYW5kKGludCBhcmdjLCBjb25zdCBjaGFyKmNvbnN0KiBhcmd2KTsKIHByb3RlY3Rl
ZDoKCWNvbnN0IGNoYXIqIG5hbWVfOwp9OwoKY2xhc3MgTWV0ZW9yU2Nhbm5lciB7CiBwdWJs
aWM6CglNZXRlb3JTY2FubmVyKGNvbnN0IGludCBuKTsKfTsKc3RhdGljIE1ldGVvclNjYW5u
ZXIgZmluZF9tZXRlb3JfZGV2aWNlcyg4KTsKCk1ldGVvclNjYW5uZXI6Ok1ldGVvclNjYW5u
ZXIoY29uc3QgaW50IG4pCnsKCWNoYXIqCWRldm5hbWVfdGVtcGxhdGUgID0gIi9kZXYvbWV0
ZW9yJWQiOwoJY2hhcioJbmlja25hbWVfdGVtcGxhdGUgPSAiTWF0cm94IE1ldGVvciAlZCI7
CgljaGFyKglkZXZuYW1lX3RlbXBsYXRlMSAgPSAiL2Rldi9ia3RyJWQiOwoJY2hhcioJbmlj
a25hbWVfdGVtcGxhdGUxID0gIkJyb29rVHJlZTg0OCAlZCI7CgoKCglmb3IoaW50IGkgPSAw
OyBpIDwgbjsgaSsrKSB7CgkJY2hhcgkqZGV2bmFtZSAgPSBuZXcgY2hhcltzdHJsZW4oZGV2
bmFtZV90ZW1wbGF0ZSkgICsgM107CgkJY2hhcgkqbmlja25hbWUgPSBuZXcgY2hhcltzdHJs
ZW4obmlja25hbWVfdGVtcGxhdGUpICsgM107CgkJY2hhcgkqZGV2bmFtZTEgID0gbmV3IGNo
YXJbc3RybGVuKGRldm5hbWVfdGVtcGxhdGUxKSAgKyAzXTsKCQljaGFyCSpuaWNrbmFtZTEg
PSBuZXcgY2hhcltzdHJsZW4obmlja25hbWVfdGVtcGxhdGUxKSArIDNdOwoKCQlzcHJpbnRm
KG5pY2tuYW1lLCBuaWNrbmFtZV90ZW1wbGF0ZSwgaSArIDEpOwoJCXNwcmludGYoZGV2bmFt
ZSwgZGV2bmFtZV90ZW1wbGF0ZSwgaSk7CgoJCXNwcmludGYobmlja25hbWUxLCBuaWNrbmFt
ZV90ZW1wbGF0ZTEsIGkgKyAxKTsKCQlzcHJpbnRmKGRldm5hbWUxLCBkZXZuYW1lX3RlbXBs
YXRlMSwgaSk7CgkJaWYoYWNjZXNzKGRldm5hbWUsIFJfT0spID09IDApIHsKCQkJaW50IGZk
ID0gb3BlbihkZXZuYW1lLCBPX1JET05MWSk7CgkJCWlmKGZkIDwgMCkgewoJCQkJbmV3IE1l
dGVvckRldmljZShuaWNrbmFtZSwgZGV2bmFtZSwgMCk7CgkJCX0gZWxzZSB7CgkJCQkodm9p
ZCljbG9zZShmZCk7CgkJCQluZXcgTWV0ZW9yRGV2aWNlKG5pY2tuYW1lLCBkZXZuYW1lLCAx
KTsKCQkJfQoJCX0gZWxzZSB7CgkJCWRlbGV0ZSBuaWNrbmFtZTsKCQkJZGVsZXRlIGRldm5h
bWU7CgkJfQoKCQlpZihhY2Nlc3MoZGV2bmFtZTEsIFJfT0spID09IDApIHsKCQkJaW50IGZk
ID0gb3BlbihkZXZuYW1lMSwgT19SRE9OTFkpOwoJCQlpZihmZCA8IDApIHsKCQkJCW5ldyBN
ZXRlb3JEZXZpY2Uobmlja25hbWUxLCBkZXZuYW1lMSwgMCk7CgkJCX0gZWxzZSB7CgkJCQko
dm9pZCljbG9zZShmZCk7CgkJCQluZXcgTWV0ZW9yRGV2aWNlKG5pY2tuYW1lMSwgZGV2bmFt
ZTEsIDEpOwoJCQl9CgkJfSBlbHNlIHsKCQkJZGVsZXRlIG5pY2tuYW1lMTsKCQkJZGVsZXRl
IGRldm5hbWUxOwoJCX0KCX0KfQoKTWV0ZW9yRGV2aWNlOjpNZXRlb3JEZXZpY2UoY29uc3Qg
Y2hhciogbmlja25hbWUsIGNvbnN0IGNoYXIgKmRldm5hbWUsIGludCBmcmVlKToKCQkJCQlJ
bnB1dERldmljZShuaWNrbmFtZSksIG5hbWVfKGRldm5hbWUpCnsKCWlmKGZyZWUpCgkJYXR0
cmlidXRlc18gPSAiXApmb3JtYXQgezQyMiA0MTF9IFwKc2l6ZSB7bGFyZ2Ugbm9ybWFsIHNt
YWxsIGNpZn0gXApwb3J0IHtSQ0EgUG9ydC0xIFBvcnQtMiBQb3J0LTMgUy1WaWRlbyBSR0J9
IjsKCWVsc2UKCQlhdHRyaWJ1dGVzXyA9ICJkaXNhYmxlZCI7Cn0KCmludCBNZXRlb3JEZXZp
Y2U6OmNvbW1hbmQoaW50IGFyZ2MsIGNvbnN0IGNoYXIqY29uc3QqIGFyZ3YpCnsKCVRjbCYg
dGNsID0gVGNsOjppbnN0YW5jZSgpOwoJaWYgKChhcmdjID09IDMpICYmIChzdHJjbXAoYXJn
dlsxXSwgIm9wZW4iKSA9PSAwKSkgewoJCVRjbE9iamVjdCogbyA9IDA7CgkJbyA9IG5ldyBN
ZXRlb3JHcmFiYmVyKG5hbWVfLCBhcmd2WzJdKTsKCQlpZiAobyAhPSAwKQoJCQl0Y2wucmVz
dWx0KG8tPm5hbWUoKSk7CgkJcmV0dXJuIChUQ0xfT0spOwoJfQoJcmV0dXJuIChJbnB1dERl
dmljZTo6Y29tbWFuZChhcmdjLCBhcmd2KSk7Cn0KCk1ldGVvckdyYWJiZXI6Ok1ldGVvckdy
YWJiZXIoY29uc3QgY2hhciogbmFtZSwgY29uc3QgY2hhciogZm9ybWF0KQp7Cgljb2Rlcl9m
b3JtYXRfID0gLTE7CglpZighc3RyY21wKGZvcm1hdCwgIjQxMSIpKSBjb2Rlcl9mb3JtYXRf
ID0gZl80MTE7CglpZighc3RyY21wKGZvcm1hdCwgIjQyMiIpKSBjb2Rlcl9mb3JtYXRfID0g
Zl80MjI7CglpZighc3RyY21wKGZvcm1hdCwgImNpZiIpKSBjb2Rlcl9mb3JtYXRfID0gZl9j
aWY7CglpZihjb2Rlcl9mb3JtYXRfID09IC0xKSB7CgkJZnByaW50ZihzdGRlcnIsCgkJCSJ2
aWM6IE1ldGVvckdyYWJiZXI6IHVuc3VwcG9ydGVkIGZvcm1hdDogJXNcbiIsCgkJCWZvcm1h
dCk7CgkJYWJvcnQoKTsKCX0KCglkZXZfID0gb3BlbihuYW1lLCBPX1JET05MWSk7CglpZiAo
ZGV2XyA9PSAtMSkgewoJCXN0YXR1c18gPSAtMTsKCQlyZXR1cm47Cgl9Cglwb3J0XyA9IE1F
VEVPUl9JTlBVVF9ERVYwOwoJdmlkZW9fZm9ybWF0XyA9IE1FVEVPUl9GTVRfQVVUT01PREU7
CglkZWNpbWF0ZV8gPSAyOwoJYmFzZXdpZHRoXyA9IFBBTF9XSURUSCAqIDI7CgliYXNlaGVp
Z2h0XyA9IFBBTF9IRUlHSFQgKiAyOwoJCglpbnQgdGVtcCA9ICgoYmFzZXdpZHRoXyAqIGJh
c2VoZWlnaHRfICogMiArIDQwOTUpLzQwOTYpKjQwOTY7CglweXV2XyA9ICh1X2ludCopIG1t
YXAoKGNhZGRyX3QpMCwgdGVtcCwgUFJPVF9SRUFELCAwLCBkZXZfLCAob2ZmX3QpMCk7Cglp
ZihweXV2XyA9PSAodV9pbnQqKS0xKQoJCXB5dXZfID0gMDsKfQoKTWV0ZW9yR3JhYmJlcjo6
fk1ldGVvckdyYWJiZXIoKQp7CglpZiAoZGV2XyAhPSAtMSkgewoJCWNsb3NlKGRldl8pOwoJ
fQp9Cgp2b2lkIE1ldGVvckdyYWJiZXI6OnNldHNpemUoKQp7CglzdHJ1Y3QgbWV0ZW9yX2dl
b21ldCBnZW9tOwoKCWdlb20ucm93cyA9IChiYXNlaGVpZ2h0XyAvIGRlY2ltYXRlXykgJn4w
eGY7CS8qIDB4ZiwgdWdoISAqLwoJZ2VvbS5jb2x1bW5zID0gKGJhc2V3aWR0aF8gLyBkZWNp
bWF0ZV8pICAmfjB4ZjsKCWdlb20uZnJhbWVzID0gMTsKCWdlb20ub2Zvcm1hdCA9IE1FVEVP
Ul9HRU9fVU5TSUdORUQ7CglnZW9tLm9mb3JtYXQgfD0gTUVURU9SX0dFT19ZVVZfUEFDS0VE
OwoJLyoKCSAqIElmIHdlIGNhbiBnZXQgYnkgd2l0aCBvbmx5IHJlYWRpbmcgZXZlbiBmaWVs
ZHMsIHRoZW4gYnkgYWxsCgkgKiBtZWFucyBkbyBzby4KCSAqLwoJdW5zaWduZWQgc2hvcnQg
c3RhdHVzOwoJaW9jdGwoZGV2XywgTUVURU9SU1RBVFVTLCAmc3RhdHVzKTsKCWlmKHN0YXR1
cyAmIE1FVEVPUl9TVEFUVVNfSENMSykgewkvKiBkbyB3ZSBoYXZlIGEgc291cmNlPyAqLwoJ
CQkJCQkvKiBObyBzb3VyY2UsIGFzc3VtZSBudHNjKi8KCQlpZihnZW9tLnJvd3MgPD0gTlRT
Q19IRUlHSFQgJiYgZ2VvbS5jb2x1bW5zIDw9IE5UU0NfV0lEVEgpCgkJCWdlb20ub2Zvcm1h
dCB8PSBNRVRFT1JfR0VPX0VWRU5fT05MWTsKCX0gZWxzZSB7CgkJaWYoc3RhdHVzICYgTUVU
RU9SX1NUQVRVU19GSURUKSB7IC8qIGlzIGl0IHBhbCBvciBudHNjPyAqLwoJCQkJCQkvKiA2
MCBoeiAqLwoJCQlpZihnZW9tLnJvd3M8PU5UU0NfSEVJR0hUICYmIGdlb20uY29sdW1uczw9
TlRTQ19XSURUSCkKCQkJCWdlb20ub2Zvcm1hdCB8PSBNRVRFT1JfR0VPX0VWRU5fT05MWTsK
CQl9IGVsc2UgewkJCS8qIDUwIGh6ICovCgkJCWlmKGdlb20ucm93czw9UEFMX0hFSUdIVCAm
JiBnZW9tLmNvbHVtbnM8PVBBTF9XSURUSCkKCQkJCWdlb20ub2Zvcm1hdCB8PSBNRVRFT1Jf
R0VPX0VWRU5fT05MWTsKCQl9Cgl9CgoJaWYoaW9jdGwoZGV2XywgTUVURU9SU0VUR0VPLCAm
Z2VvbSkgPCAwKSAKCQlwZXJyb3IoInZpYzogTUVURVJTRVRHRU86ICIpOwoKCXN3aXRjaChj
b2Rlcl9mb3JtYXRfKSB7CgljYXNlIGZfNDIyOgoJCXNldF9zaXplXzQyMihnZW9tLmNvbHVt
bnMsIGdlb20ucm93cyk7CgkJYnJlYWs7CgljYXNlIGZfY2lmOgoJY2FzZSBmXzQxMToKCQlz
ZXRfc2l6ZV80MTEoZ2VvbS5jb2x1bW5zLCBnZW9tLnJvd3MpOwoJCWJyZWFrOwoJfQoKCWFs
bG9jcmVmKCk7CS8qIGFsbG9jYXRlIHJlZmVyZW5jZSBmcmFtZSAqLwp9Cgp2b2lkIE1ldGVv
ckdyYWJiZXI6OmZvcm1hdCgpCnsKCXVuc2lnbmVkIHNob3J0IHN0YXR1czsKCWludAlmbXQ7
CgoJaW9jdGwoZGV2XywgTUVURU9SU0lOUFVULCAmcG9ydF8pOwoJLy8JaW9jdGwoZGV2Xywg
TUVURU9SU0ZNVCwgJnZpZGVvX2Zvcm1hdF8pOwoJc2xlZXAoMSk7CS8qIHdhaXQgZm9yIHNp
Z25hbCBsb2NrLi4uICovCglpb2N0bChkZXZfLCBNRVRFT1JTVEFUVVMsICZzdGF0dXMpOwoK
CWlmKHZpZGVvX2Zvcm1hdF8gPT0gTUVURU9SX0ZNVF9BVVRPTU9ERSkgewoJCXN3aXRjaCAo
c3RhdHVzICYgKE1FVEVPUl9TVEFUVVNfSENMS3xNRVRFT1JfU1RBVFVTX0ZJRFQpKSB7CgkJ
ZGVmYXVsdDoKCQkJZnByaW50ZihzdGRlcnIsCgkJCQkidmljOiBtZXRlb3Igc2VlcyBubyBz
aWduYWwoJWQpLXVzaW5nIG50c2MuXG4iLAoJCQkJKHN0YXR1cyZNRVRFT1JfU1RBVFVTX0hD
TEspID4gMCApOwoJCQkvKiBmYWxsIHRocm91Z2ggKi8KCQljYXNlIE1FVEVPUl9TVEFUVVNf
RklEVDoKCQkJZm10ID0gTUVURU9SX0ZNVF9OVFNDOwoJCQlicmVhazsKCQljYXNlIDA6CgkJ
CWZtdD0gTUVURU9SX0ZNVF9QQUw7CgkJCWJyZWFrOwoJCX0KCX0gZWxzZQoJCWZtdCA9IHZp
ZGVvX2Zvcm1hdF87CgoJaWYoZm10ID09IE1FVEVPUl9GTVRfTlRTQykgewoJCWJhc2VoZWln
aHRfID0gTlRTQ19IRUlHSFQgKiAyOwoJCWJhc2V3aWR0aF8gPSBOVFNDX1dJRFRIICogMjsK
CX0gZWxzZSB7IAkvKiBQQUwgYW5kIFNFQ0FNICovCgkJYmFzZWhlaWdodF8gPSBQQUxfSEVJ
R0hUICogMjsKCQliYXNld2lkdGhfID0gUEFMX1dJRFRIICogMjsKCX0KCQkKCWlmKGNvZGVy
X2Zvcm1hdF8gPT0gZl9jaWYpIHsKCQliYXNlaGVpZ2h0XyA9IENJRl9IRUlHSFQgKiAyOwoJ
CWJhc2V3aWR0aF8gPSBDSUZfV0lEVEggKiAyOwoJfQoJc2V0c2l6ZSgpOwp9CgoKdm9pZCBN
ZXRlb3JHcmFiYmVyOjpzdGFydCgpCnsKCWZvcm1hdCgpOwoJaW50IGNtZCA9IE1FVEVPUl9D
QVBfU0lOR0xFOwoJaW9jdGwoZGV2XywgTUVURU9SQ0FQVFVSLCAoY2hhciopJmNtZCk7CiNp
ZmRlZiBGUkFNRV9DTlRTCgljbnRzXy5maWZvX2Vycm9ycyA9IDA7CgljbnRzXy5kbWFfZXJy
b3JzID0gMDsKCWNudHNfLmZyYW1lc19jYXB0dXJlZCA9IDA7CgljbnRzXy5ldmVuX2ZpZWxk
c19jYXB0dXJlZCA9IDA7CgljbnRzXy5vZGRfZmllbGRzX2NhcHR1cmVkID0gMDsKCWlvY3Rs
KGRldl8sIE1FVEVPUlNDT1VOVCwgJmNudHNfKTsKCXN0YXJ0X3RpbWVfID0gZ2V0dGltZW9m
ZGF5KCk7CiNlbmRpZgoKCWNtZCA9IE1FVEVPUl9DQVBfQ09OVElOT1VTOwoJaW9jdGwoZGV2
XywgTUVURU9SQ0FQVFVSLCAoY2hhciopJmNtZCk7CglHcmFiYmVyOjpzdGFydCgpOwp9Cgp2
b2lkIE1ldGVvckdyYWJiZXI6OnN0b3AoKQp7CgoJaW50IGNtZCA9IE1FVEVPUl9DQVBfU1RP
UF9DT05UOwoJaW9jdGwoZGV2XywgTUVURU9SQ0FQVFVSLCAoY2hhciopJmNtZCk7CiNpZmRl
ZiBGUkFNRV9DTlRTCglkb3VibGUgZW5kdGltZSA9IGdldHRpbWVvZmRheSgpIDsKCWlvY3Rs
KGRldl8sIE1FVEVPUkdDT1VOVCwgJmNudHNfKTsKCWludCBkaWZmID0gKGludCkoKGVuZHRp
bWUtc3RhcnRfdGltZV8pICogMWUtNiArIDAuNSk7CglwcmludGYoImZyYW1lcyA9ICVkLCBl
dmVuIGZpZWxkcyA9ICVkLCBvZGQgZmllbGRzID0gJWQsXG5cCmZpZm8gZXJyb3JzID0gJWQs
IGRtYSBlcnJvcnMgPSAlZCwgc2Vjb25kcyA9ICVkIiwKCQljbnRzXy5mcmFtZXNfY2FwdHVy
ZWQsIGNudHNfLmV2ZW5fZmllbGRzX2NhcHR1cmVkLAoJCWNudHNfLm9kZF9maWVsZHNfY2Fw
dHVyZWQsIGNudHNfLmZpZm9fZXJyb3JzLCBjbnRzXy5kbWFfZXJyb3JzLAoJCWRpZmYpOwoJ
aWYoZGlmZikKCQlwcmludGYoIixmcHMgPSAlZCIsIGNudHNfLmZyYW1lc19jYXB0dXJlZC9k
aWZmKTsKCXByaW50ZigiXG4iKTsKI2VuZGlmCglHcmFiYmVyOjpzdG9wKCk7Cn0KCnZvaWQg
TWV0ZW9yR3JhYmJlcjo6ZnBzKGludCBmKQp7Cgl1X3Nob3J0IG1ldF9mcHMgPSAodV9zaG9y
dClmOwoJKHZvaWQpaW9jdGwoZGV2XywgTUVURU9SU0ZQUywgJm1ldF9mcHMpOwoKCUdyYWJi
ZXI6OmZwcyhmKTsKfQoKaW50IE1ldGVvckdyYWJiZXI6OmNvbW1hbmQoaW50IGFyZ2MsIGNv
bnN0IGNoYXIqY29uc3QqIGFyZ3YpCnsKCWlmIChhcmdjID09IDMpIHsKCQlpZiAoc3RyY21w
KGFyZ3ZbMV0sICJkZWNpbWF0ZSIpID09IDApIHsKCQkJaW50IGRlYyA9IGF0b2koYXJndlsy
XSk7CgkJCVRjbCYgdGNsID0gVGNsOjppbnN0YW5jZSgpOwoJCQlpZiAoZGVjIDw9IDApIHsK
CQkJCXRjbC5yZXN1bHRmKCIlczogZGl2aWRlIGJ5IHplcm8iLCBhcmd2WzBdKTsKCQkJCXJl
dHVybiAoVENMX0VSUk9SKTsKCQkJfQoJCQlpZiAoZGVjICE9IGRlY2ltYXRlXykgewoJCQkJ
ZGVjaW1hdGVfID0gZGVjOwoJCQkJaWYocnVubmluZ18pIHsKCQkJCQlzdG9wKCk7CgkJCQkJ
c2V0c2l6ZSgpOwoJCQkJCXN0YXJ0KCk7CgkJCQl9CgkJCX0KCQkJcmV0dXJuIChUQ0xfT0sp
OwkKCQl9IGVsc2UgaWYgKHN0cmNtcChhcmd2WzFdLCAicG9ydCIpID09IDApIHsKCQkJaW50
IHAgPSBwb3J0XzsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoIXN0cmNtcChhcmd2WzJd
LCAiUkNBIikpIHAgPSBNRVRFT1JfSU5QVVRfREVWMDsKICAgICAgICAgICAgICAgICAgICAg
ICAgaWYoIXN0cmNtcChhcmd2WzJdLCAiUG9ydC0xIikpIHAgPSBNRVRFT1JfSU5QVVRfREVW
MTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYoIXN0cmNtcChhcmd2WzJdLCAiUG9ydC0y
IikpIHAgPSBNRVRFT1JfSU5QVVRfREVWMjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYo
IXN0cmNtcChhcmd2WzJdLCAiUG9ydC0zIikpIHAgPSBNRVRFT1JfSU5QVVRfREVWMzsKICAg
ICAgICAgICAgICAgICAgICAgICAgaWYoIXN0cmNtcChhcmd2WzJdLCAiUy1WaWRlbyIpKQoJ
CQkJcCA9IE1FVEVPUl9JTlBVVF9ERVZfU1ZJREVPOwogICAgICAgICAgICAgICAgICAgICAg
ICBpZighc3RyY21wKGFyZ3ZbMl0sICJSR0IiKSkgcCA9IE1FVEVPUl9JTlBVVF9ERVZfUkdC
OwoKCQkJaWYgKHAgIT0gcG9ydF8pIHsKCQkJCXBvcnRfID0gcDsKCQkJCWlvY3RsKGRldl8s
IE1FVEVPUlNJTlBVVCwgJnBvcnRfKTsKCQkJfQoJCQlyZXR1cm4gKFRDTF9PSyk7CQoJCX0g
ZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMV0sICJmb3JtYXQiKSA9PSAwIHx8CgkJCSAgIHN0cmNt
cChhcmd2WzFdLCAidHlwZSIpID09IDApIHsKCQkJaWYgKHN0cmNtcChhcmd2WzJdLCAiYXV0
byIpID09IDApCgkJCQl2aWRlb19mb3JtYXRfID0gTUVURU9SX0ZNVF9BVVRPTU9ERTsKCQkJ
ZWxzZSBpZiAoc3RyY21wKGFyZ3ZbMl0sICJwYWwiKSA9PSAwKQoJCQkJdmlkZW9fZm9ybWF0
XyA9IE1FVEVPUl9GTVRfUEFMOwoJCQllbHNlIGlmIChzdHJjbXAoYXJndlsyXSwgInNlY2Ft
IikgPT0gMCkKCQkJCXZpZGVvX2Zvcm1hdF8gPSBNRVRFT1JfRk1UX1NFQ0FNOwoJCQllbHNl
CgkJCQl2aWRlb19mb3JtYXRfID0gTUVURU9SX0ZNVF9OVFNDOwoJCQlpZiAocnVubmluZ18p
CgkJCQlmb3JtYXQoKTsKCQkJcmV0dXJuIChUQ0xfT0spOwkKCQl9IGVsc2UgaWYgKHN0cmNt
cChhcmd2WzFdLCAiY29udHJhc3QiKSA9PSAwKSB7CgkJCWNvbnRyYXN0KGF0b2YoYXJndlsy
XSkpOwoJCQlyZXR1cm4gKFRDTF9PSyk7CQoJCX0KCX0gZWxzZSBpZiAoYXJnYyA9PSAyKSB7
CgkJaWYgKHN0cmNtcChhcmd2WzFdLCAiZm9ybWF0IikgPT0gMCB8fAoJCQkgICBzdHJjbXAo
YXJndlsxXSwgInR5cGUiKSA9PSAwKSB7CgkJCVRjbCYgdGNsID0gVGNsOjppbnN0YW5jZSgp
OwoJCQlzd2l0Y2ggKHZpZGVvX2Zvcm1hdF8pIHsKCgkJCWNhc2UgTUVURU9SX0ZNVF9BVVRP
TU9ERToKCQkJCXRjbC5yZXN1bHQoImF1dG8iKTsKCQkJCWJyZWFrOwoKCQkJY2FzZSBNRVRF
T1JfRk1UX05UU0M6CgkJCQl0Y2wucmVzdWx0KCJudHNjIik7CgkJCQlicmVhazsKCgkJCWNh
c2UgTUVURU9SX0ZNVF9QQUw6CgkJCQl0Y2wucmVzdWx0KCJwYWwiKTsKCQkJCWJyZWFrOwoK
CQkJY2FzZSBNRVRFT1JfRk1UX1NFQ0FNOgoJCQkJdGNsLnJlc3VsdCgic2VjYW0iKTsKCQkJ
CWJyZWFrOwoKCQkJZGVmYXVsdDoKCQkJCXRjbC5yZXN1bHQoIiIpOwoJCQkJYnJlYWs7CgkJ
CX0KCQkJcmV0dXJuIChUQ0xfT0spOwoJCQkKCQl9Cgl9CglyZXR1cm4gKEdyYWJiZXI6OmNv
bW1hbmQoYXJnYywgYXJndikpOwp9CgppbnQgTWV0ZW9yR3JhYmJlcjo6Y2FwdHVyZSgpCnsK
CWlmKHB5dXZfID09IDApIHJldHVybiAwOwoKCXZvbGF0aWxlIHVfaW50KiBweSAgID0gcHl1
dl87Cgl2b2xhdGlsZSB1X2ludCogcHUgICA9ICh1X2ludCAqKSgodV9pbnQpcHkgKyAodV9p
bnQpZnJhbWVzaXplXyk7Cgl2b2xhdGlsZSB1X2ludCogcHYgICA9ICh1X2ludCAqKSgodV9p
bnQpcHUgKyAoZnJhbWVzaXplXyA+PiAxKSk7Cgl1X2ludCogCQlsdW0gID0gKHVfaW50ICop
ZnJhbWVfOwoJdV9pbnQqCQl1b2ZmID0gKHVfaW50ICopKCh1X2ludClsdW0gKyAodV9pbnQp
ZnJhbWVzaXplXyk7CglpbnQJCWY0MjIgPSBjb2Rlcl9mb3JtYXRfID09IGZfNDIyOwoJdV9p
bnQqCSAJdm9mZiA9ICh1X2ludCAqKSgodV9pbnQpdW9mZiArIAoJCQkJCSAodV9pbnQpKGZy
YW1lc2l6ZV8+PihmNDIyPzE6MikpKTsKCWludCAJCW51bWMgPSAoKGJhc2V3aWR0aF8vZGVj
aW1hdGVfKSAmfjB4ZikgPj4gMzsKCgljaGFyICogeTsKCWNoYXIgKiB1OwoJY2hhciAqIHY7
CgljaGFyICogZjsKCWludCBjID0gYmFzZXdpZHRoXy9kZWNpbWF0ZV87CglpbnQgciA9IGJh
c2VoZWlnaHRfL2RlY2ltYXRlXzsKCWNoYXIgZm9vW2Mqcl07CgljaGFyIGZvbzFbYypyXTsK
Cgl5ID0gKGNoYXIgKikgcHl1dl8gKyAxOwoJZiA9ICggY2hhciAqKSBmcmFtZV87Cglmb3Ig
KGludCBpID0gMDsgaSA8IGMqcjsgaSsrICkgewoKCSAqZisrID0gICp5Kys7CgkgeSsrOwoK
CX0KCgl5ID0gKGNoYXIgKikgcHl1dl8gKyAxOwoJdSA9IChjaGFyICopIHB5dXZfICsgMDsK
CXYgPSAoY2hhciAqKSBweXV2XyArIDI7Cglmb3IgKGludCBpID0gMDsgaSA8ICBjKnIvMjsg
aSsrICkgewoJICBmb29baV0gID0gKnU7CgkgIGZvbzFbaV0gPSAgKnY7CgkgIHYgKz0gNDsK
CSAgdSArPSA0OwoJfQoJdSA9IChjaGFyICopIGZyYW1lXyAgKyBjKnI7Cgl2ID0gKGNoYXIg
KikgZnJhbWVfICArIGMqciArICBjKnIvNDsKCWZvciAoaW50IGkgPSAwLGogPSAwOyBpIDwg
ci8yOyBpKyspIHsKCSAgYmNvcHkoJmZvb1tqXSwgdSwgYy8yKTsKCSAgYmNvcHkoJmZvbzFb
al0sIHYsIGMvMik7CgkgIGogKz0gYzsKCSAgdSArPSBjLzI7CgkgIHYgKz0gYy8yOwoJfQoj
aWYgMAoJZm9yIChpbnQgcm93ID0gMDsgcm93IDwgKCgoYmFzZWhlaWdodF8vZGVjaW1hdGVf
KSZ+MHhmKSA+PiAxKTsgcm93KyspIHsKCQlmb3IoaW50IGNvbCA9IDA7IGNvbCA8IG51bWM7
IGNvbCsrKSB7CgkJCSpsdW0rKyA9ICpweSsrOwoJCQkqbHVtKysgPSAqcHkrKzsKCQkJKnVv
ZmYrKyA9ICpwdSsrOwoJCQkqdm9mZisrID0gKnB2Kys7CgkJfQoJCWZvcihjb2wgPSAwOyBj
b2wgPCBudW1jOyBjb2wrKykgeyAgIAogICAgICAgICAgICAgICAgICAgICAgICAqbHVtKysg
PSAqcHkrKzsKICAgICAgICAgICAgICAgICAgICAgICAgKmx1bSsrID0gKnB5Kys7CiAgICAg
ICAgICAgICAgICAgICAgICAgIGlmKGY0MjIpIHsJLyogb25seSBjb3B5IG9kZCBpbiA0OjI6
MiBmb3JtYXQgKi8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqdW9mZisrID0g
KnB1Kys7IAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCSp2b2ZmKysgPSAqcHYr
KzsKCQkJCiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgICAgIGlmKCFmNDIyKSB7CS8qIHNraXAgb2RkIGlmIDQ6MToxIG9yIGNpZiBm
b3JtYXQgKi8KCQkJcHUgKz0gbnVtYzsKCQkJcHYgKz0gbnVtYzsKCQl9Cgl9CgojZW5kaWYK
CglyZXR1cm4gMTsKfQoKaW50IE1ldGVvckdyYWJiZXI6OmdyYWIoKQp7CglpZiAoY2FwdHVy
ZSgpID09IDApCgkJcmV0dXJuICgwKTsKCXN1cHByZXNzKGZyYW1lXyk7CglzYXZlYmxrcyhm
cmFtZV8pOwoJWXV2RnJhbWUgZihtZWRpYV90cygpLCBmcmFtZV8sIGNydmVjXywgb3V0d18s
IG91dGhfKTsKCXJldHVybiAodGFyZ2V0Xy0+Y29uc3VtZSgmZikpOwp9Cg==

--===_0_Wed_Jan_22_07:48:28_PST_1997--





Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199701221550.HAA00337>