📄 5050pwm.jam
字号:
V27 = 0;
FOR i = 0 TO V1;
IF(A61[i] != 0) THEN GOTO L105;
IF(A46[V27] != 0) THEN
V42 = 6;
V27 = V27 + 1;
NEXT i;
GOTO L106;
L105:
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;
L106:
IF (V232 && (V42 != 0)) THEN
PRINT "IDCODE failures ignored";
IF (V232 && (V42 != 0)) THEN
V42 = 0;
ENDPROC;
PROCEDURE L107 USES DEVICE_DATA, TEMP_DATA, L101, L443, L113;
j = 0;
k = V1;
V84 = V84 - 1;
IF (V84 == -1) THEN GOTO L108;
IF ((V84 < 0) || (V84 > V1) ||
(((A17[V1 - V84] & 256) == 0) &&
((A17[V1 - V84] & 32) == 0) &&
((A17[V1 - V84] & 512) == 0) &&
((A17[V1 - V84] & 16384) == 0) &&
((A17[V1 - V84] & 2048) == 0))) THEN
V42 = 4;
IF (V42 != 0) THEN GOTO L112;
j = V84;
k = V84;
L108:
CALL L101;
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 L109;
A18[9..0] = $006;
CALL L443;
WAIT 10000 USEC;
L109:
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 L110;
A18[9..0] = $04A;
CALL L443;
WAIT 10000 USEC;
L110:
FOR i = 0 TO V1;
IF (((A17[i] & 16384) != 0) &&
((A17[i] & 4) != 0) &&
((A17[i] & 8) == 0)) THEN
V4 = 16384;
NEXT i;
IF (V4 != 16384) THEN
GOTO L111;
A18[9..0] = $201;
CALL L443;
WAIT 10000 USEC;
L111:
A18[9..0] = $3FF;
CALL L443;
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 L101;
V4 = 0;
IF (((A17[V1 - V84] & 256) != 0) &&
((A17[V1 - V84] & 4) != 0)) THEN
V4 = 256;
IF (((A17[V1 - V84] & 16384) != 0) &&
((A17[V1 - V84] & 4) != 0)) THEN
V4 = 16384;
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 L113;
POP k; POP j; POP i;
NEXT i;
L112:
V84 = 0;
ENDPROC;
PROCEDURE L113 USES DEVICE_DATA, TEMP_DATA, L443, L117;
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 == 16384) THEN
A18[9..0] = $007;
IF ((V4 == 512) || (V4 == 2048)) THEN
A18[9..0] = $079;
IF (V4 == 32) THEN
A18[9..0] = $007;
CALL L443;
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 L117;
ENDPROC;
PROCEDURE L114 USES DEVICE_DATA, TEMP_DATA, L101, L443;
CALL L101;
V4 = 512 | 2048;
j = 0;
FOR i = 0 TO V1;
A30[j] = 1;
l = 1;
IF (((A17[i] & (512 | 2048)) == 0) ||
((A17[i] & 4) == 0)) THEN
GOTO L116;
l = 8 * 3;
IF ((A17[i] & 512) != 0) THEN
GOTO L115;
l = 58 * 3;
L115:
FOR V27 = 0 TO l - 1;
A30[j + V27] = 1;
IF ((V27 % 3) == 0) THEN
A30[j + V27] = 0;
NEXT V27;
L116:
j = j + l;
NEXT i;
A18[9..0] = $055;
CALL L443;
WAIT IDLE, 10 CYCLES, 1000 USEC, IDLE;
DRSCAN j, A30[j - 1..0];
WAIT IDLE, 10 CYCLES, 1000 USEC, IDLE;
A18[9..0] = $000;
CALL L443;
WAIT IDLE, 10 CYCLES, 1000 USEC, IDLE;
A18[9..0] = $3FF;
CALL L443;
WAIT IDLE, 10 CYCLES, 1000 USEC, IDLE;
FOR i = 0 TO j - 1;
A30[i] = 1;
NEXT i;
ENDPROC;
PROCEDURE L117 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 L118 USES DEVICE_DATA, TEMP_DATA, L101
;
j = 0;
k = V1;
V34 = 1;
V29 = 1;
V84 = V84 - 1;
IF (V84 == -1) THEN GOTO L120;
IF ((V84 < 0) || (V84 > V1) ||
(((A17[V1 - V84] & 1) == 0) &&
((A17[V1 - V84] & 2) == 0))) THEN
V42 = 4;
IF (V42 != 0) THEN GOTO L121;
L119:
j = V84;
k = V84;
L120:
FOR i = j TO k;
V84 = i;
PUSH i; PUSH j; PUSH k;
CALL L101;
V86 = 0;
POP k; POP j; POP i;
NEXT i;
L121:
V84 = 0;
ENDPROC;
PROCEDURE L128 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 L129 USES DEVICE_DATA, TEMP_DATA, L443;
A18[9..0] = $00A;
CALL L443;
PREDR V77;
POSTDR V78;
DRSCAN 80, V189[79..0], CAPTURE A45[79..0];
FOR i = 0 TO 100;
PREDR V77;
POSTDR V78;
DRSCAN 80, A29[79..0], CAPTURE A45[79..0];
IF (A45[79] == 0) THEN i = 100;
NEXT i;
IF (A45[79] == 0) THEN GOTO L130;
V42 = 12;
GOTO L131;
L130:
PREDR V77;
POSTDR V78;
DRSCAN 80, V190[79..0], CAPTURE A45[79..0];
FOR i = 0 TO 100;
PREDR V77;
POSTDR V78;
DRSCAN 80, A29[79..0], CAPTURE A45[79..0];
IF (A45[79] == 0) THEN i = 100;
NEXT i;
IF (A45[79] == 0) THEN GOTO L131;
V42 = 12;
L131:
ENDPROC;
PROCEDURE L132 USES DEVICE_DATA, TEMP_DATA;
V188 = (V187 - V186)/80;
FOR i = 0 TO V188;
FOR j = 0 TO 100;
PREDR V77;
POSTDR V78;
DRSCAN 80, A93[(V186 + 79)..V186], CAPTURE A45[79..0];
IF (A45[79] == 0) THEN j = 100;
NEXT j;
IF (A45[79] == 0) THEN GOTO L133;
V42 = 12;
i = V188;
GOTO L134;
L133:
V186 = V186 + 80;
L134:
NEXT i;
ENDPROC;
PROCEDURE L135 USES DEVICE_DATA, TEMP_DATA, L101, L443, L132, L129;
PRINT "configuring SRAM device(s)...";
CALL L101;
PREIR 0;
POSTIR 0;
PREDR 0;
POSTDR 0;
FOR i = V1 TO 0 STEP -1;
IF (((A17[i] & 32) == 0) ||
((A17[i] & 4) == 0) ||
(V42 != 0)) THEN
GOTO L139;
V77 = 0;
V78 = 0;
V30 = 0;
V186 = 0;
FOR j = V1 TO 0 STEP -1;
IF (i == j) THEN GOTO L136;
IF ((A17[j] & 32) != 0) THEN
A17[j] = A17[j] & ~4;
IF (i > j) THEN V77 = V77 + 1;
IF (i < j) THEN V78 = V78 + 1;
IF (j < i) THEN V30 = V30 + A43[j];
IF (j < i) THEN V186 = V186 + A92[j];
L136:
NEXT j;
IF(A92[i] == 0) THEN
GOTO L137;
PUSH i;
CALL L129;
POP i;
V187 = V186 + A92[i] - 1;
PUSH i;
CALL L132;
POP i;
L137:
V31 = V30 + A43[i] - 1;
POSTDR V78;
PUSH i;
IF (((A17[i] & 128) == 0) || (V230 == 0)) THEN
GOTO L138;
A18[9..0] = $00D;
CALL L443;
WAIT 1000 USEC;
L138:
A18[9..0] = $002;
CALL L443;
WAIT 100 USEC;
POP i;
DRSCAN A43[i], A42[V31..V30];
IF (USE_REV0_PROG_ALG) THEN DRSCAN 32, A30[31..0];
PUSH i;
A18[9..0] = $004;
CALL L443;
POP i;
PREDR V77;
POSTDR V78;
DRSCAN A59[i], A29[A59[i]-1..0], CAPTURE A45[A59[i]-1..0];
IF !A45[A60[i]] THEN V42 = 10;
PUSH i;
CALL L101;
POP i;
L139:
NEXT i;
PREIR 0;
POSTIR 0;
PREDR 0;
POSTDR 0;
IF (V42 != 0) THEN
GOTO L140;
V76 = 1;
L140:
ENDPROC;
PROCEDURE L443 USES DEVICE_DATA, TEMP_DATA;
V41 = 0;
V27 = 0;
IF (!V56) THEN GOTO L444;
V56 = 0;
V41 = 50;
IF (!USE_EXTEND_IR_DELAY_METHOD) THEN GOTO L444;
V27 = 50;
A32[49..0] = A30[49..0];
L444:
FOR i = 0 TO V1;
IF ((A17[i] & 8) != 0) THEN GOTO L445;
IF (((A17[i] & V4) != 0) &&
((A17[i] & 4) != 0)) THEN GOTO L447;
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 L450;
L445:
IF ((A17[i] & 2) != 0) THEN GOTO L446;
A32[(V27 + 9)..V27] = $3FF;
IF ((A17[i] & 1) != 0) THEN
A32[(V27 + 9)..V27] = $03E;
V27 = V27 + 10;
GOTO L450;
L446:
IF (!V57) THEN GOTO L447;
A32[(V27 + 9)..V27] = $02A;
V27 = V27 + 10;
GOTO L450;
L447:
l = 0;
IF ((A18[20] == 1) && ((A17[i] & 64) != 0)) THEN
l = 10;
A32[(V27 + 9)..V27] = A18[(l + 9)..l];
V27 = V27 + 10;
GOTO L450;
L450:
NEXT i;
IF ((V41 == 0) || USE_EXTEND_IR_DELAY_METHOD) THEN
GOTO L451;
STATE DRPAUSE;
WAIT DRPAUSE, 5 USEC, DRPAUSE;
L451:
IRSCAN V27, A32[(V27 - 1)..0];
V57 = 0;
WAIT IRPAUSE, V83 USEC, IRPAUSE;
IF (V91) THEN GOTO L452;
STATE IDLE;
WAIT 3 CYCLES;
L452:
ENDPROC;
PROCEDURE L503 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(V216) THEN V25 = 0;
IF(V216) THEN V26 = 0;
IF (((A17[i] & V4) == 0) ||
((A17[i] & 4) == 0) ||
((A17[i] & 8) != 0)) THEN GOTO L504;
V2 = A12[i];
IF(V216) THEN V2 = A105[i];
V25 = A1[V2];
V26 = A5[V2];
GOTO L505;
L504:
IF (V74 && !V216) THEN A30[V24] = 0;
L505:
V23 = V23 + V25;
V24 = V24 + V26;
NEXT i;
V49 = 0;
ENDPROC;
' END OF FILE
CRC 8BC9;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -