From 889ae3e0f47de1bf4ba9e3ef13e139e4f18b5143 Mon Sep 17 00:00:00 2001 From: Michael Buesch Date: Fri, 6 Apr 2012 21:32:42 +0200 Subject: Rename VCCX to VCC Signed-off-by: Michael Buesch --- README-DEVELOPERS.lyx | 12 +- README-DEVELOPERS.ps | 845 +++++++++++++++----------------- libtoprammer/chip.py | 16 +- libtoprammer/chip_74hc4094.py | 6 +- libtoprammer/chip_at27c256r.py | 2 +- libtoprammer/chip_at89c2051dip20.py | 14 +- libtoprammer/chip_atmega32dip40.py | 2 +- libtoprammer/chip_atmega88dip28.py | 2 +- libtoprammer/chip_atmega8dip28.py | 2 +- libtoprammer/chip_atmega_common.py | 10 +- libtoprammer/chip_attiny13dip8.py | 8 +- libtoprammer/chip_attiny26dip20.py | 2 +- libtoprammer/chip_generic_sram.py | 12 +- libtoprammer/chip_hm62256dip28.py | 4 +- libtoprammer/chip_m24cxxdip8.py | 6 +- libtoprammer/chip_m2764a.py | 14 +- libtoprammer/chip_m8cissp.py | 6 +- libtoprammer/chip_unitest.py | 30 +- libtoprammer/chip_w29ee011dip32.py | 8 +- libtoprammer/generic_algorithms.py | 8 +- libtoprammer/layout_generator.py | 42 +- libtoprammer/top2049/vcc_layouts.py | 154 ++++++ libtoprammer/top2049/vccx_layouts.py | 154 ------ libtoprammer/top_xxxx.py | 2 +- libtoprammer/toprammer_main.py | 14 +- reverse-engineering/HWPROTOCOL | 4 +- reverse-engineering/dump-parser.py | 4 +- reverse-engineering/vccx-sniffer.patch | 4 +- tests/generic/002-toprammer-layout.test | 2 +- toprammer-gui | 80 +-- toprammer-layout | 16 +- 31 files changed, 726 insertions(+), 759 deletions(-) create mode 100644 libtoprammer/top2049/vcc_layouts.py delete mode 100644 libtoprammer/top2049/vccx_layouts.py diff --git a/README-DEVELOPERS.lyx b/README-DEVELOPERS.lyx index 06f2090..76f48d6 100644 --- a/README-DEVELOPERS.lyx +++ b/README-DEVELOPERS.lyx @@ -77,7 +77,7 @@ VPP Programming voltage for the DUT (usually 12V) \end_layout \begin_layout Description -VCCX Supply voltage for the DUT +VCC Supply voltage for the DUT \end_layout \begin_layout Description @@ -241,11 +241,11 @@ Set VPP (programming voltage) to the specified voltage. \end_layout \begin_layout Subsection -cmdSetVCCXVoltage(voltage) +cmdSetVCCVoltage(voltage) \end_layout \begin_layout Standard -Set VCCX (DUT supply voltage) to the specified voltage. +Set VCC (DUT supply voltage) to the specified voltage. Voltage is a floating point number. \end_layout @@ -270,7 +270,7 @@ Load a ZIF-socket VPP-layout. \end_layout \begin_layout Subsection -cmdLoadVCCXLayout(layoutID) +cmdLoadVCCLayout(layoutID) \end_layout \begin_layout Standard @@ -763,7 +763,7 @@ DIP40 \end_layout \begin_layout Description -chipPinVCCX This parameter is an integer specifying the VCC pin on the chip +chipPinVCC This parameter is an integer specifying the VCC pin on the chip package. Note that it specifies the VCC pin on the chip package and _not_ on the ZIF socket. @@ -814,7 +814,7 @@ class Chip \end_layout \begin_layout Description -applyVCCX(on) This method enables or disables (depending on the +applyVCC(on) This method enables or disables (depending on the \begin_inset Quotes eld \end_inset diff --git a/README-DEVELOPERS.ps b/README-DEVELOPERS.ps index f9e4920..06cd9ae 100644 --- a/README-DEVELOPERS.ps +++ b/README-DEVELOPERS.ps @@ -1,7 +1,7 @@ %!PS-Adobe-2.0 %%Creator: dvips(k) 5.991 Copyright 2011 Radical Eye Software %%Title: README-DEVELOPERS.dvi -%%CreationDate: Fri Apr 6 12:42:13 2012 +%%CreationDate: Fri Apr 6 21:24:07 2012 %%Pages: 7 %%PageOrder: Ascend %%BoundingBox: 0 0 612 792 @@ -11,7 +11,7 @@ %DVIPSWebPage: (www.radicaleye.com) %DVIPSCommandLine: dvips -o README-DEVELOPERS.ps README-DEVELOPERS.dvi %DVIPSParameters: dpi=600 -%DVIPSSource: TeX output 2012.04.06:1241 +%DVIPSSource: TeX output 2012.04.06:2124 %%BeginProcSet: tex.pro 0 0 %! /TeXDict 300 dict def TeXDict begin/N{def}def/B{bind def}N/S{exch}N/X{S @@ -518,8 +518,8 @@ E0000003E3E0000003E7C0000001E7C0000001F7C0000001F780000000FF80000000FF80 87E000007E0FE000007E1FC000007FFF8000003FFF0000001FFE0000000FFC00000007E0 00000027367EA32C>I E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fb ecbx1200 12 58 -/Fb 58 123 df<0000000FFF0003FF00000001FFFFC03FFFC000000FFFFFF1FFFFE00000 +%DVIPSBitmapFont: Fb ecbx1200 12 57 +/Fb 57 123 df<0000000FFF0003FF00000001FFFFC03FFFC000000FFFFFF1FFFFE00000 7FFFFFFFFFFFF00001FFF803FFFE1FF80003FF8003FFF81FFC000FFF0007FFF03FFC001F FE000FFFE03FFC003FFC000FFFE03FFC003FF8000FFFC03FFC007FF0000FFFC03FFC007F F0000FFFC01FF800FFF0000FFF801FF800FFE00007FF8007E000FFE00003FF80018000FF @@ -987,261 +987,242 @@ FE7800003FFF3C0000000000003FFEF800003FFF780000000000003FFEF000001FFF7800 0003FF00000001FF8000000000000003FF00000001FF8000000000000001FE00000000FF 0000000000000001FE00000000FF0000000000000000FC000000007E0000000000000000 FC000000007E0000000000000000FC000000007E000000000000000078000000003C0000 -00006F457EC374>I<7FFFFFFFC003FFFFFF807FFFFFFFC003FFFFFF807FFFFFFFC003FF -FFFF807FFFFFFFC003FFFFFF807FFFFFFFC003FFFFFF80000FFFE0000001F800000007FF -E0000003F000000007FFF0000007F000000003FFF8000007E000000001FFFC00000FC000 -000001FFFC00001F8000000000FFFE00003F80000000007FFF00003F00000000003FFF00 -007E00000000003FFF8000FC00000000001FFFC001FC00000000000FFFE001F800000000 -000FFFE003F0000000000007FFF007E0000000000003FFF80FE0000000000001FFFC0FC0 -000000000001FFFC1F80000000000000FFFE3F000000000000007FFF7F00000000000000 -3FFF7E000000000000003FFFFC000000000000001FFFF8000000000000000FFFF8000000 -000000000FFFF00000000000000007FFF00000000000000003FFF80000000000000001FF -F80000000000000001FFFC0000000000000000FFFE00000000000000007FFF0000000000 -000000FFFF0000000000000000FFFF8000000000000001FFFFC000000000000003FFFFC0 -00000000000007FFFFE000000000000007E7FFF00000000000000FC3FFF8000000000000 -1F83FFF80000000000003F81FFFC0000000000003F00FFFE0000000000007E007FFE0000 -00000000FC007FFF000000000001FC003FFF800000000001F8001FFFC00000000003F000 -1FFFC00000000007E0000FFFE0000000000FE00007FFF0000000000FC00003FFF0000000 -001F800003FFF8000000003F000001FFFC000000003F000000FFFE000000007E000000FF -FE00000000FC0000007FFF00000001FC0000003FFF80000001F80000001FFF80000003F0 -0000001FFFC0000007E00000000FFFE000000FE000000007FFF000FFFFFFE00003FFFFFF -FCFFFFFFE00003FFFFFFFCFFFFFFE00003FFFFFFFCFFFFFFE00003FFFFFFFCFFFFFFE000 -03FFFFFFFC4E447DC355>I<1FFFFFFFFFFFFE1FFFFFFFFFFFFE1FFFFFFFFFFFFE1FFFFF -FFFFFFFE1FFFFFFFFFFFFE1FFFF80001FFFC1FFF800001FFF81FFC000003FFF81FF80000 -07FFF01FF0000007FFE01FE000000FFFE01FC000001FFFC03F8000001FFF803F8000003F -FF803F0000007FFF003F0000007FFE003E000000FFFE003E000001FFFC003E000001FFF8 -003C000003FFF8003C000007FFF0003C000007FFE0003C00000FFFE0003C00001FFFC000 -0000001FFF80000000003FFF00000000007FFF00000000007FFE0000000000FFFC000000 -0001FFFC0000000001FFF80000000003FFF00000000007FFF00000000007FFE000000000 -0FFFC0000000001FFFC0000000001FFF80000000003FFF00000000007FFF00000000007F -FE0000000000FFFC00000F0001FFFC00000F0001FFF800000F0003FFF000000F0007FFF0 -00000F000FFFE000001F000FFFC000001F001FFFC000001E003FFF8000001E003FFF0000 -001E007FFF0000003E00FFFE0000003E00FFFC0000003E01FFFC0000007E03FFF8000000 -7E03FFF0000000FE07FFF0000001FE0FFFE0000003FE0FFFC0000007FE1FFFC000000FFE -3FFF8000003FFE3FFF000000FFFC7FFF00000FFFFCFFFFFFFFFFFFFCFFFFFFFFFFFFFCFF -FFFFFFFFFFFCFFFFFFFFFFFFFCFFFFFFFFFFFFFC38447AC344>90 -D<0001FFE0000000001FFFFE000000007FFFFF80000001FFFFFFE0000003FE007FF80000 -07FC001FFC000007FE000FFE00000FFF0007FF00000FFF0007FF00000FFF0003FF80000F -FF0003FF80000FFF0003FF80000FFF0001FFC00007FE0001FFC00003FC0001FFC00000F0 -0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000003 -FFFFC0000000FFFFFFC0000007FFFFFFC000003FFFF1FFC00000FFFC01FFC00003FFE001 -FFC00007FF8001FFC0001FFE0001FFC0003FFC0001FFC0003FF80001FFC0007FF80001FF -C0007FF00001FFC000FFF00001FFC000FFE00001FFC000FFE00001FFC000FFE00001FFC0 -00FFE00003FFC000FFE00003FFC000FFF00007FFC0007FF8000FFFC0007FF8001FFFF000 -3FFE003EFFFFC01FFF80FC7FFFC007FFFFF87FFFC003FFFFE01FFFC0007FFF8007FFC000 -0FFC00000000322F7DAD36>97 D<007FC000000000FFFFC000000000FFFFC000000000FF -FFC000000000FFFFC000000000FFFFC00000000003FFC00000000001FFC00000000001FF -C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0 -0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000 -00000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000 -000001FFC00FF8000001FFC0FFFF800001FFC3FFFFE00001FFCFFFFFF80001FFDFC03FFC -0001FFFF000FFE0001FFFC0003FF0001FFF80001FF8001FFF00001FFC001FFE00000FFE0 -01FFC00000FFE001FFC000007FF001FFC000007FF001FFC000007FF801FFC000003FF801 -FFC000003FF801FFC000003FF801FFC000003FFC01FFC000003FFC01FFC000003FFC01FF -C000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC0 -00003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FF801FFC000 -003FF801FFC000007FF801FFC000007FF001FFC000007FF001FFC000007FF001FFC00000 -FFE001FFE00000FFC001FFF00001FFC001FFF80003FF8001FF7C0007FF0001FE3E000FFE -0001FC1FC07FFC0001F80FFFFFF00001F003FFFFC00001E000FFFF00000000001FF00000 -36467DC43E>I<00003FFC00000001FFFFC000000FFFFFF000003FFFFFFC00007FF003FE -0000FFC001FF0003FF8003FF0007FF0007FF8007FE0007FF800FFE0007FF801FFC0007FF -801FFC0007FF803FF80007FF803FF80003FF007FF80001FE007FF8000078007FF0000000 -007FF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000 -00FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000 -00FFF0000000007FF8000000007FF8000000007FF8000000003FF8000000003FFC000003 -C03FFC000003C01FFE000007C00FFE000007800FFF00000F8007FF80001F0003FFC0003E -0001FFF0007C00007FFC03F800003FFFFFF000000FFFFFC0000003FFFF000000003FF800 -002A2F7CAD32>I<0000000003FE0000000007FFFE0000000007FFFE0000000007FFFE00 -00000007FFFE0000000007FFFE00000000001FFE00000000000FFE00000000000FFE0000 -0000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE000000 -00000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000 -000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE0000003FE0 -0FFE000003FFFC0FFE00000FFFFF8FFE00003FFFFFCFFE0000FFF807FFFE0001FFC001FF -FE0003FF80007FFE0007FF00003FFE000FFE00001FFE000FFC00000FFE001FFC00000FFE -003FF800000FFE003FF800000FFE003FF800000FFE007FF800000FFE007FF000000FFE00 -7FF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FF -F000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF0 -00000FFE00FFF000000FFE00FFF000000FFE007FF000000FFE007FF000000FFE007FF000 -000FFE007FF800000FFE003FF800000FFE003FF800000FFE001FFC00001FFE001FFC0000 -1FFE000FFE00003FFE0007FE00007FFE0003FF0000FFFF0001FFC003FFFFFC00FFF01FEF -FFFC007FFFFF8FFFFC001FFFFE0FFFFC0007FFF80FFFFC00007FC00FF80036467CC43E> -I<00003FF800000003FFFF8000000FFFFFE000003FFFFFF000007FF83FF80000FFC007FC -0001FF8003FE0003FF0001FF0007FE0000FF800FFC0000FF801FFC00007FC01FF800007F -C03FF800003FE03FF800003FE07FF800003FE07FF000003FE07FF000003FF07FF000001F -F0FFF000001FF0FFF000001FF0FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFF -F0FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000007FF0000000 -007FF0000000007FF8000000007FF8000000003FF8000000003FF8000000F01FFC000000 -F01FFC000001F00FFE000001E007FF000003E003FF800007C001FFC0000F8000FFF0003F -00007FFE01FE00001FFFFFFC000007FFFFF0000001FFFFC00000001FFE00002C2F7DAD33 ->I<000000FF8000000FFFE000007FFFF00001FFFFF80003FF8FFC000FFE0FFE001FFC1F -FE001FF81FFE003FF81FFE007FF01FFE007FF01FFE007FF00FFC00FFE00FFC00FFE003F0 -00FFE000C000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000 -FFE0000000FFE0000000FFE0000000FFE0000000FFE00000FFFFFFF800FFFFFFF800FFFF -FFF800FFFFFFF800FFFFFFF80000FFE0000000FFE0000000FFE0000000FFE0000000FFE0 -000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000 +00006F457EC374>I<1FFFFFFFFFFFFE1FFFFFFFFFFFFE1FFFFFFFFFFFFE1FFFFFFFFFFF +FE1FFFFFFFFFFFFE1FFFF80001FFFC1FFF800001FFF81FFC000003FFF81FF8000007FFF0 +1FF0000007FFE01FE000000FFFE01FC000001FFFC03F8000001FFF803F8000003FFF803F +0000007FFF003F0000007FFE003E000000FFFE003E000001FFFC003E000001FFF8003C00 +0003FFF8003C000007FFF0003C000007FFE0003C00000FFFE0003C00001FFFC000000000 +1FFF80000000003FFF00000000007FFF00000000007FFE0000000000FFFC0000000001FF +FC0000000001FFF80000000003FFF00000000007FFF00000000007FFE0000000000FFFC0 +000000001FFFC0000000001FFF80000000003FFF00000000007FFF00000000007FFE0000 +000000FFFC00000F0001FFFC00000F0001FFF800000F0003FFF000000F0007FFF000000F +000FFFE000001F000FFFC000001F001FFFC000001E003FFF8000001E003FFF0000001E00 +7FFF0000003E00FFFE0000003E00FFFC0000003E01FFFC0000007E03FFF80000007E03FF +F0000000FE07FFF0000001FE0FFFE0000003FE0FFFC0000007FE1FFFC000000FFE3FFF80 +00003FFE3FFF000000FFFC7FFF00000FFFFCFFFFFFFFFFFFFCFFFFFFFFFFFFFCFFFFFFFF +FFFFFCFFFFFFFFFFFFFCFFFFFFFFFFFFFC38447AC344>90 D<0001FFE0000000001FFFFE +000000007FFFFF80000001FFFFFFE0000003FE007FF8000007FC001FFC000007FE000FFE +00000FFF0007FF00000FFF0007FF00000FFF0003FF80000FFF0003FF80000FFF0003FF80 +000FFF0001FFC00007FE0001FFC00003FC0001FFC00000F00001FFC00000000001FFC000 +00000001FFC00000000001FFC00000000001FFC000000003FFFFC0000000FFFFFFC00000 +07FFFFFFC000003FFFF1FFC00000FFFC01FFC00003FFE001FFC00007FF8001FFC0001FFE +0001FFC0003FFC0001FFC0003FF80001FFC0007FF80001FFC0007FF00001FFC000FFF000 +01FFC000FFE00001FFC000FFE00001FFC000FFE00001FFC000FFE00003FFC000FFE00003 +FFC000FFF00007FFC0007FF8000FFFC0007FF8001FFFF0003FFE003EFFFFC01FFF80FC7F +FFC007FFFFF87FFFC003FFFFE01FFFC0007FFF8007FFC0000FFC00000000322F7DAD36> +97 D<007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC00000 +0000FFFFC00000000003FFC00000000001FFC00000000001FFC00000000001FFC0000000 +0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000 +01FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001 +FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00FF8000001FF +C0FFFF800001FFC3FFFFE00001FFCFFFFFF80001FFDFC03FFC0001FFFF000FFE0001FFFC +0003FF0001FFF80001FF8001FFF00001FFC001FFE00000FFE001FFC00000FFE001FFC000 +007FF001FFC000007FF001FFC000007FF801FFC000003FF801FFC000003FF801FFC00000 +3FF801FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003F +FC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC +01FFC000003FFC01FFC000003FFC01FFC000003FF801FFC000003FF801FFC000007FF801 +FFC000007FF001FFC000007FF001FFC000007FF001FFC00000FFE001FFE00000FFC001FF +F00001FFC001FFF80003FF8001FF7C0007FF0001FE3E000FFE0001FC1FC07FFC0001F80F +FFFFF00001F003FFFFC00001E000FFFF00000000001FF0000036467DC43E>I<00003FFC +00000001FFFFC000000FFFFFF000003FFFFFFC00007FF003FE0000FFC001FF0003FF8003 +FF0007FF0007FF8007FE0007FF800FFE0007FF801FFC0007FF801FFC0007FF803FF80007 +FF803FF80003FF007FF80001FE007FF8000078007FF0000000007FF000000000FFF00000 +0000FFF000000000FFF000000000FFF000000000FFF000000000FFF000000000FFF00000 +0000FFF000000000FFF000000000FFF000000000FFF000000000FFF0000000007FF80000 +00007FF8000000007FF8000000003FF8000000003FFC000003C03FFC000003C01FFE0000 +07C00FFE000007800FFF00000F8007FF80001F0003FFC0003E0001FFF0007C00007FFC03 +F800003FFFFFF000000FFFFFC0000003FFFF000000003FF800002A2F7CAD32>I<000000 +0003FE0000000007FFFE0000000007FFFE0000000007FFFE0000000007FFFE0000000007 +FFFE00000000001FFE00000000000FFE00000000000FFE00000000000FFE00000000000F +FE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE +00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00 +000000000FFE00000000000FFE00000000000FFE0000003FE00FFE000003FFFC0FFE0000 +0FFFFF8FFE00003FFFFFCFFE0000FFF807FFFE0001FFC001FFFE0003FF80007FFE0007FF +00003FFE000FFE00001FFE000FFC00000FFE001FFC00000FFE003FF800000FFE003FF800 +000FFE003FF800000FFE007FF800000FFE007FF000000FFE007FF000000FFE00FFF00000 +0FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000F +FE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE +00FFF000000FFE007FF000000FFE007FF000000FFE007FF000000FFE007FF800000FFE00 +3FF800000FFE003FF800000FFE001FFC00001FFE001FFC00001FFE000FFE00003FFE0007 +FE00007FFE0003FF0000FFFF0001FFC003FFFFFC00FFF01FEFFFFC007FFFFF8FFFFC001F +FFFE0FFFFC0007FFF80FFFFC00007FC00FF80036467CC43E>I<00003FF800000003FFFF +8000000FFFFFE000003FFFFFF000007FF83FF80000FFC007FC0001FF8003FE0003FF0001 +FF0007FE0000FF800FFC0000FF801FFC00007FC01FF800007FC03FF800003FE03FF80000 +3FE07FF800003FE07FF000003FE07FF000003FF07FF000001FF0FFF000001FF0FFF00000 +1FF0FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFF0FFFFFFFFFFF0FFF000000000FFF00000 +0000FFF000000000FFF000000000FFF0000000007FF0000000007FF0000000007FF80000 +00007FF8000000003FF8000000003FF8000000F01FFC000000F01FFC000001F00FFE0000 +01E007FF000003E003FF800007C001FFC0000F8000FFF0003F00007FFE01FE00001FFFFF +FC000007FFFFF0000001FFFFC00000001FFE00002C2F7DAD33>I<000000FF8000000FFF +E000007FFFF00001FFFFF80003FF8FFC000FFE0FFE001FFC1FFE001FF81FFE003FF81FFE +007FF01FFE007FF01FFE007FF00FFC00FFE00FFC00FFE003F000FFE000C000FFE0000000 +FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FF +E0000000FFE0000000FFE00000FFFFFFF800FFFFFFF800FFFFFFF800FFFFFFF800FFFFFF +F80000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000 0000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE00000 00FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000 FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FF -E000007FFFFFE0007FFFFFE0007FFFFFE0007FFFFFE0007FFFFFE00027467DC522>I<00 -00FFE0007E00000FFFFE03FF80003FFFFF8FFF8000FFFFFFFFFFC001FFC07FFF3FC003FF -001FF83FC007FE000FFC3FC00FFC0007FE1F801FFC0007FF0F001FF80003FF00001FF800 -03FF00003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003 -FF80003FF80003FF80003FF80003FF80003FF80003FF80001FF80003FF00001FF80003FF -00001FFC0007FF00000FFC0007FE000007FE000FFC000003FF001FF8000001FFC07FF000 -0003FFFFFFE0000003FFFFFF800000078FFFFE0000000780FFE00000000F800000000000 -0F8000000000000F8000000000000F8000000000000FC000000000000FE000000000000F -F000000000000FFFFFFFC000000FFFFFFFFC000007FFFFFFFF800007FFFFFFFFE00003FF -FFFFFFF00001FFFFFFFFFC0000FFFFFFFFFC0003FFFFFFFFFE000FFFFFFFFFFF001FF000 -007FFF003FC0000007FF007F80000001FF807F80000000FF80FF00000000FF80FF000000 -007F80FF000000007F80FF000000007F80FF000000007F80FF80000000FF807F80000000 -FF007FC0000001FF003FE0000003FE001FF0000007FC000FFE00003FF80007FFC001FFF0 -0001FFFFFFFFC000007FFFFFFF0000000FFFFFF8000000007FFF00000032427DAC38>I< -007FC000000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC000000000FF -FFC00000000003FFC00000000001FFC00000000001FFC00000000001FFC00000000001FF -C00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0 -0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000 -00000001FFC00000000001FFC00000000001FFC00000000001FFC007FE000001FFC03FFF -800001FFC0FFFFE00001FFC1FFFFF80001FFC7F03FFC0001FFCF801FFC0001FFDF000FFE -0001FFDE000FFE0001FFFC000FFE0001FFF80007FF0001FFF00007FF0001FFF00007FF00 -01FFE00007FF0001FFE00007FF0001FFE00007FF0001FFC00007FF0001FFC00007FF0001 +E0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000007FFFFFE0007FFFFF +E0007FFFFFE0007FFFFFE0007FFFFFE00027467DC522>I<0000FFE0007E00000FFFFE03 +FF80003FFFFF8FFF8000FFFFFFFFFFC001FFC07FFF3FC003FF001FF83FC007FE000FFC3F +C00FFC0007FE1F801FFC0007FF0F001FF80003FF00001FF80003FF00003FF80003FF8000 +3FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003FF80003F +F80003FF80003FF80003FF80001FF80003FF00001FF80003FF00001FFC0007FF00000FFC +0007FE000007FE000FFC000003FF001FF8000001FFC07FF0000003FFFFFFE0000003FFFF +FF800000078FFFFE0000000780FFE00000000F8000000000000F8000000000000F800000 +0000000F8000000000000FC000000000000FE000000000000FF000000000000FFFFFFFC0 +00000FFFFFFFFC000007FFFFFFFF800007FFFFFFFFE00003FFFFFFFFF00001FFFFFFFFFC +0000FFFFFFFFFC0003FFFFFFFFFE000FFFFFFFFFFF001FF000007FFF003FC0000007FF00 +7F80000001FF807F80000000FF80FF00000000FF80FF000000007F80FF000000007F80FF +000000007F80FF000000007F80FF80000000FF807F80000000FF007FC0000001FF003FE0 +000003FE001FF0000007FC000FFE00003FF80007FFC001FFF00001FFFFFFFFC000007FFF +FFFF0000000FFFFFF8000000007FFF00000032427DAC38>I<007FC000000000FFFFC000 +000000FFFFC000000000FFFFC000000000FFFFC000000000FFFFC00000000003FFC00000 +000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC0000000 +0001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000 +01FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001 +FFC00000000001FFC00000000001FFC007FE000001FFC03FFF800001FFC0FFFFE00001FF +C1FFFFF80001FFC7F03FFC0001FFCF801FFC0001FFDF000FFE0001FFDE000FFE0001FFFC +000FFE0001FFF80007FF0001FFF00007FF0001FFF00007FF0001FFE00007FF0001FFE000 +07FF0001FFE00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007 +FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF +0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF00 +01FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001 FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FF -C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0 -0007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC000 -07FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007 -FF0001FFC00007FF0001FFC00007FF00FFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFF -FEFFFFFF83FFFFFEFFFFFF83FFFFFE37457CC43E>I<007C0001FF0003FF8007FFC007FF -C00FFFE00FFFE00FFFE00FFFE00FFFE007FFC007FFC003FF8001FF00007C000000000000 -00000000000000000000000000000000000000000000000000007FC07FFFC07FFFC07FFF -C07FFFC07FFFC003FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF -C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF -C001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FF -C0FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF18467CC520>I<007FC000FFFFC000FFFFC000FF -FFC000FFFFC000FFFFC00003FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 -FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 -FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 -FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 -FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 -FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001 -FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000FFFFFF80FFFFFF80FF -FFFF80FFFFFF80FFFFFF8019457CC420>108 D<007F8007FE00000FFC0000FFFF803FFF -C0007FFF8000FFFF80FFFFF001FFFFE000FFFF81FFFFF803FFFFF000FFFF87F01FFC0FE0 -3FF800FFFF8FC00FFE1F801FFC0003FF9F000FFF3E001FFE0001FF9E0007FF3C000FFE00 -01FFBC0007FF78000FFE0001FFF80003FFF00007FF0001FFF80003FFF00007FF0001FFF0 -0003FFE00007FF0001FFE00003FFC00007FF0001FFE00003FFC00007FF0001FFE00003FF -C00007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007 +C00007FF00FFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF +83FFFFFE37457CC43E>I<007C0001FF0003FF8007FFC007FFC00FFFE00FFFE00FFFE00F +FFE00FFFE007FFC007FFC003FF8001FF00007C0000000000000000000000000000000000 +0000000000000000000000000000007FC07FFFC07FFFC07FFFC07FFFC07FFFC003FFC001 +FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001 +FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001 +FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC001FFC0FFFFFFFFFFFFFFFFFFFF +FFFFFFFFFF18467CC520>I<007FC000FFFFC000FFFFC000FFFFC000FFFFC000FFFFC000 +03FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 +01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 +01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 +01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 +01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 +01FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC00001FFC000 +01FFC00001FFC00001FFC00001FFC000FFFFFF80FFFFFF80FFFFFF80FFFFFF80FFFFFF80 +19457CC420>108 D<007F8007FE00000FFC0000FFFF803FFFC0007FFF8000FFFF80FFFF +F001FFFFE000FFFF81FFFFF803FFFFF000FFFF87F01FFC0FE03FF800FFFF8FC00FFE1F80 +1FFC0003FF9F000FFF3E001FFE0001FF9E0007FF3C000FFE0001FFBC0007FF78000FFE00 +01FFF80003FFF00007FF0001FFF80003FFF00007FF0001FFF00003FFE00007FF0001FFE0 +0003FFC00007FF0001FFE00003FFC00007FF0001FFE00003FFC00007FF0001FFC00003FF +800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007 FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001 FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC000 03FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF80 0007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF 0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FF C00003FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF0001FFC00003 -FF800007FF0001FFC00003FF800007FF0001FFC00003FF800007FF00FFFFFF81FFFFFF03 +FF800007FF0001FFC00003FF800007FF00FFFFFF81FFFFFF03FFFFFEFFFFFF81FFFFFF03 FFFFFEFFFFFF81FFFFFF03FFFFFEFFFFFF81FFFFFF03FFFFFEFFFFFF81FFFFFF03FFFFFE -FFFFFF81FFFFFF03FFFFFE572D7CAC5E>I<007F8007FE0000FFFF803FFF8000FFFF80FF -FFE000FFFF81FFFFF800FFFF87F03FFC00FFFF8F801FFC0003FF9F000FFE0001FF9E000F -FE0001FFBC000FFE0001FFF80007FF0001FFF00007FF0001FFF00007FF0001FFE00007FF -0001FFE00007FF0001FFE00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF00 -01FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001 -FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FF -C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0 +572D7CAC5E>I<007F8007FE0000FFFF803FFF8000FFFF80FFFFE000FFFF81FFFFF800FF +FF87F03FFC00FFFF8F801FFC0003FF9F000FFE0001FF9E000FFE0001FFBC000FFE0001FF +F80007FF0001FFF00007FF0001FFF00007FF0001FFE00007FF0001FFE00007FF0001FFE0 0007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC000 -07FF0001FFC00007FF00FFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FF -FFFEFFFFFF83FFFFFE372D7CAC3E>I<00001FFC0000000001FFFFC000000007FFFFF000 -00001FFFFFFC0000007FF80FFF000000FFC001FF800001FF8000FFC00003FE00003FE000 -07FE00003FF0000FFC00001FF8000FF800000FF8001FF800000FFC001FF800000FFC003F -F800000FFE003FF0000007FE007FF0000007FF007FF0000007FF007FF0000007FF007FF0 -000007FF00FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF000 -0007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF00000 -07FF807FF0000007FF007FF0000007FF007FF0000007FF007FF0000007FF003FF800000F -FE003FF800000FFE001FF800000FFC001FFC00001FFC000FFC00001FF80007FE00003FF0 -0007FE00003FF00003FF8000FFE00001FFC001FFC000007FF80FFF0000003FFFFFFE0000 -000FFFFFF800000001FFFFC0000000001FFC000000312F7DAD38>I<007FC00FF80000FF -FFC0FFFF8000FFFFC3FFFFE000FFFFCFFFFFF800FFFFDFC03FFC00FFFFFF001FFE0003FF -FC0007FF0001FFF80003FF8001FFF00003FFC001FFE00001FFE001FFC00001FFE001FFC0 -0000FFF001FFC00000FFF001FFC000007FF801FFC000007FF801FFC000007FF801FFC000 -007FF801FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC00000 -3FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003F -FC01FFC000003FFC01FFC000003FFC01FFC000007FF801FFC000007FF801FFC000007FF8 -01FFC000007FF001FFC00000FFF001FFC00000FFF001FFC00001FFE001FFE00001FFC001 -FFF00003FFC001FFF80007FF8001FFFC000FFF0001FFFE001FFE0001FFDFC07FFC0001FF -CFFFFFF00001FFC3FFFFC00001FFC0FFFF000001FFC01FF0000001FFC00000000001FFC0 -0000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000 -00000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000 -000001FFC000000000FFFFFF80000000FFFFFF80000000FFFFFF80000000FFFFFF800000 -00FFFFFF8000000036407DAC3E>I<00003FE0001E000003FFFC003E00000FFFFF007E00 -003FFFFF807E0000FFF80FE0FE0001FFE003F1FE0003FFC001F1FE0007FF8000FBFE000F -FF00007FFE000FFE00003FFE001FFE00001FFE003FFC00001FFE003FFC00000FFE003FF8 -00000FFE007FF800000FFE007FF800000FFE007FF800000FFE00FFF000000FFE00FFF000 -000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF00000 -0FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000F -FE007FF800000FFE007FF800000FFE007FF800000FFE007FF800000FFE003FFC00000FFE -003FFC00000FFE001FFE00001FFE001FFE00003FFE000FFF00007FFE0007FF0000FFFE00 -03FF8001FFFE0001FFE003EFFE0000FFF01FCFFE00007FFFFF8FFE00001FFFFE0FFE0000 -03FFF80FFE0000007FC00FFE00000000000FFE00000000000FFE00000000000FFE000000 -00000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000 -000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE0000000007 -FFFFFC00000007FFFFFC00000007FFFFFC00000007FFFFFC00000007FFFFFC36407CAC3B ->I<007F807F00FFFF81FFE0FFFF83FFF0FFFF8FFFF8FFFF8F8FFCFFFF9F1FFE03FFBE1F -FE01FFBC1FFE01FFF81FFE01FFF81FFE01FFF01FFE01FFF00FFC01FFE007F801FFE001E0 -01FFE0000001FFE0000001FFE0000001FFC0000001FFC0000001FFC0000001FFC0000001 -FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FF +07FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007 +FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF +0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF00 +01FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF00FF +FFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFEFFFFFF83FFFFFE372D +7CAC3E>I<00001FFC0000000001FFFFC000000007FFFFF00000001FFFFFFC0000007FF8 +0FFF000000FFC001FF800001FF8000FFC00003FE00003FE00007FE00003FF0000FFC0000 +1FF8000FF800000FF8001FF800000FFC001FF800000FFC003FF800000FFE003FF0000007 +FE007FF0000007FF007FF0000007FF007FF0000007FF007FF0000007FF00FFF0000007FF +80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF80 +FFF0000007FF80FFF0000007FF80FFF0000007FF80FFF0000007FF807FF0000007FF007F +F0000007FF007FF0000007FF007FF0000007FF003FF800000FFE003FF800000FFE001FF8 +00000FFC001FFC00001FFC000FFC00001FF80007FE00003FF00007FE00003FF00003FF80 +00FFE00001FFC001FFC000007FF80FFF0000003FFFFFFE0000000FFFFFF800000001FFFF +C0000000001FFC000000312F7DAD38>I<007FC00FF80000FFFFC0FFFF8000FFFFC3FFFF +E000FFFFCFFFFFF800FFFFDFC03FFC00FFFFFF001FFE0003FFFC0007FF0001FFF80003FF +8001FFF00003FFC001FFE00001FFE001FFC00001FFE001FFC00000FFF001FFC00000FFF0 +01FFC000007FF801FFC000007FF801FFC000007FF801FFC000007FF801FFC000003FFC01 +FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FF +C000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC000003FFC01FFC0 +00003FFC01FFC000007FF801FFC000007FF801FFC000007FF801FFC000007FF001FFC000 +00FFF001FFC00000FFF001FFC00001FFE001FFE00001FFC001FFF00003FFC001FFF80007 +FF8001FFFC000FFF0001FFFE001FFE0001FFDFC07FFC0001FFCFFFFFF00001FFC3FFFFC0 +0001FFC0FFFF000001FFC01FF0000001FFC00000000001FFC00000000001FFC000000000 +01FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC00000000001 +FFC00000000001FFC00000000001FFC00000000001FFC00000000001FFC000000000FFFF +FF80000000FFFFFF80000000FFFFFF80000000FFFFFF80000000FFFFFF8000000036407D +AC3E>I<00003FE0001E000003FFFC003E00000FFFFF007E00003FFFFF807E0000FFF80F +E0FE0001FFE003F1FE0003FFC001F1FE0007FF8000FBFE000FFF00007FFE000FFE00003F +FE001FFE00001FFE003FFC00001FFE003FFC00000FFE003FF800000FFE007FF800000FFE +007FF800000FFE007FF800000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00 +FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE00FF +F000000FFE00FFF000000FFE00FFF000000FFE00FFF000000FFE007FF800000FFE007FF8 +00000FFE007FF800000FFE007FF800000FFE003FFC00000FFE003FFC00000FFE001FFE00 +001FFE001FFE00003FFE000FFF00007FFE0007FF0000FFFE0003FF8001FFFE0001FFE003 +EFFE0000FFF01FCFFE00007FFFFF8FFE00001FFFFE0FFE000003FFF80FFE0000007FC00F +FE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE +00000000000FFE00000000000FFE00000000000FFE00000000000FFE00000000000FFE00 +000000000FFE00000000000FFE00000000000FFE0000000007FFFFFC00000007FFFFFC00 +000007FFFFFC00000007FFFFFC00000007FFFFFC36407CAC3B>I<007F807F00FFFF81FF +E0FFFF83FFF0FFFF8FFFF8FFFF8F8FFCFFFF9F1FFE03FFBE1FFE01FFBC1FFE01FFF81FFE +01FFF81FFE01FFF01FFE01FFF00FFC01FFE007F801FFE001E001FFE0000001FFE0000001 +FFE0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FF C0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0 -000001FFC0000001FFC0000001FFC0000001FFC00000FFFFFFE000FFFFFFE000FFFFFFE0 -00FFFFFFE000FFFFFFE000272D7DAC2E>I<001FFC038000FFFF878003FFFFFF800FFFFF -FF801FF003FF803FC000FF803F80003F807F00001F807E00001F80FE00000F80FE00000F -80FE00000780FF00000780FF00000780FF80000780FFE0000000FFFE0000007FFFF00000 -7FFFFF00003FFFFFC0003FFFFFF0001FFFFFFC000FFFFFFE0003FFFFFF0001FFFFFF8000 -7FFFFF80000FFFFFC000003FFFC0000003FFE0000000FFE0F000003FE0F000003FE0F800 -001FE0F800000FE0F800000FE0FC00000FE0FC00000FE0FE00000FC0FF00001FC0FF0000 -1FC0FF80003F80FFE0007F00FFF803FE00FFFFFFFC00FCFFFFF800F03FFFE000E007FE00 -00232F7CAD2C>I<0001E000000001E000000001E000000001E000000001E000000003E0 -00000003E000000003E000000003E000000007E000000007E00000000FE00000000FE000 -00001FE00000001FE00000003FE00000007FE0000000FFE0000003FFE000000FFFFFFF80 -FFFFFFFF80FFFFFFFF80FFFFFFFF80FFFFFFFF8000FFE0000000FFE0000000FFE0000000 -FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FF +000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC0000001FFC000 +0001FFC0000001FFC00000FFFFFFE000FFFFFFE000FFFFFFE000FFFFFFE000FFFFFFE000 +272D7DAC2E>I<001FFC038000FFFF878003FFFFFF800FFFFFFF801FF003FF803FC000FF +803F80003F807F00001F807E00001F80FE00000F80FE00000F80FE00000780FF00000780 +FF00000780FF80000780FFE0000000FFFE0000007FFFF000007FFFFF00003FFFFFC0003F +FFFFF0001FFFFFFC000FFFFFFE0003FFFFFF0001FFFFFF80007FFFFF80000FFFFFC00000 +3FFFC0000003FFE0000000FFE0F000003FE0F000003FE0F800001FE0F800000FE0F80000 +0FE0FC00000FE0FC00000FE0FE00000FC0FF00001FC0FF00001FC0FF80003F80FFE0007F +00FFF803FE00FFFFFFFC00FCFFFFF800F03FFFE000E007FE0000232F7CAD2C>I<0001E0 +00000001E000000001E000000001E000000001E000000003E000000003E000000003E000 +000003E000000007E000000007E00000000FE00000000FE00000001FE00000001FE00000 +003FE00000007FE0000000FFE0000003FFE000000FFFFFFF80FFFFFFFF80FFFFFFFF80FF +FFFFFF80FFFFFFFF8000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FF E0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0 -000000FFE0000000FFE0000000FFE0000000FFE001E000FFE001E000FFE001E000FFE001 -E000FFE001E000FFE001E000FFE001E000FFE001E000FFE001E000FFE003E000FFF003C0 -007FF003C0007FF007C0003FF80F80001FFC1F00000FFFFF000007FFFC000001FFF80000 -003FE00023407EBE2C>I<007FC00001FF00FFFFC003FFFF00FFFFC003FFFF00FFFFC003 -FFFF00FFFFC003FFFF00FFFFC003FFFF0003FFC0000FFF0001FFC00007FF0001FFC00007 +000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000 +0000FFE0000000FFE001E000FFE001E000FFE001E000FFE001E000FFE001E000FFE001E0 +00FFE001E000FFE001E000FFE001E000FFE003E000FFF003C0007FF003C0007FF007C000 +3FF80F80001FFC1F00000FFFFF000007FFFC000001FFF80000003FE00023407EBE2C>I< +007FC00001FF00FFFFC003FFFF00FFFFC003FFFF00FFFFC003FFFF00FFFFC003FFFF00FF +FFC003FFFF0003FFC0000FFF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FF +C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0 +0007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC000 +07FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007 FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF -0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF00 -01FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001 -FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FF -C00007FF0001FFC00007FF0001FFC00007FF0001FFC00007FF0001FFC0000FFF0001FFC0 -000FFF0001FFC0001FFF0001FFC0001FFF0001FFC0003FFF0000FFC0003FFF0000FFE000 -7FFF80007FE001F7FFFE007FF807E7FFFE003FFFFFC7FFFE000FFFFF07FFFE0003FFFE07 -FFFE00007FF007FC00372E7CAC3E>II121 -D<1FFFFFFFFF801FFFFFFFFF801FFFFFFFFF801FFFFFFFFF801FFC001FFF001FE0003FFE -001FC0003FFE001F80007FFC001F0000FFF8003F0001FFF0003E0001FFF0003E0003FFE0 -003E0007FFC0003C000FFF80003C000FFF80003C001FFF00003C003FFE00003C007FFC00 -0000007FFC00000000FFF800000001FFF000000003FFE000000003FFE000000007FFC000 -00000FFF800780001FFF000780001FFF000780003FFE000780007FFC000F8000FFF8000F -0000FFF8000F0001FFF0000F0003FFE0001F0007FFC0001F0007FFC0001F000FFF80003F -001FFF00007F003FFE0000FF003FFE0003FF007FFC001FFE00FFFFFFFFFE00FFFFFFFFFE -00FFFFFFFFFE00FFFFFFFFFE00292C7DAB32>I E +0001FFC00007FF0001FFC00007FF0001FFC0000FFF0001FFC0000FFF0001FFC0001FFF00 +01FFC0001FFF0001FFC0003FFF0000FFC0003FFF0000FFE0007FFF80007FE001F7FFFE00 +7FF807E7FFFE003FFFFFC7FFFE000FFFFF07FFFE0003FFFE07FFFE00007FF007FC00372E +7CAC3E>II121 D<1FFFFFFFFF801FFFFFFFFF801FFFFF +FFFF801FFFFFFFFF801FFC001FFF001FE0003FFE001FC0003FFE001F80007FFC001F0000 +FFF8003F0001FFF0003E0001FFF0003E0003FFE0003E0007FFC0003C000FFF80003C000F +FF80003C001FFF00003C003FFE00003C007FFC000000007FFC00000000FFF800000001FF +F000000003FFE000000003FFE000000007FFC00000000FFF800780001FFF000780001FFF +000780003FFE000780007FFC000F8000FFF8000F0000FFF8000F0001FFF0000F0003FFE0 +001F0007FFC0001F0007FFC0001F000FFF80003F001FFF00007F003FFE0000FF003FFE00 +03FF007FFC001FFE00FFFFFFFFFE00FFFFFFFFFE00FFFFFFFFFE00FFFFFFFFFE00292C7D +AB32>I E %EndDVIPSBitmapFont /Fc 240[42 15[{}1 83.022 /CMSY10 rf %DVIPSBitmapFont: Fd ecrm1000 10 77 @@ -1864,8 +1845,8 @@ F000000FE000001FC000003F8000003F8000007F000600FE000600FE000601FC000603F8 000607F8000E07F0000E0FE0000C1FC0001C1FC0001C3F80003C7F00007CFF0003FCFFFF FFFCFFFFFFFC1F247EA325>I E %EndDVIPSBitmapFont -%DVIPSBitmapFont: Fe ecbx1000 10 42 -/Fe 42 122 df<00001C00003C0000F80001F00003E00007E0000FC0001F80001F00003F +%DVIPSBitmapFont: Fe ecbx1000 10 41 +/Fe 41 122 df<00001C00003C0000F80001F00003E00007E0000FC0001F80001F00003F 00007E0000FE0000FC0001FC0001F80003F80003F80007F00007F0000FF0000FE0001FE0 001FE0001FC0003FC0003FC0003FC0003FC0007F80007F80007F80007F80007F8000FF80 00FF8000FF8000FF8000FF8000FF8000FF8000FF8000FF8000FF8000FF8000FF8000FF80 @@ -2101,179 +2082,165 @@ FFE00000000000007FFFC00000000000007FFFC00000000000007FFFC00000000000003F FF800000000000003FFF800000000000001FFF000000000000001FFF000000000000000F FE000000000000000FFE000000000000000FFE0000000000000007FC0000000000000007 FC0000000000000003F80000000000000003F80000000000000001F000000000433A7EB8 -48>I<7FFFFFF803FFFFF8007FFFFFF803FFFFF8007FFFFFF803FFFFF8007FFFFFF803FF -FFF800007FFE00000FF00000003FFF00000FE00000001FFF00000FC00000001FFF80001F -800000000FFFC0003F0000000007FFC0003F0000000003FFE0007E0000000003FFF000FC -0000000001FFF801FC0000000000FFF801F80000000000FFFC03F000000000007FFE07E0 -00000000003FFE0FE000000000001FFF0FC000000000001FFF9F8000000000000FFFFF00 -000000000007FFFF00000000000007FFFE00000000000003FFFC00000000000001FFF800 -000000000000FFF800000000000000FFFC000000000000007FFE000000000000003FFE00 -0000000000003FFF000000000000001FFF800000000000003FFF800000000000007FFFC0 -000000000000FFFFE0000000000000FFFFE0000000000001F9FFF0000000000003F1FFF8 -000000000003F0FFFC000000000007E07FFC00000000000FC07FFE00000000001FC03FFF -00000000001F801FFF00000000003F000FFF80000000007E000FFFC000000000FE0007FF -E000000000FC0003FFE000000001F80003FFF000000003F00001FFF800000007F00000FF -F800000007E000007FFC0000000FC000007FFE0000001F8000003FFF0000003F8000001F -FF0000007F8000001FFF8000FFFFFF0007FFFFFF80FFFFFF0007FFFFFF80FFFFFF0007FF -FFFF80FFFFFF0007FFFFFF8041397DB848>88 D<3FFFFFFFFFFE3FFFFFFFFFFE3FFFFFFF -FFFE3FFFFFFFFFFE3FFF80007FFC3FFC0000FFF83FF00001FFF83FC00001FFF03F800003 -FFE03F000007FFE07F000007FFC07E00000FFF807E00001FFF807C00001FFF007C00003F -FE007C00007FFE007800007FFC00780000FFF800780001FFF800780001FFF000000003FF -E000000007FFE000000007FFC00000000FFFC00000001FFF800000001FFF000000003FFF -000000007FFE000000007FFC00000000FFFC00000001FFF800000001FFF000000003FFF0 -00000007FFE000000007FFC0001E000FFFC0001E000FFF80001E001FFF00001E003FFF00 -001E003FFE00001E007FFC00003E00FFFC00003E00FFF800003E01FFF000003E03FFF000 -007E03FFE000007C07FFC00000FC0FFFC00000FC0FFF800001FC1FFF000003FC3FFF0000 -0FFC3FFE00003FFC7FFC0001FFFCFFFFFFFFFFFCFFFFFFFFFFFCFFFFFFFFFFFCFFFFFFFF -FFFC2F397BB83A>90 D<003FFE00000003FFFFE000000FFFFFF800001FF00FFE00003FF0 -03FF00003FF801FF80003FF800FFC0003FF800FFC0003FF8007FE0003FF8007FE0001FF0 -007FE0000FE0007FE0000380007FE0000000007FE0000000007FE00000003FFFE000000F -FFFFE000007FFFFFE00001FFF87FE00007FF807FE0000FFE007FE0003FF8007FE0003FF0 -007FE0007FE0007FE000FFE0007FE000FFC0007FE000FFC0007FE000FFC0007FE000FFC0 -007FE000FFC000FFE000FFE001FFE0007FE001FFE0003FF007FFF8001FFC1FBFFFC00FFF -FE1FFFC003FFF80FFFC0003FE003FFC02A257DA42E>97 D<00FF00000000FFFF00000000 -FFFF00000000FFFF00000000FFFF0000000007FF0000000003FF0000000003FF00000000 -03FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000 -03FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000 -03FF0000000003FF01FF800003FF0FFFF00003FF3FFFFC0003FFFE03FF0003FFF000FF80 -03FFE0007FC003FF80003FE003FF00003FF003FF00001FF803FF00001FF803FF00001FFC -03FF00000FFC03FF00000FFC03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE -03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE -03FF00000FFC03FF00000FFC03FF00000FFC03FF00001FF803FF00001FF803FF00001FF0 -03FF80003FF003FFC0007FE003FFE0007FC003FDF001FF8003F8FC07FE0003F03FFFF800 -03E00FFFE00003C003FF00002F3A7EB935>I<0001FFC000000FFFFC00007FFFFF0000FF -80FF8003FE00FFC007FC01FFC00FF801FFC01FF801FFC01FF001FFC03FF001FFC03FF000 -FF807FE0007F007FE0001C007FE0000000FFE0000000FFE0000000FFE0000000FFE00000 -00FFE0000000FFE0000000FFE0000000FFE0000000FFE00000007FE00000007FE0000000 -7FF00000003FF00000003FF00001E01FF80001E01FF80003E00FFC0007C007FE00078003 -FF001F8000FFC07E00007FFFFC00000FFFF0000001FF800023257DA42A>I<000000007F -800000007FFF800000007FFF800000007FFF800000007FFF8000000003FF8000000001FF -8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF -8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF -8000000001FF8000000001FF800001FF81FF80000FFFF1FF80003FFFFDFF8000FFC07FFF -8003FF001FFF8007FC0007FF800FFC0003FF801FF80001FF801FF00001FF803FF00001FF -803FF00001FF807FE00001FF807FE00001FF807FE00001FF80FFE00001FF80FFE00001FF -80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF -80FFE00001FF80FFE00001FF807FE00001FF807FE00001FF807FF00001FF803FF00001FF -803FF00001FF801FF80003FF800FF80007FF8007FC000FFF8003FE001FFFC001FF80FDFF -FE007FFFF9FFFE001FFFE1FFFE0001FF01FFFE2F3A7DB935>I<0003FF8000001FFFF000 -007FFFFC0001FF83FE0003FE007F8007FC003F800FF8003FC01FF8001FE01FF0001FE03F -F0000FF03FF0000FF07FE0000FF07FE0000FF87FE00007F8FFE00007F8FFE00007F8FFFF -FFFFF8FFFFFFFFF8FFFFFFFFF8FFE0000000FFE0000000FFE0000000FFE00000007FE000 -00007FE00000007FE00000003FF00000003FF00000781FF00000780FF80000F80FFC0000 -F007FC0003F001FF000FE000FFC07FC0007FFFFF00000FFFFC000001FFE00025257DA42C ->I<000000001F000007FE00FFC0007FFFE3FFC001FFFFFFEFE007FE07FF8FE00FF801FF -1FE01FF000FF8FE03FF000FFCFE03FE0007FC7C03FE0007FC0007FE0007FE0007FE0007F -E0007FE0007FE0007FE0007FE0007FE0007FE0007FE0007FE0003FE0007FC0003FE0007F -C0003FF000FFC0001FF000FF80000FF801FF000007FE07FE00000FFFFFF800000F7FFFE0 -00001E07FE0000001E00000000001E00000000003E00000000003F00000000003F800000 -00001FC0000000001FFFFFF800001FFFFFFF80001FFFFFFFE0000FFFFFFFF80007FFFFFF -FC0003FFFFFFFE0007FFFFFFFE001FFFFFFFFF003FC0000FFF007F000000FF80FF000000 -7F80FE0000007F80FE0000003F80FE0000003F80FE0000003F80FF0000007F807F000000 -7F007F800000FF003FC00001FE001FF00007FC0007FE003FF00001FFFFFFC000007FFFFF -00000007FFF000002B377DA530>103 D<00FF00000000FFFF00000000FFFF00000000FF -FF00000000FFFF0000000007FF0000000003FF0000000003FF0000000003FF0000000003 -FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003 -FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003 -FF007FC00003FF03FFF80003FF0FFFFE0003FF1F03FF0003FF3C01FF8003FF7801FF8003 -FFF000FF8003FFE000FFC003FFC000FFC003FFC000FFC003FF8000FFC003FF8000FFC003 -FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003 -FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003 -FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003 -FF0000FFC003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFF -FFFC3FFFFF303A7DB935>I<01F00007FC000FFE000FFE001FFF001FFF001FFF001FFF00 -1FFF000FFE000FFE0007FC0001F000000000000000000000000000000000000000000000 -00000000000000FF007FFF007FFF007FFF007FFF0007FF0003FF0003FF0003FF0003FF00 +48>I<3FFFFFFFFFFE3FFFFFFFFFFE3FFFFFFFFFFE3FFFFFFFFFFE3FFF80007FFC3FFC00 +00FFF83FF00001FFF83FC00001FFF03F800003FFE03F000007FFE07F000007FFC07E0000 +0FFF807E00001FFF807C00001FFF007C00003FFE007C00007FFE007800007FFC00780000 +FFF800780001FFF800780001FFF000000003FFE000000007FFE000000007FFC00000000F +FFC00000001FFF800000001FFF000000003FFF000000007FFE000000007FFC00000000FF +FC00000001FFF800000001FFF000000003FFF000000007FFE000000007FFC0001E000FFF +C0001E000FFF80001E001FFF00001E003FFF00001E003FFE00001E007FFC00003E00FFFC +00003E00FFF800003E01FFF000003E03FFF000007E03FFE000007C07FFC00000FC0FFFC0 +0000FC0FFF800001FC1FFF000003FC3FFF00000FFC3FFE00003FFC7FFC0001FFFCFFFFFF +FFFFFCFFFFFFFFFFFCFFFFFFFFFFFCFFFFFFFFFFFC2F397BB83A>90 +D<003FFE00000003FFFFE000000FFFFFF800001FF00FFE00003FF003FF00003FF801FF80 +003FF800FFC0003FF800FFC0003FF8007FE0003FF8007FE0001FF0007FE0000FE0007FE0 +000380007FE0000000007FE0000000007FE00000003FFFE000000FFFFFE000007FFFFFE0 +0001FFF87FE00007FF807FE0000FFE007FE0003FF8007FE0003FF0007FE0007FE0007FE0 +00FFE0007FE000FFC0007FE000FFC0007FE000FFC0007FE000FFC0007FE000FFC000FFE0 +00FFE001FFE0007FE001FFE0003FF007FFF8001FFC1FBFFFC00FFFFE1FFFC003FFF80FFF +C0003FE003FFC02A257DA42E>97 D<00FF00000000FFFF00000000FFFF00000000FFFF00 +000000FFFF0000000007FF0000000003FF0000000003FF0000000003FF0000000003FF00 +00000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00 +00000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF01 +FF800003FF0FFFF00003FF3FFFFC0003FFFE03FF0003FFF000FF8003FFE0007FC003FF80 +003FE003FF00003FF003FF00001FF803FF00001FF803FF00001FFC03FF00000FFC03FF00 +000FFC03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00 +000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFC03FF00 +000FFC03FF00000FFC03FF00001FF803FF00001FF803FF00001FF003FF80003FF003FFC0 +007FE003FFE0007FC003FDF001FF8003F8FC07FE0003F03FFFF80003E00FFFE00003C003 +FF00002F3A7EB935>I<0001FFC000000FFFFC00007FFFFF0000FF80FF8003FE00FFC007 +FC01FFC00FF801FFC01FF801FFC01FF001FFC03FF001FFC03FF000FF807FE0007F007FE0 +001C007FE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE0000000FFE000 +0000FFE0000000FFE0000000FFE00000007FE00000007FE00000007FF00000003FF00000 +003FF00001E01FF80001E01FF80003E00FFC0007C007FE00078003FF001F8000FFC07E00 +007FFFFC00000FFFF0000001FF800023257DA42A>I<000000007F800000007FFF800000 +007FFF800000007FFF800000007FFF8000000003FF8000000001FF8000000001FF800000 +0001FF8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF800000 +0001FF8000000001FF8000000001FF8000000001FF8000000001FF8000000001FF800000 +0001FF800001FF81FF80000FFFF1FF80003FFFFDFF8000FFC07FFF8003FF001FFF8007FC +0007FF800FFC0003FF801FF80001FF801FF00001FF803FF00001FF803FF00001FF807FE0 +0001FF807FE00001FF807FE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE0 +0001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE00001FF80FFE0 +0001FF807FE00001FF807FE00001FF807FF00001FF803FF00001FF803FF00001FF801FF8 +0003FF800FF80007FF8007FC000FFF8003FE001FFFC001FF80FDFFFE007FFFF9FFFE001F +FFE1FFFE0001FF01FFFE2F3A7DB935>I<0003FF8000001FFFF000007FFFFC0001FF83FE +0003FE007F8007FC003F800FF8003FC01FF8001FE01FF0001FE03FF0000FF03FF0000FF0 +7FE0000FF07FE0000FF87FE00007F8FFE00007F8FFE00007F8FFFFFFFFF8FFFFFFFFF8FF +FFFFFFF8FFE0000000FFE0000000FFE0000000FFE00000007FE00000007FE00000007FE0 +0000003FF00000003FF00000781FF00000780FF80000F80FFC0000F007FC0003F001FF00 +0FE000FFC07FC0007FFFFF00000FFFFC000001FFE00025257DA42C>I<000000001F0000 +07FE00FFC0007FFFE3FFC001FFFFFFEFE007FE07FF8FE00FF801FF1FE01FF000FF8FE03F +F000FFCFE03FE0007FC7C03FE0007FC0007FE0007FE0007FE0007FE0007FE0007FE0007F +E0007FE0007FE0007FE0007FE0007FE0003FE0007FC0003FE0007FC0003FF000FFC0001F +F000FF80000FF801FF000007FE07FE00000FFFFFF800000F7FFFE000001E07FE0000001E +00000000001E00000000003E00000000003F00000000003F80000000001FC0000000001F +FFFFF800001FFFFFFF80001FFFFFFFE0000FFFFFFFF80007FFFFFFFC0003FFFFFFFE0007 +FFFFFFFE001FFFFFFFFF003FC0000FFF007F000000FF80FF0000007F80FE0000007F80FE +0000003F80FE0000003F80FE0000003F80FF0000007F807F0000007F007F800000FF003F +C00001FE001FF00007FC0007FE003FF00001FFFFFFC000007FFFFF00000007FFF000002B +377DA530>103 D<00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF0000 +000007FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000 +000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000 +000003FF0000000003FF0000000003FF0000000003FF0000000003FF007FC00003FF03FF +F80003FF0FFFFE0003FF1F03FF0003FF3C01FF8003FF7801FF8003FFF000FF8003FFE000 +FFC003FFC000FFC003FFC000FFC003FF8000FFC003FF8000FFC003FF0000FFC003FF0000 +FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000 +FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000 +FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000 +FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF303A7DB9 +35>I<01F00007FC000FFE000FFE001FFF001FFF001FFF001FFF001FFF000FFE000FFE00 +07FC0001F00000000000000000000000000000000000000000000000000000000000FF00 +7FFF007FFF007FFF007FFF0007FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00 03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00 -03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00FFFFF8 -FFFFF8FFFFF8FFFFF8153B7DBA1B>I<00FF00000000FFFF00000000FFFF00000000FFFF -00000000FFFF0000000007FF0000000003FF0000000003FF0000000003FF0000000003FF -0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF -0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF -000FFFE003FF000FFFE003FF000FFFE003FF000FFFE003FF0003FC0003FF0003F00003FF -000FE00003FF001F800003FF003F000003FF007E000003FF00FC000003FF03F8000003FF -07E0000003FF0FC0000003FF1FC0000003FF7FE0000003FFFFF0000003FFFFF8000003FF -FFFC000003FFFFFC000003FFCFFE000003FF0FFF000003FE07FF800003FE03FF800003FE -01FFC00003FE00FFE00003FE00FFF00003FE007FF00003FE003FF80003FE001FFC0003FE -001FFE0003FE000FFE0003FE000FFF00FFFFF83FFFF8FFFFF83FFFF8FFFFF83FFFF8FFFF -F83FFFF82D3A7EB932>107 D<00FF00FFFF00FFFF00FFFF00FFFF0007FF0003FF0003FF +03FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00FFFFF8FFFFF8FFFFF8FFFFF8 +153B7DBA1B>I<00FF00000000FFFF00000000FFFF00000000FFFF00000000FFFF000000 +0007FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000 +0003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF000000 +0003FF0000000003FF0000000003FF0000000003FF0000000003FF000FFFE003FF000FFF +E003FF000FFFE003FF000FFFE003FF0003FC0003FF0003F00003FF000FE00003FF001F80 +0003FF003F000003FF007E000003FF00FC000003FF03F8000003FF07E0000003FF0FC000 +0003FF1FC0000003FF7FE0000003FFFFF0000003FFFFF8000003FFFFFC000003FFFFFC00 +0003FFCFFE000003FF0FFF000003FE07FF800003FE03FF800003FE01FFC00003FE00FFE0 +0003FE00FFF00003FE007FF00003FE003FF80003FE001FFC0003FE001FFE0003FE000FFE +0003FE000FFF00FFFFF83FFFF8FFFFF83FFFF8FFFFF83FFFF8FFFFF83FFFF82D3A7EB932 +>107 D<00FF00FFFF00FFFF00FFFF00FFFF0007FF0003FF0003FF0003FF0003FF0003FF 0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF 0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF 0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF -0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF0003FF00FFFFFCFFFF -FCFFFFFCFFFFFC163A7DB91B>I<00FE007FE0000FFC0000FFFE01FFFC003FFF8000FFFE -07FFFF00FFFFE000FFFE1F81FF83F03FF000FFFE3C00FF87801FF00007FE7800FFCF001F -F80003FEF000FFDE001FF80003FFE0007FFC000FFC0003FFC0007FF8000FFC0003FFC000 -7FF8000FFC0003FF80007FF0000FFC0003FF80007FF0000FFC0003FF00007FE0000FFC00 -03FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0 -000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF -00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000F -FC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF0000 -7FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC00 -03FF00007FE0000FFC0003FF00007FE0000FFC00FFFFFC1FFFFF83FFFFF0FFFFFC1FFFFF -83FFFFF0FFFFFC1FFFFF83FFFFF0FFFFFC1FFFFF83FFFFF04C257DA451>I<00FE007FC0 -00FFFE03FFF800FFFE0FFFFE00FFFE1F03FF00FFFE3C01FF8007FE7801FF8003FEF000FF -8003FFE000FFC003FFC000FFC003FFC000FFC003FF8000FFC003FF8000FFC003FF0000FF -C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF -C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF -C003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FF -C003FF0000FFC003FF0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFF -FF30257DA435>I<0001FFC00000000FFFF80000007FFFFF000000FF80FF800003FE003F -E00007FC001FF0000FF8000FF8001FF00007FC001FF00007FC003FF00007FE003FE00003 -FE007FE00003FF007FE00003FF007FE00003FF00FFE00003FF80FFE00003FF80FFE00003 -FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003 -FF807FE00003FF007FE00003FF007FE00003FF003FE00003FE003FF00007FE001FF00007 -FC001FF00007FC000FF8000FF80007FC001FF00003FE003FE00001FF80FFC000007FFFFF -0000001FFFFC00000001FFC0000029257DA430>I<00FF01FF8000FFFF0FFFF000FFFF3F -FFFC00FFFFFE07FF00FFFFF001FF8003FFE000FFC003FF80007FE003FF00007FF003FF00 -003FF803FF00003FF803FF00001FFC03FF00001FFC03FF00001FFC03FF00000FFE03FF00 -000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00 -000FFE03FF00000FFE03FF00000FFE03FF00000FFC03FF00001FFC03FF00001FFC03FF00 -001FF803FF00003FF803FF00003FF003FF80007FF003FFC0007FE003FFE000FFC003FFF0 -03FF8003FFFC07FE0003FF3FFFF80003FF0FFFE00003FF03FF000003FF0000000003FF00 -00000003FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00 -00000003FF0000000003FF0000000003FF0000000003FF00000000FFFFFC000000FFFFFC -000000FFFFFC000000FFFFFC0000002F357EA435>I<00FE03F000FFFE0FFE00FFFE3FFF -00FFFE7C7F80FFFEF8FFC007FEF0FFC003FFE0FFC003FFC0FFC003FFC0FFC003FF807F80 -03FF803F0003FF800C0003FF80000003FF00000003FF00000003FF00000003FF00000003 -FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF -00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00 -000003FF000000FFFFFE0000FFFFFE0000FFFFFE0000FFFFFE000022257EA427>114 -D<003FF03803FFFEF80FFFFFF81FC00FF83F0003F87E0001F87C0000F8FC0000F8FC0000 -78FE000078FF000078FF800000FFFC0000FFFFE0007FFFFC007FFFFF803FFFFFC01FFFFF -F00FFFFFF803FFFFF800FFFFFC001FFFFC00007FFE000007FEF00001FEF00000FEF80000 -FEF800007EFC00007EFC00007CFE0000FCFF0000F8FF8001F8FFF007F0FFFFFFC0F8FFFF -00E01FF8001F257DA426>I<000F0000000F0000000F0000000F0000000F0000001F0000 -001F0000001F0000001F0000003F0000003F0000007F000000FF000000FF000001FF0000 -07FF00001FFFFFE0FFFFFFE0FFFFFFE0FFFFFFE003FF000003FF000003FF000003FF0000 -03FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF0000 -03FF000003FF000003FF000003FF000003FF000003FF007803FF007803FF007803FF0078 -03FF007803FF007803FF007803FF007803FF00F801FF80F001FF81F000FFC3E0003FFFC0 -001FFF800003FE001D357EB425>I<00FF00003FC0FFFF003FFFC0FFFF003FFFC0FFFF00 -3FFFC0FFFF003FFFC007FF0001FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF00 -00FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF00 -00FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF00 -00FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF00 -01FFC003FF0001FFC003FF0003FFC003FF0003FFC001FF0007FFC001FF800FFFE000FFC0 -3EFFFF007FFFFCFFFF001FFFF0FFFF0003FF80FFFF30257DA435>I119 D121 D E +0003FF0003FF0003FF0003FF0003FF0003FF0003FF00FFFFFCFFFFFCFFFFFCFFFFFC163A +7DB91B>I<00FE007FE0000FFC0000FFFE01FFFC003FFF8000FFFE07FFFF00FFFFE000FF +FE1F81FF83F03FF000FFFE3C00FF87801FF00007FE7800FFCF001FF80003FEF000FFDE00 +1FF80003FFE0007FFC000FFC0003FFC0007FF8000FFC0003FFC0007FF8000FFC0003FF80 +007FF0000FFC0003FF80007FF0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC +0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007F +E0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003 +FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE000 +0FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00 +007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC0003FF00007FE0000FFC +0003FF00007FE0000FFC00FFFFFC1FFFFF83FFFFF0FFFFFC1FFFFF83FFFFF0FFFFFC1FFF +FF83FFFFF0FFFFFC1FFFFF83FFFFF04C257DA451>I<00FE007FC000FFFE03FFF800FFFE +0FFFFE00FFFE1F03FF00FFFE3C01FF8007FE7801FF8003FEF000FF8003FFE000FFC003FF +C000FFC003FFC000FFC003FF8000FFC003FF8000FFC003FF0000FFC003FF0000FFC003FF +0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF +0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF +0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF +0000FFC0FFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFFFFFFFC3FFFFF30257DA435>I<00 +01FFC00000000FFFF80000007FFFFF000000FF80FF800003FE003FE00007FC001FF0000F +F8000FF8001FF00007FC001FF00007FC003FF00007FE003FE00003FE007FE00003FF007F +E00003FF007FE00003FF00FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF80FF +E00003FF80FFE00003FF80FFE00003FF80FFE00003FF80FFE00003FF807FE00003FF007F +E00003FF007FE00003FF003FE00003FE003FF00007FE001FF00007FC001FF00007FC000F +F8000FF80007FC001FF00003FE003FE00001FF80FFC000007FFFFF0000001FFFFC000000 +01FFC0000029257DA430>I<00FF01FF8000FFFF0FFFF000FFFF3FFFFC00FFFFFE07FF00 +FFFFF001FF8003FFE000FFC003FF80007FE003FF00007FF003FF00003FF803FF00003FF8 +03FF00001FFC03FF00001FFC03FF00001FFC03FF00000FFE03FF00000FFE03FF00000FFE +03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE03FF00000FFE +03FF00000FFE03FF00000FFC03FF00001FFC03FF00001FFC03FF00001FF803FF00003FF8 +03FF00003FF003FF80007FF003FFC0007FE003FFE000FFC003FFF003FF8003FFFC07FE00 +03FF3FFFF80003FF0FFFE00003FF03FF000003FF0000000003FF0000000003FF00000000 +03FF0000000003FF0000000003FF0000000003FF0000000003FF0000000003FF00000000 +03FF0000000003FF0000000003FF00000000FFFFFC000000FFFFFC000000FFFFFC000000 +FFFFFC0000002F357EA435>I<00FE03F000FFFE0FFE00FFFE3FFF00FFFE7C7F80FFFEF8 +FFC007FEF0FFC003FFE0FFC003FFC0FFC003FFC0FFC003FF807F8003FF803F0003FF800C +0003FF80000003FF00000003FF00000003FF00000003FF00000003FF00000003FF000000 +03FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003 +FF00000003FF00000003FF00000003FF00000003FF00000003FF00000003FF000000FFFF +FE0000FFFFFE0000FFFFFE0000FFFFFE000022257EA427>114 D<003FF03803FFFEF80F +FFFFF81FC00FF83F0003F87E0001F87C0000F8FC0000F8FC000078FE000078FF000078FF +800000FFFC0000FFFFE0007FFFFC007FFFFF803FFFFFC01FFFFFF00FFFFFF803FFFFF800 +FFFFFC001FFFFC00007FFE000007FEF00001FEF00000FEF80000FEF800007EFC00007EFC +00007CFE0000FCFF0000F8FF8001F8FFF007F0FFFFFFC0F8FFFF00E01FF8001F257DA426 +>I<000F0000000F0000000F0000000F0000000F0000001F0000001F0000001F0000001F +0000003F0000003F0000007F000000FF000000FF000001FF000007FF00001FFFFFE0FFFF +FFE0FFFFFFE0FFFFFFE003FF000003FF000003FF000003FF000003FF000003FF000003FF +000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF000003FF +000003FF000003FF000003FF007803FF007803FF007803FF007803FF007803FF007803FF +007803FF007803FF00F801FF80F001FF81F000FFC3E0003FFFC0001FFF800003FE001D35 +7EB425>I<00FF00003FC0FFFF003FFFC0FFFF003FFFC0FFFF003FFFC0FFFF003FFFC007 +FF0001FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003 +FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003 +FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003 +FF0000FFC003FF0000FFC003FF0000FFC003FF0000FFC003FF0001FFC003FF0001FFC003 +FF0003FFC003FF0003FFC001FF0007FFC001FF800FFFE000FFC03EFFFF007FFFFCFFFF00 +1FFFF0FFFF0003FF80FFFF30257DA435>I119 +D121 D E %EndDVIPSBitmapFont %DVIPSBitmapFont: Ff ecbx1440 14.4 42 /Ff 42 122 df<000000007FFC0000000000001FFFFF800000000001FFFFFFE000000000 @@ -3386,7 +3353,7 @@ y Fe(DUT)42 b Fd(Device)19 b(Under)f(T)-7 b(est.)34 b(The)18 b(device)h(put)g(in)n(to)f(the)h(ZIF)f(so)r(c)n(k)n(et)f(of)i(the)g (programmer)515 2004 y Fe(VPP)42 b Fd(Programming)26 b(v)n(oltage)f(for)j(the)f(DUT)i(\(usually)e(12V\))515 -2168 y Fe(V)m(CCX)42 b Fd(Supply)28 b(v)n(oltage)e(for)h(the)h(DUT)515 +2168 y Fe(V)m(CC)42 b Fd(Supply)28 b(v)n(oltage)e(for)h(the)g(DUT)515 2332 y Fe(GND)41 b Fd(Ground)27 b(for)g(the)h(DUT)515 2496 y Fe(ZIF)42 b Fd(Zero)26 b(Insert)h(F)-7 b(orce)27 b(so)r(c)n(k)n(et)f(of)i(the)g(programmer.)515 2770 y @@ -3444,22 +3411,22 @@ y(b)n(y)27 b(the)h(\034rst)f(2)g(b)n(ytes)h(of)f(the)h(register)e b(oltage\(v)m(oltage\))515 3944 y Fd(Set)30 b(VPP)i(\(programming)c(v)n (oltage\))h(to)h(the)g(sp)r(eci\034ed)h(v)n(oltage.)43 b(V)-7 b(oltage)29 b(is)h(a)g(\035oating)515 4044 y(p)r(oin)n(t)d(n)n -(um)n(b)r(er.)515 4272 y Fb(3.10)112 b(cmdSetV)m(CCXV)-9 -b(oltage\(v)m(oltage\))515 4425 y Fd(Set)28 b(V)n(CCX)g(\(DUT)g(supply) -g(v)n(oltage\))e(to)h(the)h(sp)r(eci\034ed)g(v)n(oltage.)35 -b(V)-7 b(oltage)27 b(is)h(a)f(\035oating)515 4525 y(p)r(oin)n(t)g(n)n -(um)n(b)r(er.)515 4753 y Fb(3.11)112 b(cmdLoadGNDLa)m(y)m(out\(la)m(y)m -(outID\))515 4907 y Fd(Load)33 b(a)i(ZIF-so)r(c)n(k)n(et)e(GND-la)n(y)n -(out.)57 b(Y)-7 b(ou)35 b(usually)f(don't)h(w)n(an)n(t)f(to)g(call)g -(this)h(directly)-7 b(.)515 5006 y(Use)27 b(an)h(autogenerated)d(la)n -(y)n(out)i(instead.)1926 5255 y(2)p eop end +(um)n(b)r(er.)515 4272 y Fb(3.10)112 b(cmdSetV)m(CCV)-9 +b(oltage\(v)m(oltage\))515 4425 y Fd(Set)32 b(V)n(CC)g(\(DUT)h(supply)f +(v)n(oltage\))f(to)h(the)g(sp)r(eci\034ed)h(v)n(oltage.)48 +b(V)-7 b(oltage)31 b(is)h(a)g(\035oating)515 4525 y(p)r(oin)n(t)27 +b(n)n(um)n(b)r(er.)515 4753 y Fb(3.11)112 b(cmdLoadGNDLa)m(y)m(out\(la) +m(y)m(outID\))515 4907 y Fd(Load)33 b(a)i(ZIF-so)r(c)n(k)n(et)e(GND-la) +n(y)n(out.)57 b(Y)-7 b(ou)35 b(usually)f(don't)h(w)n(an)n(t)f(to)g +(call)g(this)h(directly)-7 b(.)515 5006 y(Use)27 b(an)h(autogenerated)d +(la)n(y)n(out)i(instead.)1926 5255 y(2)p eop end %%Page: 3 3 TeXDict begin 3 2 bop 515 523 a Fb(3.12)112 b(cmdLoadVPPLa)m(y)m (out\(la)m(y)m(outID\))515 676 y Fd(Load)35 b(a)g(ZIF-so)r(c)n(k)n(et)f (VPP-la)n(y)n(out.)62 b(Y)-7 b(ou)36 b(usually)f(don't)h(w)n(an)n(t)f (to)h(call)f(this)h(directly)-7 b(.)515 776 y(Use)27 b(an)h(autogenerated)d(la)n(y)n(out)i(instead.)515 1008 -y Fb(3.13)112 b(cmdLoadV)m(CCXLa)m(y)m(out\(la)m(y)m(outID\))515 +y Fb(3.13)112 b(cmdLoadV)m(CCLa)m(y)m(out\(la)m(y)m(outID\))515 1162 y Fd(Load)34 b(a)h(ZIF-so)r(c)n(k)n(et)f(V)n(CC-la)n(y)n(out.)59 b(Y)-7 b(ou)36 b(usually)f(don't)g(w)n(an)n(t)g(to)g(call)g(this)h (directly)-7 b(.)515 1261 y(Use)27 b(an)h(autogenerated)d(la)n(y)n(out) @@ -3682,12 +3649,12 @@ b(.)f(If)25 b(this)h(param-)722 4872 y(eter)i(is)f(passed)g(to)g(the)h (constructor,)e(the)i(autogenerator)d(is)i(enabled.)1926 5255 y(6)p eop end %%Page: 7 7 -TeXDict begin 7 6 bop 515 523 a Fe(c)m(hipPin)-8 b(V)m(CCX)42 -b Fd(This)34 b(parameter)e(is)i(an)g(in)n(teger)f(sp)r(ecifying)h(the)h -(V)n(CC)f(pin)g(on)g(the)722 623 y(c)n(hip)26 b(pac)n(k)-5 -b(age.)35 b(Note)26 b(that)g(it)h(sp)r(eci\034es)f(the)g(V)n(CC)g(pin)h -(on)e(the)i(c)n(hip)f(pac)n(k)-5 b(age)24 b(and)722 722 -y(_not_)h(on)g(the)g(ZIF)h(so)r(c)n(k)n(et.)35 b(So)25 +TeXDict begin 7 6 bop 515 523 a Fe(c)m(hipPin)-8 b(V)m(CC)42 +b Fd(This)24 b(parameter)e(is)i(an)f(in)n(teger)g(sp)r(ecifying)h(the)g +(V)n(CC)g(pin)g(on)g(the)g(c)n(hip)722 623 y(pac)n(k)-5 +b(age.)70 b(Note)38 b(that)i(it)f(sp)r(eci\034es)g(the)g(V)n(CC)g(pin)g +(on)g(the)g(c)n(hip)g(pac)n(k)-5 b(age)37 b(and)722 722 +y(_not_)25 b(on)g(the)g(ZIF)h(so)r(c)n(k)n(et.)35 b(So)25 b(if)g(y)n(our)g(c)n(hip)g(datasheet)f(tells)i(y)n(ou)e(that)i(V)n(CC)f (is)722 822 y(on)j(pin)g(8,)f(y)n(ou)g(pass)f(an)i(8)f(here.)515 988 y Fe(c)m(hipPinsVPP)42 b Fd(This)27 b(parameter)e(is)i(an)f(in)n @@ -3714,13 +3681,13 @@ b(age)23 b(and)722 1851 y(_not_)30 b(on)g(the)h(ZIF)f(so)r(c)n(k)n(et.) 2217 y(is)g(initialized)h(and)g(ready)f(to)h(b)r(e)g(used.)40 b(The)29 b(follo)n(wing)f(\020class)f(Chip\021)36 b(metho)r(ds)29 b(can)g(b)r(e)515 2316 y(used)e(to)h(enable)f(or)g(disable)g(a)g(la)n -(y)n(out:)515 2482 y Fe(applyV)m(CCX\(on\))42 b Fd(This)f(metho)r(d)g -(enables)f(or)g(disables)g(\(dep)r(ending)i(on)e(the)h(\020on\021)722 -2582 y(parameter\))34 b(the)i(V)n(CC)f(la)n(y)n(out.)58 -b(Enabling)35 b(the)h(la)n(y)n(out)e(means)g(that)i(the)f(V)n(CC)722 -2682 y(pin)29 b(will)g(b)r(e)g(activ)n(ely)f(driv)n(en)g(b)n(y)h(the)g -(con\034gured)e(V)n(CC)i(v)n(oltage.)38 b(Disabling)29 -b(the)722 2781 y(la)n(y)n(out)e(will)g(tristate)h(the)g(driv)n(er.)515 +(y)n(out:)515 2482 y Fe(applyV)m(CC\(on\))42 b Fd(This)31 +b(metho)r(d)h(enables)f(or)g(disables)f(\(dep)r(ending)i(on)g(the)f +(\020on\021)38 b(pa-)722 2582 y(rameter\))30 b(the)g(V)n(CC)h(la)n(y)n +(out.)43 b(Enabling)31 b(the)f(la)n(y)n(out)f(means)h(that)h(the)f(V)n +(CC)h(pin)722 2682 y(will)d(b)r(e)f(activ)n(ely)g(driv)n(en)f(b)n(y)h +(the)h(con\034gured)e(V)n(CC)h(v)n(oltage.)35 b(Disabling)27 +b(the)g(la)n(y-)722 2781 y(out)h(will)g(tristate)f(the)h(driv)n(er.)515 2947 y Fe(applyVPP\(on,pac)m(k)-5 b(agePinsT)d(oT)g(urnOn\))43 b Fd(This)18 b(metho)r(d)h(enables)f(or)f(disables)h(\(de-)722 3047 y(p)r(ending)39 b(on)f(the)g(\020on\021)45 b(parameter\))37 diff --git a/libtoprammer/chip.py b/libtoprammer/chip.py index 43c2435..047f864 100644 --- a/libtoprammer/chip.py +++ b/libtoprammer/chip.py @@ -74,15 +74,15 @@ class Chip: flags |= flag return flags - def __init__(self, chipPackage=None, chipPinVCCX=None, chipPinsVPP=None, chipPinGND=None): + def __init__(self, chipPackage=None, chipPinVCC=None, chipPinsVPP=None, chipPinGND=None): """chipPackage is the ID string for the package. May be None, if no initial auto-layout is required. - chipPinVCCX is the required VCCX pin on the package. + chipPinVCC is the required VCC pin on the package. chipPinsVPP is the required VPP pin on the package. chipPinGND is the required GND pin on the package.""" self.__chipPackage = chipPackage - self.__chipPinVCCX = chipPinVCCX + self.__chipPinVCC = chipPinVCC self.__chipPinsVPP = chipPinsVPP self.__chipPinGND = chipPinGND @@ -112,7 +112,7 @@ class Chip: if self.__chipPackage: self.generator = createLayoutGenerator(self.__chipPackage) self.generator.setProgrammerType(self.programmerType) - self.generator.setPins(vccxPin=self.__chipPinVCCX, + self.generator.setPins(vccPin=self.__chipPinVCC, vppPins=self.__chipPinsVPP, gndPin=self.__chipPinGND) self.generator.recalculate() @@ -122,16 +122,16 @@ class Chip: return self.generator return None - def applyVCCX(self, turnOn): - "Turn VCCX on, using the auto-layout." + def applyVCC(self, turnOn): + "Turn VCC on, using the auto-layout." if turnOn: try: generator = self.generator except (AttributeError), e: self.throwError("BUG: Using auto-layout, but did not initialize it.") - generator.applyVCCXLayout(self.top) + generator.applyVCCLayout(self.top) else: - self.top.vccx.setLayoutMask(0) + self.top.vcc.setLayoutMask(0) def applyVPP(self, turnOn, packagePinsToTurnOn=[]): """Turn VPP on, using the auto-layout. diff --git a/libtoprammer/chip_74hc4094.py b/libtoprammer/chip_74hc4094.py index 3638fdd..6bc6478 100644 --- a/libtoprammer/chip_74hc4094.py +++ b/libtoprammer/chip_74hc4094.py @@ -25,9 +25,9 @@ from chip_unitest import * class Chip_74hc4094(Chip_Unitest): def __init__(self): Chip_Unitest.__init__(self, chipPackage="DIP16", - chipPinVCCX=16, + chipPinVCC=16, chipPinGND=8, - VCCXVoltage=5) + VCCVoltage=5) def __initChip(self): self.zifPin_STR = self.generator.getZifPinForPackagePin(1) @@ -50,7 +50,7 @@ class Chip_74hc4094(Chip_Unitest): self.setOutputEnableMask(outen) self.applyGND(True) - self.applyVCCX(True) + self.applyVCC(True) def test(self): testPatterns = (0xFF, 0x00, 0xAA, 0x55, 0xF0, 0x0F, diff --git a/libtoprammer/chip_at27c256r.py b/libtoprammer/chip_at27c256r.py index 3e498a2..b3c351d 100644 --- a/libtoprammer/chip_at27c256r.py +++ b/libtoprammer/chip_at27c256r.py @@ -27,7 +27,7 @@ class Chip_at27c256r(Chip): def __init__(self): Chip.__init__(self, chipPackage = "DIP28", - chipPinVCCX = 28, + chipPinVCC = 28, chipPinsVPP = 1, chipPinGND = 14) self.sizeBytes = 32 * 1024 diff --git a/libtoprammer/chip_at89c2051dip20.py b/libtoprammer/chip_at89c2051dip20.py index 1ae1776..9a7498e 100644 --- a/libtoprammer/chip_at89c2051dip20.py +++ b/libtoprammer/chip_at89c2051dip20.py @@ -31,21 +31,21 @@ class Chip_AT89C2051dip20(Chip): def __init__(self): Chip.__init__(self, chipPackage = "DIP20", - chipPinVCCX = 20, + chipPinVCC = 20, chipPinsVPP = 1, chipPinGND = 10) def __initChip(self): - self.applyVCCX(False) + self.applyVCC(False) self.applyVPP(False) self.applyGND(True) - self.top.cmdSetVCCXVoltage(5) + self.top.cmdSetVCCVoltage(5) self.top.cmdSetVPPVoltage(5) def readSignature(self): self.__initChip() self.applyGND(True) - self.applyVCCX(True) + self.applyVCC(True) self.top.cmdSetVPPVoltage(5) self.__loadCommand(5) # VPP on self.__loadCommand(1) # set P3.2 @@ -70,7 +70,7 @@ class Chip_AT89C2051dip20(Chip): def erase(self): self.__initChip() self.applyGND(True) - self.applyVCCX(True) + self.applyVCC(True) self.__loadCommand(1) # set P3.2 self.top.cmdSetVPPVoltage(5) self.applyVPP(True) @@ -93,7 +93,7 @@ class Chip_AT89C2051dip20(Chip): def readProgmem(self): self.__initChip() self.applyGND(True) - self.applyVCCX(True) + self.applyVCC(True) self.__loadCommand(1) # set P3.2 self.top.cmdSetVPPVoltage(5) self.applyVPP(True) @@ -126,7 +126,7 @@ class Chip_AT89C2051dip20(Chip): (len(image), 0x800)) self.__initChip() self.applyGND(True) - self.applyVCCX(True) + self.applyVCC(True) self.__loadCommand(1) # set P3.2 self.top.cmdSetVPPVoltage(5) self.applyVPP(True) diff --git a/libtoprammer/chip_atmega32dip40.py b/libtoprammer/chip_atmega32dip40.py index 68fa195..163459d 100644 --- a/libtoprammer/chip_atmega32dip40.py +++ b/libtoprammer/chip_atmega32dip40.py @@ -27,7 +27,7 @@ class Chip_ATMega32DIP40(Chip_ATMega_common): def __init__(self): Chip_ATMega_common.__init__(self, chipPackage = "DIP40", - chipPinVCCX = 10, + chipPinVCC = 10, chipPinsVPP = 9, chipPinGND = 11, signature = "\x1E\x95\x02", diff --git a/libtoprammer/chip_atmega88dip28.py b/libtoprammer/chip_atmega88dip28.py index 54fe42d..3ea6550 100644 --- a/libtoprammer/chip_atmega88dip28.py +++ b/libtoprammer/chip_atmega88dip28.py @@ -27,7 +27,7 @@ class Chip_ATMega88DIP28(Chip_ATMega_common): def __init__(self): Chip_ATMega_common.__init__(self, chipPackage = "DIP28", - chipPinVCCX = 7, + chipPinVCC = 7, chipPinsVPP = 1, chipPinGND = 8, signature = "\x1E\x93\x0A", diff --git a/libtoprammer/chip_atmega8dip28.py b/libtoprammer/chip_atmega8dip28.py index cb95c32..42c6823 100644 --- a/libtoprammer/chip_atmega8dip28.py +++ b/libtoprammer/chip_atmega8dip28.py @@ -27,7 +27,7 @@ class Chip_ATMega8DIP28(Chip_ATMega_common): def __init__(self): Chip_ATMega_common.__init__(self, chipPackage = "DIP28", - chipPinVCCX = 7, + chipPinVCC = 7, chipPinsVPP = 1, chipPinGND = 8, signature = "\x1E\x93\x07", diff --git a/libtoprammer/chip_atmega_common.py b/libtoprammer/chip_atmega_common.py index 645c1a8..d507836 100644 --- a/libtoprammer/chip_atmega_common.py +++ b/libtoprammer/chip_atmega_common.py @@ -36,14 +36,14 @@ class Chip_ATMega_common(Chip): CMD_READEEPROM = 0x03 # Read EEPROM def __init__(self, - chipPackage, chipPinVCCX, chipPinsVPP, chipPinGND, + chipPackage, chipPinVCC, chipPinsVPP, chipPinGND, signature, flashPageSize, flashPages, eepromPageSize, eepromPages ): Chip.__init__(self, chipPackage = chipPackage, - chipPinVCCX = chipPinVCCX, + chipPinVCC = chipPinVCC, chipPinsVPP = chipPinsVPP, chipPinGND = chipPinGND) self.signature = signature @@ -234,11 +234,11 @@ class Chip_ATMega_common(Chip): def __enterPM(self): "Enter HV programming mode." self.applyVPP(False) - self.applyVCCX(False) + self.applyVCC(False) self.applyGND(True) self.top.cmdSetVPPVoltage(0) self.top.cmdSetVPPVoltage(12) - self.top.cmdSetVCCXVoltage(5) + self.top.cmdSetVCCVoltage(5) self.__setVoltageControl(VPP_en=1, VPP=0, VCC_en=1, VCC=0) self.__setXA0(0) @@ -248,7 +248,7 @@ class Chip_ATMega_common(Chip): self.__setWR(0) self.top.hostDelay(0.1) - self.applyVCCX(True) + self.applyVCC(True) self.__setVoltageControl(VPP_en=1, VPP=0, VCC_en=1, VCC=1) self.top.hostDelay(0.1) diff --git a/libtoprammer/chip_attiny13dip8.py b/libtoprammer/chip_attiny13dip8.py index 95c7c93..9f9a6fe 100644 --- a/libtoprammer/chip_attiny13dip8.py +++ b/libtoprammer/chip_attiny13dip8.py @@ -32,7 +32,7 @@ class Chip_AtTiny13dip8(Chip): def __init__(self): Chip.__init__(self, chipPackage = "DIP8", - chipPinVCCX = 8, + chipPinVCC = 8, chipPinsVPP = 1, chipPinGND = 4) self.signature = "\x1E\x90\x07" @@ -235,14 +235,14 @@ class Chip_AtTiny13dip8(Chip): def __enterPM(self): "Enter HV programming mode." - self.applyVCCX(False) + self.applyVCC(False) self.applyVPP(False) self.applyGND(False) - self.top.cmdSetVCCXVoltage(5) + self.top.cmdSetVCCVoltage(5) self.top.cmdSetVPPVoltage(0) self.top.cmdSetVPPVoltage(12) self.applyGND(True) - self.applyVCCX(True) + self.applyVCC(True) self.__setPins(SCI=0, SDO_en=0, RST_en=1, RST=0) for i in range(0, 6): diff --git a/libtoprammer/chip_attiny26dip20.py b/libtoprammer/chip_attiny26dip20.py index 40f1f71..213f7b6 100644 --- a/libtoprammer/chip_attiny26dip20.py +++ b/libtoprammer/chip_attiny26dip20.py @@ -27,7 +27,7 @@ class Chip_ATTiny26DIP20(Chip_ATMega_common): def __init__(self): Chip_ATMega_common.__init__(self, chipPackage = "DIP20", - chipPinVCCX = 5, + chipPinVCC = 5, chipPinsVPP = 10, chipPinGND = 6, signature = "\x1E\x91\x09", diff --git a/libtoprammer/chip_generic_sram.py b/libtoprammer/chip_generic_sram.py index 4f4ee4f..972931b 100644 --- a/libtoprammer/chip_generic_sram.py +++ b/libtoprammer/chip_generic_sram.py @@ -24,14 +24,14 @@ from chip import * class Chip_genericSRAM(Chip): - def __init__(self, chipPackage, chipPinVCCX, chipPinGND, - VCCXVoltage, + def __init__(self, chipPackage, chipPinVCC, chipPinGND, + VCCVoltage, nrAddressBits, nrDataBits): Chip.__init__(self, chipPackage = chipPackage, - chipPinVCCX = chipPinVCCX, + chipPinVCC = chipPinVCC, chipPinGND = chipPinGND) - self.VCCXVoltage = VCCXVoltage + self.VCCVoltage = VCCVoltage self.nrAddressBits = nrAddressBits self.nrAddressBytes = int(math.ceil((float(self.nrAddressBits) - 0.1) / 8)) self.nrDataBits = nrDataBits @@ -89,9 +89,9 @@ class Chip_genericSRAM(Chip): def __turnOnChip(self): self.__setControlPins(CE=1, OE=1, WE=1) - self.top.cmdSetVCCXVoltage(self.VCCXVoltage) + self.top.cmdSetVCCVoltage(self.VCCVoltage) self.applyGND(True) - self.applyVCCX(True) + self.applyVCC(True) self.lastAddress = None def __setControlPins(self, CE=1, OE=1, WE=1): diff --git a/libtoprammer/chip_hm62256dip28.py b/libtoprammer/chip_hm62256dip28.py index e7aa054..cf3a40a 100644 --- a/libtoprammer/chip_hm62256dip28.py +++ b/libtoprammer/chip_hm62256dip28.py @@ -27,9 +27,9 @@ class Chip_HM62256DIP28(Chip_genericSRAM): def __init__(self): Chip_genericSRAM.__init__(self, chipPackage = "DIP28", - chipPinVCCX = 28, + chipPinVCC = 28, chipPinGND = 14, - VCCXVoltage = 5, + VCCVoltage = 5, nrAddressBits = 15, nrDataBits = 8, ) diff --git a/libtoprammer/chip_m24cxxdip8.py b/libtoprammer/chip_m24cxxdip8.py index 9f85515..bc40748 100644 --- a/libtoprammer/chip_m24cxxdip8.py +++ b/libtoprammer/chip_m24cxxdip8.py @@ -35,14 +35,14 @@ class Chip_m24cXXdip8_common(Chip): def __init__(self, eepromSize): Chip.__init__(self, chipPackage = "DIP8", - chipPinVCCX = 8, + chipPinVCC = 8, chipPinGND = 4) self.eepromSize = eepromSize # in bytes def __chipTurnOn(self): - self.top.cmdSetVCCXVoltage(5) + self.top.cmdSetVCCVoltage(5) self.top.cmdSetVPPVoltage(5) - self.applyVCCX(True) + self.applyVCC(True) self.applyVPP(False) self.applyGND(True) self.top.cmdEnableZifPullups(True) diff --git a/libtoprammer/chip_m2764a.py b/libtoprammer/chip_m2764a.py index 17e8e74..a0f9921 100644 --- a/libtoprammer/chip_m2764a.py +++ b/libtoprammer/chip_m2764a.py @@ -31,23 +31,23 @@ class Chip_M2764A(Chip): def __init__(self): Chip.__init__(self, chipPackage = "DIP28", - chipPinVCCX = 28, + chipPinVCC = 28, chipPinsVPP = 1, chipPinGND = 14) def __initChip(self): - self.applyVCCX(False) + self.applyVCC(False) self.applyVPP(False) self.applyGND(False) - self.top.cmdSetVCCXVoltage(5) + self.top.cmdSetVCCVoltage(5) self.top.cmdSetVPPVoltage(0) self.top.cmdSetVPPVoltage(5) def readEEPROM(self): self.__initChip() - self.top.cmdSetVCCXVoltage(5) + self.top.cmdSetVCCVoltage(5) self.top.cmdSetVPPVoltage(5) - self.applyVCCX(True) + self.applyVCC(True) self.applyVPP(True) self.applyGND(True) @@ -74,9 +74,9 @@ class Chip_M2764A(Chip): (len(image), 0x2000)) self.__initChip() - self.top.cmdSetVCCXVoltage(5) + self.top.cmdSetVCCVoltage(5) self.top.cmdSetVPPVoltage(12) - self.applyVCCX(True) + self.applyVCC(True) self.applyVPP(True) self.applyGND(True) diff --git a/libtoprammer/chip_m8cissp.py b/libtoprammer/chip_m8cissp.py index 4ad8b09..ff85e5e 100644 --- a/libtoprammer/chip_m8cissp.py +++ b/libtoprammer/chip_m8cissp.py @@ -297,15 +297,15 @@ class Chip_M8C_ISSP(Chip): def __powerOnReset(self): "Perform a complete power-on-reset and initialization" - self.top.vccx.setLayoutMask(0) + self.top.vcc.setLayoutMask(0) self.top.vpp.setLayoutMask(0) self.top.gnd.setLayoutMask(0) - self.top.cmdSetVCCXVoltage(5) + self.top.cmdSetVCCVoltage(5) self.top.cmdSetVPPVoltage(5) self.printDebug("Initializing supply power...") self.top.gnd.setLayoutPins( (20,) ) - self.top.vccx.setLayoutPins( (21,) ) + self.top.vcc.setLayoutPins( (21,) ) #FIXME when to do exec? self.__powerDown() diff --git a/libtoprammer/chip_unitest.py b/libtoprammer/chip_unitest.py index 8da9e13..2cdb72b 100644 --- a/libtoprammer/chip_unitest.py +++ b/libtoprammer/chip_unitest.py @@ -24,11 +24,11 @@ from chip import * class Chip_Unitest(Chip): - def __init__(self, chipPackage=None, chipPinVCCX=None, chipPinsVPP=None, chipPinGND=None, - VCCXVoltage=None, VPPVoltage=None): - Chip.__init__(self, chipPackage=chipPackage, chipPinVCCX=chipPinVCCX, + def __init__(self, chipPackage=None, chipPinVCC=None, chipPinsVPP=None, chipPinGND=None, + VCCVoltage=None, VPPVoltage=None): + Chip.__init__(self, chipPackage=chipPackage, chipPinVCC=chipPinVCC, chipPinsVPP=chipPinsVPP, chipPinGND=chipPinGND) - self.autogenVCCXVoltage = VCCXVoltage + self.autogenVCCVoltage = VCCVoltage self.autogenVPPVoltage = VPPVoltage def shutdownChip(self): @@ -36,13 +36,13 @@ class Chip_Unitest(Chip): self.reset() def reset(self): - self.top.vccx.setLayoutPins( [] ) - self.vccxMask = 0 + self.top.vcc.setLayoutPins( [] ) + self.vccMask = 0 self.top.vpp.setLayoutPins( [] ) self.vppMask = 0 self.top.gnd.setLayoutPins( [] ) self.gndMask = 0 - self.top.cmdSetVCCXVoltage(self.top.vccx.minVoltage()) + self.top.cmdSetVCCVoltage(self.top.vcc.minVoltage()) self.top.cmdSetVPPVoltage(self.top.vpp.minVoltage()) self.oscMask = 0 self.setOutputEnableMask(0) @@ -50,11 +50,11 @@ class Chip_Unitest(Chip): self.setOscMask(0) self.top.flushCommands() - def setVCCX(self, voltage, layout): - self.vccxMask = self.top.vccx.ID2mask(layout) + def setVCC(self, voltage, layout): + self.vccMask = self.top.vcc.ID2mask(layout) self.__updateOutEn() - self.top.cmdSetVCCXVoltage(voltage) - self.top.vccx.setLayoutID(layout) + self.top.cmdSetVCCVoltage(voltage) + self.top.vcc.setLayoutID(layout) self.top.flushCommands() def setVPP(self, voltage, layouts): @@ -75,11 +75,11 @@ class Chip_Unitest(Chip): self.top.flushCommands() # Overloaded layout generator interface. - def applyVCCX(self, turnOn): + def applyVCC(self, turnOn): layoutID = 0 if turnOn: - (layoutID, layoutMask) = self.generator.getVCCXLayout() - self.setVCCX(self.autogenVCCXVoltage, layoutID) + (layoutID, layoutMask) = self.generator.getVCCLayout() + self.setVCC(self.autogenVCCVoltage, layoutID) # Overloaded layout generator interface. def applyVPP(self, turnOn, packagePinsToTurnOn=[]): @@ -100,7 +100,7 @@ class Chip_Unitest(Chip): def __updateOutEn(self): mask = self.desiredOutEnMask mask &= ~self.gndMask - mask &= ~self.vccxMask + mask &= ~self.vccMask mask &= ~self.vppMask mask |= self.oscMask self.top.cmdFPGAWrite(0x50, mask & 0xFF) diff --git a/libtoprammer/chip_w29ee011dip32.py b/libtoprammer/chip_w29ee011dip32.py index 53ffa17..087c529 100644 --- a/libtoprammer/chip_w29ee011dip32.py +++ b/libtoprammer/chip_w29ee011dip32.py @@ -32,12 +32,12 @@ class Chip_w29ee011dip32(Chip): def __init__(self): Chip.__init__(self, chipPackage = "DIP32", - chipPinVCCX = 32, + chipPinVCC = 32, chipPinsVPP = None, chipPinGND = 16) def erase(self): - self.applyVCCX(True) + self.applyVCC(True) self.applyVPP(True) self.applyGND(True) @@ -67,7 +67,7 @@ class Chip_w29ee011dip32(Chip): self.progressMeterFinish() def readEEPROM(self): - self.applyVCCX(True) + self.applyVCC(True) self.applyVPP(True) self.applyGND(True) @@ -110,7 +110,7 @@ class Chip_w29ee011dip32(Chip): self.throwError("Invalid EPROM image size %d (expected <=%d)" %\ (len(image), 0x20000)) - self.applyVCCX(True) + self.applyVCC(True) self.applyVPP(True) self.applyGND(True) diff --git a/libtoprammer/generic_algorithms.py b/libtoprammer/generic_algorithms.py index 1eca403..030ea65 100644 --- a/libtoprammer/generic_algorithms.py +++ b/libtoprammer/generic_algorithms.py @@ -80,18 +80,18 @@ class GenericAlgorithms(object): def simpleVoltageSetup(self, vcc=5.0, vpp=5.0, vppEnable=False): """Simple voltage setup.""" - self.chip.top.cmdSetVCCXVoltage(vcc) + self.chip.top.cmdSetVCCVoltage(vcc) self.chip.top.cmdSetVPPVoltage(vpp) - self.chip.applyVCCX(True) + self.chip.applyVCC(True) self.chip.applyGND(True) self.chip.applyVPP(vppEnable) def simpleVoltageShutdown(self): """Turn off voltages.""" - self.chip.applyVCCX(False) + self.chip.applyVCC(False) self.chip.applyVPP(False) self.chip.applyGND(False) - self.chip.top.cmdSetVCCXVoltage(self.chip.top.vccx.minVoltage()) + self.chip.top.cmdSetVCCVoltage(self.chip.top.vcc.minVoltage()) self.chip.top.cmdSetVPPVoltage(self.chip.top.vpp.minVoltage()) def simpleRead(self, name, sizeBytes, diff --git a/libtoprammer/layout_generator.py b/libtoprammer/layout_generator.py index 29a25f4..bda431a 100644 --- a/libtoprammer/layout_generator.py +++ b/libtoprammer/layout_generator.py @@ -35,23 +35,23 @@ class LayoutGenerator: def setProgrammerType(self, programmer="TOP2049"): supportedDevices = { # Map deviceName : layoutModules, ZIF-pin-count - "TOP2049" : (top2049.vccx_layouts, top2049.vpp_layouts, + "TOP2049" : (top2049.vcc_layouts, top2049.vpp_layouts, top2049.gnd_layouts, 48) } try: - (vccx_layouts, vpp_layouts, gnd_layouts, zifPins) = \ + (vcc_layouts, vpp_layouts, gnd_layouts, zifPins) = \ supportedDevices[programmer.upper()] except (KeyError), e: raise TOPException("Programmer " + programmer + " not supported") - self.vccxLayout = vccx_layouts.VCCXLayout() + self.vccLayout = vcc_layouts.VCCLayout() self.vppLayout = vpp_layouts.VPPLayout() self.gndLayout = gnd_layouts.GNDLayout() self.zifPins = zifPins - def setPins(self, vccxPin, vppPins, gndPin): + def setPins(self, vccPin, vppPins, gndPin): """Load the supply pin locations. vppPins may either be one pin number or a list of pin numbers or None.""" - self.vccxPin = vccxPin + self.vccPin = vccPin if vppPins is None: self.vppPins = None else: @@ -85,11 +85,11 @@ class LayoutGenerator: self.gndLayout, (1 << (zifGndPin - 1))) - # Find a VCCX layout - zifVccxPin = self.mapPin2zif(self.vccxPin, offset, upsideDown) - self.result_VCCX = self.__findSingleLayout( - self.vccxLayout, - (1 << (zifVccxPin - 1))) + # Find a VCC layout + zifVccPin = self.mapPin2zif(self.vccPin, offset, upsideDown) + self.result_VCC = self.__findSingleLayout( + self.vccLayout, + (1 << (zifVccPin - 1))) # Find a (possibly cumulative) VPP layout if self.vppPins is None: @@ -117,8 +117,8 @@ class LayoutGenerator: def zifPinAssignments(self): "Returns a string describing the pin assignments" - vccx = str(self.__bitmask2pinList(self.result_VCCX[1])).strip("[]") - ret = "VCCX ZIF pins: " + vccx + "\n" + vcc = str(self.__bitmask2pinList(self.result_VCC[1])).strip("[]") + ret = "VCC ZIF pins: " + vcc + "\n" if self.result_VPP: vppBitmask = 0 for (id, mask) in self.result_VPP: @@ -168,14 +168,14 @@ class LayoutGenerator: (layoutID, layoutMask) = self.getGNDLayout() top.gnd.setLayoutID(layoutID) - def getVCCXLayout(self): - "Get the calculated VCCX layout ID and mask. Returns a tuple (ID, mask)." - return self.result_VCCX + def getVCCLayout(self): + "Get the calculated VCC layout ID and mask. Returns a tuple (ID, mask)." + return self.result_VCC - def applyVCCXLayout(self, top): - "Send the VCCX layout to hardware" - (layoutID, layoutMask) = self.getVCCXLayout() - top.vccx.setLayoutID(layoutID) + def applyVCCLayout(self, top): + "Send the VCC layout to hardware" + (layoutID, layoutMask) = self.getVCCLayout() + top.vcc.setLayoutID(layoutID) def getVPPLayouts(self): """Get the calculated VPP layout IDs and masks. @@ -239,8 +239,8 @@ class LayoutGeneratorDIP(LayoutGenerator): LayoutGenerator.verifyPins(self) if self.nrPins < 2 or self.nrPins > self.zifPins or self.nrPins % 2 != 0: raise TOPException("Invalid DIP package") - if self.vccxPin < 1 or self.vccxPin > self.nrPins: - raise TOPException("Invalid VCCX pin number for the selected package") + if self.vccPin < 1 or self.vccPin > self.nrPins: + raise TOPException("Invalid VCC pin number for the selected package") if self.vppPins is not None: for vppPin in self.vppPins: if vppPin < 1 or vppPin > self.nrPins: diff --git a/libtoprammer/top2049/vcc_layouts.py b/libtoprammer/top2049/vcc_layouts.py new file mode 100644 index 0000000..f28bb6d --- /dev/null +++ b/libtoprammer/top2049/vcc_layouts.py @@ -0,0 +1,154 @@ +""" +# TOP2049 Open Source programming suite +# +# TOP2049 VCC layout definitions +# +# Copyright (c) 2010 Michael Buesch +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License along +# with this program; if not, write to the Free Software Foundation, Inc., +# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +""" + +import sys +if __name__ == "__main__": + sys.path.insert(0, sys.path[0] + "/../..") +from libtoprammer.shiftreg_layout import * + + +class VCCLayout(ShiftregLayout): + # "shiftreg_masks" is a dump of the VCC shiftregister states. The array index + # is the layout ID and the array entries are the inverted shift + # register outputs. The least significant byte is the first + # shift register in the chain. + shiftreg_masks = ( + 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + 0x000000, 0x000000, 0x000001, 0x000000, 0x000000, 0x002000, + 0x000000, 0x000002, 0x000000, 0x000000, 0x080000, 0x000004, + 0x000000, 0x000000, 0x010000, 0x004000, 0x000000, 0x000000, + 0x000008, 0x000010, 0x000020, 0x000040, 0x000080, 0x000000, + 0x000100, 0x000000, 0x000200, 0x000000, 0x000400, 0x000000, + 0x000800, 0x000000, 0x008000, 0x000000, 0x001000, 0x000000, + 0x020000, 0x000000, 0x040000, #0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x012000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, + #0x000000, 0x000000, 0x000000, 0x000000, + ) + # "shreg2zif_map" is a mapping of the shift register outputs + # to the ZIF socket pins + shreg2zif_map = { + # SHREG.PIN : ZIF_PIN + + # left side + # 1 + # 2 + # 3 + # 4 + # 5 + # 6 + # 7 + # 8 + # 9 + # 10 + # 11 + "0.0" : 12, # Q8C + # 13 + # 14 + "1.5" : 15, # Q11C + # 16 + "0.1" : 17, # Q13C + # 18 + # 19 + "2.3" : 20, # Q16C + "0.2" : 21, # Q17C + # 22 + # 23 + "2.0" : 24, # Q20C + + # right side + "2.2" : 48, # Q44C + # 47 + "2.1" : 46, # Q42C + # 45 + "1.4" : 44, # Q40C + # 43 + "1.7" : 42, # Q38C + # 41 + "1.3" : 40, # Q36C + # 39 + "1.2" : 38, # Q34C + # 37 + "1.1" : 36, # Q32C + # 35 + "1.0" : 34, # Q30C + # 33 + "0.7" : 32, # Q28C + "0.6" : 31, # Q27C + "0.5" : 30, # Q26C + "0.4" : 29, # Q25C + "0.3" : 28, # Q24C + # 27 + # 26 + "1.6" : 25, # Q21C + } + + def __init__(self, top=None): + ShiftregLayout.__init__(self, nrZifPins=48, nrShiftRegs=3) + self.top = top + + def minVoltage(self): + "Get the min supported voltage" + return 3 + + def maxVoltage(self): + "Get the max supported voltage" + return 5 + + def setLayoutID(self, id): + self.top.cmdLoadVCCLayout(id) + +if __name__ == "__main__": + print "ZIF socket VCC layouts" + print VCCLayout() diff --git a/libtoprammer/top2049/vccx_layouts.py b/libtoprammer/top2049/vccx_layouts.py deleted file mode 100644 index 9174d7a..0000000 --- a/libtoprammer/top2049/vccx_layouts.py +++ /dev/null @@ -1,154 +0,0 @@ -""" -# TOP2049 Open Source programming suite -# -# TOP2049 VCCX layout definitions -# -# Copyright (c) 2010 Michael Buesch -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License along -# with this program; if not, write to the Free Software Foundation, Inc., -# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -""" - -import sys -if __name__ == "__main__": - sys.path.insert(0, sys.path[0] + "/../..") -from libtoprammer.shiftreg_layout import * - - -class VCCXLayout(ShiftregLayout): - # "shiftreg_masks" is a dump of the VCCX shiftregister states. The array index - # is the layout ID and the array entries are the inverted shift - # register outputs. The least significant byte is the first - # shift register in the chain. - shiftreg_masks = ( - 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - 0x000000, 0x000000, 0x000001, 0x000000, 0x000000, 0x002000, - 0x000000, 0x000002, 0x000000, 0x000000, 0x080000, 0x000004, - 0x000000, 0x000000, 0x010000, 0x004000, 0x000000, 0x000000, - 0x000008, 0x000010, 0x000020, 0x000040, 0x000080, 0x000000, - 0x000100, 0x000000, 0x000200, 0x000000, 0x000400, 0x000000, - 0x000800, 0x000000, 0x008000, 0x000000, 0x001000, 0x000000, - 0x020000, 0x000000, 0x040000, #0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x012000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, 0x000000, 0x000000, - #0x000000, 0x000000, 0x000000, 0x000000, - ) - # "shreg2zif_map" is a mapping of the shift register outputs - # to the ZIF socket pins - shreg2zif_map = { - # SHREG.PIN : ZIF_PIN - - # left side - # 1 - # 2 - # 3 - # 4 - # 5 - # 6 - # 7 - # 8 - # 9 - # 10 - # 11 - "0.0" : 12, # Q8C - # 13 - # 14 - "1.5" : 15, # Q11C - # 16 - "0.1" : 17, # Q13C - # 18 - # 19 - "2.3" : 20, # Q16C - "0.2" : 21, # Q17C - # 22 - # 23 - "2.0" : 24, # Q20C - - # right side - "2.2" : 48, # Q44C - # 47 - "2.1" : 46, # Q42C - # 45 - "1.4" : 44, # Q40C - # 43 - "1.7" : 42, # Q38C - # 41 - "1.3" : 40, # Q36C - # 39 - "1.2" : 38, # Q34C - # 37 - "1.1" : 36, # Q32C - # 35 - "1.0" : 34, # Q30C - # 33 - "0.7" : 32, # Q28C - "0.6" : 31, # Q27C - "0.5" : 30, # Q26C - "0.4" : 29, # Q25C - "0.3" : 28, # Q24C - # 27 - # 26 - "1.6" : 25, # Q21C - } - - def __init__(self, top=None): - ShiftregLayout.__init__(self, nrZifPins=48, nrShiftRegs=3) - self.top = top - - def minVoltage(self): - "Get the min supported voltage" - return 3 - - def maxVoltage(self): - "Get the max supported voltage" - return 5 - - def setLayoutID(self, id): - self.top.cmdLoadVCCXLayout(id) - -if __name__ == "__main__": - print "ZIF socket VCCX layouts" - print VCCXLayout() diff --git a/libtoprammer/top_xxxx.py b/libtoprammer/top_xxxx.py index f386b02..39526dd 100644 --- a/libtoprammer/top_xxxx.py +++ b/libtoprammer/top_xxxx.py @@ -1,6 +1,6 @@ # Import programmer specific stuff # TOP2049 specific stuff -import top2049.vccx_layouts +import top2049.vcc_layouts import top2049.vpp_layouts import top2049.gnd_layouts diff --git a/libtoprammer/toprammer_main.py b/libtoprammer/toprammer_main.py index 9b64f00..7b0e352 100644 --- a/libtoprammer/toprammer_main.py +++ b/libtoprammer/toprammer_main.py @@ -256,7 +256,7 @@ class TOP: # Initialize the programmer specific layouts if self.topType == self.TYPE_TOP2049: - self.vccx = top2049.vccx_layouts.VCCXLayout(self) + self.vcc = top2049.vcc_layouts.VCCLayout(self) self.vpp = top2049.vpp_layouts.VPPLayout(self) self.gnd = top2049.gnd_layouts.GNDLayout(self) else: @@ -271,11 +271,11 @@ class TOP: self.cmdSetVPPVoltage(0) self.queueCommand(b"\x0E\x20\x00\x00") self.cmdDelay(0.01) - self.cmdSetVCCXVoltage(0) + self.cmdSetVCCVoltage(0) self.cmdLoadGNDLayout(0) self.cmdLoadVPPLayout(0) - self.cmdLoadVCCXLayout(0) + self.cmdLoadVCCLayout(0) self.queueCommand(b"\x0E\x20\x00\x00") self.cmdDelay(0.01) @@ -588,15 +588,15 @@ class TOP: self.cmdDelay(0.01) self.hostDelay(0.15) - def cmdSetVCCXVoltage(self, voltage): - """Set the VCCX voltage. voltage is a floating point voltage number.""" + def cmdSetVCCVoltage(self, voltage): + """Set the VCC voltage. voltage is a floating point voltage number.""" centivolt = int(voltage * 10) cmd = int2byte(0x0E) + int2byte(0x13) + int2byte(centivolt) + int2byte(0) self.queueCommand(cmd) self.cmdDelay(0.01) - def cmdLoadVCCXLayout(self, layout): - """Load the VCCX configuration into the shift registers.""" + def cmdLoadVCCLayout(self, layout): + """Load the VCC configuration into the shift registers.""" cmd = int2byte(0x0E) + int2byte(0x15) + int2byte(layout) + int2byte(0) self.queueCommand(cmd) self.cmdDelay(0.01) diff --git a/reverse-engineering/HWPROTOCOL b/reverse-engineering/HWPROTOCOL index c912cfd..8393133 100644 --- a/reverse-engineering/HWPROTOCOL +++ b/reverse-engineering/HWPROTOCOL @@ -26,7 +26,7 @@ TOP2049 USB protocol (incomplete) 0E12xx00 >= Set VPP, where xx is the voltage. xx is in centivolt. -0E13xx00 >= Set VCCX, where xx is the voltage. +0E13xx00 >= Set VCC, where xx is the voltage. xx is in centivolt. 0E14xx00 >= Load the ZIF socket VPP supply layout. @@ -34,7 +34,7 @@ TOP2049 USB protocol (incomplete) (Shift data into the 4 shiftregisters on the left side. Sends 4 times 8 clock pulses and one strobe.) -0E15xx00 >= Load the ZIF socket VCCX supply layout. +0E15xx00 >= Load the ZIF socket VCC supply layout. xx is the layout ID. (Shift data into the 3 shiftregisters on the right side. Sends 3 times 8 clock pulses and one strobe.) diff --git a/reverse-engineering/dump-parser.py b/reverse-engineering/dump-parser.py index 7fadcd0..85735f0 100755 --- a/reverse-engineering/dump-parser.py +++ b/reverse-engineering/dump-parser.py @@ -89,13 +89,13 @@ def parseBulkOut(data): i += 3 elif data[i] == 0x0E and data[i+1] == 0x13: centivolts = data[i+2] - dumpInstr(data[i:i+4], "Set VCCX to %.2f Volts" % (float(centivolts) / 10)) + dumpInstr(data[i:i+4], "Set VCC to %.2f Volts" % (float(centivolts) / 10)) i += 3 elif data[i] == 0x0E and data[i+1] == 0x14: dumpInstr(data[i:i+4], "Loading VPP layout %d" % data[i+1]) i += 3 elif data[i] == 0x0E and data[i+1] == 0x15: - dumpInstr(data[i:i+4], "Loading VCCX layout %d" % data[i+1]) + dumpInstr(data[i:i+4], "Loading VCC layout %d" % data[i+1]) i += 3 elif data[i] == 0x0E and data[i+1] == 0x16: dumpInstr(data[i:i+4], "Loading GND layout %d" % data[i+1]) diff --git a/reverse-engineering/vccx-sniffer.patch b/reverse-engineering/vccx-sniffer.patch index c5b7c75..79b2b51 100644 --- a/reverse-engineering/vccx-sniffer.patch +++ b/reverse-engineering/vccx-sniffer.patch @@ -17,8 +17,8 @@ index 3962d44..4b00100 100644 + s = hc4094sniffer.Sniffer("/dev/ttyUSB0", 3) + count = 0 + for i in range(0, 0xFF+1): -+ self.cmdLoadVCCXLayout(0) -+ self.cmdLoadVCCXLayout(i) ++ self.cmdLoadVCCLayout(0) ++ self.cmdLoadVCCLayout(i) + self.flushCommands() + time.sleep(0.1) + d = s.read() diff --git a/tests/generic/002-toprammer-layout.test b/tests/generic/002-toprammer-layout.test index 135b31d..188ad89 100644 --- a/tests/generic/002-toprammer-layout.test +++ b/tests/generic/002-toprammer-layout.test @@ -5,6 +5,6 @@ function test_run # Some basic toprammer-layout tests toprammer_layout_silent -h toprammer_layout_silent --help - toprammer_layout_silent --device TOP2049 --package DIP28 --vccx 1 --vpp 2 --gnd 3 + toprammer_layout_silent --device TOP2049 --package DIP28 --vcc 1 --vpp 2 --gnd 3 toprammer_layout_silent --device top2049 --package atmega8dip28 } diff --git a/toprammer-gui b/toprammer-gui index 495d9ff..4acef46 100755 --- a/toprammer-gui +++ b/toprammer-gui @@ -217,9 +217,9 @@ class UnitestDialog(QDialog): self.param_topType = self.queryTop("top.getProgrammerType()") self.param_gndLayouts = self.queryTop("top.gnd.supportedLayouts()") self.param_nrZifPins = self.queryTop("top.gnd.getNrOfPins()") - self.param_vccxLayouts = self.queryTop("top.vccx.supportedLayouts()") - self.param_minVccxVolt = self.queryTop("top.vccx.minVoltage()") - self.param_maxVccxVolt = self.queryTop("top.vccx.maxVoltage()") + self.param_vccLayouts = self.queryTop("top.vcc.supportedLayouts()") + self.param_minVccVolt = self.queryTop("top.vcc.minVoltage()") + self.param_maxVccVolt = self.queryTop("top.vcc.maxVoltage()") self.param_vppLayouts = self.queryTop("top.vpp.supportedLayouts()") self.param_minVppVolt = self.queryTop("top.vpp.minVoltage()") self.param_maxVppVolt = self.queryTop("top.vpp.maxVoltage()") @@ -252,25 +252,25 @@ class UnitestDialog(QDialog): group.layout().addWidget(self.gndLayout, 0, 0) self.layout().addWidget(group, 1, 1) - group = QGroupBox("VCCX layout", self) + group = QGroupBox("VCC layout", self) group.setLayout(QGridLayout()) - self.vccxVoltage = QDoubleSpinBox(self) - self.vccxVoltage.setSuffix(" V") - self.vccxVoltage.setMinimum(self.param_minVccxVolt) - self.vccxVoltage.setMaximum(self.param_maxVccxVolt) - self.vccxVoltage.setSingleStep(0.1) - group.layout().addWidget(self.vccxVoltage, 0, 0) - self.vccxLayout = QComboBox(self) - self.vccxLayout.addItem("Not connected", QVariant(0)) - for (layId, layMask) in self.param_vccxLayouts: + self.vccVoltage = QDoubleSpinBox(self) + self.vccVoltage.setSuffix(" V") + self.vccVoltage.setMinimum(self.param_minVccVolt) + self.vccVoltage.setMaximum(self.param_maxVccVolt) + self.vccVoltage.setSingleStep(0.1) + group.layout().addWidget(self.vccVoltage, 0, 0) + self.vccLayout = QComboBox(self) + self.vccLayout.addItem("Not connected", QVariant(0)) + for (layId, layMask) in self.param_vccLayouts: if not layMask: continue - descr = "VCCX on pin " + descr = "VCC on pin " for i in range(0, self.param_nrZifPins): if layMask & (1 << i): descr += str(i + 1) + " " - self.vccxLayout.addItem(descr, QVariant(layId)) - group.layout().addWidget(self.vccxLayout, 1, 0) + self.vccLayout.addItem(descr, QVariant(layId)) + group.layout().addWidget(self.vccLayout, 1, 0) self.layout().addWidget(group, 2, 1) group = QGroupBox("Input polling", self) @@ -344,10 +344,10 @@ class UnitestDialog(QDialog): self.inputPollChanged) self.connect(self.gndLayout, SIGNAL("currentIndexChanged(int)"), self.gndLayoutChanged) - self.connect(self.vccxVoltage, SIGNAL("valueChanged(double)"), - self.vccxLayoutChanged) - self.connect(self.vccxLayout, SIGNAL("currentIndexChanged(int)"), - self.vccxLayoutChanged) + self.connect(self.vccVoltage, SIGNAL("valueChanged(double)"), + self.vccLayoutChanged) + self.connect(self.vccLayout, SIGNAL("currentIndexChanged(int)"), + self.vccLayoutChanged) self.connect(self.vppVoltage, SIGNAL("valueChanged(double)"), self.vppLayoutChanged) self.connect(self.oscPin, SIGNAL("currentIndexChanged(int)"), @@ -355,7 +355,7 @@ class UnitestDialog(QDialog): self.connect(self.oscDiv, SIGNAL("valueChanged(int)"), self.oscChanged) self.gndLayoutChanged() - self.vccxLayoutChanged() + self.vccLayoutChanged() self.inputPollChanged() self.oscChanged() @@ -383,14 +383,14 @@ class UnitestDialog(QDialog): raise TOPException("Invalid GND layout") self.gndLayout.setCurrentIndex(idx) - layout = p.getint(sect, "vccxLayout") - idx = self.vccxLayout.findData(QVariant(layout)) + layout = p.getint(sect, "vccLayout") + idx = self.vccLayout.findData(QVariant(layout)) if idx < 0: - raise TOPException("Invalid VCCX layout") - self.vccxLayout.setCurrentIndex(idx) + raise TOPException("Invalid VCC layout") + self.vccLayout.setCurrentIndex(idx) - voltage = p.getfloat(sect, "vccxVoltage") - self.vccxVoltage.setValue(voltage) + voltage = p.getfloat(sect, "vccVoltage") + self.vccVoltage.setValue(voltage) layouts = p.get(sect, "vppLayout").split(",") for layId in self.vppLayouts.keys(): @@ -447,9 +447,9 @@ class UnitestDialog(QDialog): fd.write("programmerType=%s\r\n" % self.param_topType) idx = self.gndLayout.currentIndex() fd.write("gndLayout=%d\r\n" % self.gndLayout.itemData(idx).toPyObject()) - idx = self.vccxLayout.currentIndex() - fd.write("vccxLayout=%d\r\n" % self.vccxLayout.itemData(idx).toPyObject()) - fd.write("vccxVoltage=%f\r\n" % self.vccxVoltage.value()) + idx = self.vccLayout.currentIndex() + fd.write("vccLayout=%d\r\n" % self.vccLayout.itemData(idx).toPyObject()) + fd.write("vccVoltage=%f\r\n" % self.vccVoltage.value()) vppLayouts = "" for layId in self.vppLayouts.keys(): if self.vppLayouts[layId].checkState() == Qt.Checked: @@ -503,10 +503,10 @@ class UnitestDialog(QDialog): idx = self.gndLayout.currentIndex() lay = self.gndLayout.itemData(idx).toPyObject() blockedPins.extend(self.queryTop("top.gnd.ID2pinlist(...)", (lay, ))) - # VCCX - idx = self.vccxLayout.currentIndex() - lay = self.vccxLayout.itemData(idx).toPyObject() - blockedPins.extend(self.queryTop("top.vccx.ID2pinlist(...)", (lay, ))) + # VCC + idx = self.vccLayout.currentIndex() + lay = self.vccLayout.itemData(idx).toPyObject() + blockedPins.extend(self.queryTop("top.vcc.ID2pinlist(...)", (lay, ))) # VPP for key in self.vppLayouts.keys(): if self.vppLayouts[key].checkState() == Qt.Checked: @@ -531,15 +531,15 @@ class UnitestDialog(QDialog): return self.updateZifCheckboxes() - def vccxLayoutChanged(self, unused=None): - selVoltage = self.vccxVoltage.value() - idx = self.vccxLayout.currentIndex() - selLayout = self.vccxLayout.itemData(idx).toPyObject() + def vccLayoutChanged(self, unused=None): + selVoltage = self.vccVoltage.value() + idx = self.vccLayout.currentIndex() + selLayout = self.vccLayout.itemData(idx).toPyObject() try: - self.queryTop("top.getChip().setVCCX(...)", (selVoltage, selLayout)) + self.queryTop("top.getChip().setVCC(...)", (selVoltage, selLayout)) except (TOPException), e: QMessageBox.critical(self, "TOP communication failed", - "Failed to set VCCX layout:\n" +\ + "Failed to set VCC layout:\n" +\ str(e)) return self.updateZifCheckboxes() diff --git a/toprammer-layout b/toprammer-layout index 5afe5cf..6d5a0e1 100755 --- a/toprammer-layout +++ b/toprammer-layout @@ -38,7 +38,7 @@ def usage(): print " Possible choices are: TOP2049" print " -p|--package DIPxx The package type of the DUT." print " Package may also be the name of a supported chip." - print " In this case, --vccx, --vpp and --gnd are ignored." + print " In this case, --vcc, --vpp and --gnd are ignored." print " -v|--vcc PIN Set VCC pin number, relative to the package." print " -P|--vpp PIN(s) Set VPP pin number(s), relative to the package." print " May be one pin number or a comma separated list of pin numbers." @@ -53,7 +53,7 @@ def usage(): def main(argv): package = None programmer = None - vccxPin = None + vccPin = None vppPins = None gndPin = None showInsert = True @@ -61,7 +61,7 @@ def main(argv): try: (opts, args) = getopt.getopt(argv[1:], "d:p:hv:P:g:IS", - [ "help", "device=", "package=", "vccx=", "vcc=", "vpp=", "gnd=", + [ "help", "device=", "package=", "vcc=", "vcc=", "vpp=", "gnd=", "only-insert", "only-supply", ]) for (o, v) in opts: if o in ("-h", "--help"): @@ -71,8 +71,8 @@ def main(argv): programmer = v if o in ("-p", "--package"): package = v - if o in ("-v", "--vcc", "--vccx"): - vccxPin = int(v) + if o in ("-v", "--vcc", "--vcc"): + vccPin = int(v) if o in ("-P", "--vpp"): if v.upper() == "NONE": vppPins = None @@ -100,8 +100,8 @@ def main(argv): (unused, chip) = ChipDescription.findOne(programmer, package, allowBroken=True) except (TOPException), e: chip = None - if vccxPin is None or gndPin is None: - print "-v|--vccx and -g|--gnd " +\ + if vccPin is None or gndPin is None: + print "-v|--vcc and -g|--gnd " +\ "are mandatory, if a package type is specified.\n" raise ValueError() @@ -123,7 +123,7 @@ def main(argv): else: generator = createLayoutGenerator(package) generator.setProgrammerType(programmer.upper()) - generator.setPins(vccxPin, vppPins, gndPin) + generator.setPins(vccPin, vppPins, gndPin) generator.recalculate() if showInsert: print "Chip insert layout:\n" -- cgit v1.2.3