diff --git a/client/basic/bails.d64 b/client/basic/bails.d64 index e998efc..a3e391c 100644 Binary files a/client/basic/bails.d64 and b/client/basic/bails.d64 differ diff --git a/client/basic/kipperbas.d64 b/client/basic/kipperbas.d64 index dc7eb85..c173026 100644 Binary files a/client/basic/kipperbas.d64 and b/client/basic/kipperbas.d64 differ diff --git a/client/ip65/tcp.s b/client/ip65/tcp.s index 18d1261..9a32667 100644 --- a/client/ip65/tcp.s +++ b/client/ip65/tcp.s @@ -29,7 +29,7 @@ MAX_TCP_PACKETS_SENT=8 ;timeout after sending 8 messages will be about 7 sec .export tcp_send_keep_alive .export tcp_connect_remote_port .export tcp_remote_ip - +.export tcp_state .export tcp_inbound_data_ptr .export tcp_inbound_data_length diff --git a/client/v1541/Makefile b/client/v1541/Makefile index 2f7d4d2..0c1b08c 100644 --- a/client/v1541/Makefile +++ b/client/v1541/Makefile @@ -15,7 +15,7 @@ IP65LIB=../ip65/ip65_tcp.lib C64PROGLIB=../drivers/c64prog.lib -all: v1541.prg v1541.d64 +all: v1541.prg %.o: %.s $(INCFILES) diff --git a/client/v1541/v1541.cfg b/client/v1541/v1541.cfg index e81268c..0697bf8 100644 --- a/client/v1541/v1541.cfg +++ b/client/v1541/v1541.cfg @@ -17,9 +17,8 @@ MEMORY { DATA: load = STARTRAM, run=UNDERBASIC, type = rw, define = yes; IP65_DEFAULTS: load = STARTRAM, run= HIRAM, type = ro, define = yes; CODESTUB: load STARTRAM, run= HIRAM, type = rw, define = yes; - SELF_MODIFIED_CODE: load = STARTRAM, run=HIRAM, type = rw,define = yes; BSS: load = HIRAM, type = bss; - TCP_VARS: load = HIRAM, type = bss; + TCP_VARS: load = UNDERBASIC, type = bss; } diff --git a/client/v1541/v1541.map b/client/v1541/v1541.map index f785e70..f31b178 100644 --- a/client/v1541/v1541.map +++ b/client/v1541/v1541.map @@ -1,605 +1,668 @@ -Modules list: -------------- -v1541.o: - CODE Offs = 000000 Size = 00001D - RODATA Offs = 000000 Size = 000000 - BSS Offs = 000000 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 - STARTUP Offs = 000000 Size = 000108 - CODESTUB Offs = 000000 Size = 00001D -../ip65/ip65_tcp.lib(copymem.o): - CODE Offs = 00001D Size = 000027 - RODATA Offs = 000000 Size = 000000 - BSS Offs = 000000 Size = 000001 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 - IP65ZP Offs = 000000 Size = 000004 -../ip65/ip65_tcp.lib(config.o): - CODE Offs = 000044 Size = 00001D - RODATA Offs = 000000 Size = 000000 - BSS Offs = 000001 Size = 00001F - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 - IP65_DEFAULTS Offs = 000000 Size = 00001F -../ip65/ip65_tcp.lib(timer.o): - CODE Offs = 000061 Size = 000018 - RODATA Offs = 000000 Size = 000000 - BSS Offs = 000020 Size = 000002 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -../ip65/ip65_tcp.lib(cs8900a.o): - CODE Offs = 000079 Size = 000151 - RODATA Offs = 000000 Size = 000000 - BSS Offs = 000022 Size = 000BE0 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 - IP65ZP Offs = 000004 Size = 000002 -../ip65/ip65_tcp.lib(eth.o): - CODE Offs = 0001CA Size = 000020 - RODATA Offs = 000000 Size = 000000 - BSS Offs = 000C02 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -../ip65/ip65_tcp.lib(arp.o): - CODE Offs = 0001EA Size = 000202 - RODATA Offs = 000000 Size = 000000 - BSS Offs = 000C02 Size = 000066 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 - IP65ZP Offs = 000006 Size = 000002 -../ip65/ip65_tcp.lib(udp.o): - CODE Offs = 0003EC Size = 00017C - RODATA Offs = 000000 Size = 000000 - BSS Offs = 000C68 Size = 00001F - DATA Offs = 000000 Size = 000003 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -../ip65/ip65_tcp.lib(ip65.o): - CODE Offs = 000568 Size = 00005A - RODATA Offs = 000000 Size = 000000 - BSS Offs = 000C87 Size = 000004 - DATA Offs = 000003 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -../ip65/ip65_tcp.lib(dhcp.o): - CODE Offs = 0005C2 Size = 00028A - RODATA Offs = 000000 Size = 000000 - BSS Offs = 000C8B Size = 000005 - DATA Offs = 000003 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -../ip65/ip65_tcp.lib(output_buffer.o): - CODE Offs = 00084C Size = 000000 - RODATA Offs = 000000 Size = 000000 - BSS Offs = 000C90 Size = 000208 - DATA Offs = 000003 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -../ip65/ip65_tcp.lib(arithmetic.o): - CODE Offs = 00084C Size = 00009D - RODATA Offs = 000000 Size = 000000 - BSS Offs = 000E98 Size = 000002 - DATA Offs = 000003 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -../ip65/ip65_tcp.lib(ip.o): - CODE Offs = 0008E9 Size = 000212 - RODATA Offs = 000000 Size = 000000 - BSS Offs = 000E9A Size = 00000C - DATA Offs = 000003 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 - IP65ZP Offs = 000008 Size = 000002 -../ip65/ip65_tcp.lib(tcp.o): - CODE Offs = 000AFB Size = 000664 - RODATA Offs = 000000 Size = 000000 - BSS Offs = 000EA6 Size = 000000 - DATA Offs = 000003 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 - TCP_VARS Offs = 000000 Size = 000041 -../ip65/ip65_tcp.lib(icmp.o): - CODE Offs = 00115F Size = 000230 - RODATA Offs = 000000 Size = 000000 - BSS Offs = 000EA6 Size = 000009 - DATA Offs = 000003 Size = 000003 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 - TCP_VARS Offs = 000041 Size = 000008 -../drivers/c64prog.lib(c64print.o): - CODE Offs = 00138F Size = 000058 - RODATA Offs = 000000 Size = 000000 - BSS Offs = 000EAF Size = 000001 - DATA Offs = 000006 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -../drivers/c64prog.lib(rr-net.o): - CODE Offs = 0013E7 Size = 000009 - RODATA Offs = 000000 Size = 000007 - BSS Offs = 000EB0 Size = 000000 - DATA Offs = 000006 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -../drivers/c64prog.lib(c64timer.o): - CODE Offs = 0013F0 Size = 000033 - RODATA Offs = 000007 Size = 000000 - BSS Offs = 000EB0 Size = 000000 - DATA Offs = 000006 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -../drivers/c64prog.lib(c64inputs.o): - CODE Offs = 001423 Size = 0000DA - RODATA Offs = 000007 Size = 000000 - BSS Offs = 000EB0 Size = 00002D - DATA Offs = 000006 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 - - -Segment list: -------------- -Name Start End Size --------------------------------------------- -NULL 000000 000000 000000 -IP65ZP 0000A3 0000AC 00000A -ZEROPAGE 0000AD 0000AD 000000 -STARTUP 0007FF 000906 000108 -CODE 00A000 00B4FC 0014FD -RODATA 00B4FD 00B503 000007 -DATA 00B504 00B509 000006 -IP65_DEFAULTS 00C000 00C01E 00001F -CODESTUB 00C01F 00C03B 00001D -BSS 00C03C 00CF18 000EDD -TCP_VARS 00CF19 00CF61 000049 - - -Exports list: -------------- -__CODESTUB_LOAD__ 001E30 RLA __CODESTUB_RUN__ 00C01F RLA -__CODESTUB_SIZE__ 00001D REA __CODE_LOAD__ 000907 RLA -__CODE_RUN__ 00A000 RLA __CODE_SIZE__ 0014FD REA -__DATA_LOAD__ 001E0B RLA __DATA_RUN__ 00B504 RLA -__DATA_SIZE__ 000006 REA __IP65_DEFAULTS_LOAD__ 001E11 RLA -__IP65_DEFAULTS_RUN__ 00C000 RLA __IP65_DEFAULTS_SIZE__ 00001F REA -__RODATA_LOAD__ 001E04 RLA __RODATA_RUN__ 00B4FD RLA -__RODATA_SIZE__ 000007 REA __UNDERBASIC_LAST__ 00B50A LA -__UNDERBASIC_SIZE__ 002000 EA __UNDERBASIC_START__ 00A000 LA -ac_size 000008 EZ acc16 0000A3 REZ -acc32 0000A3 REZ add_16_32 00A8A5 RLA -add_32_32 00A886 LA arp_add 00A376 LA -arp_cache 00CC49 LA arp_calculate_gateway_mask 00A1F4 RLA -arp_init 00A1EA RLA arp_ip 00CC45 RLA -arp_lookup 00A219 RLA arp_mac 00CC3F RLA -arp_process 00A2F8 RLA beep 00B399 LA -cfg_default_drive 00C05B LA cfg_dns 00C04F RLA -cfg_gateway 00C04B RLA cfg_get_configuration_ptr 00A044 LA -cfg_init 00A04A RLA cfg_ip 00C043 RLA -cfg_mac 00C03D RLA cfg_mac_default 00C000 LA -cfg_netmask 00C047 RLA cfg_tftp_server 00C057 LA -check_for_abort_key 00B432 RLA cls 00B394 LA -cmp_16_16 00A868 RLA cmp_32_32 00A84C RLA -copy_dest 0000A5 RLZ copy_src 0000A3 RLZ -copymem 00A01D RLA cs_driver_name 00B4FD LA -cs_init 00B3E7 RLA cs_packet_data 00DE04 REA -cs_packet_page 00DE02 REA cs_rxtx_data 00DE08 REA -cs_tx_cmd 00DE0C REA cs_tx_len 00DE0E REA -dhcp_init 00A5C2 RLA dhcp_server 00C053 RLA -dhcp_state 00CCC7 LA eth_data 00000E REZ -eth_dest 000000 REZ eth_init 00A079 RLA -eth_inp 00C060 RLA eth_inp_len 00C05E RLA -eth_outp 00C650 RLA eth_outp_len 00C64E RLA -eth_proto_arp 000006 REZ eth_proto_ip 000000 REZ -eth_rx 00A0D2 RLA eth_set_broadcast_dest 00A1CA RLA -eth_set_my_mac_src 00A1D5 RLA eth_set_proto 00A1E1 RLA -eth_src 000006 REZ eth_tx 00A133 RLA -eth_type 00000C EZ filter_dns 00B4D6 LA -filter_ip 00B4F1 LA filter_number 00B4F2 LA -filter_text 00B4C7 LA filter_url 00B4CF LA -get_filtered_input 00B447 LA get_key 00B423 LA -get_key_if_available 00F142 EA get_key_ip65 00B429 LA -icmp_add_listener 00B20B LA icmp_callback 00CEE2 LA -icmp_cksum 000002 EZ icmp_code 000001 EZ -icmp_data 000004 EZ icmp_echo_ip 00CF5A LA -icmp_init 00B15F RLA icmp_inp 00C082 EA -icmp_outp 00C672 EA icmp_ping 00B2DC LA -icmp_process 00B165 RLA icmp_remove_listener 00B237 LA -icmp_send_echo 00B26C LA icmp_type 000000 EZ -ip65_ctr 00CCC3 LA ip65_ctr_arp 00CCC4 LA -ip65_ctr_ip 00CCC5 LA ip65_error 00CCC6 RLA -ip65_init 00A587 LA ip65_process 00A5A0 RLA -ip65_random_word 00A568 RLA ip_broadcast 00CEDA RLA -ip_calc_cksum 00AA57 RLA ip_cksum_ptr 0000AB RLZ -ip_create_packet 00A9C3 RLA ip_data 000014 REZ -ip_dest 000010 REZ ip_frag 000006 EZ -ip_header_cksum 00000A REZ ip_id 000004 REZ -ip_init 00A8E9 RLA ip_inp 00C06E REA -ip_len 000002 REZ ip_outp 00C65E REA -ip_process 00A901 RLA ip_proto 000009 REZ -ip_proto_icmp 000001 REZ ip_proto_tcp 000006 REZ -ip_proto_udp 000011 REZ ip_send 00A9F0 RLA -ip_src 00000C REZ ip_tos 000001 EZ -ip_ttl 000008 EZ ip_ver_ihl 000000 EZ -mul_8_16 00A8C1 LA op32 0000A5 REZ -output_buffer 00CCCC RLA print_a 00FFD2 REA -print_a_inverse 00B3D8 LA print_cr 00B38F LA -screen_current_col 0000D3 EZ screen_current_row 0000D6 EZ -sub_16_16 00A870 RLA tcp_callback 00CF32 LA -tcp_close 00AC0F LA tcp_connect 00AB3D LA -tcp_connect_ip 00CF53 LA tcp_connect_remote_port 00CF51 LA -tcp_inbound_data_length 00CF39 LA tcp_inbound_data_ptr 00CF37 LA -tcp_init 00AAFB RLA tcp_listen 00AAFF LA -tcp_process 00AEED RLA tcp_remote_ip 00CF1E LA -tcp_send 00ACD6 LA tcp_send_data_len 00CF30 LA -tcp_send_keep_alive 00B11E EA tcp_send_string 00ACAE LA -timer_init 00B3F0 RLA timer_read 00B417 RLA -timer_timeout 00A061 RLA udp_add_listener 00A424 RLA -udp_callback 00CCA4 RLA udp_cksum 000006 EZ -udp_data 000008 REZ udp_dest_port 000002 EZ -udp_init 00A3EC RLA udp_inp 00C082 REA -udp_len 000004 EZ udp_outp 00C672 EA -udp_process 00A3F2 RLA udp_remove_listener 00A46B RLA -udp_send 00A4B7 RLA udp_send_dest 00CCA6 RLA -udp_send_dest_port 00CCAC RLA udp_send_len 00CCAE RLA -udp_send_src_port 00CCAA RLA udp_src_port 000000 EZ - - - -Imports list: -------------- -__CODESTUB_LOAD__ ([linker generated]): - v1541.o v1541.s(37) -__CODESTUB_RUN__ ([linker generated]): - v1541.o v1541.s(38) -__CODESTUB_SIZE__ ([linker generated]): - v1541.o v1541.s(39) -__CODE_LOAD__ ([linker generated]): - v1541.o v1541.s(21) -__CODE_RUN__ ([linker generated]): - v1541.o v1541.s(22) -__CODE_SIZE__ ([linker generated]): - v1541.o v1541.s(23) -__DATA_LOAD__ ([linker generated]): - v1541.o v1541.s(29) -__DATA_RUN__ ([linker generated]): - v1541.o v1541.s(30) -__DATA_SIZE__ ([linker generated]): - v1541.o v1541.s(31) -__IP65_DEFAULTS_LOAD__ ([linker generated]): - v1541.o v1541.s(33) -__IP65_DEFAULTS_RUN__ ([linker generated]): - v1541.o v1541.s(34) -__IP65_DEFAULTS_SIZE__ ([linker generated]): - v1541.o v1541.s(35) -__RODATA_LOAD__ ([linker generated]): - v1541.o v1541.s(25) -__RODATA_RUN__ ([linker generated]): - v1541.o v1541.s(26) -__RODATA_SIZE__ ([linker generated]): - v1541.o v1541.s(27) -__UNDERBASIC_LAST__ ([linker generated]): -__UNDERBASIC_SIZE__ ([linker generated]): -__UNDERBASIC_START__ ([linker generated]): -ac_size (arp.o): -acc16 (arithmetic.o): - tcp.o tcp.s(50) -acc32 (arithmetic.o): - tcp.o tcp.s(48) -add_16_32 (arithmetic.o): - tcp.o tcp.s(53) -add_32_32 (arithmetic.o): -arp_add (arp.o): -arp_cache (arp.o): -arp_calculate_gateway_mask (arp.o): - dhcp.o dhcp.s(29) -arp_init (arp.o): - ip65.o ip65.s(23) -arp_ip (arp.o): - ip.o ip.s(48) -arp_lookup (arp.o): - ip.o ip.s(46) -arp_mac (arp.o): - ip.o ip.s(47) -arp_process (arp.o): - ip65.o ip65.s(32) -beep (c64print.o): -cfg_default_drive (config.o): -cfg_dns (config.o): - dhcp.o dhcp.s(27) -cfg_gateway (config.o): - arp.o arp.s(28) - dhcp.o dhcp.s(26) -cfg_get_configuration_ptr (config.o): -cfg_init (config.o): - ip65.o ip65.s(19) -cfg_ip (config.o): - tcp.o tcp.s(74) - ip.o ip.s(30) - udp.o udp.s(55) - arp.o arp.s(26) - dhcp.o dhcp.s(24) -cfg_mac (config.o): - eth.o eth.s(14) - cs8900a.o cs8900a.s(35) - ip.o ip.s(29) - arp.o arp.s(25) - dhcp.o dhcp.s(23) -cfg_mac_default (config.o): -cfg_netmask (config.o): - arp.o arp.s(27) - dhcp.o dhcp.s(25) -cfg_tftp_server (config.o): -check_for_abort_key (c64inputs.o): - tcp.o tcp.s(44) - dhcp.o dhcp.s(49) -cls (c64print.o): -cmp_16_16 (arithmetic.o): - tcp.o tcp.s(55) -cmp_32_32 (arithmetic.o): - tcp.o tcp.s(54) -copy_dest (copymem.o): - arithmetic.o arithmetic.s(7) - tcp.o tcp.s(72) - udp.o udp.s(53) - config.o config.s(19) - v1541.o v1541.s(15) -copy_src (copymem.o): - c64inputs.o c64inputs.s(11) - arithmetic.o arithmetic.s(6) - tcp.o tcp.s(71) - ip.o ip.s(60) - udp.o udp.s(52) - config.o config.s(18) - v1541.o v1541.s(14) -copymem (copymem.o): - tcp.o tcp.s(70) - udp.o udp.s(51) - config.o config.s(17) -cs_driver_name (rr-net.o): -cs_init (rr-net.o): - cs8900a.o cs8900a.s(28) -cs_packet_data (rr-net.o): - cs8900a.o cs8900a.s(30) -cs_packet_page (rr-net.o): - cs8900a.o cs8900a.s(29) -cs_rxtx_data (rr-net.o): - cs8900a.o cs8900a.s(31) -cs_tx_cmd (rr-net.o): - cs8900a.o cs8900a.s(32) -cs_tx_len (rr-net.o): - cs8900a.o cs8900a.s(33) -dhcp_init (dhcp.o): - v1541.o v1541.s(9) -dhcp_server (config.o): - dhcp.o dhcp.s(19) -dhcp_state (dhcp.o): -eth_data (cs8900a.o): - ip.o ip.s(42) -eth_dest (cs8900a.o): - ip.o ip.s(39) -eth_init (cs8900a.o): - ip65.o ip65.s(21) -eth_inp (cs8900a.o): - icmp.o icmp.s(52) - ip.o ip.s(34) - ip65.o ip65.s(27) - arp.o arp.s(15) -eth_inp_len (cs8900a.o): - icmp.o icmp.s(53) - ip.o ip.s(35) -eth_outp (cs8900a.o): - eth.o eth.s(12) - icmp.o icmp.s(54) - ip.o ip.s(36) - ip65.o ip65.s(28) - arp.o arp.s(17) -eth_outp_len (cs8900a.o): - icmp.o icmp.s(55) - ip.o ip.s(37) - arp.o arp.s(18) -eth_proto_arp (eth.o): - ip65.o ip65.s(34) - arp.o arp.s(23) -eth_proto_ip (eth.o): - ip.o ip.s(43) -eth_rx (cs8900a.o): - ip65.o ip65.s(29) -eth_set_broadcast_dest (eth.o): - arp.o arp.s(20) -eth_set_my_mac_src (eth.o): - arp.o arp.s(21) -eth_set_proto (eth.o): - ip.o ip.s(33) - arp.o arp.s(22) -eth_src (cs8900a.o): - ip.o ip.s(40) -eth_tx (cs8900a.o): - icmp.o icmp.s(51) - ip.o ip.s(32) - arp.o arp.s(19) -eth_type (cs8900a.o): -filter_dns (c64inputs.o): -filter_ip (c64inputs.o): -filter_number (c64inputs.o): -filter_text (c64inputs.o): -filter_url (c64inputs.o): -get_filtered_input (c64inputs.o): -get_key (c64inputs.o): -get_key_if_available (c64inputs.o): -get_key_ip65 (c64inputs.o): -icmp_add_listener (icmp.o): -icmp_callback (icmp.o): -icmp_cksum (icmp.o): -icmp_code (icmp.o): -icmp_data (icmp.o): -icmp_echo_ip (icmp.o): -icmp_init (icmp.o): - ip.o ip.s(50) -icmp_inp (icmp.o): -icmp_outp (icmp.o): -icmp_ping (icmp.o): -icmp_process (icmp.o): - ip.o ip.s(51) -icmp_remove_listener (icmp.o): -icmp_send_echo (icmp.o): -icmp_type (icmp.o): -ip65_ctr (ip65.o): -ip65_ctr_arp (ip65.o): -ip65_ctr_ip (ip65.o): -ip65_error (ip65.o): - cs8900a.o cs8900a.s(37) - icmp.o icmp.s(33) - tcp.o tcp.s(17) - udp.o udp.s(11) - dhcp.o dhcp.s(22) -ip65_init (ip65.o): -ip65_process (ip65.o): - c64inputs.o c64inputs.s(13) - icmp.o icmp.s(32) - tcp.o tcp.s(42) - dhcp.o dhcp.s(31) -ip65_random_word (ip65.o): - tcp.o tcp.s(46) -ip_broadcast (ip.o): - icmp.o icmp.s(38) -ip_calc_cksum (ip.o): - icmp.o icmp.s(35) - tcp.o tcp.s(37) - udp.o udp.s(36) -ip_cksum_ptr (ip.o): - icmp.o icmp.s(44) - tcp.o tcp.s(60) - udp.o udp.s(41) -ip_create_packet (ip.o): - icmp.o icmp.s(40) - tcp.o tcp.s(39) - udp.o udp.s(38) -ip_data (ip.o): - icmp.o icmp.s(48) - tcp.o tcp.s(64) - udp.o udp.s(45) -ip_dest (ip.o): - icmp.o icmp.s(47) - tcp.o tcp.s(63) - udp.o udp.s(44) -ip_frag (ip.o): -ip_header_cksum (ip.o): - icmp.o icmp.s(45) -ip_id (ip.o): - tcp.o tcp.s(67) - udp.o udp.s(48) -ip_init (ip.o): - ip65.o ip65.s(24) -ip_inp (ip.o): - icmp.o icmp.s(36) - tcp.o tcp.s(40) - udp.o udp.s(39) -ip_len (ip.o): - icmp.o icmp.s(49) - tcp.o tcp.s(68) - udp.o udp.s(49) -ip_outp (ip.o): - icmp.o icmp.s(37) - tcp.o tcp.s(41) - udp.o udp.s(40) -ip_process (ip.o): - ip65.o ip65.s(31) -ip_proto (ip.o): - icmp.o icmp.s(41) - tcp.o tcp.s(65) - udp.o udp.s(46) -ip_proto_icmp (ip.o): - icmp.o icmp.s(42) -ip_proto_tcp (ip.o): - tcp.o tcp.s(66) -ip_proto_udp (ip.o): - udp.o udp.s(47) -ip_send (ip.o): - icmp.o icmp.s(39) - tcp.o tcp.s(38) - udp.o udp.s(37) -ip_src (ip.o): - icmp.o icmp.s(46) - tcp.o tcp.s(62) -ip_tos (ip.o): -ip_ttl (ip.o): -ip_ver_ihl (ip.o): -mul_8_16 (arithmetic.o): -op32 (arithmetic.o): - tcp.o tcp.s(49) -output_buffer (output_buffer.o): - dhcp.o dhcp.s(43) -print_a (c64print.o): - v1541.o v1541.s(12) -print_a_inverse (c64print.o): -print_cr (c64print.o): -screen_current_col (c64print.o): -screen_current_row (c64print.o): -sub_16_16 (arithmetic.o): - tcp.o tcp.s(56) -tcp_callback (tcp.o): -tcp_close (tcp.o): -tcp_connect (tcp.o): -tcp_connect_ip (tcp.o): -tcp_connect_remote_port (tcp.o): -tcp_inbound_data_length (tcp.o): -tcp_inbound_data_ptr (tcp.o): -tcp_init (tcp.o): - ip.o ip.s(57) -tcp_listen (tcp.o): -tcp_process (tcp.o): - ip.o ip.s(58) -tcp_remote_ip (tcp.o): -tcp_send (tcp.o): -tcp_send_data_len (tcp.o): -tcp_send_keep_alive (tcp.o): -tcp_send_string (tcp.o): -timer_init (c64timer.o): - ip65.o ip65.s(22) -timer_read (c64timer.o): - timer.o timer.s(13) - icmp.o icmp.s(56) - tcp.o tcp.s(45) - ip65.o ip65.s(25) - arp.o arp.s(30) - dhcp.o dhcp.s(50) -timer_timeout (timer.o): - icmp.o icmp.s(57) - arp.o arp.s(31) -udp_add_listener (udp.o): - dhcp.o dhcp.s(33) -udp_callback (udp.o): - dhcp.o dhcp.s(36) -udp_cksum (udp.o): -udp_data (udp.o): - dhcp.o dhcp.s(41) -udp_dest_port (udp.o): -udp_init (udp.o): - ip.o ip.s(53) -udp_inp (udp.o): - dhcp.o dhcp.s(39) -udp_len (udp.o): -udp_outp (udp.o): -udp_process (udp.o): - ip.o ip.s(54) -udp_remove_listener (udp.o): - dhcp.o dhcp.s(34) -udp_send (udp.o): - dhcp.o dhcp.s(37) -udp_send_dest (udp.o): - dhcp.o dhcp.s(45) -udp_send_dest_port (udp.o): - dhcp.o dhcp.s(47) -udp_send_len (udp.o): - dhcp.o dhcp.s(48) -udp_send_src_port (udp.o): - dhcp.o dhcp.s(46) -udp_src_port (udp.o): - +Modules list: +------------- +v1541.o: + CODE Offs = 000000 Size = 00015C + RODATA Offs = 000000 Size = 000000 + BSS Offs = 000000 Size = 000000 + DATA Offs = 000000 Size = 000027 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 + STARTUP Offs = 000000 Size = 000243 + CODESTUB Offs = 000000 Size = 000037 + TCP_VARS Offs = 000000 Size = 000646 +../ip65/ip65_tcp.lib(copymem.o): + CODE Offs = 00015C Size = 000027 + RODATA Offs = 000000 Size = 000000 + BSS Offs = 000000 Size = 000001 + DATA Offs = 000027 Size = 000000 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 + IP65ZP Offs = 000000 Size = 000004 +../ip65/ip65_tcp.lib(config.o): + CODE Offs = 000183 Size = 00001D + RODATA Offs = 000000 Size = 000000 + BSS Offs = 000001 Size = 00001F + DATA Offs = 000027 Size = 000000 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 + IP65_DEFAULTS Offs = 000000 Size = 00001F +../ip65/ip65_tcp.lib(timer.o): + CODE Offs = 0001A0 Size = 000018 + RODATA Offs = 000000 Size = 000000 + BSS Offs = 000020 Size = 000002 + DATA Offs = 000027 Size = 000000 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 +../ip65/ip65_tcp.lib(cs8900a.o): + CODE Offs = 0001B8 Size = 000151 + RODATA Offs = 000000 Size = 000000 + BSS Offs = 000022 Size = 000BE0 + DATA Offs = 000027 Size = 000000 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 + IP65ZP Offs = 000004 Size = 000002 +../ip65/ip65_tcp.lib(eth.o): + CODE Offs = 000309 Size = 000020 + RODATA Offs = 000000 Size = 000000 + BSS Offs = 000C02 Size = 000000 + DATA Offs = 000027 Size = 000000 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 +../ip65/ip65_tcp.lib(arp.o): + CODE Offs = 000329 Size = 000202 + RODATA Offs = 000000 Size = 000000 + BSS Offs = 000C02 Size = 000066 + DATA Offs = 000027 Size = 000000 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 + IP65ZP Offs = 000006 Size = 000002 +../ip65/ip65_tcp.lib(udp.o): + CODE Offs = 00052B Size = 00017C + RODATA Offs = 000000 Size = 000000 + BSS Offs = 000C68 Size = 00001F + DATA Offs = 000027 Size = 000003 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 +../ip65/ip65_tcp.lib(ip65.o): + CODE Offs = 0006A7 Size = 00005A + RODATA Offs = 000000 Size = 000000 + BSS Offs = 000C87 Size = 000004 + DATA Offs = 00002A Size = 000000 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 +../ip65/ip65_tcp.lib(dhcp.o): + CODE Offs = 000701 Size = 00028A + RODATA Offs = 000000 Size = 000000 + BSS Offs = 000C8B Size = 000005 + DATA Offs = 00002A Size = 000000 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 +../ip65/ip65_tcp.lib(dns.o): + CODE Offs = 00098B Size = 000271 + RODATA Offs = 000000 Size = 000000 + BSS Offs = 000C90 Size = 000093 + DATA Offs = 00002A Size = 000000 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 + IP65ZP Offs = 000008 Size = 000002 +../ip65/ip65_tcp.lib(dottedquad.o): + CODE Offs = 000BFC Size = 00005C + RODATA Offs = 000000 Size = 000000 + BSS Offs = 000D23 Size = 000004 + DATA Offs = 00002A Size = 000004 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 +../ip65/ip65_tcp.lib(output_buffer.o): + CODE Offs = 000C58 Size = 000000 + RODATA Offs = 000000 Size = 000000 + BSS Offs = 000D27 Size = 000208 + DATA Offs = 00002E Size = 000000 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 +../ip65/ip65_tcp.lib(arithmetic.o): + CODE Offs = 000C58 Size = 00009D + RODATA Offs = 000000 Size = 000000 + BSS Offs = 000F2F Size = 000002 + DATA Offs = 00002E Size = 000000 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 +../ip65/ip65_tcp.lib(ip.o): + CODE Offs = 000CF5 Size = 000212 + RODATA Offs = 000000 Size = 000000 + BSS Offs = 000F31 Size = 00000C + DATA Offs = 00002E Size = 000000 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 + IP65ZP Offs = 00000A Size = 000002 +../ip65/ip65_tcp.lib(tcp.o): + CODE Offs = 000F07 Size = 000664 + RODATA Offs = 000000 Size = 000000 + BSS Offs = 000F3D Size = 000000 + DATA Offs = 00002E Size = 000000 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 + TCP_VARS Offs = 000646 Size = 000041 +../ip65/ip65_tcp.lib(icmp.o): + CODE Offs = 00156B Size = 000230 + RODATA Offs = 000000 Size = 000000 + BSS Offs = 000F3D Size = 000009 + DATA Offs = 00002E Size = 000003 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 + TCP_VARS Offs = 000687 Size = 000008 +../drivers/c64prog.lib(c64print.o): + CODE Offs = 00179B Size = 000058 + RODATA Offs = 000000 Size = 000000 + BSS Offs = 000F46 Size = 000001 + DATA Offs = 000031 Size = 000000 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 +../drivers/c64prog.lib(rr-net.o): + CODE Offs = 0017F3 Size = 000009 + RODATA Offs = 000000 Size = 000007 + BSS Offs = 000F47 Size = 000000 + DATA Offs = 000031 Size = 000000 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 +../drivers/c64prog.lib(c64timer.o): + CODE Offs = 0017FC Size = 000033 + RODATA Offs = 000007 Size = 000000 + BSS Offs = 000F47 Size = 000000 + DATA Offs = 000031 Size = 000000 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 +../drivers/c64prog.lib(c64inputs.o): + CODE Offs = 00182F Size = 0000DA + RODATA Offs = 000007 Size = 000000 + BSS Offs = 000F47 Size = 00002D + DATA Offs = 000031 Size = 000000 + ZEROPAGE Offs = 000000 Size = 000000 + NULL Offs = 000000 Size = 000000 + + +Segment list: +------------- +Name Start End Size +-------------------------------------------- +NULL 000000 000000 000000 +IP65ZP 0000A3 0000AE 00000C +ZEROPAGE 0000AF 0000AF 000000 +STARTUP 0007FF 000A41 000243 +CODE 00A000 00B908 001909 +RODATA 00B909 00B90F 000007 +DATA 00B910 00B940 000031 +TCP_VARS 00B941 00BFCF 00068F +IP65_DEFAULTS 00C000 00C01E 00001F +CODESTUB 00C01F 00C055 000037 +BSS 00C056 00CFC9 000F74 + + +Exports list: +------------- +__CODESTUB_LOAD__ 0023A2 RLA __CODESTUB_RUN__ 00C01F RLA +__CODESTUB_SIZE__ 000037 REA __CODE_LOAD__ 000A42 RLA +__CODE_RUN__ 00A000 RLA __CODE_SIZE__ 001909 REA +__DATA_LOAD__ 002352 RLA __DATA_RUN__ 00B910 RLA +__DATA_SIZE__ 000031 REA __IP65_DEFAULTS_LOAD__ 002383 RLA +__IP65_DEFAULTS_RUN__ 00C000 RLA __IP65_DEFAULTS_SIZE__ 00001F REA +__RODATA_LOAD__ 00234B RLA __RODATA_RUN__ 00B909 RLA +__RODATA_SIZE__ 000007 REA __UNDERBASIC_LAST__ 00BFD0 LA +__UNDERBASIC_SIZE__ 002000 EA __UNDERBASIC_START__ 00A000 LA +ac_size 000008 EZ acc16 0000A3 REZ +acc32 0000A3 REZ add_16_32 00ACB1 RLA +add_32_32 00AC92 LA arp_add 00A4B5 LA +arp_cache 00CC63 LA arp_calculate_gateway_mask 00A333 RLA +arp_init 00A329 RLA arp_ip 00CC5F RLA +arp_lookup 00A358 RLA arp_mac 00CC59 RLA +arp_process 00A437 RLA beep 00B7A5 LA +cfg_default_drive 00C075 LA cfg_dns 00C069 RLA +cfg_gateway 00C065 RLA cfg_get_configuration_ptr 00A183 LA +cfg_init 00A189 RLA cfg_ip 00C05D RLA +cfg_mac 00C057 RLA cfg_mac_default 00C000 LA +cfg_netmask 00C061 RLA cfg_tftp_server 00C071 LA +check_for_abort_key 00B83E RLA cls 00B7A0 LA +cmp_16_16 00AC74 RLA cmp_32_32 00AC58 RLA +copy_dest 0000A5 RLZ copy_src 0000A3 RLZ +copymem 00A15C RLA cs_driver_name 00B909 LA +cs_init 00B7F3 RLA cs_packet_data 00DE04 REA +cs_packet_page 00DE02 REA cs_rxtx_data 00DE08 REA +cs_tx_cmd 00DE0C REA cs_tx_len 00DE0E REA +dhcp_init 00A701 RLA dhcp_server 00C06D RLA +dhcp_state 00CCE1 LA dns_ip 00CCE7 RLA +dns_resolve 00AA08 RLA dns_set_hostname 00A98B RLA +dns_status 00CD74 LA dotted_quad_value 00CD79 RLA +eth_data 00000E REZ eth_dest 000000 REZ +eth_init 00A1B8 RLA eth_inp 00C07A RLA +eth_inp_len 00C078 RLA eth_outp 00C66A RLA +eth_outp_len 00C668 RLA eth_proto_arp 000006 REZ +eth_proto_ip 000000 REZ eth_rx 00A211 RLA +eth_set_broadcast_dest 00A309 RLA eth_set_my_mac_src 00A314 RLA +eth_set_proto 00A320 RLA eth_src 000006 REZ +eth_tx 00A272 RLA eth_type 00000C EZ +filter_dns 00B8E2 LA filter_ip 00B8FD LA +filter_number 00B8FE LA filter_text 00B8D3 LA +filter_url 00B8DB LA get_filtered_input 00B853 LA +get_key 00B82F RLA get_key_if_available 00F142 EA +get_key_ip65 00B835 LA icmp_add_listener 00B617 LA +icmp_callback 00CF93 LA icmp_cksum 000002 EZ +icmp_code 000001 EZ icmp_data 000004 EZ +icmp_echo_ip 00BFC8 LA icmp_init 00B56B RLA +icmp_inp 00C09C EA icmp_outp 00C68C EA +icmp_ping 00B6E8 LA icmp_process 00B571 RLA +icmp_remove_listener 00B643 LA icmp_send_echo 00B678 LA +icmp_type 000000 EZ ip65_ctr 00CCDD LA +ip65_ctr_arp 00CCDE LA ip65_ctr_ip 00CCDF LA +ip65_error 00CCE0 RLA ip65_init 00A6C6 RLA +ip65_process 00A6DF RLA ip65_random_word 00A6A7 RLA +ip_broadcast 00CF8B RLA ip_calc_cksum 00AE63 RLA +ip_cksum_ptr 0000AD RLZ ip_create_packet 00ADCF RLA +ip_data 000014 REZ ip_dest 000010 REZ +ip_frag 000006 EZ ip_header_cksum 00000A REZ +ip_id 000004 REZ ip_init 00ACF5 RLA +ip_inp 00C088 REA ip_len 000002 REZ +ip_outp 00C678 REA ip_process 00AD0D RLA +ip_proto 000009 REZ ip_proto_icmp 000001 REZ +ip_proto_tcp 000006 REZ ip_proto_udp 000011 REZ +ip_send 00ADFC RLA ip_src 00000C REZ +ip_tos 000001 EZ ip_ttl 000008 EZ +ip_ver_ihl 000000 EZ keep_alive_counter 00BF86 LA +mul_8_16 00ACCD LA op32 0000A5 REZ +output_buffer 00CD7D RLA parse_dotted_quad 00ABFC RLA +print_a 00FFD2 REA print_a_inverse 00B7E4 LA +print_cr 00B79B LA screen_current_col 0000D3 EZ +screen_current_row 0000D6 EZ sub_16_16 00AC7C RLA +tcp_callback 00BFA0 RLA tcp_close 00B01B LA +tcp_connect 00AF49 RLA tcp_connect_ip 00BFC1 RLA +tcp_connect_remote_port 00BFBF LA tcp_inbound_data_length 00BFA7 RLA +tcp_inbound_data_ptr 00BFA5 RLA tcp_init 00AF07 RLA +tcp_listen 00AF0B LA tcp_process 00B2F9 RLA +tcp_remote_ip 00BF8C LA tcp_send 00B0E2 LA +tcp_send_data_len 00BF9E LA tcp_send_keep_alive 00B52A REA +tcp_send_string 00B0BA RLA tcp_state 00BF87 RLA +timer_init 00B7FC RLA timer_read 00B823 RLA +timer_timeout 00A1A0 RLA udp_add_listener 00A563 RLA +udp_callback 00CCBE RLA udp_cksum 000006 EZ +udp_data 000008 REZ udp_dest_port 000002 EZ +udp_init 00A52B RLA udp_inp 00C09C REA +udp_len 000004 EZ udp_outp 00C68C EA +udp_process 00A531 RLA udp_remove_listener 00A5AA RLA +udp_send 00A5F6 RLA udp_send_dest 00CCC0 RLA +udp_send_dest_port 00CCC6 RLA udp_send_len 00CCC8 RLA +udp_send_src_port 00CCC4 RLA udp_src_port 000000 EZ + + + +Imports list: +------------- +__CODESTUB_LOAD__ ([linker generated]): + v1541.o v1541.s(60) +__CODESTUB_RUN__ ([linker generated]): + v1541.o v1541.s(61) +__CODESTUB_SIZE__ ([linker generated]): + v1541.o v1541.s(62) +__CODE_LOAD__ ([linker generated]): + v1541.o v1541.s(44) +__CODE_RUN__ ([linker generated]): + v1541.o v1541.s(45) +__CODE_SIZE__ ([linker generated]): + v1541.o v1541.s(46) +__DATA_LOAD__ ([linker generated]): + v1541.o v1541.s(52) +__DATA_RUN__ ([linker generated]): + v1541.o v1541.s(53) +__DATA_SIZE__ ([linker generated]): + v1541.o v1541.s(54) +__IP65_DEFAULTS_LOAD__ ([linker generated]): + v1541.o v1541.s(56) +__IP65_DEFAULTS_RUN__ ([linker generated]): + v1541.o v1541.s(57) +__IP65_DEFAULTS_SIZE__ ([linker generated]): + v1541.o v1541.s(58) +__RODATA_LOAD__ ([linker generated]): + v1541.o v1541.s(48) +__RODATA_RUN__ ([linker generated]): + v1541.o v1541.s(49) +__RODATA_SIZE__ ([linker generated]): + v1541.o v1541.s(50) +__UNDERBASIC_LAST__ ([linker generated]): +__UNDERBASIC_SIZE__ ([linker generated]): +__UNDERBASIC_START__ ([linker generated]): +ac_size (arp.o): +acc16 (arithmetic.o): + tcp.o tcp.s(50) +acc32 (arithmetic.o): + tcp.o tcp.s(48) +add_16_32 (arithmetic.o): + tcp.o tcp.s(53) +add_32_32 (arithmetic.o): +arp_add (arp.o): +arp_cache (arp.o): +arp_calculate_gateway_mask (arp.o): + dhcp.o dhcp.s(29) +arp_init (arp.o): + ip65.o ip65.s(23) +arp_ip (arp.o): + ip.o ip.s(48) +arp_lookup (arp.o): + ip.o ip.s(46) +arp_mac (arp.o): + ip.o ip.s(47) +arp_process (arp.o): + ip65.o ip65.s(32) +beep (c64print.o): +cfg_default_drive (config.o): +cfg_dns (config.o): + dns.o dns.s(16) + dhcp.o dhcp.s(27) +cfg_gateway (config.o): + arp.o arp.s(28) + dhcp.o dhcp.s(26) +cfg_get_configuration_ptr (config.o): +cfg_init (config.o): + ip65.o ip65.s(19) +cfg_ip (config.o): + udp.o udp.s(55) + arp.o arp.s(26) + tcp.o tcp.s(74) + ip.o ip.s(30) + dhcp.o dhcp.s(24) +cfg_mac (config.o): + arp.o arp.s(25) + eth.o eth.s(14) + cs8900a.o cs8900a.s(35) + ip.o ip.s(29) + dhcp.o dhcp.s(23) +cfg_mac_default (config.o): +cfg_netmask (config.o): + arp.o arp.s(27) + dhcp.o dhcp.s(25) +cfg_tftp_server (config.o): +check_for_abort_key (c64inputs.o): + tcp.o tcp.s(44) + dns.o dns.s(37) + dhcp.o dhcp.s(49) + v1541.o v1541.s(28) +cls (c64print.o): +cmp_16_16 (arithmetic.o): + tcp.o tcp.s(55) +cmp_32_32 (arithmetic.o): + tcp.o tcp.s(54) +copy_dest (copymem.o): + arithmetic.o arithmetic.s(7) + udp.o udp.s(53) + config.o config.s(19) + tcp.o tcp.s(72) + v1541.o v1541.s(34) +copy_src (copymem.o): + c64inputs.o c64inputs.s(11) + arithmetic.o arithmetic.s(6) + udp.o udp.s(52) + config.o config.s(18) + tcp.o tcp.s(71) + ip.o ip.s(60) + v1541.o v1541.s(33) +copymem (copymem.o): + udp.o udp.s(51) + config.o config.s(17) + tcp.o tcp.s(70) + v1541.o v1541.s(27) +cs_driver_name (rr-net.o): +cs_init (rr-net.o): + cs8900a.o cs8900a.s(28) +cs_packet_data (rr-net.o): + cs8900a.o cs8900a.s(30) +cs_packet_page (rr-net.o): + cs8900a.o cs8900a.s(29) +cs_rxtx_data (rr-net.o): + cs8900a.o cs8900a.s(31) +cs_tx_cmd (rr-net.o): + cs8900a.o cs8900a.s(32) +cs_tx_len (rr-net.o): + cs8900a.o cs8900a.s(33) +dhcp_init (dhcp.o): + v1541.o v1541.s(13) +dhcp_server (config.o): + dhcp.o dhcp.s(19) +dhcp_state (dhcp.o): +dns_ip (dns.o): + v1541.o v1541.s(17) +dns_resolve (dns.o): + v1541.o v1541.s(15) +dns_set_hostname (dns.o): + v1541.o v1541.s(16) +dns_status (dns.o): +dotted_quad_value (dottedquad.o): + dns.o dns.s(19) +eth_data (cs8900a.o): + ip.o ip.s(42) +eth_dest (cs8900a.o): + ip.o ip.s(39) +eth_init (cs8900a.o): + ip65.o ip65.s(21) +eth_inp (cs8900a.o): + arp.o arp.s(15) + icmp.o icmp.s(52) + ip.o ip.s(34) + ip65.o ip65.s(27) +eth_inp_len (cs8900a.o): + icmp.o icmp.s(53) + ip.o ip.s(35) +eth_outp (cs8900a.o): + arp.o arp.s(17) + eth.o eth.s(12) + icmp.o icmp.s(54) + ip.o ip.s(36) + ip65.o ip65.s(28) +eth_outp_len (cs8900a.o): + arp.o arp.s(18) + icmp.o icmp.s(55) + ip.o ip.s(37) +eth_proto_arp (eth.o): + arp.o arp.s(23) + ip65.o ip65.s(34) +eth_proto_ip (eth.o): + ip.o ip.s(43) +eth_rx (cs8900a.o): + ip65.o ip65.s(29) +eth_set_broadcast_dest (eth.o): + arp.o arp.s(20) +eth_set_my_mac_src (eth.o): + arp.o arp.s(21) +eth_set_proto (eth.o): + arp.o arp.s(22) + ip.o ip.s(33) +eth_src (cs8900a.o): + ip.o ip.s(40) +eth_tx (cs8900a.o): + arp.o arp.s(19) + icmp.o icmp.s(51) + ip.o ip.s(32) +eth_type (cs8900a.o): +filter_dns (c64inputs.o): +filter_ip (c64inputs.o): +filter_number (c64inputs.o): +filter_text (c64inputs.o): +filter_url (c64inputs.o): +get_filtered_input (c64inputs.o): +get_key (c64inputs.o): + v1541.o v1541.s(32) +get_key_if_available (c64inputs.o): +get_key_ip65 (c64inputs.o): +icmp_add_listener (icmp.o): +icmp_callback (icmp.o): +icmp_cksum (icmp.o): +icmp_code (icmp.o): +icmp_data (icmp.o): +icmp_echo_ip (icmp.o): +icmp_init (icmp.o): + ip.o ip.s(50) +icmp_inp (icmp.o): +icmp_outp (icmp.o): +icmp_ping (icmp.o): +icmp_process (icmp.o): + ip.o ip.s(51) +icmp_remove_listener (icmp.o): +icmp_send_echo (icmp.o): +icmp_type (icmp.o): +ip65_ctr (ip65.o): +ip65_ctr_arp (ip65.o): +ip65_ctr_ip (ip65.o): +ip65_error (ip65.o): + udp.o udp.s(11) + cs8900a.o cs8900a.s(37) + icmp.o icmp.s(33) + tcp.o tcp.s(17) + dns.o dns.s(15) + dhcp.o dhcp.s(22) + v1541.o v1541.s(25) +ip65_init (ip65.o): + v1541.o v1541.s(12) +ip65_process (ip65.o): + c64inputs.o c64inputs.s(13) + icmp.o icmp.s(32) + tcp.o tcp.s(42) + dns.o dns.s(21) + dhcp.o dhcp.s(31) + v1541.o v1541.s(24) +ip65_random_word (ip65.o): + tcp.o tcp.s(46) +ip_broadcast (ip.o): + icmp.o icmp.s(38) +ip_calc_cksum (ip.o): + udp.o udp.s(36) + icmp.o icmp.s(35) + tcp.o tcp.s(37) +ip_cksum_ptr (ip.o): + udp.o udp.s(41) + icmp.o icmp.s(44) + tcp.o tcp.s(60) +ip_create_packet (ip.o): + udp.o udp.s(38) + icmp.o icmp.s(40) + tcp.o tcp.s(39) +ip_data (ip.o): + udp.o udp.s(45) + icmp.o icmp.s(48) + tcp.o tcp.s(64) +ip_dest (ip.o): + udp.o udp.s(44) + icmp.o icmp.s(47) + tcp.o tcp.s(63) +ip_frag (ip.o): +ip_header_cksum (ip.o): + icmp.o icmp.s(45) +ip_id (ip.o): + udp.o udp.s(48) + tcp.o tcp.s(67) +ip_init (ip.o): + ip65.o ip65.s(24) +ip_inp (ip.o): + udp.o udp.s(39) + icmp.o icmp.s(36) + tcp.o tcp.s(40) +ip_len (ip.o): + udp.o udp.s(49) + icmp.o icmp.s(49) + tcp.o tcp.s(68) +ip_outp (ip.o): + udp.o udp.s(40) + icmp.o icmp.s(37) + tcp.o tcp.s(41) +ip_process (ip.o): + ip65.o ip65.s(31) +ip_proto (ip.o): + udp.o udp.s(46) + icmp.o icmp.s(41) + tcp.o tcp.s(65) +ip_proto_icmp (ip.o): + icmp.o icmp.s(42) +ip_proto_tcp (ip.o): + tcp.o tcp.s(66) +ip_proto_udp (ip.o): + udp.o udp.s(47) +ip_send (ip.o): + udp.o udp.s(37) + icmp.o icmp.s(39) + tcp.o tcp.s(38) +ip_src (ip.o): + icmp.o icmp.s(46) + tcp.o tcp.s(62) +ip_tos (ip.o): +ip_ttl (ip.o): +ip_ver_ihl (ip.o): +keep_alive_counter (v1541.o): +mul_8_16 (arithmetic.o): +op32 (arithmetic.o): + tcp.o tcp.s(49) +output_buffer (output_buffer.o): + dns.o dns.s(30) + dhcp.o dhcp.s(43) +parse_dotted_quad (dottedquad.o): + dns.o dns.s(18) +print_a (c64print.o): + v1541.o v1541.s(18) +print_a_inverse (c64print.o): +print_cr (c64print.o): +screen_current_col (c64print.o): +screen_current_row (c64print.o): +sub_16_16 (arithmetic.o): + tcp.o tcp.s(56) +tcp_callback (tcp.o): + v1541.o v1541.s(23) +tcp_close (tcp.o): +tcp_connect (tcp.o): + v1541.o v1541.s(14) +tcp_connect_ip (tcp.o): + v1541.o v1541.s(19) +tcp_connect_remote_port (tcp.o): +tcp_inbound_data_length (tcp.o): + v1541.o v1541.s(30) +tcp_inbound_data_ptr (tcp.o): + v1541.o v1541.s(29) +tcp_init (tcp.o): + ip.o ip.s(57) +tcp_listen (tcp.o): +tcp_process (tcp.o): + ip.o ip.s(58) +tcp_remote_ip (tcp.o): +tcp_send (tcp.o): +tcp_send_data_len (tcp.o): +tcp_send_keep_alive (tcp.o): + v1541.o v1541.s(31) +tcp_send_string (tcp.o): + v1541.o v1541.s(20) +tcp_state (tcp.o): + v1541.o v1541.s(26) +timer_init (c64timer.o): + ip65.o ip65.s(22) +timer_read (c64timer.o): + arp.o arp.s(30) + timer.o timer.s(13) + icmp.o icmp.s(56) + tcp.o tcp.s(45) + dns.o dns.s(38) + dhcp.o dhcp.s(50) + ip65.o ip65.s(25) +timer_timeout (timer.o): + arp.o arp.s(31) + icmp.o icmp.s(57) +udp_add_listener (udp.o): + dns.o dns.s(23) + dhcp.o dhcp.s(33) +udp_callback (udp.o): + dns.o dns.s(26) + dhcp.o dhcp.s(36) +udp_cksum (udp.o): +udp_data (udp.o): + dns.o dns.s(31) + dhcp.o dhcp.s(41) +udp_dest_port (udp.o): +udp_init (udp.o): + ip.o ip.s(53) +udp_inp (udp.o): + dns.o dns.s(29) + dhcp.o dhcp.s(39) +udp_len (udp.o): +udp_outp (udp.o): +udp_process (udp.o): + ip.o ip.s(54) +udp_remove_listener (udp.o): + dns.o dns.s(24) + dhcp.o dhcp.s(34) +udp_send (udp.o): + dns.o dns.s(27) + dhcp.o dhcp.s(37) +udp_send_dest (udp.o): + dns.o dns.s(33) + dhcp.o dhcp.s(45) +udp_send_dest_port (udp.o): + dns.o dns.s(35) + dhcp.o dhcp.s(47) +udp_send_len (udp.o): + dns.o dns.s(36) + dhcp.o dhcp.s(48) +udp_send_src_port (udp.o): + dns.o dns.s(34) + dhcp.o dhcp.s(46) +udp_src_port (udp.o): + diff --git a/client/v1541/v1541.prg b/client/v1541/v1541.prg index 8ebfd0f..f75aca5 100644 Binary files a/client/v1541/v1541.prg and b/client/v1541/v1541.prg differ diff --git a/client/v1541/v1541.s b/client/v1541/v1541.s index e132440..b93ccb2 100644 --- a/client/v1541/v1541.s +++ b/client/v1541/v1541.s @@ -5,18 +5,41 @@ .include "../inc/kipper_constants.i" .endif + +SERVER_PORT=1541 +.define SERVERNAME "COMMODORESERVER.COM" + .import ip65_init .import dhcp_init .import tcp_connect .import dns_resolve +.import dns_set_hostname +.import dns_ip .import print_a - +.import tcp_connect_ip +.import tcp_send_string +.import tcp_connect +.import tcp_close +.import tcp_callback +.import ip65_process +.import ip65_error +.import tcp_state +.import copymem +.import check_for_abort_key +.import tcp_inbound_data_ptr +.import tcp_inbound_data_length +.import tcp_send_keep_alive +.import get_key .importzp copy_src .importzp copy_dest +.export keep_alive_counter pptr=copy_src +CINV=$314 ILOAD=$330 ISAVE=$332 +FNLEN = $B7 +FNADDR = $BB .import __CODE_LOAD__ .import __CODE_RUN__ @@ -62,6 +85,19 @@ relocate: ldax #__CODE_SIZE__ jsr __copymem + + ldx ILOAD+1 + cpx #>load_handler + bne @not_installed + ldax #@already_installed_msg + jsr __print + rts + + @installed_msg: .byte "V1541 INSTALLED",0 + @already_installed_msg: .byte "V1541 ALREADY INSTALLED",0 +@not_installed: + + ldax #__DATA_LOAD__ stax copy_src ldax #__DATA_RUN__ @@ -91,28 +127,95 @@ relocate: jsr __copymem - jsr swap_basic_out + -; jsr ip65_init - bcs :+ + jsr swap_basic_out + + jsr ip65_init + bcc @init_ok + ldax #@no_nic + jsr print +@fail_and_exit: + ldax #@not_installed_msg + jsr print + jmp @done +@no_nic: .byte "NO RR-NET FOUND - ",0 +@not_installed_msg: .byte "V1541 NOT INSTALLED.",0 +@init_ok: + ldax #@dhcp_init_msg + jsr print jsr dhcp_init -: + bcc @dhcp_worked +@failed: + ldax #@fail_msg + jsr print + jmp @fail_and_exit +@dhcp_init_msg: .byte "DHCP INITIALISATION" +@elipses: .byte "...",0 +@ok_msg: .byte "OK",13,0 +@fail_msg: .byte "FAILED",13,0 +@dhcp_worked: + ldax #@ok_msg + jsr print + + ldax #@resolve_servername_msg + jsr print + ldax #@elipses + jsr print + ldax #@servername + jsr dns_set_hostname + jsr dns_resolve + bcc @dns_worked + jmp @failed +@resolve_servername_msg: .byte "RESOLVING " +@servername: .byte SERVERNAME,0 +@dns_worked: + ldax #@ok_msg + jsr print + ldx #3 +@copy_server_ip_loop: + lda dns_ip,x + sta tcp_connect_ip,x + dex + bpl @copy_server_ip_loop + + ldax #@connecting_msg + jsr print + ldax #@servername + jsr print + ldax #@elipses + jsr print + ldax #csip_callback + stax tcp_callback + ldax #SERVER_PORT + jsr tcp_connect + bcc @connect_worked + jmp @failed +@connecting_msg: .byte "CONNECTING TO ",0 + +@connect_worked: + ldax #@ok_msg + jsr print + ;IP stack OK, now set vectors + + ldax CINV + stax old_irq_vector + ldax ILOAD - cpx #>load_handler - bne @not_installed - ldax #already_installed - jsr print - jmp @done -@not_installed: stax old_load_vector ldax #load_handler stax ILOAD - ldax #installed + ldax #@installed_msg jsr print +ldax #irq_handler + sei + stax CINV @done: jsr swap_basic_in - + lda #0 + sta $dc08 ;make sure TOD clock is started + cli rts __copymem: @@ -145,16 +248,96 @@ __copymem: rts end: .byte 0 -installed: .byte "V1541 INSTALLED",0 -already_installed: .byte "V1541 ALREADY INSTALLED",0 +__print: + sta pptr + stx pptr + 1 + +@print_loop: + ldy #0 + lda (pptr),y + beq @done_print + jsr print_a + inc pptr + bne @print_loop + inc pptr+1 + bne @print_loop ;if we ever get to $ffff, we've probably gone far enough ;-) +@done_print: + rts + + .code load_dev_2: - inc $d020 - clc + ldy #$00 + lda (FNADDR),y + cmp #'!' + beq @do_disks +@done: + clc jmp swap_basic_in +@do_disks: + ldax #@cmd_dsks + jsr tcp_send_string + bcs @error + jsr show_list + jmp @done + +@cmd_dsks: .byte "DISKS 22",$0d,$0 +@error: + ldax #transmission_error + jsr print + lda ip65_error + jsr print_hex + lda tcp_state + jsr print_hex + + jmp @done + + +show_list: + +@loop: + lda $91 ; look for STOP key + cmp #$7F + beq @done + lda #5 ;wait for max 5 seconds + jsr getc + bcc @got_data + ldax #timeout_error + jmp print +@got_data: + cmp #$03 ;ETX byte (indicating end of page)? + beq @get_user_input + cmp #$04 ;EOT byte (indicating end of list)? + beq @done + jsr print_a ;got a byte - output it + jmp @loop ;continue getting characters + +;End of page, so ask for user input + @get_user_input: + jsr get_key + + cmp #'S' + beq @user_exit + + cmp #$0D + bne @get_user_input + ldax #continue_cmd + + jsr tcp_send_string + jmp @loop + +;User wishes to stop - send S to server and quit +@user_exit: + ldax #stop_cmd + jsr tcp_send_string + +@done: + +rts + print: sta pptr @@ -172,11 +355,125 @@ print: @done_print: rts - + +csip_callback: + lda tcp_inbound_data_length+1 + cmp #$ff + bne @not_eof + rts +@not_eof: + + ldax tcp_inbound_data_ptr + stax copy_src + ldax #csip_stream_buffer + stax copy_dest + stax next_char_ptr + + ldax tcp_inbound_data_length + stax buffer_length + jsr copymem + rts + +getc: + sta getc_timeout_seconds + + clc + lda $dc09 ;time of day clock: seconds (in BCD) + sed + adc getc_timeout_seconds + cmp #$60 + bcc @timeout_set + sec + sbc #$60 +@timeout_set: + cld + sta getc_timeout_end + +@poll_loop: + jsr next_char + bcs @no_char + rts ;done! +@no_char: + jsr check_for_abort_key + bcc @no_abort + lda #KPR_ERROR_ABORTED_BY_USER + sta ip65_error + inc user_abort + rts +@no_abort: + jsr ip65_process + lda $dc09 ;time of day clock: seconds + cmp getc_timeout_end + bne @poll_loop + lda #00 + sec + rts + +next_char: + lda buffer_length + bne @not_eof + lda buffer_length+1 + bne @not_eof + sec + rts +@not_eof: + next_char_ptr=*+1 + lda $ffff + pha + inc next_char_ptr + bne :+ + inc next_char_ptr+1 +: + sec + lda buffer_length + sbc #1 + sta buffer_length + lda buffer_length+1 + sbc #0 + sta buffer_length+1 + pla + clc + rts + +print_hex: + pha + pha + lsr + lsr + lsr + lsr + tax + lda hexdigits,x + jsr print_a + pla + and #$0F + tax + lda hexdigits,x + jsr print_a + pla + rts +hexdigits: +.byte "0123456789ABCDEF" + +tcp_irq_handler: + + inc keep_alive_counter + lda keep_alive_counter + bne @skip + jsr tcp_send_keep_alive +@skip: + jsr ip65_process +@done: + + rts + + + .segment "CODESTUB" swap_basic_out: lda $01 + sta underneath_basic and #$FE sta $01 rts @@ -185,6 +482,8 @@ swap_basic_in: lda $01 ora #$01 sta $01 + lda #$0 + sta underneath_basic rts load_handler: @@ -197,4 +496,49 @@ old_load_vector: : jsr swap_basic_out jmp load_dev_2 - \ No newline at end of file + +irq_handler: + lda underneath_basic + bne @done + jsr swap_basic_out + jsr tcp_irq_handler + jsr swap_basic_in +@done: + .byte $4c ;jmp +old_irq_vector: + .word $ffff + +underneath_basic: .res 1 + +.segment "TCP_VARS" +csip_stream_buffer: .res 1600 +user_abort: .res 1 +getc_timeout_end: .res 1 +getc_timeout_seconds: .res 1 +buffer_length: .res 2 +keep_alive_counter: .res 1 + +.data +continue_cmd: .byte $0D,0 +stop_cmd: .byte "S",0 +timeout_error: .byte "TIMEOUT ERROR",13,0 +transmission_error: .byte "TRANSMISSION ERROR",13,0 + +;-- LICENSE FOR v1541.s -- +; The contents of this file are subject to the Mozilla Public License +; Version 1.1 (the "License"); you may not use this file except in +; compliance with the License. You may obtain a copy of the License at +; http://www.mozilla.org/MPL/ +; +; Software distributed under the License is distributed on an "AS IS" +; basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the +; License for the specific language governing rights and limitations +; under the License. +; +; The Original Code is ip65. +; +; The Initial Developer of the Original Code is Jonno Downes, +; jonno@jamtronix.com. +; Portions created by the Initial Developer are Copyright (C) 2010 +; Jonno Downes. All Rights Reserved. +; -- LICENSE END --