MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 list p=16f877 ; list directive to define processor 00002 00003 #include ; processor specific variable definitions 00001 LIST 00002 ; P16F877.INC Standard Header File, Version 1.00 Microchip Technology, Inc. 00373 LIST 00004 00005 ; 00006 ; PICNIC - PIC Network Interface Controller 00007 ; Copyright (c) 2002 SHINSHU UNIVERSITY KISO LAB 00008 ; All Rights Reserved. 00009 ; 00010 ; 1-SEP-2002 Version 1.0.0.0 00011 ; 00012 ; 00013 00014 00015 ;----------------------------------------------------------------------------------- 00016 2007 3FF2 00017 __CONFIG _CP_OFF & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _HS_OSC 00018 00019 00020 ;----------------------------------------------------------------------------------- 00000050 00021 HTTP_PORT EQU .80 ; HTTPポート番号(80=デフォルト) 00000000 00022 LCD_PORT EQU .0 ; LCDコントロール用ポート番号(0=未使用) 00002711 00023 PARALLEL_PORT EQU .10001 ; パラレル用ポート番号(0=未使用) 00002712 00024 SERIAL_PORT EQU .10002 ; シリアル用ポート番号(0=未使用) 00025 00000044 00026 BOOTPC_PORT EQU .68 ; BOOTPポート番号(クライアント) 00000043 00027 BOOTPS_PORT EQU .67 ; BOOTPポート番号(サーバ) 00028 00000081 00029 BAUD_RATE EQU .129 ;10 ; リセット時のRS232Cボーレート 00030 ; 129=9600bps 00031 ; 10=115200bps 00032 00000008 00033 PARALLEL_PACKET_SIZE EQU .8 ; パラレル転送パケットサイズ 00000010 00034 SERIAL_PACKET_SIZE EQU (.2 + .6 + .4 + .2 + .1 + .1) ; シリアルステータスパケットのサ イズ 00035 ; type:mac:ip:port:baud:flow 00000008 00036 CH_BACKSPACE EQU .8 ; バックスペースの文字コード 00000004 00037 SOCKETS EQU .4 ; ソケット総数(変更不可) 00038 00039 00040 ;----------------------------------------------------------------------------------- 00041 2100 00042 ORG 0x2100 00043 2100 00C0 00A8 0000 00044 DE .192, .168, 0, .200 ; IPアドレス(0.0.0.0=DHCP) 00C8 2104 00FF 00FF 00FF 00045 DE .255 , .255 , .255 , 0 ; ネットマスク 0000 2108 0000 0000 0000 00046 DE 0,0,0,0 ; GateWay 0000 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 210C 0001 0002 0000 00047 DE 1,2,0,0 ; Farmware Version x,x,x,x 0000 00048 00049 2110 0000 0050 00050 DE HTTP_PORT / .256 , HTTP_PORT & .255 ; HTTPポート番号 2112 0000 0000 00051 DE LCD_PORT / .256 , LCD_PORT & .255 ; LCDポート番号 2114 0027 0011 00052 DE PARALLEL_PORT / .256 , PARALLEL_PORT & .255 ; PARALLELポート 番号 2116 0027 0012 00053 DE SERIAL_PORT / .256 , SERIAL_PORT & .255 ; SERIALポート番号 00054 00055 ; 00056 ;----------------------------------------------------------------------------------- 00057 00058 ; 00059 ; プロトコル番号など 00060 ; 00000008 00061 COM_PROTO EQU 08H ; HIGH BYTE(共通) 00000000 00062 IP_PROTO EQU 00H ; LOW BYTE (0800h means IP packet) 00000006 00063 ARP_PROTO EQU 06H ; LOW BYTE (0806h means ARP packet) 00064 00065 00000006 00066 TCP_PROTO EQU .6 00000011 00067 UDP_PROTO EQU .17 00000001 00068 ICMP_PROTO EQU .1 00069 00070 ; 00071 ; RTL8019AS関連設定項目 00072 ; 00000040 00073 PAGE_BEGIN EQU 40H ; メモリ先頭アドレス 00000046 00074 PAGE_START EQU 46H ; 受信バッファ先頭アドレス 00000080 00075 PAGE_STOP EQU 80H ; 受信バッファ終端アドレス 00076 00000012 00077 DATA_SIZE EQU .18 00078 00079 ; 00080 ; Ethernet関連設定項目 00081 ; 00000004 00082 NE_SIZE EQU .4 ; RTL8019ステータスエリアサイズ 0000000E 00083 PACKET_SIZE EQU .6 + .6 + .2 ; Ethernetヘッダサイズ 0000001C 00084 ARP_SIZE EQU .28 ; ARPパケットサイズ 00000014 00085 IP_SIZE EQU .20 ; IP(基本)ヘッダサイズ 00000008 00086 UDP_SIZE EQU .8 ; UDPヘッダサイズ 00000014 00087 TCP_SIZE EQU .20 ; TCP(基本)ヘッダサイズ 00000134 00088 DHCP_SIZE EQU .308 00089 ; 00090 ; TCP/IPステート 00091 ; 00000000 00092 LISTEN EQU 00 ; ひま 00000080 00093 SYN_RCVD EQU 80H ; SYN,ACKを送ってACKを待っている 00000081 00094 ESTAB EQU 81H ; 通信確立 00000082 00095 CLOSE_WAIT EQU 82H 00000083 00096 LAST_ACK EQU 83H 00000084 00097 FIN_WAIT_1 EQU 84H MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000085 00098 FIN_WAIT_2 EQU 85H 00000086 00099 CLOSING EQU 86H 00000087 00100 TIME_WAIT EQU 87H 00101 00102 ; ソケット構造体 00103 ;------------------------------------------ 00104 ; org 0 00105 ;so_job ds 2 00106 ;so_ip ds 4 00107 ;so_port ds 2 00108 ;so_seq_no ds 4 00109 ;so_ack_no ds 4 00110 ;------------------------------------------ 00111 00112 00113 00114 ;----------------------------------------------------------------------------------- 00115 ; I/Oポート設定 00116 ;----------------------------------------------------------------------------------- 00000007 00117 SA EQU PORTC ; NE2000 アドレスバス 00000000 00118 SA0 EQU 0 ;rc.0 00000001 00119 SA1 EQU 1 00000002 00120 SA2 EQU 2 00000003 00121 SA3 EQU 3 00000004 00122 SA4 EQU 4 ;rc.4 00123 00000008 00124 SD EQU PORTD 00000000 00125 SD0 EQU 0 ;rd.0 00000001 00126 SD1 EQU 1 00000002 00127 SD2 EQU 2 00000003 00128 SD3 EQU 3 00000004 00129 SD4 EQU 4 00000005 00130 SD5 EQU 5 00000006 00131 SD6 EQU 6 00000007 00132 SD7 EQU 7 ;rd.7 00133 00000005 00134 RDY EQU 5 ;rc.5 ; ~IOCHRDY 00135 00136 00000009 00137 CNT EQU PORTE 00000000 00138 RD EQU 0 ;re.0 ; RTL8019AS ~RD 00000001 00139 WR EQU 1 ;re.1 ; RTL8019AS ~WR 00140 00141 00142 ; 00143 ; LCD用I/O設定(オプショナルLCD用) 00144 ; 00000007 00145 D7 EQU 7 ;rb.7 ; 液晶用 00000006 00146 D6 EQU 6 00000005 00147 D5 EQU 5 00000004 00148 D4 EQU 4 00000003 00149 E EQU 3 ; 液晶イネーブル 00000002 00150 RS EQU 2 ;rb.2 ; 液晶RSピン MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00151 00152 00153 00154 ;----------------------------------------------------------------------------------- 00155 ; グローバル変数 00156 ;----------------------------------------------------------------------------------- 00157 ; PAGE 0 00158 ; org 20h 00159 00160 ; LCD用変数 00000020 00161 wait_cn EQU 20H 00000021 00162 wait_cn2 EQU 21H 00000022 00163 d4 EQU 22H 00000023 00164 d8 EQU 23H 00165 00000024 00166 cd EQU 24H 00000024 00167 tmp EQU 24H 00000025 00168 use EQU 25H 00169 ;----------------------------------------------------------------------------------- 00000026 00170 gcn1 EQU 26H 00000027 00171 sum EQU 27H ; check sum for TCP,... 00000028 00172 sum1 EQU 28H 00000029 00173 bytes EQU 29H ; current ptr for calculate above 0000002A 00174 ptr EQU 2AH 00175 00176 0000002B 00177 cn_l EQU 2BH ; fan free 0000002C 00178 cn_h EQU 2CH 00179 0000002D 00180 remote_adr EQU 2DH ; リモート 0000002E 00181 remote_adr1 EQU 2EH 0000002F 00182 remote_len EQU 2FH 00000030 00183 remote_len1 EQU 30H 00000031 00184 curr EQU 31H ; Current page address 00185 00186 00000032 00187 val EQU 32H 00000033 00188 val1 EQU 33H 00000034 00189 val2 EQU 34H 00000035 00190 val3 EQU 35H 00000036 00191 val_m EQU 36H ; for DECIMAL 00000037 00192 val_cn EQU 37H 00000037 00193 proto EQU 37H ; プロトコル番号 00000038 00194 state EQU 38H ; TCPフラグ 00195 00196 ;----------------------------------------------------------------------------------- 00197 ; 00198 ; IPプロトコル 00199 ; 00000039 00200 ip_header EQU 39H 00000039 00201 ip_ver_len EQU 39H ; VERSION:4,DATA SIZE:5 0000003A 00202 ip_tos EQU 3AH ; service type 0000003B 00203 ip_length EQU 3BH ; データ長 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 5 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000003C 00204 ip_length1 EQU 3CH 0000003D 00205 ip_ident EQU 3DH 0000003E 00206 ip_ident1 EQU 3EH 0000003F 00207 ip_flagment EQU 3FH 00000040 00208 ip_flagment1 EQU 40H 00000041 00209 ip_ttl EQU 41H ; 生存期間 00000042 00210 ip_proto EQU 42H ; プロトコル 1:ICMP,6:TCP,17:UDP 00000043 00211 ip_sum EQU 43H ; ヘッダチェックサム 00000044 00212 ip_sum1 EQU 44H 00000045 00213 ip_src EQU 45H 00000046 00214 ip_src1 EQU 46H 00000047 00215 ip_src2 EQU 47H 00000048 00216 ip_src3 EQU 48H 00000049 00217 ip_dest EQU 49H 0000004A 00218 ip_dest1 EQU 4AH 0000004B 00219 ip_dest2 EQU 4BH 0000004C 00220 ip_dest3 EQU 4CH 00221 00222 00223 ;----------------------------------------------------------------------------------- 00224 ; TCPプロトコル 00225 ; 0000004D 00226 tcp_header EQU 4DH 0000004D 00227 tcp_src_port EQU 4DH 0000004E 00228 tcp_src_port1 EQU 4EH 0000004F 00229 tcp_tar_port EQU 4FH 00000050 00230 tcp_tar_port1 EQU 50H 00000051 00231 tcp_seq_no EQU 51H 00000052 00232 tcp_seq_no1 EQU 52H 00000053 00233 tcp_seq_no2 EQU 53H 00000054 00234 tcp_seq_no3 EQU 54H 00000055 00235 tcp_ack_no EQU 55H 00000056 00236 tcp_ack_no1 EQU 56H 00000057 00237 tcp_ack_no2 EQU 57H 00000058 00238 tcp_ack_no3 EQU 58H 00000059 00239 tcp_header_size EQU 59H 0000005A 00240 tcp_flags EQU 5AH 00000005 00241 TCP_URG EQU 5 00000004 00242 TCP_ACK EQU 4 00000003 00243 TCP_PSH EQU 3 00000002 00244 TCP_RST EQU 2 00000001 00245 TCP_SYN EQU 1 00000000 00246 TCP_FIN EQU 0 00247 0000005B 00248 tcp_window EQU 5BH 0000005C 00249 tcp_window1 EQU 5CH 0000005D 00250 tcp_sum EQU 5DH 0000005D 00251 tcp_sum1 EQU 5DH 0000005F 00252 tcp_ EQU 5FH 00000060 00253 tcp_1 EQU 60H 00254 00255 ;----------------------------------------------------------------------------------- 00256 ; UDPプロトコル MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 6 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00257 ; 0000004D 00258 udp_header SET tcp_header 0000004D 00259 udp_src_port SET tcp_header+0 0000004E 00260 udp_src_port1 SET tcp_header+1 0000004F 00261 udp_tar_port SET tcp_header+2 00000050 00262 udp_tar_port1 SET tcp_header+3 00000051 00263 udp_length SET tcp_header+4 00000052 00264 udp_length1 SET tcp_header+5 00000053 00265 udp_sum SET tcp_header+6 00000054 00266 udp_sum1 SET tcp_header+7 00000055 00267 udp_data SET tcp_header+8 00000056 00268 udp_data1 SET tcp_header+9 00000057 00269 udp_data2 SET tcp_header + .10 00000058 00270 udp_data3 SET tcp_header + .11 00000059 00271 udp_data4 SET tcp_header + .12 0000005A 00272 udp_data5 SET tcp_header + .13 0000005B 00273 udp_data6 SET tcp_header + .14 0000005C 00274 udp_data7 SET tcp_header + .15 00275 00276 00277 ;----------------------------------------------------------------------------------- 00278 ; ARPプロトコル 00279 ; 00000039 00280 arp_header SET ip_header 00000039 00281 arp_hard_type SET ip_header+0 0000003B 00282 arp_prot_type SET ip_header+2 0000003D 00283 arp_hard_len SET ip_header+4 0000003E 00284 arp_prot_len SET ip_header+5 0000003F 00285 arp_ope SET ip_header+6 00000040 00286 arp_ope1 SET ip_header+7 00000041 00287 arp_src_mac SET ip_header+8 00000047 00288 arp_src_ip SET ip_header + .14 0000004B 00289 arp_dest_mac SET ip_header + .18 00000051 00290 arp_dest_ip SET ip_header + .24 00000052 00291 arp_dest_ip1 SET ip_header + .25 00000053 00292 arp_dest_ip2 SET ip_header + .26 00000054 00293 arp_dest_ip3 SET ip_header + .27 00294 ; = ip_header + .28 00295 00296 00297 ;----------------------------------------------------------------------------------- 00298 ; ICMPプロトコル 00299 ; 0000004D 00300 icmp_header SET tcp_header 0000004D 00301 icmp_type SET tcp_header+0 0000004E 00302 icmp_code SET tcp_header+1 0000004F 00303 icmp_sum SET tcp_header+2 00000051 00304 icmp_mes SET tcp_header+4 00305 00306 00307 ;----------------------------------------------------------------------------------- 00308 ; DHCPプロトコル 00309 ; MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 7 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000055 00310 dhcp_header SET udp_data 00000055 00311 dhcp_ope SET udp_data+0 00000056 00312 dhcp_type SET udp_data+1 00000057 00313 dhcp_phylen SET udp_data+2 00000058 00314 dhcp_hop SET udp_data+3 00000059 00315 dhcp_trans SET udp_data+4 0000005D 00316 dhcp_sec SET udp_data+8 0000005F 00317 dhcp_dummy SET udp_data + .10 00000061 00318 dhcp_client_ip SET udp_data + .12 00000065 00319 dhcp_user_ip SET udp_data + .16 00000066 00320 dhcp_user_ip1 SET udp_data + .17 00000067 00321 dhcp_user_ip2 SET udp_data + .18 00000068 00322 dhcp_user_ip3 SET udp_data + .19 00000069 00323 dhcp_server_ip SET udp_data + .20 0000006A 00324 dhcp_server_ip1 SET udp_data + .21 0000006B 00325 dhcp_server_ip2 SET udp_data + .22 0000006C 00326 dhcp_server_ip3 SET udp_data + .23 0000006D 00327 dhcp_router_ip SET udp_data + .24 00328 00329 00330 ;----------------------------------------------------------------------------------- 00331 ; 環境設定用変数 00332 ; 00333 ; PAGE 1 00334 ; org 0a0h 000000A0 00335 this_ip EQU 0A0H ; 自分のIPアドレス 000000A1 00336 this_ip1 EQU 0A1H 000000A2 00337 this_ip2 EQU 0A2H 000000A3 00338 this_ip3 EQU 0A3H 000000A4 00339 mymac EQU 0A4H ; 自分のMACアドレス 000000A5 00340 mymac1 EQU 0A5H 000000A6 00341 mymac2 EQU 0A6H 000000A7 00342 mymac3 EQU 0A7H 000000A8 00343 mymac4 EQU 0A8H 000000A9 00344 mymac5 EQU 0A9H 000000AA 00345 seq_no EQU 0AAH ; 自分のシーケンス番号 000000AB 00346 seq_no1 EQU 0ABH 000000AC 00347 seq_no2 EQU 0ACH 000000AD 00348 seq_no3 EQU 0ADH 000000AE 00349 ident EQU 0AEH 000000AF 00350 ident1 EQU 0AFH 000000B0 00351 timer EQU 0B0H 000000B1 00352 timer_cn EQU 0B1H 000000B2 00353 dhcp_done EQU 0B2H 000000B3 00354 http_port EQU 0B3H ; EEPROMからのポート番号のコピー 000000B4 00355 http_port1 EQU 0B4H 000000B5 00356 lcd_port EQU 0B5H 000000B6 00357 lcd_port1 EQU 0B6H 000000B7 00358 para_port EQU 0B7H 000000B8 00359 para_port1 EQU 0B8H 000000B9 00360 serial_port EQU 0B9H 000000BA 00361 serial_port1 EQU 0BAH 00362 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 8 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000000BB 00363 fifo_poi EQU 0BBH ; ルーチンで使用する(GET)ポインタ 000000BC 00364 fifo_buff EQU 0BCH ; 割り込みで使用する(SET)ポインタ 000000BD 00365 fifo_cn EQU 0BDH ; 受信バイト数 000000BE 00366 fifo_top EQU 0BEH ; バッファ 000000DC 00367 fifo_bottom EQU 0DCH 00368 000000DC 00369 fifo_line EQU 0DCH 000000DD 00370 fifo_line_cn EQU 0DDH 00371 00372 00373 ;----------------------------------------------------------------------------------- 00374 ; Ethernetヘッダ 00375 ; 000000DE 00376 ne_header EQU 0DEH ; NE2000 Status 000000DE 00377 ne_stat EQU 0DEH ; 受信ステータス(RSR) 000000DF 00378 ne_next EQU 0DFH ; 次のバウンダリポインタ(Next Boundary) 000000E0 00379 ne_cn_l EQU 0E0H ; データサイズ(L) 000000E1 00380 ne_cn_h EQU 0E1H ; データサイズ(H) 00381 000000E2 00382 eth_header EQU 0E2H ; Ethernet Header 000000E2 00383 eth_dest EQU 0E2H ; 送信先MACアドレス 000000E3 00384 eth_dest1 EQU 0E3H 000000E4 00385 eth_dest2 EQU 0E4H 000000E5 00386 eth_dest3 EQU 0E5H 000000E6 00387 eth_dest4 EQU 0E6H 000000E7 00388 eth_dest5 EQU 0E7H 000000E8 00389 eth_src EQU 0E8H ; 送信元MACアドレス 000000E9 00390 eth_src1 EQU 0E9H 000000EA 00391 eth_src2 EQU 0EAH 000000EB 00392 eth_src3 EQU 0EBH 000000EC 00393 eth_src4 EQU 0ECH 000000ED 00394 eth_src5 EQU 0EDH 000000EE 00395 eth_type EQU 0EEH ; パケットタイプ 000000EF 00396 eth_type1 EQU 0EFH 000000F0 00397 null EQU 0F0H 00398 00399 000000DE 00400 bs_ptr SET ne_header 000000DF 00401 bs_ptr2 SET ne_header+1 000000E0 00402 save_line SET ne_header+2 000000E1 00403 save_cn SET ne_header+3 00404 00405 00406 00407 00408 ;----------------------------------------------------------------------------------- 00409 ; 共通変数 00410 ; 00411 00412 ; org 70h ; COMMON MEMORY PAGE 00413 ; BEGIN -- 割り込み時レジスタ待避用 00000070 00414 w_save EQU 070H 00000071 00415 pclath_save EQU 071H MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 9 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000072 00416 status_save EQU 072H 00000073 00417 fsr_save EQU 073H 00000074 00418 save_fsr EQU 074H 00419 ; END 00420 00000075 00421 mul10 EQU 075H 00000076 00422 mul101 EQU 076H 00000075 00423 getmes_wk EQU 075H 00000076 00424 getmes_wk1 EQU 076H 00000077 00425 com_cn EQU 077H 00000078 00426 byte_cn EQU 078H 00000078 00427 com_fsr EQU 078H 00000079 00428 ind EQU 079H 0000007A 00429 dest EQU 07AH 0000007B 00430 dest1 EQU 07BH 0000007C 00431 data0 EQU 07CH ; a data for transmit to ethernet chip 0000007D 00432 wk EQU 07DH 0000007E 00433 wk1 EQU 07EH 0000007F 00434 wk2 EQU 07FH 0000007F 00435 common EQU 07FH 00436 00437 ;----------------------------------------------------------------------------------- 00438 ; 10進変換用エリア 00439 ;----------------------------------------------------------------------------------- 00440 ; PAGE 2 00441 ; 00442 ; バイナリ→10進数変換用 00000120 00443 decimal_top EQU 120H 00444 00445 00446 ;----------------------------------------------------------------------------------- 00447 ; RS232C送信先データ 00448 ;----------------------------------------------------------------------------------- 00449 ; PAGE 3 00450 ; org 190h 00000190 00451 on_ether EQU 190H ; 宛て先Ethernetアドレス 00000191 00452 on_ether1 EQU 191H 00000192 00453 on_ether2 EQU 192H 00000193 00454 on_ether3 EQU 193H 00000194 00455 on_ether4 EQU 194H 00000195 00456 on_ether5 EQU 195H 00000196 00457 on_ip EQU 196H ; 宛て先IPアドレス 00000197 00458 on_ip1 EQU 197H 00000198 00459 on_ip2 EQU 198H 00000199 00460 on_ip3 EQU 199H 0000019A 00461 on_port EQU 19AH ; 宛て先ポート番号 0000019A 00462 on_port1 EQU 19AH 0000019C 00463 on_rate EQU 19CH ; 設定されているボーレート 0000019D 00464 on_flow EQU 19DH ; =0 0000019E 00465 transmitted EQU 19EH 000001A0 00466 skb EQU 1A0H 00467 ;----------------------------------------------------------------------------------- 00468 ; プログラムエントリ MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 10 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00469 ;----------------------------------------------------------------------------------- 0000 00470 ORG 0 ; リセットベクタ(=0000h) 0000 300B 00471 MOVLW HIGH (start) ; スタートアップルーチンへ 00472 0001 008A 00473 MOVWF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 0002 2BDB 00474 GOTO start 00475 00476 ;----------------------------------------------------------------------------------- 00477 ; 割り込み処理 00478 ; 00479 ; スタック消費を押さえるため、割り込み処理内ではcallしてはいけない。 00480 ;----------------------------------------------------------------------------------- 00481 0004 00482 org 4 ; 割り込みベクタ(=0004h) 0004 00483 interrupt 00484 ;----------------------------------------------------------------------------------- 00485 ; コンテキスト待避処理 0004 00F0 00486 movwf w_save ; Wレジスタ保存 0005 0E03 00487 swapf STATUS, 0 ; STATUSレジスタを保存 0006 0183 00488 clrf STATUS ; STATUSを0にする 0007 00F2 00489 movwf status_save 0008 080A 00490 movf PCLATH,0 ; PCLATHを保存 0009 00F1 00491 movwf pclath_save 000A 018A 00492 clrf PCLATH ; PCLATH=0にする 000B 1383 00493 bcf STATUS,IRP 000C 0804 00494 movf FSR, 0 000D 00F3 00495 movwf fsr_save ; FSRを保存する 00496 ;-------------------------------------------------------------------------------; RB0割り 桙ン 000E 1E0B 00497 btfss INTCON,INTE 000F 2818 00498 GOTO int_next2 0010 1C8B 00499 BTFSS INTCON,INTF 0011 2818 00500 GOTO int_next2 00501 0012 108B 00502 bcf INTCON,INTF 0013 1683 00503 BSF STATUS,RP0 0014 1703 00504 BSF STATUS,RP1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0015 179D 00505 BSF on_flow,7 0016 1303 00506 BCF STATUS,RP1 0017 1283 00507 BCF STATUS,RP0 00508 ;-------------------------------------------------------------------------------; 0018 00509 int_next2 0018 180C 00510 BTFSC PIR1,TMR1IF 0019 281B 00511 goto int_tmr1 001A 2828 00512 goto int_next1 001B 00513 int_tmr1 001B 100C 00514 bcf PIR1,TMR1IF 001C 1683 00515 BSF STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 001D 0832 00516 MOVF dhcp_done,0 001E 397F 00517 andlw 7FH MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 11 LOC OBJECT CODE LINE SOURCE TEXT VALUE 001F 1D03 00518 btfss STATUS,Z Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0020 03B2 00519 DECF dhcp_done,1 0021 1283 00520 bcf STATUS,RP0 0022 00521 int_tmr2 0022 1683 00522 bsf STATUS,RP0 0023 3001 00523 MOVLW 1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0024 07B0 00524 ADDWF timer,1 0025 1803 00525 btfsc STATUS,C 0026 2856 00526 GOTO dec_tm 0027 0183 00527 dec_tm9 CLRF STATUS 00528 ;------------------------------------------------------------------------------- 0028 00529 int_next1 0028 1F0B 00530 btfss INTCON, PEIE 0029 2848 00531 goto int2 002A 1E8C 00532 btfss PIR1,RCIF ; RS232C受信? 002B 2848 00533 goto int2 00534 ;----------------------------------------------------------------------------------- 00535 ; シリアル受信割り込み処理 002C 1683 00536 bsf STATUS,RP0 00537 002D 301E 00538 MOVLW fifo_bottom - fifo_top Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 002E 023D 00539 SUBWF fifo_cn,0 002F 1803 00540 BTFSC 3,0 0030 2852 00541 GOTO rec_over 00542 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0031 083C 00543 movf fifo_buff,0 ; 現在のリング 0032 0084 00544 movwf FSR ;バッファのポインタ取得→fsrへ 0033 1283 00545 bcf STATUS,RP0 ; 0034 081A 00546 MOVF RCREG,0 ; リングバッ 0035 0080 00547 MOVWF INDF ;ファに受信データを保存 0036 1683 00548 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0037 0ABC 00549 incF fifo_buff,1 ; 次のアドレスに... 00550 0038 30DC 00551 MOVLW fifo_bottom Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0039 023C 00552 SUBWF fifo_buff,0 003A 1C03 00553 BTFSS 3,0 003B 283E 00554 GOTO int1_1 00555 003C 30BE 00556 MOVLW fifo_top Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 003D 00BC 00557 movwf fifo_buff Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 003E 0ABD 00558 int1_1 incf fifo_cn,1 ; リングバッファにあるデータバイト数++ 00559 ;----------------------------------------------------------------------------------- 003F 300F 00560 MOVLW #(fifo_bottom - fifo_top) / 2 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0040 023D 00561 subwf fifo_cn,0 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 12 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0041 1C03 00562 btfss 3,0 0042 2848 00563 goto int2 0043 1703 00564 bsf STATUS,RP1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0044 1C1D 00565 BTFSS on_flow,0 0045 2848 00566 GOTO int2 0046 0183 00567 CLRF STATUS 0047 1486 00568 BSF PORTB,1 0048 00569 int2 0048 0183 00570 CLRF STATUS 00571 ;-------------------------------------------------------------------------------; コンテキ スト復帰処理 0049 0873 00572 MOVF fsr_save,0 ; fsrを復帰 004A 0084 00573 MOVWF FSR 004B 0871 00574 MOVF pclath_save,0 ; pclathを復帰 004C 008A 00575 MOVWF PCLATH 004D 0E72 00576 swapf status_save,0 004E 0083 00577 movwf STATUS ; statusを復帰 004F 0EF0 00578 swapf w_save,1 0050 0E70 00579 swapf w_save,0 ; Wを復帰 00580 ; ISR終了 0051 0009 00581 retfie ; 割り込みルーチンからのリターン 00582 00583 00584 ; RS232C受信バッファオーバーフロー 0052 00585 rec_over 0052 1283 00586 bcf STATUS, RP0 0053 081A 00587 MOVF RCREG, 0 ; データを読んで捨てる 0054 1283 00588 bcf STATUS, RP0 0055 2848 00589 goto int2 00590 00591 00592 ;----------------------------------------------------------------------------------- 00593 ; ソケットのタイムアウトチェック 00594 ; 0056 00595 dec_tm 0056 1783 00596 bsf STATUS, IRP 0057 3004 00597 MOVLW SOCKETS Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0058 00B1 00598 MOVWF timer_cn 0059 30A1 00599 MOVLW (skb + 1) & 0FFH 005A 0084 00600 MOVWF FSR 005B 00601 dec_tm0 005B 0800 00602 MOVF INDF,0 005C 39F0 00603 andlw 0f0h 005D 1903 00604 btfsc STATUS, Z 005E 2868 00605 goto dec_tm1 005F 3010 00606 MOVLW 10H 0060 0280 00607 SUBWF INDF, 1 0061 0800 00608 movF INDF, 0 0062 39F0 00609 andlw 0f0h 0063 1D03 00610 btfss STATUS, Z 0064 2868 00611 goto dec_tm1 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 13 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0065 0384 00612 DECF FSR, 1 0066 0180 00613 CLRF INDF 0067 0A84 00614 INCF FSR,1 0068 00615 dec_tm1 0068 3010 00616 MOVLW 10H 0069 0784 00617 ADDWF FSR, 1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 006A 0BB1 00618 DECFSZ timer_cn, 1 006B 285B 00619 GOTO dec_tm0 006C 1383 00620 bcf STATUS, IRP 006D 2827 00621 goto dec_tm9 00622 00623 00624 00625 ;----------------------------------------------------------------------------------- 00626 ; 16進文字の取得ルーチン 00627 ; 006E 00628 getascii 006E 390F 00629 andlw 0fh 006F 0782 00630 ADDWF PCL, 1 0070 3430 3431 3432 00631 DT "0123456789ABCDEF" 3433 3434 3435 3436 3437 3438 3439 3441 3442 3443 3444 3445 3446 00632 ;----------------------------------------------------------------------------------- 00633 ; TCPのseq_noをインクリメントする 00634 ; 0080 00635 next_seq_no 0080 1683 00636 bsf STATUS,RP0 0081 3001 00637 movLW 1 ; +65536 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0082 07AC 00638 ADDWF seq_no2,1 0083 1803 00639 btfsc STATUS, C Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0084 07AD 00640 ADDWF seq_no3,1 0085 1283 00641 bcf STATUS,RP0 0086 0008 00642 RETURN 00643 00644 00645 ;----------------------------------------------------------------------------------- 00646 ; TCPのseq_noをインクリメントする。 00647 ; 0087 00648 inc_seq_no 0087 1783 00649 bsf STATUS,IRP 0088 3003 00650 movLW .3 0089 0784 00651 ADDWF FSR,1 008A 3001 00652 movLW .1 008B 0780 00653 ADDWF INDF,1 008C 0384 00654 DECF FSR,1 008D 1803 00655 btfsc STATUS,C 008E 0780 00656 addwf INDF,1 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 14 LOC OBJECT CODE LINE SOURCE TEXT VALUE 008F 0384 00657 DECF FSR,1 0090 1803 00658 btfsc STATUS,C 0091 0780 00659 addwf INDF,1 0092 0384 00660 DECF FSR,1 0093 1803 00661 btfsc STATUS,C 0094 0780 00662 addwf INDF,1 0095 1383 00663 bcf STATUS,IRP 0096 0008 00664 retURN 00665 00666 ;----------------------------------------------------------------------------------- 00667 ; TCPのseq_noにip_lengthを加算する。 00668 ; 0097 00669 add_seq_no 0097 1783 00670 bsf STATUS,IRP 0098 3003 00671 movLW .3 0099 0784 00672 ADDWF FSR,1 00673 009A 083C 00674 MOVF ip_length1,0 009B 0780 00675 addwf INDF,1 009C 0384 00676 DECF FSR,1 009D 3001 00677 movlw 1 009E 1803 00678 btfsc STATUS,C 009F 0780 00679 addwf INDF,1 00A0 0384 00680 DECF FSR,1 00A1 1803 00681 btfsc STATUS,C 00A2 0780 00682 addwf INDF,1 00A3 0384 00683 DECF FSR,1 00A4 1803 00684 btfsc STATUS,C 00A5 0780 00685 addwf INDF,1 00686 00A6 3002 00687 movLW .2 00A7 0784 00688 ADDWF FSR,1 00A8 083B 00689 MOVF ip_length,0 00A9 0780 00690 addwf INDF,1 00AA 0384 00691 DECF FSR,1 00AB 3001 00692 movlw 1 00AC 1803 00693 btfsc STATUS,C 00AD 0780 00694 addwf INDF,1 00AE 0384 00695 DECF FSR,1 00AF 1803 00696 btfsc STATUS,C 00B0 0780 00697 addwf INDF,1 00B1 1383 00698 bcf STATUS,IRP 00B2 0008 00699 retURN 00700 00701 ;----------------------------------------------------------------------------------- 00702 ; TCPのack_noをインクリメントする。 00703 ; 00B3 00704 inc_ack_no 00B3 3001 00705 movLW 1 00B4 07D4 00706 ADDWF tcp_seq_no3,1 00B5 1803 00707 btfsc STATUS,C 00B6 07D3 00708 addwf tcp_seq_no2,1 00B7 1803 00709 btfsc STATUS,C MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 15 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00B8 07D2 00710 addwf tcp_seq_no1,1 00B9 1803 00711 btfsc STATUS,C 00BA 07D1 00712 addwf tcp_seq_no,1 00713 00BB 28D1 00714 goto copy_ack_no 00715 ; ret 00716 00717 ;----------------------------------------------------------------------------------- 00718 ; TCPのack_noにip_lengthを加算する。 00719 ; 00BC 00720 add_ack_no 00BC 3028 00721 MOVLW .20 + .20 00BD 02BC 00722 SUBWF ip_length1,1 00BE 3001 00723 movlw 1 00BF 1C03 00724 btfss STATUS,C 00C0 02BB 00725 subwf ip_length,1 00726 00C1 083C 00727 MOVF ip_length1,0 00C2 07D4 00728 ADDWF tcp_seq_no3,1 00C3 3001 00729 movlw 1 00C4 1803 00730 btfsc STATUS,C 00C5 07D3 00731 addwf tcp_seq_no2,1 00C6 1803 00732 btfsc STATUS,C 00C7 07D2 00733 addwf tcp_seq_no1,1 00C8 1803 00734 btfsc STATUS,C 00C9 07D1 00735 addwf tcp_seq_no,1 00736 00CA 083B 00737 MOVF ip_length,0 00CB 07D3 00738 ADDWF tcp_seq_no2,1 00CC 3001 00739 movlw 1 00CD 1803 00740 btfsc STATUS,C 00CE 07D2 00741 addwf tcp_seq_no1,1 00CF 1803 00742 btfsc STATUS,C 00D0 07D1 00743 addwf tcp_seq_no,1 00D1 00744 copy_ack_no 00D1 0878 00745 MOVF com_fsr,0 00D2 0084 00746 MOVWF FSR 00D3 300C 00747 MOVLW .12 00D4 0784 00748 ADDWF FSR,1 00D5 1783 00749 bsf STATUS,IRP 00D6 0851 00750 MOVF tcp_seq_no,0 00D7 0080 00751 MOVWF INDF 00D8 0A84 00752 INCF FSR,1 00D9 0852 00753 MOVF tcp_seq_no1,0 00DA 0080 00754 MOVWF INDF 00DB 0A84 00755 INCF FSR,1 00DC 0853 00756 MOVF tcp_seq_no2,0 00DD 0080 00757 MOVWF INDF 00DE 0A84 00758 INCF FSR,1 00DF 0854 00759 MOVF tcp_seq_no3,0 00E0 0080 00760 MOVWF INDF 00E1 1383 00761 bcf STATUS,IRP 00E2 0008 00762 retURN MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 16 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00763 00764 00765 ;----------------------------------------------------------------------------------- 00766 ; チェックサムの値をクリアする。 00767 ; 00E3 00768 clear_sum 00E3 01A7 00769 clrF sum 00E4 01A8 00770 clrF sum1 00E5 01A9 00771 clrF bytes ; HI byte/LO byteの識別用 00E6 0008 00772 retURN 00773 00774 00775 ;----------------------------------------------------------------------------------- 00776 ; エラーリカバリールーチン 00777 ;----------------------------------------------------------------------------------- 00E7 00778 overflow2 00E7 00779 overflow 00E7 0183 00780 clrF STATUS 00781 00E8 0187 00782 clrF PORTC 00E9 3021 00783 movlw 21h ; RTL8019AS STOP 00EA 2760 00784 call assert_wr0 00785 00EB 300C 00786 MOVLW HIGH (wait_ms) 00EC 008A 00787 MOVWF PCLATH 00ED 3002 00788 MOVLW .2 00EE 00A0 00789 MOVWF wait_cn Message[306]: Crossing page boundary -- ensure page bits are set. 00EF 24F0 00790 call wait_ms ; 10ms Wait 00F0 018A 00791 clrF PCLATH 00792 00F1 300A 00793 MOVLW 0AH 00F2 0087 00794 MOVWF PORTC 00F3 0100 00795 DB 01,00 00F4 2760 00796 call assert_wr0 00797 00F5 300B 00798 MOVLW 0BH 00F6 0087 00799 MOVWF PORTC 00F7 0100 00800 DB 01,00 00F8 2760 00801 call assert_wr0 00802 00F9 266B 00803 call initialize ; RTL8019を初期化 00804 00FA 300C 00805 MOVLW 0CH 00FB 0087 00806 MOVWF PORTC ; RCR 00FC 3004 00807 movlw B'000100' ; MONITOR解除 00FD 2760 00808 call assert_wr0 00809 00FE 300D 00810 MOVLW 0DH 00FF 0087 00811 MOVWF PORTC ; TCR 0100 0100 00812 DB 01,00 ;clrw ; L/B解除 0101 2760 00813 call assert_wr0 00814 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 17 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0102 2925 00815 goto main0 ; 通常処理に戻る 00816 00817 ;=================================================================================== 00818 ; メインルーチン 00819 ;=================================================================================== 0103 00820 main 00821 0103 0187 00822 CLRF PORTC ;rc 0104 3022 00823 movlw 22h 0105 2760 00824 call assert_wr0 ; PAGE0に戻す 00825 0106 300C 00826 MOVLW 0CH 0107 0087 00827 MOVWF PORTC 0108 3004 00828 movlw B'000100' 0109 2760 00829 call assert_wr0 010A 300D 00830 MOVLW 0DH 010B 0087 00831 MOVWF PORTC 010C 0100 00832 DB 01,00 ; L/B解除 010D 2760 00833 call assert_wr0 00834 010E 300C 00835 MOVLW HIGH (wait_ms) 010F 008A 00836 MOVWF PCLATH 0110 3064 00837 MOVLW .100 0111 00A0 00838 MOVWF wait_cn Message[306]: Crossing page boundary -- ensure page bits are set. 0112 24F0 00839 call wait_ms ; 100ms Wait 0113 018A 00840 clrF PCLATH 00841 0114 30A0 00842 MOVLW this_ip 0115 0084 00843 MOVWF FSR 0116 0800 00844 MOVF INDF,0 0117 0A84 00845 INCF FSR,1 0118 0400 00846 iorwf INDF,0 0119 0A84 00847 INCF FSR,1 011A 0400 00848 iorwf INDF,0 011B 0A84 00849 INCF FSR,1 011C 0400 00850 iorwf INDF,0 011D 1D03 00851 btfss STATUS,2 011E 2925 00852 goto main0 ; 自分のIPアドレスが0.0.0.0? 011F 00853 do_dhcp 011F 0183 00854 CLRF STATUS 0120 3010 00855 MOVLW HIGH (dhcp) 0121 008A 00856 MOVWF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 0122 2076 00857 call dhcp 0123 3001 00858 MOVLW $ >> 8 0124 008A 00859 MOVWF PCLATH 00860 ;=================================================================================== 00861 ; メインループ 00862 ;=================================================================================== 0125 00863 main0 00864 0125 1683 00865 bsf STATUS,RP0 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 18 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00866 ; RS232C受信? 0126 3000 00867 MOVLW 0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0127 023D 00868 SUBWF fifo_cn,0 0128 1D03 00869 BTFSS 3,2 0129 293B 00870 GOTO receive232c 012A 3080 00871 MOVLW 80h Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 012B 0232 00872 SUBWF dhcp_done,0 012C 1903 00873 BTFSC 3,2 012D 291F 00874 GOTO do_dhcp 012E 1283 00875 bcf STATUS,RP0 00876 012F 018A 00877 CLRF PCLATH 0130 3007 00878 MOVLW .7 0131 0087 00879 MOVWF PORTC 0132 276D 00880 call assert_rd ; RCRリード 00881 0133 1A7C 00882 btfsc data0,4 0134 28E7 00883 goto overflow 0135 19FC 00884 btfsc data0,3 0136 28E7 00885 goto overflow 0137 197C 00886 btfsc data0,2 0138 28E7 00887 goto overflow 0139 293F 00888 goto get_packet ; パケット受信あり 013A 2925 00889 main99 goto main0 00890 013B 00891 receive232c 013B 1283 00892 bcf STATUS,RP0 013C 3011 00893 MOVLW serial_tx >> 8 013D 008A 00894 MOVWF PCLATH ; receive232c処理へ Message[306]: Crossing page boundary -- ensure page bits are set. 013E 294E 00895 goto serial_tx 00896 00897 00898 00899 ;----------------------------------------------------------------------------------- 00900 ; パケット受信処理 00901 ;----------------------------------------------------------------------------------- 013F 00902 get_packet 00903 ; PAGE 1 013F 0187 00904 CLRF PORTC 0140 3062 00905 movlw B'01100010' 0141 2760 00906 call assert_wr0 ; PAGE1にする 00907 0142 3007 00908 MOVLW .7 0143 0087 00909 MOVWF PORTC 0144 276D 00910 call assert_rd 0145 087C 00911 MOVF data0,0 ; カレントページを取得 0146 00B1 00912 MOVWF curr 00913 ; PAGE 0 0147 0187 00914 CLRF PORTC 0148 3022 00915 movlw B'00100010' MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 19 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0149 2760 00916 call assert_wr0 ; PAGE0に戻す 00917 014A 3003 00918 MOVLW .3 014B 0087 00919 MOVWF PORTC 014C 276D 00920 call assert_rd ; BNDYをよむ 00921 014D 0AFC 00922 INCF data0,1 ; BNDY++ 014E 3080 00923 MOVLW PAGE_STOP ; overlap計算 014F 027C 00924 SUBWF data0,0 0150 1C03 00925 BTFSS 3,0 0151 2954 00926 GOTO packet1 00927 0152 3046 00928 MOVLW PAGE_START 0153 00FC 00929 MOVWF data0 0154 00930 packet1 0154 0831 00931 MOVF curr,0 ; (BNDY+1)==CURRの場合は新規データなし 0155 027C 00932 SUBWF data0,0 0156 1903 00933 BTFSC 3,2 0157 2925 00934 goto main0 ; 中断 00935 00936 00937 ;----------------------------------------------------------------------------------- 00938 ; RTL8019ステータス+Ethernetヘッダの読み出し 0158 01AD 00939 CLRF remote_adr 0159 087C 00940 MOVF data0,0 015A 00AE 00941 MOVWF remote_adr1 015B 3012 00942 MOVLW NE_SIZE + PACKET_SIZE 015C 00AF 00943 MOVWF remote_len 015D 01B0 00944 CLRF remote_len1 015E 2711 00945 call remote_read 00946 015F 3012 00947 MOVLW NE_SIZE + PACKET_SIZE ; Loop Counter 0160 00A6 00948 MOVWF gcn1 0161 1383 00949 bcf STATUS,IRP 0162 30DE 00950 MOVLW ne_header ; アドレスne_headerへ読み出す 0163 0084 00951 MOVWF FSR 0164 3010 00952 MOVLW 10H 0165 0087 00953 MOVWF PORTC 0166 00954 get_packet0 0166 1009 00955 bcf PORTE,0 ;RD 0167 1E87 00956 btfss PORTC,RDY ; ~Wait 0168 2967 00957 goto $-1 0169 0808 00958 MOVF PORTD,0 00959 016A 1409 00960 bsf PORTE,0 ;RD 016B 0080 00961 movwf INDF ;INDF ; *INDF = data バッファへセット 016C 0A84 00962 INCF FSR,1 016D 0BA6 00963 DECFSZ gcn1,1 016E 2966 00964 GOTO get_packet0 00965 ; 00966 ; Ethernetヘッダによって処理を分岐 016F 1683 00967 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 20 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0170 1C5E 00968 btfss ne_stat,0 0171 297E 00969 goto main9 0172 3008 00970 MOVLW COM_PROTO ; typeの上位8ビットが8以外はスキップ Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0173 026E 00971 SUBWF eth_type,0 0174 1D03 00972 BTFSS 3,2 0175 297E 00973 GOTO main9 0176 3000 00974 MOVLW IP_PROTO ; IPプロトコル処理へ分岐 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0177 026F 00975 SUBWF eth_type1,0 0178 1903 00976 BTFSC 3,2 0179 2A0A 00977 GOTO do_ip 017A 3006 00978 MOVLW ARP_PROTO ; ARPプロトコル処理へ分岐 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 017B 026F 00979 SUBWF eth_type1,0 017C 1903 00980 BTFSC 3,2 017D 299B 00981 GOTO do_arp ; ARPプロトコル処理へ分岐 00982 ; goto main9 ; その他 00983 ;----------------------------------------------------------------------------------- 017E 00984 main9 017E 1383 00985 bcf STATUS,IRP 017F 1303 00986 bcf STATUS,RP1 0180 1683 00987 bsf STATUS,RP0 0181 3046 00988 MOVLW PAGE_START ; Error Check and Recovery Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0182 025F 00989 SUBWF ne_next,0 0183 1C03 00990 BTFSS 3,0 0184 28E7 00991 GOTO overflow2 0185 3080 00992 MOVLW PAGE_STOP ; Error Check and Recovery Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0186 025F 00993 SUBWF ne_next,0 0187 1803 00994 BTFSC 3,0 0188 28E7 00995 GOTO overflow2 00996 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0189 03DF 00997 DECF ne_next,1 ; 次のバンダリを計算 018A 3046 00998 MOVLW PAGE_START Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 018B 025F 00999 SUBWF ne_next,0 018C 1803 01000 BTFSC 3,0 018D 2990 01001 GOTO packet11 01002 018E 307F 01003 MOVLW PAGE_STOP-1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 018F 00DF 01004 MOVWF ne_next 0190 01005 packet11 0190 1283 01006 bcf STATUS,RP0 01007 0191 0187 01008 CLRF PORTC 0192 3022 01009 movlw B'00100010' 0193 2760 01010 call assert_wr0 01011 0194 3003 01012 MOVLW .3 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 21 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0195 0087 01013 MOVWF PORTC 0196 30DF 01014 MOVLW ne_next 0197 0084 01015 MOVWF FSR 0198 0800 01016 MOVF INDF,0 ; バンダリポインタセット 0199 2760 01017 call assert_wr0 019A 293A 01018 goto main99 01019 01020 01021 01022 ;----------------------------------------------------------------------------------- 01023 ; ARPプロトコル処理 01024 ;----------------------------------------------------------------------------------- 019B 01025 do_arp 019B 1283 01026 bcf STATUS,RP0 019C 3012 01027 MOVLW NE_SIZE + PACKET_SIZE 019D 00AD 01028 MOVWF remote_adr 019E 30E0 01029 MOVLW ne_cn_l 019F 0084 01030 MOVWF FSR 01A0 0800 01031 MOVF INDF,0 01A1 00AF 01032 MOVWF remote_len 01A2 0A84 01033 INCF FSR,1 01A3 0800 01034 MOVF INDF,0 01A4 00B0 01035 MOVWF remote_len1 01036 01A5 3012 01037 MOVLW NE_SIZE + PACKET_SIZE 01A6 02AF 01038 SUBWF remote_len,1 01A7 3001 01039 movlw 1 01A8 1C03 01040 btfss STATUS,C 01A9 02B0 01041 subwf remote_len1,1 01AA 2711 01042 call remote_read 01043 01AB 3039 01044 MOVLW ip_header ; アドレスip_header以降にデータを読み出 キ 01AC 0084 01045 MOVWF FSR 01AD 01046 get_packet10 01AD 082F 01047 movf remote_len,0 01AE 0430 01048 iorwf remote_len1,0 01AF 1903 01049 btfsc STATUS,Z 01B0 29CB 01050 goto get_packet2 ; 読み込み終了? 01051 01B1 1009 01052 bcf PORTE,0 01B2 1E87 01053 btfss PORTC,5 ; ~Wait 01B3 29B2 01054 goto $-1 01B4 0808 01055 MOVF PORTD,0 01B5 1409 01056 bsf PORTE,0 01B6 0080 01057 movwf INDF 01B7 0A84 01058 INCF FSR,1 01059 01B8 3001 01060 movlw 1 ; レングスをデクリメント 01B9 02AF 01061 SUBWF remote_len,1 01BA 1C03 01062 btfss STATUS,C 01BB 02B0 01063 SUBWF remote_len1,1 01064 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 22 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01BC 1F84 01065 btfss FSR,7 ; over flow? 01BD 29AD 01066 goto get_packet10 01067 ; 80h以降 01BE 01068 get_packet20 01BE 082F 01069 movf remote_len,0 01BF 0430 01070 iorwf remote_len1,0 01C0 1903 01071 btfsc STATUS,Z 01C1 29CB 01072 goto get_packet2 ; 読み込み終了 01073 01C2 1009 01074 bcf PORTE,0 01C3 1E87 01075 btfss PORTC,5 ; ~Wait 01C4 29C3 01076 goto $-1 01077 ; MOVF PORTD,0 01C5 1409 01078 bsf PORTE,0 01079 ; movwf INDF 01080 01C6 3001 01081 movlw 1 01C7 02AF 01082 subwf remote_len,1 01C8 1C03 01083 btfss STATUS,C 01C9 02B0 01084 subwf remote_len1,1 01CA 29BE 01085 goto get_packet20 01086 ; 01087 ; ARPヘッダの解析 01CB 01088 get_packet2 01CB 3000 01089 MOVLW 0 ; arp_codeが0001以外なら捨てる 01CC 023F 01090 SUBWF arp_ope,0 01CD 1D03 01091 BTFSS 3,2 01CE 297E 01092 GOTO main9 01093 01CF 3001 01094 MOVLW 1 01D0 0240 01095 SUBWF arp_ope1,0 01D1 1903 01096 BTFSC 3,2 01D2 29DB 01097 GOTO arp_req 01098 01D3 3002 01099 MOVLW 2 01D4 0240 01100 SUBWF arp_ope1,0 01D5 1903 01101 BTFSC 3,2 01D6 29D8 01102 GOTO arp_reply 01103 01D7 297E 01104 goto main9 01D8 01105 arp_reply 01D8 3009 01106 MOVLW HIGH (ser_arp) 01D9 008A 01107 MOVWF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 01DA 291C 01108 goto ser_arp 01DB 01109 arp_req 01DB 01110 arp 01DB 30A0 01111 MOVLW this_ip ; this_ipはBANK 1にある。 01DC 0084 01112 MOVWF FSR 01DD 0851 01113 MOVF arp_dest_ip,0 ; ARPのIPアドレスが自分と同じか? 01DE 0200 01114 SUBWF INDF,0 01DF 1D03 01115 BTFSS 3,2 01E0 297E 01116 GOTO main9 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 23 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01E1 0A84 01117 INCF FSR,1 01118 01E2 0852 01119 MOVF arp_dest_ip1,0 01E3 0200 01120 SUBWF INDF,0 01E4 1D03 01121 BTFSS 3,2 01E5 297E 01122 GOTO main9 01E6 0A84 01123 INCF FSR,1 01124 01E7 0853 01125 MOVF arp_dest_ip2,0 01E8 0200 01126 SUBWF INDF,0 01E9 1D03 01127 BTFSS 3,2 01EA 297E 01128 GOTO main9 01EB 0A84 01129 INCF FSR,1 01EC 0854 01130 MOVF arp_dest_ip3,0 01ED 0200 01131 SUBWF INDF,0 01EE 1D03 01132 BTFSS 3,2 01EF 297E 01133 GOTO main9 01134 01135 01136 ; 自分へのARP要求である 01F0 2799 01137 call prepare_ether2 01138 01F1 3008 01139 movlw COM_PROTO 01F2 274B 01140 call assert_wr 01F3 3006 01141 movlw ARP_PROTO 01F4 274B 01142 call assert_wr 01143 01F5 3010 01144 MOVLW arp1 >> 8 01F6 008A 01145 movwf PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 01F7 209D 01146 call arp1 01F8 018A 01147 CLRF PCLATH 01F9 0187 01148 CLRF PORTC 01FA 3022 01149 movlw B'00100010' 01FB 2760 01150 call assert_wr0 01151 01FC 3004 01152 MOVLW .4 01FD 0087 01153 MOVWF PORTC 01FE 3040 01154 movlw PAGE_BEGIN 01FF 2760 01155 call assert_wr0 01156 0200 3005 01157 MOVLW .5 0201 0087 01158 MOVWF PORTC 0202 303C 01159 movlw .60 0203 2760 01160 call assert_wr0 01161 0204 3006 01162 MOVLW .6 0205 0087 01163 MOVWF PORTC 0206 0100 01164 DB 01,00 0207 2760 01165 call assert_wr0 01166 0208 2789 01167 call transmit ; ARP応答を送信する 0209 297E 01168 goto main9 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 24 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01169 01170 01171 ;----------------------------------------------------------------------------------- 01172 ; IPプロトコル受信処理 01173 ;----------------------------------------------------------------------------------- 020A 01174 do_ip 020A 1283 01175 bcf STATUS,RP0 020B 3012 01176 MOVLW NE_SIZE + PACKET_SIZE 020C 00AD 01177 MOVWF remote_adr 020D 30E0 01178 MOVLW ne_cn_l 020E 0084 01179 MOVWF FSR 01180 ; mov fsr,#ip_length 020F 0800 01181 MOVF INDF,0 0210 00AF 01182 MOVWF remote_len 0211 0A84 01183 INCF FSR,1 0212 0800 01184 MOVF INDF,0 0213 00B0 01185 MOVWF remote_len1 01186 0214 3012 01187 MOVLW NE_SIZE + PACKET_SIZE ; 受信バイト数からEtherヘッダ長 引く 0215 02AF 01188 SUBWF remote_len,1 0216 3001 01189 movlw 1 0217 1C03 01190 btfss STATUS,C 0218 02B0 01191 subwf remote_len1,1 0219 2711 01192 call remote_read 01193 ; 01194 ; IPパケットの受信 021A 3039 01195 MOVLW ip_header ; アドレスip_headerへデータを読み込む 021B 0084 01196 MOVWF FSR 01197 021C 1009 01198 bcf PORTE,0 021D 1E87 01199 btfss PORTC,5 ; ~Wait 021E 2A1D 01200 goto $-1 021F 0808 01201 MOVF PORTD,0 0220 1409 01202 bsf PORTE,0 0221 0080 01203 movwf INDF ; 1バイト読む! 0222 0A84 01204 INCF FSR,1 01205 0223 3001 01206 movlw 1 0224 02AF 01207 subwf remote_len,1 0225 1C03 01208 btfss STATUS,C 0226 02B0 01209 subwf remote_len1,1 01210 0227 0839 01211 MOVF ip_ver_len,0 ; 残りバイト数算出 0228 00A6 01212 MOVWF gcn1 0229 300F 01213 MOVLW 0FH 022A 05A6 01214 ANDWF gcn1,1 01215 022B 1003 01216 BCF 3,0 022C 0DA6 01217 RLF gcn1,1 022D 0DA6 01218 RLF gcn1,1 022E 03A6 01219 DECF gcn1,1 ; IPヘッダからIPヘッダサイズを計算 022F 2242 01220 call copy_toram ; RAMに転送 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 25 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01221 0230 01222 ip_get_packet2 0230 3045 01223 MOVLW 45H ; IP Version 4 ? 0231 0239 01224 SUBWF ip_ver_len,0 0232 1D03 01225 BTFSS 3,2 0233 2A40 01226 GOTO ip_get_packet9 0234 3006 01227 MOVLW TCP_PROTO ; TCP受信処理へ 0235 0242 01228 SUBWF ip_proto,0 0236 1903 01229 BTFSC 3,2 0237 2B81 01230 GOTO tcp 0238 3011 01231 MOVLW UDP_PROTO ; UDP受信処理へ 0239 0242 01232 SUBWF ip_proto,0 023A 1903 01233 BTFSC 3,2 023B 2AC3 01234 GOTO udp 023C 3001 01235 MOVLW ICMP_PROTO ; ICMP受信処理へ 023D 0242 01236 SUBWF ip_proto,0 023E 1903 01237 BTFSC 3,2 023F 2A7C 01238 GOTO icmp 0240 01239 ip_get_packet9 0240 243D 01240 call abort ; リモートDMA中止 0241 297E 01241 goto main9 01242 01243 ;----------------------------------------------------------------------------------- 01244 ; gcn1のバイト数分データを読み込む 01245 ;----------------------------------------------------------------------------------- 0242 01246 copy_toram 0242 1009 01247 bcf PORTE,0 0243 1E87 01248 btfss PORTC,5 ; ~Wait 0244 2A43 01249 goto $-1 0245 0808 01250 MOVF PORTD,0 0246 1409 01251 bsf PORTE,0 0247 0080 01252 movwf INDF ; *INDF = data 0248 0A84 01253 INCF FSR,1 ; fsr++ 01254 0249 3001 01255 movlw 1 024A 02AF 01256 subwf remote_len,1 024B 1C03 01257 btfss STATUS,C 024C 02B0 01258 subwf remote_len1,1 01259 024D 0BA6 01260 DECFSZ gcn1,1 024E 2A42 01261 GOTO copy_toram 024F 0008 01262 retURN 01263 01264 01265 01266 ;----------------------------------------------------------------------------------- 01267 ; パケットの残りをバッファRAMへ 01268 ;----------------------------------------------------------------------------------- 0250 01269 get_remain 0250 01270 get_remain0 0250 082F 01271 movf remote_len,0 0251 0430 01272 iorwf remote_len1,0 0252 1903 01273 btfsc STATUS,Z MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 26 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0253 2A7A 01274 goto get_remain9 01275 0254 1009 01276 bcf PORTE,0 0255 1E87 01277 btfss PORTC,5 ; ~Wait 0256 2A55 01278 goto $-1 0257 0808 01279 MOVF PORTD,0 0258 1409 01280 bsf PORTE,0 0259 0080 01281 movwf INDF ; 表にセット 025A 0A84 01282 INCF FSR,1 01283 025B 3001 01284 movlw 1 025C 02AF 01285 subwf remote_len,1 025D 1C03 01286 btfss STATUS,C 025E 02B0 01287 subwf remote_len1,1 01288 025F 3090 01289 movlw .16+.128 0260 0704 01290 addwf FSR,0 0261 1C03 01291 btfss STATUS,C 0262 2A50 01292 goto get_remain0 01293 0263 3020 01294 MOVLW 20H ; バンクを変えて更に読み込み 0264 0084 01295 MOVWF FSR 0265 1783 01296 bsf STATUS,IRP 0266 01297 get_remain20 0266 082F 01298 movf remote_len,0 0267 0430 01299 iorwf remote_len1,0 0268 1903 01300 btfsc STATUS,Z 0269 2A7A 01301 goto get_remain9 ; 読み込み終了 01302 026A 1009 01303 bcf PORTE,0 026B 1E87 01304 btfss PORTC,5 ; ~Wait 026C 2A6B 01305 goto $-1 026D 0808 01306 MOVF PORTD,0 026E 1409 01307 bsf PORTE,0 026F 0080 01308 movwf INDF ; 裏にセット 0270 0A84 01309 INCF FSR,1 01310 0271 3001 01311 movlw 1 0272 02AF 01312 subwf remote_len,1 0273 1C03 01313 btfss STATUS,C 0274 02B0 01314 subwf remote_len1,1 01315 0275 3090 01316 movlw .16+.128 0276 0704 01317 addwf FSR,0 0277 1C03 01318 btfss STATUS,C 0278 2A66 01319 goto get_remain20 01320 0279 01321 get_remain30 0279 243D 01322 call abort 01323 01324 ; movf remote_len,0 01325 ; iorwf remote_len[1],0 01326 ; btfsc z MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 27 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01327 ; goto get_remain9 ; 読み込み終了 01328 ; 01329 ; bcf RD 01330 ; btfss RDY ; ~Wait 01331 ; goto $-1 01332 ; bsf RD 01333 ; 01334 ; movlw 1 01335 ; subwf remote_len[0],1 01336 ; btfss STATUS,C 01337 ; subwf remote_len[1],1 01338 ; goto get_remain30 027A 01339 get_remain9 027A 1383 01340 bcf STATUS,IRP 027B 0008 01341 retURN 01342 01343 01344 01345 01346 ;----------------------------------------------------------------------------------- 01347 ; ICMPプロトコル処理 01348 ;----------------------------------------------------------------------------------- 027C 01349 icmp 027C 2250 01350 call get_remain ; RTL8019からデータを転送 027D 3008 01351 MOVLW .8 ; typeが08h以外は捨てる 027E 024D 01352 SUBWF icmp_type,0 027F 1D03 01353 BTFSS 3,2 0280 297E 01354 GOTO main9 0281 3000 01355 MOVLW 0 ; codeが08h以外は捨てる 0282 024E 01356 SUBWF icmp_code,0 0283 1D03 01357 BTFSS 3,2 0284 297E 01358 GOTO main9 0285 01359 ping 0285 3001 01360 MOVLW ICMP_PROTO ; プロトコル=ICMP 0286 00B7 01361 MOVWF proto 0287 27AE 01362 call prepare_ip ; IPパケットの準備 01363 ; 0288 3022 01364 MOVLW PACKET_SIZE + IP_SIZE 0289 00AD 01365 MOVWF remote_adr 028A 3040 01366 MOVLW PAGE_BEGIN 028B 00AE 01367 MOVWF remote_adr1 028C 083C 01368 MOVF ip_length1,0 ;ne_cn_l 028D 00AF 01369 MOVWF remote_len 028E 3013 01370 MOVLW IP_SIZE - 1 028F 02AF 01371 SUBWF remote_len,1 0290 01B0 01372 CLRF remote_len1 0291 26FB 01373 call remote_write 01374 0292 20E3 01375 call clear_sum ; チェックサムの値をクリア 01376 0293 3010 01377 MOVLW 10H 0294 0087 01378 MOVWF PORTC 0295 273B 01379 call assert_wr2times ; type : code MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 28 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0296 273B 01380 call assert_wr2times ; sum High : Low 01381 0297 083C 01382 MOVF ip_length1,0 ;ne_cn_l 0298 00A6 01383 MOVWF gcn1 0299 3018 01384 MOVLW IP_SIZE + 4 ;sub gcn1,#IP_SIZE + 4 029A 02A6 01385 SUBWF gcn1,1 029B 3051 01386 MOVLW icmp_header + 4 029C 0084 01387 MOVWF FSR 029D 01388 icmp10 029D 0800 01389 MOVF INDF,0 029E 0A84 01390 INCF FSR,1 029F 274B 01391 call assert_wr 01392 02A0 3090 01393 movlw .16 + .128 02A1 0704 01394 addwf FSR,0 02A2 1803 01395 btfsc STATUS,C 02A3 2ABF 01396 goto icmp20 02A4 0BA6 01397 icmp19 DECFSZ gcn1,1 02A5 2A9D 01398 GOTO icmp10 02A6 1383 01399 bcf STATUS,IRP 01400 02A7 0100 01401 DB 01,00 ;clrw 02A8 274B 01402 call assert_wr 01403 02A9 3024 01404 MOVLW PACKET_SIZE + IP_SIZE + 2 02AA 00AD 01405 MOVWF remote_adr 02AB 3040 01406 MOVLW PAGE_BEGIN 02AC 00AE 01407 MOVWF remote_adr1 02AD 27B8 01408 call set_checksum 01409 02AE 3004 01410 MOVLW 4H 02AF 0087 01411 MOVWF PORTC 02B0 3040 01412 movlw PAGE_BEGIN ; transmit page is start page 02B1 2760 01413 call assert_wr0 01414 02B2 3005 01415 MOVLW .5 02B3 0087 01416 MOVWF PORTC 02B4 30E0 01417 MOVLW ne_cn_l 02B5 0084 01418 MOVWF FSR 02B6 0800 01419 MOVF INDF,0 02B7 2760 01420 call assert_wr0 01421 02B8 3006 01422 MOVLW .6 02B9 0087 01423 MOVWF PORTC 02BA 0A84 01424 INCF FSR,1 02BB 0800 01425 MOVF INDF,0 02BC 2760 01426 call assert_wr0 01427 02BD 2789 01428 call transmit ; PINGの応答を送信 02BE 297E 01429 goto main9 02BF 01430 icmp20 02BF 3020 01431 MOVLW 20H 02C0 0084 01432 MOVWF FSR MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 29 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02C1 1783 01433 bsf STATUS,IRP 02C2 2AA4 01434 goto icmp19 01435 01436 01437 01438 ;----------------------------------------------------------------------------------- 01439 ; UDP 01440 ;----------------------------------------------------------------------------------- 02C3 01441 udp 02C3 3008 01442 MOVLW .8 02C4 00A6 01443 MOVWF gcn1 02C5 2242 01444 call copy_toram 01445 01446 ; BOOTPポートのチェック 02C6 3000 01447 MOVLW BOOTPC_PORT / .256 02C7 024F 01448 SUBWF udp_tar_port,0 02C8 1D03 01449 BTFSS 3,2 02C9 2AE3 01450 GOTO udp_1 02CA 3044 01451 MOVLW BOOTPC_PORT & 0FFH ; BOOTP処理へ 02CB 0250 01452 SUBWF udp_tar_port1,0 02CC 1903 01453 BTFSC 3,2 02CD 2B23 01454 GOTO bootp_res 01455 02CE 30A0 01456 MOVLW this_ip 02CF 0084 01457 MOVWF FSR 02D0 0800 01458 MOVF INDF,0 ; 自分への送信データか? 02D1 0249 01459 SUBWF ip_dest,0 02D2 1D03 01460 BTFSS 3,2 02D3 297E 01461 GOTO main9 01462 02D4 0A84 01463 INCF FSR,1 02D5 0800 01464 MOVF INDF,0 02D6 024A 01465 SUBWF ip_dest1,0 02D7 1D03 01466 BTFSS 3,2 02D8 297E 01467 GOTO main9 01468 02D9 0A84 01469 INCF FSR,1 02DA 0800 01470 MOVF INDF,0 02DB 024B 01471 SUBWF ip_dest2,0 02DC 1D03 01472 BTFSS 3,2 02DD 297E 01473 GOTO main9 02DE 0A84 01474 INCF FSR,1 02DF 0800 01475 MOVF INDF,0 02E0 024C 01476 SUBWF ip_dest3,0 02E1 1D03 01477 BTFSS 3,2 02E2 297E 01478 GOTO main9 01479 01480 ; LCDポートのチェック 02E3 01481 udp_1 02E3 30B5 01482 MOVLW lcd_port & 0FFH 02E4 0084 01483 MOVWF FSR 02E5 0800 01484 MOVF INDF,0 02E6 024F 01485 SUBWF udp_tar_port,0 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 30 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02E7 1D03 01486 BTFSS 3,2 02E8 2AEE 01487 GOTO udp_2 02E9 0A84 01488 INCF FSR,1 02EA 0800 01489 MOVF INDF,0 02EB 0250 01490 SUBWF udp_tar_port1,0 02EC 1903 01491 BTFSC 3,2 02ED 2B05 01492 GOTO udp_lcd_tag 02EE 01493 udp_2 02EE 30B7 01494 MOVLW para_port & 0FFH 02EF 0084 01495 MOVWF FSR 02F0 0800 01496 MOVF INDF,0 02F1 024F 01497 SUBWF udp_tar_port,0 02F2 1D03 01498 BTFSS 3,2 02F3 2AF9 01499 GOTO udp_3 01500 02F4 0A84 01501 INCF FSR,1 02F5 0800 01502 MOVF INDF,0 02F6 0250 01503 SUBWF udp_tar_port1,0 02F7 1903 01504 BTFSC 3,2 02F8 2B08 01505 GOTO udp_parallel_tag 02F9 01506 udp_3 02F9 30B9 01507 MOVLW serial_port & 0FFH 02FA 0084 01508 MOVWF FSR 02FB 0800 01509 MOVF INDF,0 02FC 024F 01510 SUBWF udp_tar_port,0 02FD 1D03 01511 BTFSS 3,2 02FE 2B04 01512 GOTO udp_4 02FF 0A84 01513 INCF FSR,1 0300 0800 01514 MOVF INDF,0 0301 0250 01515 SUBWF udp_tar_port1,0 0302 1903 01516 BTFSC 3,2 0303 2B0E 01517 GOTO udp_serial_tag 0304 01518 udp_4 01519 ; 01520 ; add new funciton this 01521 ; 0304 297E 01522 goto main9 0305 01523 udp_lcd_tag 0305 3011 01524 movlw udp_lcd >> 8 0306 008A 01525 movwf PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 0307 29F7 01526 GOTO udp_lcd 01527 ; 01528 ; パラレルI/Oの処理(UDP) 01529 ; 0308 01530 udp_parallel_tag 0308 3055 01531 MOVLW udp_data 0309 0084 01532 MOVWF FSR 030A 2250 01533 call get_remain 030B 3008 01534 MOVLW HIGH (udp_parallel) 030C 008A 01535 MOVWF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 030D 2820 01536 goto udp_parallel MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 31 LOC OBJECT CODE LINE SOURCE TEXT VALUE 030E 01537 udp_serial_tag 030E 3008 01538 MOVLW HIGH (udp_serial) 030F 008A 01539 MOVWF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 0310 28FC 01540 goto udp_serial 01541 01542 ;----------------------------------------------------------------------------------- 0311 01543 get_dgram 0311 082F 01544 movf remote_len,0 0312 0430 01545 iorwf remote_len1,0 0313 1903 01546 btfsc STATUS,Z 0314 2B21 01547 goto get_dgram9 01548 0315 1009 01549 bcf PORTE,0 0316 1E87 01550 btfss PORTC,5 ; ~Wait 0317 2B16 01551 goto $-1 0318 0808 01552 MOVF PORTD,0 0319 1409 01553 bsf PORTE,0 031A 00FC 01554 movwf data0 01555 031B 3001 01556 movlw 1 031C 02AF 01557 subwf remote_len,1 031D 1C03 01558 btfss STATUS,C 031E 02B0 01559 subwf remote_len1,1 01560 031F 1003 01561 BCF 3,0 ; OK 0320 0008 01562 retURN 0321 01563 get_dgram9 0321 1403 01564 BSF 3,0 ; EOT 0322 0008 01565 RETURN 01566 01567 01568 ;----------------------------------------------------------------------------------- 01569 ; BOOTP応答 01570 ;----------------------------------------------------------------------------------- 0323 01571 bootp_res 0323 2250 01572 call get_remain 01573 0324 30A0 01574 MOVLW this_ip 0325 0084 01575 MOVWF FSR 0326 0800 01576 MOVF INDF,0 0327 0A84 01577 INCF FSR,1 0328 0400 01578 iorwf INDF,0 0329 0A84 01579 INCF FSR,1 032A 0400 01580 iorwf INDF,0 032B 0A84 01581 INCF FSR,1 032C 0400 01582 iorwf INDF,0 032D 1D03 01583 btfss STATUS,Z 032E 297E 01584 goto main9 01585 032F 300A 01586 MOVLW HIGH (bootp) 0330 008A 01587 MOVWF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 32 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0331 224A 01588 call bootp 0332 3003 01589 MOVLW HIGH (bootp_res) 0333 008A 01590 MOVWF PCLATH 01591 0334 3035 01592 movlw 35h ; 0335 274B 01593 call assert_wr 0336 3001 01594 movlw 01h 0337 274B 01595 call assert_wr 0338 3003 01596 movlw 3 ; request 0339 274B 01597 call assert_wr 01598 033A 303D 01599 movlw 3dh ; 033B 274B 01600 call assert_wr 033C 3007 01601 movlw 07h 033D 274B 01602 call assert_wr 033E 3001 01603 movlw 01h 033F 274B 01604 call assert_wr 0340 30A4 01605 MOVLW mymac 0341 0084 01606 MOVWF FSR 0342 3006 01607 movlw 6 0343 2777 01608 call transmit_nbytes ; 自分のMAC 01609 0344 3036 01610 movlw .54 ; 0345 274B 01611 call assert_wr 0346 3004 01612 movlw 04h 0347 274B 01613 call assert_wr 0348 30C0 01614 movlw 0c0h 0349 274B 01615 call assert_wr 034A 30A8 01616 movlw 0a8h 034B 274B 01617 call assert_wr 034C 3000 01618 movlw 0h 034D 274B 01619 call assert_wr 034E 3003 01620 movlw 3h 034F 274B 01621 call assert_wr 01622 0350 3032 01623 movlw .50 ; 0351 274B 01624 call assert_wr 0352 3004 01625 movlw 4 0353 274B 01626 call assert_wr 01627 0354 3065 01628 MOVLW dhcp_user_ip 0355 0084 01629 MOVWF FSR 0356 3004 01630 movlw 4 0357 2777 01631 call transmit_nbytes 01632 01633 0358 30FF 01634 movlw 0ffh 0359 274B 01635 call assert_wr 01636 035A 3023 01637 MOVLW .64 - .7 - .9 - .1 - .6 - .6 035B 00A6 01638 MOVWF gcn1 035C 01639 bootp_40 035C 0100 01640 DB 01,00 ;clrw MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 33 LOC OBJECT CODE LINE SOURCE TEXT VALUE 035D 274B 01641 call assert_wr 035E 0BA6 01642 DECFSZ gcn1,1 035F 2B5C 01643 GOTO bootp_40 0360 300A 01644 MOVLW HIGH (bootp_tx) 0361 008A 01645 MOVWF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 0362 22AD 01646 call bootp_tx 0363 3003 01647 MOVLW HIGH (bootp_40) 0364 008A 01648 MOVWF PCLATH 01649 ; 01650 ; ここでDHCPサーバからもらったIPアドレスを自分のアドレスとして登録 0365 30A0 01651 MOVLW this_ip 0366 0084 01652 MOVWF FSR 0367 0865 01653 MOVF dhcp_user_ip,0 0368 0080 01654 MOVWF INDF 0369 0A84 01655 INCF FSR,1 036A 0866 01656 MOVF dhcp_user_ip1,0 036B 0080 01657 MOVWF INDF 036C 0A84 01658 INCF FSR,1 036D 0867 01659 MOVF dhcp_user_ip2,0 036E 0080 01660 MOVWF INDF 036F 0A84 01661 INCF FSR,1 0370 0868 01662 MOVF dhcp_user_ip3,0 0371 0080 01663 MOVWF INDF 0372 1683 01664 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0373 01B2 01665 CLRF dhcp_done 0374 1283 01666 BCF STATUS,RP0 01667 01668 ; 01669 ; もらったIPアドレスを液晶に表示 0375 1106 01670 bcf PORTB,2 0376 30C0 01671 MOVLW 0C0H 0377 00A2 01672 MOVWF d4 0378 300C 01673 MOVLW HIGH (write_lcd4) 0379 008A 01674 MOVWF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 037A 24DC 01675 call write_lcd4 ; 2行目に移動 01676 037B 300F 01677 MOVLW HIGH(print_ip) 037C 008A 01678 MOVWF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 037D 27D4 01679 call print_ip ; 表示! 037E 0186 01680 CLRF PORTB 037F 018A 01681 CLRF PCLATH 0380 297E 01682 goto main9 01683 01684 01685 01686 01687 ;----------------------------------------------------------------------------------- 01688 ; TCP 01689 ;----------------------------------------------------------------------------------- MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 34 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0381 01690 tcp 0381 3014 01691 MOVLW .20 ; 20バイトを読み込む 0382 00A6 01692 MOVWF gcn1 0383 2242 01693 call copy_toram 01694 0384 30B3 01695 MOVLW http_port & 0ffh 0385 0084 01696 MOVWF FSR 0386 0800 01697 MOVF INDF,0 ; EEPROMのhttpポートと一致するか? 0387 024F 01698 SUBWF tcp_tar_port,0 0388 1D03 01699 BTFSS 3,2 0389 2B8F 01700 GOTO tcp9 01701 038A 0A84 01702 INCF FSR,1 01703 038B 0800 01704 MOVF INDF,0 038C 0250 01705 SUBWF tcp_tar_port1,0 038D 1903 01706 BTFSC 3,2 038E 2B90 01707 GOTO tcp_www 01708 038F 297E 01709 tcp9 goto main9 ; http以外でTCPに応答するものはない 01710 ; 01711 ; http処理 0390 01712 tcp_www 0390 30A0 01713 MOVLW this_ip 0391 0084 01714 MOVWF FSR 0392 0800 01715 MOVF INDF,0 0393 0A84 01716 INCF FSR,1 0394 0400 01717 iorwf INDF,0 0395 0A84 01718 INCF FSR,1 0396 0400 01719 iorwf INDF,0 0397 0A84 01720 INCF FSR,1 0398 0400 01721 iorwf INDF,0 0399 1903 01722 btfsc STATUS,Z 039A 297E 01723 goto main9 ; IPアドレスが0.0.0.0なら処理中止 01724 039B 1ADA 01725 btfsc tcp_flags,5 ;TCP_URG ; URG 039C 297E 01726 goto main9 ; 廃棄 01727 039D 3009 01728 MOVLW HIGH(search_socket) 039E 008A 01729 MOVWF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 039F 219A 01730 call search_socket ; ソケットを検索 03A0 3003 01731 MOVLW HIGH (tcp_www) 03A1 008A 01732 MOVWF PCLATH 03A2 1803 01733 btfsc STATUS,C 03A3 2BA6 01734 goto state1 ; ステート存在あり? 01735 03A4 25D6 01736 call no_socket ; ソケット作成 03A5 297E 01737 goto main9 01738 ; 01739 ; socket state1 03A6 01740 state1 03A6 300C 01741 MOVLW .12 ;add FSR,#12 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 35 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03A7 0784 01742 ADDWF FSR,1 01743 ; mov pclath,#print_hex>>8 01744 ; mov pclath,#$>>8 01745 ; 03A8 0800 01746 MOVF INDF,0 03A9 0251 01747 SUBWF tcp_seq_no,0 03AA 1D03 01748 BTFSS 3,2 03AB 2BBE 01749 GOTO state12 03AC 0A84 01750 INCF FSR,1 03AD 0800 01751 MOVF INDF,0 03AE 0252 01752 SUBWF tcp_seq_no1,0 03AF 1D03 01753 BTFSS 3,2 03B0 2BBE 01754 GOTO state12 03B1 0A84 01755 INCF FSR,1 03B2 0800 01756 MOVF INDF,0 03B3 0253 01757 SUBWF tcp_seq_no2,0 03B4 1D03 01758 BTFSS 3,2 03B5 2BBE 01759 GOTO state12 03B6 0A84 01760 INCF FSR,1 03B7 0800 01761 MOVF INDF,0 03B8 0254 01762 SUBWF tcp_seq_no3,0 03B9 1D03 01763 BTFSS 3,2 03BA 2BBE 01764 GOTO state12 03BB 300F 01765 MOVLW .15 03BC 0284 01766 SUBWF FSR,1 03BD 23C0 01767 call state2 03BE 018A 01768 state12 CLRF PCLATH 03BF 297E 01769 goto main9 01770 03C0 01771 state2 03C0 3003 01772 MOVLW HIGH(state_table) 03C1 008A 01773 MOVWF PCLATH 01774 03C2 0800 01775 MOVF INDF,0 03C3 397F 01776 andlw 7fh 03C4 0782 01777 ADDWF 2,1 03C5 01778 state_table 03C5 2BCE 01779 goto job_SYN_RCVD ; 03C6 2BED 01780 goto job_ESTAB ; 03C7 2C02 01781 goto job_CLOSE_WAIT ; 01782 ; nop ;goto job_LAST_ACK ; 03C8 297E 01783 goto main9 03C9 2BDB 01784 goto job_FIN_WAIT_1 ; 03CA 2BE3 01785 goto job_FIN_WAIT_2 ; 01786 ; nop ;goto job_CLOSING ; 03CB 297E 01787 goto main9 01788 ; nop ;goto job_TIME_WAIT ; 03CC 297E 01789 goto main9 03CD 297E 01790 goto main9 ;ACK,PSH,RST,SYN,FIN 01791 01792 01793 01794 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 36 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01795 01796 ;----------------------------------------------------------------------------------- 01797 ; SYNを受け取り, 01798 ; SYN,ACKを送ってACK待ち 03CE 01799 job_SYN_RCVD 03CE 195A 01800 btfsc tcp_flags,TCP_RST 03CF 2BD8 01801 goto recv_rst 03D0 185A 01802 btfsc tcp_flags,TCP_FIN 03D1 2BFC 01803 goto recv_fin 03D2 1E5A 01804 btfss tcp_flags,TCP_ACK 03D3 0008 01805 RETURN 01806 03D4 3081 01807 MOVLW ESTAB ;mov INDF,#ESTAB 03D5 0080 01808 MOVWF INDF 03D6 1383 01809 bcf STATUS,IRP 03D7 0008 01810 RETURN 03D8 01811 recv_rst 03D8 0180 01812 clrF INDF 03D9 1383 01813 bcf STATUS,IRP 03DA 0008 01814 RETURN 01815 01816 ;----------------------------------------------------------------------------------- 01817 ; 01818 ; 03DB 01819 job_FIN_WAIT_1 03DB 195A 01820 btfsc tcp_flags,TCP_RST 03DC 2BD8 01821 goto recv_rst 03DD 1E5A 01822 btfss tcp_flags,TCP_ACK 03DE 0008 01823 RETURN 01824 03DF 3085 01825 MOVLW FIN_WAIT_2 03E0 0080 01826 MOVWF INDF 03E1 1383 01827 bcf STATUS,IRP 03E2 0008 01828 RETURN 01829 01830 ;----------------------------------------------------------------------------------- 01831 ; 01832 ; 03E3 01833 job_FIN_WAIT_2 03E3 195A 01834 btfsc tcp_flags,TCP_RST 03E4 2BD8 01835 goto recv_rst 03E5 1C5A 01836 btfss tcp_flags,TCP_FIN 03E6 0008 01837 RETURN 01838 03E7 0180 01839 clrF INDF 03E8 1383 01840 bcf STATUS,IRP 01841 03E9 20B3 01842 call inc_ack_no 03EA 244F 01843 call send_ack 03EB 0008 01844 RETURN 01845 01846 ;----------------------------------------------------------------------------------- 01847 ; MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 37 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01848 ; 03EC 0000 01849 nop 03ED 01850 job_ESTAB 03ED 195A 01851 btfsc tcp_flags,TCP_RST 03EE 2BD8 01852 goto recv_rst 03EF 185A 01853 btfsc tcp_flags,TCP_FIN 03F0 2BFC 01854 goto recv_fin 01855 03F1 0A84 01856 INCF FSR,1 03F2 3003 01857 MOVLW HIGH (job_ESTAB) 03F3 008A 01858 MOVWF PCLATH 03F4 0800 01859 MOVF INDF,0 03F5 390F 01860 andlw 0fh 03F6 0782 01861 ADDWF 2,1 ;jmp pc+w 03F7 2C12 01862 goto ESTAB_00 03F8 2C2E 01863 goto ESTAB_01 03F9 2C33 01864 goto ESTAB_02 03FA 2C38 01865 goto ESTAB_03 03FB 2C07 01866 goto ESTAB_99 01867 01868 03FC 01869 recv_fin 03FC 3000 01870 MOVLW 0 03FD 0080 01871 MOVWF INDF 03FE 1383 01872 bcf STATUS,IRP 01873 03FF 20B3 01874 call inc_ack_no 0400 244F 01875 call send_ack 0401 0008 01876 RETURN 01877 01878 ;----------------------------------------------------------------------------------- 01879 ; 01880 ; 0402 01881 job_CLOSE_WAIT 0402 3000 01882 MOVLW 0 0403 0080 01883 MOVWF INDF 0404 1383 01884 bcf STATUS,IRP 01885 0405 244C 01886 call send_fin 0406 0008 01887 RETURN 0407 01888 ESTAB_99 0407 0384 01889 decF FSR,1 0408 3084 01890 MOVLW FIN_WAIT_1 0409 0080 01891 MOVWF INDF 040A 1383 01892 bcf STATUS,IRP 01893 040B 244C 01894 call send_fin 01895 040C 0878 01896 MOVF com_fsr,0 040D 0084 01897 MOVWF FSR 040E 3008 01898 MOVLW .8 040F 0784 01899 ADDWF FSR,1 0410 2087 01900 call inc_seq_no MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 38 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0411 0008 01901 RETURN 01902 01903 ;----------------------------------------------------------------------------------- 01904 ; ESTABLISH 01905 ; 0412 01906 ESTAB_00 0412 0A80 01907 incF INDF,1 0413 1383 01908 bcf STATUS,IRP 0414 01909 estab0 0414 300B 01910 MOVLW HIGH(get_nextbyte) 0415 008A 01911 MOVWF PCLATH 01912 Message[306]: Crossing page boundary -- ensure page bits are set. 0416 2300 01913 call get_nextbyte ; バッファからデータを取得 0417 3004 01914 MOVLW HIGH (estab0) 0418 008A 01915 MOVWF PCLATH 01916 0419 3000 01917 MOVLW 0 ; 終了? 041A 027C 01918 SUBWF data0,0 041B 1903 01919 BTFSC 3,2 041C 2C26 01920 GOTO estab1 01921 ; 改行文字? 041D 300A 01922 MOVLW 0AH 041E 027C 01923 SUBWF data0,0 041F 1903 01924 BTFSC 3,2 0420 2C26 01925 GOTO estab1 01926 ; '?'文字を発見?(=GETコマンドの処理) 0421 303F 01927 MOVLW '?' 0422 027C 01928 SUBWF data0,0 0423 1903 01929 BTFSC 3,2 0424 2C2B 01930 GOTO parse_cgi_tag 0425 2C14 01931 goto estab0 0426 01932 parse9 01933 01934 ;----------------------------------------------------------------------------------- 01935 ; 01936 ; 0426 01937 estab1 0426 243D 01938 call abort ; バッファ転送中止 0427 20BC 01939 call add_ack_no ; ACK NOを加算 01940 ; call send_ack ; ACKを送信 01941 0428 3014 01942 MOVLW 014H ;バンクアドレス=14h fan 0429 00FD 01943 MOVWF wk 042A 2C8B 01944 goto send_mes ; メッセージ送信 01945 ; 01946 ; バンク間ジャンプ用 042B 01947 parse_cgi_tag 042B 300B 01948 MOVLW HIGH(parse_cgi) 042C 008A 01949 MOVWF PCLATH 01950 Message[306]: Crossing page boundary -- ensure page bits are set. 042D 2B15 01951 goto parse_cgi MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 39 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01952 01953 01954 01955 042E 01956 ESTAB_01 042E 0A80 01957 incF INDF,1 042F 1383 01958 bcf STATUS,IRP 01959 ; call send_ack 01960 ; 0430 3017 01961 MOVLW 017H 0431 00FD 01962 MOVWF wk 0432 2C8B 01963 goto send_mes ; メッセージ送信 0433 01964 ESTAB_02 0433 0A80 01965 incF INDF,1 0434 1383 01966 bcf STATUS,IRP 01967 ; call send_ack 01968 01969 ;mov wk,#01Ah ; バンクアドレス=19h 0435 301A 01970 MOVLW 01AH 0436 00FD 01971 MOVWF wk 0437 2C8B 01972 goto send_mes ; メッセージ送信 0438 01973 ESTAB_03 0438 0A80 01974 incF INDF,1 0439 1383 01975 bcf STATUS,IRP 01976 ; call send_ack 01977 01978 ;mov wk,#01Dh ; バンクアドレス=1bh 043A 301D 01979 MOVLW 01DH 043B 00FD 01980 MOVWF wk 043C 2C8B 01981 goto send_mes ; メッセージ送信 01982 ; 01983 ; リモートDMA転送中止 043D 01984 abort 043D 0187 01985 CLRF PORTC 043E 3022 01986 movlw 22h 043F 2760 01987 call assert_wr0 ; PAGE0に戻す 01988 0440 300A 01989 MOVLW 0ah 0441 0087 01990 MOVWF PORTC 0442 0100 01991 DB 01,00 ;clrw 0443 2760 01992 call assert_wr0 01993 0444 300B 01994 MOVLW 0bh 0445 0087 01995 MOVWF PORTC 0446 0100 01996 DB 01,00 ;clrw 0447 2760 01997 call assert_wr0 0448 0008 01998 RETURN 01999 02000 02001 02002 02003 02004 ;----------------------------------------------------------------------------------- MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 40 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02005 ; RSTパケットの送信 0449 02006 send_rst 0449 3004 02007 MOVLW B'000100' ; RST 044A 00B8 02008 MOVWF state 044B 2C51 02009 goto send_common 02010 02011 02012 ;----------------------------------------------------------------------------------- 02013 ; FINパケットの送信 044C 02014 send_fin 044C 3011 02015 MOVLW B'010001' ; ACK+FIN 044D 00B8 02016 MOVWF state 044E 2C51 02017 goto send_common 02018 02019 02020 ;----------------------------------------------------------------------------------- 02021 ; ACKパケットの送信 044F 02022 send_ack 044F 3010 02023 MOVLW B'010000' ; ACK 0450 00B8 02024 MOVWF state 02025 ; goto send_common 0451 02026 send_common 0451 3000 02027 MOVLW 0 0452 00BB 02028 MOVWF ip_length 02029 ;mov ip_length[1],#IP_SIZE + TCP_SIZE 0453 3028 02030 MOVLW IP_SIZE + TCP_SIZE 0454 00BC 02031 MOVWF ip_length1 02032 0455 3006 02033 MOVLW TCP_PROTO 0456 00B7 02034 MOVWF proto 0457 27AE 02035 call prepare_ip 02036 0458 3022 02037 MOVLW PACKET_SIZE + IP_SIZE 0459 00AD 02038 MOVWF remote_adr 02039 ;mov remote_adr[1],#PAGE_BEGIN 045A 3040 02040 MOVLW PAGE_BEGIN 045B 00AE 02041 MOVWF remote_adr1 02042 02043 ;mov remote_len[0],#20 ; 20バイト 045C 3014 02044 MOVLW .20 045D 00AF 02045 MOVWF remote_len 02046 ;mov remote_len[1],#0 045E 3000 02047 MOVLW 0 045F 00B0 02048 MOVWF remote_len1 0460 26FB 02049 call remote_write 02050 0461 20E3 02051 call clear_sum ; チェックサムの値をクリア 02052 0462 30B3 02053 MOVLW http_port & 0ffh 0463 0084 02054 MOVWF FSR 0464 3002 02055 movlw 2 0465 2777 02056 call transmit_nbytes ; 自分のポート番号 02057 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 41 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0466 304D 02058 MOVLW tcp_src_port 0467 0084 02059 MOVWF FSR 0468 3002 02060 movlw 2 0469 2777 02061 call transmit_nbytes ; 相手のポート番号 02062 046A 0878 02063 MOVF com_fsr,0 046B 0084 02064 MOVWF FSR 046C 3008 02065 MOVLW .8 046D 0784 02066 ADDWF FSR,1 046E 1783 02067 bsf STATUS,IRP 046F 3008 02068 movlw 4+4 0470 2777 02069 call transmit_nbytes ; 自分のSEQNO 0471 1383 02070 bcf STATUS,IRP 02071 0472 3050 02072 movlw 50h ; 20bytes 0473 274B 02073 call assert_wr 0474 0838 02074 MOVF state,0 ;mov w,state 0475 274B 02075 call assert_wr 02076 0476 3008 02077 movlw 08h ; window(high) 0477 274B 02078 call assert_wr 0478 3000 02079 movlw 00h ; window(low) 0479 274B 02080 call assert_wr 02081 047A 273B 02082 call assert_wr2times ; tcp sum 047B 273B 02083 call assert_wr2times ; 緊急ポインタ 02084 047C 2647 02085 call calc_tcp_sum ; TCP SUMの計算 02086 047D 3004 02087 MOVLW 4h 047E 0087 02088 MOVWF PORTC 047F 3040 02089 movlw PAGE_BEGIN ; transmit page is start page 0480 2760 02090 call assert_wr0 02091 0481 3005 02092 MOVLW 5 0482 0087 02093 MOVWF PORTC 0483 303C 02094 movlw .60 ; 60バイト送信 0484 2760 02095 call assert_wr0 02096 0485 3006 02097 MOVLW 6 0486 0087 02098 MOVWF PORTC 0487 0100 02099 DB 01,00 ;clrw ; 上位転送バイト=0 0488 2760 02100 call assert_wr0 0489 2789 02101 call transmit ; 送信!! 048A 0008 02102 RETURN 02103 02104 ;----------------------------------------------------------------------------------- 02105 ; 02106 ; 048B 02107 send_mes 048B 303F 02108 MOVLW assert_wr2x & 0ffh ; 送信jobをRTL8019に 048C 00FA 02109 MOVWF dest 048D 3007 02110 MOVLW HIGH (assert_wr2x) MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 42 LOC OBJECT CODE LINE SOURCE TEXT VALUE 048E 00FB 02111 MOVWF dest1 048F 02112 send_mes_head 02113 ; 仮に65535バイト転送に設定 02114 ;------- 048F 3022 02115 MOVLW PACKET_SIZE + IP_SIZE 0490 00AD 02116 MOVWF remote_adr 0491 3040 02117 MOVLW PAGE_BEGIN 0492 00AE 02118 MOVWF remote_adr1 02119 0493 30FF 02120 MOVLW 0FFH 0494 00AF 02121 MOVWF remote_len 0495 30FF 02122 MOVLW 0FFH 0496 00B0 02123 MOVWF remote_len1 02124 02125 ;------- 02126 02127 ;mov remote_len[1],#0ffh ; 0497 26FB 02128 call remote_write 02129 02130 ;clr remote_len[0] 02131 ;clr remote_len[1] 0498 01AF 02132 CLRF remote_len 0499 01B0 02133 CLRF remote_len1 02134 049A 20E3 02135 call clear_sum ; チェックサムの値をクリア 02136 049B 30B3 02137 MOVLW http_port & 0ffh 049C 0084 02138 MOVWF FSR 049D 3002 02139 movlw 2 049E 2780 02140 call transmit_nbytes2 ; 自分のポート番号 02141 049F 304D 02142 MOVLW tcp_src_port 04A0 0084 02143 MOVWF FSR 04A1 3002 02144 movlw 2 04A2 2780 02145 call transmit_nbytes2 ; 相手のポート番号 02146 04A3 1783 02147 bsf STATUS,IRP 04A4 0878 02148 MOVF com_fsr,0 04A5 0084 02149 MOVWF FSR 04A6 3008 02150 MOVLW .8 04A7 0784 02151 ADDWF FSR,1 04A8 3004 02152 movlw 4 04A9 2780 02153 call transmit_nbytes2 ; 自分のSEQNO 04AA 1383 02154 bcf STATUS,IRP 02155 04AB 3051 02156 MOVLW tcp_seq_no 04AC 0084 02157 MOVWF FSR 04AD 3004 02158 movlw 4 04AE 2780 02159 call transmit_nbytes2 ; 相手のSEQNO+1 02160 04AF 3050 02161 movlw 50h ; 20bytes 04B0 2745 02162 call assert_wr2 04B1 3018 02163 movlw B'011000' MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 43 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04B2 2745 02164 call assert_wr2 02165 04B3 3008 02166 movlw 08h ; window(high) 04B4 2745 02167 call assert_wr2 04B5 3000 02168 movlw 00h ; window(low) 04B6 2745 02169 call assert_wr2 02170 04B7 0100 02171 DB 01,00 ;clrw 04B8 2745 02172 call assert_wr2 ; tcp sum 04B9 0100 02173 DB 01,00 ;clrw 04BA 2745 02174 call assert_wr2 ; tcp sum 04BB 0100 02175 DB 01,00 ;clrw 04BC 2745 02176 call assert_wr2 ; 緊急ポインタ 04BD 0100 02177 DB 01,00 ;clrw 04BE 2745 02178 call assert_wr2 ; 緊急ポインタ 02179 04BF 01F9 02180 CLRF ind 04C0 1703 02181 bsf STATUS,RP1 04C1 1283 02182 bcf STATUS,RP0 04C2 087D 02183 MOVF wk,0 ; 読み出すアドレス=[wk:ind] Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 04C3 008F 02184 MOVWF EEADRH 04C4 02185 send_mes0 04C4 1703 02186 bsf STATUS,RP1 04C5 1283 02187 bcf STATUS,RP0 04C6 0879 02188 MOVF ind,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 04C7 008D 02189 MOVWF EEADR 04C8 1683 02190 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 04C9 178C 02191 bsf EECON1,7 ;eepgd Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 04CA 140C 02192 bsf EECON1,0 ;eecon1.0 ; コードエリアからデータを読み出す 04CB 0000 02193 nop ; ダミーサイクル 04CC 0000 02194 nop 04CD 1283 02195 bcf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 04CE 080E 02196 MOVF EEDATH,0 ; (読んだデータを)作業領域へ移動 04CF 00F5 02197 MOVWF getmes_wk Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 04D0 080C 02198 MOVF EEDATA,0 04D1 00F6 02199 MOVWF getmes_wk1 02200 04D2 1303 02201 bcf STATUS,RP1 02202 04D3 0D76 02203 RLF getmes_wk1,0 04D4 0DF5 02204 RLF getmes_wk,1 04D5 0875 02205 MOVF getmes_wk,0 ; 上位7ビットが0か? 04D6 00FC 02206 MOVWF data0 04D7 307F 02207 MOVLW 7FH 04D8 05FC 02208 ANDWF data0,1 04D9 08FC 02209 MOVF data0,1 04DA 1903 02210 btfsc STATUS,Z MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 44 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04DB 2CF8 02211 goto send_mes9 ; 上位7ビットが0なら終了 02212 ; 02213 ; 上位7ビットがメタ文字なら処理を分岐 04DC 3024 02214 MOVLW '$' 04DD 027C 02215 SUBWF data0,0 04DE 1903 02216 BTFSC 3,2 04DF 2DC7 02217 GOTO ctrl_code2 04E0 3040 02218 MOVLW '@' 04E1 027C 02219 SUBWF data0,0 04E2 1903 02220 BTFSC 3,2 04E3 2D89 02221 GOTO ctrl_code3 04E4 3025 02222 MOVLW '%' 04E5 027C 02223 SUBWF data0,0 04E6 1903 02224 BTFSC 3,2 04E7 2D6D 02225 GOTO ctrl_code4 02226 04E8 307E 02227 MOVLW '~' 04E9 027C 02228 SUBWF data0,0 04EA 1903 02229 BTFSC 3,2 04EB 2D65 02230 GOTO ctrl_code5 02231 04EC 087C 02232 MOVF data0,0 ; 04ED 2745 02233 call assert_wr2 02234 04EE 0876 02235 MOVF getmes_wk1,0 ; 下位7ビットをRTL8019バッファへ転送 04EF 397F 02236 andlw 7fh 04F0 2745 02237 call assert_wr2 02238 04F1 3001 02239 MOVLW 1 ; ind++ 04F2 07F9 02240 ADDWF ind,1 04F3 1703 02241 bsf STATUS,RP1 04F4 1283 02242 bcf STATUS,RP0 04F5 1803 02243 btfsc STATUS,C Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 04F6 0A8F 02244 INCF EEADRH,1 04F7 2CC4 02245 goto send_mes0 04F8 02246 send_mes9 02247 04F8 02248 send_mes_foot 04F8 243D 02249 call abort ; リモートDMA転送の中止 02250 02251 04F9 082F 02252 MOVF remote_len,0 04FA 00BC 02253 MOVWF ip_length1 02254 04FB 0830 02255 MOVF remote_len1,0 04FC 00BB 02256 MOVWF ip_length 02257 04FD 2647 02258 call calc_tcp_sum ; TCP SUMを計算する 02259 04FE 3014 02260 MOVLW .20 ;add ip_length[1],#20; 20を加算 04FF 07BC 02261 ADDWF ip_length1,1 0500 3001 02262 movlw 1 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 45 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0501 1803 02263 btfsc STATUS,C 0502 07BB 02264 addwf ip_length,1 ;addwf ip_length[0] 02265 0503 3006 02266 MOVLW TCP_PROTO ; TCP packet 0504 00B7 02267 MOVWF proto 0505 27AE 02268 call prepare_ip ; IPプロトコルの準備 02269 0506 3004 02270 MOVLW 4h 0507 0087 02271 MOVWF PORTC 0508 3040 02272 movlw PAGE_BEGIN ; transmit page is start page 0509 2760 02273 call assert_wr0 02274 050A 300E 02275 MOVLW PACKET_SIZE ; パケットサイズ6+6+2を送信バイト数に加算1 050B 07BC 02276 addWF ip_length1,1 050C 3001 02277 movlw 1 050D 1803 02278 btfsc STATUS,C 050E 07BB 02279 addwf ip_length,1 02280 050F 3006 02281 MOVLW 6 0510 0087 02282 MOVWF PORTC 0511 083B 02283 MOVF ip_length,0 0512 2760 02284 call assert_wr0 0513 08BB 02285 MOVF ip_length,1 0514 1903 02286 btfsc STATUS,Z 0515 2D26 02287 goto send_mes_foot1 0516 02288 send_mes_foot2 0516 3005 02289 MOVLW 5 0517 0087 02290 MOVWF PORTC 0518 083C 02291 MOVF ip_length1,0 0519 2760 02292 call assert_wr0 051A 2789 02293 call transmit ; 送信!! 02294 02295 ; 02296 ; Additional Code 051B 02297 send_mes_foot3 051B 3036 02298 MOVLW PACKET_SIZE+IP_SIZE+TCP_SIZE 051C 02BC 02299 SUBWF ip_length1,1 02300 051D 3001 02301 movlw 1 051E 1C03 02302 btfss STATUS,C 02303 051F 02BB 02304 SUBWF ip_length,1 02305 0520 0878 02306 MOVF com_fsr,0 0521 0084 02307 MOVWF FSR 0522 3008 02308 MOVLW .8 0523 0784 02309 ADDWF FSR,1 0524 2097 02310 call add_seq_no ; seq noに加算 0525 0008 02311 RETURN 02312 0526 02313 send_mes_foot1 0526 303C 02314 MOVLW .60 0527 023C 02315 SUBWF ip_length1,0 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 46 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0528 1803 02316 BTFSC 3,0 0529 2D16 02317 GOTO send_mes_foot2 052A 3005 02318 MOVLW 5 052B 0087 02319 MOVWF PORTC 052C 303C 02320 movlw .60 ; MINIMUM 60bytes 052D 2760 02321 call assert_wr0 052E 2789 02322 call transmit 052F 2D1B 02323 goto send_mes_foot3 02324 02325 ;----------------------------------------------------------------------------------- 02326 ; AD変換 02327 ; 0530 02328 ad_in 0530 0DF6 02329 RLF getmes_wk1,1 0531 0DF6 02330 RLF getmes_wk1,1 0532 0DF6 02331 RLF getmes_wk1,1 0533 3038 02332 MOVLW B'00111000' 0534 05F6 02333 ANDWF getmes_wk1,1 0535 3081 02334 MOVLW B'10000001' 0536 04F6 02335 IORWF getmes_wk1,1 0537 0876 02336 MOVF getmes_wk1,0 ; ADCON1に値を設定 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0538 009F 02337 MOVWF ADCON1 0539 3001 02338 MOVLW 1 053A 00A0 02339 MOVWF wait_cn 053B 300C 02340 MOVLW HIGH (wait_ms) 053C 008A 02341 MOVWF PCLATH 02342 Message[306]: Crossing page boundary -- ensure page bits are set. 053D 24F0 02343 call wait_ms ; サンプリング時間20us待機 053E 3005 02344 MOVLW HIGH (ad_in) 053F 008A 02345 MOVWF PCLATH 02346 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0540 151F 02347 bsf ADCON1,2 ; AD変換開始 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0541 191F 02348 btfsc ADCON1,2 ; AD変換待ち 0542 2D41 02349 goto $-1 02350 0543 081E 02351 MOVF ADRESH,0 ; 変換結果をval[1]:val[0]へ 0544 00B3 02352 MOVWF val1 0545 1683 02353 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0546 081E 02354 MOVF ADRESL,0 0547 1283 02355 bcf STATUS,RP0 0548 00B2 02356 movwf val 02357 0549 1EF6 02358 btfss getmes_wk1,5 ; RA5かどうか? 054A 2D5F 02359 goto ad_in1 ; RA5以外 02360 ; 02361 ;AD変換結果を5倍する 02362 ; 054B 1003 02363 BCF 3,0 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 47 LOC OBJECT CODE LINE SOURCE TEXT VALUE 054C 0DB2 02364 RLF val,1 054D 0DB3 02365 RLF val1,1 054E 1003 02366 BCF 3,0 054F 0DB2 02367 RLF val,1 0550 0DB3 02368 RLF val1,1 02369 0551 081E 02370 MOVF ADRESH,0 0552 07B3 02371 ADDWF val1,1 0553 1683 02372 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0554 081E 02373 MOVF ADRESL,0 0555 1283 02374 bcf STATUS,RP0 0556 07B2 02375 addwf val,1 0557 1803 02376 btfsc STATUS,C 0558 0AB3 02377 INCF val1,1 02378 0559 3020 02379 MOVLW decimal_top & 0ffh ; 格納場所初期値 055A 0084 02380 MOVWF FSR 055B 1783 02381 bsf STATUS,IRP ; IRP=1 055C 300D 02382 MOVLW HIGH (divide16) 055D 008A 02383 MOVWF PCLATH 02384 Message[306]: Crossing page boundary -- ensure page bits are set. 055E 2574 02385 call divide16 055F 02386 ad_in1 055F 300D 02387 MOVLW HIGH (put_decimal16) 0560 008A 02388 MOVWF PCLATH 02389 Message[306]: Crossing page boundary -- ensure page bits are set. 0561 2514 02390 call put_decimal16 ; 10進数に変換 0562 3005 02391 MOVLW HIGH (ad_in1) 0563 008A 02392 MOVWF PCLATH 0564 2DCF 02393 goto ctrl_next 02394 02395 02396 02397 ;----------------------------------------------------------------------------------- 02398 ; SOCKET STATUS 0565 02399 ctrl_code5 0565 307F 02400 MOVLW 7FH 0566 05F6 02401 ANDWF getmes_wk1,1 0567 0EF6 02402 swapf getmes_wk1,1 0568 0876 02403 movf getmes_wk1,0 0569 0084 02404 movwf FSR 056A 1783 02405 bsf STATUS,IRP 02406 02407 ; movlw put_socket_stat >> 8 02408 ; MOVWF PCLATH 02409 ; call put_socket_stat ; socketステータスを表示 056B 1383 02410 bcf STATUS,IRP 056C 2DCF 02411 goto ctrl_next 02412 ;-------------------------------------------------------------------------- 02413 ; TRIS MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 48 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02414 ; 入力・出力の表示 056D 02415 ctrl_code4 056D 307F 02416 MOVLW 7FH 056E 05F6 02417 ANDWF getmes_wk1,1 056F 0876 02418 MOVF getmes_wk1,0 0570 0084 02419 MOVWF FSR 0571 0E84 02420 SWAPF FSR,1 0572 300F 02421 MOVLW 0FH 0573 0584 02422 ANDWF FSR,1 0574 3085 02423 MOVLW PORTA | 80H 0575 0784 02424 ADDWF FSR,1 02425 0576 0876 02426 MOVF getmes_wk1,0 0577 257D 02427 call getbitpos 0578 0800 02428 MOVF INDF,0 0579 05FC 02429 ANDWF data0,1 057A 1903 02430 BTFSC 3,2 057B 2DB2 02431 GOTO ctrl_out 057C 2DB4 02432 goto ctrl_in 02433 ; 02434 ; ビット位置返す 02435 ; 057D 02436 getbitpos 057D 00FD 02437 movwf wk 057E 3001 02438 MOVLW 1 057F 00FC 02439 MOVWF data0 0580 3007 02440 MOVLW 07H 0581 05FD 02441 ANDWF wk,1 0582 1903 02442 BTFSC 3,2 0583 2D88 02443 GOTO getbitpos9 0584 02444 getbitpos0 0584 1003 02445 BCF 3,0 0585 0DFC 02446 RLF data0,1 0586 0BFD 02447 DECFSZ wk,1 0587 2D84 02448 GOTO getbitpos0 0588 0008 02449 getbitpos9 RETURN 02450 02451 02452 ;----------------------------------------------------------------------------------- 02453 ; PARALLEL 02454 ; 現在のHigh/Lowの表示 0589 02455 ctrl_code3 0589 307F 02456 MOVLW 7FH 058A 05F6 02457 ANDWF getmes_wk1,1 058B 0876 02458 MOVF getmes_wk1,0 058C 0084 02459 MOVWF FSR 058D 0E84 02460 SWAPF FSR,1 058E 300F 02461 MOVLW 0FH 058F 0584 02462 ANDWF FSR,1 0590 1D03 02463 BTFSS 3,2 0591 2DA5 02464 GOTO ctrl_code31 02465 0592 3085 02466 MOVLW 80h | PORTA MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 49 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0593 0784 02467 ADDWF FSR,1 0594 0876 02468 MOVF getmes_wk1,0 0595 257D 02469 call getbitpos 02470 0596 0800 02471 MOVF INDF,0 0597 057C 02472 andwf data0,0 ; TRIS_RAのチェック 0598 1903 02473 BTFSC 3,2 ; 出力ピン? 0599 2DA4 02474 GOTO ctrl_code32 02475 059A 301F 02476 MOVLW 1FH 059B 008A 02477 MOVWF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 059C 2718 02478 call getadtable 059D 00FD 02479 MOVWF wk 059E 3005 02480 MOVLW HIGH (ctrl_code3) 059F 008A 02481 MOVWF PCLATH 02482 05A0 087D 02483 MOVF wk,0 05A1 05FC 02484 ANDWF data0,1 05A2 1D03 02485 BTFSS 3,2 ; 1ならアナログ入力 05A3 2D30 02486 GOTO ad_in 02487 ; 02488 ; 05A4 02489 ctrl_code32 05A4 0184 02490 CLRF FSR 05A5 3005 02491 ctrl_code31 MOVLW PORTA ; + 05h 05A6 0784 02492 ADDWF FSR,1 02493 05A7 0876 02494 MOVF getmes_wk1,0 05A8 257D 02495 call getbitpos 05A9 0800 02496 MOVF INDF,0 05AA 05FC 02497 ANDWF data0,1 05AB 1903 02498 BTFSC 3,2 05AC 2DB8 02499 GOTO ctrl_low 05AD 2DB6 02500 goto ctrl_high 02501 02502 ;----------------------------------------------------------------------------------- 02503 ; ショートメッセージの取得 05AE 02504 get_short_mes 05AE 301F 02505 MOVLW 1FH ; バンク=1h 05AF 008A 02506 MOVWF PCLATH 05B0 087D 02507 MOVF wk,0 05B1 0082 02508 MOVWF PCL 05B2 02509 ctrl_out 05B2 303F 02510 movlw mes_out & .255 ; 'OUT' 05B3 2DBA 02511 goto put_short_mes10 05B4 02512 ctrl_in 05B4 303B 02513 movlw mes_in & .255 ; 'IN' 05B5 2DBA 02514 goto put_short_mes10 05B6 02515 ctrl_high 05B6 3034 02516 movlw mes_high & .255 ; 'HIGH' 05B7 2DBA 02517 goto put_short_mes10 05B8 02518 ctrl_low MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 50 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05B8 302D 02519 movlw mes_low & .255 ; 'LOW' 05B9 2DBA 02520 goto put_short_mes10 05BA 02521 put_short_mes10 05BA 00FD 02522 MOVWF wk 05BB 02523 put_short_mes0 05BB 25AE 02524 call get_short_mes 05BC 00FC 02525 MOVWF data0 05BD 3005 02526 MOVLW HIGH (put_short_mes0) 05BE 008A 02527 MOVWF PCLATH ; PCLATHの修正 02528 05BF 3000 02529 MOVLW 0 ; NULL? 05C0 027C 02530 SUBWF data0,0 05C1 1903 02531 BTFSC 3,2 05C2 2DCF 02532 GOTO ctrl_next 05C3 087C 02533 MOVF data0,0 05C4 2745 02534 call assert_wr2 ; RTL8019へ転送 02535 05C5 0AFD 02536 INCF wk,1 ; ; wk++ 05C6 2DBB 02537 goto put_short_mes0 02538 ; 02539 ; META CHARACTER 05C7 02540 ctrl_code2 05C7 300F 02541 MOVLW HIGH (ctrl_code1) 05C8 008A 02542 MOVWF PCLATH 02543 05C9 0876 02544 MOVF getmes_wk1,0 05CA 397F 02545 andlw 7fh 05CB 3ED0 02546 addlw -'0' ;不明 02547 Message[306]: Crossing page boundary -- ensure page bits are set. 05CC 2712 02548 call ctrl_code1 ; コントロール文字出力ルーチンへ 05CD 3005 02549 MOVLW HIGH (ctrl_code2) 05CE 008A 02550 MOVWF PCLATH 05CF 02551 ctrl_next 05CF 3001 02552 MOVLW 1 ; ind++ 05D0 07F9 02553 ADDWF ind,1 05D1 1703 02554 bsf STATUS,RP1 05D2 1283 02555 bcf STATUS,RP0 05D3 1803 02556 btfsc STATUS,C Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 05D4 0A8F 02557 INCF EEADRH,1 05D5 2CC4 02558 goto send_mes0 02559 02560 ;----------------------------------------------------------------------------------- 02561 ; ソケットの作成 02562 ; 05D6 02563 no_socket 05D6 1CDA 02564 btfss tcp_flags,TCP_SYN 05D7 0008 02565 RETURN 02566 ; 02567 ; SYNパケットの受信→SYN+ACKの送信 02568 ; 05D8 02569 recv_syn MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 51 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05D8 3009 02570 MOVLW HIGH (socket_entry) 05D9 008A 02571 MOVWF PCLATH 02572 Message[306]: Crossing page boundary -- ensure page bits are set. 05DA 21D1 02573 call socket_entry ; ソケットのエントリーを検索 05DB 3005 02574 MOVLW HIGH (recv_syn) 05DC 008A 02575 MOVWF PCLATH 05DD 1803 02576 btfsc STATUS,C 05DE 2C49 02577 goto send_rst ; ソケットの空きなし 02578 02579 ; 05DF 3000 02580 MOVLW 0 05E0 00BB 02581 MOVWF ip_length 02582 ; IPヘッダ=20+24 05E1 302C 02583 MOVLW .20 + .24 05E2 00BC 02584 MOVWF ip_length1 02585 05E3 3006 02586 MOVLW TCP_PROTO ; TCP packet 05E4 00B7 02587 MOVWF proto 05E5 27AE 02588 call prepare_ip 02589 ; 02590 02591 ;------- 05E6 3022 02592 MOVLW PACKET_SIZE + IP_SIZE ;mov remote_adr[0],#PACKET_SIZE + IP_SIZE 05E7 00AD 02593 MOVWF remote_adr 05E8 3040 02594 MOVLW PAGE_BEGIN 05E9 00AE 02595 MOVWF remote_adr1 02596 05EA 3018 02597 MOVLW .20 + .4 05EB 00AF 02598 MOVWF remote_len 05EC 3000 02599 MOVLW 0 05ED 00B0 02600 MOVWF remote_len1 02601 02602 ;------- 02603 05EE 26FB 02604 call remote_write 02605 05EF 20E3 02606 call clear_sum ; チェックサムの値をクリア 02607 05F0 30B3 02608 MOVLW http_port & 0ffh 05F1 0084 02609 MOVWF FSR 05F2 3002 02610 movlw 2 05F3 2777 02611 call transmit_nbytes ; 自分のポート番号 02612 05F4 304D 02613 MOVLW tcp_src_port 05F5 0084 02614 MOVWF FSR 05F6 3002 02615 movlw 2 05F7 2777 02616 call transmit_nbytes ; 相手のポート番号 02617 05F8 30AA 02618 MOVLW seq_no 05F9 0084 02619 MOVWF FSR 05FA 3004 02620 movlw 4 05FB 2777 02621 call transmit_nbytes ; 自分のSEQNO MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 52 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02622 02623 05FC 20B3 02624 call inc_ack_no ; tcp_seq_no++; 02625 05FD 0878 02626 MOVF com_fsr,0 05FE 0084 02627 MOVWF FSR 05FF 3008 02628 MOVLW .8 0600 0784 02629 ADDWF FSR,1 02630 0601 1783 02631 bsf STATUS,IRP 0602 1683 02632 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0603 082A 02633 MOVF seq_no,0 ; 自分のSEQ NOを自分のソケット+8に 0604 0080 02634 MOVWF INDF 0605 0A84 02635 INCF FSR,1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0606 082B 02636 MOVF seq_no1,0 0607 0080 02637 MOVWF INDF 0608 0A84 02638 INCF FSR,1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0609 082C 02639 MOVF seq_no2,0 060A 0080 02640 MOVWF INDF 060B 0A84 02641 INCF FSR,1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 060C 082D 02642 MOVF seq_no3,0 060D 0080 02643 MOVWF INDF 060E 0A84 02644 INCF FSR,1 060F 1283 02645 bcf STATUS,RP0 02646 0610 0851 02647 MOVF tcp_seq_no,0 0611 0080 02648 MOVWF INDF 0612 0A84 02649 INCF FSR,1 0613 0852 02650 MOVF tcp_seq_no1,0 0614 0080 02651 MOVWF INDF 0615 0A84 02652 INCF FSR,1 0616 0853 02653 MOVF tcp_seq_no2,0 0617 0080 02654 MOVWF INDF 0618 0A84 02655 INCF FSR,1 02656 ;mov INDF,tcp_seq_no[3] 0619 0854 02657 MOVF tcp_seq_no3,0 061A 0080 02658 MOVWF INDF 061B 1383 02659 bcf STATUS,IRP 02660 061C 0878 02661 MOVF com_fsr,0 061D 0084 02662 MOVWF FSR 061E 3008 02663 MOVLW .8 061F 0784 02664 ADDWF FSR,1 0620 2087 02665 call inc_seq_no 02666 0621 3051 02667 MOVLW tcp_seq_no 0622 0084 02668 MOVWF FSR 0623 3004 02669 movlw 4 0624 2777 02670 call transmit_nbytes ; 相手のSEQNO+1 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 53 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02671 0625 3060 02672 movlw 60h ; オプション有り 0626 274B 02673 call assert_wr 0627 3012 02674 movlw B'010010' ; ACK+SYN 0628 274B 02675 call assert_wr 02676 0629 3008 02677 movlw 08h ; window(high) 062A 274B 02678 call assert_wr 062B 3000 02679 movlw 00h ; window(low) 062C 274B 02680 call assert_wr 02681 062D 273B 02682 call assert_wr2times ; tcp sum 062E 273B 02683 call assert_wr2times ; 緊急ポインタ 02684 062F 3002 02685 movlw 2h 0630 274B 02686 call assert_wr 0631 3004 02687 movlw 4h 0632 274B 02688 call assert_wr 0633 3005 02689 movlw 5h 0634 274B 02690 call assert_wr 0635 30B4 02691 movlw 0b4h 0636 274B 02692 call assert_wr 02693 0637 2647 02694 call calc_tcp_sum ; TCP SUMの計算 02695 0638 3004 02696 MOVLW 4h 0639 0087 02697 MOVWF PORTC 063A 3040 02698 movlw PAGE_BEGIN ; transmit page is start page 063B 2760 02699 call assert_wr0 02700 063C 3005 02701 MOVLW 5 063D 0087 02702 MOVWF PORTC 063E 303C 02703 movlw .60 ; 60バイト送信 063F 2760 02704 call assert_wr0 02705 0640 3006 02706 MOVLW 6 0641 0087 02707 MOVWF PORTC 0642 0100 02708 DB 01,00 ;clrw 0643 2760 02709 call assert_wr0 0644 2789 02710 call transmit ; 送信! 02711 0645 2080 02712 call next_seq_no ; seq_no++ 0646 0008 02713 RETURN 02714 02715 ;----------------------------------------------------------------------------------- 02716 ; チェックサム計算 0647 02717 calc_tcp_sum 0647 01A9 02718 CLRF bytes ;clr bytes ;2バイトアラインの調整 02719 0648 30A0 02720 MOVLW this_ip ;mov fsr,#this_ip; 自分のIPアドレスを加算 02721 0649 0084 02722 MOVWF FSR 064A 0800 02723 MOVF INDF,0 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 54 LOC OBJECT CODE LINE SOURCE TEXT VALUE 064B 2727 02724 call calc_sum 064C 0A84 02725 INCF FSR,1 064D 0800 02726 MOVF INDF,0 064E 2727 02727 call calc_sum 064F 0A84 02728 INCF FSR,1 0650 0800 02729 MOVF INDF,0 0651 2727 02730 call calc_sum 0652 0A84 02731 INCF FSR,1 0653 0800 02732 MOVF INDF,0 0654 2727 02733 call calc_sum 02734 0655 0845 02735 MOVF ip_src,0 ; 相手のIPアドレスを加算 0656 2727 02736 call calc_sum 0657 0846 02737 MOVF ip_src1,0 0658 2727 02738 call calc_sum 0659 0847 02739 MOVF ip_src2,0 065A 2727 02740 call calc_sum 065B 0848 02741 MOVF ip_src3,0 065C 2727 02742 call calc_sum 02743 065D 0100 02744 DB 01,00 ;clrw ; プロトコル番号を加算 065E 2727 02745 call calc_sum 065F 3006 02746 MOVLW TCP_PROTO 0660 2727 02747 call calc_sum 02748 0661 0830 02749 MOVF remote_len1,0 ; バイト数を加算 0662 2727 02750 call calc_sum 0663 082F 02751 MOVF remote_len,0 0664 2727 02752 call calc_sum 02753 02754 02755 ;------- 0665 3032 02756 MOVLW PACKET_SIZE + IP_SIZE + .16 0666 00AD 02757 MOVWF remote_adr 0667 3040 02758 MOVLW PAGE_BEGIN 0668 00AE 02759 MOVWF remote_adr1 02760 02761 ;------- 02762 0669 27B8 02763 call set_checksum ; RTL8019バッファに設定 066A 0008 02764 RETURN 02765 02766 02767 02768 ;=================================================================================== 02769 ; NICの初期化ルーチン 02770 ;=================================================================================== 066B 02771 initialize 066B 2687 02772 call init_nic ; NICリセット 066C 26B4 02773 call getmac ; MACアドレス取得 066D 26CB 02774 call setmac ; MACアドレスセット Warning[207]: Found label after column 1. (リングバッファ初期化) 066E 02775 リングバッファ初期化 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 55 LOC OBJECT CODE LINE SOURCE TEXT VALUE 066E 1683 02776 bsf STATUS,RP0 066F 30BE 02777 MOVLW fifo_top Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0670 00BC 02778 MOVWF fifo_buff Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0671 00BB 02779 MOVWF fifo_poi Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0672 00DC 02780 MOVWF fifo_line 02781 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0673 01BD 02782 clrF fifo_cn Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0674 01DD 02783 clrF fifo_line_cn 0675 1283 02784 bcf STATUS,RP0 02785 0676 0008 02786 RETURN 02787 02788 02789 02790 ;----------------------------------------------------------------------------------- 02791 ; RTL8019のリセット 02792 ;----------------------------------------------------------------------------------- 0677 02793 reset_nic 0677 0187 02794 clrF PORTC 0678 3021 02795 movlw 21h 0679 2760 02796 call assert_wr0 ; STOP OPERATION 02797 067A 301F 02798 MOVLW 1Fh 067B 0087 02799 MOVWF PORTC 067C 276D 02800 call assert_rd ; 1ehを読む 02801 067D 301F 02802 MOVLW 1Fh 067E 0087 02803 MOVWF PORTC 067F 087C 02804 MOVF data0,0 0680 2760 02805 call assert_wr0 ; それを書き戻す(RESET) 0681 02806 reset_nic0 0681 3007 02807 MOVLW 07h 0682 0087 02808 MOVWF PORTC 0683 276D 02809 call assert_rd ; ステータスを読む 02810 0684 1FFC 02811 btfss data0,7 ;data.7 ; RESET 終了チェック 0685 2E81 02812 goto reset_nic0 0686 0008 02813 RETURN 02814 02815 02816 ;----------------------------------------------------------------------------------- 02817 ; RTL8019の初期化 02818 ;----------------------------------------------------------------------------------- 0687 02819 init_nic 0687 2677 02820 call reset_nic 02821 0688 300E 02822 MOVLW 0eh ; DCR(Data Conifguration Register) 0689 0087 02823 MOVWF PORTC MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 56 LOC OBJECT CODE LINE SOURCE TEXT VALUE 068A 3068 02824 movlw 68h 068B 2760 02825 call assert_wr0 02826 068C 300A 02827 MOVLW 0ah 068D 0087 02828 MOVWF PORTC 068E 0100 02829 DB 01,00 ;clrw 068F 2760 02830 call assert_wr0 ; for over flow 02831 0690 300B 02832 MOVLW 0bh 0691 0087 02833 MOVWF PORTC 0692 0100 02834 DB 01,00 ;clrw 0693 2760 02835 call assert_wr0 ; for over flow 02836 0694 3001 02837 MOVLW 01h 0695 0087 02838 MOVWF PORTC 0696 3046 02839 movlw PAGE_START ; PAGE START 0697 2760 02840 call assert_wr0 02841 0698 3002 02842 MOVLW 02h 0699 0087 02843 MOVWF PORTC 069A 3080 02844 movlw PAGE_STOP ; PAGE STOP 069B 2760 02845 call assert_wr0 02846 069C 3003 02847 MOVLW 03h 069D 0087 02848 MOVWF PORTC 069E 3046 02849 movlw PAGE_START ; BDRY 069F 2760 02850 call assert_wr0 02851 06A0 300C 02852 MOVLW 0ch ; RCR 06A1 0087 02853 MOVWF PORTC 06A2 3000 02854 movlw 0h ; 20h 06A3 2760 02855 call assert_wr0 02856 06A4 300D 02857 MOVLW 0dh ; TCR 06A5 0087 02858 MOVWF PORTC 06A6 3002 02859 movlw 2 ; LOOPBACK 06A7 2760 02860 call assert_wr0 02861 06A8 300F 02862 MOVLW 0fh ; IMR 06A9 0087 02863 MOVWF PORTC 06AA 301F 02864 movlw B'11111' 06AB 2760 02865 call assert_wr0 02866 06AC 3007 02867 MOVLW 7 ; ISR 06AD 0087 02868 MOVWF PORTC 06AE 30FF 02869 movlw 0ffh 06AF 2760 02870 call assert_wr0 02871 06B0 0187 02872 clrF PORTC ; CR(Command Regster) 06B1 3022 02873 movlw 22h ; START OPERATION with L/B 06B2 2760 02874 call assert_wr0 06B3 0008 02875 RETURN 02876 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 57 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02877 ;----------------------------------------------------------------------------------- 02878 ; MACアドレス取得 02879 ;----------------------------------------------------------------------------------- 06B4 02880 getmac 06B4 0187 02881 clrF PORTC 06B5 3022 02882 movlw 22h 06B6 2760 02883 call assert_wr0 02884 06B7 01AD 02885 CLRF remote_adr 06B8 01AE 02886 CLRF remote_adr1 06B9 300C 02887 MOVLW .12 ;12bytes転送 06BA 00AF 02888 MOVWF remote_len 06BB 01B0 02889 clrF remote_len1 06BC 2711 02890 call remote_read 02891 06BD 3006 02892 MOVLW 6 ; MACアドレスは6バイト 06BE 00A6 02893 MOVWF gcn1 06BF 30A4 02894 MOVLW mymac ; アドレスにmymacに設定 06C0 0084 02895 MOVWF FSR 06C1 02896 get_mac0 06C1 3010 02897 MOVLW 10h 06C2 0087 02898 MOVWF PORTC 06C3 276D 02899 call assert_rd ; から読み 06C4 276D 02900 call assert_rd ; 02901 06C5 087C 02902 MOVF data0,0 ;mov INDF,data ; MACアドレスをPICに読み込む 06C6 0080 02903 MOVWF INDF 06C7 0A84 02904 INCF FSR,1 06C8 0BA6 02905 DECFSZ gcn1,1 06C9 2EC1 02906 GOTO get_mac0 06CA 0008 02907 RETURN 02908 02909 02910 02911 ;----------------------------------------------------------------------------------- 02912 ; MACアドレス設定 02913 ;----------------------------------------------------------------------------------- 06CB 02914 setmac 02915 ; PAGE 1 06CB 0187 02916 clrF PORTC 06CC 3062 02917 movlw B'01100010' 06CD 2760 02918 call assert_wr0 02919 ; 06CE 3001 02920 MOVLW 01h 06CF 0087 02921 MOVWF PORTC 06D0 30A4 02922 MOVLW mymac 06D1 0084 02923 MOVWF FSR 06D2 3006 02924 MOVLW 6 ; MACアドレスは6バイト 06D3 00A6 02925 MOVWF gcn1 06D4 02926 setmac0 06D4 0800 02927 MOVF INDF,0 06D5 2760 02928 call assert_wr0 ; MACアドレスの設定 06D6 0A84 02929 INCF FSR,1 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 58 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06D7 0A87 02930 INCF PORTC,1 06D8 0BA6 02931 DECFSZ gcn1,1 06D9 2ED4 02932 GOTO setmac0 06DA 3007 02933 MOVLW 7 06DB 0087 02934 MOVWF PORTC 06DC 3047 02935 movlw PAGE_START + 1 ; ついでに 06DD 2760 02936 call assert_wr0 ; カレントページのセット 02937 06DE 3008 02938 MOVLW 8 06DF 0087 02939 MOVWF PORTC 06E0 0100 02940 DB 01,00 ;clrw 06E1 2760 02941 call assert_wr0 06E2 0A87 02942 INCF PORTC,1 06E3 0100 02943 DB 01,00 ;clrw 06E4 2760 02944 call assert_wr0 06E5 0A87 02945 INCF PORTC,1 06E6 0100 02946 DB 01,00 ;clrw 06E7 2760 02947 call assert_wr0 06E8 0A87 02948 INCF PORTC,1 06E9 0100 02949 DB 01,00 ;clrw 06EA 2760 02950 call assert_wr0 06EB 0A87 02951 INCF PORTC,1 06EC 0100 02952 DB 01,00 ;clrw 06ED 2760 02953 call assert_wr0 06EE 0A87 02954 INCF PORTC,1 06EF 0100 02955 DB 01,00 ;clrw 06F0 2760 02956 call assert_wr0 06F1 0A87 02957 INCF PORTC,1 06F2 0100 02958 DB 01,00 ;clrw 06F3 2760 02959 call assert_wr0 06F4 0A87 02960 INCF PORTC,1 06F5 0100 02961 DB 01,00 ;clrw 06F6 2760 02962 call assert_wr0 02963 06F7 0187 02964 clrF PORTC 06F8 3022 02965 movlw 22h 06F9 2760 02966 call assert_wr0 06FA 0008 02967 RETURN 02968 02969 02970 02971 ;----------------------------------------------------------------------------------- 02972 ; リモートDMA書き込み準備 02973 ;----------------------------------------------------------------------------------- 06FB 02974 remote_write 06FB 3008 02975 MOVLW 8 06FC 0087 02976 MOVWF PORTC 06FD 082D 02977 MOVF remote_adr,0 06FE 2760 02978 call assert_wr0 02979 06FF 3009 02980 MOVLW 9 0700 0087 02981 MOVWF PORTC 0701 082E 02982 MOVF remote_adr1,0 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 59 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0702 2760 02983 call assert_wr0 02984 0703 300A 02985 MOVLW 0ah 0704 0087 02986 MOVWF PORTC 0705 082F 02987 MOVF remote_len,0 0706 2760 02988 call assert_wr0 02989 0707 300B 02990 MOVLW 0bh 0708 0087 02991 MOVWF PORTC 0709 0830 02992 MOVF remote_len1,0 070A 2760 02993 call assert_wr0 02994 070B 0187 02995 clrF PORTC 070C 3012 02996 movlw B'00010010' 070D 2760 02997 call assert_wr0 ; write now! 070E 3010 02998 MOVLW 10h 070F 0087 02999 MOVWF PORTC 0710 0008 03000 RETURN 03001 03002 03003 ;----------------------------------------------------------------------------------- 03004 ; リモートDMA読み込み準備 03005 ;----------------------------------------------------------------------------------- 0711 03006 remote_read 0711 3008 03007 MOVLW 8 0712 0087 03008 MOVWF PORTC 0713 082D 03009 MOVF remote_adr,0 0714 2760 03010 call assert_wr0 03011 0715 3009 03012 MOVLW 9 0716 0087 03013 MOVWF PORTC 0717 082E 03014 MOVF remote_adr1,0 0718 2760 03015 call assert_wr0 03016 0719 300A 03017 MOVLW 0ah 071A 0087 03018 MOVWF PORTC 071B 082F 03019 MOVF remote_len,0 071C 2760 03020 call assert_wr0 03021 071D 300B 03022 MOVLW 0bh 071E 0087 03023 MOVWF PORTC 071F 0830 03024 MOVF remote_len1,0 0720 2760 03025 call assert_wr0 03026 0721 0187 03027 clrF PORTC 0722 300A 03028 movlw B'00001010' 0723 2760 03029 call assert_wr0 ; read now! 0724 3010 03030 MOVLW 10h 0725 0087 03031 MOVWF PORTC 0726 0008 03032 RETURN 03033 03034 ;----------------------------------------------------------------------------------- 03035 ; チェックサムの計算 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 60 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03036 ;----------------------------------------------------------------------------------- 0727 03037 calc_sum 0727 1C29 03038 BTFSS bytes,0 ;btfss bytes.0 ;アラインメントチェック 0728 2F33 03039 goto calc_sum_high 03040 ; LOWバイト 0729 07A7 03041 ADDWF sum,1 ;データを(sum[1],sum[0])に加算 072A 3001 03042 movlw 1 072B 1803 03043 btfsc STATUS,C 072C 07A8 03044 addwf sum1,1 03045 072D 1803 03046 btfsc STATUS,C ; 1の補数の計算 072E 07A7 03047 addwf sum,1 072F 1803 03048 btfsc STATUS,C 0730 07A8 03049 addwf sum1,1 0731 0AA9 03050 INCF bytes,1 ; アラインを次に 0732 0008 03051 RETURN 03052 ; HIGHバイト 0733 03053 calc_sum_high 0733 07A8 03054 ADDWF sum1,1 ; データを(sum[1],sum[0])に加算 0734 3001 03055 movlw 1 03056 0735 1803 03057 btfsc STATUS,C ; 1の補数の計算 0736 07A7 03058 ADDWF sum,1 0737 1803 03059 btfsc STATUS,C 0738 07A8 03060 ADDWF sum1,1 03061 0739 0AA9 03062 INCF bytes,1 ; アラインを次に 073A 0008 03063 RETURN 03064 03065 03066 073B 03067 assert_wr2times 073B 0100 03068 DB 01,00 ;clrw 073C 274B 03069 call assert_wr 073D 0100 03070 DB 01,00 ;clrw 073E 2F4B 03071 goto assert_wr 03072 ;----------------------------------------------------------------------------------- 03073 ; 送信データ=data 073F 03074 assert_wr2x 073F 3001 03075 MOVLW 1 ; remote_len++ 0740 07AF 03076 ADDWF remote_len,1 0741 1803 03077 btfsc STATUS,C 0742 0AB0 03078 INCF remote_len1,1 0743 087C 03079 MOVF data0,0 ; data変数を媒介 0744 2F4B 03080 goto assert_wr 03081 ; 送信データ=W 0745 00FC 03082 assert_wr2 movwf data0 ; 一度しまう 0746 3001 03083 MOVLW 1 ; remote_len++ 0747 07AF 03084 ADDWF remote_len,1 0748 1803 03085 btfsc STATUS,C 0749 0AB0 03086 INCF remote_len1,1 074A 087C 03087 MOVF data0,0 03088 ;----------------------------------------------------------------------------------- MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 61 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03089 ; RTL8019へ書き込み(チェックサム考慮) 03090 ;-----------------------------------------------------------------------------------HAVE 074B 03091 assert_wr 074B 0088 03092 MOVWF PORTD 074C 1C29 03093 assert_wr_2 btfss bytes,0 074D 2F58 03094 goto asser_wr_high 03095 074E 07A7 03096 ADDWF sum,1 074F 3001 03097 movlw 1 0750 1803 03098 btfsc STATUS,C 0751 07A8 03099 ADDWF sum1,1 03100 0752 1803 03101 btfsc STATUS,C 0753 07A7 03102 ADDWF sum,1 0754 1803 03103 btfsc STATUS,C 0755 07A8 03104 ADDWF sum1,1 03105 0756 0AA9 03106 INCF bytes,1 0757 2F61 03107 goto assert_wr0_2 0758 03108 asser_wr_high 0758 07A8 03109 ADDWF sum1,1 0759 3001 03110 movlw 1 03111 075A 1803 03112 btfsc STATUS,C 075B 07A7 03113 ADDWF sum,1 075C 1803 03114 btfsc STATUS,C 075D 07A8 03115 ADDWF sum1,1 03116 075E 0AA9 03117 INCF bytes,1 075F 2F61 03118 goto assert_wr0_2 03119 03120 03121 ;----------------------------------------------------------------------------------- 03122 ; RTL8019へ単純書き込み 03123 ;----------------------------------------------------------------------------------- 0760 03124 assert_wr0 0760 0088 03125 movwf PORTD 0761 1683 03126 assert_wr0_2 bsf STATUS,RP0 0762 0188 03127 clrF PORTD ; RDポート出力 0763 1283 03128 bcf STATUS,RP0 03129 0764 1089 03130 bcf PORTE,1 03131 03132 0765 1E87 03133 btfss PORTC,5 0766 2F65 03134 goto $-1 03135 0767 1489 03136 bsf PORTE,1 03137 0768 1683 03138 bsf STATUS,RP0 0769 30FF 03139 MOVLW 0FFH ;RDポート入力 076A 0088 03140 MOVWF PORTD 076B 1283 03141 bcf STATUS,RP0 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 62 LOC OBJECT CODE LINE SOURCE TEXT VALUE 076C 0008 03142 RETURN 03143 03144 076D 03145 assert_rd 076D 1009 03146 bcf PORTE,0 03147 076E 1E87 03148 btfss PORTC,5 ; ~Wait 076F 2F6E 03149 goto $-1 03150 0770 0808 03151 MOVF PORTD,0 0771 00FC 03152 MOVWF data0 0772 1409 03153 bsf PORTE,0 0773 0008 03154 RETURN 03155 03156 03157 03158 ;----------------------------------------------------------------------------------- 03159 ; パケット送信関連処理 03160 ;----------------------------------------------------------------------------------- 0774 03161 transmit_this_ip 0774 30A0 03162 MOVLW this_ip 0775 0084 03163 MOVWF FSR 0776 3004 03164 movlw 4 03165 0777 03166 transmit_nbytes 0777 00A6 03167 movwf gcn1 0778 3010 03168 MOVLW 10h 0779 0087 03169 MOVWF PORTC 077A 0800 03170 transmit0 MOVF INDF,0 077B 274B 03171 call assert_wr 077C 0A84 03172 INCF FSR,1 077D 0BA6 03173 DECFSZ gcn1,1 077E 2F7A 03174 GOTO transmit0 077F 0008 03175 RETURN 03176 03177 0780 03178 transmit_nbytes2 0780 00A6 03179 movwf gcn1 0781 3010 03180 MOVLW 10h 0782 0087 03181 MOVWF PORTC 0783 0800 03182 transmit2_0 MOVF INDF,0 0784 2745 03183 call assert_wr2 0785 0A84 03184 INCF FSR,1 0786 0BA6 03185 DECFSZ gcn1,1 0787 2F83 03186 GOTO transmit2_0 0788 0008 03187 RETURN 03188 03189 ;----------------------------------------------------------------------------------- 03190 ; パケット送信 03191 ;----------------------------------------------------------------------------------- 0789 03192 transmit 0789 03193 retry 0789 0187 03194 clrF PORTC MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 63 LOC OBJECT CODE LINE SOURCE TEXT VALUE 078A 276D 03195 call assert_rd 03196 078B 197C 03197 BTFSC data0,2 ; 送信ビットを見る 078C 2F89 03198 goto transmit ; 送信待ち 03199 078D 0187 03200 clrF PORTC 078E 3026 03201 movlw B'00100110' ; 送信ビットを立てる 078F 2760 03202 call assert_wr0 ; 送信! 0790 03203 trans100 0790 3004 03204 MOVLW 4 0791 0087 03205 MOVWF PORTC 0792 276D 03206 call assert_rd 03207 0793 187C 03208 btfsc data0,0 0794 2F98 03209 goto transmit9 ; 送信完了? 0795 19FC 03210 btfsc data0,3 0796 2F89 03211 goto retry 03212 0797 2F90 03213 goto trans100 0798 0008 03214 transmit9 RETURN 03215 03216 03217 03218 ;----------------------------------------------------------------------------------- 03219 ; Ethernetヘッダを作成する。 03220 ;----------------------------------------------------------------------------------- 0799 03221 prepare_ether2 0799 302A 03222 movlw PACKET_SIZE + ARP_SIZE 079A 00AF 03223 MOVWF remote_len 079B 2F9E 03224 GOTO prepare_ether1 079C 03225 prepare_ether 03226 ; call wait_transmit ; 送信中待ちを行う 079C 3022 03227 movlw PACKET_SIZE + IP_SIZE 079D 00AF 03228 MOVWF remote_len 079E 03229 prepare_ether1 079E 01B0 03230 CLRF remote_len1 079F 01AD 03231 CLRF remote_adr 07A0 3040 03232 MOVLW PAGE_BEGIN 07A1 00AE 03233 MOVWF remote_adr1 03234 03235 03236 07A2 26FB 03237 call remote_write 03238 07A3 3010 03239 MOVLW 10h ; このパケットを送ってくれた相手のMAC 07A4 0087 03240 MOVWF PORTC 07A5 30E8 03241 MOVLW eth_src 07A6 0084 03242 MOVWF FSR 07A7 3006 03243 movlw 6 07A8 2777 03244 call transmit_nbytes 03245 07A9 30A4 03246 MOVLW mymac ; 自分のMACアドレスを設定 07AA 0084 03247 MOVWF FSR MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 64 LOC OBJECT CODE LINE SOURCE TEXT VALUE 07AB 3006 03248 movlw 6 07AC 2777 03249 call transmit_nbytes 07AD 0008 03250 RETURN 03251 03252 03253 ;----------------------------------------------------------------------------------- 03254 ; IPヘッダ作成作業 03255 ;----------------------------------------------------------------------------------- 07AE 03256 prepare_ip 07AE 279C 03257 call prepare_ether 07AF 3008 03258 movlw COM_PROTO 07B0 274B 03259 call assert_wr 07B1 3000 03260 movlw IP_PROTO 07B2 274B 03261 call assert_wr 03262 07B3 27C5 03263 call ip_common 03264 03265 07B4 3018 03266 MOVLW ip_sum - ip_header + PACKET_SIZE 07B5 00AD 03267 MOVWF remote_adr 07B6 3040 03268 MOVLW PAGE_BEGIN 07B7 00AE 03269 MOVWF remote_adr1 03270 03271 03272 03273 ; goto set_checksum 07B8 03274 set_checksum 07B8 09A7 03275 COMF sum,1 07B9 09A8 03276 COMF sum1,1 03277 07BA 3002 03278 MOVLW 2 ;チェックサムは2バイトである 07BB 00AF 03279 MOVWF remote_len 07BC 01B0 03280 CLRF remote_len1 07BD 26FB 03281 call remote_write 03282 07BE 3010 03283 MOVLW 10h 07BF 0087 03284 MOVWF PORTC 07C0 0828 03285 MOVF sum1,0 07C1 2760 03286 call assert_wr0 ; チェックサムの書き込み(assert_wr0をコールしな ッればならない) 07C2 0827 03287 MOVF sum,0 07C3 2760 03288 call assert_wr0 07C4 0008 03289 RETURN 03290 03291 03292 03293 ;----------------------------------------------------------------------------------- 03294 ; IPプロトコルヘッダ作成 03295 ;----------------------------------------------------------------------------------- 07C5 03296 ip_common 07C5 20E3 03297 call clear_sum ; チェックサムの値をクリア 03298 07C6 3010 03299 MOVLW 10h MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 65 LOC OBJECT CODE LINE SOURCE TEXT VALUE 07C7 0087 03300 MOVWF PORTC 07C8 3045 03301 movlw 45h ; ID 07C9 274B 03302 call assert_wr 07CA 3000 03303 movlw 00h ; TOS 07CB 274B 03304 call assert_wr 03305 07CC 083B 03306 MOVF ip_length,0 ; length high 07CD 274B 03307 call assert_wr 07CE 083C 03308 MOVF ip_length1,0 ; length low 07CF 274B 03309 call assert_wr 03310 07D0 30AE 03311 MOVLW ident 07D1 0084 03312 MOVWF FSR 07D2 0800 03313 MOVF INDF,0 ; Seq No High 07D3 274B 03314 call assert_wr 07D4 0A84 03315 INCF FSR,1 03316 07D5 0800 03317 MOVF INDF,0 ; Seq No Low 07D6 274B 03318 call assert_wr 07D7 3001 03319 MOVLW 1 07D8 0780 03320 ADDWF INDF,1 07D9 0384 03321 decF FSR,1 07DA 1803 03322 btfsc STATUS,C 07DB 0780 03323 addwf INDF,1 03324 07DC 3000 03325 movlw 00h ; flagment(2bytes) 07DD 274B 03326 call assert_wr 07DE 3000 03327 movlw 00h ; 07DF 274B 03328 call assert_wr 03329 07E0 30FF 03330 movlw 0ffh ; TTL 07E1 274B 03331 call assert_wr 03332 07E2 0837 03333 MOVF proto,0 ; PROTOCOL = anything 07E3 274B 03334 call assert_wr 03335 07E4 273B 03336 call assert_wr2times ; sum is zero 03337 07E5 2774 03338 call transmit_this_ip 03339 07E6 3045 03340 MOVLW ip_src ; to IP 07E7 0084 03341 MOVWF FSR 07E8 3004 03342 movlw 4 07E9 2777 03343 call transmit_nbytes 07EA 0008 03344 RETURN 03345 03346 03347 03348 03349 ;----------------------------------------------------------------------------------- 03350 ; パラレルI/Fの制御 03351 ;----------------------------------------------------------------------------------- 0820 03352 org 820h MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 66 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0820 03353 udp_parallel 0820 3008 03354 MOVLW $ >> 8 0821 008A 03355 MOVWF PCLATH 0822 3055 03356 MOVLW udp_data 0823 0084 03357 MOVWF FSR 03358 0824 3006 03359 MOVLW 6 0825 0200 03360 SUBWF INDF,0 0826 1803 03361 BTFSC 3,0 0827 28C5 03362 GOTO main90 0828 0800 03363 MOVF INDF,0 0829 0A84 03364 INCF FSR,1 082A 0782 03365 ADDWF 2,1 082B 287F 03366 goto para_get_status ; ステータスの取得 082C 2831 03367 goto para_set_high ; High設定 082D 2835 03368 goto para_set_low ; Low設定 082E 284B 03369 goto para_set_whole ; 全設定 082F 286F 03370 goto para_get_adc ; A/D変換 0830 2865 03371 goto para_set_rbpu ; 内蔵プルアップOn/Off 03372 ; 03373 ; HIGH/INPUTにセット 0831 03374 para_set_high 0831 203A 03375 call para_set_common 0832 087E 03376 MOVF wk1,0 0833 0480 03377 IORWF INDF,1 0834 287F 03378 goto para_get_status 03379 ; 03380 ; LOW/OUTPUTにセット 0835 03381 para_set_low 0835 203A 03382 call para_set_common 0836 09FE 03383 COMF wk1,1 0837 087E 03384 MOVF wk1,0 0838 0580 03385 ANDWF INDF,1 0839 287F 03386 goto para_get_status 03387 ; 03388 ; ビット位置の計算 083A 03389 para_set_common 083A 0A84 03390 INCF FSR,1 083B 0800 03391 MOVF INDF,0 ;ビット位置(0-7) 083C 00FD 03392 MOVWF wk 083D 3001 03393 MOVLW 1 083E 00FE 03394 MOVWF wk1 083F 03395 para_set_common0 083F 3000 03396 MOVLW 0 0840 027D 03397 SUBWF wk,0 0841 1903 03398 BTFSC 3,2 0842 2847 03399 GOTO para_set_common9 0843 1003 03400 BCF 3,0 0844 0DFE 03401 RLF wk1,1 0845 03FD 03402 DECF wk,1 0846 283F 03403 goto para_set_common0 0847 03404 para_set_common9 0847 0384 03405 decF FSR,1 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 67 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0848 0800 03406 MOVF INDF,0 ; I/Oポート番号 0849 0084 03407 MOVWF FSR 084A 0008 03408 RETURN 03409 ; 03410 ; SET WHOLEモード 084B 03411 para_set_whole 084B 0800 03412 MOVF INDF,0 ; ポート 084C 00AA 03413 MOVWF ptr 084D 0A84 03414 INCF FSR,1 084E 0800 03415 MOVF INDF,0 ; サイズ 084F 00A6 03416 MOVWF gcn1 0850 0A84 03417 INCF FSR,1 0851 03418 para_set_whole0 0851 0800 03419 MOVF INDF,0 ; Mask 0852 00FD 03420 MOVWF wk 0853 0A84 03421 INCF FSR,1 0854 0800 03422 MOVF INDF,0 0855 00FE 03423 MOVWF wk1 0856 0A84 03424 INCF FSR,1 03425 0857 0804 03426 MOVF FSR,0 ; save FSR 0858 00FF 03427 MOVWF wk2 0859 082A 03428 MOVF ptr,0 085A 0084 03429 MOVWF FSR 085B 0800 03430 MOVF INDF,0 085C 057D 03431 ANDWF wk,0 085D 047E 03432 IORWF wk1,0 085E 0080 03433 movwF INDF ; *ptr = (*ptr & Mask) | Value 085F 087F 03434 MOVF wk2,0 ; restore FSR 0860 0084 03435 MOVWF FSR 03436 0861 0AAA 03437 INCF ptr,1 0862 0BA6 03438 DECFSZ gcn1,1 0863 2851 03439 GOTO para_set_whole0 0864 287F 03440 goto para_get_status 03441 03442 03443 ; 03444 ; 内蔵プルアップOn/Off 0865 03445 para_set_rbpu 0865 1683 03446 bsf STATUS,RP0 0866 3000 03447 MOVLW 0 0867 0200 03448 SUBWF INDF,0 0868 1D03 03449 BTFSS 3,2 0869 286C 03450 GOTO para_set_rbpu1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 086A 1781 03451 BSF OPTION_REG,7 ;プルアップしない 086B 286D 03452 goto para_set_rbpu9 086C 03453 para_set_rbpu1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 086C 1381 03454 BCF OPTION_REG,7 ; プルアップする 086D 1283 03455 para_set_rbpu9 bcf STATUS,RP0 086E 287F 03456 goto para_get_status MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 68 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03457 03458 03459 03460 ;----------------------------------------------------------------------------------- 086F 03461 para_get_adc 086F 0800 03462 MOVF INDF,0 ; ADCON1の設定 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0870 009F 03463 MOVWF ADCON1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0871 141F 03464 BSF ADCON1,0 0872 0A84 03465 INCF FSR,1 03466 0873 0800 03467 MOVF INDF,0 ;アクイジションタイム待機 0874 00A0 03468 MOVWF wait_cn 0875 03469 para_get_aqu0 0875 3008 03470 MOVLW 8 0876 00A1 03471 MOVWF wait_cn2 0877 0BA1 03472 DECFSZ wait_cn2,1 0878 2877 03473 GOTO $-1 0879 0BA0 03474 DECFSZ wait_cn,1 ; 25μs×WaitTime 087A 2875 03475 GOTO para_get_aqu0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 087B 151F 03476 BSF ADCON1,2 ; AD変換開始 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 087C 191F 03477 BTFSC ADCON1,2 ; AD変換待ち(同期式) 087D 287C 03478 goto $-1 ; 本当は非同期にしたいところ(^_^; 03479 087E 018A 03480 CLRF PCLATH 087F 03481 para_get_status 087F 30B7 03482 MOVLW para_port ; 送信元ポート番号 0880 00FF 03483 MOVWF wk2 0881 03484 common_get_status 0881 01BB 03485 CLRF ip_length 03486 0882 3024 03487 MOVLW IP_SIZE + UDP_SIZE + PARALLEL_PACKET_SIZE 0883 00BC 03488 MOVWF ip_length1 03489 0884 018A 03490 CLRF PCLATH 03491 0885 3011 03492 MOVLW UDP_PROTO ; UDP packet 0886 00B7 03493 MOVWF proto Message[306]: Crossing page boundary -- ensure page bits are set. 0887 27AE 03494 call prepare_ip ; IPパケットまで作成 03495 Message[306]: Crossing page boundary -- ensure page bits are set. 0888 20E3 03496 call clear_sum ; チェックサムの値をクリア 03497 03498 0889 3022 03499 MOVLW PACKET_SIZE+IP_SIZE 088A 00AD 03500 MOVWF remote_adr 088B 3040 03501 MOVLW PAGE_BEGIN 088C 00AE 03502 MOVWF remote_adr1 03503 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 69 LOC OBJECT CODE LINE SOURCE TEXT VALUE 088D 3010 03504 MOVLW (UDP_SIZE + PARALLEL_PACKET_SIZE) & 0ffh 088E 00AF 03505 MOVWF remote_len 088F 3000 03506 MOVLW HIGH (UDP_SIZE + PARALLEL_PACKET_SIZE) 0890 00B0 03507 MOVWF remote_len1 03508 Message[306]: Crossing page boundary -- ensure page bits are set. 0891 26FB 03509 call remote_write 03510 0892 3010 03511 MOVLW 10h 0893 0087 03512 MOVWF PORTC 03513 0894 087F 03514 MOVF wk2,0 ;para_port 0895 0084 03515 MOVWF FSR 0896 0800 03516 MOVF INDF,0 ; From PORT #(HIGH) Message[306]: Crossing page boundary -- ensure page bits are set. 0897 274B 03517 call assert_wr 0898 0A84 03518 INCF FSR,1 0899 0800 03519 MOVF INDF,0 ; From PORT #(LOW) Message[306]: Crossing page boundary -- ensure page bits are set. 089A 274B 03520 call assert_wr 03521 089B 084D 03522 MOVF udp_src_port,00 ; To PORT # Message[306]: Crossing page boundary -- ensure page bits are set. 089C 274B 03523 call assert_wr 089D 084E 03524 MOVF udp_src_port1,0 Message[306]: Crossing page boundary -- ensure page bits are set. 089E 274B 03525 call assert_wr 03526 089F 3000 03527 MOVLW HIGH (UDP_SIZE + PARALLEL_PACKET_SIZE) Message[306]: Crossing page boundary -- ensure page bits are set. 08A0 274B 03528 call assert_wr 08A1 3010 03529 movlw (UDP_SIZE + PARALLEL_PACKET_SIZE) & 0ffh ; UDP DATAGRAM SIZE Message[306]: Crossing page boundary -- ensure page bits are set. 08A2 274B 03530 call assert_wr 03531 Message[306]: Crossing page boundary -- ensure page bits are set. 08A3 273B 03532 call assert_wr2times ; sum(not fixed) 03533 08A4 0805 03534 MOVF PORTA,0 Message[306]: Crossing page boundary -- ensure page bits are set. 08A5 274B 03535 call assert_wr ; 08A6 0806 03536 MOVF PORTB,0 Message[306]: Crossing page boundary -- ensure page bits are set. 08A7 274B 03537 call assert_wr ; 03538 08A8 3085 03539 MOVLW 80h + PORTA ;ra 08A9 0084 03540 MOVWF FSR 08AA 0800 03541 MOVF INDF,0 Message[306]: Crossing page boundary -- ensure page bits are set. 08AB 274B 03542 call assert_wr ; 08AC 0A84 03543 INCF FSR,1 08AD 0800 03544 MOVF INDF,0 Message[306]: Crossing page boundary -- ensure page bits are set. MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 70 LOC OBJECT CODE LINE SOURCE TEXT VALUE 08AE 274B 03545 call assert_wr ; 03546 08AF 081E 03547 MOVF ADRESH,0 08B0 00B3 03548 MOVWF val1 ; 変換結果をval[1]:val[0]へ 08B1 1683 03549 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 08B2 081E 03550 MOVF ADRESL,0 ;adres,0; page1は下位バイト 08B3 1283 03551 bcf STATUS,RP0 08B4 00B2 03552 MOVWF val 03553 08B5 0833 03554 MOVF val1,0 Message[306]: Crossing page boundary -- ensure page bits are set. 08B6 274B 03555 call assert_wr ; AD 変換結果(H) 08B7 0832 03556 MOVF val,0 Message[306]: Crossing page boundary -- ensure page bits are set. 08B8 274B 03557 call assert_wr ; AD 変換結果(L) 03558 08B9 1683 03559 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 08BA 081F 03560 MOVF ADCON1,0 08BB 1283 03561 bcf STATUS,RP0 Message[306]: Crossing page boundary -- ensure page bits are set. 08BC 274B 03562 call assert_wr ; 08BD 3000 03563 movlw 0 ; Reserved Message[306]: Crossing page boundary -- ensure page bits are set. 08BE 274B 03564 call assert_wr ; 03565 08BF 3008 03566 MOVLW HIGH (calc_udp_sum) 08C0 008A 03567 MOVWF PCLATH 03568 08C1 20C8 03569 call calc_udp_sum 08C2 3008 03570 MOVLW HIGH (transmit_60bytes) 08C3 008A 03571 MOVWF PCLATH 03572 08C4 20ED 03573 call transmit_60bytes 08C5 03574 main90 08C5 3001 03575 MOVLW HIGH (main9) 08C6 008A 03576 MOVWF PCLATH 03577 Message[306]: Crossing page boundary -- ensure page bits are set. 08C7 297E 03578 goto main9 03579 03580 03581 ;----------------------------------------------------------------------------------- 03582 ; UDPチェックサム計算+送信 03583 ; 08C8 03584 calc_udp_sum 08C8 018A 03585 CLRF PCLATH 08C9 01A9 03586 CLRF bytes ;clr bytes ; 2バイトアラインの調整 08CA 30A0 03587 MOVLW this_ip ; 自分のIPアドレスを加算 08CB 0084 03588 MOVWF FSR 03589 08CC 0800 03590 MOVF INDF,0 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 71 LOC OBJECT CODE LINE SOURCE TEXT VALUE Message[306]: Crossing page boundary -- ensure page bits are set. 08CD 2727 03591 call calc_sum 08CE 0A84 03592 INCF FSR,1 08CF 0800 03593 MOVF INDF,0 Message[306]: Crossing page boundary -- ensure page bits are set. 08D0 2727 03594 call calc_sum 08D1 0A84 03595 INCF FSR,1 08D2 0800 03596 MOVF INDF,0 Message[306]: Crossing page boundary -- ensure page bits are set. 08D3 2727 03597 call calc_sum 08D4 0A84 03598 INCF FSR,1 08D5 0800 03599 MOVF INDF,0 Message[306]: Crossing page boundary -- ensure page bits are set. 08D6 2727 03600 call calc_sum 03601 08D7 0845 03602 MOVF ip_src,0 ; 相手のIPアドレスを加算 Message[306]: Crossing page boundary -- ensure page bits are set. 08D8 2727 03603 call calc_sum 08D9 0846 03604 MOVF ip_src1,0 Message[306]: Crossing page boundary -- ensure page bits are set. 08DA 2727 03605 call calc_sum 08DB 0847 03606 MOVF ip_src2,0 Message[306]: Crossing page boundary -- ensure page bits are set. 08DC 2727 03607 call calc_sum 08DD 0848 03608 MOVF ip_src3,0 Message[306]: Crossing page boundary -- ensure page bits are set. 08DE 2727 03609 call calc_sum 03610 08DF 0100 03611 DB 01,00 ;clrw ; プロトコル番号を加算 Message[306]: Crossing page boundary -- ensure page bits are set. 08E0 2727 03612 call calc_sum 08E1 3011 03613 MOVLW UDP_PROTO Message[306]: Crossing page boundary -- ensure page bits are set. 08E2 2727 03614 call calc_sum 03615 08E3 0830 03616 MOVF remote_len1,0 ;#PARALLEL_PACKET_SIZE>>8 Message[306]: Crossing page boundary -- ensure page bits are set. 08E4 2727 03617 call calc_sum 08E5 082F 03618 MOVF remote_len,0 ;#PARALLEL_PACKET_SIZE & 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 08E6 2727 03619 call calc_sum 03620 03621 ; チェックサムのセット位置 03622 08E7 3028 03623 MOVLW PACKET_SIZE+IP_SIZE + 6 08E8 00AD 03624 MOVWF remote_adr 08E9 3040 03625 MOVLW PAGE_BEGIN 08EA 00AE 03626 MOVWF remote_adr1 03627 Message[306]: Crossing page boundary -- ensure page bits are set. 08EB 27B8 03628 call set_checksum 08EC 0008 03629 RETURN 03630 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 72 LOC OBJECT CODE LINE SOURCE TEXT VALUE 08ED 03631 transmit_60bytes 08ED 018A 03632 CLRF PCLATH 03633 08EE 3004 03634 MOVLW 4h 08EF 0087 03635 MOVWF PORTC 08F0 3040 03636 movlw PAGE_BEGIN ; transmit page is start page Message[306]: Crossing page boundary -- ensure page bits are set. 08F1 2760 03637 call assert_wr0 03638 08F2 3005 03639 MOVLW 5 08F3 0087 03640 MOVWF PORTC 08F4 303C 03641 movlw .60 ; 基本的に60バイトとする。(PARALLEL_PACKET_SIZE+IP_SIZE+PACKET _SIZE) & 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 08F5 2760 03642 call assert_wr0 03643 08F6 3006 03644 MOVLW 6 08F7 0087 03645 MOVWF PORTC 08F8 3000 03646 movlw 0 ; (PARALLEL_PACKET_SIZE+IP_SIZE+PACKET_SIZE) >> 8 Message[306]: Crossing page boundary -- ensure page bits are set. 08F9 2760 03647 call assert_wr0 03648 Message[306]: Crossing page boundary -- ensure page bits are set. 08FA 2789 03649 call transmit 08FB 0008 03650 RETURN 03651 03652 ;----------------------------------------------------------------------------------- 03653 ; シリアルポート処理 03654 ; 08FC 03655 udp_serial 08FC 1683 03656 bsf STATUS,RP0 08FD 1703 03657 BSF STATUS,RP1 08FE 3010 03658 movlw .16 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 08FF 009E 03659 MOVwf transmitted & 0ffh 0900 0183 03660 clrf STATUS 03661 0901 0851 03662 MOVF udp_length,0 0902 00B0 03663 MOVWF remote_len1 0903 0852 03664 MOVF udp_length1,0 0904 00AF 03665 MOVWF remote_len 03666 0905 3008 03667 MOVLW 8 0906 02AF 03668 SUBWF remote_len,1 0907 1C03 03669 btfss STATUS,C 0908 03B0 03670 DECF remote_len1,1 03671 0909 3003 03672 MOVLW HIGH (get_dgram) 090A 008A 03673 MOVWF PCLATH 03674 Message[306]: Crossing page boundary -- ensure page bits are set. 090B 2311 03675 call get_dgram 090C 3009 03676 MOVLW $>>8 ;HIGH (udp_serial) MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 73 LOC OBJECT CODE LINE SOURCE TEXT VALUE 090D 008A 03677 MOVWF PCLATH 03678 090E 1803 03679 btfsc STATUS,C 090F 28C5 03680 goto main90 03681 0910 087C 03682 MOVF data0,0 0911 00D5 03683 MOVWF udp_data 0912 3004 03684 MOVLW 4 0913 027C 03685 SUBWF data0,0 0914 1803 03686 BTFSC 3,0 0915 28C5 03687 GOTO main90 0916 087C 03688 MOVF data0,0 0917 0782 03689 ADDWF 2,1 0918 2938 03690 goto ser_get_status ; ステータス表示 0919 298D 03691 goto ser_register_tag ; アドレス登録 091A 2997 03692 goto ser_unregister_tag ; アドレス削除 091B 2971 03693 goto ser_transmit ; データ送信 03694 ; 03695 ; ARP応答受信処理 091C 03696 ser_arp 091C 1383 03697 bcf STATUS,IRP 091D 3041 03698 MOVLW arp_src_mac & 0ffh 091E 0084 03699 MOVWF FSR 03700 091F 1683 03701 bsf STATUS,RP0 0920 1703 03702 bsf STATUS,RP1 0921 0800 03703 MOVF INDF,0 Warning[219]: Invalid RAM location specified. Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0922 0090 03704 MOVWF on_ether & 0FFH ; ハードウェアアドレスをセット 0923 0A84 03705 INCF FSR,1 0924 0800 03706 MOVF INDF,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0925 0091 03707 MOVWF on_ether1 & 0FFH 0926 0A84 03708 INCF FSR,1 0927 0800 03709 MOVF INDF,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0928 0092 03710 MOVWF on_ether2 & 0FFH 0929 0A84 03711 INCF FSR,1 092A 0800 03712 MOVF INDF,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 092B 0093 03713 MOVWF on_ether3 & 0FFH 092C 0A84 03714 INCF FSR,1 092D 0800 03715 MOVF INDF,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 092E 0094 03716 MOVWF on_ether4 & 0FFH 092F 0A84 03717 INCF FSR,1 0930 0800 03718 MOVF INDF,0 Warning[219]: Invalid RAM location specified. Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0931 0095 03719 MOVWF on_ether5 & 0FFH 0932 0183 03720 CLRF STATUS 03721 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 74 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03722 0933 1618 03723 bsf RCSTA,4 ;cren 0934 170B 03724 bsf INTCON,6 ;peie ; 使用許可 0935 3001 03725 MOVLW HIGH (main9) 0936 008A 03726 MOVWF PCLATH 03727 Message[306]: Crossing page boundary -- ensure page bits are set. 0937 297E 03728 goto main9 03729 03730 ;----------------------------------------------------------------------------------- 03731 ; ホストへシリアルポートのステータスを送信する。 03732 ;----------------------------------------------------------------------------------- 0938 03733 ser_get_status 0938 01BB 03734 CLRF ip_length 0939 302C 03735 MOVLW IP_SIZE + UDP_SIZE + SERIAL_PACKET_SIZE 093A 00BC 03736 MOVWF ip_length1 03737 093B 018A 03738 CLRF PCLATH 03739 093C 3011 03740 MOVLW UDP_PROTO ; UDP packet 093D 00B7 03741 MOVWF proto Message[306]: Crossing page boundary -- ensure page bits are set. 093E 27AE 03742 call prepare_ip ; IPパケットまで作成 03743 Message[306]: Crossing page boundary -- ensure page bits are set. 093F 20E3 03744 call clear_sum ; チェックサムの値をクリア 03745 03746 0940 3022 03747 MOVLW PACKET_SIZE+IP_SIZE 0941 00AD 03748 MOVWF remote_adr 0942 3040 03749 MOVLW PAGE_BEGIN 0943 00AE 03750 MOVWF remote_adr1 03751 0944 3018 03752 MOVLW (UDP_SIZE + SERIAL_PACKET_SIZE) & 0ffh 0945 00AF 03753 MOVWF remote_len 0946 3000 03754 MOVLW HIGH (UDP_SIZE + SERIAL_PACKET_SIZE) 0947 00B0 03755 MOVWF remote_len1 03756 03757 ;------- Message[306]: Crossing page boundary -- ensure page bits are set. 0948 26FB 03758 call remote_write 03759 0949 3010 03760 MOVLW 10h 094A 0087 03761 MOVWF PORTC 03762 094B 30B9 03763 MOVLW serial_port 094C 0084 03764 MOVWF FSR 094D 0800 03765 MOVF INDF,0 ; From PORT #(HIGH) Message[306]: Crossing page boundary -- ensure page bits are set. 094E 274B 03766 call assert_wr 094F 0A84 03767 INCF FSR,1 0950 0800 03768 MOVF INDF,0 ; From PORT #(LOW) Message[306]: Crossing page boundary -- ensure page bits are set. MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 75 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0951 274B 03769 call assert_wr 03770 0952 084D 03771 MOVF udp_src_port,0 ; To PORT # Message[306]: Crossing page boundary -- ensure page bits are set. 0953 274B 03772 call assert_wr 0954 084E 03773 MOVF udp_src_port1,0 Message[306]: Crossing page boundary -- ensure page bits are set. 0955 274B 03774 call assert_wr 03775 0956 3000 03776 movlw HIGH (UDP_SIZE + SERIAL_PACKET_SIZE) Message[306]: Crossing page boundary -- ensure page bits are set. 0957 274B 03777 call assert_wr 0958 3018 03778 movlw (UDP_SIZE + SERIAL_PACKET_SIZE) & 0ffh ; UDP DATAGRAM SIZE Message[306]: Crossing page boundary -- ensure page bits are set. 0959 274B 03779 call assert_wr 03780 Message[306]: Crossing page boundary -- ensure page bits are set. 095A 273B 03781 call assert_wr2times ; sum(not fixed) 03782 ; 03783 ; DGRAM 03784 ; 095B 018A 03785 CLRF PCLATH 03786 095C 0855 03787 MOVF udp_data,0 Message[306]: Crossing page boundary -- ensure page bits are set. 095D 274B 03788 call assert_wr ; sum(not fixed) 03789 095E 1783 03790 bsf STATUS,IRP 095F 309E 03791 MOVLW transmitted & 0ffh 0960 0084 03792 movwf FSR 0961 0800 03793 movf INDF,0 Message[306]: Crossing page boundary -- ensure page bits are set. 0962 274B 03794 call assert_wr 0963 3090 03795 MOVLW on_ether & 0ffh 0964 0084 03796 MOVWF FSR 0965 300E 03797 movlw SERIAL_PACKET_SIZE-2 Message[306]: Crossing page boundary -- ensure page bits are set. 0966 2777 03798 call transmit_nbytes 0967 1383 03799 bcf STATUS,IRP 03800 0968 3008 03801 MOVLW HIGH (calc_udp_sum) 0969 008A 03802 MOVWF PCLATH 03803 096A 20C8 03804 call calc_udp_sum 096B 3008 03805 MOVLW HIGH (transmit_60bytes) 096C 008A 03806 MOVWF PCLATH 03807 096D 20ED 03808 call transmit_60bytes 03809 096E 3001 03810 MOVLW HIGH (main9) 096F 008A 03811 MOVWF PCLATH 03812 Message[306]: Crossing page boundary -- ensure page bits are set. MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 76 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0970 297E 03813 goto main9 03814 03815 ;----------------------------------------------------------------------------------- 0971 03816 ser_transmit 0971 1683 03817 bsf STATUS,RP0 0972 1703 03818 bsf STATUS,RP1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0973 019E 03819 CLRF transmitted & 0ffh 0974 0183 03820 clrf STATUS 0975 03821 ser_transmit0 0975 3003 03822 MOVLW get_dgram >> 8 0976 008A 03823 movwf PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 0977 2311 03824 CALL get_dgram 0978 3009 03825 MOVLW $ >> 8 0979 008A 03826 MOVWF PCLATH 097A 1803 03827 BTFSC STATUS,C 097B 298A 03828 GOTO ser_transmit9 03829 097C 1683 03830 BSF STATUS,RP0 097D 1703 03831 BSF STATUS,RP1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 097E 1C1D 03832 BTFSS on_flow,0 097F 2983 03833 GOTO ser_transmit1 03834 0980 0183 03835 CLRF STATUS 0981 1806 03836 BTFSC PORTB,0 0982 298A 03837 GOTO ser_transmit9 0983 03838 ser_transmit1 0983 0183 03839 CLRF STATUS 0984 2705 03840 CALL async_transmit 0985 1683 03841 bsf STATUS,RP0 0986 1703 03842 BSF STATUS,RP1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0987 0A9E 03843 INCF transmitted,1 0988 0183 03844 clrf STATUS 0989 2975 03845 GOTO ser_transmit0 098A 03846 ser_transmit9 098A 3009 03847 MOVLW HIGH (ser_get_status) 098B 008A 03848 MOVWF PCLATH 03849 098C 2938 03850 goto ser_get_status 03851 03852 ;----------------------------------------------------------------------------------- 098D 03853 ser_register_tag 098D 3006 03854 MOVLW 4+2 ; 6バイトを読み込む 098E 00A6 03855 MOVWF gcn1 098F 3056 03856 MOVLW udp_data+1 0990 0084 03857 MOVWF FSR 0991 3002 03858 MOVLW HIGH (copy_toram) 0992 008A 03859 MOVWF PCLATH 03860 Message[306]: Crossing page boundary -- ensure page bits are set. MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 77 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0993 2242 03861 call copy_toram 03862 0994 3010 03863 MOVLW HIGH (ser_register) 0995 008A 03864 MOVWF PCLATH 03865 Message[306]: Crossing page boundary -- ensure page bits are set. 0996 2800 03866 goto ser_register 03867 03868 ;----------------------------------------------------------------------------------- 0997 03869 ser_unregister_tag 0997 3010 03870 MOVLW HIGH (ser_unregister) 0998 008A 03871 MOVWF PCLATH 03872 Message[306]: Crossing page boundary -- ensure page bits are set. 0999 2868 03873 goto ser_unregister 03874 03875 03876 ;----------------------------------------------------------------------------------- 03877 ; 受信したパケットのソケットが有るかをチェック 03878 ;----------------------------------------------------------------------------------- 099A 03879 search_socket 099A 1783 03880 bsf STATUS,IRP 099B 3004 03881 MOVLW SOCKETS ;mov com_cn,#SOCKETS 099C 00F7 03882 MOVWF com_cn 099D 30A0 03883 MOVLW skb & 0ffh ;mov com_fsr,#0a0h 099E 00F8 03884 MOVWF com_fsr 099F 03885 search_socket0 099F 0878 03886 MOVF com_fsr,0 09A0 0084 03887 MOVWF FSR 09A1 1F80 03888 BTFSS INDF,7 09A2 29CA 03889 goto search_socket9 03890 09A3 3002 03891 MOVLW .2 09A4 0784 03892 ADDWF FSR,1 09A5 0845 03893 MOVF ip_src,0 09A6 0200 03894 SUBWF INDF,0 09A7 1D03 03895 BTFSS 3,2 09A8 29CA 03896 GOTO search_socket9 09A9 0A84 03897 INCF FSR,1 09AA 0846 03898 MOVF ip_src1,0 09AB 0200 03899 SUBWF INDF,0 09AC 1D03 03900 BTFSS 3,2 09AD 29CA 03901 GOTO search_socket9 09AE 0A84 03902 INCF FSR,1 09AF 0847 03903 MOVF ip_src2,0 09B0 0200 03904 SUBWF INDF,0 09B1 1D03 03905 BTFSS 3,2 09B2 29CA 03906 GOTO search_socket9 09B3 0A84 03907 INCF FSR,1 09B4 0848 03908 MOVF ip_src3,0 09B5 0200 03909 SUBWF INDF,0 09B6 1D03 03910 BTFSS 3,2 09B7 29CA 03911 GOTO search_socket9 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 78 LOC OBJECT CODE LINE SOURCE TEXT VALUE 09B8 0A84 03912 INCF FSR,1 03913 03914 09B9 084D 03915 MOVF tcp_src_port,0 09BA 0200 03916 SUBWF INDF,0 09BB 1D03 03917 BTFSS 3,2 09BC 29CA 03918 GOTO search_socket9 09BD 0A84 03919 INCF FSR,1 03920 09BE 084E 03921 MOVF tcp_src_port1,0 09BF 0200 03922 SUBWF INDF,0 09C0 1D03 03923 BTFSS 3,2 09C1 29CA 03924 GOTO search_socket9 09C2 0A84 03925 INCF FSR,1 03926 09C3 3007 03927 MOVLW .7 09C4 0284 03928 SUBWF FSR,1 09C5 30F0 03929 MOVLW 0F0H 09C6 0480 03930 IORWF INDF,1 09C7 0384 03931 decF FSR,1 09C8 1403 03932 BSF 3,0 09C9 0008 03933 RETURN 09CA 03934 search_socket9 09CA 3010 03935 MOVLW 10H 09CB 07F8 03936 ADDWF com_fsr,1 09CC 0BF7 03937 DECFSZ com_cn,1 09CD 299F 03938 GOTO search_socket0 09CE 1383 03939 bcf STATUS,IRP 09CF 1003 03940 BCF 3,0 09D0 0008 03941 RETURN 03942 03943 03944 ;----------------------------------------------------------------------------------- 03945 ; ソケットの新規作成 03946 ;----------------------------------------------------------------------------------- 09D1 03947 socket_entry 09D1 1783 03948 bsf STATUS,IRP 09D2 30A0 03949 MOVLW skb & 0ffh 09D3 0084 03950 MOVWF FSR 09D4 0804 03951 MOVF FSR,0 09D5 00F8 03952 MOVWF com_fsr 09D6 3004 03953 MOVLW SOCKETS 09D7 00F7 03954 MOVWF com_cn 09D8 03955 entry0 09D8 1B80 03956 BTFSC INDF,7 09D9 2A0D 03957 goto entry9 03958 09DA 3080 03959 MOVLW SYN_RCVD 09DB 0080 03960 MOVWF INDF 09DC 0A84 03961 INCF FSR,1 09DD 30F0 03962 MOVLW 0f0h 09DE 0080 03963 MOVWF INDF 09DF 0A84 03964 INCF FSR,1 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 79 LOC OBJECT CODE LINE SOURCE TEXT VALUE 09E0 0845 03965 MOVF ip_src,0 09E1 0080 03966 MOVWF INDF 09E2 0A84 03967 INCF FSR,1 09E3 0846 03968 MOVF ip_src1,0 09E4 0080 03969 MOVWF INDF 09E5 0A84 03970 INCF FSR,1 09E6 0847 03971 MOVF ip_src2,0 09E7 0080 03972 MOVWF INDF 09E8 0A84 03973 INCF FSR,1 09E9 0848 03974 MOVF ip_src3,0 09EA 0080 03975 MOVWF INDF 09EB 0A84 03976 INCF FSR,1 03977 09EC 084D 03978 MOVF tcp_src_port,0 09ED 0080 03979 MOVWF INDF 09EE 0A84 03980 INCF FSR,1 09EF 084E 03981 MOVF tcp_src_port1,0 09F0 0080 03982 MOVWF INDF 09F1 0A84 03983 INCF FSR,1 03984 09F2 0851 03985 MOVF tcp_seq_no,0 09F3 0080 03986 MOVWF INDF 09F4 0A84 03987 INCF FSR,1 09F5 0852 03988 MOVF tcp_seq_no1,0 09F6 0080 03989 MOVWF INDF 09F7 0A84 03990 INCF FSR,1 09F8 0853 03991 MOVF tcp_seq_no2,0 09F9 0080 03992 MOVWF INDF 09FA 0A84 03993 INCF FSR,1 09FB 0854 03994 MOVF tcp_seq_no3,0 09FC 0080 03995 MOVWF INDF 09FD 0A84 03996 INCF FSR,1 03997 09FE 0855 03998 MOVF tcp_ack_no,0 09FF 0080 03999 MOVWF INDF 0A00 0A84 04000 INCF FSR,1 0A01 0856 04001 MOVF tcp_ack_no1,0 0A02 0080 04002 MOVWF INDF 0A03 0A84 04003 INCF FSR,1 0A04 0857 04004 MOVF tcp_ack_no2,0 0A05 0080 04005 MOVWF INDF 0A06 0A84 04006 INCF FSR,1 0A07 0858 04007 MOVF tcp_ack_no3,0 0A08 0080 04008 MOVWF INDF 0A09 0A84 04009 INCF FSR,1 0A0A 1383 04010 bcf STATUS,IRP 0A0B 1003 04011 BCF 3,0 0A0C 0008 04012 RETURN 0A0D 04013 entry9 0A0D 3010 04014 MOVLW 10h 0A0E 0784 04015 ADDWF FSR,1 04016 0A0F 3010 04017 MOVLW 10H MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 80 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0A10 07F8 04018 ADDWF com_fsr,1 0A11 0BF7 04019 DECFSZ com_cn,1 0A12 29D8 04020 GOTO entry0 04021 0A13 1383 04022 socket_entry_99 bcf STATUS,IRP 0A14 1403 04023 BSF 3,0 0A15 0008 04024 RETURN 04025 04026 04027 ;----------------------------------------------------------------------------------- 04028 ; Ethernetパケットのブロードキャスト送信処理 04029 ;----------------------------------------------------------------------------------- 0A16 04030 broad_cast 0A16 018A 04031 CLRF PCLATH 04032 0A17 3000 04033 MOVLW 0 0A18 00AD 04034 MOVWF remote_adr 0A19 3040 04035 MOVLW PAGE_BEGIN 0A1A 00AE 04036 MOVWF remote_adr1 04037 0A1B 3022 04038 MOVLW IP_SIZE + PACKET_SIZE 0A1C 00AF 04039 MOVWF remote_len 0A1D 3000 04040 MOVLW 0 0A1E 00B0 04041 MOVWF remote_len1 04042 Message[306]: Crossing page boundary -- ensure page bits are set. 0A1F 26FB 04043 call remote_write 04044 0A20 3010 04045 MOVLW 10h ; 送信先:ff-ff-ff-ff-ff-ffに送信 0A21 0087 04046 MOVWF PORTC 0A22 30FF 04047 movlw 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 0A23 274B 04048 call assert_wr 0A24 30FF 04049 movlw 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 0A25 274B 04050 call assert_wr 0A26 30FF 04051 movlw 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 0A27 274B 04052 call assert_wr 0A28 30FF 04053 movlw 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 0A29 274B 04054 call assert_wr 0A2A 30FF 04055 movlw 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 0A2B 274B 04056 call assert_wr 0A2C 30FF 04057 movlw 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 0A2D 274B 04058 call assert_wr 04059 0A2E 30A4 04060 MOVLW mymac ; 送信元:自分のMACアドレスを設定 0A2F 0084 04061 MOVWF FSR 0A30 3006 04062 movlw 6 Message[306]: Crossing page boundary -- ensure page bits are set. MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 81 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0A31 2777 04063 call transmit_nbytes 0A32 0008 04064 RETURN 04065 0A33 04066 bootp2 0A33 2216 04067 call broad_cast 0A34 018A 04068 CLRF PCLATH 04069 0A35 3008 04070 movlw COM_PROTO Message[306]: Crossing page boundary -- ensure page bits are set. 0A36 274B 04071 call assert_wr 0A37 3000 04072 movlw IP_PROTO Message[306]: Crossing page boundary -- ensure page bits are set. 0A38 274B 04073 call assert_wr 04074 0A39 30FF 04075 movlw .255 0A3A 00C5 04076 movwf ip_src ; 自分のIPは255.255.255.255として送信 0A3B 00C6 04077 movwf ip_src1 0A3C 00C7 04078 movwf ip_src2 0A3D 00C8 04079 movwf ip_src3 04080 04081 0A3E 3001 04082 MOVLW HIGH (DHCP_SIZE+20) 0A3F 00BB 04083 MOVWF ip_length 04084 0A40 3048 04085 MOVLW (DHCP_SIZE + .20) & 0FFH 0A41 00BC 04086 MOVWF ip_length1 04087 0A42 3011 04088 MOVLW UDP_PROTO 0A43 00B7 04089 MOVWF proto Message[306]: Crossing page boundary -- ensure page bits are set. 0A44 27C5 04090 call ip_common 04091 0A45 3018 04092 MOVLW ip_sum - ip_header + PACKET_SIZE 0A46 00AD 04093 MOVWF remote_adr 0A47 3040 04094 MOVLW PAGE_BEGIN 0A48 00AE 04095 MOVWF remote_adr1 04096 Message[306]: Crossing page boundary -- ensure page bits are set. 0A49 2FB8 04097 goto set_checksum 04098 0A4A 04099 bootp 0A4A 2233 04100 call bootp2 0A4B 018A 04101 CLRF PCLATH 04102 Message[306]: Crossing page boundary -- ensure page bits are set. 0A4C 20E3 04103 call clear_sum ; チェックサムの値をクリア 04104 0A4D 3022 04105 MOVLW PACKET_SIZE+IP_SIZE 0A4E 00AD 04106 MOVWF remote_adr 0A4F 3040 04107 MOVLW PAGE_BEGIN 0A50 00AE 04108 MOVWF remote_adr1 04109 0A51 3034 04110 MOVLW DHCP_SIZE & 0ffh MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 82 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0A52 00AF 04111 MOVWF remote_len 0A53 3001 04112 MOVLW HIGH (DHCP_SIZE) 0A54 00B0 04113 MOVWF remote_len1 04114 04115 ;------- Message[306]: Crossing page boundary -- ensure page bits are set. 0A55 26FB 04116 call remote_write 04117 0A56 3010 04118 MOVLW 10h 0A57 0087 04119 MOVWF PORTC 04120 0A58 3000 04121 movlw 0 ; クライアントBOOTPポート Message[306]: Crossing page boundary -- ensure page bits are set. 0A59 274B 04122 call assert_wr 0A5A 3044 04123 movlw BOOTPC_PORT ; クライアントBOOTPポート Message[306]: Crossing page boundary -- ensure page bits are set. 0A5B 274B 04124 call assert_wr 04125 0A5C 3000 04126 movlw 0 ; サーバBOOTPポート Message[306]: Crossing page boundary -- ensure page bits are set. 0A5D 274B 04127 call assert_wr 0A5E 3043 04128 movlw BOOTPS_PORT ; サーバBOOTPポート Message[306]: Crossing page boundary -- ensure page bits are set. 0A5F 274B 04129 call assert_wr 04130 0A60 3001 04131 movlw HIGH (DHCP_SIZE) ;DHCP_SIZE>>8 Message[306]: Crossing page boundary -- ensure page bits are set. 0A61 274B 04132 call assert_wr 0A62 3034 04133 movlw DHCP_SIZE & 0ffh ; length Message[306]: Crossing page boundary -- ensure page bits are set. 0A63 274B 04134 call assert_wr 04135 Message[306]: Crossing page boundary -- ensure page bits are set. 0A64 273B 04136 call assert_wr2times ; sum 04137 0A65 3001 04138 movlw 1 Message[306]: Crossing page boundary -- ensure page bits are set. 0A66 274B 04139 call assert_wr ; Requare:1,Reply:2 0A67 3001 04140 movlw 1 Message[306]: Crossing page boundary -- ensure page bits are set. 0A68 274B 04141 call assert_wr ; 10Mbps Ethernet:1 0A69 3006 04142 movlw 6 Message[306]: Crossing page boundary -- ensure page bits are set. 0A6A 274B 04143 call assert_wr ; EthernetLength:6 0A6B 0100 04144 DB 01,00 ;clrw Message[306]: Crossing page boundary -- ensure page bits are set. 0A6C 274B 04145 call assert_wr ; Hop Count 04146 04147 0A6D 30A6 04148 MOVLW mymac + 2 0A6E 0084 04149 MOVWF FSR 0A6F 0800 04150 MOVF INDF,0 Message[306]: Crossing page boundary -- ensure page bits are set. MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 83 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0A70 274B 04151 call assert_wr 0A71 0A84 04152 INCF FSR,1 0A72 0800 04153 MOVF INDF,0 Message[306]: Crossing page boundary -- ensure page bits are set. 0A73 274B 04154 call assert_wr 0A74 0A84 04155 INCF FSR,1 0A75 0800 04156 MOVF INDF,0 Message[306]: Crossing page boundary -- ensure page bits are set. 0A76 274B 04157 call assert_wr 0A77 0A84 04158 INCF FSR,1 0A78 0800 04159 MOVF INDF,0 Message[306]: Crossing page boundary -- ensure page bits are set. 0A79 274B 04160 call assert_wr 04161 Message[306]: Crossing page boundary -- ensure page bits are set. 0A7A 273B 04162 call assert_wr2times Message[306]: Crossing page boundary -- ensure page bits are set. 0A7B 273B 04163 call assert_wr2times 04164 04165 0A7C 3010 04166 MOVLW 4*4 0A7D 00A6 04167 MOVWF gcn1 0A7E 04168 bootp_10 0A7E 3007 04169 MOVLW HIGH (assert_wr) 0A7F 008A 04170 MOVWF PCLATH 04171 0A80 0100 04172 DB 01,00 ;clrw Message[306]: Crossing page boundary -- ensure page bits are set. 0A81 274B 04173 call assert_wr 0A82 300A 04174 MOVLW HIGH (bootp_10) 0A83 008A 04175 MOVWF PCLATH 0A84 0BA6 04176 DECFSZ gcn1,1 ;djnz gcn1,bootp_10 0A85 2A7E 04177 GOTO bootp_10 04178 ; 04179 ; クライアントハードウェアアドレス 04180 ; 0A86 30A4 04181 MOVLW mymac 0A87 0084 04182 MOVWF FSR 0A88 3007 04183 MOVLW HIGH (transmit_nbytes) 0A89 008A 04184 MOVWF PCLATH 04185 0A8A 3006 04186 movlw 6 Message[306]: Crossing page boundary -- ensure page bits are set. 0A8B 2777 04187 call transmit_nbytes 0A8C 300A 04188 MOVLW HIGH (bootp_10) 0A8D 008A 04189 MOVWF PCLATH 04190 0A8E 300A 04191 MOVLW .16 - .6 0A8F 00A6 04192 MOVWF gcn1 0A90 04193 bootp_10_0 0A90 3007 04194 MOVLW HIGH (assert_wr) 0A91 008A 04195 MOVWF PCLATH 04196 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 84 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0A92 0100 04197 DB 01,00 ;clrw Message[306]: Crossing page boundary -- ensure page bits are set. 0A93 274B 04198 call assert_wr 0A94 300A 04199 MOVLW HIGH (bootp_10_0) 0A95 008A 04200 MOVWF PCLATH 0A96 0BA6 04201 DECFSZ gcn1,1 0A97 2A90 04202 GOTO bootp_10_0 04203 ; 04204 ; 起動ファイル名 04205 ; 0A98 30C0 04206 MOVLW .128 + .64 0A99 00A6 04207 MOVWF gcn1 0A9A 04208 bootp_20 0A9A 3007 04209 MOVLW HIGH (assert_wr) 0A9B 008A 04210 MOVWF PCLATH 04211 0A9C 0100 04212 DB 01,00 ;clrw Message[306]: Crossing page boundary -- ensure page bits are set. 0A9D 274B 04213 call assert_wr 0A9E 300A 04214 MOVLW HIGH (bootp_20) 0A9F 008A 04215 MOVWF PCLATH 0AA0 0BA6 04216 DECFSZ gcn1,1 0AA1 2A9A 04217 GOTO bootp_20 04218 ; 04219 ; Magic 04220 ; 0AA2 3007 04221 MOVLW HIGH (assert_wr) 0AA3 008A 04222 MOVWF PCLATH 04223 0AA4 3063 04224 movlw 63h ; 99 Message[306]: Crossing page boundary -- ensure page bits are set. 0AA5 274B 04225 call assert_wr 0AA6 3082 04226 movlw 82h ; 130 Message[306]: Crossing page boundary -- ensure page bits are set. 0AA7 274B 04227 call assert_wr 0AA8 3053 04228 movlw 53h ; 83 Message[306]: Crossing page boundary -- ensure page bits are set. 0AA9 274B 04229 call assert_wr 0AAA 3063 04230 movlw 63h ; 99 Message[306]: Crossing page boundary -- ensure page bits are set. 0AAB 274B 04231 call assert_wr 0AAC 0008 04232 RETURN 04233 04234 0AAD 04235 bootp_tx 0AAD 018A 04236 CLRF PCLATH 0AAE 0100 04237 DB 01,00 ;clrw Message[306]: Crossing page boundary -- ensure page bits are set. 0AAF 2727 04238 call calc_sum 0AB0 0100 04239 DB 01,00 ;clrw Message[306]: Crossing page boundary -- ensure page bits are set. 0AB1 2727 04240 call calc_sum 0AB2 0100 04241 DB 01,00 ;clrw MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 85 LOC OBJECT CODE LINE SOURCE TEXT VALUE Message[306]: Crossing page boundary -- ensure page bits are set. 0AB3 2727 04242 call calc_sum 0AB4 0100 04243 DB 01,00 ;clrw Message[306]: Crossing page boundary -- ensure page bits are set. 0AB5 2727 04244 call calc_sum 04245 0AB6 30FF 04246 MOVLW 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 0AB7 2727 04247 call calc_sum 0AB8 30FF 04248 MOVLW 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 0AB9 2727 04249 call calc_sum 0ABA 30FF 04250 MOVLW 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 0ABB 2727 04251 call calc_sum 0ABC 30FF 04252 MOVLW 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 0ABD 2727 04253 call calc_sum 04254 0ABE 0100 04255 DB 01,00 Message[306]: Crossing page boundary -- ensure page bits are set. 0ABF 2727 04256 call calc_sum 0AC0 3011 04257 MOVLW .17 Message[306]: Crossing page boundary -- ensure page bits are set. 0AC1 2727 04258 call calc_sum 04259 0AC2 3001 04260 MOVLW HIGH (DHCP_SIZE) Message[306]: Crossing page boundary -- ensure page bits are set. 0AC3 2727 04261 call calc_sum 0AC4 3034 04262 MOVLW DHCP_SIZE & 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 0AC5 2727 04263 call calc_sum 04264 04265 0AC6 3028 04266 MOVLW PACKET_SIZE+IP_SIZE + 6 0AC7 00AD 04267 MOVWF remote_adr 0AC8 3040 04268 MOVLW PAGE_BEGIN 0AC9 00AE 04269 MOVWF remote_adr1 Message[306]: Crossing page boundary -- ensure page bits are set. 0ACA 27B8 04270 call set_checksum 04271 04272 0ACB 3004 04273 MOVLW 4h 0ACC 0087 04274 MOVWF PORTC 0ACD 3040 04275 movlw PAGE_BEGIN ; transmit page is start page Message[306]: Crossing page boundary -- ensure page bits are set. 0ACE 2760 04276 call assert_wr0 04277 0ACF 3005 04278 MOVLW 5 0AD0 0087 04279 MOVWF PORTC 0AD1 3056 04280 movlw (DHCP_SIZE+IP_SIZE+PACKET_SIZE) & 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 0AD2 2760 04281 call assert_wr0 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 86 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04282 0AD3 3006 04283 MOVLW 6 0AD4 0087 04284 MOVWF PORTC 0AD5 3001 04285 movlw HIGH (DHCP_SIZE+IP_SIZE+PACKET_SIZE) Message[306]: Crossing page boundary -- ensure page bits are set. 0AD6 2760 04286 call assert_wr0 04287 Message[306]: Crossing page boundary -- ensure page bits are set. 0AD7 2789 04288 call transmit 04289 ; setb rb.5 0AD8 0008 04290 RETURN 04291 ;----------------------------------------------------------------------------------- 04292 ; EEPROMデータの書き込み 04293 ; アドレスは自動インクリメントする 04294 ;--------------------------------------------------------------------------------- 04295 ; org 0a00h 04296 0AD9 2AD9 04297 goto $ ;不明 0ADA 04298 write_eeprom16 0ADA 3062 04299 MOVLW 'b' 0ADB 00F9 04300 MOVWF ind 0ADC 087F 04301 MOVF wk2,0 0ADD 06FE 04302 XORWF wk1,1 0ADE 087E 04303 MOVF wk1,0 0ADF 06FF 04304 XORWF wk2,1 0AE0 087F 04305 MOVF wk2,0 0AE1 06FE 04306 XORWF wk1,1 0AE2 22E5 04307 call write_eeprom 0AE3 087F 04308 MOVF wk2,0 0AE4 00FE 04309 MOVWF wk1 0AE5 04310 write_eeprom 0AE5 3077 04311 MOVLW 'w' 0AE6 0279 04312 SUBWF ind,0 0AE7 1903 04313 BTFSC 3,2 0AE8 2ADA 04314 GOTO write_eeprom16 0AE9 1703 04315 write_eeprom0 bsf STATUS,RP1 0AEA 1283 04316 bcf STATUS,RP0 0AEB 087D 04317 MOVF wk,0 ;addr Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0AEC 008D 04318 MOVWF EEADR 0AED 087E 04319 MOVF wk1,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0AEE 008C 04320 MOVWF EEDATA 0AEF 1683 04321 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0AF0 138C 04322 bcf EECON1,7 ;eepgd Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0AF1 150C 04323 bsf EECON1,2 ;wren 04324 0AF2 138B 04325 bcf INTCON,7 ;gie 0AF3 3055 04326 MOVLW 55H Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0AF4 008D 04327 MOVWF EECON2 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 87 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0AF5 30AA 04328 MOVLW 0AAH Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0AF6 008D 04329 MOVWF EECON2 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0AF7 148C 04330 bsf EECON1,1 ;wr 04331 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0AF8 188C 04332 btfsc EECON1,1 ;wr 0AF9 2AF8 04333 goto $-1 04334 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0AFA 110C 04335 bcf EECON1,2 ;wren 0AFB 1283 04336 bcf STATUS,RP0 0AFC 1303 04337 bcf STATUS,RP1 0AFD 0AFD 04338 INCF wk,1 0AFE 178B 04339 bsf INTCON,7 ;gie 0AFF 0008 04340 RETURN 04341 04342 04343 04344 0B00 04345 get_nextbyte 0B00 082F 04346 MOVF remote_len,0 0B01 0430 04347 iorwf remote_len1,0 0B02 1903 04348 btfsc STATUS,Z 0B03 2B13 04349 goto get_nextbyte9 04350 0B04 1009 04351 bcf PORTE,0 0B05 1E87 04352 btfss PORTC,5 ; ~Wait 0B06 2B05 04353 goto $-1 0B07 0808 04354 MOVF PORTD,0 0B08 1409 04355 bsf PORTE,0 04356 0B09 00FC 04357 MOVWF data0 0B0A 300A 04358 MOVLW 0AH 0B0B 027C 04359 SUBWF data0,0 0B0C 1903 04360 BTFSC 3,2 0B0D 2B13 04361 GOTO get_nextbyte9 0B0E 3001 04362 movlw 1 ; LENGTH-- 0B0F 02AF 04363 subwf remote_len,1 0B10 1C03 04364 btfss STATUS,C 0B11 02B0 04365 subwf remote_len1,1 0B12 0008 04366 RETURN 0B13 04367 get_nextbyte9 0B13 01FC 04368 CLRF data0 0B14 0008 04369 RETURN 04370 04371 04372 04373 04374 04375 ;----------------------------------------------------------------------------------- 04376 ; cgi(GETメソッド)のパースHAVE MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 88 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04377 ; 00b=192.168.0.200 04378 ;----------------------------------------------------------------------------------- 0B15 04379 parse_cgi 0B15 2300 04380 call get_nextbyte 0B16 3000 04381 MOVLW 0 0B17 027C 04382 SUBWF data0,0 0B18 1903 04383 BTFSC 3,2 0B19 2B79 04384 GOTO parse9_tag 04385 0B1A 300A 04386 MOVLW 0AH 0B1B 027C 04387 SUBWF data0,0 0B1C 1903 04388 BTFSC 3,2 0B1D 2B79 04389 GOTO parse9_tag 04390 ; Initial value 0B1E 3049 04391 MOVLW 'I' 0B1F 027C 04392 SUBWF data0,0 0B20 1903 04393 BTFSC 3,2 0B21 2B97 04394 GOTO initial_values_tag 04395 ; ピンの変更 0B22 3052 04396 MOVLW 'R' 0B23 027C 04397 SUBWF data0,0 0B24 1903 04398 BTFSC 3,2 0B25 2BA6 04399 GOTO modify_pin 04400 04401 0B26 3030 04402 MOVLW '0' 0B27 02FC 04403 SUBWF data0,1 0B28 087C 04404 MOVF data0,0 0B29 00FD 04405 MOVWF wk 0B2A 0EFD 04406 SWAPF wk,1 04407 0B2B 2300 04408 call get_nextbyte 04409 0B2C 3000 04410 MOVLW 0 0B2D 027C 04411 SUBWF data0,0 0B2E 1903 04412 BTFSC 3,2 0B2F 2B79 04413 GOTO parse9_tag 04414 0B30 3030 04415 MOVLW '0' 0B31 02FC 04416 SUBWF data0,1 0B32 087C 04417 MOVF data0,0 0B33 04FD 04418 IORWF wk,1 04419 0B34 2300 04420 call get_nextbyte 04421 0B35 3000 04422 MOVLW 0 0B36 027C 04423 SUBWF data0,0 0B37 1903 04424 BTFSC 3,2 0B38 2B79 04425 GOTO parse9_tag 0B39 087C 04426 MOVF data0,0 0B3A 00F9 04427 MOVWF ind 04428 ; byte単位 0B3B 3062 04429 MOVLW 'b' MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 89 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0B3C 0279 04430 SUBWF ind,0 0B3D 1903 04431 BTFSC 3,2 0B3E 2B44 04432 GOTO parse4 04433 ; word単位 0B3F 3077 04434 MOVLW 'w' 0B40 0279 04435 SUBWF ind,0 0B41 1903 04436 BTFSC 3,2 0B42 2B44 04437 GOTO parse4 0B43 2B79 04438 goto parse9_tag ; b|w以外なら終了 0B44 04439 parse4 0B44 01FE 04440 CLRF wk1 ; 値の初期値=0 0B45 01FF 04441 CLRF wk2 04442 0B46 2300 04443 call get_nextbyte ; skip '=' 04444 0B47 3000 04445 MOVLW 0 0B48 027C 04446 SUBWF data0,0 0B49 1903 04447 BTFSC 3,2 0B4A 2B79 04448 GOTO parse9_tag 04449 0B4B 3026 04450 MOVLW '&' 0B4C 027C 04451 SUBWF data0,0 0B4D 1903 04452 BTFSC 3,2 0B4E 2B15 04453 GOTO parse_cgi 04454 0B4F 04455 parse_cgi0 0B4F 2300 04456 call get_nextbyte 04457 0B50 3000 04458 MOVLW 0 0B51 027C 04459 SUBWF data0,0 0B52 1903 04460 BTFSC 3,2 0B53 2B79 04461 GOTO parse9_tag 04462 0B54 3020 04463 MOVLW ' ' 0B55 027C 04464 SUBWF data0,0 0B56 1903 04465 BTFSC 3,2 0B57 2B78 04466 GOTO parse91_tag 0B58 3009 04467 MOVLW 9 0B59 027C 04468 SUBWF data0,0 0B5A 1903 04469 BTFSC 3,2 0B5B 2B78 04470 GOTO parse91_tag 04471 0B5C 3026 04472 MOVLW '&' 0B5D 027C 04473 SUBWF data0,0 0B5E 1903 04474 BTFSC 3,2 0B5F 2B72 04475 GOTO parse_cgi2 04476 04477 0B60 302E 04478 MOVLW '.' 0B61 027C 04479 SUBWF data0,0 0B62 1903 04480 BTFSC 3,2 0B63 2B74 04481 GOTO parse_cgi3 04482 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 90 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0B64 302C 04483 MOVLW ',' 0B65 027C 04484 SUBWF data0,0 0B66 1903 04485 BTFSC 3,2 0B67 2B74 04486 GOTO parse_cgi3 04487 0B68 3030 04488 MOVLW '0' 0B69 027C 04489 SUBWF data0,0 0B6A 1C03 04490 BTFSS 3,0 0B6B 2B74 04491 GOTO parse_cgi3 04492 0B6C 30C6 04493 MOVLW '9' ^ 0FFH 0B6D 077C 04494 ADDWF data0,0 0B6E 1803 04495 BTFSC 3,0 0B6F 2B74 04496 GOTO parse_cgi3 04497 0B70 237C 04498 call multiply_added 0B71 2B4F 04499 goto parse_cgi0 0B72 04500 parse_cgi2 0B72 22E5 04501 call write_eeprom 0B73 2B15 04502 goto parse_cgi 0B74 04503 parse_cgi3 0B74 22E5 04504 call write_eeprom 0B75 01FE 04505 CLRF wk1 0B76 01FF 04506 CLRF wk2 0B77 2B4F 04507 goto parse_cgi0 0B78 04508 parse91_tag 0B78 22E5 04509 call write_eeprom 0B79 04510 parse9_tag 0B79 3004 04511 MOVLW HIGH (parse9) 0B7A 008A 04512 MOVWF PCLATH 04513 Message[306]: Crossing page boundary -- ensure page bits are set. 0B7B 2C26 04514 goto parse9 04515 04516 04517 ;----------------------------------------------------------------------------------- 04518 ; 10倍してdataを足し込む 04519 ;----------------------------------------------------------------------------------- 0B7C 04520 multiply_added 0B7C 3030 04521 MOVLW '0' 0B7D 02FC 04522 SUBWF data0,1 ; dataはASCIIキャラクタになっているため 04523 0B7E 1003 04524 BCF 3,0 0B7F 0DFE 04525 RLF wk1,1 0B80 0DFF 04526 RLF wk2,1 ; 04527 0B81 087E 04528 MOVF wk1,0 ; 0B82 00F5 04529 MOVWF mul10 0B83 087F 04530 MOVF wk2,0 0B84 00F6 04531 MOVWF mul101 0B85 1003 04532 BCF 3,0 0B86 0DFE 04533 RLF wk1,1 0B87 0DFF 04534 RLF wk2,1 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 91 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0B88 1003 04535 BCF 3,0 0B89 0DFE 04536 RLF wk1,1 0B8A 0DFF 04537 RLF wk2,1 0B8B 0875 04538 MOVF mul10,0 0B8C 07FE 04539 ADDWF wk1,1 0B8D 1803 04540 btfsc STATUS,C 0B8E 0AFF 04541 INCF wk2,1 0B8F 0876 04542 MOVF mul101,0 0B90 07FF 04543 ADDWF wk2,1 0B91 087C 04544 MOVF data0,0 ;足し込み 0B92 07FE 04545 ADDWF wk1,1 0B93 1803 04546 btfsc STATUS,C ; CARRYのチェック 0B94 0AFF 04547 INCF wk2,1 0B95 0008 04548 RETURN 04549 04550 04551 04552 ;----------------------------------------------------------------------------------- 04553 ; EEPROMデータを初期値に戻す 04554 ;----------------------------------------------------------------------------------- 0B96 2B96 04555 goto $ 0B97 04556 initial_values_tag 0B97 2399 04557 call initial_values 0B98 2B79 04558 goto parse9_tag 04559 0B99 04560 initial_values 0B99 3018 04561 MOVLW default_values_end - default_values_begin 0B9A 00A6 04562 MOVWF gcn1 0B9B 01FD 04563 CLRF wk 0B9C 04564 initial_values0 0B9C 23D7 04565 call get_initial_value 0B9D 00FE 04566 MOVWF wk1 04567 0B9E 300A 04568 MOVLW HIGH (write_eeprom0) 0B9F 008A 04569 MOVWF PCLATH 04570 0BA0 22E9 04571 call write_eeprom0 0BA1 300B 04572 MOVLW HIGH (initial_values0) 0BA2 008A 04573 MOVWF PCLATH 04574 0BA3 0BA6 04575 DECFSZ gcn1,1 0BA4 2B9C 04576 GOTO initial_values0 0BA5 0008 04577 RETURN 04578 04579 ;----------------------------------------------------------------------------------- 04580 ; cgiによるピンの変更 04581 ; RA0=H 04582 ;-----------------------------------------------------------------------------------HAVE 0BA6 04583 modify_pin 0BA6 2300 04584 call get_nextbyte ; どのポートかを取得 0BA7 3041 04585 MOVLW 'A' ; 範囲外はエラー 0BA8 027C 04586 SUBWF data0,0 0BA9 1C03 04587 BTFSS 3,0 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 92 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0BAA 2B79 04588 GOTO parse9_tag 0BAB 30BD 04589 MOVLW 'B' ^ 0FFH 0BAC 077C 04590 ADDWF data0,0 0BAD 1803 04591 BTFSC 3,0 0BAE 2B79 04592 GOTO parse9_tag 0BAF 3041 04593 MOVLW 'A' ; 'A'を減算 0BB0 02FC 04594 SUBWF data0,1 0BB1 3005 04595 MOVLW PORTA 0BB2 07FC 04596 ADDWF data0,1 0BB3 087C 04597 MOVF data0,0 0BB4 0084 04598 MOVWF FSR 04599 0BB5 2300 04600 call get_nextbyte ; ビット位置の取得 0BB6 3030 04601 MOVLW '0' ;範囲外はエラー 0BB7 027C 04602 SUBWF data0,0 0BB8 1C03 04603 BTFSS 3,0 0BB9 2B79 04604 GOTO parse9_tag 0BBA 30C6 04605 MOVLW '9' ^ 0FFH ; 0BBB 077C 04606 ADDWF data0,0 0BBC 1803 04607 BTFSC 3,0 0BBD 2B79 04608 GOTO parse9_tag 0BBE 3030 04609 MOVLW '0' 0BBF 02FC 04610 SUBWF data0,1 0BC0 0AFC 04611 INCF data0,1 0BC1 01FD 04612 CLRF wk 0BC2 1403 04613 BSF 3,0 0BC3 04614 modify_pin0 0BC3 0DFD 04615 RLF wk,1 0BC4 0BFC 04616 DECFSZ data0,1 0BC5 2BC3 04617 GOTO modify_pin0 0BC6 2300 04618 call get_nextbyte 0BC7 303D 04619 MOVLW '=' 0BC8 027C 04620 SUBWF data0,0 ;; '='がないとエラー 0BC9 1D03 04621 BTFSS 3,2 0BCA 2B79 04622 GOTO parse9_tag 0BCB 2300 04623 call get_nextbyte 0BCC 3048 04624 MOVLW 'H' 0BCD 027C 04625 SUBWF data0,0 ; High/Lowどちらを出力するか? 0BCE 1903 04626 BTFSC 3,2 0BCF 2BD4 04627 GOTO modify_pin_h 0BD0 09FD 04628 COMF wk,1 0BD1 087D 04629 MOVF wk,0 0BD2 0580 04630 ANDWF INDF,1 ; I/Oポートに'L'を出力する 0BD3 2B79 04631 goto parse9_tag 04632 0BD4 04633 modify_pin_h 0BD4 087D 04634 MOVF wk,0 0BD5 0480 04635 IORWF INDF,1 ;; I/Oポートに'H'を出力する 0BD6 2B79 04636 goto parse9_tag 04637 04638 0BD7 04639 get_initial_value 0BD7 301F 04640 MOVLW 1FH ; 初期値の値を取得 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 93 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0BD8 008A 04641 MOVWF PCLATH 0BD9 087D 04642 MOVF wk,0 0BDA 0082 04643 MOVWF PCL 04644 04645 04646 04647 04648 ;=================================================================================== 04649 ; スタートアップルーチン 04650 ;=================================================================================== 04651 ; org 0c00h 04652 0BDB 04653 start 04654 0BDB 0185 04655 CLRF PORTA ; 各ポートの初期化 0BDC 0186 04656 CLRF PORTB 0BDD 0187 04657 clrF PORTC ; RC = RTL8019AS の SA0-SA5 0BDE 0188 04658 clrF PORTD ; RD = 00h 0BDF 3007 04659 MOVLW B'111' ; 各コントロールポート=H 0BE0 0089 04660 MOVWF PORTE 0BE1 1683 04661 bsf STATUS,RP0 0BE2 3086 04662 MOVLW B'10000110' 0BE3 0062 04663 DB 00,62 ; 割り込みの設定 0BE4 3082 04664 MOVLW B'10000010' Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0BE5 009F 04665 MOVWF ADCON1 ; RE0-2 are Digital Pin 0BE6 303F 04666 MOVLW B'00111111' Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0BE7 0085 04667 MOVWF TRISA ; RA0-4はAD入力ピンとする 0BE8 3000 04668 MOVLW B'000' ; RE0-2は出力ピンとする Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0BE9 0089 04669 MOVWF TRISE 0BEA 1283 04670 bcf STATUS,RP0 04671 0BEB 01A5 04672 CLRF use 04673 ; LCDポート/シリアルポート有効フラグをクリア 04674 0BEC 246D 04675 call get_ip_address ; EEPROMのIPアドレスをファイルレジスタに読み出す。 0BED 2487 04676 call get_port_no ; EEPROMのポート番号をファイルレジスタに読み出す。 04677 ; 04678 ; LCDポートのチェック 04679 ; ポートが0以外ならrb7−2は出力 04680 ; 0BEE 1683 04681 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0BEF 0835 04682 MOVF lcd_port,0 ; LCDポート番号が0かのチェック Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0BF0 0436 04683 iorwf lcd_port1,0 0BF1 300F 04684 movlw B'00001111' ; LCDポートが0の時,RB7-4出力,RB3-0入力 0BF2 1D03 04685 btfss STATUS,Z 0BF3 3003 04686 movlw B'00000011' ; LCDポートが0以外の時,RB7-2出力,RB1-0入力 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0BF4 0086 04687 MOVWF TRISB MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 94 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0BF5 1283 04688 bcf STATUS,RP0 04689 0BF6 1D03 04690 btfss STATUS,Z 0BF7 1425 04691 bsf use,0 04692 ; LCDポートが0以外ならuse.LCDをイネーブルにする。 04693 04694 04695 ; SERIALポートのチェック 04696 0BF8 249B 04697 call clear_seq_no ; TCPシーケンス番号を0に 04698 0BF9 24A2 04699 call init_lcd ; 液晶モジュールの初期化 04700 0BFA 3003 04701 MOVLW B'11' 0BFB 0089 04702 MOVWF PORTE ; 各コントロールポート=H 04703 0BFC 3005 04704 MOVLW 5 ; 5ms待つ 0BFD 00A0 04705 MOVWF wait_cn 0BFE 24F0 04706 call wait_ms 04707 0BFF 1683 04708 bsf STATUS,RP0 0C00 30E0 04709 MOVLW B'11100000' Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C01 0087 04710 MOVWF TRISC 0C02 30FF 04711 MOVLW B'11111111' Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C03 0088 04712 MOVWF TRISD 0C04 3000 04713 MOVLW B'000' Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C05 0089 04714 MOVWF TRISE 0C06 1283 04715 bcf STATUS,RP0 04716 0C07 245A 04717 call init_socket ; ソケットバッファ初期化 0C08 018A 04718 CLRF PCLATH 04719 Message[306]: Crossing page boundary -- ensure page bits are set. 0C09 266B 04720 call initialize ; RTL8019ASの初期化 04721 0C0A 300C 04722 MOVLW $>>8 0C0B 008A 04723 MOVWF PCLATH 04724 0C0C 30A0 04725 MOVLW this_ip 0C0D 0084 04726 MOVWF FSR 04727 ;mov FSR,#this_ip ; 自分のIPが 0.0.0.0 かどうかのチェック 0C0E 0800 04728 MOVF INDF,0 0C0F 0A84 04729 INCF FSR,1 0C10 0400 04730 iorwf INDF,0 0C11 0A84 04731 INCF FSR,1 0C12 0400 04732 iorwf INDF,0 0C13 0A84 04733 INCF FSR,1 0C14 0400 04734 iorwf INDF,0 0C15 1903 04735 btfsc STATUS,Z 0C16 2C1B 04736 goto start1 ; IPが0.0.0.0の時はstart1へ MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 95 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04737 0C17 300F 04738 MOVLW HIGH (print_ip) ; IPアドレスを液晶に表示 0C18 008A 04739 MOVWF PCLATH 0C19 27D4 04740 call print_ip 0C1A 2C2C 04741 goto start2 0C1B 04742 start1 0C1B 300C 04743 MOVLW HIGH (write_lcd4) 0C1C 008A 04744 MOVWF PCLATH 04745 0C1D 1506 04746 bsf PORTB,2 0C1E 3044 04747 MOVLW 'D' ; 'DHCP'を液晶に表示 0C1F 00A2 04748 MOVWF d4 0C20 24DC 04749 call write_lcd4 0C21 3048 04750 MOVLW 'H' 0C22 00A2 04751 MOVWF d4 0C23 24DC 04752 call write_lcd4 0C24 3043 04753 MOVLW 'C' 0C25 00A2 04754 MOVWF d4 0C26 24DC 04755 call write_lcd4 0C27 3050 04756 MOVLW 'P' 0C28 00A2 04757 MOVWF d4 0C29 24DC 04758 call write_lcd4 04759 0C2A 300C 04760 MOVLW $ >> 8 0C2B 008A 04761 MOVWF PCLATH 0C2C 04762 start2 0C2C 1683 04763 bsf STATUS,RP0 0C2D 30F0 04764 MOVLW B'11110000' ; rc.4を入力ピンに変更 0C2E 0087 04765 MOVWF PORTC 0C2F 1283 04766 bcf STATUS,RP0 04767 0C30 300C 04768 MOVLW HIGH (wait_us) 0C31 008A 04769 MOVWF PCLATH 04770 0C32 3064 04771 MOVLW .100 ; 100us待つ 0C33 00A0 04772 MOVWF wait_cn 0C34 24FE 04773 call wait_us 04774 0C35 300C 04775 MOVLW HIGH (start2) 0C36 008A 04776 MOVWF PCLATH 0C37 1E07 04777 btfss PORTC,4 ; rc.4ピンをチェック 0C38 2DA4 04778 goto bootstrap ; 'L'ならブートストラップモードへ移行 04779 0C39 1683 04780 bsf STATUS,RP0 0C3A 30A0 04781 MOVLW B'10100000' ; rcを元に戻す Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C3B 0087 04782 MOVWF TRISC 0C3C 3026 04783 MOVLW B'00100110' Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C3D 0098 04784 MOVWF TXSTA ; ASYNCモジュール送信側を初期化 0C3E 3081 04785 MOVLW BAUD_RATE Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C3F 0099 04786 MOVWF SPBRG ; ボーレート設定 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 96 LOC OBJECT CODE LINE SOURCE TEXT VALUE Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C40 168C 04787 BSF PIE1,5 ; rcie; 受信割り込み許可 0C41 1283 04788 bcf STATUS,RP0 0C42 3080 04789 MOVLW B'10000000' 0C43 0098 04790 MOVWF RCSTA ; ASYNCモジュール受信側を初期化 0C44 1283 04791 bcf STATUS,RP0 0C45 130B 04792 bcf INTCON,6 ;peie ; 周辺装置割り込み許可 04793 0C46 018A 04794 CLRF PCLATH 04795 04796 ;mov dest[0],#assert_wr2x & 0ffh 04797 ;mov dest[1],#assert_wr2x >>8 0C47 303F 04798 MOVLW assert_wr2x & 0ffh 0C48 00FA 04799 MOVWF dest 0C49 3007 04800 MOVLW HIGH (assert_wr2x) 0C4A 00FB 04801 MOVWF dest1 0C4B 1683 04802 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C4C 01B2 04803 CLRF dhcp_done 0C4D 1283 04804 bcf STATUS,RP0 0C4E 0186 04805 CLRF PORTB ; 初期状態 RB=00h 0C4F 018E 04806 CLRF TMR1L 0C50 018F 04807 CLRF TMR1H 0C51 3005 04808 MOVLW B'000101' 0C52 0090 04809 MOVWF T1CON 0C53 1683 04810 BSF STATUS,RP0 04811 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C54 140C 04812 BSF PIE1,TMR1IE 0C55 1283 04813 BCF STATUS,RP0 0C56 170B 04814 BSF INTCON,PEIE 0C57 178B 04815 BSF INTCON,GIE 0C58 178B 04816 BSF INTCON,GIE ;gie; グローバル割り込み許可 Message[306]: Crossing page boundary -- ensure page bits are set. 0C59 2903 04817 goto main 04818 ;----------------------------------------------------------------------------------- 04819 ; ソケットバッファのクリア 04820 ;----------------------------------------------------------------------------------- 0C5A 04821 init_socket 0C5A 1783 04822 bsf STATUS,IRP 0C5B 30A0 04823 MOVLW skb & 0FFh 0C5C 0084 04824 MOVWF FSR 04825 0C5D 3040 04826 MOVLW SOCKETS * .16 0C5E 00F7 04827 MOVWF com_cn 0C5F 0180 04828 init_socket0 clrF INDF 0C60 0A84 04829 INCF FSR,1 0C61 0BF7 04830 DECFSZ com_cn,1 0C62 2C5F 04831 GOTO init_socket0 04832 ; 04833 ; シリアル登録アドレスのクリア 04834 ; 04835 ; bsf STATUS,IRP ; already irp set MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 97 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0C63 3090 04836 MOVLW on_ether & 0ffh 0C64 0084 04837 MOVWF FSR 04838 0C65 300E 04839 MOVLW SERIAL_PACKET_SIZE - 2 0C66 00F7 04840 MOVWF com_cn 0C67 0180 04841 init_on_ether0 clrF INDF 0C68 0A84 04842 INCF FSR,1 0C69 0BF7 04843 DECFSZ com_cn,1 0C6A 2C67 04844 GOTO init_on_ether0 04845 0C6B 1383 04846 bcf STATUS,IRP 0C6C 0008 04847 RETURN 04848 04849 ;----------------------------------------------------------------------------------- 04850 ; PIC16F877のEEPROMならIPアドレスを取得 04851 ;----------------------------------------------------------------------------------- 0C6D 04852 get_ip_address 0C6D 1683 04853 bsf STATUS,RP0 04854 0C6E 30A0 04855 MOVLW this_ip 0C6F 0084 04856 MOVWF FSR 0C70 3004 04857 MOVLW 4 0C71 00FF 04858 MOVWF common 0C72 1703 04859 bsf STATUS,RP1 0C73 1283 04860 bcf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C74 018D 04861 CLRF EEADR 0C75 04862 get_ip_address0 0C75 1703 04863 bsf STATUS,RP1 0C76 1683 04864 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C77 138C 04865 bcf EECON1,7 ;eepgd Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C78 140C 04866 BSF EECON1,0 0C79 1283 04867 bcf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C7A 080C 04868 MOVF EEDATA,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C7B 0A8D 04869 INCF EEADR,1 0C7C 1303 04870 bcf STATUS,RP1 04871 0C7D 0080 04872 movwf INDF 0C7E 0A84 04873 INCF FSR,1 0C7F 0BFF 04874 DECFSZ common,1 0C80 2C75 04875 GOTO get_ip_address0 04876 0C81 30AE 04877 MOVLW ident 0C82 0084 04878 MOVWF FSR 0C83 0180 04879 clrF INDF 0C84 0A84 04880 INCF FSR,1 0C85 0180 04881 clrF INDF 0C86 0008 04882 RETURN 04883 ;----------------------------------------------------------------------------------- MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 98 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04884 ; PIC16F877のEEPROMからポート番号を取得 04885 ;----------------------------------------------------------------------------------- 0C87 04886 get_port_no 0C87 30B3 04887 MOVLW http_port & 0ffh 0C88 0084 04888 MOVWF FSR 0C89 3008 04889 MOVLW .4 * .2 0C8A 00FF 04890 MOVWF common 0C8B 1703 04891 bsf STATUS,RP1 0C8C 1283 04892 bcf STATUS,RP0 0C8D 3010 04893 MOVLW .16 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C8E 008D 04894 MOVWF EEADR 0C8F 04895 get_port_no0 0C8F 1683 04896 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C90 138C 04897 bcf EECON1,7 ;eepgd Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C91 140C 04898 bsf EECON1,0 0C92 1283 04899 bcf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C93 080C 04900 MOVF EEDATA,0 0C94 0080 04901 MOVWF INDF 0C95 0A84 04902 INCF FSR,1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C96 0A8D 04903 INCF EEADR,1 04904 0C97 0BFF 04905 DECFSZ common,1 0C98 2C8F 04906 GOTO get_port_no0 0C99 1303 04907 bcf STATUS,RP1 0C9A 0008 04908 RETURN 04909 ;----------------------------------------------------------------------------------- 04910 ; TCPシーケンス番号の初期化 04911 ;----------------------------------------------------------------------------------- 0C9B 04912 clear_seq_no 0C9B 1683 04913 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C9C 01AA 04914 CLRF seq_no Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C9D 01AB 04915 CLRF seq_no1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C9E 01AC 04916 CLRF seq_no2 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0C9F 01AD 04917 CLRF seq_no3 0CA0 1283 04918 bcf STATUS,RP0 0CA1 0008 04919 RETURN 04920 04921 04922 ;----------------------------------------------------------------------------------- 04923 ; 液晶初期化 04924 ;-----------------------------------------------------------------------------------HAVE 0CA2 04925 init_lcd 0CA2 300F 04926 MOVLW .15 ; wait 15ms 0CA3 00A0 04927 MOVWF wait_cn MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 99 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0CA4 24F0 04928 call wait_ms 04929 0CA5 1106 04930 BCF PORTB,2 ; RS='L' 0CA6 3030 04931 MOVLW B'00110000' 0CA7 00A3 04932 MOVWF d8 0CA8 24C8 04933 call write_lcd8 0CA9 3005 04934 MOVLW .5 ; wait 4.1ms 0CAA 00A0 04935 MOVWF wait_cn 0CAB 24F0 04936 call wait_ms 04937 0CAC 3030 04938 MOVLW B'00110000' 0CAD 00A3 04939 MOVWF d8 0CAE 24C8 04940 call write_lcd8 0CAF 3064 04941 MOVLW .100 ; wait 100us 0CB0 00A0 04942 MOVWF wait_cn 0CB1 24FE 04943 call wait_us 04944 0CB2 3030 04945 MOVLW B'00110000' 0CB3 00A3 04946 MOVWF d8 0CB4 24C8 04947 call write_lcd8 ; 0 0 0011 (3) 04948 0CB5 3020 04949 MOVLW B'00100000' 0CB6 00A3 04950 MOVWF d8 0CB7 24C8 04951 call write_lcd8 ; 0 0 0010 (4bit) 04952 ; 0CB8 3028 04953 MOVLW B'00101000' ; duty,font set9 0CB9 00A2 04954 MOVWF d4 0CBA 24DC 04955 call write_lcd4 04956 0CBB 3001 04957 MOVLW B'00000001' ; クリアコマンド 0CBC 00A2 04958 MOVWF d4 0CBD 24DC 04959 call write_lcd4 0CBE 3002 04960 MOVLW .2 ; クリアが終わるまで待つ 0CBF 00A0 04961 MOVWF wait_cn 0CC0 24F0 04962 call wait_ms 04963 0CC1 3006 04964 MOVLW B'00000110' ; entry mode set 0CC2 00A2 04965 MOVWF d4 0CC3 24DC 04966 call write_lcd4 04967 0CC4 300E 04968 MOVLW B'00001110' ; display on,cursor on 0CC5 00A2 04969 MOVWF d4 0CC6 24DC 04970 call write_lcd4 0CC7 0008 04971 RETURN 04972 04973 04974 04975 ;----------------------------------------------------------------------------------- 04976 ; 8ビットモード用液晶書き込みルーチン 04977 ;----------------------------------------------------------------------------------- 0CC8 04978 write_lcd8 0CC8 1C25 04979 BTFSS use,0 ;btfss use.0; LCDがオンでないとRBポートには書き込まない 0CC9 2CD8 04980 goto lcd_skip MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 100 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04981 0CCA 0806 04982 MOVF PORTB,0 0CCB 00A4 04983 MOVWF tmp 0CCC 300F 04984 MOVLW 0FH 0CCD 05A4 04985 ANDWF tmp,1 0CCE 30F0 04986 MOVLW 0F0H 0CCF 05A3 04987 ANDWF d8,1 0CD0 0823 04988 MOVF d8,0 0CD1 04A4 04989 IORWF tmp,1 0CD2 0824 04990 MOVF tmp,0 ; RBポートへ出力 0CD3 0086 04991 MOVWF PORTB 04992 0CD4 2CD5 04993 goto $+1 0CD5 1586 04994 BSF PORTB,3 ; Eピンを'H' 0CD6 2CD7 04995 GOTO $+1 ;jmp $+1 0CD7 1186 04996 BCF PORTB,3 0CD8 04997 lcd_skip 0CD8 3028 04998 MOVLW .40 0CD9 00A0 04999 MOVWF wait_cn 0CDA 24FE 05000 call wait_us 0CDB 0008 05001 RETURN 05002 05003 05004 05005 05006 ;----------------------------------------------------------------------------------- 05007 ; 4ビットモード用液晶書き込みルーチン 05008 ;----------------------------------------------------------------------------------- 0CDC 05009 write_lcd4 0CDC 0822 05010 MOVF d4,0 0CDD 00A3 05011 MOVWF d8 0CDE 24C8 05012 call write_lcd8 05013 0CDF 0822 05014 MOVF d4,0 0CE0 00A3 05015 MOVWF d8 0CE1 0EA3 05016 SWAPF d8,1 0CE2 24C8 05017 call write_lcd8 0CE3 0008 05018 RETURN 05019 05020 ;----------------------------------------------------------------------------------- 05021 ; 16進数液晶出力ルーチン 05022 ;----------------------------------------------------------------------------------- 0CE4 05023 print_hex 0CE4 1506 05024 bsf PORTB,2 0CE5 0E24 05025 swapf cd,0 0CE6 018A 05026 CLRF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 0CE7 206E 05027 call getascii 0CE8 00A2 05028 MOVWF d4 0CE9 24DC 05029 call write_lcd4 05030 ; 0CEA 0824 05031 MOVF cd,0 0CEB 018A 05032 CLRF PCLATH MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 101 LOC OBJECT CODE LINE SOURCE TEXT VALUE Message[306]: Crossing page boundary -- ensure page bits are set. 0CEC 206E 05033 call getascii 0CED 00A2 05034 MOVWF d4 0CEE 24DC 05035 call write_lcd4 0CEF 0008 05036 RETURN 05037 05038 05039 ;----------------------------------------------------------------------------------- 05040 ; msオーダーのウェイト 05041 ;----------------------------------------------------------------------------------- 0CF0 05042 wait_ms 0CF0 05043 wait_ms0 0CF0 3000 05044 MOVLW 0 0CF1 00A1 05045 MOVWF wait_cn2 0CF2 2CF3 05046 wait_ms1 GOTO $+1 0CF3 2CF4 05047 GOTO $+1 0CF4 2CF5 05048 GOTO $+1 0CF5 2CF6 05049 GOTO $+1 0CF6 2CF7 05050 GOTO $+1 0CF7 2CF8 05051 GOTO $+1 0CF8 2CF9 05052 GOTO $+1 0CF9 0BA1 05053 DECFSZ wait_cn2,1 0CFA 2CF2 05054 GOTO wait_ms1 0CFB 0BA0 05055 DECFSZ wait_cn,1 0CFC 2CF0 05056 GOTO wait_ms0 0CFD 0008 05057 RETURN 05058 05059 ;----------------------------------------------------------------------------------- 05060 ; μsオーダーのウェイト 05061 ;----------------------------------------------------------------------------------- 0CFE 05062 wait_us 0CFE 05063 wait_us0 0CFE 2CFF 05064 GOTO $+1 05065 0CFF 0BA0 05066 DECFSZ wait_cn,1 0D00 2CFE 05067 GOTO wait_us0 0D01 0008 05068 RETURN 05069 05070 05071 ;----------------------------------------------------------------------------------- 05072 ; バイナリ32ビットの10進変換ルーチン 05073 ;----------------------------------------------------------------------------------- 0D02 05074 put_decimal32 0D02 0804 05075 MOVF FSR,0 0D03 00F4 05076 MOVWF save_fsr 0D04 3020 05077 MOVLW decimal_top & 0ffh ; 格納場所初期値 0D05 0084 05078 MOVWF FSR 0D06 1783 05079 bsf STATUS,IRP ; IRP=1 0D07 2589 05080 call divide32 ; 最下位変換 0D08 2589 05081 call divide32 0D09 2589 05082 call divide32 0D0A 2589 05083 call divide32 0D0B 2589 05084 call divide32 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 102 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05085 0D0C 2589 05086 call divide32 0D0D 2589 05087 call divide32 0D0E 2589 05088 call divide32 0D0F 2589 05089 call divide32 0D10 2589 05090 call divide32 ; 最上位変換 05091 0D11 3009 05092 MOVLW .10 - .1 ;mov val_cn,#10-1 0D12 00B7 05093 MOVWF val_cn 0D13 2D2C 05094 goto put_decimal_ent 05095 05096 05097 ;----------------------------------------------------------------------------------- 05098 ; バイナリ16ビットの10進変換ルーチン 05099 ;----------------------------------------------------------------------------------- 0D14 05100 put_decimal16 0D14 0804 05101 MOVF FSR,0 0D15 00F4 05102 MOVWF save_fsr 0D16 3020 05103 MOVLW decimal_top & 0ffh ; 格納場所初期値 0D17 0084 05104 MOVWF FSR 0D18 1783 05105 bsf STATUS,IRP ; IRP=1 0D19 2574 05106 call divide16 ; 最下位変換 0D1A 2574 05107 call divide16 0D1B 2574 05108 call divide16 0D1C 2574 05109 call divide16 0D1D 2574 05110 call divide16 ; 最上位変換 05111 0D1E 3004 05112 MOVLW .5 - .1 0D1F 00B7 05113 MOVWF val_cn 0D20 2D2C 05114 goto put_decimal_ent 05115 05116 ;----------------------------------------------------------------------------------- 05117 ; バイナリ8ビットの10進変換ルーチン 05118 ;----------------------------------------------------------------------------------- 0D21 05119 put_decimal 0D21 00B2 05120 movwf val 05121 0D22 0804 05122 MOVF FSR,0 0D23 00F4 05123 MOVWF save_fsr 0D24 3020 05124 MOVLW decimal_top & 0ffh ; 格納場所初期値 0D25 0084 05125 MOVWF FSR 0D26 1783 05126 bsf STATUS,IRP ; IRP=1 0D27 2560 05127 call divide ; 最下位変換 0D28 2560 05128 call divide 0D29 2560 05129 call divide ; 最上位変換 05130 0D2A 3002 05131 MOVLW .3 - .1 0D2B 00B7 05132 MOVWF val_cn 0D2C 01B6 05133 put_decimal_ent CLRF val_m 0D2D 05134 put_decimal0 0D2D 3000 05135 MOVLW 0 0D2E 0236 05136 SUBWF val_m,0 0D2F 1D03 05137 BTFSS 3,2 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 103 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0D30 2D35 05138 GOTO put_decimal1 0D31 3030 05139 MOVLW '0' 0D32 0200 05140 SUBWF INDF,0 0D33 1903 05141 BTFSC 3,2 0D34 2D3B 05142 GOTO put_decimal2 0D35 0800 05143 put_decimal1 MOVF INDF,0 0D36 00FC 05144 MOVWF data0 0D37 2759 05145 call puttty 05146 ; 出力(出力先はdestで変わる) 0D38 300D 05147 MOVLW HIGH (put_decimal1) 0D39 008A 05148 MOVWF PCLATH 05149 0D3A 0AB6 05150 INCF val_m,1 0D3B 0A84 05151 put_decimal2 INCF FSR,1 0D3C 0BB7 05152 DECFSZ val_cn,1 0D3D 2D2D 05153 GOTO put_decimal0 0D3E 0800 05154 MOVF INDF,0 ; 最下位桁 0D3F 00FC 05155 MOVWF data0 0D40 2759 05156 call puttty ; 出力(出力先はdestで変わる) 0D41 300D 05157 MOVLW HIGH (put_decimal2) 0D42 008A 05158 MOVWF PCLATH 05159 0D43 1383 05160 bcf STATUS,IRP 0D44 0874 05161 MOVF save_fsr,0 0D45 0084 05162 MOVWF FSR 0D46 0008 05163 RETURN 05164 05165 05166 ;----------------------------------------------------------------------------------- 05167 ; バイナリ8ビットを10進で液晶に表示する 05168 ;----------------------------------------------------------------------------------- 0D47 05169 print_dec 0D47 00B2 05170 movwf val 05171 0D48 0804 05172 MOVF FSR,0 ; fsrをセーブ 0D49 00F4 05173 MOVWF save_fsr 0D4A 3020 05174 MOVLW decimal_top & 0ffh ; 格納場所初期値 0D4B 0084 05175 MOVWF FSR 0D4C 1783 05176 bsf STATUS,IRP ; IRP=1 0D4D 2560 05177 call divide ; 最下位変換 0D4E 2560 05178 call divide 0D4F 2560 05179 call divide ; 最上位変換 05180 0D50 1506 05181 bsf PORTB,2 0D51 0800 05182 MOVF INDF,0 0D52 00A2 05183 MOVWF d4 0D53 24DC 05184 call write_lcd4 0D54 0A84 05185 INCF FSR,1 0D55 0800 05186 MOVF INDF,0 0D56 00A2 05187 MOVWF d4 0D57 24DC 05188 call write_lcd4 0D58 0A84 05189 INCF FSR,1 0D59 0800 05190 MOVF INDF,0 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 104 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0D5A 00A2 05191 MOVWF d4 0D5B 24DC 05192 call write_lcd4 05193 0D5C 1383 05194 bcf STATUS,IRP 0D5D 0874 05195 MOVF save_fsr,0 0D5E 0084 05196 MOVWF FSR 0D5F 0008 05197 RETURN 05198 05199 05200 05201 05202 05203 05204 ;----------------------------------------------------------------------------------- 05205 ; 8ビット除算サブルーチン 05206 ;----------------------------------------------------------------------------------- 0D60 05207 divide 0D60 3008 05208 MOVLW 8 0D61 00A6 05209 MOVWF gcn1 0D62 01B6 05210 CLRF val_m 0D63 05211 divide0 0D63 1003 05212 BCF 3,0 0D64 0DB2 05213 RLF val,1 0D65 0DB6 05214 RLF val_m,1 05215 0D66 30F6 05216 movlw B'11110110' 0D67 0736 05217 addwf val_m,0 0D68 1803 05218 btfsc STATUS,C 0D69 00B6 05219 MOVWF val_m 0D6A 1803 05220 btfsc STATUS,C 0D6B 0AB2 05221 INCF val,1 05222 0D6C 0BA6 05223 DECFSZ gcn1,1 0D6D 2D63 05224 GOTO divide0 0D6E 0384 05225 decF FSR,1 0D6F 0836 05226 MOVF val_m,0 ; 余り 0D70 0080 05227 MOVWF INDF 0D71 3030 05228 MOVLW '0' 0D72 0780 05229 ADDWF INDF,1 0D73 0008 05230 RETURN 05231 05232 05233 ;----------------------------------------------------------------------------------- 05234 ; 16ビット除算サブルーチン 05235 ;----------------------------------------------------------------------------------- 0D74 05236 divide16 0D74 3010 05237 MOVLW .16 0D75 00A6 05238 MOVWF gcn1 0D76 01B6 05239 clrF val_m 0D77 05240 divide16_0 0D77 1003 05241 BCF 3,0 0D78 0DB2 05242 RLF val,1 0D79 0DB3 05243 RLF val1,1 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 105 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0D7A 0DB6 05244 RLF val_m,1 05245 0D7B 30F6 05246 movlw B'11110110' 0D7C 0736 05247 addwf val_m,0 0D7D 1803 05248 btfsc STATUS,C 0D7E 00B6 05249 MOVWF val_m 0D7F 1803 05250 btfsc STATUS,C 0D80 0AB2 05251 INCF val,1 05252 0D81 0BA6 05253 DECFSZ gcn1,1 0D82 2D77 05254 GOTO divide16_0 0D83 0384 05255 decF FSR,1 0D84 0836 05256 MOVF val_m,0 ; 余り 0D85 0080 05257 MOVWF INDF 0D86 3030 05258 MOVLW '0' 0D87 0780 05259 ADDWF INDF,1 0D88 0008 05260 RETURN 05261 05262 05263 ;----------------------------------------------------------------------------------- 05264 ; 32ビット除算サブルーチン 05265 ;----------------------------------------------------------------------------------- 0D89 05266 divide32 0D89 3020 05267 MOVLW .32 0D8A 00A6 05268 MOVWF gcn1 0D8B 01B6 05269 CLRF val_m 0D8C 05270 divide32_0 0D8C 1003 05271 BCF 3,0 0D8D 0DB2 05272 RLF val,1 0D8E 0DB3 05273 RLF val1,1 0D8F 0DB4 05274 RLF val2,1 0D90 0DB5 05275 RLF val3,1 0D91 0DB6 05276 RLF val_m,1 05277 0D92 30F6 05278 movlw B'11110110' 0D93 0736 05279 addwf val_m,0 0D94 1803 05280 btfsc STATUS,C 0D95 00B6 05281 MOVWF val_m 0D96 1803 05282 btfsc STATUS,C 0D97 0AB2 05283 INCF val,1 05284 0D98 0BA6 05285 DECFSZ gcn1,1 0D99 2D8C 05286 GOTO divide32_0 0D9A 0384 05287 decF FSR,1 0D9B 0836 05288 MOVF val_m,0 ; 余り 0D9C 0080 05289 MOVWF INDF 0D9D 3030 05290 MOVLW '0' 0D9E 0780 05291 ADDWF INDF,1 0D9F 0008 05292 RETURN 05293 05294 ;=================================================================================== 05295 ; ブートストラップメインルーチン 05296 ;=================================================================================== MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 106 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0DA0 05297 get_lcdmes 0DA0 3013 05298 MOVLW lcd_mes >> 8 0DA1 008A 05299 MOVWF PCLATH 0DA2 087D 05300 MOVF wk,0 0DA3 0082 05301 MOVWF PCL 05302 ; 05303 ; BOOTSTRAP MODE Entry 05304 ; 0DA4 05305 bootstrap 0DA4 300D 05306 MOVLW $ >> 8 0DA5 008A 05307 MOVWF PCLATH 0DA6 30C0 05308 MOVLW B'11000000' 0DA7 00A2 05309 MOVWF d4 0DA8 1106 05310 bcf PORTB,2 ;RS 0DA9 24DC 05311 call write_lcd4 ; カーソルを2行目に移動 05312 0DAA 3010 05313 MOVLW .16 0DAB 00A6 05314 MOVWF gcn1 0DAC 3000 05315 MOVLW lcd_mes & 0ffh 0DAD 00FD 05316 MOVWF wk 0DAE 05317 bootstrap10 0DAE 25A0 05318 call get_lcdmes ; 'Bootstrap Mode'を液晶に表示 0DAF 00A2 05319 MOVWF d4 05320 0DB0 300D 05321 MOVLW $ >> 8 0DB1 008A 05322 MOVWF PCLATH 05323 0DB2 1506 05324 bsf PORTB,2 ;RS 0DB3 24DC 05325 call write_lcd4 0DB4 300D 05326 MOVLW $ >> 8 0DB5 008A 05327 MOVWF PCLATH 05328 05329 0DB6 0AFD 05330 INCF wk,1 0DB7 0BA6 05331 DECFSZ gcn1,1 0DB8 2DAE 05332 GOTO bootstrap10 05333 ; 05334 ; ASYNCの初期化 05335 ; 0DB9 1683 05336 bsf STATUS,RP0 0DBA 30A0 05337 MOVLW B'10100000' Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0DBB 0087 05338 MOVWF TRISC 0DBC 3026 05339 MOVLW B'00100110' ; 送信側設定 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0DBD 0098 05340 MOVWF TXSTA 0DBE 3081 05341 MOVLW BAUD_RATE ; ボーレート設定 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0DBF 0099 05342 MOVWF SPBRG Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0DC0 168C 05343 BSF PIE1,RCIE ; 受信割り込み有効 0DC1 1283 05344 bcf STATUS,RP0 0DC2 3090 05345 MOVLW B'10010000' MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 107 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0DC3 0098 05346 MOVWF RCSTA 0DC4 3005 05347 MOVLW async_transmit & 0ffh ; 送信ルーチンの設定 0DC5 00FA 05348 MOVWF dest 0DC6 300F 05349 MOVLW async_transmit >> 8 0DC7 00FB 05350 MOVWF dest1 0DC8 170B 05351 bsf INTCON,PEIE ; 周辺装置割り込み許可 0DC9 178B 05352 bsf INTCON,GIE ; (グローバルな)割り込み許可 05353 0DCA 3010 05354 MOVLW bs_1 & 00ffh ; 起動メッセージ 0DCB 00F7 05355 MOVWF com_cn 0DCC 26DF 05356 call put_bs_text 05357 0DCD 3033 05358 MOVLW bs_config & 00ffh 0DCE 00F7 05359 MOVWF com_cn ; 現在の設定表示 0DCF 26DF 05360 call put_bs_text 05361 0DD0 302F 05362 MOVLW bs_prompt & 00ffh ; プロンプト表示 0DD1 00F7 05363 MOVWF com_cn 0DD2 26DF 05364 call put_bs_text 05365 ;----------------------------------------------------------------------------------- 05366 ; Bootstrapのメインループ 05367 ;----------------------------------------------------------------------------------- 0DD3 1683 05368 bsf STATUS,RP0 0DD4 05369 bootstrap0 05370 ; 受信待機(受信するとfifo_cn!=0になる) 0DD4 3000 05371 MOVLW 0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0DD5 023D 05372 SUBWF fifo_cn,0 0DD6 1903 05373 BTFSC 3,2 0DD7 2DD4 05374 GOTO bootstrap0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0DD8 083B 05375 MOVF fifo_poi,0 0DD9 0084 05376 MOVWF FSR ; 受信ポインタを取得 0DDA 0800 05377 MOVF INDF,0 0DDB 00FC 05378 MOVWF data0 ; 受信した文字を取得 05379 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0DDC 0ABB 05380 incF fifo_poi,1 ; 受信バッファをインクリメント 05381 0DDD 30DC 05382 MOVLW fifo_bottom Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0DDE 023B 05383 SUBWF fifo_poi,0 0DDF 1C03 05384 BTFSS 3,0 0DE0 2DE3 05385 GOTO ring1_1 0DE1 30BE 05386 MOVLW fifo_top Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0DE2 00BB 05387 MOVWF fifo_poi Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0DE3 03BD 05388 ring1_1 DECF fifo_cn,1 ; 受信バイト数をデクリメント 05389 05390 ; バックスペース文字の場合... 0DE4 3008 05391 MOVLW CH_BACKSPACE 0DE5 027C 05392 SUBWF data0,0 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 108 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0DE6 1903 05393 BTFSC 3,2 0DE7 2DF1 05394 GOTO boots_bs 0DE8 1283 05395 bcf STATUS,RP0 0DE9 2705 05396 call async_transmit ; エコーバックの為、送信!! 0DEA 1683 05397 bsf STATUS,RP0 05398 05399 ; CRの場合... 0DEB 300D 05400 MOVLW .13 0DEC 027C 05401 SUBWF data0,0 0DED 1903 05402 BTFSC 3,2 0DEE 2E17 05403 GOTO boots_cr Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0DEF 0ADD 05404 incF fifo_line_cn,1 0DF0 2DD4 05405 goto bootstrap0 ; メインループへ戻る 05406 05407 05408 ;----------------------------------------------------------------------------------- 05409 ; バックスペース受信処理 05410 ;----------------------------------------------------------------------------------- 0DF1 05411 boots_bs 05412 ; 削除する文字がない場合はなにもしない 0DF1 3000 05413 MOVLW 0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0DF2 025D 05414 SUBWF fifo_line_cn,0 0DF3 1903 05415 BTFSC 3,2 0DF4 2DD4 05416 GOTO bootstrap0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0DF5 083B 05417 MOVF fifo_poi,0 0DF6 0084 05418 MOVWF FSR 0DF7 0384 05419 DECF FSR,1 05420 0DF8 30BE 05421 MOVLW fifo_top 0DF9 0204 05422 SUBWF FSR,0 0DFA 1803 05423 BTFSC 3,0 0DFB 2DFE 05424 GOTO boots_bs1 0DFC 30DB 05425 MOVLW fifo_bottom - 1 0DFD 0084 05426 MOVWF FSR 0DFE 0180 05427 boots_bs1 clrF INDF ; いまタイプされたBS文字をクリア 05428 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0DFF 085C 05429 MOVF fifo_line,0 0E00 0084 05430 MOVWF FSR Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E01 085D 05431 MOVF fifo_line_cn,0 0E02 0784 05432 ADDWF FSR,1 0E03 0384 05433 DECF FSR,1 05434 05435 0E04 30DC 05436 MOVLW fifo_bottom 0E05 0204 05437 SUBWF FSR,0 0E06 1C03 05438 BTFSS 3,0 0E07 2E0A 05439 GOTO boots_bs2 0E08 30BE 05440 MOVLW fifo_top MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 109 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0E09 0284 05441 SUBWF FSR,1 0E0A 0180 05442 boots_bs2 clrF INDF ; 直前のタイプ文字をクリア 0E0B 1383 05443 bcf STATUS,IRP 05444 0E0C 1283 05445 bcf STATUS,RP0 0E0D 2705 05446 call async_transmit ; エコーバックの為、BS文字をエコー 0E0E 3020 05447 MOVLW ' ' 0E0F 00FC 05448 MOVWF data0 0E10 2705 05449 call async_transmit ; スペースの出力してから 0E11 3008 05450 MOVLW CH_BACKSPACE 0E12 00FC 05451 MOVWF data0 0E13 2705 05452 call async_transmit ; もう一度BSをエコー 0E14 1683 05453 bsf STATUS,RP0 05454 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E15 03DD 05455 decF fifo_line_cn,1 0E16 2DD4 05456 goto bootstrap0 05457 05458 05459 ;----------------------------------------------------------------------------------- 05460 ; CR受信処理 05461 ;----------------------------------------------------------------------------------- 0E17 05462 boots_cr 0E17 300A 05463 MOVLW .10 0E18 00FC 05464 MOVWF data0 0E19 1283 05465 bcf STATUS,RP0 0E1A 2705 05466 call async_transmit ; 改行をエコー 0E1B 1683 05467 bsf STATUS,RP0 05468 ; 何も入力されていない? 0E1C 3000 05469 MOVLW 0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E1D 025D 05470 SUBWF fifo_line_cn,0 0E1E 1D03 05471 BTFSS 3,2 0E1F 2E36 05472 goto bs_job ; 仕事を分担 0E20 05473 bootstrap9 0E20 1283 05474 bcf STATUS,RP0 ;rp0 0E21 302F 05475 MOVLW bs_prompt & 00ffh ;mov com_cn,#bs_prompt & 00ffh 0E22 00F7 05476 MOVWF com_cn ; プロンプト表示 0E23 26DF 05477 call put_bs_text 05478 0E24 1683 05479 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E25 083B 05480 MOVF fifo_poi,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E26 00DC 05481 MOVWF fifo_line Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E27 01DD 05482 clrF fifo_line_cn 0E28 2DD4 05483 goto bootstrap0 ; メインループへ 05484 05485 ; 05486 ; 無効なコマンドが入力されたとき 05487 ; 0E29 05488 bootstrap99 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 110 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0E29 1283 05489 bcf STATUS,RP0 0E2A 3092 05490 MOVLW bs_invalid & 00ffh 0E2B 00F7 05491 MOVWF com_cn 0E2C 26DF 05492 call put_bs_text 0E2D 2E20 05493 goto bootstrap9 05494 05495 05496 0E2E 05497 get_bs_str 0E2E 301F 05498 MOVLW 1FH 0E2F 008A 05499 MOVWF PCLATH Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E30 085E 05500 MOVF bs_ptr,0 Message[306]: Crossing page boundary -- ensure page bits are set. 0E31 2F43 05501 goto get_bs_job 0E32 05502 get_bs_str2 0E32 301F 05503 MOVLW 1FH 0E33 008A 05504 MOVWF PCLATH Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E34 085F 05505 MOVF bs_ptr2,0 0E35 0082 05506 MOVWF PCL 05507 05508 05509 ;----------------------------------------------------------------------------------- 05510 ; コマンド解析処理 05511 ;----------------------------------------------------------------------------------- 0E36 05512 bs_job Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E36 085C 05513 movf fifo_line,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E37 00E0 05514 MOVWF save_line Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E38 085D 05515 MOVF fifo_line_cn,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E39 00E1 05516 MOVWF save_cn Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E3A 01DE 05517 clrF bs_ptr 0E3B 05518 bs_job10 0E3B 262E 05519 call get_bs_str Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E3C 00DF 05520 MOVWF bs_ptr2 0E3D 300E 05521 MOVLW $ >> 8 0E3E 008A 05522 MOVWF PCLATH 05523 05524 05525 ; 該当なし 0E3F 3000 05526 MOVLW 0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E40 025F 05527 SUBWF bs_ptr2,0 0E41 1903 05528 BTFSC 3,2 0E42 2E29 05529 GOTO bootstrap99 0E43 05530 bs_job0 0E43 2632 05531 call get_bs_str2 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 111 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0E44 00FD 05532 MOVWF wk 0E45 300E 05533 MOVLW $ >> 8 0E46 008A 05534 MOVWF PCLATH 05535 05536 ; 最後までOK 0E47 3000 05537 MOVLW 0 0E48 027D 05538 SUBWF wk,0 0E49 1903 05539 BTFSC 3,2 0E4A 2E5E 05540 GOTO bs_job1 0E4B 26C8 05541 call getterm ; バッファから1文字取得 0E4C 1683 05542 bsf STATUS,RP0 05543 0E4D 300D 05544 MOVLW .13 0E4E 027C 05545 SUBWF data0,0 0E4F 1903 05546 BTFSC 3,2 0E50 2E57 05547 GOTO bs_job2 05548 ; 文字違い? 0E51 087C 05549 MOVF data0,0 0E52 027D 05550 SUBWF wk,0 0E53 1D03 05551 BTFSS 3,2 0E54 2E57 05552 GOTO bs_job2 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E55 0ADF 05553 incF bs_ptr2,1 ; 1文字進める 0E56 2E43 05554 goto bs_job0 05555 0E57 05556 bs_job2 0E57 3002 05557 MOVLW 2 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E58 07DE 05558 ADDWF bs_ptr,1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E59 0860 05559 MOVF save_line,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E5A 00DC 05560 MOVWF fifo_line Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E5B 0861 05561 MOVF save_cn,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E5C 00DD 05562 MOVWF fifo_line_cn 0E5D 2E3B 05563 goto bs_job10 0E5E 05564 bs_job1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0E5E 0ADE 05565 incF bs_ptr,1 0E5F 262E 05566 call get_bs_str 0E60 00FD 05567 MOVWF wk 05568 0E61 1283 05569 bcf STATUS,RP0 0E62 300E 05570 MOVLW 0EH 0E63 008A 05571 MOVWF PCLATH 0E64 087D 05572 MOVF wk,0 0E65 0082 05573 MOVWF PCL 05574 05575 05576 ; org 0e00h 05577 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 112 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05578 05579 ;----------------------------------------------------------------------------------- 05580 ; 'initialize' 実行ルーチン 0E66 05581 bsj_init 0E66 2399 05582 call initial_values 0E67 3033 05583 bsj_config MOVLW bs_config & 00ffh 0E68 00F7 05584 MOVWF com_cn ; 現在の設定表示 05585 0E69 26DF 05586 call put_bs_text 0E6A 2E20 05587 goto bootstrap9 05588 ;----------------------------------------------------------------------------------- 05589 ; 'help' 実行ルーチン 0E6B 05590 bsj_help 0E6B 309C 05591 MOVLW bs_help & 00ffh 0E6C 00F7 05592 MOVWF com_cn ; ヘルプ 0E6D 26DF 05593 call put_bs_text 0E6E 2E20 05594 goto bootstrap9 05595 ;----------------------------------------------------------------------------------- 05596 ; スペース文字の読み飛ばし 0E6F 05597 skip_space 0E6F 26C8 05598 call getterm 05599 0E70 3020 05600 MOVLW ' ' 0E71 027C 05601 SUBWF data0,0 0E72 1903 05602 BTFSC 3,2 0E73 2E6F 05603 GOTO skip_space 05604 0E74 3009 05605 MOVLW 9 0E75 027C 05606 SUBWF data0,0 0E76 1903 05607 BTFSC 3,2 0E77 2E6F 05608 GOTO skip_space 0E78 0008 05609 retURN 05610 ;----------------------------------------------------------------------------------- 05611 ; 'lcd=xxxxx' 実行ルーチン 0E79 05612 bsj_lcd 0E79 3012 05613 MOVLW .16 + .2 0E7A 00FD 05614 MOVWF wk 0E7B 2E84 05615 goto bs_set_word 05616 ;----------------------------------------------------------------------------------- 05617 ; 'para=xxxxx' 実行ルーチン 0E7C 05618 bsj_para 0E7C 3014 05619 MOVLW .16 + .2 + .2 0E7D 00FD 05620 MOVWF wk 05621 ; mov wk[0],#16+2+2 0E7E 2E84 05622 goto bs_set_word 05623 ;----------------------------------------------------------------------------------- 05624 ; 'serial=xxxxx' 実行ルーチン 0E7F 05625 bsj_serial 05626 ; mov wk[0],#16+2+2+2 0E7F 3016 05627 MOVLW .16 + .2 +.2 + .2 0E80 00FD 05628 MOVWF wk 0E81 2E84 05629 goto bs_set_word 05630 ;----------------------------------------------------------------------------------- MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 113 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05631 ; 'http=xxxxx' 実行ルーチン 0E82 05632 bsj_http 05633 ; mov wk[0],#16 0E82 3010 05634 MOVLW .16 0E83 00FD 05635 MOVWF wk 05636 0E84 3077 05637 bs_set_word MOVLW 'w' 0E85 00F9 05638 MOVWF ind 0E86 3001 05639 MOVLW 1 0E87 00F8 05640 MOVWF byte_cn 0E88 2E95 05641 goto bs_set_common 05642 ;----------------------------------------------------------------------------------- 05643 ; 'net=xxxxx' 実行ルーチン 0E89 05644 bsj_net 05645 ;mov wk[0],#4 0E89 3004 05646 MOVLW 4 0E8A 00FD 05647 MOVWF wk 0E8B 2E91 05648 goto bs_set_byte 05649 ;----------------------------------------------------------------------------------- 05650 ; 'gate=xxxxx' 実行ルーチン 0E8C 05651 bsj_gate 05652 0E8C 3008 05653 MOVLW 8 0E8D 00FD 05654 MOVWF wk 0E8E 2E91 05655 goto bs_set_byte 05656 ;----------------------------------------------------------------------------------- 05657 ; 'ip=xxx.xxx.xxx.xxx' 実行ルーチン 0E8F 05658 bsj_ip 05659 ; EEPROM ADR=0 0E8F 3000 05660 MOVLW 0 0E90 00FD 05661 MOVWF wk 05662 0E91 05663 bs_set_byte 0E91 3062 05664 MOVLW 'b' 0E92 00F9 05665 MOVWF ind 05666 0E93 3004 05667 MOVLW 4 0E94 00F8 05668 MOVWF byte_cn 05669 0E95 05670 bs_set_common 0E95 266F 05671 call skip_space 05672 0E96 300D 05673 MOVLW .13 0E97 027C 05674 SUBWF data0,0 0E98 1903 05675 BTFSC 3,2 0E99 2EDB 05676 GOTO put_bs_err 05677 0E9A 303D 05678 MOVLW '=' 0E9B 027C 05679 SUBWF data0,0 0E9C 1D03 05680 BTFSS 3,2 0E9D 2EDB 05681 GOTO put_bs_err 05682 0E9E 266F 05683 call skip_space MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 114 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05684 0E9F 300D 05685 MOVLW .13 0EA0 027C 05686 SUBWF data0,0 0EA1 1903 05687 BTFSC 3,2 0EA2 2EDB 05688 GOTO put_bs_err 0EA3 01FE 05689 CLRF wk1 ; 値の初期値=0 0EA4 01FF 05690 CLRF wk2 ; 値の初期値=0 0EA5 2EA7 05691 goto bs_getnumber 0EA6 05692 bs_getnumber0 0EA6 26C8 05693 call getterm 0EA7 05694 bs_getnumber 05695 ; CRなら終了 0EA7 300D 05696 MOVLW .13 0EA8 027C 05697 SUBWF data0,0 0EA9 1903 05698 BTFSC 3,2 0EAA 2EC6 05699 GOTO bs_write9 0EAB 302E 05700 MOVLW '.' 0EAC 027C 05701 SUBWF data0,0 0EAD 1903 05702 BTFSC 3,2 0EAE 2EBD 05703 GOTO bs_write 0EAF 302C 05704 MOVLW ',' 0EB0 027C 05705 SUBWF data0,0 0EB1 1903 05706 BTFSC 3,2 0EB2 2EBD 05707 GOTO bs_write 0EB3 3030 05708 MOVLW '0' 0EB4 027C 05709 SUBWF data0,0 0EB5 1C03 05710 BTFSS 3,0 0EB6 2EBD 05711 GOTO bs_write 0EB7 30C6 05712 MOVLW '9' ^ 0FFH 0EB8 077C 05713 ADDWF data0,0 0EB9 1803 05714 BTFSC 3,0 0EBA 2EBD 05715 GOTO bs_write 05716 0EBB 237C 05717 call multiply_added 0EBC 2EA6 05718 goto bs_getnumber0 0EBD 05719 bs_write 0EBD 22E5 05720 call write_eeprom 0EBE 03F8 05721 decF byte_cn,1 05722 ; 規定バイト数を書き込んだ? 0EBF 3000 05723 MOVLW 0 0EC0 0278 05724 SUBWF byte_cn,0 0EC1 1903 05725 BTFSC 3,2 0EC2 2E20 05726 GOTO bootstrap9 0EC3 01FE 05727 CLRF wk1 ;clr wk[1]; 値の初期値=0 0EC4 01FF 05728 CLRF wk2 ;clr wk[2] ; 値の初期値=0 05729 0EC5 2EA6 05730 goto bs_getnumber0 0EC6 05731 bs_write9 0EC6 22E5 05732 call write_eeprom 0EC7 2E20 05733 goto bootstrap9 05734 05735 ;----------------------------------------------------------------------------------- 05736 ; ラインバッファから1文字読み込み(終端文字はCR) MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 115 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05737 ;----------------------------------------------------------------------------------- 0EC8 05738 getterm 0EC8 1683 05739 bsf STATUS,RP0 ;rp0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0EC9 085C 05740 getterm0 MOVF fifo_line,0 ;mov fsr,fifo_line 0ECA 0084 05741 MOVWF FSR 0ECB 0800 05742 MOVF INDF,0 ;mov data,indirect 0ECC 00FC 05743 MOVWF data0 ; コマンドの解析 05744 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0ECD 0ADC 05745 incF fifo_line,1 0ECE 30DC 05746 MOVLW fifo_bottom Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0ECF 025C 05747 SUBWF fifo_line,0 0ED0 1C03 05748 BTFSS 3,0 0ED1 2ED4 05749 GOTO getterm1 0ED2 30BE 05750 MOVLW fifo_top Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0ED3 00DC 05751 MOVWF fifo_line Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0ED4 03DD 05752 getterm1 decF fifo_line_cn,1 ; 受信バイト数をデクリメント 05753 05754 ; NULL文字はスキップする 0ED5 3000 05755 MOVLW 0 0ED6 027C 05756 SUBWF data0,0 0ED7 1903 05757 BTFSC 3,2 0ED8 2EC9 05758 GOTO getterm0 0ED9 1283 05759 bcf STATUS,RP0 ;rp0 0EDA 0008 05760 retURN 05761 0EDB 05762 put_bs_err 0EDB 308A 05763 MOVLW bs_err & 00ffh 0EDC 00F7 05764 MOVWF com_cn ; Syntax error表示 0EDD 26DF 05765 call put_bs_text 0EDE 2E20 05766 goto bootstrap9 05767 05768 05769 05770 05771 ;----------------------------------------------------------------------------------- 05772 ; ブートストラップルーチン用テキスト出力ルーチン 05773 ;----------------------------------------------------------------------------------- 0EDF 05774 put_bs_text 0EDF 1703 05775 bsf STATUS,RP1 0EE0 1283 05776 bcf STATUS,RP0 0EE1 3013 05777 MOVLW 13H ; BANK 10h fan Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0EE2 008F 05778 MOVWF EEADRH 0EE3 0877 05779 MOVF com_cn,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0EE4 008D 05780 MOVWF EEADR 0EE5 1683 05781 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 116 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0EE6 178C 05782 bsf EECON1,7 ;eepgd Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0EE7 140C 05783 BSF EECON1,0 0EE8 0000 05784 nop 0EE9 0000 05785 nop 0EEA 1283 05786 bcf STATUS,RP0 05787 ;mov getmes_wk[0],eedath 05788 ;mov getmes_wk[1],eedata Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0EEB 080E 05789 MOVF EEDATH,0 0EEC 00F5 05790 MOVWF getmes_wk Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0EED 080C 05791 MOVF EEDATA,0 0EEE 00F6 05792 MOVWF getmes_wk1 0EEF 1303 05793 bcf STATUS,RP1 05794 0EF0 0D76 05795 RLF getmes_wk1,0 0EF1 0DF5 05796 RLF getmes_wk,1 0EF2 0875 05797 MOVF getmes_wk,0 0EF3 397F 05798 andlw 7fh 0EF4 1903 05799 btfsc STATUS,Z 0EF5 2F04 05800 goto put_bs_text9 0EF6 00FC 05801 MOVWF data0 0EF7 3024 05802 MOVLW '$' 0EF8 027C 05803 SUBWF data0,0 0EF9 1903 05804 BTFSC 3,2 0EFA 2F0A 05805 GOTO ctrl_code 0EFB 2705 05806 call async_transmit 05807 0EFC 0876 05808 MOVF getmes_wk1,0 0EFD 397F 05809 andlw 7fh 0EFE 1903 05810 btfsc STATUS,Z 0EFF 2F04 05811 goto put_bs_text9 0F00 00FC 05812 MOVWF data0 0F01 2705 05813 call async_transmit 05814 0F02 0AF7 05815 INCF com_cn,1 0F03 2EDF 05816 goto put_bs_text 0F04 0008 05817 put_bs_text9 RETURN 05818 05819 05820 05821 ;----------------------------------------------------------------------------------- 05822 ; 232C出力ルーチン 05823 ;----------------------------------------------------------------------------------- 0F05 05824 async_transmit 0F05 1E0C 05825 BTFSS PIR1,4 ;btfss pir1.4 0F06 2F05 05826 goto async_transmit 0F07 087C 05827 MOVF data0,0 0F08 0099 05828 MOVWF TXREG 0F09 0008 05829 RETURN 05830 05831 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 117 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05832 ;----------------------------------------------------------------------------------- 05833 ; コントロールコード出力(その1) 05834 ;----------------------------------------------------------------------------------- 05835 ; org 0f00h 0F0A 05836 ctrl_code 0F0A 300F 05837 MOVLW HIGH (ctrl_code1) 0F0B 008A 05838 MOVWF PCLATH 0F0C 0876 05839 MOVF getmes_wk1,0 0F0D 397F 05840 andlw 7fh 0F0E 3ED0 05841 addlw -'0' 0F0F 2712 05842 call ctrl_code1 0F10 0AF7 05843 INCF com_cn,1 0F11 2EDF 05844 goto put_bs_text 05845 05846 ; nop 10 0F12 05847 ctrl_code1 0F12 0782 05848 ADDWF 2,1 0F13 2FA0 05849 goto put_mac_address ; 0:MACアドレス 0F14 2F47 05850 goto put_ip_address ; 1:IPアドレス 0F15 2F4A 05851 goto put_netmask ; 2:ネットマスク 0F16 2F4E 05852 goto put_gateway_address ; 3:ゲートウェイ 0F17 2F2D 05853 goto put_http_port ; 4:httpポート 0F18 2F31 05854 goto put_lcd_port ; 5:lcdポート 0F19 2F35 05855 goto put_io_port ; 6:parallelポート 0F1A 2F39 05856 goto put_232_port ; 7:232cポート 0F1B 2F52 05857 goto put_version ; 8:バージョン表示 05858 0F1C 2F1F 05859 goto put_send_packet ; 9:送信パケット数 0F1D 2F3D 05860 goto put_this_ip ; A:自IPの表示 0F1E 2F43 05861 goto put_ptop ; B:PtoP IPアドレス 05862 0F1F 05863 put_send_packet 0F1F 30AE 05864 MOVLW ident 0F20 0084 05865 MOVWF FSR 0F21 0800 05866 MOVF INDF,0 0F22 00B3 05867 MOVWF val1 0F23 0A84 05868 INCF FSR,1 0F24 0800 05869 MOVF INDF,0 0F25 00B2 05870 MOVWF val 0F26 0A84 05871 INCF FSR,1 0F27 3000 05872 MOVLW 0 0F28 00B4 05873 MOVWF val2 0F29 0A84 05874 INCF FSR,1 0F2A 3000 05875 MOVLW 0 0F2B 00B5 05876 MOVWF val3 0F2C 2D02 05877 goto put_decimal32 ; 送信パケット数を表示 05878 0F2D 05879 put_http_port 0F2D 1703 05880 bsf STATUS,RP1 0F2E 3010 05881 MOVLW .16 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F2F 008D 05882 MOVWF EEADR 0F30 2F3C 05883 goto putcom16 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 118 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0F31 05884 put_lcd_port 0F31 1703 05885 bsf STATUS,RP1 0F32 3012 05886 MOVLW .16 + .2 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F33 008D 05887 MOVWF EEADR 0F34 2F3C 05888 goto putcom16 0F35 05889 put_io_port 0F35 1703 05890 bsf STATUS,RP1 0F36 3014 05891 MOVLW .16 + .4 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F37 008D 05892 MOVWF EEADR 0F38 2F3C 05893 goto putcom16 0F39 05894 put_232_port 0F39 1703 05895 bsf STATUS,RP1 0F3A 3016 05896 MOVLW .16 + .6 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F3B 008D 05897 MOVWF EEADR 0F3C 2F7B 05898 putcom16 goto put_number16 05899 ; RETURN 05900 05901 0F3D 05902 put_this_ip 0F3D 30A0 05903 MOVLW this_ip 0F3E 0084 05904 MOVWF FSR 0F3F 3004 05905 MOVLW 4 0F40 00FF 05906 MOVWF common 0F41 2775 05907 call put_number_fr 0F42 0008 05908 RETURN 0F43 05909 put_ptop 0F43 1703 05910 bsf STATUS,RP1 0F44 3018 05911 MOVLW .24 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F45 008D 05912 MOVWF EEADR 0F46 2F55 05913 goto putcom32 0F47 05914 put_ip_address 0F47 1703 05915 bsf STATUS,RP1 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F48 018D 05916 CLRF EEADR 0F49 2F55 05917 goto putcom32 0F4A 05918 put_netmask 0F4A 1703 05919 bsf STATUS,RP1 0F4B 3004 05920 MOVLW .4 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F4C 008D 05921 MOVWF EEADR 0F4D 2F55 05922 goto putcom32 0F4E 05923 put_gateway_address 0F4E 1703 05924 bsf STATUS,RP1 0F4F 3008 05925 MOVLW .8 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F50 008D 05926 MOVWF EEADR 0F51 2F55 05927 goto putcom32 0F52 05928 put_version 0F52 1703 05929 bsf STATUS,RP1 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 119 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0F53 300C 05930 MOVLW .12 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F54 008D 05931 MOVWF EEADR 0F55 3004 05932 putcom32 MOVLW .4 0F56 00FF 05933 MOVWF common 0F57 2F62 05934 goto put_number 0F58 0008 05935 RETURN 05936 05937 ;----------------------------------------------------------------------------------- 05938 ; 外部ポートに出力 05939 ;----------------------------------------------------------------------------------- 0F59 05940 puttty 0F59 087B 05941 MOVF dest1,0 0F5A 008A 05942 MOVWF PCLATH 0F5B 087A 05943 MOVF dest,0 0F5C 0082 05944 MOVWF PCL 05945 05946 05947 ;------------------------------------------------------------------------------- 05948 05949 ;----------------------------------------------------------------------------------- 05950 ; Webブラウザにソケットステータスを送る(いわゆるnetstat -n) 05951 ;----------------------------------------------------------------------------------- 05952 ;put_socket_stat 05953 ; bsf STATUS,IRP 05954 ; MOVF INDF,0 05955 ; MOVWF cd 05956 ; incF FSR,1 ;fsr 05957 ; call put_hexadecimal 05958 ; MOVF INDF,0 05959 ; MOVWF cd 05960 ; incF FSR,1 ;fsr 05961 ; call put_hexadecimal 05962 ; 05963 ; MOVLW ' ' 05964 ; MOVWF data0 05965 ; call puttty 05966 ; MOVLW $ >> 8 05967 ; MOVWF PCLATH 05968 ; bsf STATUS,IRP ;irp 05969 ; MOVF INDF,0 05970 ; incF FSR,1 ;fsr 05971 ; call put_decimal 05972 ; MOVLW '.' 05973 ; MOVWF data0 05974 ; call puttty 05975 ; MOVLW $ >> 8 05976 ;; MOVWF PCLATH 05977 ; 05978 ; bsf STATUS,IRP ;irp 05979 ; MOVF INDF,0 05980 ; INCF FSR,1 05981 ; call put_decimal MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 120 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05982 ; MOVLW '.' 05983 ; MOVWF data0 05984 ; call puttty 05985 ; MOVLW $ >> 8 05986 ; MOVWF PCLATH 05987 ; 05988 ; bsf STATUS,IRP 05989 ; MOVF INDF,0 05990 ; INCF FSR,1 ;inc fsr 05991 ; call put_decimal 05992 ; MOVLW '.' 05993 ; MOVWF data0 05994 ; call puttty 05995 ; MOVLW $ >>8 05996 ; MOVWF PCLATH 05997 ; bsf STATUS,IRP ;irp 05998 ; MOVF INDF,0 05999 ; incF FSR,1 06000 ; call put_decimal 06001 ; 06002 ;; MOVLW ' ' 06003 ; MOVWF data0 06004 ; call puttty 06005 ; MOVLW $ >>8 06006 ; MOVWF PCLATH 06007 ; 06008 ; bsf STATUS,IRP ;irp 06009 ; MOVF INDF,0 06010 ; MOVWF val1 06011 ; incF FSR,1 ;fsr 06012 ; MOVF INDF,0 06013 ; MOVWF val 06014 ; INCF FSR,1 06015 ; call put_decimal16 06016 ; 06017 ; MOVLW ' ' 06018 ; MOVWF data0 06019 ; call puttty 06020 ; MOVLW $ >> 8 06021 ; MOVWF PCLATH 06022 ; 06023 ; bsf STATUS,IRP ;irp 06024 ; MOVF INDF,0 06025 ; MOVWF val3 06026 ; INCF FSR,1 06027 ; MOVF INDF,0 06028 ; MOVWF val2 06029 ; INCF FSR,1 06030 ; MOVF INDF,0 06031 ; MOVWF val1 06032 ; INCF FSR,1 06033 ; MOVF INDF,0 06034 ; MOVWF val MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 121 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06035 ; INCF FSR,1 06036 ; call put_decimal32 06037 ; 06038 ; MOVLW ' ' 06039 ; MOVWF data0 06040 ; call puttty 06041 ; MOVLW $ >>8 06042 ; MOVWF PCLATH 06043 ; 06044 ; bsf STATUS,IRP ;irp 06045 ; MOVF INDF,0 06046 ; MOVWF val3 06047 ; INCF FSR,1 06048 ; MOVF INDF,0 06049 ; MOVWF val2 06050 ; INCF FSR,1 06051 ; MOVF INDF,0 06052 ; MOVWF val1 06053 ; INCF FSR,1 06054 ; MOVF INDF,0 06055 ; MOVWF val 06056 ; goto put_decimal32 06057 ; 06058 06059 06060 ;----------------------------------------------------------------------------------- 06061 ; '.' 区切りで8ビット10進数値をEEPROMから取得+表示する 06062 ;----------------------------------------------------------------------------------- 0F5D 06063 put_number0 0F5D 302E 06064 MOVLW '.' 0F5E 00FC 06065 MOVWF data0 0F5F 2759 06066 call puttty 0F60 300F 06067 MOVLW $ >> 8 0F61 008A 06068 MOVWF PCLATH 0F62 06069 put_number 0F62 1703 06070 bsf STATUS,RP1 0F63 1683 06071 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F64 138C 06072 bcf EECON1,7 ;eepgd Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F65 140C 06073 BSF EECON1,0 0F66 1283 06074 bcf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F67 080C 06075 MOVF EEDATA,0 0F68 00FC 06076 MOVWF data0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F69 0A8D 06077 INCF EEADR,1 0F6A 1303 06078 bcf STATUS,RP1 06079 0F6B 087C 06080 MOVF data0,0 0F6C 2521 06081 call put_decimal 0F6D 0BFF 06082 DECFSZ common,1 0F6E 2F5D 06083 GOTO put_number0 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 122 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0F6F 0008 06084 RETURN 06085 06086 06087 ;----------------------------------------------------------------------------------- 06088 ; '.' 区切りで8ビット10進数値を表示する 06089 ;----------------------------------------------------------------------------------- 0F70 06090 put_number_fr0 0F70 302E 06091 MOVLW '.' 0F71 00FC 06092 MOVWF data0 0F72 2759 06093 call puttty 0F73 300F 06094 MOVLW HIGH (put_number_fr0) 0F74 008A 06095 MOVWF PCLATH 0F75 06096 put_number_fr 0F75 0800 06097 MOVF INDF,0 0F76 0A84 06098 INCF FSR,1 0F77 2521 06099 call put_decimal 0F78 0BFF 06100 DECFSZ common,1 0F79 2F70 06101 GOTO put_number_fr0 0F7A 0008 06102 RETURN 06103 06104 06105 ;----------------------------------------------------------------------------------- 06106 ; EEPROMから16ビット値を取得+10進表示する 06107 ;----------------------------------------------------------------------------------- 0F7B 06108 put_number16 0F7B 1703 06109 bsf STATUS,RP1 0F7C 1683 06110 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F7D 138C 06111 bcf EECON1,7 ;eepgd Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F7E 140C 06112 BSF EECON1,0 0F7F 1283 06113 bcf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F80 080C 06114 MOVF EEDATA,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F81 0A8D 06115 INCF EEADR,1 0F82 1303 06116 bcf STATUS,RP1 0F83 00B3 06117 MOVWF val1 06118 0F84 1703 06119 bsf STATUS,RP1 0F85 1683 06120 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F86 138C 06121 bcf EECON1,7 ;eepgd Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F87 140C 06122 BSF EECON1,0 0F88 1283 06123 bcf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F89 080C 06124 MOVF EEDATA,0 ;mov w,eedata Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 0F8A 0A8D 06125 INCF EEADR,1 0F8B 1303 06126 bcf STATUS,RP1 0F8C 00B2 06127 MOVWF val 06128 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 123 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0F8D 2514 06129 call put_decimal16 0F8E 0008 06130 RETURN 06131 06132 06133 06134 06135 06136 ;----------------------------------------------------------------------------------- 06137 ; 16進出力ルーチン 06138 ;----------------------------------------------------------------------------------- 0F8F 06139 put_hexadecimal 0F8F 018A 06140 CLRF PCLATH 0F90 0E24 06141 swapf cd,0 Message[306]: Crossing page boundary -- ensure page bits are set. 0F91 206E 06142 call getascii 0F92 00FC 06143 MOVWF data0 0F93 300F 06144 MOVLW HIGH (puttty) 0F94 008A 06145 MOVWF PCLATH 06146 0F95 2759 06147 call puttty 06148 ; mov pclath,#$>>8 06149 ; 0F96 018A 06150 CLRF PCLATH 0F97 0824 06151 MOVF cd,0 Message[306]: Crossing page boundary -- ensure page bits are set. 0F98 206E 06152 call getascii 0F99 00FC 06153 MOVWF data0 0F9A 300F 06154 MOVLW HIGH (puttty) 0F9B 008A 06155 MOVWF PCLATH 06156 0F9C 2759 06157 call puttty 0F9D 300F 06158 MOVLW HIGH (put_hexadecimal) 0F9E 008A 06159 MOVWF PCLATH 0F9F 0008 06160 RETURN 06161 06162 ;----------------------------------------------------------------------------------- 06163 ; MACアドレスを出力 06164 ;----------------------------------------------------------------------------------- 0FA0 06165 put_mac_address 0FA0 30A4 06166 MOVLW mymac 0FA1 0084 06167 MOVWF FSR 0FA2 0800 06168 MOVF INDF,0 0FA3 00A4 06169 MOVWF cd 0FA4 0A84 06170 INCF FSR,1 0FA5 278F 06171 call put_hexadecimal 06172 0FA6 302D 06173 MOVLW '-' 0FA7 00FC 06174 MOVWF data0 0FA8 2759 06175 call puttty 0FA9 300F 06176 MOVLW HIGH (put_hexadecimal) 0FAA 008A 06177 MOVWF PCLATH 06178 0FAB 0800 06179 MOVF INDF,0 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 124 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0FAC 00A4 06180 MOVWF cd 0FAD 0A84 06181 INCF FSR,1 0FAE 278F 06182 call put_hexadecimal 06183 0FAF 302D 06184 MOVLW '-' 0FB0 00FC 06185 MOVWF data0 0FB1 2759 06186 call puttty 0FB2 300F 06187 MOVLW HIGH (put_hexadecimal) 0FB3 008A 06188 MOVWF PCLATH 06189 0FB4 0800 06190 MOVF INDF,0 0FB5 00A4 06191 MOVWF cd 0FB6 0A84 06192 INCF FSR,1 0FB7 278F 06193 call put_hexadecimal 06194 0FB8 302D 06195 MOVLW '-' 0FB9 00FC 06196 MOVWF data0 0FBA 2759 06197 call puttty 0FBB 300F 06198 MOVLW HIGH (put_hexadecimal) 0FBC 008A 06199 MOVWF PCLATH 0FBD 0800 06200 MOVF INDF,0 0FBE 00A4 06201 MOVWF cd 0FBF 0A84 06202 INCF FSR,1 0FC0 278F 06203 call put_hexadecimal 06204 0FC1 302D 06205 MOVLW '-' 0FC2 00FC 06206 MOVWF data0 0FC3 2759 06207 call puttty 0FC4 300F 06208 MOVLW HIGH (put_hexadecimal) 0FC5 008A 06209 MOVWF PCLATH 06210 0FC6 0800 06211 MOVF INDF,0 0FC7 00A4 06212 MOVWF cd 0FC8 0A84 06213 INCF FSR,1 0FC9 278F 06214 call put_hexadecimal 06215 0FCA 302D 06216 MOVLW '-' 0FCB 00FC 06217 MOVWF data0 0FCC 2759 06218 call puttty 0FCD 300F 06219 MOVLW HIGH (put_hexadecimal) 0FCE 008A 06220 MOVWF PCLATH 06221 0FCF 0800 06222 MOVF INDF,0 0FD0 00A4 06223 MOVWF cd 0FD1 0A84 06224 INCF FSR,1 0FD2 278F 06225 call put_hexadecimal 0FD3 0008 06226 RETURN 06227 06228 06229 ;----------------------------------------------------------------------------------- 06230 ; IPアドレスを液晶に出力 06231 ;----------------------------------------------------------------------------------- 0FD4 06232 print_ip MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 125 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0FD4 300D 06233 MOVLW HIGH (print_dec) 0FD5 008A 06234 MOVWF PCLATH 06235 0FD6 30A0 06236 MOVLW this_ip 0FD7 0084 06237 MOVWF FSR 06238 0FD8 0800 06239 MOVF INDF,0 0FD9 0A84 06240 INCF FSR,1 0FDA 2547 06241 call print_dec 06242 0FDB 302E 06243 MOVLW '.' 0FDC 00A2 06244 MOVWF d4 0FDD 24DC 06245 call write_lcd4 06246 0FDE 0800 06247 MOVF INDF,0 0FDF 0A84 06248 INCF FSR,1 0FE0 2547 06249 call print_dec 06250 0FE1 302E 06251 MOVLW '.' 0FE2 00A2 06252 MOVWF d4 0FE3 24DC 06253 call write_lcd4 06254 0FE4 0800 06255 MOVF INDF,0 0FE5 0A84 06256 INCF FSR,1 0FE6 2547 06257 call print_dec 06258 0FE7 302E 06259 MOVLW '.' 0FE8 00A2 06260 MOVWF d4 0FE9 24DC 06261 call write_lcd4 06262 0FEA 0800 06263 MOVF INDF,0 0FEB 0A84 06264 INCF FSR,1 0FEC 2547 06265 call print_dec 0FED 0008 06266 RETURN 06267 06268 06269 06270 ;----------------------------------------------------------------------------------- 06271 ; シリアル受信データの送信先を登録 06272 ;----------------------------------------------------------------------------------- 1000 06273 org 1000h 06274 1000 06275 ser_register 06276 ;mov wk,#SERIAL_PACKET_SIZE-2 1000 300E 06277 MOVLW SERIAL_PACKET_SIZE - 2 1001 00FD 06278 MOVWF wk 1002 01FE 06279 CLRF wk1 1003 1783 06280 bsf STATUS,IRP 1004 3090 06281 MOVLW on_ether & 0ffh 1005 0084 06282 MOVWF FSR 1006 06283 ser_register0 1006 0800 06284 MOVF INDF,0 1007 04FE 06285 IORWF wk1,1 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 126 LOC OBJECT CODE LINE SOURCE TEXT VALUE 1008 0A84 06286 INCF FSR,1 1009 0BFD 06287 DECFSZ wk,1 100A 2806 06288 GOTO ser_register0 100B 1383 06289 bcf STATUS,IRP 06290 100C 3000 06291 MOVLW 0 100D 027E 06292 SUBWF wk1,0 ; 既に設定済みの場合は何もしないで、 100E 1D03 06293 BTFSS 3,2 ;ステータスのみ送信する。 100F 2865 06294 GOTO ser_register9 06295 ; 送信先を登録 1010 1783 06296 bsf STATUS,IRP 1011 3096 06297 MOVLW on_ip & 0ffh 1012 0084 06298 MOVWF FSR 06299 1013 0856 06300 MOVF udp_data1,0 1014 0080 06301 MOVWF INDF 1015 0A84 06302 INCF FSR,1 1016 0857 06303 MOVF udp_data2,0 1017 0080 06304 MOVWF INDF 1018 0A84 06305 INCF FSR,1 1019 0858 06306 MOVF udp_data3,0 101A 0080 06307 MOVWF INDF 101B 0A84 06308 INCF FSR,1 101C 0859 06309 MOVF udp_data4,0 101D 0080 06310 MOVWF INDF 101E 0A84 06311 INCF FSR,1 06312 101F 084D 06313 MOVF udp_src_port,0 1020 0080 06314 MOVWF INDF 1021 0A84 06315 INCF FSR,1 1022 084E 06316 MOVF udp_src_port1,0 1023 0080 06317 MOVWF INDF 1024 0A84 06318 INCF FSR,1 06319 1025 085A 06320 MOVF udp_data5,0 1026 0080 06321 MOVWF INDF 1027 1683 06322 bsf STATUS,RP0 1028 0800 06323 MOVF INDF,0 ; ボーレートを設定 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 1029 0099 06324 MOVWF SPBRG 102A 1283 06325 bcf STATUS,RP0 06326 102B 0A84 06327 INCF FSR,1 102C 085B 06328 MOVF udp_data6,0 102D 0080 06329 MOVWF INDF 102E 3000 06330 MOVLW 0 102F 0200 06331 SUBWF INDF,0 1030 1D03 06332 BTFSS 3,2 1031 160B 06333 BSF INTCON,INTE 1032 1383 06334 bcf STATUS,IRP 06335 ; 06336 ; ARP要求を送信 06337 ; MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 127 LOC OBJECT CODE LINE SOURCE TEXT VALUE 1033 018A 06338 CLRF PCLATH ; Important! 06339 1034 01AD 06340 CLRF remote_adr 1035 3040 06341 MOVLW PAGE_BEGIN 1036 00AE 06342 MOVWF remote_adr1 06343 1037 302A 06344 MOVLW PACKET_SIZE + ARP_SIZE 1038 00AF 06345 MOVWF remote_len 1039 01B0 06346 CLRF remote_len1 06347 Message[306]: Crossing page boundary -- ensure page bits are set. 103A 26FB 06348 call remote_write 06349 103B 3010 06350 MOVLW 10h ; 宛て先:"ff-ff-ff-ff-ff-ff"に送信 103C 0087 06351 MOVWF PORTC 103D 30FF 06352 movlw 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 103E 274B 06353 call assert_wr 103F 30FF 06354 movlw 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 1040 274B 06355 call assert_wr 1041 30FF 06356 movlw 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 1042 274B 06357 call assert_wr 1043 30FF 06358 movlw 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 1044 274B 06359 call assert_wr 1045 30FF 06360 movlw 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 1046 274B 06361 call assert_wr 1047 30FF 06362 movlw 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 1048 274B 06363 call assert_wr 06364 1049 30A4 06365 MOVLW mymac ; 送信元:自分のMACアドレスを設定 104A 0084 06366 MOVWF FSR 104B 3006 06367 movlw 6 Message[306]: Crossing page boundary -- ensure page bits are set. 104C 2777 06368 call transmit_nbytes 06369 104D 3008 06370 movlw COM_PROTO ; 08 Etherframe type Message[306]: Crossing page boundary -- ensure page bits are set. 104E 274B 06371 call assert_wr 104F 3006 06372 movlw ARP_PROTO ; ARP Message[306]: Crossing page boundary -- ensure page bits are set. 1050 274B 06373 call assert_wr 06374 1051 3010 06375 MOVLW $ >> 8 1052 008A 06376 MOVWF PCLATH 1053 20B8 06377 call arp2 ; ARP header write 1054 018A 06378 CLRF PCLATH ; Important! 06379 1055 0187 06380 clrF PORTC MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 128 LOC OBJECT CODE LINE SOURCE TEXT VALUE 1056 3022 06381 movlw B'00100010' Message[306]: Crossing page boundary -- ensure page bits are set. 1057 2760 06382 call assert_wr0 06383 1058 3004 06384 MOVLW 4h 1059 0087 06385 MOVWF PORTC 105A 3040 06386 movlw PAGE_BEGIN ; transmit page is start page Message[306]: Crossing page boundary -- ensure page bits are set. 105B 2760 06387 call assert_wr0 06388 105C 3005 06389 MOVLW .5 105D 0087 06390 MOVWF PORTC 105E 303C 06391 movlw .60 ; minimum packet = 60 Message[306]: Crossing page boundary -- ensure page bits are set. 105F 2760 06392 call assert_wr0 06393 1060 3006 06394 MOVLW 6 1061 0087 06395 MOVWF PORTC 1062 0100 06396 DB 01,00 ;clrw ; adr high Message[306]: Crossing page boundary -- ensure page bits are set. 1063 2760 06397 call assert_wr0 Message[306]: Crossing page boundary -- ensure page bits are set. 1064 2789 06398 call transmit ; ARP応答を送信する 1065 06399 ser_register9 1065 3009 06400 MOVLW HIGH (ser_get_status) 1066 008A 06401 MOVWF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 1067 2938 06402 goto ser_get_status 06403 06404 ;----------------------------------------------------------------------------------- 06405 ; シリアル受信データの送信先を登録削除 06406 ;----------------------------------------------------------------------------------- 1068 06407 ser_unregister 1068 1218 06408 bcf RCSTA,4 ;cren 1069 130B 06409 bcf INTCON,6 ;peie ; 使用禁止 06410 106A 300E 06411 MOVLW SERIAL_PACKET_SIZE - 2 106B 00FD 06412 MOVWF wk 106C 01FE 06413 CLRF wk1 ;clr wk[1] 106D 1783 06414 bsf STATUS,IRP 106E 3090 06415 MOVLW on_ether & 0ffh 106F 0084 06416 MOVWF FSR 1070 06417 ser_unregister0 1070 0180 06418 clrF INDF 1071 0A84 06419 INCF FSR,1 1072 0BFD 06420 DECFSZ wk,1 1073 2870 06421 GOTO ser_unregister0 1074 1383 06422 bcf STATUS,IRP 06423 1075 2865 06424 goto ser_register9 06425 06426 06427 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 129 LOC OBJECT CODE LINE SOURCE TEXT VALUE 06428 06429 06430 ; 06431 ; DHCPプロトコル処理 06432 ; 1076 06433 dhcp 1076 1683 06434 BSF STATUS,RP0 1077 30FF 06435 MOVLW 0FFH Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 1078 00B2 06436 MOVWF dhcp_done 1079 1283 06437 BCF STATUS,RP0 06438 107A 300A 06439 MOVLW HIGH (bootp) 107B 008A 06440 MOVWF PCLATH 06441 Message[306]: Crossing page boundary -- ensure page bits are set. 107C 224A 06442 call bootp ; DHCPでアドレス取得 107D 018A 06443 CLRF PCLATH 06444 107E 3035 06445 movlw 35h ; Message[306]: Crossing page boundary -- ensure page bits are set. 107F 274B 06446 call assert_wr 1080 3001 06447 movlw 01h Message[306]: Crossing page boundary -- ensure page bits are set. 1081 274B 06448 call assert_wr 1082 3001 06449 movlw 1 Message[306]: Crossing page boundary -- ensure page bits are set. 1083 274B 06450 call assert_wr 06451 1084 303D 06452 movlw 3dh ; Message[306]: Crossing page boundary -- ensure page bits are set. 1085 274B 06453 call assert_wr 1086 3007 06454 movlw 07h Message[306]: Crossing page boundary -- ensure page bits are set. 1087 274B 06455 call assert_wr 1088 3001 06456 movlw 01h Message[306]: Crossing page boundary -- ensure page bits are set. 1089 274B 06457 call assert_wr 108A 30A4 06458 MOVLW mymac 108B 0084 06459 MOVWF FSR 108C 3006 06460 movlw 6 Message[306]: Crossing page boundary -- ensure page bits are set. 108D 2777 06461 call transmit_nbytes ; 自分のMAC 06462 108E 30FF 06463 movlw 0ffh Message[306]: Crossing page boundary -- ensure page bits are set. 108F 274B 06464 call assert_wr 06465 1090 302F 06466 MOVLW .64 - .7 - .9 - .1 1091 00A6 06467 MOVWF gcn1 1092 06468 bootp_30 1092 018A 06469 CLRF PCLATH 1093 0100 06470 DB 01,00 ;clrw MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 130 LOC OBJECT CODE LINE SOURCE TEXT VALUE Message[306]: Crossing page boundary -- ensure page bits are set. 1094 274B 06471 call assert_wr 06472 1095 3010 06473 MOVLW HIGH (bootp_30) 1096 008A 06474 MOVWF PCLATH 1097 0BA6 06475 DECFSZ gcn1,1 ;djnz gcn1,bootp_30 1098 2892 06476 GOTO bootp_30 1099 300A 06477 MOVLW HIGH (bootp_tx) 109A 008A 06478 MOVWF PCLATH 06479 Message[306]: Crossing page boundary -- ensure page bits are set. 109B 22AD 06480 call bootp_tx 109C 0008 06481 RETURN 06482 06483 06484 06485 ;----------------------------------------------------------------------------------- 06486 ; ARPヘッダの作成 109D 06487 arp1 109D 018A 06488 CLRF PCLATH 06489 109E 0100 06490 DB 01,00 ;clrw Message[306]: Crossing page boundary -- ensure page bits are set. 109F 274B 06491 call assert_wr 10A0 3001 06492 movlw 01h ; Ethernetは1固定 Message[306]: Crossing page boundary -- ensure page bits are set. 10A1 274B 06493 call assert_wr 06494 10A2 3008 06495 movlw COM_PROTO Message[306]: Crossing page boundary -- ensure page bits are set. 10A3 274B 06496 call assert_wr 10A4 3000 06497 movlw IP_PROTO ; IPでよい Message[306]: Crossing page boundary -- ensure page bits are set. 10A5 274B 06498 call assert_wr 10A6 3006 06499 movlw 06h Message[306]: Crossing page boundary -- ensure page bits are set. 10A7 274B 06500 call assert_wr 10A8 3004 06501 movlw 04h Message[306]: Crossing page boundary -- ensure page bits are set. 10A9 274B 06502 call assert_wr 10AA 3000 06503 movlw 00h Message[306]: Crossing page boundary -- ensure page bits are set. 10AB 274B 06504 call assert_wr 10AC 3002 06505 movlw 02h Message[306]: Crossing page boundary -- ensure page bits are set. 10AD 274B 06506 call assert_wr 10AE 30A4 06507 movlw mymac 10AF 0084 06508 movwf FSR 10B0 3006 06509 movlw 6 Message[306]: Crossing page boundary -- ensure page bits are set. 10B1 2777 06510 call transmit_nbytes Message[306]: Crossing page boundary -- ensure page bits are set. 10B2 2774 06511 call transmit_this_ip MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 131 LOC OBJECT CODE LINE SOURCE TEXT VALUE 10B3 3041 06512 movlw arp_src_mac 10B4 0084 06513 movwf FSR 10B5 300A 06514 movlw .10 Message[306]: Crossing page boundary -- ensure page bits are set. 10B6 2777 06515 call transmit_nbytes 10B7 0008 06516 return 10B8 06517 arp2 10B8 018A 06518 clrf PCLATH 10B9 0100 06519 db 01,00 Message[306]: Crossing page boundary -- ensure page bits are set. 10BA 274B 06520 call assert_wr 10BB 3001 06521 movlw 01h Message[306]: Crossing page boundary -- ensure page bits are set. 10BC 274B 06522 call assert_wr 10BD 3008 06523 movlw COM_PROTO Message[306]: Crossing page boundary -- ensure page bits are set. 10BE 274B 06524 call assert_wr 10BF 3000 06525 movlw IP_PROTO Message[306]: Crossing page boundary -- ensure page bits are set. 10C0 274B 06526 call assert_wr 06527 10C1 3006 06528 movlw 06h ; Ethernetアドレスのバイト数=6 Message[306]: Crossing page boundary -- ensure page bits are set. 10C2 274B 06529 call assert_wr 10C3 3004 06530 movlw 04h ; IPアドレスのバイト数=4 Message[306]: Crossing page boundary -- ensure page bits are set. 10C4 274B 06531 call assert_wr 06532 10C5 3000 06533 movlw 00h Message[306]: Crossing page boundary -- ensure page bits are set. 10C6 274B 06534 call assert_wr 10C7 3001 06535 movlw 01h ; ARP要求(=1) Message[306]: Crossing page boundary -- ensure page bits are set. 10C8 274B 06536 call assert_wr 06537 10C9 30A4 06538 MOVLW mymac 10CA 0084 06539 MOVWF FSR 10CB 3006 06540 movlw 6 Message[306]: Crossing page boundary -- ensure page bits are set. 10CC 2777 06541 call transmit_nbytes ; 自分のMACを送信 Message[306]: Crossing page boundary -- ensure page bits are set. 10CD 2774 06542 call transmit_this_ip ; 自分のIPを送信 06543 10CE 3000 06544 movlw 00h Message[306]: Crossing page boundary -- ensure page bits are set. 10CF 274B 06545 call assert_wr 10D0 3000 06546 movlw 00h Message[306]: Crossing page boundary -- ensure page bits are set. 10D1 274B 06547 call assert_wr 10D2 3000 06548 movlw 00h Message[306]: Crossing page boundary -- ensure page bits are set. 10D3 274B 06549 call assert_wr 10D4 3000 06550 movlw 00h MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 132 LOC OBJECT CODE LINE SOURCE TEXT VALUE Message[306]: Crossing page boundary -- ensure page bits are set. 10D5 274B 06551 call assert_wr 10D6 3000 06552 movlw 00h Message[306]: Crossing page boundary -- ensure page bits are set. 10D7 274B 06553 call assert_wr 10D8 3000 06554 movlw 00h Message[306]: Crossing page boundary -- ensure page bits are set. 10D9 274B 06555 call assert_wr 06556 10DA 1783 06557 bsf STATUS,IRP 10DB 3096 06558 MOVLW on_ip & 0ffh 10DC 0084 06559 MOVWF FSR 10DD 06560 check_netid 10DD 3010 06561 MOVLW HIGH (check_netid) 10DE 008A 06562 MOVWF PCLATH 10DF 1703 06563 bsf STATUS,RP1 10E0 1283 06564 bcf STATUS,RP0 10E1 3004 06565 MOVLW .4 ; address=16 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 10E2 008D 06566 MOVWF EEADR 10E3 1303 06567 bcf STATUS,RP1 06568 10E4 2144 06569 call getnetmask 10E5 1683 06570 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 10E6 0820 06571 MOVF this_ip,0 10E7 00FE 06572 MOVWF wk1 10E8 087D 06573 MOVF wk,0 ; [1] = this 10E9 05FE 06574 ANDWF wk1,1 10EA 0800 06575 MOVF INDF,0 ;on_ip[0] 10EB 05FD 06576 ANDWF wk,1 06577 ; [0] = host 10EC 0A84 06578 INCF FSR,1 10ED 087E 06579 MOVF wk1,0 10EE 027D 06580 SUBWF wk,0 10EF 1D03 06581 BTFSS 3,2 10F0 2922 06582 GOTO gateway 06583 10F1 2144 06584 call getnetmask 10F2 1683 06585 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 10F3 0821 06586 MOVF this_ip1,0 10F4 00FE 06587 MOVWF wk1 10F5 087D 06588 MOVF wk,0 10F6 05FE 06589 ANDWF wk1,1 10F7 0800 06590 MOVF INDF,0 ;on_ip[0] 10F8 05FD 06591 ANDWF wk,1 06592 10F9 0A84 06593 INCF FSR,1 10FA 087E 06594 MOVF wk1,0 10FB 027D 06595 SUBWF wk,0 10FC 1D03 06596 BTFSS 3,2 10FD 2922 06597 GOTO gateway MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 133 LOC OBJECT CODE LINE SOURCE TEXT VALUE 10FE 2144 06598 call getnetmask 10FF 1683 06599 bsf STATUS,RP0 06600 ;mov wk[1],this_ip[2] 06601 ;and wk[1],wk[0] ; [1] = this 06602 ;and wk[0],INDF ;on_ip[0] ; [0] = host Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 1100 0822 06603 MOVF this_ip2,0 1101 00FE 06604 MOVWF wk1 1102 087D 06605 MOVF wk,0 1103 05FE 06606 ANDWF wk1,1 1104 0800 06607 MOVF INDF,0 1105 05FD 06608 ANDWF wk,1 1106 0A84 06609 INCF FSR,1 1107 087E 06610 MOVF wk1,0 1108 027D 06611 SUBWF wk,0 1109 1D03 06612 BTFSS 3,2 110A 2922 06613 GOTO gateway 06614 110B 2144 06615 call getnetmask 110C 1683 06616 bsf STATUS,RP0 06617 ;mov wk[1],this_ip[3] 06618 ;and wk[1],wk[0] ; [1] = this 06619 ;and wk[0],INDF ;on_ip[0] ; [0] = host Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 110D 0823 06620 MOVF this_ip3,0 110E 00FE 06621 MOVWF wk1 110F 087D 06622 MOVF wk,0 1110 05FE 06623 ANDWF wk1,1 1111 0800 06624 MOVF INDF,0 1112 05FD 06625 ANDWF wk,1 06626 1113 087E 06627 MOVF wk1,0 1114 027D 06628 SUBWF wk,0 1115 1D03 06629 BTFSS 3,2 1116 2922 06630 GOTO gateway 06631 1117 06632 direct 1117 1283 06633 bcf STATUS,RP0 1118 1303 06634 bcf STATUS,RP1 1119 018A 06635 CLRF PCLATH 111A 3096 06636 MOVLW on_ip & 0ffh 111B 0084 06637 MOVWF FSR 111C 3004 06638 movlw 4 ; 相手のIPを送信 Message[306]: Crossing page boundary -- ensure page bits are set. 111D 2777 06639 call transmit_nbytes 06640 111E 1383 06641 bcf STATUS,IRP 111F 3011 06642 MOVLW $ >> 8 1120 008A 06643 MOVWF PCLATH 1121 0008 06644 RETURN 06645 1122 06646 gateway 1122 1703 06647 bsf STATUS,RP1 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 134 LOC OBJECT CODE LINE SOURCE TEXT VALUE 1123 1283 06648 bcf STATUS,RP0 1124 3008 06649 MOVLW .8 ; address=16 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 1125 008D 06650 MOVWF EEADR 1126 1683 06651 bsf STATUS,RP0 1127 1303 06652 bcf STATUS,RP1 06653 1128 3011 06654 MOVLW $ >> 8 1129 008A 06655 MOVWF PCLATH 112A 2144 06656 call getnetmask 112B 018A 06657 CLRF PCLATH 112C 087D 06658 MOVF wk,0 Message[306]: Crossing page boundary -- ensure page bits are set. 112D 274B 06659 call assert_wr 06660 112E 3011 06661 MOVLW $ >> 8 112F 008A 06662 MOVWF PCLATH 1130 2144 06663 call getnetmask 1131 018A 06664 CLRF PCLATH 1132 087D 06665 MOVF wk,0 Message[306]: Crossing page boundary -- ensure page bits are set. 1133 274B 06666 call assert_wr 06667 1134 3011 06668 MOVLW $ >> 8 1135 008A 06669 MOVWF PCLATH 1136 2144 06670 call getnetmask 1137 018A 06671 CLRF PCLATH 1138 087D 06672 MOVF wk,0 Message[306]: Crossing page boundary -- ensure page bits are set. 1139 274B 06673 call assert_wr 06674 113A 3011 06675 MOVLW $ >> 8 113B 008A 06676 MOVWF PCLATH 113C 2144 06677 call getnetmask 113D 018A 06678 CLRF PCLATH 113E 087D 06679 MOVF wk,0 Message[306]: Crossing page boundary -- ensure page bits are set. 113F 274B 06680 call assert_wr 06681 1140 1383 06682 bcf STATUS,IRP 1141 3011 06683 MOVLW $ >> 8 1142 008A 06684 MOVWF PCLATH 1143 0008 06685 RETURN 06686 1144 06687 getnetmask 1144 1703 06688 bsf STATUS,RP1 1145 1683 06689 bsf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 1146 138C 06690 bcf EECON1,7 ;eepgd Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 1147 140C 06691 BSF EECON1,0 ;bsf eecon1,0 1148 1283 06692 bcf STATUS,RP0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 135 LOC OBJECT CODE LINE SOURCE TEXT VALUE 1149 080C 06693 MOVF EEDATA,0 ;mov wk[0],eedata 114A 00FD 06694 MOVWF wk Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 114B 0A8D 06695 INCF EEADR,1 ;inc eeadr 114C 1303 06696 bcf STATUS,RP1 114D 0008 06697 RETURN 06698 06699 06700 ;----------------------------------------------------------------------------------- 06701 ; 232Cデータをホストに送信 06702 ;----------------------------------------------------------------------------------- 114E 06703 serial_tx 114E 1783 06704 bsf STATUS,IRP ;irp 114F 3090 06705 MOVLW on_ether & 0ffh 1150 0084 06706 MOVWF FSR 1151 1683 06707 bsf STATUS,RP0 ;rp0 1152 0800 06708 MOVF INDF,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 1153 00E8 06709 MOVWF eth_src 1154 0A84 06710 INCF FSR,1 1155 0800 06711 MOVF INDF,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 1156 00E9 06712 MOVWF eth_src1 1157 0A84 06713 INCF FSR,1 1158 0800 06714 MOVF INDF,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 1159 00EA 06715 MOVWF eth_src2 06716 ;mov eth_src[2],INDF 115A 0A84 06717 INCF FSR,1 115B 0800 06718 MOVF INDF,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 115C 00EB 06719 MOVWF eth_src3 115D 0A84 06720 INCF FSR,1 06721 ;mov eth_src[4],INDF 115E 0800 06722 MOVF INDF,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 115F 00EC 06723 MOVWF eth_src4 06724 1160 0A84 06725 INCF FSR,1 06726 1161 0800 06727 MOVF INDF,0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 1162 00ED 06728 MOVWF eth_src5 06729 1163 0A84 06730 INCF FSR,1 1164 1283 06731 bcf STATUS,RP0 ;rp0 06732 06733 ;mov ip_src[0],INDF 1165 0800 06734 MOVF INDF,0 1166 00C5 06735 MOVWF ip_src 1167 0A84 06736 INCF FSR,1 06737 ;mov ip_src[1],INDF 1168 0800 06738 MOVF INDF,0 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 136 LOC OBJECT CODE LINE SOURCE TEXT VALUE 1169 00C6 06739 MOVWF ip_src1 06740 116A 0A84 06741 INCF FSR,1 06742 ;mov ip_src[2],INDF 116B 0800 06743 MOVF INDF,0 116C 00C7 06744 MOVWF ip_src2 06745 116D 0A84 06746 INCF FSR,1 116E 0800 06747 MOVF INDF,0 116F 00C8 06748 MOVWF ip_src3 06749 1170 0A84 06750 INCF FSR,1 1171 1383 06751 bcf STATUS,IRP ;irp 06752 ; 06753 ; 下準備をする 06754 ; 1172 1683 06755 bsf STATUS,RP0 ;rp0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 1173 083D 06756 MOVF fifo_cn,0 1174 00FD 06757 movwf wk 06758 ;skip1 1175 1283 06759 bcf STATUS,RP0 ;rp0 06760 1176 3000 06761 MOVLW 0 1177 00BB 06762 MOVWF ip_length 1178 301C 06763 MOVLW IP_SIZE + UDP_SIZE 1179 00BC 06764 MOVWF ip_length1 117A 087D 06765 MOVF wk,0 117B 07BC 06766 ADDWF ip_length1,1 ; 送信バイトサイズ 117C 3010 06767 MOVLW SERIAL_PACKET_SIZE ; 共通ヘッダサイズ 117D 07BC 06768 ADDWF ip_length1,1 117E 018A 06769 CLRF PCLATH 06770 117F 3011 06771 MOVLW UDP_PROTO 1180 00B7 06772 MOVWF proto ; UDP packet Message[306]: Crossing page boundary -- ensure page bits are set. 1181 27AE 06773 call prepare_ip ; IPパケットまで作成 06774 Message[306]: Crossing page boundary -- ensure page bits are set. 1182 20E3 06775 call clear_sum ; チェックサムの値をクリア 06776 1183 3022 06777 MOVLW PACKET_SIZE+IP_SIZE 1184 00AD 06778 MOVWF remote_adr 1185 3040 06779 MOVLW PAGE_BEGIN 1186 00AE 06780 MOVWF remote_adr1 06781 06782 ;mov remote_len[0],#UDP_SIZE 1187 3008 06783 MOVLW UDP_SIZE 1188 00AF 06784 MOVWF remote_len 06785 1189 3010 06786 MOVLW SERIAL_PACKET_SIZE 118A 07AF 06787 ADDWF remote_len,1 118B 087D 06788 MOVF wk,0 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 137 LOC OBJECT CODE LINE SOURCE TEXT VALUE 118C 07AF 06789 ADDWF remote_len,1 118D 3000 06790 MOVLW 0 118E 00B0 06791 MOVWF remote_len1 Message[306]: Crossing page boundary -- ensure page bits are set. 118F 26FB 06792 call remote_write 06793 06794 1190 3010 06795 MOVLW 10H 1191 0087 06796 MOVWF PORTC 06797 1192 30B9 06798 MOVLW serial_port 1193 0084 06799 MOVWF FSR 1194 0800 06800 MOVF INDF,0 ; From PORT #(HIGH) Message[306]: Crossing page boundary -- ensure page bits are set. 1195 274B 06801 call assert_wr 1196 0A84 06802 INCF FSR,1 1197 0800 06803 MOVF INDF,0 ; From PORT #(LOW) Message[306]: Crossing page boundary -- ensure page bits are set. 1198 274B 06804 call assert_wr 06805 1199 1783 06806 bsf STATUS,IRP ;irp 119A 309A 06807 MOVLW on_port & 0ffh 119B 0084 06808 MOVWF FSR ; To Port# 119C 0800 06809 MOVF INDF,0 Message[306]: Crossing page boundary -- ensure page bits are set. 119D 274B 06810 call assert_wr 119E 0A84 06811 INCF FSR,1 119F 0800 06812 MOVF INDF,0 Message[306]: Crossing page boundary -- ensure page bits are set. 11A0 274B 06813 call assert_wr 11A1 1383 06814 bcf STATUS,IRP ;irp 06815 11A2 3000 06816 movlw 0 Message[306]: Crossing page boundary -- ensure page bits are set. 11A3 274B 06817 call assert_wr 11A4 3018 06818 movlw UDP_SIZE+SERIAL_PACKET_SIZE 11A5 077D 06819 ADDWF wk,0 Message[306]: Crossing page boundary -- ensure page bits are set. 11A6 274B 06820 call assert_wr 06821 Message[306]: Crossing page boundary -- ensure page bits are set. 11A7 273B 06822 call assert_wr2times 06823 11A8 3004 06824 movlw 4 Message[306]: Crossing page boundary -- ensure page bits are set. 11A9 274B 06825 call assert_wr 11AA 087D 06826 MOVF wk,0 11AB 3E10 06827 addlw SERIAL_PACKET_SIZE Message[306]: Crossing page boundary -- ensure page bits are set. 11AC 274B 06828 call assert_wr ; sum(not fixed) 06829 ; 06830 ; ステータス部 11AD 1783 06831 bsf STATUS,IRP ;irp MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 138 LOC OBJECT CODE LINE SOURCE TEXT VALUE 11AE 3090 06832 MOVLW on_ether & 0ffh 11AF 0084 06833 MOVWF FSR 11B0 300E 06834 movlw SERIAL_PACKET_SIZE - 2 Message[306]: Crossing page boundary -- ensure page bits are set. 11B1 2777 06835 call transmit_nbytes 11B2 1383 06836 bcf STATUS,IRP ;irp 06837 ; 06838 ; 送信 11B3 06839 serial_tx0 11B3 3011 06840 MOVLW $ >> 8 11B4 008A 06841 MOVWF PCLATH 11B5 1683 06842 bsf STATUS,RP0 ;rp0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 11B6 083B 06843 MOVF fifo_poi,0 11B7 0084 06844 MOVWF FSR ;; 受信ポインタ(GET) 11B8 0800 06845 MOVF INDF,0 11B9 00FC 06846 MOVWF data0 ; 受信した文字を取得 06847 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 11BA 0ABB 06848 incF fifo_poi,1 ; 受信バッファをインクリメント 11BB 30DC 06849 MOVLW fifo_bottom Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 11BC 023B 06850 SUBWF fifo_poi,0 11BD 1C03 06851 BTFSS 3,0 11BE 29C1 06852 GOTO tx100 11BF 30BE 06853 MOVLW fifo_top Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 11C0 00BB 06854 MOVWF fifo_poi Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 11C1 03BD 06855 tx100 decF fifo_cn,1 ; 受信バイト数をデクリメント 11C2 1283 06856 bcf STATUS,RP0 ;rp0 06857 11C3 018A 06858 clrF PCLATH 11C4 087C 06859 MOVF data0,0 Message[306]: Crossing page boundary -- ensure page bits are set. 11C5 274B 06860 call assert_wr 06861 11C6 3011 06862 MOVLW $ >> 8 11C7 008A 06863 MOVWF PCLATH 11C8 0BFD 06864 DECFSZ wk,1 11C9 29B3 06865 GOTO serial_tx0 11CA 1086 06866 bcf PORTB,1 06867 06868 ; 06869 ; UDPサム計算+送信 11CB 3008 06870 MOVLW calc_udp_sum >> 8 11CC 008A 06871 MOVWF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 11CD 20C8 06872 call calc_udp_sum 06873 11CE 018A 06874 clrF PCLATH ;pclc,#4hath 11CF 3004 06875 MOVLW 4 11D0 0087 06876 MOVWF PORTC MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 139 LOC OBJECT CODE LINE SOURCE TEXT VALUE 11D1 3040 06877 movlw PAGE_BEGIN Message[306]: Crossing page boundary -- ensure page bits are set. 11D2 2760 06878 call assert_wr0 06879 11D3 300E 06880 MOVLW PACKET_SIZE 11D4 07BC 06881 ADDWF ip_length1,1 ; パケットサイズ6+6+2を送信バイト数に加算1 11D5 3001 06882 movlw 1 11D6 1803 06883 btfsc STATUS,C 11D7 07BB 06884 ADDWF ip_length,1 06885 11D8 3006 06886 MOVLW 6 11D9 0087 06887 MOVWF PORTC 11DA 083B 06888 MOVF ip_length,0 ; HIGH Message[306]: Crossing page boundary -- ensure page bits are set. 11DB 2760 06889 call assert_wr0 06890 11DC 3011 06891 MOVLW $ >> 8 11DD 008A 06892 MOVWF PCLATH 11DE 08BB 06893 MOVF ip_length,1 11DF 1903 06894 btfsc STATUS,Z 11E0 29E9 06895 goto serial_tx1 11E1 06896 serial_tx2 11E1 018A 06897 clrF PCLATH 11E2 3005 06898 MOVLW 5 11E3 0087 06899 MOVWF PORTC 11E4 083C 06900 MOVF ip_length1,0 Message[306]: Crossing page boundary -- ensure page bits are set. 11E5 2760 06901 call assert_wr0 Message[306]: Crossing page boundary -- ensure page bits are set. 11E6 2789 06902 call transmit ; 送信!! 06903 11E7 018A 06904 clrF PCLATH ;pclath Message[306]: Crossing page boundary -- ensure page bits are set. 11E8 2925 06905 goto main0 11E9 06906 serial_tx1 11E9 303C 06907 MOVLW .60 11EA 023C 06908 SUBWF ip_length1,0 11EB 1803 06909 BTFSC 3,0 11EC 29E1 06910 GOTO serial_tx2 06911 11ED 018A 06912 CLRF PCLATH 11EE 3005 06913 MOVLW 5 11EF 0087 06914 MOVWF PORTC 11F0 303C 06915 movlw .60 ; MINIMUM 60bytes Message[306]: Crossing page boundary -- ensure page bits are set. 11F1 2760 06916 call assert_wr0 Message[306]: Crossing page boundary -- ensure page bits are set. 11F2 2789 06917 call transmit 06918 11F3 018A 06919 CLRF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 11F4 2925 06920 goto main0 11F5 06921 udp_lcd9 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 140 LOC OBJECT CODE LINE SOURCE TEXT VALUE 11F5 018A 06922 clrf PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 11F6 297E 06923 GOTO main9 06924 ;-------------------------------------------------------------------------------;  液晶への文字出力 06925 ;------------------------------------------------------------------------------- 11F7 06926 udp_lcd 11F7 0851 06927 MOVF udp_length,0 11F8 00B0 06928 movwf remote_len1 11F9 0852 06929 movf udp_length1,0 11FA 00AF 06930 movwf remote_len 11FB 3008 06931 movlw 8 11FC 02AF 06932 subwf remote_len,1 11FD 1C03 06933 btfss STATUS,C 06934 11FE 03B0 06935 decF remote_len1,1 11FF 3003 06936 MOVLW get_dgram >> 8 1200 008A 06937 movwf PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 1201 2311 06938 CALL get_dgram 1202 3012 06939 MOVLW $ >> 8 1203 008A 06940 MOVWF PCLATH 1204 1803 06941 BTFSC STATUS,C 1205 29F5 06942 GOTO udp_lcd9 06943 1206 3001 06944 MOVLW 1 1207 027C 06945 SUBWF data0,0 1208 1D03 06946 BTFSS 3,2 1209 2A28 06947 GOTO udp_lcd_0 120A 3003 06948 MOVLW get_dgram >>8 120B 008A 06949 MOVWF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 120C 2311 06950 CALL get_dgram 120D 3012 06951 MOVLW $ >> 8 120E 008A 06952 MOVWF PCLATH 120F 1803 06953 BTFSC STATUS,C 1210 29F5 06954 GOTO udp_lcd9 06955 1211 0806 06956 MOVF PORTB,0 1212 00FD 06957 MOVWF wk 1213 1106 06958 BCF PORTB,2 1214 087C 06959 MOVF data0,0 1215 00A2 06960 MOVWF d4 06961 1216 300C 06962 MOVLW write_lcd4 >> 8 1217 008A 06963 MOVWF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 1218 24DC 06964 CALL write_lcd4 1219 3012 06965 MOVLW $ >> 8 121A 008A 06966 MOVWF PCLATH 06967 121B 087D 06968 MOVF wk,0 121C 0086 06969 MOVWF PORTB 121D 30FC 06970 MOVLW B'11111100' MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 141 LOC OBJECT CODE LINE SOURCE TEXT VALUE 121E 05A2 06971 ANDWF d4,1 121F 1D03 06972 BTFSS STATUS,Z 1220 2A28 06973 GOTO udp_lcd_0 06974 1221 3002 06975 MOVLW 2 1222 00A0 06976 MOVWF wait_cn 1223 300C 06977 MOVLW wait_ms >> 8 1224 008A 06978 MOVWF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 1225 24F0 06979 CALL wait_ms 1226 3012 06980 MOVLW $ >> 8 1227 008A 06981 MOVWF PCLATH 1228 06982 udp_lcd_0 1228 3003 06983 MOVLW get_dgram >> 8 1229 008A 06984 MOVWF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 122A 2311 06985 CALL get_dgram 122B 3012 06986 MOVLW $ >> 8 122C 008A 06987 MOVWF PCLATH 122D 1803 06988 BTFSC STATUS,C 122E 2A3C 06989 GOTO udp_lcd91 122F 0806 06990 MOVF PORTB,0 1230 00FD 06991 MOVWF wk 1231 1506 06992 BSF PORTB,2 1232 087C 06993 MOVF data0,0 1233 00A2 06994 MOVWF d4 1234 300C 06995 MOVLW write_lcd4 >> 8 1235 008A 06996 MOVWF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 1236 24DC 06997 CALL write_lcd4 1237 3012 06998 MOVLW $ >> 8 1238 008A 06999 MOVWF PCLATH 1239 087D 07000 MOVF wk,0 123A 0086 07001 MOVWF PORTB 07002 123B 2A28 07003 GOTO udp_lcd_0 123C 07004 udp_lcd91 123C 30B5 07005 MOVLW lcd_port 123D 00FF 07006 MOVWF wk2 123E 3008 07007 MOVLW para_get_status >> 8 123F 008A 07008 MOVWF PCLATH Message[306]: Crossing page boundary -- ensure page bits are set. 1240 2881 07009 GOTO common_get_status 07010 07011 07012 ;----------------------------------------------------------------------------------- 07013 ; ブートストラップモード・メッセージ 07014 ;----------------------------------------------------------------------------------- 1300 07015 org 1300h 1300 3442 346F 346F 07016 lcd_mes DT "Bootstrap Mode " 3474 3473 3474 3472 3461 3470 3420 344D 346F MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 142 LOC OBJECT CODE LINE SOURCE TEXT VALUE 3464 3465 3420 3420 1310 068A 068A 07017 bs_1 DB 06,8A,06,8A ;.13,.10,.13,.10, 1312 2849 21A0 2765 07018 DA "PIC Network Interface Card - Bootstrap Mode Version $8" 3A77 37F2 35A0 24EE 3A65 3966 30E3 32A0 21E1 3964 102D 1042 37EF 3A73 3A72 30F0 104D 37E4 32A0 2B65 3973 34EF 3720 1238 132D 068A 07019 DB 06,8A ;,.13,.10 132E 0000 07020 DB 0,0 132F 2849 21CE 24C3 07021 bs_prompt DA "PICNIC>" 1F00 1333 152A 152A 1520 07022 bs_config DA "***** Configuration ***** " 21EF 3766 34E7 3AF2 30F4 34EF 3720 152A 152A 1520 1340 068A 07023 DB 06,8A ;,.13,.10 1341 26C1 21A0 20E4 07024 DA "MAC Addr. :$0" 3272 1720 103A 1230 1348 068A 07025 DB 06,8A ;,.13,.10 1349 2DC9 2ED0 1041 07026 DA "[I]P Addr. :$1" 3264 392E 103A 1231 1350 068A 07027 DB 06,8A ;,.13,.10 1351 2DCE 2EE5 3A4D 07028 DA "[N]etMask :$2" 30F3 35A0 103A 1232 1358 068A 07029 DB 06,8A ;.13,.10 1359 2DC7 2EE1 3A65 07030 DA "[G]ateWay :$3" 2BE1 3CA0 103A 1233 1360 068A 07031 DB 06,8A ;,.13,.10 1361 2DC8 2EF4 3A70 07032 DA "[H]ttpPort #$4" 286F 3974 1020 1020 1023 1234 136A 068A 07033 DB 06,8A ;,.13,.10 136B 2DCC 2EC3 2220 07034 DA "[L]CD Port #$5" 286F 3974 1020 1020 1023 1235 1374 068A 07035 DB 06,8A ;,.13,.10 1375 2DD0 2EE1 3961 07036 DA "[P]arallelPort #$6" 366C 32EC 286F 3974 1023 1236 137E 068A 07037 DB 06,8A ;,.13,.10 137F 2DD3 2EE5 3969 07038 DA "[S]erialPort #$7" 30EC 286F 3974 1020 1023 1237 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 143 LOC OBJECT CODE LINE SOURCE TEXT VALUE 1388 068A 07039 DB 06,8A ;,.13,.10 1389 0000 07040 DB 0,0 138A 29F9 3774 30F8 07041 bs_err DA "Syntax Error" 1045 3972 37F2 1390 170D 0500 07042 DB 17,0D,05,00 ;(,and 13),(10,0) 1392 24EE 3B61 3669 07043 bs_invalid DA "Invalid Command." 3220 21EF 36ED 30EE 322E 139A 068A 0000 07044 DB 06,8A,00,00 ;,.13,.10,0,0 139C 07045 bs_help 139C 152A 152A 1520 07046 DA "***** Bootstrap Mode Help ***** " 216F 37F4 39F4 3961 3820 26EF 3265 1048 32EC 3820 152A 152A 1520 13AC 068A 07047 DB 06,8A ;,.13,.10 13AD 31EF 3766 34E7 07048 DA "config - Print Board Configuration and Status." 1020 1020 1020 1020 102D 1050 3969 3774 1042 37E1 3964 1043 37EE 3369 33F5 3961 3A69 37EE 1061 3764 1053 3A61 3A75 39AE 13C8 068A 07049 DB 06,8A ;,.13,.10 13C9 3DF3 3A72 3EBD 07050 DA "{str}={value} - Update System Configuration. " 3DF6 30EC 3AE5 3EA0 102D 1055 3864 30F4 32A0 29F9 39F4 32ED 1043 37EE 3369 33F5 3961 3A69 37EE 1720 13E0 068A 07051 DB 06,8A ;,.13,.10 13E1 34EE 34F4 34E1 07052 DA "initialize - All registers set Initial Values." 3669 3D65 1020 1020 102D 1041 366C 1072 32E7 34F3 3A65 3973 1073 32F4 1049 3769 3A69 30EC 1056 30EC 3AE5 39AE 13FA 068A 07053 DB 06,8A ;,.13,.10 13FB 0000 07054 DB 0,0 07055 07056 07057 ;----------------------------------------------------------------------------------- 07058 ; Webブラウザ用・メッセージ 07059 ;----------------------------------------------------------------------------------- 07060 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 144 LOC OBJECT CODE LINE SOURCE TEXT VALUE 1400 07061 org 1400h 1400 2454 2A50 17B1 07062 DA "HTTP/1.0 200 O" 1730 1032 1830 104F 1407 258D 07063 DB 25,8D ;'K',13 1408 0543 07064 DB 05,43 ;10,C 1409 37EE 3765 31F4 07065 DA "onnection: close" 34EF 373A 1063 366F 39E5 1411 068A 07066 DB 06,8A ;, .13, .10, 1412 21EF 3774 32EE 07067 DA "Content-type: text/htm" 3A2D 3A79 3865 1D20 3A65 3C74 17E8 3A6D 141D 360D 050D 053C 07068 DB 36,0D,05,0D,05,3C ;'l', .13, .10, .13, .10, '<' 1420 2454 26CC 1F3C 07069 DA "HTML>PIC Network Interface Card',.10 1441 1E46 27CE 2A20 07071 DA "PIC Network Interface Card Version $8 " 29C9 2D45 1EAB 193E 2849 21A0 2765 3A77 37F2 35A0 24EE 3A65 3966 30E3 32A0 21E1 3964 1056 32F2 39E9 37EE 1020 1238 103C 17C6 27CE 2A3E 145F 1E48 293E 07072 DA "
" 07073 1461 1E68 19BE 24AF 07074 DA "

I/O Ports

" 27A0 286F 3974 39BC 17E8 19BE 146A 1E44 263E 1E44 07075 DA "
',10 1482 1E54 20C2 2645 07077 DA "" 1042 27D2 2245 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 145 LOC OBJECT CODE LINE SOURCE TEXT VALUE 293E 1489 1E54 293E 1E54 07078 DA "" 223E 286F 3974 1E2F 2A44 1F3C 2A44 1F56 30EC 3AE5 1E2F 2A44 1F3C 17D4 293E 07079 149B 1E54 293E 1E54 07080 DA "" 14A5 1E54 2220 20CC 07083 DA "" 17D4 293E 07086 14B4 1E54 293E 1E54 07087 DA "" 14BE 1E54 2220 20CC 07090 DA "" 17D4 293E 07093 14CD 1E54 293E 1E54 07094 DA "" 14D7 1E54 2220 20CC 07097 DA "" 17D4 293E 07100 14E6 1E54 293E 1E54 07101 DA "" 14F0 1E54 2220 20CC 07104 DA "" 17D4 293E 07107 14FF 1E54 293E 1E54 07108 DA "" 1509 1E54 2220 20CC 07111 DA "" 3AF3 1E2F 2A44 1F3C 17D4 293E 151C 0000 07114 DB 0,0 07115 07116 1700 07117 org 01700h 1700 1E54 293E 1E54 07118 DA "" 170A 1E54 223E 1E49 07121 DA "" 1054 2CD0 22BD 1173 3AE2 36E9 3A22 104E 20CD 22BD 1152 2130 1120 2B41 2655 22BD 114C 113E 1E2F 2A44 1F3C 17D4 293E 173C 1E54 293E 1E54 07124 DA "" 1746 1E54 223E 1E49 07127 DA "" 1054 2CD0 22BD 1173 3AE2 36E9 3A22 104E 20CD MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 147 LOC OBJECT CODE LINE SOURCE TEXT VALUE 22BD 1152 2131 1120 2B41 2655 22BD 114C 113E 1E2F 2A44 1F3C 17D4 293E 1778 1E54 293E 1E54 07130 DA "" 1782 1E54 223E 1E49 07133 DA "" 1054 2CD0 22BD 1173 3AE2 36E9 3A22 104E 20CD 22BD 1152 2132 1120 2B41 2655 22BD 114C 113E 1E2F 2A44 1F3C 17D4 293E 17B4 1E54 293E 1E54 07136 DA "" 17BE 1E54 223E 1E49 07139 DA "" 1054 2CD0 22BD 1173 3AE2 36E9 3A22 104E 20CD 22BD 1152 2133 1120 2B41 2655 22BD 114C 113E 1E2F 2A44 1F3C 17D4 293E 07142 07143 17F0 1E54 293E 1E54 07144 DA "" 17FA 1E54 223E 1E49 07147 DA "" 1054 2CD0 22BD 1173 3AE2 36E9 3A22 104E 20CD 22BD 1152 2134 1120 2B41 2655 22BD 114C 113E 1E2F 2A44 1F3C 17D4 293E 182C 1E54 293E 1E54 07150 DA "" 1836 1E54 223E 1E49 07153 DA "" 1054 2CD0 22BD 1173 3AE2 36E9 3A22 104E 20CD 22BD 1152 2135 1120 2B41 2655 22BD 114C 113E 1E2F 2A44 1F3C 17D4 293E 1868 1E54 293E 1E54 07156 DA "" 1872 1E54 223E 1E49 07159 DA "" 1054 2CD0 22BD 1173 3AE2 36E9 3A22 104E 20CD 22BD 1152 2136 1120 2B41 2655 22BD 114C 113E 1E2F 2A44 1F3C 17D4 293E 18A4 1E54 293E 1E54 07162 DA "" 18AE 1E54 223E 1E49 07165 DA "" 1054 2CD0 22BD 1173 3AE2 36E9 3A22 104E 20CD 22BD 1152 2137 1120 2B41 2655 22BD 114C 113E 1E2F 2A44 1F3C 17D4 293E 18E0 1E54 293E 1E54 07168 DA "" 223E 103C 17D4 223E 18E7 1E54 223E 1E49 07169 DA "" 2750 2AD4 1054 2CD0 22BD 1173 3AE2 36E9 3A22 1056 20CC 2AC5 1EA2 2965 366F 30E4 113E 1E2F 2A44 1F3C 17D4 293E 1900 1E2F 2A41 214C 07170 DA "
PortValue
RA0 " 223E 2941 1820 14A1 1280 07081 DB 12,80 ;"%",0000_0000b, 14A2 103C 17D4 223E 07082 DA " " 24C7 273D 1172 34E7 3474 113E 14AE 2000 07084 DB 20,00 ;'@",00000000b, 14AF 1E2F 2A44 1F3C 07085 DA "
RA1 " 223E 2941 18A0 14BA 1281 07088 DB 12,81 ;"%",0000_0001b, 14BB 103C 17D4 223E 07089 DA " " 24C7 273D 1172 34E7 3474 113E 14C7 2001 07091 DB 20,01 ;@",00000001b, 14C8 1E2F 2A44 1F3C 07092 DA "
RA2 " 223E 2941 1920 14D3 1282 07095 DB 12,82 ;%",0000_0010b, 14D4 103C 17D4 223E 07096 DA " " 24C7 273D 1172 34E7 3474 113E 14E0 2002 07098 DB 20,02 ;@",00000010b, 14E1 1E2F 2A44 1F3C 07099 DA "
RA3 " 223E 2941 19A0 14EC 1283 07102 DB 12,83 ;%",0000_0011b, 14ED 103C 17D4 223E 07103 DA " " 24C7 273D 1172 34E7 3474 113E 14F9 2003 07105 DB 20,03 ;"@",00000011b, 14FA 1E2F 2A44 1F3C 07106 DA "
RA5 " MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 146 LOC OBJECT CODE LINE SOURCE TEXT VALUE 223E 2941 1AA0 1505 1284 07109 DB 12,84 ;%",0000_0100b, 1506 103C 17D4 223E 07110 DA " " 24C7 273D 1172 34E7 3474 113E 1512 2004 07112 DB 20,04 ;@",00000100b, 1513 1043 32EC 39E9 07113 DA " Celsius
RB0 " 223E 2942 1820 1706 1290 07119 DB 12,90 ;%",0001_0000b, 1707 103C 17D4 223E 07120 DA " " 2750 2AD4 1054 2CD0 22BD 1173 3AE2 36E9 3A22 104E 20CD 22BD 1152 2130 1120 2B41 2655 22BD 1148 113E 1721 2010 07122 DB 20,10 ;'@',0001_0000b, 1722 1E49 2750 2AD4 07123 DA "
RB1 " 223E 2942 18A0 1742 1291 07125 DB 12,91 ;%",0001_0001b, 1743 103C 17D4 223E 07126 DA " " 2750 2AD4 1054 2CD0 22BD 1173 3AE2 36E9 3A22 104E 20CD 22BD 1152 2131 1120 2B41 2655 22BD 1148 113E 175D 2011 07128 DB 20,11 ;'@',0001_0001b, 175E 1E49 2750 2AD4 07129 DA "
RB2 " 223E 2942 1920 177E 1292 07131 DB 12,92 ;%",0001_0010b, 177F 103C 17D4 223E 07132 DA " " 2750 2AD4 1054 2CD0 22BD 1173 3AE2 36E9 3A22 104E 20CD 22BD 1152 2132 1120 2B41 2655 22BD 1148 113E 1799 2012 07134 DB 20,12 ;'@',0001_0010b, 179A 1E49 2750 2AD4 07135 DA "
RB3 " 223E 2942 19A0 17BA 1293 07137 DB 12,93 ;%",0001_0011b, 17BB 103C 17D4 223E 07138 DA " " 2750 2AD4 1054 2CD0 22BD 1173 3AE2 36E9 3A22 104E 20CD 22BD 1152 2133 1120 2B41 2655 22BD 1148 113E 17D5 2013 07140 DB 20,13 ;'@',0001_0011b, 17D6 1E49 2750 2AD4 07141 DA "
RB4 " 223E 2942 1A20 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 148 LOC OBJECT CODE LINE SOURCE TEXT VALUE 17F6 1294 07145 DB 12,94 ;%",0001_0100b, 17F7 103C 17D4 223E 07146 DA " " 2750 2AD4 1054 2CD0 22BD 1173 3AE2 36E9 3A22 104E 20CD 22BD 1152 2134 1120 2B41 2655 22BD 1148 113E 1811 2014 07148 DB 20,14 ;'@',0001_0100b, 1812 1E49 2750 2AD4 07149 DA "
RB5 " 223E 2942 1AA0 1832 1295 07151 DB 12,95 ;%",0001_0101b, 1833 103C 17D4 223E 07152 DA " " 2750 2AD4 1054 2CD0 22BD 1173 3AE2 36E9 3A22 104E 20CD 22BD 1152 2135 1120 2B41 2655 22BD 1148 113E 184D 2015 07154 DB 20,15 ;'@',0001_0101b, 184E 1E49 2750 2AD4 07155 DA "
RB6 " 223E 2942 1B20 186E 1296 07157 DB 12,96 ;%",0001_0110b, 186F 103C 17D4 223E 07158 DA " " 2750 2AD4 1054 2CD0 22BD 1173 3AE2 36E9 3A22 104E 20CD 22BD 1152 2136 1120 2B41 2655 22BD MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 149 LOC OBJECT CODE LINE SOURCE TEXT VALUE 1148 113E 1889 2016 07160 DB 20,16 ;'@',0001_0110b, 188A 1E49 2750 2AD4 07161 DA "
RB7 " 223E 2942 1BA0 18AA 1297 07163 DB 12,97 ;%",0001_0111b, 18AB 103C 17D4 223E 07164 DA " " 2750 2AD4 1054 2CD0 22BD 1173 3AE2 36E9 3A22 104E 20CD 22BD 1152 2137 1120 2B41 2655 22BD 1148 113E 18C5 2017 07166 DB 20,17 ;'@',0001_0111b, 18C6 1E49 2750 2AD4 07167 DA "
" 22BE 1904 1E2F 234F 294D 07171 DA "
" 1F3C 17C4 263E 190A 0000 07172 db 0,0 07173 1A00 07174 org 1A00h 1A00 1E46 27D2 26A0 07175 DA "
",10 1A14 1E68 19BE 21EF 07177 DA "

Configuration

" 3766 34E7 3AF2 30F4 34EF 373C 17E8 19BE 07178 1A1F 1E44 263E 1E44 07179 DA "
" 223E 1E54 20C2 2645 1042 27D2 2245 293E 07180 1A2A 1E54 293E 1E54 07181 DA "" 223E 26C1 21A0 20E4 3272 32F3 39BC 17D4 223E 1A36 1E54 223E 1230 07182 DA "" 1E2F 2A44 1F3C 17D4 293E 07183 1A3E 1E54 293E 1E54 07184 DA "" 223E 24D0 1041 3264 393C 17D4 223E 1A48 1E54 223E 1E49 07185 DA "" 2A44 1F3C 17D4 293E 07187 1A64 1E54 293E 1E54 07188 DA "" 223E 2765 3A4D 30F3 35BC 17D4 223E 1A6E 1E54 223E 1E49 07189 DA "" 2A44 1F3C 17D4 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 151 LOC OBJECT CODE LINE SOURCE TEXT VALUE 293E 07191 1A8A 1E54 293E 1E54 07192 DA "" 223E 23E1 3A65 2BE1 3CBC 17D4 223E 1A94 1E54 223E 1E49 07193 DA "" 2A44 1F3C 17D4 293E 07195 07196 ; DA "" 07197 ; DA "" 07199 1AB0 1E54 293E 1E54 07200 DA "" 223E 3474 3A70 1050 37F2 3A20 2A43 283A 11BC 17D4 223E 1ABE 1E54 223E 1E49 07201 DA "" 2A44 1F3C 17D4 293E 07203 1ADA 1E54 293E 1E54 07204 DA "" 223E 2643 2220 1050 37F2 3A20 2AC4 283A 11BC 17D4 223E 1AE8 1E54 223E 1E49 07205 DA "" 2A44 1F3C 17D4 293E 07207 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 152 LOC OBJECT CODE LINE SOURCE TEXT VALUE 1B04 1E54 293E 1E54 07208 DA "" 223E 2861 3961 366C 32EC 1050 37F2 3A20 2AC4 283A 11BC 17D4 223E 1B14 1E54 223E 1E49 07209 DA "" 2A44 1F3C 17D4 293E 07211 1B30 1E54 293E 1E54 07212 DA "" 223E 29E5 3969 30EC 1050 37F2 3A20 2AC4 283A 11BC 17D4 223E 1B3F 1E54 223E 1E49 07213 DA "" 2A44 1F3C 17D4 293E 1B5B 1E54 293E 1E54 07215 DA "" 223E 103C 17D4 223E 1B62 1E54 223E 1E49 07216 DA "" 1054 2CD0 22BD 1173 3AE2 36E9 3A22 104E 20CD 22BD 1149 2749 2A22 1056 20CC 2AC5 1EA2 2265 3361 3AEC 3A22 103E 1E2F 2A44 1F3C 17D4 293E 1B93 1E2F 2A41 214C 07218 DA "
MAC Address$0
IP Addr
NetMask
GateWay
RS232C Conv
http Port TCP:#
LCD Port UDP:#
Parallel Port UDP:#
Serial Port UDP:#
" 2750 2AD4 1054 2CD0 22BD 1173 3AE2 36E9 3A22 1056 20CC 2AC5 1EA2 29E1 3B65 113E 1B75 1E49 2750 2AD4 07217 DA "
" MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 153 LOC OBJECT CODE LINE SOURCE TEXT VALUE 22BE 1B97 1E2F 234F 294D 07219 DA "
" 1F3C 17C4 263E 1B9D 0000 07220 db 0,0 07221 07222 1D00 07223 org 1D00h 07224 1D00 1E68 19BE 29F4 07225 DA "

Status

" 30F4 3AF3 103C 17E8 19BE 1D08 1E44 263E 1E44 07226 DA "
" 223E 1E54 20C2 2645 1042 27D2 2245 293E 1D13 1E54 293E 1E54 07227 DA "" 223E 29E5 3774 1050 30E3 35E5 3A73 103C 17D4 223E 1D20 1E54 223E 1239 07228 DA "" 1E2F 2A44 1F3C 17D4 293E 1D28 1E54 293E 1E54 07229 DA "" 223E 2A68 34F3 1049 283C 17D4 223E 1D32 1E54 223E 07230 DA "" 17D4 293E 07233 ; DA "" 07234 ; DA "" 07237 ; DA "" 07238 ; DA "" 07241 ; DA "" 07242 ; DA "" 07245 ; DA "" 07246 ; DA "" 07249 ; DA "" 07250 ; DA "" 1D3A 1E2F 2A41 214C 07253 DA "
Sent Packets $9
This IP" 1D34 123A 07231 DB 12,3A ;$",'9'+1, 1D35 1E2F 2A44 1F3C 07232 DA "
Socket #1" 07235 ; DB 3F,0A ;~",0ah, 07236 ; DA "
Socket #2" 07239 ; DB 3F,0B ;~",0bh, 07240 ; DA "
Socket #3" 07243 ; DB 3F,0C ;~",0ch, 07244 ; DA "
Socket #4" 07247 ; DB 3F,0D ;~",0dh, 07248 ; DA "
Socket #5" 07251 ; DB 3F,0E ;~",0eh, 07252 ; DA "
" 22BE 1E2F 224C MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 154 LOC OBJECT CODE LINE SOURCE TEXT VALUE 1F20 07254 1D41 1E50 1F3C 2452 07255 DA "


Copyright (c) 2000-2001 by TriStat e Co.,Ltd. " 1F43 37F0 3CF2 34E7 3474 1028 31A9 1032 1830 182D 1930 1831 1062 3CA0 1E41 1048 2945 233D 1168 3A74 383A 17AF 3BF7 3BAE 3A72 34F3 3A61 3A65 176E 32AE 3570 113E 2A72 34D3 3A61 3A65 1043 37AE 164C 3A64 173C 17C1 1F20 1D6F 068A 07256 DB 06,8A ;,13,10 1D70 1E2F 214F 2259 07257 DA "" 1F3C 17C8 2A4D 263E 1D77 0000 07258 db 0,0 07259 07260 07261 07262 07263 ;----------------------------------------------------------------------------------- 07264 ; EEPROMデータ初期値 07265 ;----------------------------------------------------------------------------------- 1F00 07266 org 1F00h 1F00 07267 default_values_begin 1F00 34C0 34A8 3400 07268 DT .192,.168,0,.200 34C8 1F04 34FF 34FF 34FF 07269 DT .255,.255,.255,0 3400 1F08 3400 3400 3400 07270 DT 0,0,0,0 3400 1F0C 3401 3402 3400 07271 DT 1,2,0,0 ; Farmware Version x,x,x,x 3400 07272 1F10 3400 3450 07273 DT HTTP_PORT / .256,HTTP_PORT & .255 ; HTTPポート番号 1F12 3400 3400 07274 DT LCD_PORT / .256,LCD_PORT & .255 ; LCDポート番号 1F14 3427 3411 07275 DT PARALLEL_PORT / .256,PARALLEL_PORT & .255 ; PARALLELポート 番号 1F16 3427 3412 07276 DT SERIAL_PORT / .256,SERIAL_PORT & .255 ; SERIALポート番号 1F18 07277 default_values_end 07278 1F18 07279 getadtable 1F18 1683 07280 bsf STATUS,RP0 ;rp0 Message[302]: Register in operand not in bank 0. Ensure that bank bits are correct. 1F19 081F 07281 MOVF ADCON1,0 ;adcon1,0 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 155 LOC OBJECT CODE LINE SOURCE TEXT VALUE 1F1A 1283 07282 bcf STATUS,RP0 1F1B 390F 07283 andlw 0fh 1F1C 0782 07284 ADDWF 2,1 ;jmp pc+w 1F1D 34FF 07285 retLw B'11111111' 1F1E 34FF 07286 retLw B'11111111' 1F1F 341F 07287 retLw B'00011111' 1F20 341F 07288 retLw B'00011111' 1F21 340B 07289 retLw B'00001011' 1F22 3403 07290 retLw B'00000011' 1F23 3400 07291 retLw B'00000000' 1F24 3400 07292 retLw B'00000000' 1F25 34F3 07293 retLw B'11110011' 1F26 343F 07294 retLw B'00111111' 1F27 3437 07295 retLw B'00110111' 1F28 3433 07296 retLw B'00110011' 1F29 3413 07297 retLw B'00010011' 1F2A 3403 07298 retLw B'00000011' 1F2B 3401 07299 retLw B'00000001' 1F2C 3401 07300 retLw B'00000001' 07301 07302 1F2D 3420 344C 346F 07303 mes_low DT " Low ",0 3477 3420 3420 3400 1F34 3420 3448 3469 07304 mes_high DT " High ",0 3467 3468 3420 3400 1F3B 3449 346E 3420 07305 mes_in DT "In ",0 3400 1F3F 344F 3475 3474 07306 mes_out DT "Out",0 3400 07307 07308 ;----------------------------------------------------------------------------------- 07309 ; ブートストラップモードのコマンドパース用 07310 ;----------------------------------------------------------------------------------- 1F43 07311 get_bs_job 1F43 0782 07312 ADDWF 2,1 ;jmp pc+w 1F44 3478 3466 07313 DT str_init & 0ffh, bsj_init & 0ffh 1F46 3483 3466 07314 DT str_init2 & 0ffh, bsj_init & 0ffh 07315 1F48 346E 3467 07316 DT str_config & 0ffh, bsj_config & 0ffh 1F4A 3475 3467 07317 DT str_config2 & 0ffh, bsj_config & 0ffh 07318 1F4C 3488 346B 07319 DT str_help & 0ffh, bsj_help & 0ffh 1F4E 348D 346B 07320 DT str_help2 & 0ffh, bsj_help & 0ffh 07321 1F50 348F 348F 07322 DT str_ip & 0ffh, bsj_ip & 0ffh 1F52 3492 348F 07323 DT str_ip2 & 0ffh, bsj_ip & 0ffh 07324 1F54 3494 3489 07325 DT str_net & 0ffh, bsj_net & 0ffh 1F56 3498 3489 07326 DT str_net2 & 0ffh, bsj_net & 0ffh 07327 1F58 349A 348C 07328 DT str_gate & 0ffh, bsj_gate & 0ffh MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 156 LOC OBJECT CODE LINE SOURCE TEXT VALUE 1F5A 349F 348C 07329 DT str_gate2 & 0ffh, bsj_gate & 0ffh 07330 1F5C 34A1 3482 07331 DT str_http & 0ffh, bsj_http & 0ffh 1F5E 34A6 3482 07332 DT str_http2 & 0ffh, bsj_http & 0ffh 07333 1F60 34A8 3479 07334 DT str_lcd & 0ffh, bsj_lcd & 0ffh 1F62 34AC 3479 07335 DT str_lcd2 & 0ffh, bsj_lcd & 0ffh 07336 1F64 34AE 347C 07337 DT str_para & 0ffh, bsj_para & 0ffh 1F66 34B7 347C 07338 DT str_para2 & 0ffh, bsj_para & 0ffh 07339 1F68 34B9 347F 07340 DT str_serial & 0ffh, bsj_serial & 0ffh 1F6A 34C0 347F 07341 DT str_serial2 & 0ffh, bsj_serial & 0ffh 07342 1F6C 3400 3400 07343 DT 0,0 ; Terminator 07344 07345 1F6E 3463 346F 346E 07346 str_config DT "config",0 3466 3469 3467 3400 1F75 346C 3473 3400 07347 str_config2 DT "ls",0 07348 1F78 3469 346E 3469 07349 str_init DT "initialize",0 3474 3469 3461 346C 3469 347A 3465 3400 1F83 3469 346E 3469 07350 str_init2 DT "init",0 3474 3400 07351 1F88 3468 3465 346C 07352 str_help DT "help",0 3470 3400 1F8D 343F 3400 07353 str_help2 DT '?',0 07354 1F8F 3469 3470 3400 07355 str_ip DT "ip",0 1F92 3469 3400 07356 str_ip2 DT 'i',0 07357 1F94 346E 3465 3474 07358 str_net DT "net",0 3400 1F98 346E 3400 07359 str_net2 DT "n",0 07360 1F9A 3467 3461 3474 07361 str_gate DT "gate",0 3465 3400 1F9F 3467 3400 07362 str_gate2 DT 'g',0 07363 1FA1 3468 3474 3474 07364 str_http DT "http",0 3470 3400 1FA6 3468 3400 07365 str_http2 DT 'h',0 07366 1FA8 346C 3463 3464 07367 str_lcd DT "lcd",0 3400 1FAC 346C 3400 07368 str_lcd2 DT 'l',0 07369 1FAE 3470 3461 3472 07370 str_para DT "parallel",0 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 157 LOC OBJECT CODE LINE SOURCE TEXT VALUE 3461 346C 346C 3465 346C 3400 1FB7 3470 3400 07371 str_para2 DT 'p',0 07372 1FB9 3473 3465 3472 07373 str_serial DT "serial",0 3469 3461 346C 3400 1FC0 3473 3400 07374 str_serial2 DT 's',0 07375 07376 07377 07378 end MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 158 SYMBOL TABLE LABEL VALUE ACKDT 00000005 ACKEN 00000004 ACKSTAT 00000006 ADCON0 0000001F ADCON1 0000009F ADCS0 00000006 ADCS1 00000007 ADDEN 00000003 ADFM 00000007 ADIE 00000006 ADIF 00000006 ADON 00000000 ADRESH 0000001E ADRESL 0000009E ARP_PROTO 00000006 ARP_SIZE 0000001C BAUD_RATE 00000081 BCLIE 00000003 BCLIF 00000003 BF 00000000 BOOTPC_PORT 00000044 BOOTPS_PORT 00000043 BRGH 00000002 C 00000000 CCP1CON 00000017 CCP1IE 00000002 CCP1IF 00000002 CCP1M0 00000000 CCP1M1 00000001 CCP1M2 00000002 CCP1M3 00000003 CCP1X 00000005 CCP1Y 00000004 CCP2CON 0000001D CCP2IE 00000000 CCP2IF 00000000 CCP2M0 00000000 CCP2M1 00000001 CCP2M2 00000002 CCP2M3 00000003 CCP2X 00000005 CCP2Y 00000004 CCPR1H 00000016 CCPR1L 00000015 CCPR2H 0000001C CCPR2L 0000001B CHS0 00000003 CHS1 00000004 CHS2 00000005 CH_BACKSPACE 00000008 CKE 00000006 CKP 00000004 CLOSE_WAIT 00000082 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 159 SYMBOL TABLE LABEL VALUE CLOSING 00000086 CNT 00000009 COM_PROTO 00000008 CREN 00000004 CSRC 00000007 D 00000005 D4 00000004 D5 00000005 D6 00000006 D7 00000007 DATA_ADDRESS 00000005 DATA_SIZE 00000012 DC 00000001 DHCP_SIZE 00000134 D_A 00000005 E 00000003 EEADR 0000010D EEADRH 0000010F EECON1 0000018C EECON2 0000018D EEDATA 0000010C EEDATH 0000010E EEIE 00000004 EEIF 00000004 EEPGD 00000007 ESTAB 00000081 ESTAB_00 00000412 ESTAB_01 0000042E ESTAB_02 00000433 ESTAB_03 00000438 ESTAB_99 00000407 F 00000001 FERR 00000002 FIN_WAIT_1 00000084 FIN_WAIT_2 00000085 FSR 00000004 GCEN 00000007 GIE 00000007 GO 00000002 GO_DONE 00000002 HTTP_PORT 00000050 I2C_DATA 00000005 I2C_READ 00000002 I2C_START 00000003 I2C_STOP 00000004 IBF 00000007 IBOV 00000005 ICMP_PROTO 00000001 INDF 00000000 INTCON 0000000B INTE 00000004 INTEDG 00000006 INTF 00000001 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 160 SYMBOL TABLE LABEL VALUE IP_PROTO 00000000 IP_SIZE 00000014 IRP 00000007 LAST_ACK 00000083 LCD_PORT 00000000 LISTEN 00000000 NE_SIZE 00000004 NOT_A 00000005 NOT_ADDRESS 00000005 NOT_BO 00000000 NOT_BOR 00000000 NOT_DONE 00000002 NOT_PD 00000003 NOT_POR 00000001 NOT_RBPU 00000007 NOT_RC8 00000006 NOT_T1SYNC 00000002 NOT_TO 00000004 NOT_TX8 00000006 NOT_W 00000002 NOT_WRITE 00000002 OBF 00000006 OERR 00000001 OPTION_REG 00000081 P 00000004 PACKET_SIZE 0000000E PAGE_BEGIN 00000040 PAGE_START 00000046 PAGE_STOP 00000080 PARALLEL_PACKET_SIZE 00000008 PARALLEL_PORT 00002711 PCFG0 00000000 PCFG1 00000001 PCFG2 00000002 PCFG3 00000003 PCL 00000002 PCLATH 0000000A PCON 0000008E PEIE 00000006 PEN 00000002 PIE1 0000008C PIE2 0000008D PIR1 0000000C PIR2 0000000D PORTA 00000005 PORTB 00000006 PORTC 00000007 PORTD 00000008 PORTE 00000009 PR2 00000092 PS0 00000000 PS1 00000001 PS2 00000002 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 161 SYMBOL TABLE LABEL VALUE PSA 00000003 PSPIE 00000007 PSPIF 00000007 PSPMODE 00000004 R 00000002 RBIE 00000003 RBIF 00000000 RC8_9 00000006 RC9 00000006 RCD8 00000000 RCEN 00000003 RCIE 00000005 RCIF 00000005 RCREG 0000001A RCSTA 00000018 RD 00000000 RDY 00000005 READ_WRITE 00000002 RP0 00000005 RP1 00000006 RS 00000002 RSEN 00000001 RX9 00000006 RX9D 00000000 R_W 00000002 S 00000003 SA 00000007 SA0 00000000 SA1 00000001 SA2 00000002 SA3 00000003 SA4 00000004 SD 00000008 SD0 00000000 SD1 00000001 SD2 00000002 SD3 00000003 SD4 00000004 SD5 00000005 SD6 00000006 SD7 00000007 SEN 00000000 SERIAL_PACKET_SIZE 00000010 SERIAL_PORT 00002712 SMP 00000007 SOCKETS 00000004 SPBRG 00000099 SPEN 00000007 SREN 00000005 SSPADD 00000093 SSPBUF 00000013 SSPCON 00000014 SSPCON2 00000091 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 162 SYMBOL TABLE LABEL VALUE SSPEN 00000005 SSPIE 00000003 SSPIF 00000003 SSPM0 00000000 SSPM1 00000001 SSPM2 00000002 SSPM3 00000003 SSPOV 00000006 SSPSTAT 00000094 STATUS 00000003 SYNC 00000004 SYN_RCVD 00000080 T0CS 00000005 T0IE 00000005 T0IF 00000002 T0SE 00000004 T1CKPS0 00000004 T1CKPS1 00000005 T1CON 00000010 T1INSYNC 00000002 T1OSCEN 00000003 T1SYNC 00000002 T2CKPS0 00000000 T2CKPS1 00000001 T2CON 00000012 TCP_ACK 00000004 TCP_FIN 00000000 TCP_PROTO 00000006 TCP_PSH 00000003 TCP_RST 00000002 TCP_SIZE 00000014 TCP_SYN 00000001 TCP_URG 00000005 TIME_WAIT 00000087 TMR0 00000001 TMR1CS 00000001 TMR1H 0000000F TMR1IE 00000000 TMR1IF 00000000 TMR1L 0000000E TMR1ON 00000000 TMR2 00000011 TMR2IE 00000001 TMR2IF 00000001 TMR2ON 00000002 TOUTPS0 00000003 TOUTPS1 00000004 TOUTPS2 00000005 TOUTPS3 00000006 TRISA 00000085 TRISB 00000086 TRISC 00000087 TRISD 00000088 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 163 SYMBOL TABLE LABEL VALUE TRISE 00000089 TRISE0 00000000 TRISE1 00000001 TRISE2 00000002 TRMT 00000001 TX8_9 00000006 TX9 00000006 TX9D 00000000 TXD8 00000000 TXEN 00000005 TXIE 00000004 TXIF 00000004 TXREG 00000019 TXSTA 00000098 UA 00000001 UDP_PROTO 00000011 UDP_SIZE 00000008 W 00000000 WCOL 00000007 WR 00000001 WREN 00000002 WRERR 00000003 Z 00000002 _BODEN_OFF 00003FBF _BODEN_ON 00003FFF _CPD_OFF 00003FFF _CPD_ON 00003EFF _CP_ALL 00000FCF _CP_HALF 00001FDF _CP_OFF 00003FFF _CP_UPPER_256 00002FEF _DEBUG_OFF 00003FFF _DEBUG_ON 000037FF _HS_OSC 00003FFE _LP_OSC 00003FFC _LVP_OFF 00003F7F _LVP_ON 00003FFF _PWRTE_OFF 00003FFF _PWRTE_ON 00003FF7 _RC_OSC 00003FFF _WDT_OFF 00003FFB _WDT_ON 00003FFF _WRT_ENABLE_OFF 00003DFF _WRT_ENABLE_ON 00003FFF _XT_OSC 00003FFD __16F877 00000001 abort 0000043D ad_in 00000530 ad_in1 0000055F add_ack_no 000000BC add_seq_no 00000097 arp 000001DB arp1 0000109D MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 164 SYMBOL TABLE LABEL VALUE arp2 000010B8 arp_dest_ip 00000051 arp_dest_ip1 00000052 arp_dest_ip2 00000053 arp_dest_ip3 00000054 arp_dest_mac 0000004B arp_hard_len 0000003D arp_hard_type 00000039 arp_header 00000039 arp_ope 0000003F arp_ope1 00000040 arp_prot_len 0000003E arp_prot_type 0000003B arp_reply 000001D8 arp_req 000001DB arp_src_ip 00000047 arp_src_mac 00000041 asser_wr_high 00000758 assert_rd 0000076D assert_wr 0000074B assert_wr0 00000760 assert_wr0_2 00000761 assert_wr2 00000745 assert_wr2times 0000073B assert_wr2x 0000073F assert_wr_2 0000074C async_transmit 00000F05 bootp 00000A4A bootp2 00000A33 bootp_10 00000A7E bootp_10_0 00000A90 bootp_20 00000A9A bootp_30 00001092 bootp_40 0000035C bootp_res 00000323 bootp_tx 00000AAD boots_bs 00000DF1 boots_bs1 00000DFE boots_bs2 00000E0A boots_cr 00000E17 bootstrap 00000DA4 bootstrap0 00000DD4 bootstrap10 00000DAE bootstrap9 00000E20 bootstrap99 00000E29 broad_cast 00000A16 bs_1 00001310 bs_config 00001333 bs_err 0000138A bs_getnumber 00000EA7 bs_getnumber0 00000EA6 bs_help 0000139C bs_invalid 00001392 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 165 SYMBOL TABLE LABEL VALUE bs_job 00000E36 bs_job0 00000E43 bs_job1 00000E5E bs_job10 00000E3B bs_job2 00000E57 bs_prompt 0000132F bs_ptr 000000DE bs_ptr2 000000DF bs_set_byte 00000E91 bs_set_common 00000E95 bs_set_word 00000E84 bs_write 00000EBD bs_write9 00000EC6 bsj_config 00000E67 bsj_gate 00000E8C bsj_help 00000E6B bsj_http 00000E82 bsj_init 00000E66 bsj_ip 00000E8F bsj_lcd 00000E79 bsj_net 00000E89 bsj_para 00000E7C bsj_serial 00000E7F byte_cn 00000078 bytes 00000029 calc_sum 00000727 calc_sum_high 00000733 calc_tcp_sum 00000647 calc_udp_sum 000008C8 cd 00000024 check_netid 000010DD clear_seq_no 00000C9B clear_sum 000000E3 cn_h 0000002C cn_l 0000002B com_cn 00000077 com_fsr 00000078 common 0000007F common_get_status 00000881 copy_ack_no 000000D1 copy_toram 00000242 ctrl_code 00000F0A ctrl_code1 00000F12 ctrl_code2 000005C7 ctrl_code3 00000589 ctrl_code31 000005A5 ctrl_code32 000005A4 ctrl_code4 0000056D ctrl_code5 00000565 ctrl_high 000005B6 ctrl_in 000005B4 ctrl_low 000005B8 ctrl_next 000005CF MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 166 SYMBOL TABLE LABEL VALUE ctrl_out 000005B2 curr 00000031 d4 00000022 d8 00000023 data0 0000007C dec_tm 00000056 dec_tm0 0000005B dec_tm1 00000068 dec_tm9 00000027 decimal_top 00000120 default_values_begin 00001F00 default_values_end 00001F18 dest 0000007A dest1 0000007B dhcp 00001076 dhcp_client_ip 00000061 dhcp_done 000000B2 dhcp_dummy 0000005F dhcp_header 00000055 dhcp_hop 00000058 dhcp_ope 00000055 dhcp_phylen 00000057 dhcp_router_ip 0000006D dhcp_sec 0000005D dhcp_server_ip 00000069 dhcp_server_ip1 0000006A dhcp_server_ip2 0000006B dhcp_server_ip3 0000006C dhcp_trans 00000059 dhcp_type 00000056 dhcp_user_ip 00000065 dhcp_user_ip1 00000066 dhcp_user_ip2 00000067 dhcp_user_ip3 00000068 direct 00001117 divide 00000D60 divide0 00000D63 divide16 00000D74 divide16_0 00000D77 divide32 00000D89 divide32_0 00000D8C do_arp 0000019B do_dhcp 0000011F do_ip 0000020A entry0 000009D8 entry9 00000A0D estab0 00000414 estab1 00000426 eth_dest 000000E2 eth_dest1 000000E3 eth_dest2 000000E4 eth_dest3 000000E5 eth_dest4 000000E6 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 167 SYMBOL TABLE LABEL VALUE eth_dest5 000000E7 eth_header 000000E2 eth_src 000000E8 eth_src1 000000E9 eth_src2 000000EA eth_src3 000000EB eth_src4 000000EC eth_src5 000000ED eth_type 000000EE eth_type1 000000EF fifo_bottom 000000DC fifo_buff 000000BC fifo_cn 000000BD fifo_line 000000DC fifo_line_cn 000000DD fifo_poi 000000BB fifo_top 000000BE fsr_save 00000073 gateway 00001122 gcn1 00000026 get_bs_job 00001F43 get_bs_str 00000E2E get_bs_str2 00000E32 get_dgram 00000311 get_dgram9 00000321 get_initial_value 00000BD7 get_ip_address 00000C6D get_ip_address0 00000C75 get_lcdmes 00000DA0 get_mac0 000006C1 get_nextbyte 00000B00 get_nextbyte9 00000B13 get_packet 0000013F get_packet0 00000166 get_packet10 000001AD get_packet2 000001CB get_packet20 000001BE get_port_no 00000C87 get_port_no0 00000C8F get_remain 00000250 get_remain0 00000250 get_remain20 00000266 get_remain30 00000279 get_remain9 0000027A get_short_mes 000005AE getadtable 00001F18 getascii 0000006E getbitpos 0000057D getbitpos0 00000584 getbitpos9 00000588 getmac 000006B4 getmes_wk 00000075 getmes_wk1 00000076 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 168 SYMBOL TABLE LABEL VALUE getnetmask 00001144 getterm 00000EC8 getterm0 00000EC9 getterm1 00000ED4 http_port 000000B3 http_port1 000000B4 icmp 0000027C icmp10 0000029D icmp19 000002A4 icmp20 000002BF icmp_code 0000004E icmp_header 0000004D icmp_mes 00000051 icmp_sum 0000004F icmp_type 0000004D ident 000000AE ident1 000000AF inc_ack_no 000000B3 inc_seq_no 00000087 ind 00000079 init_lcd 00000CA2 init_nic 00000687 init_on_ether0 00000C67 init_socket 00000C5A init_socket0 00000C5F initial_values 00000B99 initial_values0 00000B9C initial_values_tag 00000B97 initialize 0000066B int1_1 0000003E int2 00000048 int_next1 00000028 int_next2 00000018 int_tmr1 0000001B int_tmr2 00000022 interrupt 00000004 ip_common 000007C5 ip_dest 00000049 ip_dest1 0000004A ip_dest2 0000004B ip_dest3 0000004C ip_flagment 0000003F ip_flagment1 00000040 ip_get_packet2 00000230 ip_get_packet9 00000240 ip_header 00000039 ip_ident 0000003D ip_ident1 0000003E ip_length 0000003B ip_length1 0000003C ip_proto 00000042 ip_src 00000045 ip_src1 00000046 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 169 SYMBOL TABLE LABEL VALUE ip_src2 00000047 ip_src3 00000048 ip_sum 00000043 ip_sum1 00000044 ip_tos 0000003A ip_ttl 00000041 ip_ver_len 00000039 job_CLOSE_WAIT 00000402 job_ESTAB 000003ED job_FIN_WAIT_1 000003DB job_FIN_WAIT_2 000003E3 job_SYN_RCVD 000003CE lcd_mes 00001300 lcd_port 000000B5 lcd_port1 000000B6 lcd_skip 00000CD8 main 00000103 main0 00000125 main9 0000017E main90 000008C5 main99 0000013A mes_high 00001F34 mes_in 00001F3B mes_low 00001F2D mes_out 00001F3F modify_pin 00000BA6 modify_pin0 00000BC3 modify_pin_h 00000BD4 mul10 00000075 mul101 00000076 multiply_added 00000B7C mymac 000000A4 mymac1 000000A5 mymac2 000000A6 mymac3 000000A7 mymac4 000000A8 mymac5 000000A9 ne_cn_h 000000E1 ne_cn_l 000000E0 ne_header 000000DE ne_next 000000DF ne_stat 000000DE next_seq_no 00000080 no_socket 000005D6 null 000000F0 on_ether 00000190 on_ether1 00000191 on_ether2 00000192 on_ether3 00000193 on_ether4 00000194 on_ether5 00000195 on_flow 0000019D on_ip 00000196 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 170 SYMBOL TABLE LABEL VALUE on_ip1 00000197 on_ip2 00000198 on_ip3 00000199 on_port 0000019A on_port1 0000019A on_rate 0000019C overflow 000000E7 overflow2 000000E7 packet1 00000154 packet11 00000190 para_get_adc 0000086F para_get_aqu0 00000875 para_get_status 0000087F para_port 000000B7 para_port1 000000B8 para_set_common 0000083A para_set_common0 0000083F para_set_common9 00000847 para_set_high 00000831 para_set_low 00000835 para_set_rbpu 00000865 para_set_rbpu1 0000086C para_set_rbpu9 0000086D para_set_whole 0000084B para_set_whole0 00000851 parse4 00000B44 parse9 00000426 parse91_tag 00000B78 parse9_tag 00000B79 parse_cgi 00000B15 parse_cgi0 00000B4F parse_cgi2 00000B72 parse_cgi3 00000B74 parse_cgi_tag 0000042B pclath_save 00000071 ping 00000285 prepare_ether 0000079C prepare_ether1 0000079E prepare_ether2 00000799 prepare_ip 000007AE print_dec 00000D47 print_hex 00000CE4 print_ip 00000FD4 proto 00000037 ptr 0000002A put_232_port 00000F39 put_bs_err 00000EDB put_bs_text 00000EDF put_bs_text9 00000F04 put_decimal 00000D21 put_decimal0 00000D2D put_decimal1 00000D35 put_decimal16 00000D14 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 171 SYMBOL TABLE LABEL VALUE put_decimal2 00000D3B put_decimal32 00000D02 put_decimal_ent 00000D2C put_gateway_address 00000F4E put_hexadecimal 00000F8F put_http_port 00000F2D put_io_port 00000F35 put_ip_address 00000F47 put_lcd_port 00000F31 put_mac_address 00000FA0 put_netmask 00000F4A put_number 00000F62 put_number0 00000F5D put_number16 00000F7B put_number_fr 00000F75 put_number_fr0 00000F70 put_ptop 00000F43 put_send_packet 00000F1F put_short_mes0 000005BB put_short_mes10 000005BA put_this_ip 00000F3D put_version 00000F52 putcom16 00000F3C putcom32 00000F55 puttty 00000F59 rec_over 00000052 receive232c 0000013B recv_fin 000003FC recv_rst 000003D8 recv_syn 000005D8 remote_adr 0000002D remote_adr1 0000002E remote_len 0000002F remote_len1 00000030 remote_read 00000711 remote_write 000006FB reset_nic 00000677 reset_nic0 00000681 retry 00000789 ring1_1 00000DE3 save_cn 000000E1 save_fsr 00000074 save_line 000000E0 search_socket 0000099A search_socket0 0000099F search_socket9 000009CA send_ack 0000044F send_common 00000451 send_fin 0000044C send_mes 0000048B send_mes0 000004C4 send_mes9 000004F8 send_mes_foot 000004F8 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 172 SYMBOL TABLE LABEL VALUE send_mes_foot1 00000526 send_mes_foot2 00000516 send_mes_foot3 0000051B send_mes_head 0000048F send_rst 00000449 seq_no 000000AA seq_no1 000000AB seq_no2 000000AC seq_no3 000000AD ser_arp 0000091C ser_get_status 00000938 ser_register 00001000 ser_register0 00001006 ser_register9 00001065 ser_register_tag 0000098D ser_transmit 00000971 ser_transmit0 00000975 ser_transmit1 00000983 ser_transmit9 0000098A ser_unregister 00001068 ser_unregister0 00001070 ser_unregister_tag 00000997 serial_port 000000B9 serial_port1 000000BA serial_tx 0000114E serial_tx0 000011B3 serial_tx1 000011E9 serial_tx2 000011E1 set_checksum 000007B8 setmac 000006CB setmac0 000006D4 skb 000001A0 skip_space 00000E6F socket_entry 000009D1 socket_entry_99 00000A13 start 00000BDB start1 00000C1B start2 00000C2C state 00000038 state1 000003A6 state12 000003BE state2 000003C0 state_table 000003C5 status_save 00000072 str_config 00001F6E str_config2 00001F75 str_gate 00001F9A str_gate2 00001F9F str_help 00001F88 str_help2 00001F8D str_http 00001FA1 str_http2 00001FA6 str_init 00001F78 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 173 SYMBOL TABLE LABEL VALUE str_init2 00001F83 str_ip 00001F8F str_ip2 00001F92 str_lcd 00001FA8 str_lcd2 00001FAC str_net 00001F94 str_net2 00001F98 str_para 00001FAE str_para2 00001FB7 str_serial 00001FB9 str_serial2 00001FC0 sum 00000027 sum1 00000028 tcp 00000381 tcp9 0000038F tcp_ 0000005F tcp_1 00000060 tcp_ack_no 00000055 tcp_ack_no1 00000056 tcp_ack_no2 00000057 tcp_ack_no3 00000058 tcp_flags 0000005A tcp_header 0000004D tcp_header_size 00000059 tcp_seq_no 00000051 tcp_seq_no1 00000052 tcp_seq_no2 00000053 tcp_seq_no3 00000054 tcp_src_port 0000004D tcp_src_port1 0000004E tcp_sum 0000005D tcp_sum1 0000005D tcp_tar_port 0000004F tcp_tar_port1 00000050 tcp_window 0000005B tcp_window1 0000005C tcp_www 00000390 this_ip 000000A0 this_ip1 000000A1 this_ip2 000000A2 this_ip3 000000A3 timer 000000B0 timer_cn 000000B1 tmp 00000024 trans100 00000790 transmit 00000789 transmit0 0000077A transmit2_0 00000783 transmit9 00000798 transmit_60bytes 000008ED transmit_nbytes 00000777 transmit_nbytes2 00000780 transmit_this_ip 00000774 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 174 SYMBOL TABLE LABEL VALUE transmitted 0000019E tx100 000011C1 udp 000002C3 udp_1 000002E3 udp_2 000002EE udp_3 000002F9 udp_4 00000304 udp_data 00000055 udp_data1 00000056 udp_data2 00000057 udp_data3 00000058 udp_data4 00000059 udp_data5 0000005A udp_data6 0000005B udp_data7 0000005C udp_header 0000004D udp_lcd 000011F7 udp_lcd9 000011F5 udp_lcd91 0000123C udp_lcd_0 00001228 udp_lcd_tag 00000305 udp_length 00000051 udp_length1 00000052 udp_parallel 00000820 udp_parallel_tag 00000308 udp_serial 000008FC udp_serial_tag 0000030E udp_src_port 0000004D udp_src_port1 0000004E udp_sum 00000053 udp_sum1 00000054 udp_tar_port 0000004F udp_tar_port1 00000050 use 00000025 val 00000032 val1 00000033 val2 00000034 val3 00000035 val_cn 00000037 val_m 00000036 w_save 00000070 wait_cn 00000020 wait_cn2 00000021 wait_ms 00000CF0 wait_ms0 00000CF0 wait_ms1 00000CF2 wait_us 00000CFE wait_us0 00000CFE wk 0000007D wk1 0000007E wk2 0000007F write_eeprom 00000AE5 write_eeprom0 00000AE9 MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 175 SYMBOL TABLE LABEL VALUE write_eeprom16 00000ADA write_lcd4 00000CDC write_lcd8 00000CC8 リングバッファ初期化 0000066E MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : XXX-XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 01C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0240 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0280 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 02C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 03C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0400 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0440 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0480 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 04C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0500 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0540 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0580 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 05C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0600 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0640 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0680 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 06C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0700 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0740 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0780 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 07C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXX----- ---------------- 0800 : ---------------- ---------------- XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0840 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0880 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 08C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0900 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0940 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 176 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0980 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 09C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0A00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0A40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0A80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0AC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0B00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0B40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0B80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0BC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0C00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0C40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0C80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0CC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0D00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0D40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0D80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0DC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0E00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0E40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0E80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0EC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0F00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0F40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0F80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0FC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXX-- ---------------- 1000 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 10C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 11C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1240 : X--------------- ---------------- ---------------- ---------------- 1300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 13C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXX---- 1400 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1440 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1480 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 14C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1500 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXX--- ---------------- ---------------- 1700 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX MPASM 02.40 Released V12.ASM 8-22-2003 19:56:18 PAGE 177 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 1740 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1780 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 17C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1800 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1840 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1880 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 18C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1900 : XXXXXXXXXXX----- ---------------- ---------------- ---------------- 1A00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1A40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1A80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1AC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1B00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1B40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1B80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXX-- ---------------- ---------------- 1D00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1D40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXX-------- 1F00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1F40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1F80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 1FC0 : XX-------------- ---------------- ---------------- ---------------- 2000 : -------X-------- ---------------- ---------------- ---------------- 2100 : XXXXXXXXXXXXXXXX XXXXXXXX-------- ---------------- ---------------- All other memory blocks unused. Program Memory Words Used: 6389 Program Memory Words Free: 1803 Errors : 0 Warnings : 3 reported, 0 suppressed Messages : 432 reported, 0 suppressed