www.pudn.com > cpld_laser.rar > decoder_latch.jam


' Copyright (C) 1988-2002 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 - d:\laserinterface\cpld\decoder_latch.pof Fri May 26 03:45:20 2006 
 
NOTE "CREATOR" "Altera Jam/STAPL Composer Version 10.2 06/28/2002"; 
NOTE "DATE" "2006/05/26"; 
NOTE "DEVICE" "EPM7128S"; 
NOTE "FILE" "decoder_latch.pof"; 
NOTE "TARGET" "1"; 
NOTE "IDCODE" "071280DD"; 
NOTE "UES" "FFFF"; 
NOTE "CHECKSUM" "001DC82D"; 
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" "14"; 
ACTION PROGRAM = L0, DO_BLANK_CHECK OPTIONAL, DO_VERIFY RECOMMENDED, DO_SECURE OPTIONAL, 
DO_READ_UES OPTIONAL, 
L15; 
ACTION BLANKCHECK = L7, L15; 
ACTION VERIFY = L8, 
DO_READ_UES OPTIONAL, 
L15; 
ACTION ERASE = L12, L15; 
ACTION READ_UES = L11, L15; 
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] = @ 
mB300u@@@@3q6aP86Zm6uVo@VkDlTJtSBt6p@@9VXQfa@@V@@@@_Vz@z@@Vby_@u 
_Vnt@3d6NrsORS5_Vo@pa9qw@@l@@@V@N@@Zu9u@J_VvMH@@@hB59SlBgh@@@A5C 
a5y@ZbgaXvmsYnkHjqRb64drI@@@_Ul@xN0KW@@@VzV@ts@@_z@t@F3mWZmpu@@z 
tU@t@2W2y@@@v@_ld@@zl@l@V@@@@_t@zl3xarVz@Co@VnsO@N@rfo@Vfr@Ljy@O 
Wgu@zVtlt@lz@@N@@@@_@@xVQnWG6v9y5Xy@@xxT@lt@z@E@t@V@@V@s@zzzV@@F 
7Z1w@z@J9m6zl@@s@__T@@@xV@lttz@F@@@xfQCuH63Yhq6l_@rpLQf@l@Rx@_@k 
@xzxsncGVyucAdy@@rV3vaZaomTRGcbw@Nn_VLk@F5y@H9@@Jq@taDI_@@tzxzVl 
0G1_@@@T@t@vz@lt@@z@C064A0K150wPvCu@txrzUlt205K1W2f0GHK0dOl@@lsS 
d2AmfB1Mgb0BpS8dk9DG@@xlzUlN@x@__lt@vz_lF3W13CqLq7Qz_X11lzJe0G5R 
YMVnPWt@@_A0C8AWD2G9Xo0C805RojFM@x@@X20LG1Ws@@Fp8_GW2@CkJ2_l@xz@ 
@@h@@@t_@tV6Xvu@@x@IW4w@tft5DeRN3w@@@_@foxzVll@xVzV@t_xz_h0GXK0a 
eDP3y@@Vxl@@V1W2y@t@vz@@FFW7yzV@@a_@Dn@@A8IaEo3N28K50AyBm3jYCJg@ 
Qzro3Fp@VO9ov@@lV1W2yzVlx@x@sV@tVmI64MIE1tOGtKKTRJ2fK4LG6yiG@@9y 
@VuG4w@@@p@z@l@@xTz@@t_@@_Jz8XmXiPMS6y@@@TpFvdxbGO9Nro@@dS@V9vdt 
FY1w@_@h0GXK0em@lt@bUCK606nxbW@@_lA0K850AY2WXrrI8FWA00; 
 
BOOLEAN A22[65920] = @ 
m0200u@@@@3u@@@t@@xVEXG8czGOOYqZsOJsOBsEnz@@V80HO0JXgb@@_V_z@@X0 
3T@3_@V@22R46aOxzVsz@hl@hEhhebp_O3i@@@720HO0C9oNvV@lt@@z@mD3_@@@ 
22Uu@_Xm0FokTo@@lVtk711WSlFcll@@W0WC0y@X7U420Ym0mqNa@QfY_b4cVbGI 
QflYT@hVu0uA7@G01F220o@u@xNpf@@@wW0Wi7@@XM@Nqo@x1AXx@@gGMsOFGXy@ 
@N5_oI_@Vjj@zs7063ktwlyt@_N2PE12yGm0IaLv3_@@jxgqZW009S7v260iVgWn 
T@@@NLRu@@lxdgzy@@_@ts3X0yGO0mSLw@Lj_@Kj@7rx@F5@VJp@lKjb1yzG8VI4 
4060000E0OW60C000000_@@6lP8809210YW009O03000je5KJ4050mt0F4EW4aMw 
@Pz@@7204n3k1fztQ_@@@_NQfPbT_7GOB_@z@310YW00v3R624u1tzVzwj_@xGF1 
@tVz5oAHmv2v@@fILKL5ggYALv@N_wBlK5LLbcUQw@@@7Ad1z@V@_l@@tUVZolBA 
yW4KrLNngwyAyW4y@@zF2u3_@@x7e@1@@V@Zo7OO39eA@w3tLTLO39u@@l_3uMy@ 
@V@h@3ZfQf@@dRrpTzukUkLF@rh@wvMzSNlx_wEVTtNkxhxyrNVvklkpN@@F; 
 
ENDDATA; 
DATA TEMP_DATA; 
INTEGER A0[32] = 
95, 23, 23, 23, 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[32] = 
3144, 16, 16, 16,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[32] = 
0, 0, 0, 0, 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[32] = 
0, 0, 0, 0, 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[32] = 
0, 0, 0, 0, 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[32] = 
3144, 18, 18, 18,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[32] = 
32, 0, 0, 0, 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[32] = 
0, 16, 8, 4, 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[32] = 
512, 0, 0, 0, 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[19] = 
294, 0, 0, 0, 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 * 31] = 
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 1, 0, 98, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (39 << 16) + 0, 233, 176, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (23 << 16) + 0, 237, 176, 
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, (7 << 16) + 6, 113, 137, 
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 A31[640]; 
BOOLEAN A57[640]; 
BOOLEAN A45[640]; 
BOOLEAN A29[640]; 
BOOLEAN A30[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 V181; 
INTEGER V18; 
INTEGER V19; 
INTEGER V20; 
INTEGER V21; 
INTEGER V88; 
INTEGER V94; 
INTEGER V22; 
INTEGER V179; 
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 L0 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 L7 USES TEMP_DATA; 
V100 = 1; 
ENDPROC; 
PROCEDURE L8 USES TEMP_DATA; 
V108 = 1; 
ENDPROC; 
PROCEDURE L11 USES TEMP_DATA; 
V104 = 1; 
ENDPROC; 
PROCEDURE L12 USES TEMP_DATA; 
V102 = 1; 
ENDPROC; 
PROCEDURE L15 USES DEVICE_DATA, TEMP_DATA, L22, L49, 
L149, 
L150, L105, L82, L126, 
L319, 
L67, L60, L42; 
CALL L22; 
V3 = 0; 
V4 = 1; 
CALL L49; 
IF (V2 == 0) THEN GOTO L17; 
IF (V42 == 0) THEN CALL L150; 
IF ((V42 == 0) && V102) THEN CALL L105; 
IF ((V42 == 0) && V100) THEN CALL L149; 
IF ((V42 == 0) && V103) THEN CALL L82; 
IF ((V42 == 0) && V108) THEN CALL L126; 
IF ((V42 == 0) && V107) THEN CALL L319; 
L17: 
IF ((V42 == 0) && V104) THEN CALL L67; 
CALL L42; 
EXIT V42; 
ENDPROC; 
PROCEDURE L22 USES DEVICE_DATA, TEMP_DATA, 
L53, L338, L55; 
INTEGER V66 = 0; 
INTEGER V90 = 0; 
INTEGER V95 = 0; 
INTEGER V67 = 0; 
INTEGER V180 = 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 L41; 
V21 = 0; 
FOR i = 0 TO V1; 
j = 1; 
k = 1; 
IF (((A13[i] & 1) == 0) || 
((A13[i] & 4) == 0)) THEN GOTO L23; 
V2 = A12[i]; 
j = A1[V2]; 
k = A5[V2]; 
L23: 
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 L24; 
V2 = A12[j]; 
FOR k = 0 TO (A1[V2] - 1); 
IF ((k % 5) == i) THEN A26[l] = 1; 
l = l + 1; 
NEXT k; 
GOTO L25; 
L24: 
l = l + 1; 
L25: 
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 L26; 
V2 = A12[i]; 
j = A1[V2]; 
k = A5[V2]; 
IF ((V2 >= 23) && (V2 <= 27)) THEN 
V96 = 95; 
L26: 
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 L27; 
V2 = A12[i]; 
j = A1[V2]; 
k = A5[V2]; 
L27: 
V94 = V94 + j; 
V95 = V95 + k; 
NEXT i; 
V179 = 0; 
FOR i = 0 TO V1; 
j = 1; 
k = 1; 
IF (((A13[i] & 2048) == 0) || 
((A13[i] & 4) == 0)) THEN GOTO L28; 
V2 = A12[i]; 
j = A1[V2]; 
k = A5[V2]; 
L28: 
V179 = V179 + j; 
V180 = V180 + 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 L29; 
V2 = A12[i]; 
j = A1[V2]; 
k = A5[V2]; 
L29: 
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 L30; 
V2 = A12[j]; 
FOR k = 0 TO (A1[V2] - 1); 
IF ((k % 5) == i) THEN A27[l] = 1; 
l = l + 1; 
NEXT k; 
GOTO L31; 
L30: 
l = l + 1; 
L31: 
NEXT j; 
NEXT i; 
V16 = 0; 
FOR i = 0 TO V1; 
j = 1; 
IF (((A13[i] & 1) == 0) || 
((A13[i] & 4) == 0)) THEN GOTO L32; 
V2 = A12[i]; 
j = A0[V2]; 
L32: 
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 L33; 
V2 = A12[i]; 
j = A0[V2]; 
L33: 
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 L34; 
V2 = A12[i]; 
j = A0[V2]; 
L34: 
V17 = V17 + j; 
NEXT i; 
V181 = 0; 
FOR i = 0 TO V1; 
j = 1; 
IF (((A13[i] & 2048) == 0) || 
((A13[i] & 4) == 0)) THEN GOTO L35; 
V2 = A12[i]; 
j = A0[V2]; 
L35: 
V181 = V181 + j; 
NEXT i; 
V18 = V17; 
IF (V16 > V18) THEN V18 = V16; 
IF (V87 > V18) THEN V18 = V87; 
IF (V181 > V18) THEN V18 = V181; 
V20 = 32 + V1; 
IF ((2 * 5 * 5 * V67) > V20) THEN 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; 
IF (V180 > V20) THEN V20 = V180; 
V19 = V18; 
IF (V21 > V19) THEN V19 = V21; 
IF (V88 > V19) THEN V19 = V88; 
IF (V94 > V19) THEN V19 = V94; 
IF (V179 > V19) THEN V19 = V179; 
IF (V20 > V19) THEN V19 = V20; 
FOR i = 0 TO (V19 - 1); 
A29[i] = 0; 
A30[i] = 1; 
NEXT i; 
V33 = 0; 
FOR i = 0 TO V1; 
IF (((A13[i] & 2) == 0) || 
((A13[i] & 4) == 0)) THEN GOTO L36; 
V2 = A12[i]; 
IF (V33 < A7[V2]) THEN 
V33 = A7[V2]; 
L36: 
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 L37; 
V2 = A12[i]; 
A52[i] = 
A5[V2] - (80 * A6[V2]); 
L37: 
NEXT i; 
CALL L53; 
IRSTOP IRPAUSE; 
DRSTOP IDLE; 
STATE IDLE; 
IF (V101) THEN CALL L55; 
IF (V42 != 0) THEN GOTO L41; 
FOR i = 0 TO V1; 
IF (((A17[i] & (1 | 2)) != 0) && 
((A17[i] & 4) != 0) && 
((A17[i] & 8) == 0)) THEN 
V4 = 1 | 2; 
NEXT i; 
IF (V4 != (1 | 2)) THEN 
GOTO L38; 
A18[9..0] = $071; 
CALL L338; 
WAIT 10000 USEC; 
L38: 
FOR i = 0 TO V1; 
IF (((A17[i] & 256) != 0) && 
((A17[i] & 4) != 0) && 
((A17[i] & 8) == 0)) THEN 
V4 = 256; 
NEXT i; 
IF (V4 != 256) THEN 
GOTO L39; 
A18[9..0] = $332; 
CALL L338; 
WAIT 10000 USEC; 
L39: 
FOR i = 0 TO V1; 
IF (((A17[i] & 512) != 0) && 
((A17[i] & 4) != 0) && 
((A17[i] & 8) == 0)) THEN 
V4 = 512; 
NEXT i; 
IF (V4 != 512) THEN 
GOTO L40; 
A18[9..0] = $044; 
CALL L338; 
WAIT 10000 USEC; 
L40: 
FOR i = 0 TO V1; 
IF (((A17[i] & 2048) != 0) && 
((A17[i] & 4) != 0) && 
((A17[i] & 8) == 0)) THEN 
V4 = 2048; 
NEXT i; 
IF (V4 != 2048) THEN 
GOTO L41; 
IF (V103 || V102) THEN V38 = 1; 
V38 = 0; 
WAIT 10000 USEC; 
L41: 
ENDPROC; 
PROCEDURE L42 USES DEVICE_DATA, TEMP_DATA, L54, L338, L55, L60 
; 
IF (V42 == 1) THEN GOTO L48; 
CALL L54; 
IF (!V76 || (V42 != 0)) THEN GOTO L43; 
A18[9..0] = $003; 
V4 = 32; 
CALL L338; 
L43: 
FOR i = 0 TO V1; 
IF (((A17[i] & (1 | 2)) != 0) && 
((A17[i] & 4) != 0) && 
((A17[i] & 8) == 0)) THEN 
V4 = 1 | 2; 
NEXT i; 
IF (V4 != (1 | 2)) THEN 
GOTO L44; 
A18[9..0] = $079; 
CALL L338; 
WAIT 10000 USEC; 
L44: 
FOR i = 0 TO V1; 
IF (((A17[i] & 256) != 0) && 
((A17[i] & 4) != 0) && 
((A17[i] & 8) == 0)) THEN 
V4 = 256; 
NEXT i; 
IF (V4 != 256) THEN 
GOTO L45; 
A18[9..0] = $006; 
CALL L338; 
L45: 
FOR i = 0 TO V1; 
IF (((A17[i] & (512 | 2048)) != 0) && 
((A17[i] & 4) != 0) && 
((A17[i] & 8) == 0)) THEN 
V4 = 512 | 2048; 
NEXT i; 
IF (V4 != (512 | 2048)) THEN 
GOTO L46; 
A18[9..0] = $04A; 
CALL L338; 
WAIT 10000 USEC; 
L46: 
IF (!V76 || (V42 != 0)) THEN GOTO L47; 
V80 = 0; 
CALL L55; 
IF (V42 != 0) THEN V42 = 10; 
IF (V42 != 0) THEN GOTO L48; 
L47: 
A18[9..0] = $3FF; 
CALL L338; 
IF (V105 && (V42 == 0)) THEN CALL L60; 
L48: 
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) && (V103)) 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) && (V101)) THEN 
PRINT "Device configuration failure"; 
IF (V42 == 4) THEN 
PRINT "Unable to read USERCODE/UES from device #", V84 + 1; 
ENDPROC; 
PROCEDURE L49 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 L50; 
V2 = 0; 
V3 = 0; 
GOTO L52; 
L50: 
V2 = A12[j - 1]; 
V3 = j; 
IF ((V4 == 32) || (V4 == 256) || 
(V4 == 512) || (V4 == 2048)) 
THEN GOTO L52; 
IF (V58) THEN GOTO L51; 
A41[9..0] = $066; 
GOTO L52; 
L51: 
A41[9..0] = $006; 
L52: 
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 L53 USES DEVICE_DATA, TEMP_DATA, L54 
, L334 
; 
CALL L54; 
IF (V32 == 0) THEN CALL L334; 
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 L54 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 | 2048)) != 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 L55 USES DEVICE_DATA, TEMP_DATA, L54; 
INTEGER V79 = 32 * V0; 
BOOLEAN A46[V79]; 
INTEGER A47[8]; 
INTEGER V145; 
CALL L54; 
STATE IDLE; 
V27 = 0; 
FOR i = 0 TO V1; 
A18[9..0] = A39[(A25[i] - 1)..0]; 
IF ((A17[i] & (1 | 2 | 256 | 512 | 2048)) != 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 L56; 
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 L57; 
L56: 
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; 
L57: 
V27 = V27 + 1; 
NEXT i; 
V27 = 0; 
FOR i = 0 TO V1; 
IF(A61[i] != 0) THEN GOTO L58; 
IF(A46[V27] != 0) THEN 
V42 = 6; 
V27 = V27 + 1; 
NEXT i; 
GOTO L59; 
L58: 
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; 
L59: 
ENDPROC; 
PROCEDURE L60 USES DEVICE_DATA, TEMP_DATA, L54, L338, L65; 
j = 0; 
k = V1; 
V84 = V84 - 1; 
IF (V84 == -1) THEN GOTO L61; 
IF ((V84 < 0) || (V84 > V1) || 
(((A17[V1 - V84] & 256) == 0) && 
((A17[V1 - V84] & 32) == 0) && 
((A17[V1 - V84] & 512) == 0) && 
((A17[V1 - V84] & 2048) == 0))) THEN 
V42 = 4; 
IF (V42 != 0) THEN GOTO L64; 
j = V84; 
k = V84; 
L61: 
CALL L54; 
FOR i = 0 TO V1; 
IF (((A17[i] & 256) != 0) && 
((A17[i] & 4) != 0) && 
((A17[i] & 8) == 0)) THEN 
V4 = 256; 
NEXT i; 
IF (V4 != 256) THEN 
GOTO L62; 
A18[9..0] = $006; 
CALL L338; 
WAIT 10000 USEC; 
L62: 
FOR i = 0 TO V1; 
IF (((A17[i] & (512 | 2048)) != 0) && 
((A17[i] & 4) != 0) && 
((A17[i] & 8) == 0)) THEN 
V4 = 512 | 2048; 
NEXT i; 
IF (V4 != (512 | 2048)) THEN 
GOTO L63; 
A18[9..0] = $04A; 
CALL L338; 
WAIT 10000 USEC; 
L63: 
A18[9..0] = $3FF; 
CALL L338; 
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 L54; 
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 (((A17[V1 - V84] & 2048) != 0) && 
((A17[V1 - V84] & 4) != 0)) THEN 
V4 = 2048; 
IF (V4 != 0) THEN CALL L65; 
POP k; POP j; POP i; 
NEXT i; 
L64: 
V84 = 0; 
ENDPROC; 
PROCEDURE L65 USES DEVICE_DATA, TEMP_DATA, L338, L66; 
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) || (V4 == 2048)) THEN 
A18[9..0] = $079; 
IF (V4 == 32) THEN 
A18[9..0] = $007; 
CALL L338; 
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; 
if (!(((V4 == 512) || (V4 == 2048)) && V103)) THEN 
CALL L66; 
ENDPROC; 
PROCEDURE L66 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 L67 USES DEVICE_DATA, TEMP_DATA, L54 
, L72 
; 
j = 0; 
k = V1; 
V34 = 1; 
V29 = 1; 
V84 = V84 - 1; 
IF (V84 == -1) THEN GOTO L69; 
IF ((V84 < 0) || (V84 > V1) || 
(((A17[V1 - V84] & 1) == 0) && 
((A17[V1 - V84] & 2) == 0))) THEN 
V42 = 4; 
IF (V42 != 0) THEN GOTO L70; 
L68: 
j = V84; 
k = V84; 
L69: 
FOR i = j TO k; 
V84 = i; 
PUSH i; PUSH j; PUSH k; 
CALL L54; 
V86 = 0; 
IF (((A17[V1 - V84] & 1) != 0) && 
((A17[V1 - V84] & 4) != 0)) THEN 
CALL L72; 
POP k; POP j; POP i; 
NEXT i; 
L70: 
V84 = 0; 
ENDPROC; 
PROCEDURE L72 USES DEVICE_DATA, TEMP_DATA, L338, L356, L273, L215, L77; 
V4 = 1; 
A18[9..0] = $016; 
CALL L338; 
DRSCAN V21, A26[(V21 - 1)..0]; 
A18[9..0] = $01A; 
CALL L338; 
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 L356; 
V2 = A12[j]; 
V27 = (V2 - 1) * 2; 
i = A49[V27]; 
V48 = A49[V27 + 1]; 
V46 = A6[V2]; 
IF (V48 < (V46 >> 1)) THEN GOTO L73; 
V48 = V46 - V48 - 1; 
L73: 
V27 = j + V24 + (16 * V48) + 12; 
FOR V11 = i TO i + 15; 
PUSH i; 
PUSH V27; 
CALL L273; 
CALL L215; 
POP V27; 
POP i; 
IF (A31[V27]) THEN 
V86 = V86 | (1 << (V11 - i)); 
NEXT V11; 
CALL L77; 
ENDPROC; 
PROCEDURE L77 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 L82 USES DEVICE_DATA, TEMP_DATA, L53, L382, L273, L302; 
PRINT "programming 7K device(s)..."; 
CALL L53; 
CALL L382; 
FOR V11 = 1 TO 107; 
CALL L273; 
CALL L302; 
NEXT V11; 
V49 = 1; 
FOR V11 = 109 TO (V32 - 1); 
CALL L273; 
CALL L302; 
NEXT V11; 
ENDPROC; 
PROCEDURE L99 USES DEVICE_DATA, TEMP_DATA, L338; 
A18[9..0] = A41[9..0]; 
CALL L338; 
A18[9..0] = A40[9..0]; 
CALL L338; 
A18[9..0] = $00A; 
CALL L338; 
IF (V58) THEN V56 = 1; 
WAIT (V38 * 1000) USEC; 
IF (V58) THEN GOTO L100; 
IF (V82) THEN V83 = 20000; 
A18[9..0] = $06A; 
CALL L338; 
V83 = 5; 
A18[9..0] = $06E; 
CALL L338; 
L100: 
A18[9..0] = A44[9..0]; 
CALL L338; 
ENDPROC; 
PROCEDURE L101 USES DEVICE_DATA, TEMP_DATA, L338; 
A18[9..0] = A41[9..0]; 
CALL L338; 
A18[9..0] = $00A; 
CALL L338; 
IF (V58) THEN V56 = 1; 
WAIT (V37 * 100) USEC; 
IF (V58) THEN GOTO L102; 
A18[9..0] = $06E; 
CALL L338; 
L102: 
A18[9..0] = A44[9..0]; 
CALL L338; 
ENDPROC; 
PROCEDURE L103 USES DEVICE_DATA, TEMP_DATA, L54; 
CALL L54; 
FOR i = 0 TO V1; 
IF (((A17[i] & 1) == 0) || ((A17[i] & 4) == 0)) 
THEN GOTO L104; 
IF (V82 && ((A48[i] & 128) == 0)) 
THEN A17[i] = A17[i] | 8; 
IF (!V82 && ((A48[i] & 128) != 0)) 
THEN A17[i] = A17[i] | 8; 
L104: 
NEXT i; 
IF (V82) THEN A41[9..0] = $066; 
IF (!V82 && V58) THEN A41[9..0] = $006; 
ENDPROC; 
PROCEDURE L105 USES DEVICE_DATA, TEMP_DATA, L338, L103, L99, L273, L302; 
A18[9..0] = $012; 
CALL L338; 
A18[9..0] = $01E; 
CALL L338; 
DRSCAN V16, A30[(V16 - 1)..0]; 
L106: 
CALL L103; 
b = V58; 
IF (V82) THEN V58 = 0; 
CALL L99; 
V58 = b; 
IF (!V82) THEN GOTO L107; 
V82 = 0; 
GOTO L106; 
L107: 
A18[9..0] = $01E; 
CALL L338; 
DRSCAN V16, A29[(V16 - 1)..0]; 
IF (V103) THEN GOTO L108; 
V75 = 1; 
FOR V11 = 102 TO 103; 
CALL L273; 
CALL L302; 
NEXT V11; 
V75 = 0; 
L108: 
ENDPROC; 
PROCEDURE L126 USES DEVICE_DATA, TEMP_DATA, L53, L382, L368, L273, L215; 
IF (V74) THEN PRINT "blank checking 7K device(s)..."; 
IF (!V74) THEN PRINT "verifying 7K device(s)..."; 
CALL L53; 
CALL L382; 
CALL L368; 
FOR V11 = 1 TO 101; 
CALL L273; 
CALL L215; 
IF (V42 != 0) THEN V11 = 101; 
NEXT V11; 
IF (V42 != 0) THEN GOTO L128; 
IF (V74 && !V103) THEN GOTO L127; 
FOR V11 = 102 TO 103; 
CALL L273; 
CALL L215; 
IF (V42 != 0) THEN V11 = 103; 
NEXT V11; 
L127: 
IF (V42 != 0) THEN GOTO L128; 
FOR V11 = 104 TO 107; 
CALL L273; 
CALL L215; 
IF (V42 != 0) THEN V11 = 107; 
NEXT V11; 
IF (V42 != 0) THEN GOTO L128; 
V45 = 1; 
FOR V11 = 109 TO 113; 
CALL L273; 
CALL L215; 
IF (V42 != 0) THEN V11 = 113; 
NEXT V11; 
IF (V42 != 0) THEN GOTO L128; 
V45 = 0; 
FOR V11 = 114 TO (V32 - 1); 
CALL L273; 
CALL L215; 
IF (V42 != 0) THEN V11 = V32 - 1; 
NEXT V11; 
L128: 
ENDPROC; 
PROCEDURE L149 USES DEVICE_DATA, TEMP_DATA 
, L126 
; 
V74 = 1; 
IF (V4 == 1) THEN CALL L126; 
V74 = 0; 
ENDPROC; 
PROCEDURE L150 USES DEVICE_DATA, TEMP_DATA, L53, L273, L215, L356, L54; 
CALL L53; 
V37 = 100; 
V38 = 100; 
V29 = 1; 
V11 = 0; 
CALL L273; 
V34 = 1; 
IF (USE_FIXED_ALGORITHM) THEN GOTO L151; 
CALL L215; 
GOTO L152; 
L151: 
CALL L356; 
FOR i = 0 TO V20 - 1; 
A31[i] = 0; 
A57[i] = 0; 
NEXT i; 
L152: 
FOR i = V1 TO 0 STEP -1; 
A48[i] = 0; 
IF (((A17[i] & 1) == 0) || 
((A17[i] & 4) == 0)) THEN GOTO L162; 
V68 = 0; 
FOR j = 0 TO i; 
V26 = 0; 
V2 = A12[j]; 
IF (i == j) THEN GOTO L153; 
V26 = 1; 
IF (((A17[j] & 1) == 0) || 
((A17[j] & 4) == 0)) THEN GOTO L153; 
V26 = A8[V2] >> 1; 
L153: 
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 L154; 
V69 = 1; 
V48 = V46 - V48 - 1; 
L154: 
V27 = V68 + (((2 * V47) + V69) * V24) + 
(16 * V48) + (8 * (~j & 1)); 
FOR k = 0 TO 7; 
IF (USE_FIXED_ALGORITHM) THEN GOTO L155; 
IF (A31[V27 + k]) THEN 
A16[j] = A16[j] | (1 << k); 
GOTO L156; 
L155: 
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; 
L156: 
NEXT k; 
IF (USE_FIXED_ALGORITHM) THEN 
A16[j] = A54[j << 1]; 
NEXT j; 
IF (!USE_FIXED_ALGORITHM) THEN GOTO L157; 
PUSH i; 
CALL L215; 
POP i; 
IF (V39) THEN V42 = 6; 
L157: 
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 L162; 
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 L161; 
V40 = 1; 
IF ((A11[V27 + 2] & 1) != 1) THEN 
GOTO L158; 
V72 = A14[A16[8] & 31]; 
V73 = A15[(A16[8] >> 5) & 7]; 
L158: 
IF ((A11[V27 + 2] & 2) != 2) THEN 
GOTO L159; 
k = 14; 
IF (V2 == 2) THEN k = 11; 
V72 = A14[((A16[k] >> 3) & 31) + 32]; 
V73 = A15[(A16[k] & 7) + 8]; 
L159: 
IF ((A11[V27 + 2] & 4) != 4) THEN 
GOTO L160; 
V72 = 500; 
V73 = 500; 
L160: 
IF ((A11[V27 + 2] & 128) != 128) THEN 
GOTO L161; 
V82 = 1; 
A48[i] = A48[i] | 128; 
L161: 
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; 
L162: 
NEXT i; 
IF ((V42 == 0) && V82) THEN CALL L54; 
ENDPROC; 
PROCEDURE L211 USES DEVICE_DATA, TEMP_DATA, L338; 
A18[9..0] = A19[9..0]; 
CALL L338; 
WAIT 15 USEC; 
A18[9..0] = A20[9..0]; 
CALL L338; 
IF (V34 == 0) THEN GOTO L212; 
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 L214; 
L212: 
IF (V74) THEN GOTO L213; 
DRSCAN V24, A29[(V24 - 1)..0], COMPARE A22[V31..V30], 
A30[(V24 - 1)..0], V40; 
GOTO L214; 
L213: 
DRSCAN V24, A29[(V24 - 1)..0], 
COMPARE A30[(V24 - 1)..0], A30[(V24 - 1)..0], 
V40; 
L214: 
IF (!V40) THEN V39 = 1; 
ENDPROC; 
PROCEDURE L215 USES DEVICE_DATA, TEMP_DATA, L338, L356, L211, L370, L366, L368; 
V39 = 0; 
V40 = 1; 
IF (V10 > 89) THEN GOTO L216; 
A18[9..0] = $016; 
CALL L338; 
DRSCAN V21, A26[(V21 - 1)..0]; 
A18[9..0] = $01A; 
CALL L338; 
DRSCAN V21, A26[(V21 - 1)..0]; 
L216: 
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 L356; 
IF (V34 == 1) THEN GOTO L217; 
V30 = V15; 
V31 = V30 + (V24 - 1); 
GOTO L218; 
L217: 
V30 = 0; 
V31 = V24 - 1; 
L218: 
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 L211; 
IF (V29 != 0) THEN GOTO L219; 
A19[9..0] = $032; 
CALL L211; 
A19[9..0] = $036; 
L219: 
V30 = V30 + V24; 
V31 = V31 + V24; 
IF (!V45) THEN GOTO L220; 
b = 0; 
CALL L370; 
GOTO L221; 
L220: 
IF (V10 != V51) THEN GOTO L221; 
V44 = 1; 
b = 0; 
CALL L366; 
L221: 
A20[9..0] = $026; 
CALL L211; 
IF (V29 != 0) THEN GOTO L222; 
A19[9..0] = $032; 
CALL L211; 
A19[9..0] = $036; 
L222: 
V30 = V30 + V24; 
V31 = V31 + V24; 
IF (!V45) THEN GOTO L223; 
b = 1; 
CALL L370; 
GOTO L224; 
L223: 
IF (V10 != V51) THEN GOTO L224; 
b = 1; 
CALL L366; 
V44 = 0; 
CALL L368; 
L224: 
IF (V81) THEN GOTO L226; 
A18[9..0] = $016; 
CALL L338; 
POP i; 
DRSCAN V21, A26[(((i + 2) * V21) - 1)..((i + 1) * V21)]; 
PUSH i; 
A18[9..0] = $01A; 
CALL L338; 
POP i; 
DRSCAN V21, A26[(((i + 2) * V21) - 1)..((i + 1) * V21)]; 
PUSH i; 
L226: 
POP i; 
NEXT i; 
V15 = V30; 
IF (!V39 || (V34 == 1)) THEN 
GOTO L227; 
IF (V74) THEN V42 = 9; 
IF (!V74) THEN V42 = 11; 
L227: 
ENDPROC; 
PROCEDURE L273 USES DEVICE_DATA, TEMP_DATA, L338, L382; 
V30 = 0; 
FOR j = 0 TO V1; 
V31 = V30; 
IF (((A17[j] & 1) == 0) || 
((A17[j] & 4) == 0) || 
((A17[j] & 8) != 0)) THEN GOTO L275; 
V2 = A12[j]; 
IF (V11 >= (A0[V2] - 108)) THEN GOTO L274; 
V31 = V31 + (A0[V2] - 1); 
A28[V31 - V11] = 1; 
IF (V11 < 108) THEN A28[(107 + V30) - V11] = 1; 
GOTO L275; 
L274: 
IF ((A17[j] & 8) == 0) THEN V49 = 1; 
A17[j] = A17[j] | 8; 
L275: 
V30 = V31 + 1; 
NEXT j; 
A18[9..0] = $01E; 
CALL L338; 
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 L276; 
V31 = V31 + (A0[V2] - 1); 
A28[V31 - V11] = 0; 
IF (V11 < 108) THEN A28[(107 + V30) - V11] = 0; 
L276: 
V30 = V31 + 1; 
NEXT j; 
IF (V49 && (V11 == V52)) THEN 
CALL L382; 
V10 = V11; 
ENDPROC; 
PROCEDURE L302 USES DEVICE_DATA, TEMP_DATA, L356, L338, L101; 
V30 = V14; 
IF (V49) THEN CALL L356; 
V31 = V30 + (V23 - 1); 
IF (V75) THEN GOTO L303; 
A18[9..0] = $016; 
CALL L338; 
DRSCAN V23, A21[V31..V30]; 
V30 = V30 + V23; 
V31 = V31 + V23; 
A18[9..0] = $01A; 
CALL L338; 
DRSCAN V23, A21[V31..V30]; 
V30 = V30 + V23; 
V31 = V31 + V23; 
GOTO L304; 
L303: 
A18[9..0] = $016; 
CALL L338; 
DRSCAN V23, A29[(V23 - 1)..0]; 
A18[9..0] = $01A; 
CALL L338; 
DRSCAN V23, A29[(V23 - 1)..0]; 
L304: 
CALL L101; 
V14 = V30; 
ENDPROC; 
PROCEDURE L319 USES DEVICE_DATA, TEMP_DATA, L53, L356, L338 
, L273, L302 
; 
IF (V107 == 0) THEN GOTO L333; 
CALL L53; 
FOR i = 0 TO V1; 
IF (((A17[i] & V4) == 0) || 
((A17[i] & 4) == 0)) THEN GOTO L320; 
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; 
L320: 
NEXT i; 
IF (!V106 && (V75 == 0)) THEN 
GOTO L333; 
IF (V106 && (V75 == 0)) THEN 
GOTO L325; 
IF (V4 != 1) THEN GOTO L321; 
V11 = 108; 
CALL L273; 
CALL L302; 
GOTO L325; 
L321: 
V11 = 0; 
L325: 
IF (!V106) THEN GOTO L333; 
IF (V4 == 1) THEN 
A18[9..0] = $03E; 
IF ((V4 == 2) || (V4 == 256)) THEN 
A18[9..0] = $3FF; 
CALL L338; 
CALL L53; 
V75 = 0; 
FOR i = 0 TO V1; 
IF (((A17[i] & V4) == 0) || 
((A17[i] & 4) == 0)) THEN GOTO L328; 
IF ((A17[i] & 16) != 0) THEN GOTO L326; 
A17[i] = A17[i] | 16; 
GOTO L327; 
L326: 
A17[i] = A17[i] & ~16; 
L327: 
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; 
L328: 
NEXT i; 
IF (V75 == 0) THEN GOTO L333; 
IF (V4 != 1) THEN GOTO L329; 
V11 = 108; 
CALL L273; 
CALL L302; 
GOTO L333; 
L329: 
V11 = 0; 
L333: 
V75 = 0; 
V44 = 0; 
ENDPROC; 
PROCEDURE L334 USES DEVICE_DATA, TEMP_DATA 
, L335 
; 
IF (V4 == 1) THEN CALL L335; 
ENDPROC; 
PROCEDURE L335 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 L338 USES DEVICE_DATA, TEMP_DATA; 
V41 = 0; 
V27 = 0; 
IF (!V56) THEN GOTO L339; 
V56 = 0; 
V41 = 50; 
IF (!USE_EXTEND_IR_DELAY_METHOD) THEN GOTO L339; 
V27 = 50; 
A32[49..0] = A30[49..0]; 
L339: 
FOR i = 0 TO V1; 
IF ((A17[i] & 8) != 0) THEN GOTO L340; 
IF (((A17[i] & V4) != 0) && 
((A17[i] & 4) != 0)) THEN GOTO L342; 
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 L343; 
L340: 
IF ((A17[i] & 2) != 0) THEN GOTO L341; 
A32[(V27 + 9)..V27] = $3FF; 
IF ((A17[i] & 1) != 0) THEN 
A32[(V27 + 9)..V27] = $03E; 
V27 = V27 + 10; 
GOTO L343; 
L341: 
IF (!V57) THEN GOTO L342; 
A32[(V27 + 9)..V27] = $02A; 
V27 = V27 + 10; 
GOTO L343; 
L342: 
l = 0; 
IF ((A18[20] == 1) && ((A17[i] & 64) != 0)) THEN 
l = 10; 
A32[(V27 + 9)..V27] = A18[(l + 9)..l]; 
V27 = V27 + 10; 
L343: 
NEXT i; 
IF ((V41 == 0) || USE_EXTEND_IR_DELAY_METHOD) THEN 
GOTO L344; 
STATE DRPAUSE; 
WAIT DRPAUSE, 5 USEC, DRPAUSE; 
L344: 
IRSCAN V27, A32[(V27 - 1)..0]; 
V57 = 0; 
WAIT IRPAUSE, V83 USEC, IRPAUSE; 
IF (V91) THEN GOTO L345; 
STATE IDLE; 
WAIT 3 CYCLES; 
L345: 
ENDPROC; 
PROCEDURE L356 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 L357; 
V2 = A12[i]; 
V25 = A1[V2]; 
V26 = A5[V2]; 
GOTO L358; 
L357: 
IF (V74) THEN A30[V24] = 0; 
L358: 
V23 = V23 + V25; 
V24 = V24 + V26; 
NEXT i; 
V49 = 0; 
ENDPROC; 
PROCEDURE L366 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 L367; 
V2 = A12[i]; 
k = k + (A5[V2] - 1); 
IF (V10 != A9[3 * (V2 - 1)]) THEN 
GOTO L367; 
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; 
L367: 
j = k + 1; 
NEXT i; 
ENDPROC; 
PROCEDURE L368 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 L369; 
V2 = A12[i]; 
IF (V51 >= A9[3 * (V2 - 1)]) THEN 
GOTO L369; 
IF (j > (A9[3 * (V2 - 1)] - V51)) THEN 
j = A9[3 * (V2 - 1)] - V51; 
L369: 
NEXT i; 
IF (j != 317) THEN V51 = V51 + j; 
IF (j == 317) THEN V51 = -1; 
ENDPROC; 
PROCEDURE L370 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 L371; 
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; 
L371: 
j = k + 1; 
NEXT i; 
ENDPROC; 
PROCEDURE L382 USES DEVICE_DATA, TEMP_DATA; 
j = 317; 
FOR i = 0 TO V1; 
IF (((A17[i] & 1) == 0) || 
((A17[i] & 4) == 0)) THEN GOTO L383; 
V2 = A12[i]; 
IF (V52 >= (A0[V2] - 108)) THEN 
GOTO L383; 
IF (j > A0[V2]) THEN j = A0[V2]; 
L383: 
NEXT i; 
IF (j != 317) THEN V52 = j - 108; 
IF (j == 317) THEN V52 = -1; 
ENDPROC; 
' END OF FILE 
CRC 6665;