diff --git a/client/basic/bails.d64 b/client/basic/bails.d64 index da8eacc..8cd50e3 100644 Binary files a/client/basic/bails.d64 and b/client/basic/bails.d64 differ diff --git a/client/basic/kipperbas.d64 b/client/basic/kipperbas.d64 index c32d536..015a6a8 100644 Binary files a/client/basic/kipperbas.d64 and b/client/basic/kipperbas.d64 differ diff --git a/client/cfg/vic20prg.cfg b/client/cfg/vic20prg.cfg new file mode 100644 index 0000000..83e2c0b --- /dev/null +++ b/client/cfg/vic20prg.cfg @@ -0,0 +1,23 @@ +#assumes a fully expanded VIC 20 +MEMORY { + ZP: start = $02, size = $1A, type = rw ; + IP65ZP: start = $5f, size = $10, type = rw; + RAM: start = $11FF, size = $6e00, file = %O; +} +SEGMENTS { + STARTUP: load = RAM, type = ro ,define = yes, optional=yes; + CODE: load = RAM, type = ro,define = yes; + DATA: load = RAM, type = rw,define = yes; + SELF_MODIFIED_CODE: load = RAM, type = rw,define = yes, optional=yes; + VIC_DATA: load = RAM, type = rw,align = $800, optional=yes; + RODATA: load = RAM, type = ro,define = yes, optional=yes; + IP65_DEFAULTS: load = RAM, type = rw,define = yes, optional=yes; + BSS: load = RAM, type = bss, optional=yes; +# SAFE_BSS: load = RAM3000, type = bss, optional=yes; + APP_SCRATCH: load = RAM, type = bss, optional=yes; + ZEROPAGE: load = ZP, type = zp, optional=yes; + IP65ZP: load = IP65ZP, type = zp, optional=yes; + TCP_VARS: load = RAM, type = bss, optional=yes; + HTTP_VARS: load = RAM, type = bss, optional=yes; + +} diff --git a/client/drivers/Makefile b/client/drivers/Makefile index 1f17bcb..dc90cb4 100644 --- a/client/drivers/Makefile +++ b/client/drivers/Makefile @@ -15,6 +15,7 @@ DRIVERS=\ apple2prog.lib \ c64rrnet.lib \ c64wiznet.lib \ + vic20rrnet.lib \ all: $(DRIVERS) @@ -28,6 +29,9 @@ c64rrnet.lib: c64print.o rr-net.o c64timer.o c64kernal.o c64inputs.o c64_disk_ac c64wiznet.lib: w5100.o c64print.o c64timer.o c64kernal.o c64inputs.o c64_disk_access.o c64charconv.o c64_vt100.o ar65 a $@ $^ + +vic20rrnet.lib: c64print.o vic20-rr-net.o vic20timer.o c64kernal.o c64inputs.o c64_disk_access.o c64charconv.o cs8900a.o + ar65 a $@ $^ # ar65 a $@ $^ diff --git a/client/drivers/c64_disk_access.s b/client/drivers/c64_disk_access.s index 21a7c2a..ffef124 100644 --- a/client/drivers/c64_disk_access.s +++ b/client/drivers/c64_disk_access.s @@ -157,6 +157,7 @@ io_read_file_with_callback: jsr set_drive_id lda #$02 ; file number 2 ldx drive_id + ldy #02 ; secondary address 2 jsr SETLFS jsr OPEN @@ -334,7 +335,7 @@ set_drive_id: clc adc #07 ;so 01->08, 02->09 etc sta drive_id -@drive_id_set: +@drive_id_set: rts ;routine to write a sector diff --git a/client/drivers/vic20-rr-net.s b/client/drivers/vic20-rr-net.s new file mode 100644 index 0000000..925ea13 --- /dev/null +++ b/client/drivers/vic20-rr-net.s @@ -0,0 +1,56 @@ +; RR-Net driver, as seen on a VIC-20 (i.e. using a MasC=uerade adapter) + + + .export cs_init + + .export cs_packet_page + .export cs_packet_data + .export cs_rxtx_data + .export cs_tx_cmd + .export cs_tx_len + .export eth_driver_name + + +rr_ctl = $9801 ;address of 'control' port on Retro-Replay +cs_packet_page = $9802 ;address of 'packet page' port on RR-Net +cs_packet_data = $9804;address of 'packet data' port on RR-Net +cs_rxtx_data = $9808 ;address of 'recieve/transmit data' port on RR-Net +cs_tx_cmd = $980c;address of 'transmit command' port on RR-Net +cs_tx_len = $980e;address of 'transmission length' port on RR-Net + + +.code + +;initialise Retro Replay so we can access the network adapter +;inputs: none +;outputs: none +cs_init: + lda rr_ctl + ora #1 + sta rr_ctl + rts + +.rodata +eth_driver_name: + .asciiz "VIC20 RR-NET" + + + +;-- LICENSE FOR vic20-rr-net.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) 2009 +; Jonno Downes. All Rights Reserved. +; -- LICENSE END -- diff --git a/client/drivers/vic20timer.s b/client/drivers/vic20timer.s new file mode 100644 index 0000000..34a24ed --- /dev/null +++ b/client/drivers/vic20timer.s @@ -0,0 +1,81 @@ +; timer routines +; +; the timer should be a 16-bit counter that's incremented by about +; 1000 units per second. it doesn't have to be particularly accurate. +; this VIC20 implementation requires the routine timer_vbl_handler be called 60 times per second + + .include "../inc/common.i" + + + .export timer_init + .export timer_read + + IRQ_VECTOR=$314 + + .bss + current_time_value: .res 2 + + .data + jmp_old_handler: + .byte $4c ;JMP +old_handler: + .word $00 + + .code + +;reset timer to 0 +;inputs: none +;outputs: none +timer_init: + lda old_handler + bne @handler_installed + ldax IRQ_VECTOR + stax old_handler + ldax #timer_vbl_handler + stax IRQ_VECTOR +@handler_installed: + ldax #0 + stax current_time_value + rts + +;read the current timer value +; inputs: none +; outputs: AX = current timer value (roughly equal to number of milliseconds since the last call to 'timer_init') +timer_read: + ldax current_time_value + rts + +; tick over the current timer value - should be called 60 times per second +; inputs: none +; outputs: none (all registers preserved, by carry flag can be modified) +timer_vbl_handler: + pha + lda #$11 ; 60 HZ =~ 17 ms per 'tick' +: + adc current_time_value + sta current_time_value + bcc :+ + inc current_time_value+1 +: + pla + jmp jmp_old_handler + + +;-- LICENSE FOR c64timer_nb65.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) 2009 +; Jonno Downes. All Rights Reserved. +; -- LICENSE END -- diff --git a/client/inc/commonprint.i b/client/inc/commonprint.i index d5fc475..a994f23 100644 --- a/client/inc/commonprint.i +++ b/client/inc/commonprint.i @@ -1,3 +1,8 @@ +.ifndef SCREEN_WIDTH + SCREEN_WIDTH = 40 +.endif + + .ifndef KPR_API_VERSION_NUMBER .define EQU = .include "../inc/kipper_constants.i" @@ -316,6 +321,8 @@ print_errorcode: hexdigits: .byte "0123456789ABCDEF" +.if SCREEN_WIDTH >=30 + interface_type: .byte "Interface : ",0 @@ -339,6 +346,25 @@ dhcp_server_msg: tftp_server_msg: .byte "TFTP Server : ", 0 +.else ;for small width screens e.g. VIC 20 +interface_type: +.byte "Interface",10,0 +mac_address_msg: +.byte "MAC Address",10,0 +ip_address_msg: +.byte "IP Address",10,0 +netmask_msg: +.byte "Netmask",10,0 +gateway_msg: +.byte "Gateway",10,0 +dns_server_msg: +.byte "DNS Server",10,0 +dhcp_server_msg: +.byte "DHCP Server",10,0 +tftp_server_msg: +.byte "TFTP Server",10,0 + +.endif dhcp_msg: .byte "DHCP",0 diff --git a/client/kipperterm2/kipperterm2.s b/client/kipperterm2/kipperterm2.s index fab6c26..6d420c1 100644 --- a/client/kipperterm2/kipperterm2.s +++ b/client/kipperterm2/kipperterm2.s @@ -102,9 +102,6 @@ init: sta $01 ;turn off BASIC jsr setup_screen - lda $ba - sta cfg_default_drive - ldax #menu_header_msg jsr print_ascii_as_native ldax #init_msg+1 @@ -132,6 +129,9 @@ print_main_menu: init_ok: + lda $ba + sta cfg_default_drive + main_menu: jsr print_main_menu jsr print_ip_config @@ -161,7 +161,7 @@ main_menu: jsr cls clc - jsr set_io_device_no + jsr set_io_device_no ldax #address_book_filename stax io_filename ldax #scratch_buffer diff --git a/client/kipperterm2/timestamp.i b/client/kipperterm2/timestamp.i index 1eab20e..26472d8 100644 --- a/client/kipperterm2/timestamp.i +++ b/client/kipperterm2/timestamp.i @@ -1 +1 @@ -.byte "2011-01-08" +.byte "2011-01-08" diff --git a/client/test/Makefile b/client/test/Makefile index 8c1c6c8..4ec62ad 100644 --- a/client/test/Makefile +++ b/client/test/Makefile @@ -12,6 +12,7 @@ C64RRNETLIB=../drivers/c64rrnet.lib C64WIZNETLIB=../drivers/c64wiznet.lib IP65WIZNETLIB=../ip65/ip65_wiznet.lib APPLE2PROGLIB=../drivers/apple2prog.lib +VIC20RRNETLIB=../drivers/vic20rrnet.lib INCFILES=\ ../inc/common.i\ @@ -27,21 +28,22 @@ all: \ test_disk_io.prg \ testdns.pg2 \ testtftp.prg \ - testtftp.pg2\ - test_cart_api.prg\ - test_vt100.prg\ - testdottedquad.pg2\ - testdottedquad.prg\ + testtftp.pg2 \ + test_cart_api.prg \ + test_vt100.prg \ + testdottedquad.pg2 \ + testdottedquad.prg \ test_tcp.prg \ - test_xmodem.prg \ -# test_xmodem.d64 \ + test_xmodem.prg \ + test_vic20.prg \ test_httpd.prg \ test_parser.prg \ test_ping.prg \ test_sntp.prg \ test_get_url.prg \ - test_wiznet.prg \ - test_parse_querystring.prg \ + test_wiznet.prg \ + test_parse_querystring.prg \ +# test_xmodem.d64 \ # httpd_test.d64 \ # ip65test.dsk \ # test_disk_io.d64 \ @@ -53,9 +55,6 @@ ip65: drivers: make -C ../drivers all -%.o: %.c - $(CC) -c $(CFLAGS) $< - %.o: %.s $(AS) $(AFLAGS) $< @@ -64,7 +63,6 @@ drivers: $(LD) -m $*.map -vm -C ../cfg/c64prg.cfg -o $*.prg $(AFLAGS) $< $(IP65LIB) $(C64RRNETLIB) - test_tcp.prg: test_tcp.o $(IP65TCPLIB) $(C64RRNETLIB) $(INCFILES) ../cfg/c64prg.cfg $(LD) -m test_tcp.map -vm -C ../cfg/c64prg.cfg -o test_tcp.prg $(AFLAGS) $< $(IP65TCPLIB) $(C64RRNETLIB) @@ -93,7 +91,9 @@ test_wiznet.prg: test_wiznet.o $(C64WIZNETLIB) $(IP65WIZNETLIB) $(INCFILES) ../c test_cifs.prg: test_cifs.o $(IP65TCPLIB) $(C64RRNETLIB) $(INCFILES) ../cfg/c64prg.cfg $(LD) -m test_cifs.map -vm -C ../cfg/c64prg.cfg -o test_cifs.prg $(AFLAGS) $< $(IP65TCPLIB) $(C64RRNETLIB) - + +test_vic20.prg: test_vic20.o $(IP65TCPLIB) $(VIC20RRNETLIB) $(INCFILES) ../cfg/vic20prg.cfg + $(LD) -m test_vic20.map -vm -C ../cfg/vic20prg.cfg -o test_vic20.prg $(AFLAGS) $< $(IP65TCPLIB) $(VIC20RRNETLIB) %.pg2: %.o $(IP65LIB) $(APPLE2PROGLIB) $(INCFILES) ../cfg/a2bin.cfg $(LD) -C ../cfg/a2bin.cfg -o $*.pg2 $(AFLAGS) $< $(IP65LIB) $(APPLE2PROGLIB) diff --git a/client/wiznet/kipperwizdisk.d64 b/client/wiznet/kipperwizdisk.d64 index cd4de3b..88a0e9f 100644 Binary files a/client/wiznet/kipperwizdisk.d64 and b/client/wiznet/kipperwizdisk.d64 differ