added support for VIC 20 / RR-NET

git-svn-id: http://svn.code.sf.net/p/netboot65/code@301 93682198-c243-4bdb-bd91-e943c89aac3b
This commit is contained in:
jonnosan 2011-01-08 06:24:34 +00:00
parent 4137648a56
commit 1f47cd7faa
12 changed files with 211 additions and 20 deletions

Binary file not shown.

Binary file not shown.

23
client/cfg/vic20prg.cfg Normal file
View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -1 +1 @@
.byte "2011-01-08"
.byte "2011-01-08"

View File

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

Binary file not shown.