git-svn-id: http://svn.code.sf.net/p/netboot65/code@283 93682198-c243-4bdb-bd91-e943c89aac3b

This commit is contained in:
jonnosan 2010-09-26 07:20:25 +00:00
parent db83090cf0
commit 910254bd08
8 changed files with 1034 additions and 628 deletions

Binary file not shown.

Binary file not shown.

View File

@ -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

View File

@ -15,7 +15,7 @@ IP65LIB=../ip65/ip65_tcp.lib
C64PROGLIB=../drivers/c64prog.lib
all: v1541.prg v1541.d64
all: v1541.prg
%.o: %.s $(INCFILES)

View File

@ -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;
}

View File

@ -1,145 +1,161 @@
Modules list:
-------------
v1541.o:
CODE Offs = 000000 Size = 00001D
CODE Offs = 000000 Size = 00015C
RODATA Offs = 000000 Size = 000000
BSS Offs = 000000 Size = 000000
DATA Offs = 000000 Size = 000000
DATA Offs = 000000 Size = 000027
ZEROPAGE Offs = 000000 Size = 000000
NULL Offs = 000000 Size = 000000
STARTUP Offs = 000000 Size = 000108
CODESTUB Offs = 000000 Size = 00001D
STARTUP Offs = 000000 Size = 000243
CODESTUB Offs = 000000 Size = 000037
TCP_VARS Offs = 000000 Size = 000646
../ip65/ip65_tcp.lib(copymem.o):
CODE Offs = 00001D Size = 000027
CODE Offs = 00015C Size = 000027
RODATA Offs = 000000 Size = 000000
BSS Offs = 000000 Size = 000001
DATA Offs = 000000 Size = 000000
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 = 000044 Size = 00001D
CODE Offs = 000183 Size = 00001D
RODATA Offs = 000000 Size = 000000
BSS Offs = 000001 Size = 00001F
DATA Offs = 000000 Size = 000000
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 = 000061 Size = 000018
CODE Offs = 0001A0 Size = 000018
RODATA Offs = 000000 Size = 000000
BSS Offs = 000020 Size = 000002
DATA Offs = 000000 Size = 000000
DATA Offs = 000027 Size = 000000
ZEROPAGE Offs = 000000 Size = 000000
NULL Offs = 000000 Size = 000000
../ip65/ip65_tcp.lib(cs8900a.o):
CODE Offs = 000079 Size = 000151
CODE Offs = 0001B8 Size = 000151
RODATA Offs = 000000 Size = 000000
BSS Offs = 000022 Size = 000BE0
DATA Offs = 000000 Size = 000000
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 = 0001CA Size = 000020
CODE Offs = 000309 Size = 000020
RODATA Offs = 000000 Size = 000000
BSS Offs = 000C02 Size = 000000
DATA Offs = 000000 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 = 0001EA Size = 000202
CODE Offs = 000329 Size = 000202
RODATA Offs = 000000 Size = 000000
BSS Offs = 000C02 Size = 000066
DATA Offs = 000000 Size = 000000
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 = 0003EC Size = 00017C
CODE Offs = 00052B Size = 00017C
RODATA Offs = 000000 Size = 000000
BSS Offs = 000C68 Size = 00001F
DATA Offs = 000000 Size = 000003
DATA Offs = 000027 Size = 000003
ZEROPAGE Offs = 000000 Size = 000000
NULL Offs = 000000 Size = 000000
../ip65/ip65_tcp.lib(ip65.o):
CODE Offs = 000568 Size = 00005A
CODE Offs = 0006A7 Size = 00005A
RODATA Offs = 000000 Size = 000000
BSS Offs = 000C87 Size = 000004
DATA Offs = 000003 Size = 000000
DATA Offs = 00002A Size = 000000
ZEROPAGE Offs = 000000 Size = 000000
NULL Offs = 000000 Size = 000000
../ip65/ip65_tcp.lib(dhcp.o):
CODE Offs = 0005C2 Size = 00028A
CODE Offs = 000701 Size = 00028A
RODATA Offs = 000000 Size = 000000
BSS Offs = 000C8B Size = 000005
DATA Offs = 000003 Size = 000000
DATA Offs = 00002A Size = 000000
ZEROPAGE Offs = 000000 Size = 000000
NULL Offs = 000000 Size = 000000
../ip65/ip65_tcp.lib(output_buffer.o):
CODE Offs = 00084C Size = 000000
../ip65/ip65_tcp.lib(dns.o):
CODE Offs = 00098B Size = 000271
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
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 = 000AFB Size = 000664
CODE Offs = 000F07 Size = 000664
RODATA Offs = 000000 Size = 000000
BSS Offs = 000EA6 Size = 000000
DATA Offs = 000003 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 = 000000 Size = 000041
TCP_VARS Offs = 000646 Size = 000041
../ip65/ip65_tcp.lib(icmp.o):
CODE Offs = 00115F Size = 000230
CODE Offs = 00156B Size = 000230
RODATA Offs = 000000 Size = 000000
BSS Offs = 000EA6 Size = 000009
DATA Offs = 000003 Size = 000003
BSS Offs = 000F3D Size = 000009
DATA Offs = 00002E Size = 000003
ZEROPAGE Offs = 000000 Size = 000000
NULL Offs = 000000 Size = 000000
TCP_VARS Offs = 000041 Size = 000008
TCP_VARS Offs = 000687 Size = 000008
../drivers/c64prog.lib(c64print.o):
CODE Offs = 00138F Size = 000058
CODE Offs = 00179B Size = 000058
RODATA Offs = 000000 Size = 000000
BSS Offs = 000EAF Size = 000001
DATA Offs = 000006 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 = 0013E7 Size = 000009
CODE Offs = 0017F3 Size = 000009
RODATA Offs = 000000 Size = 000007
BSS Offs = 000EB0 Size = 000000
DATA Offs = 000006 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(c64timer.o):
CODE Offs = 0013F0 Size = 000033
CODE Offs = 0017FC Size = 000033
RODATA Offs = 000007 Size = 000000
BSS Offs = 000EB0 Size = 000000
DATA Offs = 000006 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 = 001423 Size = 0000DA
CODE Offs = 00182F Size = 0000DA
RODATA Offs = 000007 Size = 000000
BSS Offs = 000EB0 Size = 00002D
DATA Offs = 000006 Size = 000000
BSS Offs = 000F47 Size = 00002D
DATA Offs = 000031 Size = 000000
ZEROPAGE Offs = 000000 Size = 000000
NULL Offs = 000000 Size = 000000
@ -149,141 +165,145 @@ 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
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 00C03B 00001D
BSS 00C03C 00CF18 000EDD
TCP_VARS 00CF19 00CF61 000049
CODESTUB 00C01F 00C055 000037
BSS 00C056 00CFC9 000F74
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
__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__ 001E04 RLA __RODATA_RUN__ 00B4FD RLA
__RODATA_SIZE__ 000007 REA __UNDERBASIC_LAST__ 00B50A LA
__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 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
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 00A01D RLA cs_driver_name 00B4FD LA
cs_init 00B3E7 RLA cs_packet_data 00DE04 REA
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 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
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 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
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(37)
v1541.o v1541.s(60)
__CODESTUB_RUN__ ([linker generated]):
v1541.o v1541.s(38)
v1541.o v1541.s(61)
__CODESTUB_SIZE__ ([linker generated]):
v1541.o v1541.s(39)
v1541.o v1541.s(62)
__CODE_LOAD__ ([linker generated]):
v1541.o v1541.s(21)
v1541.o v1541.s(44)
__CODE_RUN__ ([linker generated]):
v1541.o v1541.s(22)
v1541.o v1541.s(45)
__CODE_SIZE__ ([linker generated]):
v1541.o v1541.s(23)
v1541.o v1541.s(46)
__DATA_LOAD__ ([linker generated]):
v1541.o v1541.s(29)
v1541.o v1541.s(52)
__DATA_RUN__ ([linker generated]):
v1541.o v1541.s(30)
v1541.o v1541.s(53)
__DATA_SIZE__ ([linker generated]):
v1541.o v1541.s(31)
v1541.o v1541.s(54)
__IP65_DEFAULTS_LOAD__ ([linker generated]):
v1541.o v1541.s(33)
v1541.o v1541.s(56)
__IP65_DEFAULTS_RUN__ ([linker generated]):
v1541.o v1541.s(34)
v1541.o v1541.s(57)
__IP65_DEFAULTS_SIZE__ ([linker generated]):
v1541.o v1541.s(35)
v1541.o v1541.s(58)
__RODATA_LOAD__ ([linker generated]):
v1541.o v1541.s(25)
v1541.o v1541.s(48)
__RODATA_RUN__ ([linker generated]):
v1541.o v1541.s(26)
v1541.o v1541.s(49)
__RODATA_SIZE__ ([linker generated]):
v1541.o v1541.s(27)
v1541.o v1541.s(50)
__UNDERBASIC_LAST__ ([linker generated]):
__UNDERBASIC_SIZE__ ([linker generated]):
__UNDERBASIC_START__ ([linker generated]):
@ -312,6 +332,7 @@ arp_process (arp.o):
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)
@ -320,16 +341,16 @@ 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)
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)
arp.o arp.s(25)
dhcp.o dhcp.s(23)
cfg_mac_default (config.o):
cfg_netmask (config.o):
@ -338,7 +359,9 @@ cfg_netmask (config.o):
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)
@ -346,22 +369,23 @@ 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)
tcp.o tcp.s(72)
v1541.o v1541.s(34)
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)
tcp.o tcp.s(71)
ip.o ip.s(60)
v1541.o v1541.s(33)
copymem (copymem.o):
tcp.o tcp.s(70)
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)
@ -376,10 +400,19 @@ cs_tx_cmd (rr-net.o):
cs_tx_len (rr-net.o):
cs8900a.o cs8900a.s(33)
dhcp_init (dhcp.o):
v1541.o v1541.s(9)
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):
@ -387,26 +420,26 @@ eth_dest (cs8900a.o):
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)
arp.o arp.s(15)
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)
arp.o arp.s(17)
eth_outp_len (cs8900a.o):
arp.o arp.s(18)
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)
ip65.o ip65.s(34)
eth_proto_ip (eth.o):
ip.o ip.s(43)
eth_rx (cs8900a.o):
@ -416,14 +449,14 @@ eth_set_broadcast_dest (eth.o):
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)
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)
arp.o arp.s(19)
eth_type (cs8900a.o):
filter_dns (c64inputs.o):
filter_ip (c64inputs.o):
@ -432,6 +465,7 @@ 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):
@ -454,67 +488,72 @@ 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)
udp.o udp.s(11)
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)
udp.o udp.s(36)
ip_cksum_ptr (ip.o):
udp.o udp.s(41)
icmp.o icmp.s(44)
tcp.o tcp.s(60)
udp.o udp.s(41)
ip_create_packet (ip.o):
udp.o udp.s(38)
icmp.o icmp.s(40)
tcp.o tcp.s(39)
udp.o udp.s(38)
ip_data (ip.o):
udp.o udp.s(45)
icmp.o icmp.s(48)
tcp.o tcp.s(64)
udp.o udp.s(45)
ip_dest (ip.o):
udp.o udp.s(44)
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)
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)
udp.o udp.s(39)
ip_len (ip.o):
udp.o udp.s(49)
icmp.o icmp.s(49)
tcp.o tcp.s(68)
udp.o udp.s(49)
ip_outp (ip.o):
udp.o udp.s(40)
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):
udp.o udp.s(46)
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):
@ -522,22 +561,26 @@ ip_proto_tcp (ip.o):
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)
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):
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(12)
v1541.o v1541.s(18)
print_a_inverse (c64print.o):
print_cr (c64print.o):
screen_current_col (c64print.o):
@ -545,12 +588,17 @@ 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):
@ -560,46 +608,61 @@ 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)
ip65.o ip65.s(25)
arp.o arp.s(30)
dns.o dns.s(38)
dhcp.o dhcp.s(50)
ip65.o ip65.s(25)
timer_timeout (timer.o):
icmp.o icmp.s(57)
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):

Binary file not shown.

View File

@ -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 dhcp_init
:
ldax ILOAD
cpx #>load_handler
bne @not_installed
ldax #already_installed
jsr ip65_init
bcc @init_ok
ldax #@no_nic
jsr print
@fail_and_exit:
ldax #@not_installed_msg
jsr print
jmp @done
@not_installed:
@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
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
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
@ -173,10 +356,124 @@ 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:
@ -198,3 +497,48 @@ old_load_vector:
jsr swap_basic_out
jmp load_dev_2
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 --