📄 picweb.lst
字号:
153C: ADDWF 77,W
153D: ANDLW 0F
153E: ADDWF 70,F
.................... }
*
138F: GOTO 30B
*
1467: GOTO 3E3
*
153F: GOTO 4BB
.................... return(ok);
*
1390: MOVLW 00
1391: BSF 03,5
1392: BSF 03,6
1393: BTFSC 28,0
1394: MOVLW 01
1395: BCF 03,5
1396: BCF 03,6
1397: MOVWF 78
*
1468: MOVLW 00
1469: BSF 03,5
146A: BSF 03,6
146B: BTFSC 28,0
146C: MOVLW 01
146D: BCF 03,5
146E: BCF 03,6
146F: MOVWF 78
*
1540: MOVLW 00
1541: BSF 03,5
1542: BSF 03,6
1543: BTFSC 28,0
1544: MOVLW 01
1545: BCF 03,5
1546: BCF 03,6
1547: MOVWF 78
.................... }
....................
.................... /* Get a SLIP byte from buffer; if end, set flag */
.................... BYTE getch_slip(void)
.................... {
*
086E: BSF 03,5
086F: BSF 03,6
0870: CLRF 2C
.................... BYTE b=0;
....................
.................... slipend = rxout>=rxcount;
0871: BCF 03,5
0872: BCF 03,6
0873: MOVF 51,W
0874: SUBWF 52,W
0875: BTFSC 03,2
0876: GOTO 07B
0877: BTFSS 03,0
0878: GOTO 07B
0879: BCF 4B,4
087A: GOTO 07C
087B: BSF 4B,4
.................... if (!slipend)
087C: BTFSC 4B,4
087D: GOTO 08E
.................... {
.................... b = rxbuff[rxout++];
087E: MOVF 51,W
087F: INCF 51,F
0880: MOVWF 77
0881: MOVLW A0
0882: ADDWF 77,W
0883: MOVWF 04
0884: BCF 03,7
0885: MOVF 00,W
0886: BSF 03,5
0887: BSF 03,6
0888: MOVWF 2C
.................... check_byte(b);
0889: MOVF 2C,W
088A: MOVWF 2D
088B: BCF 03,5
088C: BCF 03,6
088D: CALL 046
.................... }
.................... return(b);
088E: BSF 03,5
088F: BSF 03,6
0890: MOVF 2C,W
0891: BCF 03,5
0892: BCF 03,6
0893: MOVWF 78
0894: RETLW 00
.................... }
....................
.................... /* Match an incoming byte value, return 0 not matched, or end of message */
.................... BOOL match_byte(BYTE b)
.................... {
.................... return(b==getch_slip() && !slipend);
0895: CALL 06E
0896: MOVF 78,W
0897: BSF 03,5
0898: BSF 03,6
0899: SUBWF 2B,W
089A: BTFSC 03,2
089B: GOTO 09F
089C: BCF 03,5
089D: BCF 03,6
089E: GOTO 0A3
089F: BCF 03,5
08A0: BCF 03,6
08A1: BTFSS 4B,4
08A2: GOTO 0A5
08A3: MOVLW 00
08A4: GOTO 0A6
08A5: MOVLW 01
08A6: MOVWF 78
08A7: RETLW 00
.................... }
.................... /* Match an incoming byte value, return 0 not matched, or end of message */
.................... BOOL match_word(WORD w)
.................... {
.................... WORD inw;
....................
.................... return(get_word(inw) && inw==w);
.................... }
.................... /* Match a string value, return 0 (and don't move O/P ptr) if not matched */
.................... BOOL match_str(char *s)
.................... {
.................... BOOL ok=1;
*
0AEA: BSF 03,5
0AEB: BSF 03,6
0AEC: BSF 28,0
.................... int rxo;
....................
.................... rxo = rxout;
0AED: BCF 03,5
0AEE: BCF 03,6
0AEF: MOVF 51,W
0AF0: BSF 03,5
0AF1: BSF 03,6
0AF2: MOVWF 29
0AF3: BCF 03,5
0AF4: BCF 03,6
.................... while (ok && *s)
0AF5: BSF 03,5
0AF6: BSF 03,6
0AF7: BTFSC 28,0
0AF8: GOTO 2FC
0AF9: BCF 03,5
0AFA: BCF 03,6
0AFB: GOTO 33A
0AFC: BCF 03,5
0AFD: BCF 03,6
0AFE: BSF 03,5
0AFF: BSF 03,6
0B00: MOVF 27,W
0B01: BCF 03,5
0B02: BCF 03,6
0B03: MOVWF 7A
0B04: BSF 03,5
0B05: BSF 03,6
0B06: MOVF 26,W
0B07: MOVWF 04
0B08: BCF 03,7
0B09: BCF 03,5
0B0A: BCF 03,6
0B0B: BTFSC 7A,0
0B0C: BSF 03,7
0B0D: MOVF 00,F
0B0E: BTFSC 03,2
0B0F: GOTO 33A
.................... ok = match_byte(*s++);
0B10: BSF 03,5
0B11: BSF 03,6
0B12: MOVF 27,W
0B13: BCF 03,5
0B14: BCF 03,6
0B15: MOVWF 7A
0B16: BSF 03,5
0B17: BSF 03,6
0B18: MOVF 26,W
0B19: INCF 26,F
0B1A: BTFSC 03,2
0B1B: INCF 27,F
0B1C: MOVWF 04
0B1D: BCF 03,7
0B1E: BCF 03,5
0B1F: BCF 03,6
0B20: BTFSC 7A,0
0B21: BSF 03,7
0B22: MOVF 00,W
0B23: BSF 03,5
0B24: BSF 03,6
0B25: MOVWF 2A
0B26: MOVF 2A,W
0B27: MOVWF 2B
0B28: BCF 03,5
0B29: BCF 03,6
0B2A: CALL 095
0B2B: MOVF 78,F
0B2C: BTFSS 03,2
0B2D: GOTO 334
0B2E: BSF 03,5
0B2F: BSF 03,6
0B30: BCF 28,0
0B31: BCF 03,5
0B32: BCF 03,6
0B33: GOTO 339
0B34: BSF 03,5
0B35: BSF 03,6
0B36: BSF 28,0
0B37: BCF 03,5
0B38: BCF 03,6
0B39: GOTO 2F5
.................... if (!ok)
0B3A: BSF 03,5
0B3B: BSF 03,6
0B3C: BTFSS 28,0
0B3D: GOTO 341
0B3E: BCF 03,5
0B3F: BCF 03,6
0B40: GOTO 349
0B41: BCF 03,5
0B42: BCF 03,6
.................... rxout = rxo;
0B43: BSF 03,5
0B44: BSF 03,6
0B45: MOVF 29,W
0B46: BCF 03,5
0B47: BCF 03,6
0B48: MOVWF 51
0B49: RETLW 00
.................... }
....................
.................... /* Skip whitespace & ctrl chars in incoming data */
.................... void skip_space(void)
.................... {
.................... while (rxbuff[rxout] <= ' ')
*
1196: MOVLW A0
1197: ADDWF 51,W
1198: MOVWF 04
1199: BCF 03,7
119A: MOVLW 21
119B: SUBWF 00,W
119C: BTFSC 03,0
119D: GOTO 1A4
.................... getch_slip();
119E: BCF 0A,4
119F: BSF 0A,3
11A0: CALL 06E
11A1: BSF 0A,4
11A2: BCF 0A,3
11A3: GOTO 196
.................... }
.................... /* Skip an incoming byte value, return 0 if end of message */
.................... BOOL skip_byte()
.................... {
.................... getch_slip();
*
07EB: BSF 0A,3
07EC: CALL 06E
07ED: BCF 0A,3
.................... return(!slipend);
07EE: MOVLW 00
07EF: BTFSS 4B,4
07F0: MOVLW 01
07F1: MOVWF 78
07F2: RETLW 00
.................... }
.................... /* Skip an incoming byte value, return 0 if end of message */
.................... BOOL skip_word()
.................... {
.................... getch_slip();
*
08A8: CALL 06E
.................... getch_slip();
08A9: CALL 06E
.................... return(!slipend);
08AA: MOVLW 00
08AB: BTFSS 4B,4
08AC: MOVLW 01
08AD: MOVWF 78
08AE: RETLW 00
.................... }
.................... /* Skip an incoming byte value, return 0 if end of message */
.................... BOOL skip_lword()
.................... {
.................... getch_slip();
*
0E5D: CALL 06E
.................... getch_slip();
0E5E: CALL 06E
.................... getch_slip();
0E5F: CALL 06E
.................... getch_slip();
0E60: CALL 06E
.................... return(!slipend);
0E61: MOVLW 00
0E62: BTFSS 4B,4
0E63: MOVLW 01
0E64: MOVWF 78
.................... }
....................
.................... /* Compute checksum of a string, return its length */
.................... int check_str(char *s)
.................... {
.................... char c;
.................... int n=0;
....................
.................... while ((c = s[n])!=0)
.................... {
.................... check_byte(c);
.................... n++;
.................... }
.................... return(n);
.................... }
....................
.................... /* Add byte to checksum value */
.................... void check_byte(BYTE b)
.................... {
.................... if (checkflag)
*
0846: BTFSS 4B,5
0847: GOTO 05A
.................... {
.................... if ((checklo = b+checklo) < b)
0848: BSF 03,5
0849: BSF 03,6
084A: MOVF 2D,W
084B: BCF 03,5
084C: BCF 03,6
084D: ADDWF 54,F
084E: BSF 03,5
084F: BSF 03,6
0850: MOVF 2D,W
0851: BCF 03,5
0852: BCF 03,6
0853: SUBWF 54,W
0854: BTFSC 03,0
0855: GOTO 059
.................... {
.................... if (++checkhi == 0)
0856: INCFSZ 53,F
0857: GOTO 059
.................... checklo++;
0858: INCF 54,F
.................... }
.................... }
.................... else
0859: GOTO 06B
.................... {
.................... if ((checkhi = b+checkhi) < b)
085A: BSF 03,5
085B: BSF 03,6
085C: MOVF 2D,W
085D: BCF 03,5
085E: BCF 03,6
085F: ADDWF 53,F
0860: BSF 03,5
0861: BSF 03,6
0862: MOVF 2D,W
0863: BCF 03,5
0864: BCF 03,6
0865: SUBWF 53,W
0866: BTFSC 03,0
0867: GOTO 06B
.................... {
.................... if (++checklo == 0)
0868: INCFSZ 54,F
0869: GOTO 06B
.................... checkhi++;
086A: INCF 53,F
.................... }
.................... }
.................... checkflag = !checkflag;
086B: MOVLW 20
086C: XORWF 4B,F
086D: RETLW 00
.................... }
.................... /* Add word to checksum value */
.................... void check_word(WORD w)
.................... {
.................... check_byte(w>>8);
.................... check_byte(w);
.................... }
.................... /* Add longword to checksum value */
.................... void check_lword(LWORD &lw)
.................... {
.................... check_byte(lw.b[3]);
*
091F: MOVF 2D,W
0920: BSF 03,5
0921: BSF 03,6
0922: MOVWF 2D
0923: BCF 03,5
0924: BCF 03,6
0925: CALL 046
*
093B: MOVF 31,W
093C: BSF 03,5
093D: BSF 03,6
093E: MOVWF 2D
093F: BCF 03,5
0940: BCF 03,6
0941: CALL 046
*
0A6A: MOVF 2D,W
0A6B: BSF 03,5
0A6C: BSF 03,6
0A6D: MOVWF 2D
0A6E: BCF 03,5
0A6F: BCF 03,6
0A70: CALL 046
*
0A86: MOVF 31,W
0A87: BSF 03,5
0A88: BSF 03,6
0A89: MOVWF 2D
0A8A: BCF 03,5
0A8B: BCF 03,6
0A8C: CALL 046
*
0E7F: MOVF 2D,W
0E80: BSF 03,5
0E81: BSF 03,6
0E82: MOVWF 2D
0E83: BCF 03,5
0E84: BCF 03,6
0E85: CALL 046
*
0E9B: MOVF 31,W
0E9C: BSF 03,5
0E9D: BSF 03,6
0E9E: MOVWF 2D
0E9F: BCF 03,5
0EA0: BCF 03,6
0EA1: CALL 046
.................... check_byte(lw.b[2]);
*
0926: MOVF 2C,W
0927: BSF 03,5
0928: BSF 03,6
0929: MOVWF 2D
092A: BCF 03,5
092B: BCF 03,6
092C: CALL 046
*
0942: MOVF 30,W
0943: BSF 03,5
0944: BSF 03,6
0945: MOVWF 2D
0946: BCF 03,5
0947: BCF 03,6
0948: CALL 046
*
0A71: MOVF 2C,W
0A72: BSF 03,5
0A73: BSF 03,6
0A74: MOVWF 2D
0A75: BCF 03,5
0A76: BCF 03,6
0A77: CALL 046
*
0A8D: MOVF 30,W
0A8E: BSF 03,5
0A8F: BSF 03,6
0A90: MOVWF 2D
0A91: BCF 03,5
0A92: BCF 03,6
0A93: CALL 046
*
0E86: MOVF 2C,W
0E87: BSF 03,5
0E88: BSF 03,6
0E89: MOVWF 2D
0E8A: BCF 03,5
0E8B: BCF 03,6
0E8C: CALL 046
*
0EA2: MOVF 30,W
0EA3: BSF 03,5
0EA4: BSF 03,6
0EA5: MOVWF 2D
0EA6: BCF 03,5
0EA7: BCF 03,6
0EA8: CALL 046
.................... check_byte(lw.b[1]);
*
092D: MOVF 2B,W
092E: BSF 03,5
092F: BSF 03,6
0930: MOVWF 2D
0931: BCF 03,5
0932: BCF 03,6
0933: CALL 046
*
0949: MOVF 2F,W
094A: BSF 03,5
094B: BSF 03,6
094C: MOVWF 2D
094D: BCF 03,5
094E: BCF 03,6
094F: CALL 046
*
0A78: MOVF 2B,W
0A79: BSF 03,5
0A7A: BSF 03,6
0A7B: MOVWF 2D
0A7C: BCF 03,5
0A7D: BCF 03,6
0A7E: CALL 046
*
0A94: MOVF 2F,W
0A95: BSF 03,5
0A96: BSF 03,6
0A97: MOVWF 2D
0A98: BCF 03,5
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -