www.pudn.com > taxi_counter.rar > taxi.jam
' Copyright (C) 1988-2000 Altera Corporation
' Any megafunction design, and related net list (encrypted or decrypted),
' support information, device programming or simulation file, and any other
' associated documentation or information provided by Altera or a partner
' under Altera's Megafunction Partnership Program may be used only to
' program PLD devices (but not masked PLD devices) from Altera. Any other
' use of such megafunction design, net list, support information, device
' programming or simulation file, or any other related documentation or
' information is prohibited for any other purpose, including, but not
' limited to modification, reverse engineering, de-compiling, or use with
' any other silicon devices, unless such use is explicitly licensed under
' a separate agreement with Altera or a megafunction partner. Title to
' the intellectual property, including patents, copyrights, trademarks,
' trade secrets, or maskworks, embodied in any such megafunction design,
' net list, support information, device programming or simulation file, or
' any other related documentation or information provided by Altera or a
' megafunction partner, remains with Altera, the megafunction partner, or
' their respective licensors. No other licenses, including any licenses
' needed under any third party's intellectual property, are provided herein.
'Device #1: EPM7128S - e:\myworks\taxi\taxi.pof Wed Sep 27 08:45:00 2006
NOTE "CREATOR" "Altera Jam/STAPL Composer Version 10.0 10/5/2000";
NOTE "DATE" "2006/09/27";
NOTE "DEVICE" "EPM7128S";
NOTE "FILE" "taxi.pof";
NOTE "TARGET" "1";
NOTE "IDCODE" "071280DD";
NOTE "UES" "FFFF";
NOTE "CHECKSUM" "001B8952";
NOTE "SAVE_DATA" "DEVICE_DATA";
NOTE "SAVE_DATA_VARIABLES" "V0, A12, A13, A21, A22, A25, A43";
NOTE "STAPL_VERSION" "JESD71";
NOTE "JAM_VERSION" "2.0";
NOTE "ALG_VERSION" "10";
ACTION PROGRAM = PR_INIT_PROGRAM, DO_BLANK_CHECK OPTIONAL, DO_VERIFY RECOMMENDED, DO_SECURE OPTIONAL,
DO_READ_UES OPTIONAL,
PR_EXECUTE;
ACTION BLANKCHECK = PR_INIT_BLANKCHECK, PR_EXECUTE;
ACTION VERIFY = PR_INIT_VERIFY, PR_EXECUTE;
ACTION READ_UES = PR_INIT_READ_UES, PR_EXECUTE;
DATA DEVICE_DATA;
INTEGER V0 = 1;
INTEGER V1 = 0;
INTEGER A12[1] = 4;
INTEGER A59[1] = 288;
INTEGER A60[1] = 1;
INTEGER A61[1] = 118653149;
INTEGER A13[1] = 5;
INTEGER A25[1] = 10;
INTEGER A43[1] = 0;
BOOLEAN A21[104320] = @
mB300uxzQtlt@l@U@Nt@@__@txz@_lx@xzs@dtl@t@T@tR@_U@tz@zUR@txrz@@l
@@@V@@@@_@@lz@xzx@@tm@zUl@@@T@Vlt_xz@t91@@@tsxzV3D1@U@yXQWtx@Vt@
@_wz@lj@x@xUhtFK9y@T@7AFyhztR@@@rz@hTeCGtt@E@llJ@@z_E@@xvy_lhtx@
tp@@VGPmV@thxz@Fl@_jy_jtxB31D1txi_UptwzT_lv@xzslltlV@lV@txC_U@tz
zyUR@txrzx@l@V@@GvXmBa0D1lt@@_@@@rx@VJxt@tjUllpxz_0z1@@t_wzU@ztx
txMl@Beg8aPWp@@UeOGWQG8NHGHYy@z_WwXG97lVxzXdA2AmuVgdoR@MhFzR9@U_
zs@@VT@@vxz@ldtVtMuX4r@@@1qD2U6u@zVp@txD@VlN@@@@Ult@zy_l7QJm@V@V
er0@zU@1lS2Py4eMYVFzhJ@V@0A61U6y@@Tw_txtVxVZ_nz_GBCwz@f31nm@xzV8
u6_@ld36Jmx@VR053Ux@xvj_l7CAX@UZNt@@@U@TxvzNl7C_WVl@xGcD26hm@@@d
lxzU_@tx_@Ml3t298J2ltxr1e9u@FzZQj@l@@fVfMx@1eRutxjc_lvhw@6RlzRzX
RUuwlVN@d@lvMktWHOCVdx5qYX_lxFVtxzythtyUjUxhtxDy84dt@@s@@@rR@V7M
oGGc1XH6u@VQFCgY0g4yxz@Rx@@DOK2lz@zyMxt2Bzmlz@VuMNk@@l2kDmltllzR
@@0K9iUlt5SdW@@_Fgr@@1ZRuzRlFCF1tV@_U@zxfr@lgUl@s@@MBl@QTl@xrqU@
trxz@x@@lFa_1tl@@Qz@hfzVlxUl@FCd1@U@y1yCulxzEyTZ0F3qtz_eVSlN@@xi
@FdR@z_U5y94KyGuhG_dQf26zWq@@_0Pjmh@QD8u6sV@t3knGGB62kX1@Mx@mXFu
s@zpR@UVWH3i@xl7S36h@@@16Vmd@zSG162pnWd@@UUE@poz_@3ufYRlVV@z_lk@
Rzzclr7af2Q@UlX_KnUl@Qe53y__@7WIbWRHvF@xD0g1y_lN3WoWjNxL@QzV_xrV
TzUxxtVjtVh@g@jtx0ZRu@@toxjMll@@D@MhrXIbm@@@LGL3q_lsx@r@tlN@lzV@
VNxz@X8VmxzQT8oJy@twPzVlt@@jkVh@VR@@lkz@z3fzGuL3qRj@7wx7t@tlkltV
yz_lxVxyEmJ5w7rx2qcWR@@@GfRuUl@rxT@h@x@VTE@t1LJ80w9_@hz2fzWt_zUU
xzQX8D8KQ5_s@trV@tpl@RrT_xbtVls0PXu@wzEiK8_x@V27kXx@zFlzxzyM@tuR
r@R@t_tzUxUOJ32lYHG13qwz@72oWmXL4an0t@z_XN39eG8_zsFvtJ@6acXmm6u@
Udttx@k@dpPx@UlkV@t3vYX@Ux@mmXuzkltR_UlE@vRxV_titxzzUltx_@tFWiDU
@txvztl76_1zQ@@XXX9mO2_lUl3qcG0vSq_lt7A8X0jEvzVhFaRHkzxz3mRGmeAA
wmG8y7ytxj7QM2FzxvUV@t337bR@V@0tFuztlDe@3__@r2h7Y@U@qmwLOxzVFyF9
ydxz7k66_@@k3@B1zk@t_v_VD@p@xUF@tpvzl@@@Rz_@tqFz@38p0@@@_XrHY@@U
El@RjXRyGG1I4q7CXrLXtwz@0oCWslrQ0K9u@@xazltVGB6m_@VFuGCy_ht7Wt9_
@xz34y4x@@h1z1PG6C4_t6Ultw3h36@U_@12MaldRj0yCmzMhUm8Cu@@OszTkdlt
@S@Blt1M_W@Tl@W8Dm@@jUWbFu@@zE8DFezxVx6dttvTUV8Xmutx@d_@zR0K6mx@
FN@@@6_llJvzjsE@VP3Tq3U@Nx1RMXxVUVlxxz1oaW@d@@W8Jm_ltPGapu@zxF0q
4yUlz7EP21zLH8c6uztVNzU@L0eFuzJlFq2F2g2ZW_cnsxtUGfLmzx@BipPqx@NR
@tVFSD9yU@t5Oa71gQ0z@ttWDdXN@zUm3O4ifG_@@hjrR@w_@@px@MVOdguz_ln@
@zlUl@FV@_x1FyW@vUkWMs8eKCq@x@7ymC_lr@zz_lw@xzowlMR0j9u@@zEarSqw
@V7svI15OWt@7_0GtBe0pOz@l7UwX15GI83E5ymaX7WnmI64oWY1KSkVhdR@@U@U
@t@zVElxpvVtVdxTGpgKdD3__@tn@@@hl@xDMR3uTVldkj1nPPG0tCuz_@p@@yFU
l@@0kbm@lthxzUF@t@zyUldrxxyRltxn@yEdtx@TUVdpwxzljtxzwV@@p@z_Fltx
zHlJmpzUEk@@V@TVdcx@@zk@tpv_Ed@@@@tt9u@_ltt@@k@l@Rx@zlEl@@y_Vtht
x_tld@lxTk7l@@@U@@xZzo0xz_l1XpWzVlFttxz_lttzzyUhdpzFe06yx@@x@@xt
@_@NC2du@dxrvz@d@@vVSU@@XZBnIt6u@_@t@@@i_VdV@@VV_ltvz@@lx@vysVlx
l@_@@uoJG@@xjzUlNtxzUU_tp3Km0t@_@E@@xvzVlxxzUNltxTF06uzUld@xzl_l
tVxzzlUl@@y@V@htx_FwS6Y1t0xz@@1AmW@_@7tpvSXeRGW2C4oW1n3OWdxzSSlt
xwvUEDtxzwSldZpzS_v09iFG2H1SYtx@UUltpwzS_jtxzuUUdBK03qpxUtNW11FO
WU@t@u1amvUFVy0F4yW1_z_lj@t@wyk@px@TlEdxV@U_@cpvVSk@@vz@lttx@k@l
@@Y4IWtxzj@VlVxzUFkdtxzUldxxvyEoW7A8m0tx@UUkttnzU@hd@vqS@tltz_EU
ttv_Vl@rx@Uxltxze232Pm0xzT@1KmWxSkFdx@@XC81@txPz_E@sx@U2jm0UFdtw
xTljt@zwV@tpxz_Fltx@W7I8aX4Ctx@xS@lZpzTUq2v4tG8yUl@ZOFa8vD8izJy@
x@Ujl1nXqIe0G5FWGX7eYVl@x50Am@F@V056epxUt@l@lxT_7d@z@U@@xzzVlx@x
@FA032BnWW@Jmx@@Ua176emOXlKHe0G5K0e1AGb@@@lu_nukZ7Y28XOOCmy@@Vm@
CiDZ1lVdGS@Li2U2bxpW@VlxOEMA833y@Vthtx_t@l@TaG9iEq3__@lz@vz7nk1_
@@pZmnWL@Jmt@@l@l@R@@V@H1aW__lpmSIm@@zVF09iUG2n3mW_V@RtxzVE@@@E2
m0z@@@_xz_tHm0@@ttw@z_3Wt0@t@x_@Ulztv@7ul1_@@xNK8XO4Umx@VN8I9ul@
@VH16YIf5@zVV_lpxZ3H5l@@Tn8mW@@@Vlt@@b6OGa1C4HIxX70VWCbwxxzEkV3E
v8XA0I8WiG2GPZeKgm@dtl@_@lOEI80b7MG9XOytO156y@pz7yl1wy_@3IpZeKC8
ah4qtxVV1Y1_l@@ZNnWmIC8K53qt@zw_txFaB3wCXXT_J8Ie4YxF1d@@@N2OGg@6
4Pm3XgOGm@6qPI2_@l@r@@@7Gc1_k@tr@V@hl@xrz@tlp@@kOOOO7162XxaWMImz
zUVqH9S9r3xrOGm@U4vY1H1mGq2X4eV2_@@pZb8XGQ_9aVCsXnWu_D8KbJyz@d7c
Z11G5I8394er9XqOGqMjSFH2X@fIaL64tF31FiH4Omu@@kFcZAM8BXWwb8_76M@B
1t@@@11nG0Pg4E46HuyVWRv4MI5w@zlTltzvyl@xg93y@@Vx@@xt@V@d@x@UV@tt
HaOGO99ulp@tVltlx@_F@t@z__l@RTFXufCmV@tfx_@@84DeHb4MMYXW@JGdt@l@
F@xmNI8SDi3BnZOJg8G16YmXXmSIG@@@l@klpuzYo@zVUW7L4m361ZuHqbF45m6U
l@tZ@nWxTImt@zVmN64yV8L_RGuB64if11f5IWHa4@Z1H2TIy0ICnw3niHL4Os7I
J2HlPGShF45b1XmbGeZ64273bamGOT64ah1nsPG0A640L2XrPGi9645G2kpx_2hp
0V@t@w@@lzt@@3;
BOOLEAN A22[65920] = @
m0200u@@@t@t@l@@@V@@@_F3y@@@xt@@FqWS3yl_@VBXAAis0XSoEMZvFb62@x@c
dmRa@@KIu@@zt@s@F@@@@UJ836cb1x@@@XY1DVnRXo0@@jrkt@@tP2yF@@r@@@R@
@@t@VzVMJOl6Ku42A3sPDc2g1kmC2y@@@xVtxt_zyvrJm@@tgt@xF@@@t7t3B562
v4Ka6pV4KCu@@@@GJOIDm@@dd@@@V@V@Vlv39p31w31b13v6BC6XC6153tU2Nr3t
b4X2OkXFiSg8euX_@@@wP2_Nbov@@htGPONz0zRx@DA3_7aI2ZFuVt@t@@xVeB1@
@VhUl@@7Lg8aJGnQC_eqGuV@Ny5X7I2P25yGoVh@l@@@Vgqs@1K3ExIm_@@FGn0y
t_@0L57ULqZTI8u6_@@tV6Dm@@zl@VlV@@@@U@xzZ5PuTqWcW426bm1lHU4961Z6
4kzmQv31468aIs9SxX0I6YEPGnVy@8Q2_@l@J_Um@@Nll@@@0K62ZC8tmWmK6mQg
@NNPmqc71E6u@GE1AfmiFJ31@@VJ6uDodPDm@Ny@Xd4_@N@bm_@Fpompr3XB64CA
X@@@U@@@z__@@UsCm@@@l@@DlzJ9IDVm@@ZVun3XCLuVLQt_@@l@VFz2F6wZPW_j
@VW76kuDI3tkw6YXcR3S@@@xyV@F6BXeKC2Uae2N2@xz@9lFWX7oZ@V@l@@tCUy@
@XvLepKG8m3Zgy4y@lytb@mJl1bt90@lDZ7@@VGBC@iU48B4@ZIR3osGv@@VGhGy
@@@p@@zVKO5_ly@@l5ImDFy@@@fz@@_ss91ti9mu3_lz@z@@@xza@FHf11ZO8me1
ZcUm@@tg@@@Vld@@fBDm@Vx@sFF4o9f4YyXBbCu@@@kjf1d1F9asFviOuDg111Xn
@gqM8A3y@@0PX@@FSeGg@szyt@@x@V_F4fD1229O99_Vk@y@@@xlr_lB63_@Nk7f
bW_@z@GLR4KD1lHs@_@@@z@@RhpF@lSB3nsy8ah41LP8aM2@uI0hf7k@@@V@@Vlu
EZzNZ9HmN9WIACwnqG8Cd41oIevb4fOh8Gs31Pmmxj__8K3yBt@h@@@t@@@thN6w
Y_GOJ62oyGmD66UjHBn42kbWTIZv0oFO@U@9mS2_hz@Z6cGMH6EIdGmj74I9x4ou
1@@@taww@BLpW@xxV@Rz@L_OuK16XHU8ST5Feh8f16_FaJipAC7kcX0ZI8r_@FGR
BIZn735iX@PDz@ng4ksWGpU4G1Zm3dSR@X5f6S9rWLu6yAr3XSIEXrJmR4@@lz7y
@@g4UyXAzF4QM2bioQ1kzmV@@l@@wV@@@vXmBQ_k4Q@pW9yCuelA2Hw4@@@@_@@w
6nxXVyIm@_@FMJlnalI8ikGy@Fjddd452nWzR@@mDa80gA2Q91@@@xUFv@zVlSp@
@@V_F62l23hnyZX4Q0t8@@mxW9CnDay5l5cO5Z2qIGVZ5aH5fRSI8XX4anC1H_W@
VlV@NnjtLcWJQdLf@V_hCoWz@@Vv@x@BJcG0P9qUf12f4K2V91dH_@REQW@@owoB
P88D329CXX6tm@@3IWbIu@xf8eW42Wo0zct@bQoGuB9Sne4XOAX@T@VV@@@VOymU
bd4AL5RnKX_@@V@@@d5WcGiCO40g1Oypq2d43@@z@ZYaW@@x@0oQ9el7M9S3@R@@
Rp9H@c64ce77kLHWHdefBUBuhAwcSZ9Ab8yK9w@adGQU88o7y@@@x@@LlLp4yt@R
6cw3HPAHu1I4q261CYHuV9qpe1XToGm3Oing41hbG0jRuVcl8eKCIQHb0LnOom7y
zl@@hq91WQMG1T5IRBX7K7@@@tG6_9q1F2U0om389qO32eeE@x@t1KuT0PmmlEo9
SDFq@l@7uh1_@V0K0AeW9EGJ2_@FWluTa@@@gsovOtyupsVqt@@IlC3@@0aJm@@3
db@@V@@l@wdzUzpR@x@60WShRlF000WKoU_x@@zlF@xVW6m@b@l@1000000B0KG5
060020180W0GI05000004000GrIQABcXOMQ300u7W3H0000G4229efQI2050WYlu
Da3000f4Ka23D854Q000D0p80WF1U000yVgtFG_@@VBS621uX8nbWqIR5hyNQMPl
qjWYH7bdK7i4110I8n6aqj1y@@@y@V@w@@@B3T3y@z@N2k4y@klr@@@x@llt@t@j
@@_QTVVti@lhrz@tp@xwsTTt7_lhV@t@zu@k@z@t@xl_@B4y4y@@@fR@@VOT3ytt
@xVkxhZQLwdMeZkneb93IJc1@z@T_@l@zt@@FWG2u@x@xNt0@zVNkl@xrztzZ@gl
Mt_@F@@@Vtt@tu@_@Tt@@X@xwN@zrlw_@lhpJm@VVlxz@V_@@@xdRW@l_lRrJm@N
@VnwIel@xl7W4MYt0@r@@Z6@W@@l@WrJmr@@VWiFu@x@p@@zVcR9e_x@@Y9IEM@4
@x@@y@@kLrtVhhgwJT@V7ggwVVzzNk@@xrtz@x@llAgzMEmt0@@l@_@_@zt@@v@x
lkL@7Abs0t@@@VM@W@uxVzVL@9zRW@v@Vzz@@VpdW@@@lB7IeRU3gT8X4vpn@t@l
x@@V_VV@_t@xn@zthlxxttTzj_lkBVt@Nwxgk0;
ENDDATA;
DATA TEMP_DATA;
INTEGER A0[28] =
96, 96, 96, 96, 96, 95, 95, 95, 95, 95, 95, 95, 95, 95, 95, 15, 791, 791, 791, 791, 317, 293, 281, 273, 261, 253, 237, 791;
INTEGER A1[28] =
3144, 1574, 716, 360, 183, 1574, 716, 360, 183,3144, 0,1574, 716, 360, 183, 64, 280, 240, 200, 160, 640, 480, 400, 320, 240, 160, 80,3144;
INTEGER A2[28] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 165, 165, 165, 165, 0, 0, 0, 0, 0, 0, 0, 165;
INTEGER A3[28] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 112, 96, 80, 64, 0, 0, 0, 0, 0, 0, 0, 112;
INTEGER A4[28] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 648, 600, 552, 504, 0, 0, 0, 0, 0, 0, 0, 648;
INTEGER A5[28] =
3144, 1574, 716, 360, 183, 1574, 716, 360, 183,3144, 0,1574, 716, 360, 183, 64, 56, 48, 40, 32, 128, 96, 80, 64, 48, 32, 16,3144;
INTEGER A6[28] =
32, 16, 8, 4, 2, 16, 8, 4, 2, 32, 24, 16, 8, 4, 2, 0, 0, 0, 0, 0, 16, 12, 10, 8, 6, 4, 2, 32;
INTEGER A7[28] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 7, 6, 5, 4, 0, 0, 0, 0, 0, 0, 0, 7;
INTEGER A8[28] =
512, 256, 128, 64, 32, 256, 128, 64, 32, 512, 384, 256, 128, 64, 32, 0, 560, 480, 400, 320, 256, 192, 160, 128, 96, 64, 32, 560;
INTEGER A9[21] =
12, 3, 131, 8, 3, 131, 0, 0, 0, 6, 3, 131, 0, 0, 0, 3, 1, 118, 1, 3, 126;
INTEGER A10[14] =
12, 3, 8, 3, 8, 3, 6, 3, 0, 0, 3, 1, 1, 1;
INTEGER A51[15] =
294, 148, 38, 20, 2, 148, 38, 20, 2, 294, 0, 148, 38, 20, 2;
INTEGER A49[14] =
12, 114, 8, 114, 8, 114, 6, 114, 0, 0, 3, 109, 1, 109;
INTEGER A11[5 * 3 * 27] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,1025, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,1025, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,1025, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0,1025, 0, 0,
0, 0, 0, 0, 0, 0,1025, 4, 0, 1, 1, 0,1025, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 99, 1, 0, 99,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 99, 1, 0, 99,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 99, 1, 0, 98,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 99, 1, 0, 98,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 98,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 99,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 99,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 98,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 98,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 98,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 97, 0, 1, 94,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 95,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 97, 0, 1, 94,
0, 0, 0, 1, 0, 98, 2, 1, 96, 1, 0, 97, 0, 2, 96,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 97, 0, 0, 96,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 98,
129, 10, 98, 1, 0, 98, 2, 1, 96, 1, 0, 97, 0, 0, 96,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 1, 1, 97, 1, 0, 97, 0, 2, 96, 0, 1, 96,
0, 0, 0, 0, 0, 0, 1, 31, 97, 4, 31, 98, 1, 0, 98;
INTEGER A14[64] =
8600,6400,4800,3600,2800,2000,1540,1140, 860, 640, 480, 360, 280, 200, 154, 116,
86, 64, 50, 36, 28, 24, 20, 16, 14, 12, 11, 9, 7, 5, 4, 3,
2000,1600,1300,1000, 900, 800, 720, 660, 600, 560, 520, 480, 440, 400, 380, 360,
340, 300, 280, 260, 240, 220, 200, 180, 160, 140, 120, 100, 80, 60, 40, 20;
INTEGER A15[16] =
60000,28000,10800,4200,1660, 660, 260, 100, 500, 200, 100, 60, 40, 30, 20, 10;
INTEGER A54[30] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 16, 0, 0, 0, 32, 0, 32, 255, 65, 255, 82, 255, 69, 255, 84, 255, 76, 255, 65;
INTEGER A55[30] =
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 31, 16, 0, 32, 0, 32, 255, 65, 255, 82, 255, 69, 255, 84, 255, 76, 255, 65;
INTEGER A56[8] =
255, 1, 255, 56, 255, 57, 255, 65;
' VARIABLES
INTEGER A17[1];
INTEGER A48[1];
INTEGER A52[1];
BOOLEAN A32[60];
BOOLEAN A33[10];
BOOLEAN A39[10];
BOOLEAN A26[1600];
BOOLEAN A27[5];
BOOLEAN A28[273];
BOOLEAN A45[320];
BOOLEAN A29[320];
BOOLEAN A30[320];
BOOLEAN A31[640];
BOOLEAN A57[640];
BOOLEAN A34[50];
BOOLEAN A35[50];
BOOLEAN A36[50];
BOOLEAN A37[50];
BOOLEAN A38[70];
INTEGER V2 = 0;
INTEGER V3 = 0;
INTEGER V4 = 32;
BOOLEAN b;
INTEGER i;
INTEGER j;
INTEGER k;
INTEGER l;
INTEGER V10;
INTEGER V11;
INTEGER V12;
INTEGER V13;
BOOLEAN A18[21];
BOOLEAN A19[20];
BOOLEAN A20[10];
INTEGER V14;
INTEGER V15;
INTEGER V89;
INTEGER V16;
INTEGER V87;
INTEGER V17;
INTEGER V18;
INTEGER V19;
INTEGER V20;
INTEGER V21;
INTEGER V88;
INTEGER V94;
INTEGER V22;
INTEGER V23;
INTEGER V24;
INTEGER V25;
INTEGER V26;
INTEGER V27;
INTEGER V28;
INTEGER V29 = 1;
INTEGER A16[15];
INTEGER V30;
INTEGER V31;
INTEGER V32 = 0;
INTEGER V33 = 0;
INTEGER V34 = 1;
INTEGER V35 = 0;
INTEGER V36 = 0;
INTEGER V37 = 0;
INTEGER V38 = 0;
INTEGER V72 = 0;
INTEGER V73 = 0;
BOOLEAN V39 = 0;
BOOLEAN V40 = 0;
INTEGER V41 = 0;
INTEGER V42 = 0;
BOOLEAN V43 = 0;
BOOLEAN V44 = 0;
BOOLEAN V45 = 0;
INTEGER V46;
INTEGER V47;
INTEGER V48;
BOOLEAN V49 = 0;
INTEGER V51 = -1;
INTEGER V52 = -1;
BOOLEAN V74 = 0;
BOOLEAN V75 = 0;
BOOLEAN V56 = 0;
BOOLEAN V57 = 0;
BOOLEAN V58 = 1;
BOOLEAN A40[10];
BOOLEAN A41[10];
BOOLEAN A44[10];
BOOLEAN V76 = 0;
BOOLEAN V80 = 1;
BOOLEAN V81 = 0;
BOOLEAN V82 = 0;
INTEGER V83 = 5;
INTEGER V84 = 0;
INTEGER V86 = 0;
BOOLEAN V91 = 0;
INTEGER V68 = 0;
INTEGER V69 = 0;
INTEGER V96 = 94;
BOOLEAN V97 = 1;
BOOLEAN V102 = 0;
BOOLEAN V100 = 0;
BOOLEAN V103 = 0;
BOOLEAN V108 = 0;
BOOLEAN V104 = 0;
BOOLEAN V105 = 0;
BOOLEAN V107 = 0;
BOOLEAN V106 = 0;
BOOLEAN V101 = 0;
BOOLEAN USE_EXTEND_IR_DELAY_METHOD = 0;
BOOLEAN USE_FIXED_ALGORITHM = 0;
ENDDATA;
PROCEDURE PR_INIT_PROGRAM USES TEMP_DATA;
V102 = 1;
V103 = 1;
ENDPROC;
PROCEDURE DO_BLANK_CHECK USES TEMP_DATA;
V100 = 1;
ENDPROC;
PROCEDURE DO_VERIFY USES TEMP_DATA;
V108 = 1;
ENDPROC;
PROCEDURE DO_SECURE USES TEMP_DATA;
V107 = 1;
V106 = 1;
ENDPROC;
PROCEDURE DO_READ_UES USES TEMP_DATA;
V104 = 1;
ENDPROC;
PROCEDURE PR_INIT_BLANKCHECK USES TEMP_DATA;
V100 = 1;
ENDPROC;
PROCEDURE PR_INIT_VERIFY USES TEMP_DATA;
V108 = 1;
ENDPROC;
PROCEDURE PR_INIT_READ_UES USES TEMP_DATA;
V104 = 1;
ENDPROC;
PROCEDURE PR_EXECUTE USES DEVICE_DATA, TEMP_DATA, L6, L26,
L96,
L97, L75, L55, L82,
L257,
L41, L35, L21;
CALL L6;
V3 = 0;
V4 = 1;
CALL L26;
IF (V2 == 0) THEN GOTO L2;
IF (V42 == 0) THEN CALL L97;
IF ((V42 == 0) && V102) THEN CALL L75;
IF ((V42 == 0) && V100) THEN CALL L96;
IF ((V42 == 0) && V103) THEN CALL L55;
IF ((V42 == 0) && V108) THEN CALL L82;
IF ((V42 == 0) && V107) THEN CALL L257;
L2:
IF ((V42 == 0) && V104) THEN CALL L41;
CALL L21;
EXIT V42;
ENDPROC;
PROCEDURE L6 USES DEVICE_DATA, TEMP_DATA, L30, L276, L32;
INTEGER V66 = 0;
INTEGER V90 = 0;
INTEGER V95 = 0;
INTEGER V67 = 0;
IF (V103) THEN V102 = 1;
IF (V106) THEN V107 = 1;
IF ((V102 || V100) && !V103 &&
(V108 || V107)) THEN V42 = 1;
IF (V42 != 0) THEN GOTO L16;
V21 = 0;
FOR i = 0 TO V1;
j = 1;
k = 1;
IF (((A13[i] & 1) == 0) ||
((A13[i] & 4) == 0)) THEN GOTO L7;
V2 = A12[i];
j = A1[V2];
k = A5[V2];
L7:
V21 = V21 + j;
V66 = V66 + k;
NEXT i;
l = 0;
FOR i = 4 TO 0 STEP -1;
FOR j = 0 TO V1;
IF (((A13[j] & 1) == 0) ||
((A13[j] & 4) == 0)) THEN GOTO L8;
V2 = A12[j];
FOR k = 0 TO (A1[V2] - 1);
IF ((k % 5) == i) THEN A26[l] = 1;
l = l + 1;
NEXT k;
GOTO L9;
L8:
l = l + 1;
L9:
NEXT j;
NEXT i;
V88 = 0;
FOR i = 0 TO V1;
j = 1;
k = 1;
IF (((A13[i] & 256) == 0) ||
((A13[i] & 4) == 0)) THEN GOTO L10;
V2 = A12[i];
j = A1[V2];
k = A5[V2];
IF ((V2 >= 23) && (V2 <= 27)) THEN
V96 = 95;
L10:
V88 = V88 + j;
V90 = V90 + k;
NEXT i;
V94 = 0;
FOR i = 0 TO V1;
j = 1;
k = 1;
IF (((A13[i] & 512) == 0) ||
((A13[i] & 4) == 0)) THEN GOTO L11;
V2 = A12[i];
j = A1[V2];
k = A5[V2];
L11:
V94 = V94 + j;
V95 = V95 + k;
NEXT i;
V22 = 0;
FOR i = 0 TO V1;
j = 1;
k = 1;
IF (((A13[i] & 2) == 0) ||
((A13[i] & 4) == 0)) THEN GOTO L12;
V2 = A12[i];
j = A1[V2];
k = A5[V2];
L12:
V22 = V22 + j;
V67 = V67 + k;
NEXT i;
l = 0;
FOR i = 4 TO 0 STEP -1;
FOR j = 0 TO V1;
IF (((A13[j] & 2) == 0) ||
((A13[j] & 4) == 0)) THEN GOTO L13;
V2 = A12[j];
FOR k = 0 TO (A1[V2] - 1);
IF ((k % 5) == i) THEN A27[l] = 1;
l = l + 1;
NEXT k;
GOTO L14;
L13:
l = l + 1;
L14:
NEXT j;
NEXT i;
V16 = 0;
FOR i = 0 TO V1;
j = 1;
IF (((A13[i] & 1) == 0) ||
((A13[i] & 4) == 0)) THEN GOTO L15;
V2 = A12[i];
j = A0[V2];
L15:
V16 = V16 + j;
NEXT i;
V87 = 0;
FOR i = 0 TO V1;
j = 1;
IF (((A13[i] & 256) == 0) ||
((A13[i] & 4) == 0)) THEN GOTO L16;
V2 = A12[i];
j = A0[V2];
L16:
V87 = V87 + j;
NEXT i;
V17 = 0;
FOR i = 0 TO V1;
j = 1;
IF (((A13[i] & 2) == 0) ||
((A13[i] & 4) == 0)) THEN GOTO L17;
V2 = A12[i];
j = A0[V2];
L17:
V17 = V17 + j;
NEXT i;
V18 = V17;
IF (V16 > V18) THEN V18 = V16;
IF (V87 > V18) THEN V18 = V87;
V19 = V18;
IF (V21 > V19) THEN V19 = V21;
IF (V88 > V19) THEN V19 = V88;
IF (V94 > V19) THEN V19 = V94;
FOR i = 0 TO (V19 - 1);
A30[i] = 1;
NEXT i;
V20 = 2 * 5 * 5 * V67;
IF ((2 * 5 * V66) > V20) THEN V20 = 2 * 5 * V66;
IF (V90 > V20) THEN V20 = V90;
IF (V95 > V20) THEN V20 = V95;
V33 = 0;
FOR i = 0 TO V1;
IF (((A13[i] & 2) == 0) ||
((A13[i] & 4) == 0)) THEN GOTO L18;
V2 = A12[i];
IF (V33 < A7[V2]) THEN
V33 = A7[V2];
L18:
NEXT i;
V12 = 0;
V13 = 0;
FOR i = 0 TO V1;
V12 = V12 + A25[i];
IF (A25[i] > V13) THEN V13 = A25[i];
NEXT i;
FOR i = 0 TO (V13 - 1);
A39[i] = 1;
NEXT i;
FOR i = 0 TO 4;
j = 10 * i;
A34[(j + 9)..j] = $016;
A35[(j + 9)..j] = $01A;
A36[(j + 9)..j] = $022;
A37[(j + 9)..j] = $026;
FOR k = 0 TO 2;
b = 0;
IF ((i & (1 << k)) != 0) THEN b = 1;
A34[j + k + 7] = b;
A35[j + k + 7] = b;
A36[j + k + 7] = b;
A37[j + k + 7] = b;
NEXT k;
NEXT i;
FOR i = 0 TO 6;
j = 10 * i;
A38[(j + 9)..j] = $02A;
FOR k = 0 TO 2;
b = 0;
IF ((i & (1 << k)) != 0) THEN b = 1;
A38[j + k + 7] = b;
NEXT k;
NEXT i;
FOR i = 0 TO V1;
A52[i] = 0;
IF (((A13[i] & 256) == 0) ||
((A13[i] & 4) == 0)) THEN GOTO L19;
V2 = A12[i];
A52[i] =
A5[V2] - (80 * A6[V2]);
L19:
NEXT i;
CALL L30;
IRSTOP IRPAUSE;
DRSTOP IDLE;
STATE IDLE;
IF (V101) THEN CALL L32;
IF (V42 != 0) THEN GOTO L20;
A18[9..0] = $071;
V4 = 1 | 2;
CALL L276;
WAIT 10000 USEC;
A18[9..0] = $332;
V4 = 256;
CALL L276;
WAIT 10000 USEC;
A18[9..0] = $044;
V4 = 512;
CALL L276;
WAIT 10000 USEC;
L20:
ENDPROC;
PROCEDURE L21 USES DEVICE_DATA, TEMP_DATA, L31, L276, L32, L35;
IF (V42 == 1) THEN GOTO L25;
CALL L31;
IF (!V76) THEN GOTO L22;
A18[9..0] = $003;
V4 = 32;
CALL L276;
L22:
A18[9..0] = $079;
V4 = 1 | 2;
CALL L276;
WAIT 10000 USEC;
A18[9..0] = $006;
V4 = 256;
CALL L276;
A18[9..0] = $04A;
V4 = 512;
CALL L276;
WAIT 10000 USEC;
L23:
IF (!V76) THEN GOTO L24;
V80 = 0;
CALL L32;
IF (V42 != 0) THEN V42 = 10;
IF (V42 != 0) THEN GOTO L25;
L24:
A18[9..0] = $3FF;
CALL L276;
IF (V105) THEN CALL L35;
L25:
IF (V42 == 0) THEN
PRINT "DONE";
IF (V42 == 1) THEN
PRINT "Invalid option combination specified";
IF (V42 == 6) THEN
PRINT "Unrecognized device";
IF (V42 == 7) THEN
PRINT "Device revision is not supported";
IF (V42 == 10) THEN
PRINT "Device programming failure";
IF (V42 == 9) THEN
PRINT "Device is not blank";
IF (V42 == 11) THEN
PRINT "Device verify failure";
IF (V42 == 10) THEN
PRINT "Device configuration failure";
IF (V42 == 4) THEN
PRINT "Unable to read USERCODE/UES from device #", V84 + 1;
ENDPROC;
PROCEDURE L26 USES DEVICE_DATA, TEMP_DATA;
j = 0;
FOR i = 0 TO V1;
IF ((j <= V3) &&
((A13[i] & V4) != 0) &&
((A13[i] & 4) != 0)) THEN j = i + 1;
NEXT i;
IF (j > V3) THEN GOTO L27;
V2 = 0;
V3 = 0;
GOTO L29;
L27:
V2 = A12[j - 1];
V3 = j;
IF ((V4 == 32) || (V4 == 256) ||
(V4 == 512))
THEN GOTO L29;
IF (V58) THEN GOTO L28;
A41[9..0] = $066;
GOTO L29;
L28:
A41[9..0] = $006;
L29:
IF (V4 == 1) THEN A40[9..0] = $00E;
IF (V4 == 1) THEN A44[9..0] = $012;
IF (V4 == 2) THEN A40[9..0] = $38E;
IF (V4 == 2) THEN A44[9..0] = $392;
ENDPROC;
PROCEDURE L30 USES DEVICE_DATA, TEMP_DATA, L31
, L272
;
CALL L31;
IF (V32 == 0) THEN CALL L272;
V10 = 0;
V14 = 0;
V15 = 0;
V89 = 0;
V49 = 1;
V34 = 0;
V51 = -1;
V52 = -1;
V45 = 0;
V29 = 1;
IF (V103) THEN V29 = 0;
IF (V102 && V74) THEN V29 = 2;
ENDPROC;
PROCEDURE L31 USES DEVICE_DATA, TEMP_DATA;
FOR i = 0 TO V1;
A17[i] = (A13[i] | A48[i]);
IF (((A17[i] & 4) != 0) &&
((A17[i] & (1 | 256 | 2 | 512)) != 0) &&
!V102 && !V100 && !V103 && !V108 &&
!V107 && !V106 && V101) THEN
A17[i] = A17[i] & ~4;
IF (((A17[i] & 4) != 0) &&
((A17[i] & 32) != 0) && !V101 &&
(V102 || V100 || V103 || V108 ||
V107 || V106)) THEN
A17[i] = A17[i] & ~4;
NEXT i;
ENDPROC;
PROCEDURE L32 USES DEVICE_DATA, TEMP_DATA, L31;
INTEGER V79 = 32 * V0;
BOOLEAN A46[V79];
INTEGER A47[8];
INTEGER V145;
CALL L31;
STATE IDLE;
V27 = 0;
FOR i = 0 TO V1;
A18[9..0] = A39[(A25[i] - 1)..0];
IF ((A17[i] & (1 | 2 | 256 | 512)) != 0) THEN
A18[9..0] = $059;
IF ((A17[i] & 32) != 0) THEN
A18[9..0] = $006;
A32[(V27 + (A25[i] - 1))..V27] = A18[(A25[i] - 1)..0];
V27 = V27 + A25[i];
NEXT i;
IRSCAN V27, A32[(V27 - 1)..0];
WAIT IRPAUSE, 5 USEC, IDLE;
WAIT 3 CYCLES;
DRSCAN V79, A46[(V79 - 1)..0], CAPTURE A46[(V79 - 1)..0];
V27 = 0;
FOR i = 0 TO V1;
IF (A46[V27] == 1) THEN GOTO L33;
IF (V80) THEN
PRINT "Device #", V0 - i, " unable to read IDCODE";
IF (V101 && ((A17[i] & 32) != 0) &&
((A17[i] & 4) != 0)) THEN V42 = 6;
GOTO L34;
L33:
FOR j = 0 TO 7;
A47[j] = 0;
FOR k = 0 TO 3;
IF (A46[V27 + (4 * j) + k]) THEN
A47[j] = A47[j] | (1 << k);
NEXT k;
A47[j] = A47[j] + 48;
IF (A47[j] >= 58) THEN A47[j] = A47[j] + 7;
NEXT j;
IF (V80) THEN
PRINT "Device #", V0 - i, " IDCODE is ",
CHR$(A47[7]), CHR$(A47[6]),
CHR$(A47[5]), CHR$(A47[4]),
CHR$(A47[3]), CHR$(A47[2]),
CHR$(A47[1]), CHR$(A47[0]);
IF (V101 && ((A17[i] & 32) != 0) &&
((A17[i] & 4) != 0) && (A47[0] != 68) &&
(A47[1] != 68)) THEN
V42 = 6;
V27 = V27 + 31;
L34:
V27 = V27 + 1;
NEXT i;
V27 = 0;
FOR i = 0 TO V1;
IF(A61[i] != 0) THEN GOTO L32_3;
IF(A46[V27] != 0) THEN
V42 = 6;
V27 = V27 + 1;
NEXT i;
GOTO L32_4;
L32_3:
V145 = 0;
FOR j = 0 TO 31;
IF(A46[(V27 + j)]) THEN
V145 = V145 + (1 << j);
NEXT j;
V27 = V27 + 32;
IF(A61[i] != V145) THEN
V42 = 6;
NEXT i;
L32_4:
ENDPROC;
PROCEDURE L35 USES DEVICE_DATA, TEMP_DATA, L31, L276, L39;
j = 0;
k = V1;
V84 = V84 - 1;
IF (V84 == -1) THEN GOTO L37;
IF ((V84 < 0) || (V84 > V1) ||
(((A17[V1 - V84] & 256) == 0) &&
((A17[V1 - V84] & 32) == 0) &&
((A17[V1 - V84] & 512) == 0))) THEN
V42 = 4;
IF (V42 != 0) THEN GOTO L38;
L36:
j = V84;
k = V84;
L37:
CALL L31;
V4 = 256;
A18[9..0] = $006;
CALL L276;
V4 = 512;
A18[9..0] = $04A;
CALL L276;
WAIT 10000 USEC;
A18[9..0] = $3FF;
CALL L276;
STATE IDLE;
FOR i = 0 TO (V19 - 1);
A30[i] = 1;
NEXT i;
FOR i = j TO k;
V84 = i;
PUSH i; PUSH j; PUSH k;
CALL L31;
V4 = 0;
IF (((A17[V1 - V84] & 256) != 0) &&
((A17[V1 - V84] & 4) != 0)) THEN
V4 = 256;
IF (((A17[V1 - V84] & 32) != 0) &&
((A17[V1 - V84] & 4) != 0)) THEN
V4 = 32;
IF (((A17[V1 - V84] & 512) != 0) &&
((A17[V1 - V84] & 4) != 0)) THEN
V4 = 512;
IF (V4 != 0) THEN CALL L39;
POP k; POP j; POP i;
NEXT i;
L38:
ENDPROC;
PROCEDURE L39 USES DEVICE_DATA, TEMP_DATA, L276, L40;
j = V1 - V84;
FOR i = 0 TO V1;
IF (((A17[i] & V4) != 0) &&
((A17[i] & 4) != 0) && (i != j)) THEN
A17[i] = A17[i] | 8;
NEXT i;
IF (V4 == 256) THEN
A18[9..0] = $007;
IF (V4 == 512) THEN
A18[9..0] = $079;
IF (V4 == 32) THEN
A18[9..0] = $007;
CALL L276;
DRSCAN 32 + j, A30[(32 + j - 1)..0], CAPTURE A31[(32 + j - 1)..0];
V86 = 0;
FOR i = 0 TO 31;
IF (A31[i + j]) THEN
V86 = V86 | (1 << i);
NEXT i;
CALL L40;
ENDPROC;
PROCEDURE L40 USES DEVICE_DATA, TEMP_DATA;
INTEGER A58[8];
EXPORT "DEVICE", V84 + 1;
EXPORT "USERCODE", V86;
FOR i = 0 TO 7;
V27 = 0;
A58[i] = V86 & 15;
IF (A58[i] > 9) THEN V27 = 7;
A58[i] = A58[i] + 48 + V27;
V86 = V86 >> 4;
NEXT i;
PRINT "Device #", V84 + 1, " USERCODE code is ",
CHR$(A58[7]), CHR$(A58[6]),
CHR$(A58[5]), CHR$(A58[4]),
CHR$(A58[3]), CHR$(A58[2]),
CHR$(A58[1]), CHR$(A58[0]);
ENDPROC;
PROCEDURE L41 USES DEVICE_DATA, TEMP_DATA, L31
, L45
;
j = 0;
k = V1;
V34 = 1;
V29 = 1;
V84 = V84 - 1;
IF (V84 == -1) THEN GOTO L43;
IF ((V84 < 0) || (V84 > V1) ||
(((A17[V1 - V84] & 1) == 0) &&
((A17[V1 - V84] & 2) == 0))) THEN
V42 = 4;
IF (V42 != 0) THEN GOTO L44;
L42:
j = V84;
k = V84;
L43:
FOR i = j TO k;
V84 = i;
PUSH i; PUSH j; PUSH k;
CALL L31;
V86 = 0;
IF (((A17[V1 - V84] & 1) != 0) &&
((A17[V1 - V84] & 4) != 0)) THEN
CALL L45;
POP k; POP j; POP i;
NEXT i;
L44:
ENDPROC;
PROCEDURE L45 USES DEVICE_DATA, TEMP_DATA, L276, L287, L214, L157, L50;
V4 = 1;
A18[9..0] = $016;
CALL L276;
DRSCAN V21, A26[(V21 - 1)..0];
A18[9..0] = $01A;
CALL L276;
DRSCAN V21, A26[(V21 - 1)..0];
j = V1 - V84;
FOR i = 0 TO V1;
IF (((A17[i] & 1) != 0) && ((A17[i] & 4) != 0) &&
(i != j)) THEN A17[i] = A17[i] | 8;
NEXT i;
CALL L287;
V2 = A12[j];
V27 = (V2 - 1) * 2;
i = A49[V27];
V48 = A49[V27 + 1];
V46 = A6[V2];
IF (V48 < (V46 >> 1)) THEN GOTO L46;
V48 = V46 - V48 - 1;
L46:
V27 = j + V24 + (16 * V48) + 12;
FOR V11 = i TO i + 15;
PUSH i;
PUSH V27;
CALL L214;
CALL L157;
POP V27;
POP i;
IF (A31[V27]) THEN
V86 = V86 | (1 << (V11 - i));
NEXT V11;
CALL L50;
ENDPROC;
PROCEDURE L50 USES DEVICE_DATA, TEMP_DATA;
INTEGER V85[8];
EXPORT "DEVICE", V84 + 1;
EXPORT "UES", V86;
FOR i = 0 TO 3;
V27 = 0;
V85[i] = V86 & 15;
IF (V85[i] > 9) THEN V27 = 7;
V85[i] = V85[i] + 48 + V27;
V86 = V86 >> 4;
NEXT i;
PRINT "Device #", V84 + 1, " UES code is ",
CHR$(V85[3]), CHR$(V85[2]),
CHR$(V85[1]), CHR$(V85[0]);
ENDPROC;
PROCEDURE L55 USES DEVICE_DATA, TEMP_DATA, L30, L309, L214, L240;
PRINT "programming 7K device(s)...";
CALL L30;
CALL L309;
FOR V11 = 1 TO 107;
CALL L214;
CALL L240;
NEXT V11;
V49 = 1;
FOR V11 = 109 TO (V32 - 1);
CALL L214;
CALL L240;
NEXT V11;
ENDPROC;
PROCEDURE L69 USES DEVICE_DATA, TEMP_DATA, L276;
A18[9..0] = A41[9..0];
CALL L276;
A18[9..0] = A40[9..0];
CALL L276;
A18[9..0] = $00A;
CALL L276;
IF (V58) THEN V56 = 1;
WAIT (V38 * 1000) USEC;
IF (V58) THEN GOTO L70;
IF (V82) THEN V83 = 20000;
A18[9..0] = $06A;
CALL L276;
V83 = 5;
A18[9..0] = $06E;
CALL L276;
L70:
A18[9..0] = A44[9..0];
CALL L276;
ENDPROC;
PROCEDURE L71 USES DEVICE_DATA, TEMP_DATA, L276;
A18[9..0] = A41[9..0];
CALL L276;
A18[9..0] = $00A;
CALL L276;
IF (V58) THEN V56 = 1;
WAIT (V37 * 100) USEC;
IF (V58) THEN GOTO L72;
A18[9..0] = $06E;
CALL L276;
L72:
A18[9..0] = A44[9..0];
CALL L276;
ENDPROC;
PROCEDURE L73 USES DEVICE_DATA, TEMP_DATA, L31;
CALL L31;
FOR i = 0 TO V1;
IF (((A17[i] & 1) == 0) || ((A17[i] & 4) == 0))
THEN GOTO L74;
IF (V82 && ((A48[i] & 128) == 0))
THEN A17[i] = A17[i] | 8;
IF (!V82 && ((A48[i] & 128) != 0))
THEN A17[i] = A17[i] | 8;
L74:
NEXT i;
IF (V82) THEN A41[9..0] = $066;
IF (!V82 && V58) THEN A41[9..0] = $006;
ENDPROC;
PROCEDURE L75 USES DEVICE_DATA, TEMP_DATA, L276, L73, L69, L214, L240;
A18[9..0] = $012;
CALL L276;
A18[9..0] = $01E;
CALL L276;
DRSCAN V16, A30[(V16 - 1)..0];
L76:
CALL L73;
b = V58;
IF (V82) THEN V58 = 0;
CALL L69;
V58 = b;
IF (!V82) THEN GOTO L77;
V82 = 0;
GOTO L76;
L77:
A18[9..0] = $01E;
CALL L276;
DRSCAN V16, A29[(V16 - 1)..0];
IF (V103) THEN GOTO L78;
V75 = 1;
FOR V11 = 102 TO 103;
CALL L214;
CALL L240;
NEXT V11;
V75 = 0;
L78:
ENDPROC;
PROCEDURE L82 USES DEVICE_DATA, TEMP_DATA, L30, L309, L299, L214, L157;
IF (V74) THEN PRINT "blank checking 7K device(s)...";
IF (!V74) THEN PRINT "verifying 7K device(s)...";
CALL L30;
CALL L309;
CALL L299;
FOR V11 = 1 TO 101;
CALL L214;
CALL L157;
IF (V42 != 0) THEN V11 = 101;
NEXT V11;
IF (V42 != 0) THEN GOTO L84;
IF (V74 && !V103) THEN GOTO L83;
FOR V11 = 102 TO 103;
CALL L214;
CALL L157;
IF (V42 != 0) THEN V11 = 103;
NEXT V11;
L83:
IF (V42 != 0) THEN GOTO L84;
FOR V11 = 104 TO 107;
CALL L214;
CALL L157;
IF (V42 != 0) THEN V11 = 107;
NEXT V11;
IF (V42 != 0) THEN GOTO L84;
V45 = 1;
FOR V11 = 109 TO 113;
CALL L214;
CALL L157;
IF (V42 != 0) THEN V11 = 113;
NEXT V11;
IF (V42 != 0) THEN GOTO L84;
V45 = 0;
FOR V11 = 114 TO (V32 - 1);
CALL L214;
CALL L157;
IF (V42 != 0) THEN V11 = V32 - 1;
NEXT V11;
L84:
ENDPROC;
PROCEDURE L96 USES DEVICE_DATA, TEMP_DATA
, L82
;
V74 = 1;
IF (V4 == 1) THEN CALL L82;
V74 = 0;
ENDPROC;
PROCEDURE L97 USES DEVICE_DATA, TEMP_DATA, L30, L214, L157, L287, L31;
CALL L30;
V37 = 100;
V38 = 100;
V29 = 1;
V11 = 0;
CALL L214;
V34 = 1;
IF (USE_FIXED_ALGORITHM) THEN GOTO L98;
CALL L157;
GOTO L99;
L98:
CALL L287;
FOR i = 0 TO V20 - 1;
A31[i] = 0;
A57[i] = 0;
NEXT i;
L99:
FOR i = V1 TO 0 STEP -1;
A48[i] = 0;
IF (((A17[i] & 1) == 0) ||
((A17[i] & 4) == 0)) THEN GOTO L109;
V68 = 0;
FOR j = 0 TO i;
V26 = 0;
V2 = A12[j];
IF (i == j) THEN GOTO L100;
V26 = 1;
IF (((A17[j] & 1) == 0) ||
((A17[j] & 4) == 0)) THEN GOTO L100;
V26 = A8[V2] >> 1;
L100:
V68 = V68 + V26;
NEXT j;
FOR j = 0 TO 14;
A16[j] = 0;
V46 = A6[V2];
V47 = j / (V46 << 1);
V48 = (j % (V46 << 1)) >> 1;
V69 = 0;
IF (V48 < (V46 >> 1)) THEN GOTO L101;
V69 = 1;
V48 = V46 - V48 - 1;
L101:
V27 = V68 + (((2 * V47) + V69) * V24) +
(16 * V48) + (8 * (~j & 1));
FOR k = 0 TO 7;
IF (USE_FIXED_ALGORITHM) THEN GOTO L102;
IF (A31[V27 + k]) THEN
A16[j] = A16[j] | (1 << k);
GOTO L103;
L102:
IF ((A54[j << 1] & (1 << k)) != 0) THEN
A31[V27 + k] = 1;
IF ((A54[(j << 1) + 1] & (1 << k)) != 0) THEN
A57[V27 + k] = 1;
L103:
NEXT k;
IF (USE_FIXED_ALGORITHM) THEN
A16[j] = A54[j << 1];
NEXT j;
IF (!USE_FIXED_ALGORITHM) THEN GOTO L104;
PUSH i;
CALL L157;
POP i;
IF (V39) THEN V42 = 6;
L104:
IF ((A16[0] != 65) ||
(A16[1] != 76) ||
(A16[2] != 84) ||
(A16[3] != 69) ||
(A16[4] != 82) ||
(A16[5] != 65))
THEN V42 = 6;
IF (V42 != 0) THEN GOTO L109;
V35 = ((A16[6] - 48) * 10) + (A16[7] - 48);
V36 = A16[9] & 31;
V27 = 5 * 3 * (V2 - 1);
V40 = 0;
V72 = 300;
V73 = 100;
IF ((V36 & 24) == 16) THEN
V40 = 1;
FOR j = 0 TO (5 - 1);
IF (V40 ||
(V35 != A11[V27]) ||
(V36 != A11[V27 + 1])) THEN
GOTO L108;
V40 = 1;
IF ((A11[V27 + 2] & 1) != 1) THEN
GOTO L105;
V72 = A14[A16[8] & 31];
V73 = A15[(A16[8] >> 5) & 7];
L105:
IF ((A11[V27 + 2] & 2) != 2) THEN
GOTO L106;
k = 14;
IF (V2 == 2) THEN k = 11;
V72 = A14[((A16[k] >> 3) & 31) + 32];
V73 = A15[(A16[k] & 7) + 8];
L106:
IF ((A11[V27 + 2] & 4) != 4) THEN
GOTO L107;
V72 = 500;
V73 = 500;
L107:
IF ((A11[V27 + 2] & 128) != 128) THEN
GOTO L108;
V82 = 1;
A48[i] = A48[i] | 128;
L108:
V27 = V27 + 3;
NEXT j;
V27 = 0;
IF ((V36 & 15) > 9) THEN V27 = 7;
PRINT "Device #", V0 - i ," Silicon ID is ",
CHR$(A16[0]), CHR$(A16[1]), CHR$(A16[2]), CHR$(A16[3]),
CHR$(A16[4]), CHR$(A16[5]), CHR$(A16[6]), CHR$(A16[7]),
"(", CHR$(((V36 >> 4) & 1) + 48),
CHR$((V36 & 15) + 48 + V27), ")"
;
IF (V72 > V37) THEN V37 = V72;
IF (V73 > V38) THEN V38 = V73;
IF (!V40) THEN V42 = 7;
L109:
NEXT i;
IF ((V42 == 0) && V82) THEN CALL L31;
ENDPROC;
PROCEDURE L153 USES DEVICE_DATA, TEMP_DATA, L276;
A18[9..0] = A19[9..0];
CALL L276;
WAIT 15 USEC;
A18[9..0] = A20[9..0];
CALL L276;
IF (V34 == 0) THEN GOTO L154;
IF (!USE_FIXED_ALGORITHM) THEN
DRSCAN V24, A29[(V24 - 1)..0], CAPTURE A31[V31..V30];
IF (USE_FIXED_ALGORITHM) THEN
DRSCAN V24, A29[(V24 - 1)..0], COMPARE A31[V31..V30],
A57[V31..V30], V40;
GOTO L156;
L154:
IF (V74) THEN GOTO L155;
DRSCAN V24, A29[(V24 - 1)..0], COMPARE A22[V31..V30],
A30[(V24 - 1)..0], V40;
GOTO L156;
L155:
DRSCAN V24, A29[(V24 - 1)..0],
COMPARE A30[(V24 - 1)..0], A30[(V24 - 1)..0],
V40;
L156:
IF (!V40) THEN V39 = 1;
ENDPROC;
PROCEDURE L157 USES DEVICE_DATA, TEMP_DATA, L276, L287, L153, L301, L297, L299;
V39 = 0;
V40 = 1;
IF (V10 > 89) THEN GOTO L158;
A18[9..0] = $016;
CALL L276;
DRSCAN V21, A26[(V21 - 1)..0];
A18[9..0] = $01A;
CALL L276;
DRSCAN V21, A26[(V21 - 1)..0];
L158:
IF (V29 == 0) THEN
A19[9..0] = $036;
IF (V29 == 1) THEN
A19[9..0] = $03A;
IF (V29 == 2) THEN
A19[9..0] = $032;
IF (V49) THEN CALL L287;
IF (V34 == 1) THEN GOTO L159;
V30 = V15;
V31 = V30 + (V24 - 1);
GOTO L160;
L159:
V30 = 0;
V31 = V24 - 1;
L160:
V81 = 0;
V28 = 4;
IF (V10 > 88) THEN V28 = 0;
FOR i = 0 TO V28;
IF (i == V28) THEN V81 = 1;
PUSH i;
A20[9..0] = $022;
CALL L153;
IF (V29 != 0) THEN GOTO L161;
A19[9..0] = $032;
CALL L153;
A19[9..0] = $036;
L161:
V30 = V30 + V24;
V31 = V31 + V24;
IF (!V45) THEN GOTO L162;
b = 0;
CALL L301;
GOTO L163;
L162:
IF (V10 != V51) THEN GOTO L163;
V44 = 1;
b = 0;
CALL L297;
L163:
A20[9..0] = $026;
CALL L153;
IF (V29 != 0) THEN GOTO L164;
A19[9..0] = $032;
CALL L153;
A19[9..0] = $036;
L164:
V30 = V30 + V24;
V31 = V31 + V24;
IF (!V45) THEN GOTO L165;
b = 1;
CALL L301;
GOTO L166;
L165:
IF (V10 != V51) THEN GOTO L166;
b = 1;
CALL L297;
V44 = 0;
CALL L299;
L166:
IF (V81) THEN GOTO L167;
A18[9..0] = $016;
CALL L276;
POP i;
DRSCAN V21, A26[(((i + 2) * V21) - 1)..((i + 1) * V21)];
PUSH i;
A18[9..0] = $01A;
CALL L276;
POP i;
DRSCAN V21, A26[(((i + 2) * V21) - 1)..((i + 1) * V21)];
PUSH i;
L167:
POP i;
NEXT i;
V15 = V30;
IF (!V39 || (V34 == 1)) THEN
GOTO L168;
IF (V74) THEN V42 = 9;
IF (!V74) THEN V42 = 11;
L168:
ENDPROC;
PROCEDURE L214 USES DEVICE_DATA, TEMP_DATA, L276, L309;
V30 = 0;
FOR j = 0 TO V1;
V31 = V30;
IF (((A17[j] & 1) == 0) ||
((A17[j] & 4) == 0) ||
((A17[j] & 8) != 0)) THEN GOTO L216;
V2 = A12[j];
IF (V11 >= (A0[V2] - 108)) THEN GOTO L215;
V31 = V31 + (A0[V2] - 1);
A28[V31 - V11] = 1;
IF (V11 < 108) THEN A28[(107 + V30) - V11] = 1;
GOTO L216;
L215:
IF ((A17[j] & 8) == 0) THEN V49 = 1;
A17[j] = A17[j] | 8;
L216:
V30 = V31 + 1;
NEXT j;
A18[9..0] = $01E;
CALL L276;
DRSCAN V30, A28[(V30 - 1)..0];
V30 = 0;
FOR j = 0 TO V1;
V31 = V30;
V2 = A12[j];
IF (((A17[j] & 1) == 0) ||
((A17[j] & 4) == 0) ||
((A17[j] & 8) != 0)) THEN GOTO L217;
V31 = V31 + (A0[V2] - 1);
A28[V31 - V11] = 0;
IF (V11 < 108) THEN A28[(107 + V30) - V11] = 0;
L217:
V30 = V31 + 1;
NEXT j;
IF (V49 && (V11 == V52)) THEN
CALL L309;
V10 = V11;
ENDPROC;
PROCEDURE L240 USES DEVICE_DATA, TEMP_DATA, L287, L276, L71;
V30 = V14;
IF (V49) THEN CALL L287;
V31 = V30 + (V23 - 1);
IF (V75) THEN GOTO L241;
A18[9..0] = $016;
CALL L276;
DRSCAN V23, A21[V31..V30];
V30 = V30 + V23;
V31 = V31 + V23;
A18[9..0] = $01A;
CALL L276;
DRSCAN V23, A21[V31..V30];
V30 = V30 + V23;
V31 = V31 + V23;
GOTO L242;
L241:
A18[9..0] = $016;
CALL L276;
DRSCAN V23, A29[(V23 - 1)..0];
A18[9..0] = $01A;
CALL L276;
DRSCAN V23, A29[(V23 - 1)..0];
L242:
CALL L71;
V14 = V30;
ENDPROC;
PROCEDURE L257 USES DEVICE_DATA, TEMP_DATA, L30, L287, L276
, L214, L240
;
IF (V107 == 0) THEN GOTO L271;
CALL L30;
FOR i = 0 TO V1;
IF (((A17[i] & V4) == 0) ||
((A17[i] & 4) == 0)) THEN GOTO L258;
IF (((V4 == 1) || (V4 == 256)) &&
((A17[i] & 16) == 0)) THEN
A17[i] = A17[i] | 8;
IF ((V4 == 2) &&
((A17[i] & 16) == 0)) THEN
A17[i] = A17[i] & ~4;
IF ((A17[i] & 16) != 0) THEN V75 = 1;
L258:
NEXT i;
IF (!V106 && (V75 == 0)) THEN
GOTO L271;
IF (V106 && (V75 == 0)) THEN
GOTO L263;
IF (V4 != 1) THEN GOTO L259;
V11 = 108;
CALL L214;
CALL L240;
GOTO L263;
L259:
V11 = 0;
L263:
IF (!V106) THEN GOTO L271;
IF (V4 == 1) THEN
A18[9..0] = $03E;
IF ((V4 == 2) || (V4 == 256)) THEN
A18[9..0] = $3FF;
CALL L276;
CALL L30;
V75 = 0;
FOR i = 0 TO V1;
IF (((A17[i] & V4) == 0) ||
((A17[i] & 4) == 0)) THEN GOTO L266;
IF ((A17[i] & 16) != 0) THEN GOTO L264;
A17[i] = A17[i] | 16;
GOTO L265;
L264:
A17[i] = A17[i] & ~16;
L265:
IF (((V4 == 1) || (V4 == 256)) &&
((A17[i] & 16) == 0)) THEN
A17[i] = A17[i] | 8;
IF ((V4 == 2) &&
((A17[i] & 16) == 0)) THEN
A17[i] = A17[i] & ~4;
IF ((A17[i] & 16) != 0) THEN V75 = 1;
L266:
NEXT i;
IF (V75 == 0) THEN GOTO L271;
IF (V4 != 1) THEN GOTO L267;
V11 = 108;
CALL L214;
CALL L240;
GOTO L271;
L267:
V11 = 0;
L271:
V75 = 0;
ENDPROC;
PROCEDURE L272 USES DEVICE_DATA, TEMP_DATA
, L273
;
IF (V4 == 1) THEN CALL L273;
ENDPROC;
PROCEDURE L273 USES DEVICE_DATA, TEMP_DATA;
FOR i = 0 TO V1;
V2 = A12[i];
IF (((A17[i] & V4) != 0) &&
((A17[i] & 4) != 0)) THEN
IF (A0[V2] > V32) THEN
V32 = A0[V2];
NEXT i;
V32 = V32 - 108;
ENDPROC;
PROCEDURE L276 USES DEVICE_DATA, TEMP_DATA;
V41 = 0;
V27 = 0;
IF (!V56) THEN GOTO L277;
V56 = 0;
V41 = 50;
IF (!USE_EXTEND_IR_DELAY_METHOD) THEN GOTO L277;
V27 = 50;
A32[49..0] = A30[49..0];
L277:
FOR i = 0 TO V1;
IF ((A17[i] & 8) != 0) THEN GOTO L278;
IF (((A17[i] & V4) != 0) &&
((A17[i] & 4) != 0)) THEN GOTO L280;
A33[(A25[i] - 1)..0] = A39[(A25[i] - 1)..0];
IF (((A17[i] & 1) != 0) &&
((A17[i] & 4) != 0)) THEN
A33[(A25[i] - 1)..0] = $03E;
A32[(V27 + (A25[i] - 1))..V27] = A33[(A25[i] - 1)..0];
V27 = V27 + A25[i];
GOTO L281;
L278:
IF ((A17[i] & 2) != 0) THEN GOTO L279;
A32[(V27 + 9)..V27] = $3FF;
IF ((A17[i] & 1) != 0) THEN
A32[(V27 + 9)..V27] = $03E;
V27 = V27 + 10;
GOTO L281;
L279:
IF (!V57) THEN GOTO L280;
A32[(V27 + 9)..V27] = $02A;
V27 = V27 + 10;
GOTO L281;
L280:
l = 0;
IF ((A18[20] == 1) && ((A17[i] & 64) != 0)) THEN
l = 10;
A32[(V27 + 9)..V27] = A18[(l + 9)..l];
V27 = V27 + 10;
L281:
NEXT i;
IF ((V41 == 0) || USE_EXTEND_IR_DELAY_METHOD) THEN
GOTO L282;
STATE DRPAUSE;
WAIT DRPAUSE, 5 USEC, DRPAUSE;
L282:
IRSCAN V27, A32[(V27 - 1)..0];
V57 = 0;
WAIT IRPAUSE, V83 USEC, IRPAUSE;
IF (V91) THEN GOTO L283;
STATE IDLE;
WAIT 3 CYCLES;
L283:
ENDPROC;
PROCEDURE L287 USES DEVICE_DATA, TEMP_DATA;
V23 = 0;
V24 = 0;
FOR i = 0 TO (V19 - 1);
A30[i] = 1;
NEXT i;
FOR i = 0 TO V1;
V25 = 1;
V26 = 1;
IF (((A17[i] & V4) == 0) ||
((A17[i] & 4) == 0) ||
((A17[i] & 8) != 0)) THEN GOTO L288;
V2 = A12[i];
V25 = A1[V2];
V26 = A5[V2];
GOTO L289;
L288:
IF (V74) THEN A30[V24] = 0;
L289:
V23 = V23 + V25;
V24 = V24 + V26;
NEXT i;
V49 = 0;
ENDPROC;
PROCEDURE L297 USES DEVICE_DATA, TEMP_DATA;
j = 0;
FOR i = 0 TO V1;
k = j;
IF (((A17[i] & 1) == 0) ||
((A17[i] & 4) == 0) ||
((A17[i] & 8) != 0)) THEN GOTO L298;
V2 = A12[i];
k = k + (A5[V2] - 1);
IF (V10 != A9[3 * (V2 - 1)]) THEN
GOTO L298;
V27 = (16 * (A6[V2] -
A9[(3 * (V2 - 1)) + 2])) -
A9[(3 * (V2 - 1)) + 1] - 1;
IF (V43) THEN A29[V27 + j] = b;
IF (V44) THEN A30[V27 + j] = b;
L298:
j = k + 1;
NEXT i;
ENDPROC;
PROCEDURE L299 USES DEVICE_DATA, TEMP_DATA;
j = 317;
IF (V51 == -1) THEN V51 = 0;
FOR i = 0 TO V1;
IF (((A17[i] & 1) == 0) ||
((A17[i] & 4) == 0)) THEN GOTO L300;
V2 = A12[i];
IF (V51 >= A9[3 * (V2 - 1)]) THEN
GOTO L300;
IF (j > (A9[3 * (V2 - 1)] - V51)) THEN
j = A9[3 * (V2 - 1)] - V51;
L300:
NEXT i;
IF (j != 317) THEN V51 = V51 + j;
IF (j == 317) THEN V51 = -1;
ENDPROC;
PROCEDURE L301 USES DEVICE_DATA, TEMP_DATA;
j = 0;
FOR i = 0 TO V1;
k = j;
IF (((A17[i] & 1) == 0) ||
((A17[i] & 4) == 0)) THEN GOTO L302;
V2 = A12[i];
k = k + (A5[V2] - 1);
V27 = (16 * (A6[V2] -
A10[(2 * (V2 - 1)) + 1])) -
A10[2 * (V2 - 1)] - 1;
A30[V27 + j] = b;
L302:
j = k + 1;
NEXT i;
ENDPROC;
PROCEDURE L309 USES DEVICE_DATA, TEMP_DATA;
j = 317;
FOR i = 0 TO V1;
IF (((A17[i] & 1) == 0) ||
((A17[i] & 4) == 0)) THEN GOTO L310;
V2 = A12[i];
IF (V52 >= (A0[V2] - 108)) THEN
GOTO L310;
IF (j > A0[V2]) THEN j = A0[V2];
L310:
NEXT i;
IF (j != 317) THEN V52 = j - 108;
IF (j == 317) THEN V52 = -1;
ENDPROC;
' END OF FILE
CRC 26EB;