From 07028be070c7378bab9a22c8f55082b92d4adb48 Mon Sep 17 00:00:00 2001 From: jonnosan Date: Sun, 27 Sep 2009 10:32:03 +0000 Subject: [PATCH] git-svn-id: http://svn.code.sf.net/p/netboot65/code@200 93682198-c243-4bdb-bd91-e943c89aac3b --- client/carts/Makefile | 15 +- client/carts/kipperkart.s | 207 +++++------ client/carts/kipperterm.s | 455 +++++++++++++++++++++++++ client/cfg/c64_16kcart.cfg | 2 +- client/drivers/c64_disk_access.s | 158 +++++++-- client/drivers/c64charconv.s | 2 +- client/examples/Makefile | 8 +- client/examples/irc.s | 303 ++++++++++++++++ client/examples/upnatom.s | 172 +++++----- client/inc/commonprint.i | 47 --- client/inc/disk_transfer.i | 168 +++++++++ client/inc/kipper_constants.i | 5 - client/inc/sidplay.i | 278 +++++++++++++++ client/tcp_test.bat | 2 +- client/test/test_disk_io.s | 84 +++++ client/test/test_ping.s | 1 - client/test/testdns.s | 2 - doc/kipper_api_technical_reference.doc | Bin 0 -> 176128 bytes doc/nb65_api_technical_reference.doc | Bin 188928 -> 0 bytes 19 files changed, 1597 insertions(+), 312 deletions(-) create mode 100644 client/carts/kipperterm.s create mode 100644 client/examples/irc.s create mode 100644 client/inc/disk_transfer.i create mode 100644 client/inc/sidplay.i create mode 100644 doc/kipper_api_technical_reference.doc delete mode 100644 doc/nb65_api_technical_reference.doc diff --git a/client/carts/Makefile b/client/carts/Makefile index 7f423ef..888683c 100644 --- a/client/carts/Makefile +++ b/client/carts/Makefile @@ -11,7 +11,6 @@ INCFILES=\ ../inc/kipper_constants.i\ ../inc/version.i\ -TCP_INCFILES=../inc/gopher.i ../inc/telnet.i ../inc/ping.i IP65LIB=../ip65/ip65.lib IP65TCPLIB=../ip65/ip65_tcp.lib @@ -19,9 +18,12 @@ IP65TCPLIB=../ip65/ip65_tcp.lib C64PROGLIB=../drivers/c64prog.lib C64NB65LIB=../drivers/c64nb65.lib -all: kipperkart.bin kipperkart_rr.bin netboot.bin +all: kipperkart.bin kipperkart_rr.bin netboot.bin kipperterm.bin -kipperkart.o: kipperkart.s $(INCFILES) $(TCP_INCFILES) +kipperkart.o: kipperkart.s $(INCFILES) ../inc/ping.i ../inc/disk_transfer.i ../inc/sidplay.i + $(AS) $(AFLAGS) -o $@ $< + +kipperterm.o: kipperterm.s $(INCFILES) ../inc/gopher.i ../inc/telnet.i $(AS) $(AFLAGS) -o $@ $< %.o: %.s $(INCFILES) @@ -38,7 +40,12 @@ kipperkart.bin: kipperkart.o $(IP65TCPLIB) $(C64NB65LIB) $(INCFILES) ../cfg/c64_ $(LD) -m kipperkart.map -vm -C ../cfg/c64_16kcart.cfg -o $@ $< $(IP65TCPLIB) $(C64NB65LIB) ruby fix_cart.rb $@ 16384 ruby dupe_cart.rb kipperkart.bin kipperkart_29c040.bin 32 - + +kipperterm.bin: kipperterm.o $(IP65TCPLIB) $(C64NB65LIB) $(INCFILES) ../cfg/c64_16kcart.cfg + $(LD) -m kipperterm.map -vm -C ../cfg/c64_16kcart.cfg -o $@ $< $(IP65TCPLIB) $(C64NB65LIB) + ruby fix_cart.rb $@ 16384 + ruby dupe_cart.rb kipperterm.bin kipperterm_29c040.bin 32 + kipperkart_rr.bin: kipperkart.bin cp crt8040.obj rrnet_header.bin cat rrnet_header.bin kipperkart.bin > kipperkart_rr.bin diff --git a/client/carts/kipperkart.s b/client/carts/kipperkart.s index a8522bc..da7dbab 100644 --- a/client/carts/kipperkart.s +++ b/client/carts/kipperkart.s @@ -33,10 +33,10 @@ KEY_BACK_IN_HISTORY=KEYCODE_F3 KEY_NEW_SERVER=KEYCODE_F5 - - .include "../inc/gopher.i" - .include "../inc/telnet.i" .include "../inc/ping.i" + .include "../inc/sidplay.i" + + .include "../inc/disk_transfer.i" .import cls .import beep @@ -49,7 +49,6 @@ .import filter_text .import filter_dns .import filter_ip - .import print_arp_cache .import arp_calculate_gateway_mask .import parse_dotted_quad .import dotted_quad_value @@ -95,7 +94,10 @@ kipper_param_buffer = $6000 directory_buffer = $6020 - .data + +.bss +temp_ptr: .res 2 +.segment "SELF_MODIFIED_CODE" call_downloaded_prg: jsr $0000 ;overwritten when we load a file @@ -204,29 +206,40 @@ main_menu: @get_key: jsr get_key_ip65 cmp #KEYCODE_F1 - bne @not_tftp + bne @not_f1 jmp @tftp_boot - @not_tftp: + @not_f1: cmp #KEYCODE_F2 - bne @not_disk + bne @not_f2 jmp disk_boot - @not_disk: + @not_f2: cmp #KEYCODE_F3 bne @not_f3 - jmp net_apps_menu + .byte $92 ; fixme @not_f3: cmp #KEYCODE_F4 - bne @not_download_d64 + bne @not_f4 jmp d64_download -@not_download_d64: +@not_f4: cmp #KEYCODE_F5 - bne @not_util_menu - jsr print_main_menu - jsr print_arp_cache - jmp @get_key -@not_util_menu: + bne @not_f5 + jmp netplay_sid +@not_f5: + + cmp #KEYCODE_F6 + bne @not_f6 + jsr cls + lda #14 + jsr print_a ;switch to lower case + ldax #ping_header + jsr print + jsr ping_loop + jmp exit_ping + +@not_f6: + cmp #KEYCODE_F7 beq @change_config @@ -415,7 +428,7 @@ cmp #KEYCODE_F7 tftp_boot_failed: jsr wait_for_keypress return_to_main: - jmp main_menu + jmp error_handler file_downloaded_ok: ldax kipper_param_buffer+KPR_TFTP_POINTER @@ -457,6 +470,8 @@ exit_cart_via_ax: jmp call_downloaded_prg get_tftp_directory_listing: + stax temp_ptr +@get_listing: stax kipper_param_buffer+KPR_TFTP_FILENAME ldax #directory_buffer @@ -504,33 +519,34 @@ get_tftp_directory_listing: bne @look_for_trailing_zero ; got trailing zero - ldax #tftp_dir_filemask+1 ;skip the leading '$' + ldax temp_ptr + clc + adc #1 ;skip the leading '$' + bcc :+ + inx +: stax copy_src ldax #$07 jsr copymem ldax get_value_of_axy+1 - jmp get_tftp_directory_listing + jmp @get_listing @not_directory_name: ldax get_value_of_axy+1 clc rts - @dir_failed: ldax #dir_listing_fail_msg jsr print - jsr print_errorcode - jsr print_cr - - ldax #tftp_file - jmp @tftp_filename_set - + sec + rts + @no_files_on_server: ldax #no_files jsr print - - jmp tftp_boot_failed + sec + rts disk_boot: .import io_read_catalogue @@ -550,8 +566,6 @@ disk_boot: : ;switch to lower case charset -; lda #23 -; sta $d018 ldax #directory_buffer @@ -593,6 +607,41 @@ disk_boot: ldax io_load_address jmp boot_into_file +error_handler: + jsr print_errorcode + jsr print_cr + jsr wait_for_keypress + jmp main_menu + +netplay_sid: + + ldax #sid_filemask + jsr get_tftp_directory_listing + bcc @sid_filename_set + jmp error_handler +@sid_filename_set: + ;AX now points to filename + stax kipper_param_buffer+KPR_TFTP_FILENAME + ldax #$1000 ;load address + stax kipper_param_buffer+KPR_TFTP_POINTER + jsr download2 + + + bcc :+ + jmp error_handler +: + + jsr cls + ldax kipper_param_buffer+KPR_TFTP_FILESIZE + stax sidfile_length + ldax kipper_param_buffer+KPR_TFTP_POINTER + jsr load_sid + jsr play_sid + + + jmp main_menu + + d64_download: ldax #d64_filemask @@ -601,73 +650,10 @@ d64_download: jmp main_menu @d64_filename_set: ;AX now points to filename - .byte $92 + jsr download_d64 jmp main_menu -net_apps_menu: - jsr cls - ldax #netboot65_msg - jsr print - ldax #net_apps_menu_msg - jsr print -@get_key: - jsr get_key_ip65 - cmp #KEYCODE_ABORT - bne @not_abort - jmp main_menu -@not_abort: - cmp #KEYCODE_F1 - bne @not_telnet - jsr cls - lda #14 - jsr print_a ;switch to lower case - ldax #telnet_header - jsr print - jmp telnet_main_entry -@not_telnet: - cmp #KEYCODE_F2 - bne @not_gopher - jsr cls - lda #14 - jsr print_a ;switch to lower case - ldax #gopher_header - jsr print - jsr prompt_for_gopher_resource ;only returns if no server was entered. - jmp exit_gopher -@not_gopher: - - cmp #KEYCODE_F3 - bne @not_gopher_floodgap_com - jsr cls - lda #14 - jsr print_a ;switch to lower case - - ldax #gopher_initial_location - sta resource_pointer_lo - stx resource_pointer_hi - ldx #0 - jsr select_resource_from_current_directory - jmp exit_gopher -@not_gopher_floodgap_com: - - cmp #KEYCODE_F5 - bne @not_ping - jsr cls - lda #14 - jsr print_a ;switch to lower case - ldax #ping_header - jsr print - jsr ping_loop - jmp exit_ping -@not_ping: - - cmp #KEYCODE_F7 - bne @not_main - jmp main_menu -@not_main: - jmp @get_key - bad_boot: @@ -679,10 +665,11 @@ download: ;AX should point at filename to download ldax #$0000 ;load address will be first 2 bytes of file we download (LO/HI order) stax kipper_param_buffer+KPR_TFTP_POINTER +download2: ldax #downloading_msg jsr print ldax kipper_param_buffer+KPR_TFTP_FILENAME - jsr print + jsr print_ascii_as_native jsr print_cr ldax #kipper_param_buffer @@ -724,24 +711,23 @@ cfg_get_configuration_ptr: rts exit_ping: -exit_telnet: -exit_gopher: lda #142 jsr print_a ;switch to upper case lda #$05 ;petscii for white text jsr print_a - jmp net_apps_menu + jmp main_menu .rodata netboot65_msg: -.byte 13,"KIPPERNET V" +.byte 13,"KIPPERKART V" .include "../inc/version.i" .byte 13,0 main_menu_msg: .byte 13,"MAIN MENU",13,13 .byte "F1: TFTP BOOT F2: DISK BOOT",13 -.byte "F3: NET APPS F4: DOWNLOAD D64",13 -.byte "F5: ARP TABLE F7: CONFIG",13,13 +.byte "F3: UPLOAD D64 F4: DOWNLOAD D64",13 +.byte "F5: SID NETPLAY F6: PING",13 +.byte "F7: CONFIG",13,13 .byte 0 @@ -753,22 +739,10 @@ config_menu_msg: .byte "F7: MAIN MENU",13,13 .byte 0 - -net_apps_menu_msg: -.byte 13,"NET APPS",13,13 -.byte "F1: TELNET F2: GOPHER ",13 -.byte "F3: GOPHER (FLOODGAP.COM)",13 -.byte "F5: PING F7: MAIN MENU",13,13 -.byte 0 - cant_boot_basic: .byte "BASIC FILE EXECUTION NOT SUPPORTED",13,0 -gopher_initial_location: -.byte "1gopher.floodgap.com",$09,"/",$09,"gopher.floodgap.com",$09,"70",$0D,$0A,0 ping_header: .byte "ping",13,0 -gopher_header: .byte "gopher",13,0 -telnet_header: .byte "telnet",13,0 file_read_error: .asciiz "ERROR READING FILE" autoexec_filename: .byte "AUTOEXEC.PRG",0 @@ -801,8 +775,8 @@ tftp_dir_filemask: d64_filemask: .asciiz "$/*.d64" -tftp_file: - .asciiz "BOOTC64.PRG" +sid_filemask: + .asciiz "$/*.sid" no_files: .byte "NO FILES",13,0 @@ -810,3 +784,4 @@ no_files: resolving: .byte "RESOLVING ",0 +remote_host: .byte "HOSTNAME (LEAVE BLANK TO QUIT)",13,": ",0 diff --git a/client/carts/kipperterm.s b/client/carts/kipperterm.s new file mode 100644 index 0000000..b6abd96 --- /dev/null +++ b/client/carts/kipperterm.s @@ -0,0 +1,455 @@ +; ############# +; KIPPER TERM - Telnet/Gopher client for C64 +; jonno@jamtronix.com + + .macro print_failed + ldax #failed_msg + jsr print + jsr print_cr + .endmacro + + .macro print_ok + ldax #ok_msg + jsr print + jsr print_cr + .endmacro + + .macro kippercall arg + ldy arg + jsr KPR_DISPATCH_VECTOR + .endmacro + +.ifndef KPR_API_VERSION_NUMBER + .define EQU = + .include "../inc/kipper_constants.i" +.endif + .include "../inc/common.i" + .include "../inc/c64keycodes.i" + .include "../inc/menu.i" + + KEY_NEXT_PAGE=KEYCODE_F7 + KEY_PREV_PAGE=KEYCODE_F1 + KEY_SHOW_HISTORY=KEYCODE_F2 + KEY_BACK_IN_HISTORY=KEYCODE_F3 + KEY_NEW_SERVER=KEYCODE_F5 + + + .include "../inc/gopher.i" + .include "../inc/telnet.i" + + .import cls + .import beep + .import exit_to_basic + .import timer_vbl_handler + .import kipper_dispatcher + .import ip65_process + .import ip65_init + .import get_filtered_input + .import filter_text + .import filter_dns + .import filter_ip + .import arp_calculate_gateway_mask + .import parse_dotted_quad + .import dotted_quad_value + .import parse_integer + .import print_integer + .import get_key_ip65 + .import cfg_ip + .import cfg_netmask + .import cfg_gateway + .import cfg_dns + .import cfg_tftp_server + + .import print_ascii_as_native + .import print_dotted_quad + .import print_hex + .import print_errorcode + .import print_ip_config + .import ok_msg + .import failed_msg + .import init_msg + .import ip_address_msg + .import netmask_msg + .import gateway_msg + .import dns_server_msg + .import tftp_server_msg + .import press_a_key_to_continue + + .import print_a + .import print_cr + .import print + .import copymem + .importzp copy_src + .importzp copy_dest + .import get_filtered_input + .import __DATA_LOAD__ + .import __DATA_RUN__ + .import __DATA_SIZE__ + .import __SELF_MODIFIED_CODE_LOAD__ + .import __SELF_MODIFIED_CODE_RUN__ + .import __SELF_MODIFIED_CODE_SIZE__ + + .import cfg_tftp_server + kipper_param_buffer = $6000 + directory_buffer = $6020 + + +.bss +temp_ptr: .res 2 +.segment "SELF_MODIFIED_CODE" + + +.segment "CARTRIDGE_HEADER" +.word init ;cold start vector +.word $FE47 ;warm start vector +.byte $C3,$C2,$CD,$38,$30 ; "CBM80" +.byte "KIPPER" ; API signature +jmp kipper_dispatcher ; KPR_DISPATCH_VECTOR : entry point for KIPPER functions +jmp ip65_process ;KPR_PERIODIC_PROCESSING_VECTOR : routine to be periodically called to check for arrival of ethernet packets +jmp timer_vbl_handler ;KPR_VBL_VECTOR : routine to be called during each vertical blank interrupt + +.code + + + +init: + + ;first let the kernal do a normal startup + sei + jsr $fda3 ;initialize CIA I/O + jsr $fd50 ;RAM test, set pointers + jsr $fd15 ;set vectors for KERNAL + jsr $ff5B ;init. VIC + cli ;KERNAL init. finished + + ;set some funky colours + + LDA #$04 ;purple + + STA $D020 ;border + LDA #$00 ;black + STA $D021 ;background + lda #$05 ;petscii for white text + jsr print_a + +;relocate our r/w data + ldax #__DATA_LOAD__ + stax copy_src + ldax #__DATA_RUN__ + stax copy_dest + ldax #__DATA_SIZE__ + jsr copymem + + +;relocate the self-modifying code (if necessary) + ldax #__SELF_MODIFIED_CODE_LOAD__ + stax copy_src + ldax #__SELF_MODIFIED_CODE_RUN__ + stax copy_dest + ldax #__SELF_MODIFIED_CODE_SIZE__ + jsr copymem + + ldax #netboot65_msg + jsr print + ldax #init_msg+1 + jsr print + + kippercall #KPR_INITIALIZE + bcc init_ok + print_failed + jsr print_errorcode + jsr wait_for_keypress + jmp exit_to_basic + +print_main_menu: + lda #21 ;make sure we are in upper case + sta $d018 + jsr cls + ldax #netboot65_msg + jsr print + ldax #main_menu_msg + jmp print + +init_ok: + +main_menu: + jsr print_main_menu + jsr print_ip_config + jsr print_cr + +@get_key: + jsr get_key_ip65 + cmp #KEYCODE_F1 + bne @not_f1 + jsr cls + lda #14 + jsr print_a ;switch to lower case + ldax #telnet_header + jsr print + jmp telnet_main_entry + + @not_f1: + cmp #KEYCODE_F3 + bne @not_f3 + jsr cls + lda #14 + jsr print_a ;switch to lower case + ldax #gopher_header + jsr print + jsr prompt_for_gopher_resource ;only returns if no server was entered. + jmp exit_gopher + @not_f3: + + cmp #KEYCODE_F5 + bne @not_f5 + jsr cls + lda #14 + jsr print_a ;switch to lower case + + ldax #gopher_initial_location + sta resource_pointer_lo + stx resource_pointer_hi + ldx #0 + jsr select_resource_from_current_directory + jmp exit_gopher +@not_f5: + + cmp #KEYCODE_F7 + beq @change_config + + jmp @get_key + +@change_config: + jsr cls + ldax #netboot65_msg + jsr print + ldax #config_menu_msg + jsr print + jsr print_ip_config + jsr print_cr +@get_key_config_menu: + jsr get_key_ip65 + cmp #KEYCODE_ABORT + bne @not_abort + jmp main_menu +@not_abort: + cmp #KEYCODE_F1 + bne @not_ip + ldax #new + jsr print + ldax #ip_address_msg + jsr print + jsr print_cr + ldax #filter_ip + ldy #20 + jsr get_filtered_input + bcs @no_ip_address_entered + jsr parse_dotted_quad + bcc @no_ip_resolve_error + jmp @change_config +@no_ip_resolve_error: + ldax #dotted_quad_value + stax copy_src + ldax #cfg_ip + stax copy_dest + ldax #4 + jsr copymem +@no_ip_address_entered: + jmp @change_config + +@not_ip: + cmp #KEYCODE_F2 + bne @not_netmask + ldax #new + jsr print + ldax #netmask_msg + jsr print + jsr print_cr + ldax #filter_ip + ldy #20 + jsr get_filtered_input + bcs @no_netmask_entered + jsr parse_dotted_quad + bcc @no_netmask_resolve_error + jmp @change_config +@no_netmask_resolve_error: + ldax #dotted_quad_value + stax copy_src + ldax #cfg_netmask + stax copy_dest + ldax #4 + jsr copymem +@no_netmask_entered: + jmp @change_config + +@not_netmask: + cmp #KEYCODE_F3 + bne @not_gateway + ldax #new + jsr print + ldax #gateway_msg + jsr print + jsr print_cr + ldax #filter_ip + ldy #20 + jsr get_filtered_input + bcs @no_gateway_entered + jsr parse_dotted_quad + bcc @no_gateway_resolve_error + jmp @change_config +@no_gateway_resolve_error: + ldax #dotted_quad_value + stax copy_src + ldax #cfg_gateway + stax copy_dest + ldax #4 + jsr copymem + jsr arp_calculate_gateway_mask ;we have modified our netmask, so we need to recalculate gw_test +@no_gateway_entered: + jmp @change_config + + +@not_gateway: + cmp #KEYCODE_F4 + bne @not_dns_server + ldax #new + jsr print + ldax #dns_server_msg + jsr print + jsr print_cr + ldax #filter_ip + ldy #20 + jsr get_filtered_input + bcs @no_dns_server_entered + jsr parse_dotted_quad + bcc @no_dns_resolve_error + jmp @change_config +@no_dns_resolve_error: + ldax #dotted_quad_value + stax copy_src + ldax #cfg_dns + stax copy_dest + ldax #4 + jsr copymem +@no_dns_server_entered: + + jmp @change_config + +@not_dns_server: + cmp #KEYCODE_F5 + bne @not_tftp_server + ldax #new + jsr print + ldax #tftp_server_msg + jsr print + jsr print_cr + ldax #filter_dns + ldy #40 + jsr get_filtered_input + bcs @no_server_entered + stax kipper_param_buffer + jsr print_cr + ldax #resolving + jsr print + ldax #kipper_param_buffer + kippercall #KPR_DNS_RESOLVE + bcs @resolve_error + ldax #kipper_param_buffer + stax copy_src + ldax #cfg_tftp_server + stax copy_dest + ldax #4 + jsr copymem +@no_server_entered: + jmp @change_config + +@not_tftp_server: + + +cmp #KEYCODE_F6 + bne @not_reset + jsr ip65_init ;this will reset everything + jmp @change_config +@not_reset: +cmp #KEYCODE_F7 + bne @not_main_menu + jmp main_menu + +@not_main_menu: + jmp @get_key_config_menu + + +@resolve_error: + print_failed + jsr wait_for_keypress + jsr @change_config + + + + + +wait_for_keypress: + ldax #press_a_key_to_continue + jsr print +@loop: + jsr $ffe4 + beq @loop + rts + +get_key: +@loop: + jsr KPR_PERIODIC_PROCESSING_VECTOR + jsr $ffe4 + beq @loop + rts + + +cfg_get_configuration_ptr: + ldax #kipper_param_buffer + kippercall #KPR_GET_IP_CONFIG + rts + +exit_telnet: +exit_gopher: + lda #142 + jsr print_a ;switch to upper case + lda #$05 ;petscii for white text + jsr print_a + jmp main_menu +.rodata + +netboot65_msg: +.byte 13,"KIPPERTERM V" +.include "../inc/version.i" +.byte 13,0 +main_menu_msg: +.byte 13,"MAIN MENU",13,13 +.byte "F1: TELNET F3: GOPHER ",13 +.byte "F5: GOPHER (FLOODGAP.COM)",13 +.byte " F7: CONFIG",13,13 + +.byte 0 + +config_menu_msg: +.byte 13,"CONFIGURATION",13,13 +.byte "F1: IP ADDRESS F2: NETMASK",13 +.byte "F3: GATEWAY F4: DNS SERVER",13 +.byte "F5: TFTP SERVER F6: RESET TO DEFAULT",13 +.byte "F7: MAIN MENU",13,13 +.byte 0 + +gopher_initial_location: +.byte "1gopher.floodgap.com",$09,"/",$09,"gopher.floodgap.com",$09,"70",$0D,$0A,0 + +gopher_header: .byte "gopher",13,0 +telnet_header: .byte "telnet",13,0 + +current: +.byte "CURRENT ",0 + +new: +.byte"NEW ",0 + +resolving: + .byte "RESOLVING ",0 + diff --git a/client/cfg/c64_16kcart.cfg b/client/cfg/c64_16kcart.cfg index e0d661e..227720c 100644 --- a/client/cfg/c64_16kcart.cfg +++ b/client/cfg/c64_16kcart.cfg @@ -4,7 +4,7 @@ MEMORY { IP65ZP: start = $20, size = $13, type = rw, define = yes; #this cart replaces BASIC so ok to use that space HEADER: start = $8000, size = $18, file = %O; DEFAULTS: start = $8018, size = $1E, file = %O; - ROM: start = $8036, size = $3FC8, define = yes, file = %O; + ROM: start = $8036, size = $3FCA, define = yes, file = %O; RAM: start = $C010, size = $0fE0, define = yes; RAM2: start = $0334, size = $CB, define = yes; #extra scratch area - Tape I/O buffer RAM3: start = $0800, size = $7800, define = yes; #scratch area for apps embedded in cart to use diff --git a/client/drivers/c64_disk_access.s b/client/drivers/c64_disk_access.s index 0cd63b8..6245c00 100644 --- a/client/drivers/c64_disk_access.s +++ b/client/drivers/c64_disk_access.s @@ -12,6 +12,7 @@ .export io_sector_no .export io_track_no .export io_read_sector +.export io_write_sector .export io_read_catalogue .export io_read_catalogue_ex .export io_read_file @@ -34,6 +35,7 @@ CHKIN = $ffc6 CHKOUT = $ffc9 CHRIN = $ffcf CHROUT = $ffd2 +CLRCHN = $ffcc CLALL = $FFE7 CLOSE = $ffc3 OPEN = $ffc0 @@ -144,16 +146,11 @@ read_file_callback: io_read_file_with_callback: stax sector_buffer_address + jsr CLALL jsr parse_filename jsr SETNAM - lda io_device_no - beq @drive_id_set - clc - adc #07 ;so 01->08, 02->09 etc - sta drive_id -@drive_id_set: - + jsr set_drive_id lda #$02 ; file number 2 ldx drive_id ldy #02 ; secondary address 2 @@ -209,12 +206,7 @@ io_read_file_with_callback: @empty_sector: @close: - lda #$02 ; filenumber 2 - jsr CLOSE - ldx #$00 ;keyboard now used as input - jsr CHKIN - clc - rts + jmp close_filenumber_2 @device_error: lda #KPR_ERROR_DEVICE_FAILURE sta ip65_error @@ -332,8 +324,113 @@ extended_catalogue_flag_set: jsr write_byte_to_buffer rts +set_drive_id: + lda io_device_no + beq @drive_id_set + clc + adc #07 ;so 01->08, 02->09 etc + sta drive_id +@drive_id_set: + rts -;routine to read a sector +;routine to write a sector +;cribbed from http://codebase64.org/doku.php?id=base:writing_a_sector_to_disk (credited to "Graham") +;inputs: +; io_device_number set to specify drive to use ($00 = same as last time, $01 = first disk (i.e. #8), $02 = 2nd disk (drive #9)) +; io_sector_no - set to sector number to be written +; io_track_no - set to track number to be written (only lo byte is used) +; AX - address of buffer to to write to sector +; outputs:; on errror, carry flag is set. +io_write_sector: + stax sector_buffer_address + jsr set_drive_id + jsr CLALL + lda #$32 ;"2" + jsr make_user_command + lda #1 + ldx #cname + jsr SETNAM + lda #02 + ldx drive_id + ldy #02 + jsr SETLFS + jsr OPEN + bcs @error + + lda #7 + ldx #bpname + jsr SETNAM + lda #15 + ldx drive_id + ldy #15 + jsr SETLFS + jsr OPEN + bcs @error + + jsr check_error_channel + lda #$30 + cmp error_buffer + bne @error + + ldx #$02 ; filenumber 2 + jsr CHKOUT ; file 2 now used as output + + ldax sector_buffer_address + stax buffer_ptr + ldy #0 +: + lda (buffer_ptr),y ;get next byte in sector + jsr CHROUT ;write it out + iny + bne :- + + ldx #$0F ; filenumber 15 + jsr CHKOUT ; file 15 now used as output + + ldy #$00 +: + lda command_buffer,y + beq :+ + jsr CHROUT ;write byte to command channel + iny + bne :- +: + + lda #$0d ; carriage return, required to start command + jsr CHROUT ;write it out + jsr check_error_channel + lda #$30 + cmp error_buffer + bne @error + +@close: + jsr close_filenumbers_2_and_15 + jsr CLRCHN + clc + rts + +@error: + lda #KPR_ERROR_DEVICE_FAILURE + sta ip65_error + jsr @close + sec + rts + + +close_filenumbers_2_and_15: + lda #15 ; filenumber 15 + jsr CLOSE +close_filenumber_2: + lda #$02 ; filenumber 2 + jsr CLOSE + ldx #$00 ; filenumber 0 = keyboard + jsr CHKIN ;(keyboard now input device again) + clc + rts + +;routine to read a sector (credited to "Graham") ;cribbed from http://codebase64.org/doku.php?id=base:reading_a_sector_from_disk ;inputs: ; io_device_number set to specify drive to use ($00 = same as last time, $01 = first disk (i.e. #8), $02 = 2nd disk (drive #9)) @@ -346,14 +443,10 @@ extended_catalogue_flag_set: io_read_sector: stax sector_buffer_address - lda io_device_no - beq @drive_id_set - clc - adc #07 ;so 01->08, 02->09 etc - sta drive_id -@drive_id_set: - jsr make_read_sector_command - ldax command_buffer + jsr set_drive_id + jsr CLALL + lda #$31 ;"1" + jsr make_user_command lda #1 ldx #cname @@ -394,14 +487,7 @@ io_read_sector: iny bne @loop ; next byte, end when 256 bytes are read @close: - lda #15 ; filenumber 15 - jsr CLOSE - lda #$02 ; filenumber 2 - jsr CLOSE - ldx #$00 ; filenumber 0 = keyboard - jsr CHKIN ;(keyboard now input device again) - clc - rts + jmp close_filenumbers_2_and_15 @error: lda #KPR_ERROR_DEVICE_FAILURE sta ip65_error @@ -443,15 +529,18 @@ check_error_channel: JSR CHKIN ;(keyboard now input device again) rts -make_read_sector_command: -;fill command buffer with command to read in track & sector +make_user_command: +;fill command buffer with "U " command, where "x" is passed in via A +;i.e. A=1 makes command to read in track & sector +;A=2 makes command to write track & sector ;returns length of command in Y + pha ldy #0 lda #85 ;"U" sta command_buffer,y iny - lda #$31 ;"1" + pla sta command_buffer,y iny lda #$20 ;" " @@ -524,4 +613,5 @@ byte_to_ascii: rts .rodata -cname: .byte '#' \ No newline at end of file +cname: .byte '#' +bpname: .byte "B-P 2 0" \ No newline at end of file diff --git a/client/drivers/c64charconv.s b/client/drivers/c64charconv.s index 0486f37..b1ee56a 100644 --- a/client/drivers/c64charconv.s +++ b/client/drivers/c64charconv.s @@ -24,7 +24,7 @@ ascii_to_petscii_table: .byte $20,$21,$22,$23,$24,$25,$26,$27,$28,$29,$2a,$2b,$2c,$2d,$2e,$2f .byte $30,$31,$32,$33,$34,$35,$36,$37,$38,$39,$3a,$3b,$3c,$3d,$3e,$3f .byte $40,$c1,$c2,$c3,$c4,$c5,$c6,$c7,$c8,$c9,$ca,$cb,$cc,$cd,$ce,$cf -.byte $d0,$d1,$d2,$d3,$d4,$d5,$d6,$d7,$d8,$d9,$da,$5b,$5c,$5d,$5e,$5f +.byte $d0,$d1,$d2,$d3,$d4,$d5,$d6,$d7,$d8,$d9,$da,$5b,$5c,$5d,$5e,$a4 .byte $c0,$41,$42,$43,$44,$45,$46,$47,$48,$49,$4a,$4b,$4c,$4d,$4e,$4f .byte $50,$51,$52,$53,$54,$55,$56,$57,$58,$59,$5a,$db,$dc,$dd,$de,$df .byte $80,$81,$82,$83,$84,$85,$86,$87,$88,$89,$8a,$8b,$8c,$8d,$8e,$8f diff --git a/client/examples/Makefile b/client/examples/Makefile index ae6dab2..3f17818 100644 --- a/client/examples/Makefile +++ b/client/examples/Makefile @@ -14,7 +14,7 @@ INCFILES=\ ../inc/commonprint.i\ ../inc/net.i\ -all: upnatom.prg upnatom.d64 httpd.d64 raster.prg sidplay.prg sidplay_zigzag.prg +all: upnatom.prg upnatom.d64 httpd.d64 raster.prg sidplay.prg sidplay_zigzag.prg irc.d64 %.o: %.s $(AS) $(AFLAGS) $< @@ -41,9 +41,9 @@ upnatom.d64: upnatom.prg url.cfg httpd.prg: httpd.asm $(DA) httpd.asm -ohttpd.prg -httpd.d64: httpd.prg url.cfg - cp httpd.prg autoexec.prg - ripxplore.rb --init CbmDos httpd.d64 -a autoexec.prg +%.d64: %.prg + cp $*.prg autoexec.prg + ripxplore.rb --init CbmDos $*.d64 -a autoexec.prg clean: rm -f *.o *.pg2 *.prg *.map upnatom.d64 diff --git a/client/examples/irc.s b/client/examples/irc.s new file mode 100644 index 0000000..b4196c2 --- /dev/null +++ b/client/examples/irc.s @@ -0,0 +1,303 @@ + +.include "../inc/common.i" + +.ifndef KPR_API_VERSION_NUMBER + .define EQU = + .include "../inc/kipper_constants.i" +.endif + +print_a = $ffd2 + +.import ascii_to_native + +.macro kippercall function_number + ldy function_number + jsr KPR_DISPATCH_VECTOR +.endmacro + +.zeropage +temp_buff: .res 2 +pptr: .res 2 + +.segment "STARTUP" ;this is what gets put at the start of the file on the C64 + +.word basicstub ; load address + +basicstub: + .word @nextline + .word 2003 + .byte $9e + .byte <(((init / 1000) .mod 10) + $30) + .byte <(((init / 100 ) .mod 10) + $30) + .byte <(((init / 10 ) .mod 10) + $30) + .byte <(((init ) .mod 10) + $30) + .byte 0 +@nextline: + .word 0 + +init: + + .import cls + jsr cls + lda #14 + jsr print_a ;switch to lower case + + ldax #KPR_CART_SIGNATURE ;where signature should be in cartridge (if cart is banked in) +look_for_signature: + stax temp_buff + ldy #5 +@check_one_byte: + lda (temp_buff),y + cmp kipper_signature,y + bne @bad_match + dey + bpl @check_one_byte + jmp @found_kipper_signature + +@bad_match: + ldax #kipper_api_not_found_message + jsr print + rts +@found_kipper_signature: + ldax #init_msg + jsr print + kippercall #KPR_INITIALIZE + bcc @init_ok + jsr print_cr + ldax #failed_msg + jsr print + jsr print_cr + jsr print_errorcode + jmp reset_after_keypress +@init_ok: +;if we got here, we have found the KIPPER API and initialised the IP stack + jsr print_ok + jsr print_cr + ldax #connecting_msg + jsr print + jsr connect_to_irc + bcc @connect_ok + jsr print_errorcode + jmp reset_after_keypress +@connect_ok: + + jsr print_ok + jsr print_cr + jsr send_nick + jsr send_user + jsr send_join + +@endless_loop: + jsr KPR_PERIODIC_PROCESSING_VECTOR + jmp @endless_loop + +print_ok: +ldax #ok_msg +jmp print + +reset_after_keypress: + ldax #press_a_key_to_continue + jsr print +@wait_key: + jsr $f142 ;not officially documented - where F13E (GETIN) falls through to if device # is 0 (KEYBD) + beq @wait_key + jmp $fce2 ;do a cold start + +print_errorcode: + ldax #error_code + jsr print + kippercall #KPR_GET_LAST_ERROR + kippercall #KPR_PRINT_HEX + jmp print_cr + + +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 + +print_cr: + lda #13 + jmp print_a + + +connect_to_irc: + ldax #irc_server + stax param_buffer + ldax #param_buffer + kippercall #KPR_DNS_RESOLVE + bcs @exit + + ;IP address now set + ldax irc_port + stax param_buffer+KPR_TCP_PORT + ldax #irc_callback + stax param_buffer+KPR_TCP_CALLBACK + ldax #param_buffer + kippercall #KPR_TCP_CONNECT + +@exit: + rts + +send_nick: + ldx #0 +: + lda nick_msg,x + beq :+ + sta command_buffer,x + inx + bne :- +: + ldy #0 +: + lda nick,y + beq :+ + sta command_buffer,x + iny + inx + bne :- +: + +add_crlf_and_send_command: + lda #13 + sta command_buffer,x + inx + lda #10 + sta command_buffer,x + inx + txa + ldx #0 + stax param_buffer+KPR_TCP_PAYLOAD_LENGTH + ldax #command_buffer + stax param_buffer+KPR_TCP_PAYLOAD_POINTER + ldax #param_buffer + kippercall #KPR_SEND_TCP_PACKET + rts + +send_user: + ldax #user_msg_length + stax param_buffer+KPR_TCP_PAYLOAD_LENGTH + ldax #user_msg + stax param_buffer+KPR_TCP_PAYLOAD_POINTER + ldax #param_buffer + kippercall #KPR_SEND_TCP_PACKET + rts + +send_join: + ldx #0 +: + lda join_msg,x + beq :+ + sta command_buffer,x + inx + bne :- +: + ldy #0 +: + lda irc_channel,y + beq :+ + sta command_buffer,x + iny + inx + bne :- +: + + jmp add_crlf_and_send_command + +irc_callback: + ldax #param_buffer + kippercall #KPR_GET_INPUT_PACKET_INFO + lda param_buffer+KPR_PAYLOAD_LENGTH+1 + cmp #$ff + bne @not_eof + rts +@not_eof: + ldax param_buffer+KPR_PAYLOAD_POINTER + stax pptr + ldax param_buffer+KPR_PAYLOAD_LENGTH + stax input_length +: + +@print_loop: + ldy #0 + lda (pptr),y + jsr ascii_to_native + jsr print_a + dec input_length + lda input_length + cmp #$ff + bne :+ + dec input_length+1 + lda input_length + cmp #$ff + beq @done_print +: + 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 + +.bss +param_buffer: .res 20 +command_buffer: .res 256 +input_length: .res 2 + +.data + +irc_server: + ;.byte "irc.newnet.net",0 + .byte "jamtronix.com",0 +irc_port: + .word 6667 +irc_channel: + .byte "#foo",0 + + +nick_msg: + .byte "NICK ",0 + +nick: + .byte "kipper_nick2",0 + +join_msg: + .byte "JOIN ",0 + +user_msg: + .byte "USER kipper 0 unused :A Kipper User",13,10 +user_msg_length=*-user_msg + +kipper_api_not_found_message: + .byte "ERROR - KIPPER API NOT FOUND.",13,0 + +failed_msg: + .byte "FAILED", 0 + +ok_msg: + .byte "OK", 0 +init_msg: + .byte "INITIALIZING ",0 + connecting_msg: + .byte "CONNECTING ",0 + +press_a_key_to_continue: + .byte "PRESS A KEY TO CONTINUE",13,0 + +kipper_signature: +.byte $4B,$49,$50,$50,$45,$52 ; "KIPPER" + +error_code: + .asciiz "ERROR CODE: " + diff --git a/client/examples/upnatom.s b/client/examples/upnatom.s index a285f20..546384c 100644 --- a/client/examples/upnatom.s +++ b/client/examples/upnatom.s @@ -1,9 +1,9 @@ .include "../inc/common.i" -.ifndef NB65_API_VERSION_NUMBER +.ifndef KPR_API_VERSION_NUMBER .define EQU = - .include "../inc/nb65_constants.i" + .include "../inc/kipper_constants.i" .endif print_a = $ffd2 @@ -76,9 +76,9 @@ LIGHT_GRAY = 15 beq @loop .endmacro -.macro nb65call function_number +.macro kippercall function_number ldy function_number - jsr NB65_DISPATCH_VECTOR + jsr KPR_DISPATCH_VECTOR .endmacro .zeropage @@ -103,32 +103,29 @@ basicstub: init: - ldax #NB65_CART_SIGNATURE ;where signature should be in cartridge (if cart is banked in) - jsr look_for_signature - bcc @found_nb65_signature - - ldax #NB65_RAM_STUB_SIGNATURE ;where signature should be in a RAM stub - jsr look_for_signature - bcs @nb65_signature_not_found - jsr NB65_RAM_STUB_ACTIVATE ;we need to turn on NB65 cartridge - jmp @found_nb65_signature + ldax #KPR_CART_SIGNATURE ;where signature should be in cartridge (if cart is banked in) +look_for_signature: + stax temp_buff + ldy #5 +@check_one_byte: + lda (temp_buff),y + cmp kipper_signature,y + bne @bad_match + dey + bpl @check_one_byte + jmp @found_kipper_signature -@nb65_signature_not_found: - ldax #nb65_api_not_found_message +@bad_match: + ldax #kipper_api_not_found_message jsr print +@loop: + jmp @loop rts -@found_nb65_signature: +@found_kipper_signature: - lda NB65_API_VERSION - cmp #02 - bpl @version_ok - ldax #incorrect_version - jsr print - jmp reset_after_keypress -@version_ok: ldax #init_msg jsr print - nb65call #NB65_INITIALIZE + kippercall #KPR_INITIALIZE bcc @init_ok jsr print_cr ldax #failed_msg @@ -138,15 +135,15 @@ init: jmp reset_after_keypress @init_ok: -;if we got here, we have found the NB65 API and initialised the IP stack +;if we got here, we have found the KIPPER API and initialised the IP stack ;try and load the config file ldax #read_url_file_param_buffer - nb65call #NB65_FILE_LOAD + kippercall #KPR_FILE_LOAD bcs @use_default_url clc lda #0 - ldy read_url_file_param_buffer+NB65_FILE_ACCESS_FILESIZE + ldy read_url_file_param_buffer+KPR_FILE_ACCESS_FILESIZE sta feed_url,y ;put a zero at the end of the URL @use_default_url: @@ -164,34 +161,34 @@ init: ;copy our music data up to a temp buffer (in case it gets overwritten by ;one of the other unpacking moves) ldax #musicdata+2 ;skip over the 2 byte address - stax nb65_param_buffer+NB65_BLOCK_SRC + stax param_buffer+KPR_BLOCK_SRC ldax #download_buffer - stax nb65_param_buffer+NB65_BLOCK_DEST + stax param_buffer+KPR_BLOCK_DEST ldax #musicdata_size-2 ;don't copy the 2 byte address - stax nb65_param_buffer+NB65_BLOCK_SIZE - ldax #nb65_param_buffer - nb65call #NB65_BLOCK_COPY + stax param_buffer+KPR_BLOCK_SIZE + ldax #param_buffer + kippercall #KPR_BLOCK_COPY ;copy our font data and the sprite data to $2000..$2fff ldax #charset_font - stax nb65_param_buffer+NB65_BLOCK_SRC + stax param_buffer+KPR_BLOCK_SRC ldax #$2000 - stax nb65_param_buffer+NB65_BLOCK_DEST + stax param_buffer+KPR_BLOCK_DEST ldax #MUSIC_BASE - stax nb65_param_buffer+NB65_BLOCK_SIZE - ldax #nb65_param_buffer - nb65call #NB65_BLOCK_COPY + stax param_buffer+KPR_BLOCK_SIZE + ldax #param_buffer + kippercall #KPR_BLOCK_COPY ;should now be now safe to copy the music data back down ;copy our music data to $1000..$1fff ldax #download_buffer - stax nb65_param_buffer+NB65_BLOCK_SRC + stax param_buffer+KPR_BLOCK_SRC ldax #MUSIC_BASE - stax nb65_param_buffer+NB65_BLOCK_DEST + stax param_buffer+KPR_BLOCK_DEST ldax #musicdata_size-2 ;don't copy the 2 byte address - stax nb65_param_buffer+NB65_BLOCK_SIZE - ldax #nb65_param_buffer - nb65call #NB65_BLOCK_COPY + stax param_buffer+KPR_BLOCK_SIZE + ldax #param_buffer + kippercall #KPR_BLOCK_COPY lda #$18 ; use charset at $2000 sta VIC_MEMORY_CTRL @@ -217,21 +214,21 @@ init: ;copy KERNAL to the RAM underneath, in case any ip65 routines need it ldax #$e000 - stax nb65_param_buffer+NB65_BLOCK_SRC - stax nb65_param_buffer+NB65_BLOCK_DEST + stax param_buffer+KPR_BLOCK_SRC + stax param_buffer+KPR_BLOCK_DEST ldax #$1FFF - stax nb65_param_buffer+NB65_BLOCK_SIZE - ldax #nb65_param_buffer - nb65call #NB65_BLOCK_COPY + stax param_buffer+KPR_BLOCK_SIZE + ldax #param_buffer + kippercall #KPR_BLOCK_COPY - ;copy NB65 cart to the RAM underneath, so we can swap it out and modify the IRQ vector + ;copy KIPPER cart to the RAM underneath, so we can swap it out and modify the IRQ vector ldax #$8000 - stax nb65_param_buffer+NB65_BLOCK_SRC - stax nb65_param_buffer+NB65_BLOCK_DEST + stax param_buffer+KPR_BLOCK_SRC + stax param_buffer+KPR_BLOCK_DEST ldax #$4000 - stax nb65_param_buffer+NB65_BLOCK_SIZE - ldax #nb65_param_buffer - nb65call #NB65_BLOCK_COPY + stax param_buffer+KPR_BLOCK_SIZE + ldax #param_buffer + kippercall #KPR_BLOCK_COPY lda #$35 ;we turn off the BASIC and KERNAL rom here, so we can overwrite the IRQ vector at $fffe @@ -260,13 +257,13 @@ init: @download_feed: ldax #feed_url - stax nb65_param_buffer+NB65_URL + stax param_buffer+KPR_URL ldax #download_buffer - stax nb65_param_buffer+NB65_URL_DOWNLOAD_BUFFER + stax param_buffer+KPR_URL_DOWNLOAD_BUFFER ldax #download_buffer_length - stax nb65_param_buffer+NB65_URL_DOWNLOAD_BUFFER_LENGTH - ldax #nb65_param_buffer - nb65call #NB65_DOWNLOAD_RESOURCE + stax param_buffer+KPR_URL_DOWNLOAD_BUFFER_LENGTH + ldax #param_buffer + kippercall #KPR_DOWNLOAD_RESOURCE bcs @download_feed ;if at first we don't succeed, try try again @@ -282,7 +279,7 @@ init: @endless_loop: - jsr NB65_PERIODIC_PROCESSING_VECTOR + jsr KPR_PERIODIC_PROCESSING_VECTOR lda scroll_state beq @download_feed jmp @endless_loop @@ -310,21 +307,6 @@ reset_input_buffer: stax current_input_ptr rts -;look for NB65 signature at location pointed at by AX -look_for_signature: - stax temp_buff - ldy #3 -@check_one_byte: - lda (temp_buff),y - cmp nb65_signature,y - bne @bad_match - dey - bpl @check_one_byte - clc - rts -@bad_match: - sec - rts ;set up the tune @@ -560,17 +542,17 @@ setup_static_scroll_text: jsr get_a cmp #'i' bne @not_ip - lda #NB65_CFG_IP + lda #KPR_CFG_IP jmp @loaded_offset @not_ip: cmp #'g' bne @not_gateway - lda #NB65_CFG_GATEWAY + lda #KPR_CFG_GATEWAY jmp @loaded_offset @not_gateway: cmp #'d' bne @not_dns - lda #NB65_CFG_DNS_SERVER + lda #KPR_CFG_DNS_SERVER jmp @loaded_offset @not_dns: cmp #'f' @@ -588,7 +570,7 @@ setup_static_scroll_text: @loaded_offset: sta param_offset - nb65call #NB65_GET_IP_CONFIG + kippercall #KPR_GET_IP_CONFIG adc param_offset bcc :+ inx @@ -689,16 +671,16 @@ reset_after_keypress: print_errorcode: ldax #error_code jsr print - nb65call #NB65_GET_LAST_ERROR - nb65call #NB65_PRINT_HEX + kippercall #KPR_GET_LAST_ERROR + kippercall #KPR_PRINT_HEX jmp print_cr -update_nb65_counters_irq: +update_KPR_counters_irq: start_irq - jsr NB65_VBL_VECTOR + jsr KPR_VBL_VECTOR jmp exit_from_irq @@ -711,10 +693,10 @@ play_music_irq: emit_titles: ldax #download_buffer - nb65call #NB65_PARSER_INIT + kippercall #KPR_PARSER_INIT @next_title: ldax #title - nb65call #NB65_PARSER_SKIP_NEXT + kippercall #KPR_PARSER_SKIP_NEXT bcs @done jsr emit_tag_contents @@ -835,7 +817,7 @@ raster_jump_table: .word pixel_scroll_irq .byte $0,$30 - .word update_nb65_counters_irq + .word update_KPR_counters_irq .byte $0,$80 .word play_music_irq @@ -886,19 +868,17 @@ url_config_file: .byte "URL.CFG",0 read_url_file_param_buffer: - .word url_config_file ;NB65_FILE_ACCESS_FILENAME + .word url_config_file ;KPR_FILE_ACCESS_FILENAME .word feed_url ;B65_FILE_ACCESS_POINTER - .word $0000 ;NB65_FILE_ACCESS_FILESIZE - should be filled in - .byte $00 ;NB65_FILE_ACCESS_DEVICE + .word $0000 ;KPR_FILE_ACCESS_FILESIZE - should be filled in + .byte $00 ;KPR_FILE_ACCESS_DEVICE title: .byte "",0 -nb65_api_not_found_message: - .byte "ERROR - NB65 API NOT FOUND.",13,0 -incorrect_version: - .byte "ERROR - NB65 API MUST BE AT LEAST VERSION 2.",13,0 +kipper_api_not_found_message: + .byte "ERROR - KIPPER API NOT FOUND.",13,0 failed_msg: .byte "FAILED", 0 @@ -913,8 +893,8 @@ init_msg: press_a_key_to_continue: .byte "PRESS A KEY TO CONTINUE",13,0 -nb65_signature: -.byte $4E,$42,$36,$35 ; "NB65" - API signature +kipper_signature: +.byte $4B,$49,$50,$50,$45,$52 ; "KIPPER" error_code: .asciiz "ERROR CODE: " @@ -938,10 +918,10 @@ temp_bcd: .res 2 scroll_state: .res 1 -nb65_param_buffer: .res $20 +param_buffer: .res $20 download_buffer: -download_buffer_length=8000 +download_buffer_length=12000 .res download_buffer_length .res 10 ;filler diff --git a/client/inc/commonprint.i b/client/inc/commonprint.i index 82f31a7..a83060d 100644 --- a/client/inc/commonprint.i +++ b/client/inc/commonprint.i @@ -13,7 +13,6 @@ .export print_ascii_as_native .export print_integer .export print_dotted_quad - .export print_arp_cache .export mac_address_msg .export ip_address_msg .export netmask_msg @@ -181,52 +180,6 @@ print_ascii_as_native: rts -print_arp_cache: - ldax #arp_cache_header - jsr print - ldax #arp_cache - stax temp_ptr - lda #ac_size -@print_one_arp_entry: - pha - lda #'$' - jsr print_a - lda temp_ptr+1 - jsr print_hex - lda temp_ptr - jsr print_hex - lda #' ' - jsr print_a - - ldax temp_ptr - jsr print_mac - lda #' ' - jsr print_a - ldax temp_ptr - clc - adc #6 - bcc :+ - inx -: - stax temp_ptr - jsr print_dotted_quad - ldax temp_ptr - clc - adc #4 - bcc :+ - inx -: - stax temp_ptr - jsr print_cr - pla - sec - sbc #1 - - bne @print_one_arp_entry - clc - rts - - ;print the 4 bytes pointed at by AX as dotted decimals print_dotted_quad: sta pptr diff --git a/client/inc/disk_transfer.i b/client/inc/disk_transfer.i new file mode 100644 index 0000000..7354459 --- /dev/null +++ b/client/inc/disk_transfer.i @@ -0,0 +1,168 @@ + +.import io_track_no +.import io_sector_no +.import io_write_sector + + +.segment "APP_SCRATCH" + track: .res 1 + sector: .res 1 + errors: .res 1 + sectors_in_track: .res 1 + sector_buffer_address: .res 2 + +;the io_* an tftp_* routines both use the 'output_buffer' so we lose the data in the second sector +;therefore we need to copy the data to here before we use it + sector_buffer: .res 512 + +.code +download_d64: + stax kipper_param_buffer+KPR_TFTP_FILENAME + jsr cls + ldax #downloading_msg + jsr print_ascii_as_native + ldax kipper_param_buffer+KPR_TFTP_FILENAME + jsr print_ascii_as_native + jsr reset_counters_to_first_sector + ldax #write_next_block + stax kipper_param_buffer+KPR_TFTP_POINTER + ldax #kipper_param_buffer + kippercall #KPR_TFTP_CALLBACK_DOWNLOAD + bcc :+ + jsr print_cr + print_failed + jsr print_errorcode + jsr print_cr +: + print_ok + ldax #press_a_key_to_continue + jsr print + jsr get_key + rts + + +save_sector: + ldax #position_cursor_for_track_display + jsr print + jsr print_current_sector + + lda track + sta io_track_no + + lda sector + sta io_sector_no + + ldax sector_buffer_address + jsr io_write_sector + bcc :+ + inc errors +: + jmp move_to_next_sector + +write_next_block: +;tftp download callback routine +;AX will point at block to be written (prepended with 2 bytes indicating block length) + clc + adc #02 ;skip the 2 byte length at start of buffer + bcc :+ + inx +: + stax copy_src + ldax #sector_buffer + stax copy_dest + stax sector_buffer_address + ldax #$200 + jsr copymem + + + + + jsr save_sector + + bcc @not_last_sector + rts +@not_last_sector: + inc sector_buffer_address+1 + jsr save_sector + rts + +@past_last_track: + rts + + +print_current_sector: + ldax #track_no + jsr print_ascii_as_native + lda track + jsr print_hex + ldax #sector_no + jsr print_ascii_as_native + lda sector + jsr print_hex + ldax #errors_msg + jsr print_ascii_as_native + lda errors + jsr print_hex + jsr print_cr + rts + + +reset_counters_to_first_sector: + ldx #1 + stx track + dex + stx sector + stx errors + ldx #21 + stx sectors_in_track + rts + +move_to_next_sector: + inc sector + lda sector + cmp sectors_in_track + beq @move_to_next_track + rts +@move_to_next_track: + lda #0 + sta sector + inc track + lda track + cmp #18 + bne @not_track_18 + lda #19 + sta sectors_in_track + clc + rts +@not_track_18: + cmp #25 + bne @not_track_25 + lda #18 + sta sectors_in_track + clc + rts +@not_track_25: + cmp #31 + bne @not_track_31 + lda #17 + sta sectors_in_track + clc + rts +@not_track_31: + lda track + cmp #36 ;carry will be set if hit track 36 + rts + + +.rodata + +track_no: + .byte "TRACK $",0 + +sector_no: + .byte " SECTOR $",0 +errors_msg: + .byte " ERRORS $",0 +position_cursor_for_track_display: +.byte $13,13,13,0 + diff --git a/client/inc/kipper_constants.i b/client/inc/kipper_constants.i index a411215..ea98eca 100644 --- a/client/inc/kipper_constants.i +++ b/client/inc/kipper_constants.i @@ -115,11 +115,6 @@ KPR_PAYLOAD_LENGTH EQU $08 ;2 byte length of payload o ; in a TCP connection, if the length is $FFFF, this actually means "end of connection" KPR_PAYLOAD_POINTER EQU $0A ;2 byte pointer to payload of packet (after all headers) -;offsets in ICMP listener parameter structure -KPR_ICMP_LISTENER_TYPE EQU $00 ;ICMP type -KPR_ICMP_LISTENER_CALLBACK EQU $01 ;2 byte address of routine to call when ICMP packet of specified type arrives - - ;offsets in URL download structure ;inputs: KPR_URL EQU $00 ;2 byte pointer to null terminated URL (NB - must be ASCII not "native" string) diff --git a/client/inc/sidplay.i b/client/inc/sidplay.i new file mode 100644 index 0000000..380b604 --- /dev/null +++ b/client/inc/sidplay.i @@ -0,0 +1,278 @@ +.import copymem +.import ascii_to_native +.importzp copy_src +.importzp copy_dest + +.code + +load_sid: + stax sidfile_address + stax copy_src + + ldy #1 + lda (copy_src),y + cmp #'S' ;make sure the file starts with 'PSID' or 'RSID' + beq @ok + sec + rts +@ok: + ldy #7 + lda (copy_src),y + sta header_length + + inc header_length + inc header_length + + tay + ;y now points to the start of the real c64 file + lda (copy_src),y + sta copy_dest + iny + lda (copy_src),y + sta copy_dest+1 + + ldy #$0a + lda (copy_src),y + sta init_song_handler+2 + iny + lda (copy_src),y + sta init_song_handler+1 + iny + lda (copy_src),y + sta play_song_handler+2 + iny + lda (copy_src),y + sta play_song_handler+1 + + ldy #$0f + lda (copy_src),y + sta number_of_songs + + ldy #$11 + lda (copy_src),y + sta default_song + + ldy #$16 + jsr print_ascii_string + + ldy #$36 + jsr print_ascii_string + ldy #$56 + jsr print_ascii_string + + ldax #songs + jsr print + + lda number_of_songs + jsr print_hex + jsr print_cr + + + ldax #load_address + jsr print + lda copy_dest+1 + jsr print_hex + lda copy_dest + jsr print_hex + jsr print_cr + + ldax #play_address + jsr print + lda play_song_handler+2 + jsr print_hex + lda play_song_handler+1 + jsr print_hex + jsr print_cr + + + ldax #init_address + jsr print + lda init_song_handler+2 + jsr print_hex + lda init_song_handler+1 + jsr print_hex + jsr print_cr + + ldax sidfile_address + stax copy_src + + + clc + lda sidfile_address + adc header_length + pha + lda sidfile_address+1 + adc #0 + tax + pla + stax copy_src + sec + lda sidfile_length + sbc header_length + pha + lda sidfile_length+1 + sbc #0 + tax + pla + jsr copymem + + clc + rts + +play_sid: + + lda default_song + sta current_song + jsr init_song + jsr install_irq_handler + jsr print_current_song +@keypress_loop: + jsr get_key_ip65 + cmp #KEYCODE_ABORT + bne @not_abort + jsr remove_irq_handler + jsr reset_sid + rts + +@not_abort: + + cmp #KEYCODE_DOWN + bne @not_down + dec current_song + bne :+ + inc current_song +: + jmp @reset_song +@not_down: + + + + cmp #KEYCODE_UP + bne @not_up + lda current_song + cmp number_of_songs + beq :+ + inc current_song +: + jmp @reset_song +@not_up: + jmp @keypress_loop + +@reset_song: + jsr print_current_song + lda current_song + jsr init_song + jmp @keypress_loop + + +print_current_song: + + ldax #song_number + jsr print + lda current_song + jsr print_hex + rts +reset_sid: + lda #$00 + sta $D404 + sta $D40B + sta $D412 + sta $D418 + rts + +remove_irq_handler: + ldax jmp_old_irq+1 + sei ;don't want any interrupts while we fiddle with the vector + stax $314 ;previous IRQ handler + cli + rts + +install_irq_handler: + ldax $314 ;previous IRQ handler + stax jmp_old_irq+1 + sei ;don't want any interrupts while we fiddle with the vector + ldax #irq_handler + stax $314 ;previous IRQ handler + cli + rts + +irq_handler: + + + lda $d012 + cmp #100 + bne irq_handler + + + inc $d020 + jsr play_song + dec $d020 + + jmp jmp_old_irq + + +print_ascii_string: +: + lda (copy_src),y + beq :+ + jsr ascii_to_native + jsr print_a + iny + bne :- + : + jmp print_cr + + + +.segment "APP_SCRATCH" +number_of_songs: .res 1 +default_song: .res 1 +sidfile_address: .res 2 +header_length: .res 1 +sidfile_length: .res 2 +current_song: .res 1 +.rodata + +songs: + .byte "SONGS $",0 +error: + .byte "ERROR",13,0 +load_address: + .byte "LOAD ADDRESS $",0 +play_address: + .byte "PLAY ADDRESS $",0 +init_address: + .byte "INIT ADDRESS $",0 + +song_number: + .byte 19,17,17,17,17,17,17,17,"CURRENT SONG NUMBER $",0 + +.segment "SELF_MODIFIED_CODE" + + +init_song: + lda $01 + pha + lda #$35 + sta $01 + lda current_song +init_song_handler: + jsr $ffff + pla + sta $01 + rts + + +play_song: + lda $01 + pha + lda #$35 + sta $01 +play_song_handler: + jsr $ffff + pla + sta $01 + rts +jmp_old_irq: + jmp $ffff + diff --git a/client/tcp_test.bat b/client/tcp_test.bat index 6b80aad..245992e 100644 --- a/client/tcp_test.bat +++ b/client/tcp_test.bat @@ -1 +1 @@ -start c:\temp\WinVICE-2.1\x64.exe -cart16 nb65\kippernet.bin \ No newline at end of file +start c:\temp\WinVICE-2.1\x64.exe -cart16 carts\kipperkart.bin \ No newline at end of file diff --git a/client/test/test_disk_io.s b/client/test/test_disk_io.s index 0ff5c74..c7c0ee0 100644 --- a/client/test/test_disk_io.s +++ b/client/test/test_disk_io.s @@ -12,6 +12,8 @@ .import io_sector_no .import io_track_no .import io_read_sector +.import io_write_sector + .import io_read_file_with_callback .import io_read_file .import io_filename @@ -62,6 +64,82 @@ init: sta $d018 + + ;test we can write sector to default desk + + ldx #$00 +@fill_sector_loop: + txa + sta sector_buffer,x + inx + bne @fill_sector_loop + + lda #$01 + sta io_track_no + lda #$01 + sta io_sector_no + ldax #write_sector + jsr print + lda io_sector_no + jsr print_hex + jsr print_cr + ldax #sector_buffer + jsr io_write_sector + + bcc :+ + jsr print_error_code + rts +: + + + + inc io_sector_no + ldax #write_sector + jsr print + lda io_sector_no + jsr print_hex + jsr print_cr + ldax #sector_buffer + jsr io_write_sector + + bcc :+ + jsr print_error_code + rts +: + + inc io_sector_no + ldax #write_sector + jsr print + lda io_sector_no + jsr print_hex + jsr print_cr + ldax #sector_buffer + jsr io_write_sector + + bcc :+ + jsr print_error_code + rts +: + + + + ;test we can read a sector from default desk + ldax #read_sector + jsr print + + lda #$01 + sta io_track_no + lda #$03 + sta io_sector_no + ldax #sector_buffer + jsr io_read_sector + bcc :+ + jsr print_error_code + rts +: + + jsr dump_sector + ;test we can read the catalogue ldax #read_catalogue jsr print @@ -310,6 +388,12 @@ dump_sector: +write_sector: + .byte "WRITING SECTOR",0 + +read_sector: + .byte "READING SECTOR",13,0 + read_catalogue: .byte "READING CATALOGUE",13,0 diff --git a/client/test/test_ping.s b/client/test/test_ping.s index a11c567..360ab76 100644 --- a/client/test/test_ping.s +++ b/client/test/test_ping.s @@ -60,7 +60,6 @@ init: jsr print_integer ldax #ms jsr print - jsr print_arp_cache rts @error: jmp print_errorcode diff --git a/client/test/testdns.s b/client/test/testdns.s index 42195d5..ece7a14 100644 --- a/client/test/testdns.s +++ b/client/test/testdns.s @@ -44,9 +44,7 @@ init: jsr print_cr jsr print_ip_config - jsr print_arp_cache init_ip_via_dhcp - jsr print_arp_cache ; jsr overwrite_with_hardcoded_dns_server jsr print_ip_config diff --git a/doc/kipper_api_technical_reference.doc b/doc/kipper_api_technical_reference.doc new file mode 100644 index 0000000000000000000000000000000000000000..f9c3239fd152948c0119e3f4896f31d419466abf GIT binary patch literal 176128 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 BKKTFu literal 0 HcmV?d00001 diff --git a/doc/nb65_api_technical_reference.doc b/doc/nb65_api_technical_reference.doc deleted file mode 100644 index bcbf07301801ffd81394cff917219de91cb43af5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 188928 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 CC1q^@