From 7250ff22aead540bf8001d564c8da19a7b3ae519 Mon Sep 17 00:00:00 2001 From: jonnosan Date: Sun, 26 Sep 2010 07:20:25 +0000 Subject: [PATCH] git-svn-id: http://svn.code.sf.net/p/netboot65/code@283 93682198-c243-4bdb-bd91-e943c89aac3b --- client/basic/bails.d64 | Bin 174848 -> 174848 bytes client/basic/kipperbas.d64 | Bin 174848 -> 174848 bytes client/ip65/tcp.s | 2 +- client/v1541/Makefile | 2 +- client/v1541/v1541.cfg | 3 +- client/v1541/v1541.map | 1273 +++++++++++++++++++----------------- client/v1541/v1541.prg | Bin 5710 -> 7130 bytes client/v1541/v1541.s | 382 ++++++++++- 8 files changed, 1034 insertions(+), 628 deletions(-) diff --git a/client/basic/bails.d64 b/client/basic/bails.d64 index e998efc62a7ae3828276545351060a1233d0646a..a3e391cbaa3a7e1cb96626c01e0fb6a0744ae4b1 100644 GIT binary patch delta 24 ecmZp;#?=5sTNstnwkxJF-VBU(UGwe>oGQF#w^#3l0DP diff --git a/client/basic/kipperbas.d64 b/client/basic/kipperbas.d64 index dc7eb85033ef211a82b9e4ae1638173a14e5c927..c1730265a3cbbba7d30dd039ee794d0a81996bfc 100644 GIT binary patch delta 21 bcmZp;#?=5sTNstn+7;6nw=1SG-E#o|U2_NT delta 23 dcmZp;#?=5sTNstn+LhB7w=1VH-F0DP003=s2lD^` 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 8ebfd0f7f1308af7f1d7a83ed59a3841ea6fff67..f75aca5550a4379eb841f34462d866f7e4484908 100644 GIT binary patch literal 7130 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 + 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 --