⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 elec_lock.jam

📁 vhdl代码写的一个密码锁程序
💻 JAM
📖 第 1 页 / 共 2 页
字号:
' Copyright (C) 1988-1999 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.

NOTE "CREATOR" "POF to JAM converter Version 9.21 2/10/99";

NOTE "DEVICE" "EPM7064S";

NOTE "FILE" "elec_lock.pof";

'Device #1: EPM7064S - f:\test1_last\elec_lock.pof Thu Apr 05 03:44:24 2007

BOOLEAN A21[45760] = ACA
OP100Gh@Qr@Nhl@@@V@hjMQhM@PrQhfMBroUltl@zQFltxzqQjMK@bVPjKAbrQzN
q4eLBr6D1zWlNHPWsh@UVjsxwrQfyNh@JQz@t@@kVe9WIjspxz@DlsxTrUlMHb0j
_hL@VjM_y_xzZsQ5F6ydNxvzMlFAF4qAitRT65IurUlYtxrAKOGgrMJjMgbyUl@m
pWuXaeWa8Z1r@rQMlNhZs7OrIh5j64Z9e_xVoQjtBhrwFfy@bq@@@z@@A7o94KCe
zoltNhzkUjIhWw7lxrUUltwZsGq@zUPltxbzQjM8J2QhHRgrNhisQroIjMIAb@Ff
MA5bIfMMhzwTzLhvzUjCG5YwlrhW73X76erUlh@VzoUlthRbQjOf1X7FqxLQ56z8
ub0jMgzG16IhMB3UXeK@jA8d0dshzmu96ltxZlFG_@@t@whDjQhMyRrQXR3q@@MP
ltxryQjMGE1@rwlWMzyz@xV7pVWMxyUKjYm86nI3GjM@5zz8gI2QA5JgrTg8cIn6
fnWrQkUd@rQSENhZvuXMxyk_@tBRzUlnX6OhrUBwh2MgqUUl@@vrQl7CQWxxQDls
hrn89uRfrAgY4@slsnNReNhnmVfydBnzU@ltxXR9mIjcZpv@FkcpPvSkMMhzwS@N
hvzMjE4C4rU@NMxzQZW2HwrVVWd7nIFGB@QrlJhVGR2iQjLKhbQPltRt_UjNOv3Q
zxhflx@hNurEob1rxlNncXmIjqBIR3@hjInSI4_c0hLwBf_Bqq_tzzBKQ7tKXMht
UVfsxwrQjyJhlxQzIsV@@R4K5MhjwD@Nh5_oW@rIhurPYSzGjURLmj1Uhl@ZRImz
VjKSp3QhMxZmDmUlsRCS2HGd48ZK8z91yFeNhroVf_VWi1nrmeKBrAus9aQlNZHa
GqYJ2zLXsgrwOTa4DhYOYI4Vv1UftxX_29IZ4iMfFqwhGJlU@tlufT8o4erUhZ@@
zA8e4kMVtjtxN7da1bt@@H29nQltTuGIerMlh@@zIUltRCHLeMxr7bAXOd98jQzF
me4nhI8EK5X8h0rw@V0bG2bMHCYJYMWHKK9YmbGS86yRrwx@@@7@QhLaL6YrPG49
3YMGICH9YRWXhlQjOEX0ZnONyt@XnUl76hrV1UE9A0AX2Q1w@tUK56Y7Oc@lMBE_
VzkHRj2FCJ8NUy@rQ9p@Ft7QhLq2vy@@t7RYXWCd0ZzUN@@xH0vAyV@@3RjQJC_R
brMhcmrLams0vyUlcJhrI1m0yyQlOs6e_vVoQltBhrQ7dp1UyAdpnvSQ9bsftzFb
cpvrAQjpvuWFdipvSQEjMJxqFddMxSSQjMX2CmxTE7jMhTrVtNv1I8AW4wXVlo88
HyW725KHGXAitvyWFlsBJU2IxzUPbMxbCG2Abpvu0FdapvSQEbIHvKFddIvSSAbI
f0aWKQjJu16StJf5UmW83FWJhLIElt1yTAdG19ObpvaqAbdtx1FUbtxwzUbaIvLR
_dInxzA5boxSyWdJsxzUDlIhfygdtNfykEbM9vSE7upfSo8mGK03uKElhpvKAe03
uWVdIBOWof_EVbovf5g8oG5HBm8505uthzyUdtHhLQFA0AX229UWGOjMxuzEudJx
TEElJ9hqUz1FaWUut9xzUlkNfrI6eeW2W9ID6Y20bG1KH7yvLEY6eygltNfzkEjM
BxzUFuphzyUlpd2W1IxzUPjIvvzUudNxTkUlJBfrUzk@hrSUlMHhzEFf13ClMffz
wlpNhTUc3LmQjopxzmFloxzKFI8P032t8XOEImUlt1_zQFdtxz1CcGo06mhyUNdt
hKAZ9GfzUFh332P0lq7iH7yxL_H9uhqUF5W7YMm0MhLUvBOG836aXn3kNfq2Ku1d
txTfKOG_26a7G21MQWpxrgOJaGlMfKc36uyUldMhLUo5Caaf193aGm36OltxrTQj
MGQ9a_W1Ulpx3GXXKFE9p1325mWS3UGltharAl_83O82Y4IfmWi9CmvTUVs46Ojt
xDb23YHmWSNC8Pb7I6m0TQjMnIOGM7T5tW1v6OGuBIGhqAFlY4o88a8Dm8TaeeqU
d7jW11FaG6BCaDX11UaGM7CuzEjErZ42y8XWRO8Ab4IlvXWHIG7yxbyUlpCCO8HY
MoSrWK5C8G66I1WX4JCGdtfLs4IaSH2XCaGw89aOo3HLOWpxrQ0;

BOOLEAN A22[31680] = ACA
uz000u@@@@3u@@@t@fRc@@@D7Jc@iC3_rFG14RW@@dC_380060W4m@@x@@@Dg1Cx
t@z@@anV3p0lz3jS_@@OC0P_38004005mlBPW@z@VfRo@_@@@HY@MA3_wEA3y@@@
xVoyDK3y@S@x@@_t@@@lzItC@@z@_dCkPP6y7A3Yd1u7G0Yd1_@@@zz@@x@@JdP@
@k@@dC_RP6HXXWoW@V@@8RW@@@VavlboW@sZI5_l@@Z23i43_35CY26YdDyt@@7e
6uxVlFesu5Dm@fBMiQ0BpWFT3TCHh4y@@_z@@@vi@JdP@@ll@diGnZWYaWF1@@x@
1A3_@l@3FFmVlG7jO00010W2uV@l@@fH3acP3JW@z3P_RfC060Gbp@1gDy@@@5tm
00@@F@@@V@@@V_@@qPsV@n@@9BujnOqWWN2oW@_2UO4ACm@@lVWI5_RP4nICEA68
Pp_FMQWCul_0Q5_@@xZq6u@x@FgYX0_@t9j1_t@KPs@_x@@9ZlMcHeL205mlu@@@
z@_@x@V@EqQ0IypIPmF@Hw4yF9w76Pm@_@Vyr0@Ic@iC3_rFqn4Qz8gwHac1Idi@
ZqOm@X9SGe1nSmK6PW@@FTcz@__@To2yC0E@@Vme4y@@@3yOG6ydFeJv@XI3uFP_
7ZaW@@@V@@@l_6TpYHI8gAXO43YgCesq0@@RwnNL4HcG0b1_@i@bkP@x@@@E0r0G
d3lmu@@Di0@62wX_XEZeK60C004dQWx@@l883S@@a5Mknzb1Xb94BLnNa1_@@_zV
wcvx@@t@avFBJW@eq4y@@a4qQW0__tAN3yVlf7WQ0TjC3SsFqnh9WCF0CIx1fRM@
HQU43dW@_xV@Jc@aC3_ZNbG0_kJXd1czsqPs@@x@_9XFMc1_p7mmt4G2F020W10G
1il_@@Vx@@l_@xrakP@R@t@7PuRPuB3_dCzZNn0bPmV0QHItitz@@xZC@j8k9X8R
3YRI8yb1VJc@iC3s3fJml@J6@100020Gnhs45WIqi71yFmoCuDWNYu_4St@f73VY
qDw@0Pdm@@@t@avVC26Y78Hq23y@@a5jmWWWC4hhYe0C4Eq0000mHpUmm2ycZ9pV
Mc1mnyI8gN5Cx@_32QGy562CAHac4Y4M1TpvV@@_@_@@DzRwcv_@@t@amRCH6y@@
a47AXlN6u@YJFSe1qpoCGV@G7TC1av7Wn9Jmt@@VCH6a1_z7OiYPY6u@qDp_@@Vy
lJq@@a5YqWeKF4Oa1XRs@_@@tZNXHS89YO_GSe42WQWV@FTczx@nED8W26k@@@ZO
oGC262bomNJ3yVwcv_@@Fs962u@vy@@@R@V@t@xbEp_@Vl@FPusoCYmnGKK6y@l@
x@V@LwczVik4Y8bGKg4YMmWz@@lOYR4tW1@xFPytoCWV@G5pf5@_FqoXC@ZvaGWd
JY_eI88IyV@@7tr0TdkP_z@@zFPw57w1Q18015eo@xzVOO3aNwcvt@@t@aXTOf7m
5W04gYA@dt@HbDmMfRMq03YIz0y14WG6ZvVoyc5PmRGQ62a5Y@@dVz@@@Xl2n@U_
Rm032NRWVpvV@@p@_r@14GwaP81UXn@cX@_V02yYn_@@@z@F@xN@@L6@zlV_@N_V
s@_ll@z@@@30000000000O01a6P6GWNOCc0001vH@GY3IyrIP240000IW1000O00
I000GL032YdWls@@808a6F1@@@@ss8zy@@_NtqWP0CiqqW8084281@@r@kkx@yxr
zZ@xwtTt@f_k@V@@@@wld@zz@@xl@@sz@@dxxsV@x@@X2g8U03_@x_zV@Vh@lxNV
@Vj@@@Ry@z@kp@xzt@@xk@@t@@nlxlxV@@V@___@y@@sxx@_Fvk1_@@xrtt@x@@j
tz@Tl@x_UNtt@u@R@yt@@xxl@klW4_ll_yVV@x@w@dt@@Vjt4MEyW@jxE@@@@_d@
@r@@@vx_xtV@zl@z@F@@@@w_xkFcRm9O3S@@@x@x@tVVzj@@@Vz@ltk@@xz@@Vx_
@@7;

NOTE "JAM_VERSION" "1.0";
NOTE "ALG_VERSION" "2.9";
INTEGER A0[19] =
791, 237, 253, 261, 273, 281, 293, 317, 791, 791, 791, 791, 15, 95, 95, 95, 95, 95, 95;
INTEGER A1[19] =
3144, 80, 160, 240, 320, 400, 480, 640, 160, 200, 240, 280, 64, 0, 360, 0, 0, 0, 3144;
INTEGER A2[19] =
165, 0, 0, 0, 0, 0, 0, 0, 165, 165, 165, 165, 0, 0, 0, 0, 0, 0, 0;
INTEGER A3[19] =
112, 0, 0, 0, 0, 0, 0, 0, 64, 80, 96, 112, 0, 0, 0, 0, 0, 0, 0;
INTEGER A4[19] =
648, 0, 0, 0, 0, 0, 0, 0, 504, 552, 600, 648, 0, 0, 0, 0, 0, 0, 0;
INTEGER A5[19] =
3144, 16, 32, 48, 64, 80, 96, 128, 32, 40, 48, 56, 64, 0, 360, 0, 0, 0, 3144;
INTEGER A6[19] =
32, 2, 4, 6, 8, 10, 12, 16, 0, 0, 0, 0, 0, 2, 4, 8, 16, 24, 32;
INTEGER A7[19] =
7, 0, 0, 0, 0, 0, 0, 0, 4, 5, 6, 7, 0, 0, 0, 0, 0, 0, 0;
INTEGER A8[19] =
560, 32, 64, 96, 128, 160, 192, 256, 320, 400, 480, 560, 0, 32, 64, 128, 256, 384, 512;
INTEGER A9[21] =
126, 3, 1, 118, 1, 3, 0, 0, 0, 131, 3, 6, 0, 0, 0, 131, 3, 8, 131, 3, 12;
INTEGER A10[14] = 1, 1, 1, 3, 0, 0, 3, 6, 3, 8, 3, 8, 3, 12;
INTEGER A49[14] = 109, 1, 109, 3, 0, 0, 114, 6, 114, 8, 114, 8, 114, 12;
INTEGER A11[5 * 3 * 18] =
98, 0, 1, 98, 31, 4, 97, 31, 1, 0, 0, 0, 0, 0, 0,
96, 1, 0, 96, 2, 0, 97, 0, 1, 97, 1, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
96, 0, 0, 97, 0, 1, 96, 1, 2, 98, 0, 1, 98, 10,129,
98, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
96, 0, 0, 97, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
96, 2, 0, 97, 0, 1, 96, 1, 2, 98, 0, 1, 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, 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, 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, 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,
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, 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, 0, 0, 0, 0, 0, 0;
INTEGER A14[64] =
20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240,
260, 280, 300, 340, 360, 380, 400, 440, 480, 520, 560, 600,
660, 720, 800, 900, 1000, 1300, 1600, 2000,
3, 4, 5, 7, 9, 11, 12, 14, 16, 20, 24, 28,
36, 50, 64, 86, 116, 154, 200, 280, 360, 480, 640, 860,
1140, 1540, 2000, 2800, 3600, 4800, 6400, 8600;
INTEGER A15[16] =
10, 20, 30, 40, 60, 100, 200, 500,
100, 260, 660, 1660, 4200, 10800, 28000, 60000;
INTEGER A54[30] =
65, 255, 76, 255, 84, 255, 69, 255, 82, 255,
65, 255, 32, 0, 32, 0, 0, 0, 16, 31,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0;
' VARIABLES
INTEGER V0 = 1;
INTEGER A12[V0] = 2;
INTEGER A13[V0] = 1 | 4;
INTEGER A25[V0] = 10;
INTEGER V1 = V0 - 1;
INTEGER V2 = 0;
INTEGER V3 = 0;
INTEGER V4 = 1;
INTEGER A17[V0];
INTEGER A48[V0];
BOOLEAN b;
INTEGER i;
INTEGER j;
INTEGER k;
INTEGER l;
INTEGER V10;
INTEGER V11;
INTEGER V12;
INTEGER V13;
BOOLEAN A18[10];
BOOLEAN A19[10];
BOOLEAN A20[10];
INTEGER V14;
INTEGER V15;
INTEGER V16;
INTEGER V18;
INTEGER V19;
INTEGER V20;
INTEGER V21;
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 V58 = 1;
BOOLEAN A41[10];
BOOLEAN V81 = 0;
BOOLEAN V82 = 0;
INTEGER V83 = 5;
INTEGER V84 = 0;
INTEGER V86 = 0;
INTEGER V68 = 0;
INTEGER V69 = 0;
BOOLEAN DO_ERASE = 0;
BOOLEAN DO_BLANKCHECK = 0;
BOOLEAN DO_PROGRAM = 0;
BOOLEAN DO_VERIFY = 0;
BOOLEAN DO_READ_UES = 0;
BOOLEAN DO_SECURE = 0;
BOOLEAN DO_SECURE_ALL = 0;
BOOLEAN USE_EXTEND_IR_DELAY_METHOD = 0;
BOOLEAN USE_FIXED_ALGORITHM = 0;
L0:
CALL L6;
LET V4 = 1;
CALL L26;
IF (V2 == 0) THEN GOTO L1;
IF (V42 == 0) THEN CALL L94;
IF ((V42 == 0) && DO_ERASE) THEN CALL L69;
IF ((V42 == 0) && DO_BLANKCHECK) THEN CALL L93;
IF ((V42 == 0) && DO_PROGRAM) THEN CALL L56;
IF ((V42 == 0) && DO_VERIFY) THEN CALL L76;
IF ((V42 == 0) && DO_SECURE) THEN CALL L252;
L1:
IF ((V42 == 0) && DO_READ_UES) THEN CALL L42;
CALL L21;
EXIT V42;
L6:
INTEGER V66 = 0;
IF (DO_PROGRAM) THEN LET DO_ERASE = 1;
IF (DO_SECURE_ALL) THEN LET DO_SECURE = 1;
IF ((DO_ERASE || DO_BLANKCHECK) && !DO_PROGRAM &&
(DO_VERIFY || DO_SECURE)) THEN LET V42 = 1;
IF (V42 != 0) THEN GOTO L16;
LET V21 = 0;
FOR i = 0 TO V1;
LET j = 1;
LET k = 1;
IF (((A13[i] & 1) == 0) ||
((A13[i] & 4) == 0)) THEN GOTO L7;
LET V2 = A12[i];
LET j = A1[V2];
LET k = A5[V2];
L7:
LET V21 = V21 + j;
LET V66 = V66 + k;
NEXT i;
BOOLEAN A26[5 * V21];
LET 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;
LET V2 = A12[j];
FOR k = 0 TO (A1[V2] - 1);
IF ((k % 5) == i) THEN LET A26[l] = 1;
LET l = l + 1;
NEXT k;
GOTO L9;
L8:
LET l = l + 1;
L9:
NEXT j;
NEXT i;
LET V16 = 0;
FOR i = 0 TO V1;
LET j = 1;
IF (((A13[i] & 1) == 0) ||
((A13[i] & 4) == 0)) THEN GOTO L13;
LET V2 = A12[i];
LET j = A0[V2];
L13:
LET V16 = V16 + j;
NEXT i;
LET V18 = V16;
BOOLEAN A28[V18];
LET V19 = V18;
IF (V21 > V19) THEN LET V19 = V21;
BOOLEAN A29[V19];
BOOLEAN A30[V19];
FOR i = 0 TO (V19 - 1);
LET A30[i] = 1;
NEXT i;
LET V20 = 2 * 5 * V66;
BOOLEAN A31[V20];
BOOLEAN A57[V20];
LET V12 = 0;
LET V13 = 0;
FOR i = 0 TO V1;
LET V12 = V12 + A25[i];
IF (A25[i] > V13) THEN LET V13 = A25[i];
NEXT i;
BOOLEAN A32[V12 + 50];
BOOLEAN A39[V13];
BOOLEAN A33[V13];
FOR i = 0 TO (V13 - 1);
LET A39[i] = 1;
NEXT i;
CALL L30;
IRSTOP IRPAUSE;
DRSTOP IDLE;
STATE IDLE;
LET A18[0..9] = 071;
LET V4 = 1;
CALL L267;
WAIT 10000 USEC;
L16:
RETURN;
L21:
IF (V42 == 1) THEN GOTO L22;
CALL L31;
LET A18[0..9] = 079;
CALL L267;
WAIT 10000 USEC;
STATE IDLE;
L22:
IF (V42 == 0) THEN
PRINT "DONE";
IF (V42 == 1) THEN
PRINT "Invalid option combination specified";
IF (V42 == 2) THEN
PRINT "Unrecognized device";
IF (V42 == 3) THEN
PRINT "Device revision is not supported";
IF (V42 == 4) THEN
PRINT "Device programming failure";
IF (V42 == 5) THEN
PRINT "Device is not blank";
IF (V42 == 6) THEN
PRINT "Device verify failure";
IF (V42 == 8) THEN
PRINT "Unable to read UES from device #", V84 + 1;
RETURN;
L26:
LET j = 0;
FOR i = 0 TO V1;
IF ((j <= V3) &&
((A13[i] & V4) != 0) &&
((A13[i] & 4) != 0)) THEN LET j = i + 1;
NEXT i;
IF (j > V3) THEN GOTO L27;
LET V2 = 0;
LET V3 = 0;
GOTO L28;
L27:
LET V2 = A12[j - 1];
LET V3 = j;
IF (V58) THEN GOTO L28;
LET A41[0..9] = 066;
GOTO L29;
L28:
LET A41[0..9] = 006;
L29:
RETURN;
L30:
CALL L31;
IF (V32 == 0) THEN CALL L264;
LET V10 = 0;
LET V14 = 0;
LET V15 = 0;
LET V49 = 1;
LET V34 = 0;
LET V51 = -1;
LET V52 = -1;
LET V45 = 0;
LET V29 = 1;
IF (DO_PROGRAM) THEN LET V29 = 0;
IF (DO_ERASE && V74) THEN LET V29 = 2;
RETURN;
L31:
FOR i = 0 TO V1;
LET A17[i] = (A13[i] | A48[i]);
NEXT i;
RETURN;
L42:
LET j = 0;
LET k = V1;
LET V34 = 1;
LET V29 = 1;
LET V84 = V84 - 1;
IF (V84 == -1) THEN GOTO L44;
IF ((V84 < 0) || (V84 > V1) ||
((A17[V1 - V84] & 1) == 0)) THEN
LET V42 = 8;
IF (V42 != 0) THEN GOTO L45;
L43:
LET j = V84;
LET k = V84;
L44:
FOR i = j TO k;
LET V84 = i;
PUSH i; PUSH j; PUSH k;
CALL L31;
LET V86 = 0;
IF (((A17[V1 - V84] & 1) != 0) &&
((A17[V1 - V84] & 4) != 0)) THEN
CALL L46;
POP k; POP j; POP i;
NEXT i;
L45:
RETURN;
L46:
LET V4 = 1;
LET A18[0..9] = 016;
CALL L267;
DRSCAN V21, A26[0..(V21 - 1)];
LET A18[0..9] = 01A;
CALL L267;
DRSCAN V21, A26[0..(V21 - 1)];
LET j = V1 - V84;
FOR i = 0 TO V1;
IF (((A17[i] & 1) != 0) && ((A17[i] & 4) != 0) &&
(i != j)) THEN LET A17[i] = A17[i] | 8;
NEXT i;
CALL COMPUTE_7K_N_BITS;
LET V2 = A12[j];
LET V27 = (V2 - 1) * 2;
LET i = A49[V27];
LET V48 = A49[V27 + 1];
LET V46 = A6[V2];
IF (V48 < (V46 >> 1)) THEN GOTO L47;
LET V48 = V46 - V48 - 1;
L47:
LET V27 = j + V24 + (16 * V48) + 12;
FOR V11 = i TO i + 15;
PUSH i;
PUSH V27;
CALL L210;
CALL L153;
POP V27;
POP i;
IF (A31[V27]) THEN
LET V86 = V86 | (1 << (V11 - i));
NEXT V11;
CALL L51;
RETURN;
L51:
EXPORT "USERCODE", V86;
INTEGER V85[4];
FOR i = 0 TO 3;
LET V27 = 0;
LET V85[i] = V86 & 15;
IF (V85[i] > 9) THEN LET V27 = 7;
LET V85[i] = V85[i] + 48 + V27;
LET V86 = V86 >> 4;
NEXT i;
PRINT "Device #", V84 + 1, " UES code is ",
CHR$(V85[3]), CHR$(V85[2]),
CHR$(V85[1]), CHR$(V85[0]);
RETURN;
L56:
PRINT "programming 7K device(s)...";
CALL L30;
CALL L300;
FOR V11 = 1 TO 107;
CALL L210;
CALL L236;
NEXT V11;
LET V49 = 1;
FOR V11 = 109 TO (V32 - 1);
CALL L210;
CALL L236;
NEXT V11;
RETURN;
L63:
LET A18[0..9] = A41[0..9];
CALL L267;
LET A18[0..9] = 00E;
CALL L267;
LET A18[0..9] = 00A;
CALL L267;
IF (V58) THEN LET V56 = 1;
WAIT (V38 * 1000) USEC;
IF (V58) THEN GOTO L64;
IF (V82) THEN LET V83 = 20000;
LET A18[0..9] = 06A;
CALL L267;
LET V83 = 5;
LET A18[0..9] = 06E;
CALL L267;
L64:
LET A18[0..9] = 012;
CALL L267;
RETURN;
L65:
LET A18[0..9] = A41[0..9];
CALL L267;
LET A18[0..9] = 00A;
CALL L267;
IF (V58) THEN LET V56 = 1;
WAIT (V37 * 100) USEC;
IF (V58) THEN GOTO L66;
LET A18[0..9] = 06E;
CALL L267;
L66:
LET A18[0..9] = 012;
CALL L267;
RETURN;
L67:
CALL L31;
FOR i = 0 TO V1;
IF (((A17[i] & 1) == 0) || ((A17[i] & 4) == 0))
THEN GOTO L68;
IF (V82 && ((A48[i] & 128) == 0))
THEN LET A17[i] = A17[i] | 8;
IF (!V82 && ((A48[i] & 128) != 0))
THEN LET A17[i] = A17[i] | 8;
L68:
NEXT i;
IF (V82) THEN LET A41[0..9] = 066;
IF (!V82 && V58) THEN LET A41[0..9] = 006;
RETURN;
L69:
LET A18[0..9] = 012;
CALL L267;
LET A18[0..9] = 01E;
CALL L267;
DRSCAN V16, A30[0..(V16 - 1)];
L70:
CALL L67;
LET b = V58;
IF (V82) THEN LET V58 = 0;
CALL L63;
LET V58 = b;
IF (!V82) THEN GOTO L71;
LET V82 = 0;
GOTO L70;
L71:
LET A18[0..9] = 01E;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -