📄 keyboard.jam
字号:
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 6630;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -