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

📄 dianzhen.jam

📁 此为用VHDL编写的可实现动感图像的点阵
💻 JAM
📖 第 1 页 / 共 4 页
字号:
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 L349;
IF(A46[V27] != 0) THEN
V42 = 6;
V27 = V27 + 1;
NEXT i;
GOTO L348;
L349:
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;
L348:
ENDPROC;
PROCEDURE L35 USES DEVICE_DATA, TEMP_DATA, L31, L276, L39;
j = 0;
k = V1;
V84 = V84 - 1;
IF (V84 == -1) THEN GOTO L36;
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 L35_4;
j = V84;
k = V84;
L36:
CALL L31;
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 L37;
A18[9..0] = $006;
CALL L276;
WAIT 10000 USEC;
L37:
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 L38;
A18[9..0] = $04A;
CALL L276;
WAIT 10000 USEC;
L38:
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 (((A17[V1 - V84] & 2048) != 0) &&
((A17[V1 - V84] & 4) != 0)) THEN
V4 = 2048;
IF (V4 != 0) THEN CALL L39;
POP k; POP j; POP i;
NEXT i;
L35_4:
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) || (V4 == 2048)) 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;
if (!(((V4 == 512) || (V4 == 2048)) && V103)) THEN
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

⌨️ 快捷键说明

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