From da536cb07c9fc1f0fd2acc800e29972de939ac7b Mon Sep 17 00:00:00 2001
From: Oliver Schmidt
Date: Sat, 21 Feb 2015 17:16:08 +0100
Subject: [PATCH 1/3] Removed superfluous AppleCommander parameters.
---
platform/apple2enh/Makefile.apple2enh | 2 +-
tools/6502/Makefile | 82 +++++++++++++--------------
2 files changed, 42 insertions(+), 42 deletions(-)
diff --git a/platform/apple2enh/Makefile.apple2enh b/platform/apple2enh/Makefile.apple2enh
index ca1d45970..2bc8c4626 100644
--- a/platform/apple2enh/Makefile.apple2enh
+++ b/platform/apple2enh/Makefile.apple2enh
@@ -55,7 +55,7 @@ endif
disk: all
cp $(CONTIKI)/tools/$(TARGET)/prodos.dsk contiki.dsk
- java -jar $(AC) -p contiki.dsk contiki.system sys 0 < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -p contiki.dsk contiki.system sys < $(CC65_HOME)/targetutil/loader.system
java -jar $(AC) -cc65 contiki.dsk contiki bin < $(CONTIKI_PROJECT).$(TARGET)
java -jar $(AC) -p contiki.dsk contiki.cfg bin 0 < $(CONTIKI)/tools/$(TARGET)/sample.cfg
java -jar $(AC) -p contiki.dsk cs8900a.eth rel 0 < cs8900a.eth
diff --git a/tools/6502/Makefile b/tools/6502/Makefile
index 6e0d6bd50..143393cf0 100644
--- a/tools/6502/Makefile
+++ b/tools/6502/Makefile
@@ -73,14 +73,14 @@ apple2: contiki-apple2-1.dsk contiki-apple2-2.dsk contiki-apple2-3.dsk contiki-a
contiki-apple2-1.dsk: apple2enh-makes
cp ../apple2enh/prodos.dsk $@
- java -jar $(AC) -p $@ menu.system sys 0 < ../apple2enh/menu.system
- java -jar $(AC) -p $@ ethconfi.system sys 0 < $(CC65_HOME)/targetutil/loader.system
- java -jar $(AC) -cc65 $@ ethconfi bin 0 < ../../cpu/6502/ethconfig/ethconfig.apple2enh
- java -jar $(AC) -p $@ ipconfig.system sys 0 < $(CC65_HOME)/targetutil/loader.system
- java -jar $(AC) -cc65 $@ ipconfig bin 0 < ../../cpu/6502/ipconfig/ipconfig.apple2enh
- java -jar $(AC) -p $@ webbrows.system sys 0 < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -p $@ menu.system sys < ../apple2enh/menu.system
+ java -jar $(AC) -p $@ ethconfi.system sys < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -cc65 $@ ethconfi bin < ../../cpu/6502/ethconfig/ethconfig.apple2enh
+ java -jar $(AC) -p $@ ipconfig.system sys < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -cc65 $@ ipconfig bin < ../../cpu/6502/ipconfig/ipconfig.apple2enh
+ java -jar $(AC) -p $@ webbrows.system sys < $(CC65_HOME)/targetutil/loader.system
java -jar $(AC) -cc65 $@ webbrows bin < ../../examples/webbrowser/webbrowser.apple2enh
- java -jar $(AC) -p $@ wget.system sys 0 < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -p $@ wget.system sys < $(CC65_HOME)/targetutil/loader.system
java -jar $(AC) -cc65 $@ wget bin < ../../examples/wget/wget.apple2enh
java -jar $(AC) -p $@ contiki.cfg bin 0 < ../apple2enh/default.cfg
java -jar $(AC) -p $@ cs8900a.eth rel 0 < ../../cpu/6502/ethconfig/cs8900a.eth
@@ -90,14 +90,14 @@ contiki-apple2-1.dsk: apple2enh-makes
contiki-apple2-2.dsk: apple2enh-makes
cp ../apple2enh/prodos.dsk $@
- java -jar $(AC) -p $@ menu.system sys 0 < ../apple2enh/menu.system
- java -jar $(AC) -p $@ ethconfi.system sys 0 < $(CC65_HOME)/targetutil/loader.system
- java -jar $(AC) -cc65 $@ ethconfi bin 0 < ../../cpu/6502/ethconfig/ethconfig.apple2enh
- java -jar $(AC) -p $@ ipconfig.system sys 0 < $(CC65_HOME)/targetutil/loader.system
- java -jar $(AC) -cc65 $@ ipconfig bin 0 < ../../cpu/6502/ipconfig/ipconfig.apple2enh
- java -jar $(AC) -p $@ irc.system sys 0 < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -p $@ menu.system sys < ../apple2enh/menu.system
+ java -jar $(AC) -p $@ ethconfi.system sys < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -cc65 $@ ethconfi bin < ../../cpu/6502/ethconfig/ethconfig.apple2enh
+ java -jar $(AC) -p $@ ipconfig.system sys < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -cc65 $@ ipconfig bin < ../../cpu/6502/ipconfig/ipconfig.apple2enh
+ java -jar $(AC) -p $@ irc.system sys < $(CC65_HOME)/targetutil/loader.system
java -jar $(AC) -cc65 $@ irc bin < ../../examples/irc/irc-client.apple2enh
- java -jar $(AC) -p $@ breadbox.system sys 0 < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -p $@ breadbox.system sys < $(CC65_HOME)/targetutil/loader.system
java -jar $(AC) -cc65 $@ breadbox bin < ../../../contikiprojects/vandenbrande.com/twitter/platform/apple2enh/breadbox64.apple2enh
java -jar $(AC) -p $@ contiki.cfg bin 0 < ../apple2enh/default.cfg
java -jar $(AC) -p $@ cs8900a.eth rel 0 < ../../cpu/6502/ethconfig/cs8900a.eth
@@ -107,14 +107,14 @@ contiki-apple2-2.dsk: apple2enh-makes
contiki-apple2-3.dsk: apple2enh-makes
cp ../apple2enh/prodos.dsk $@
- java -jar $(AC) -p $@ menu.system sys 0 < ../apple2enh/menu.system
- java -jar $(AC) -p $@ ethconfi.system sys 0 < $(CC65_HOME)/targetutil/loader.system
- java -jar $(AC) -cc65 $@ ethconfi bin 0 < ../../cpu/6502/ethconfig/ethconfig.apple2enh
- java -jar $(AC) -p $@ ipconfig.system sys 0 < $(CC65_HOME)/targetutil/loader.system
- java -jar $(AC) -cc65 $@ ipconfig bin 0 < ../../cpu/6502/ipconfig/ipconfig.apple2enh
- java -jar $(AC) -p $@ email.system sys 0 < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -p $@ menu.system sys < ../apple2enh/menu.system
+ java -jar $(AC) -p $@ ethconfi.system sys < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -cc65 $@ ethconfi bin < ../../cpu/6502/ethconfig/ethconfig.apple2enh
+ java -jar $(AC) -p $@ ipconfig.system sys < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -cc65 $@ ipconfig bin < ../../cpu/6502/ipconfig/ipconfig.apple2enh
+ java -jar $(AC) -p $@ email.system sys < $(CC65_HOME)/targetutil/loader.system
java -jar $(AC) -cc65 $@ email bin < ../../examples/email/email-client.apple2enh
- java -jar $(AC) -p $@ ftp.system sys 0 < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -p $@ ftp.system sys < $(CC65_HOME)/targetutil/loader.system
java -jar $(AC) -cc65 $@ ftp bin < ../../examples/ftp/ftp-client.apple2enh
java -jar $(AC) -p $@ contiki.cfg bin 0 < ../apple2enh/default.cfg
java -jar $(AC) -p $@ cs8900a.eth rel 0 < ../../cpu/6502/ethconfig/cs8900a.eth
@@ -124,14 +124,14 @@ contiki-apple2-3.dsk: apple2enh-makes
contiki-apple2-4.dsk: apple2enh-makes
cp ../apple2enh/prodos.dsk $@
- java -jar $(AC) -p $@ menu.system sys 0 < ../apple2enh/menu.system
- java -jar $(AC) -p $@ ethconfi.system sys 0 < $(CC65_HOME)/targetutil/loader.system
- java -jar $(AC) -cc65 $@ ethconfi bin 0 < ../../cpu/6502/ethconfig/ethconfig.apple2enh
- java -jar $(AC) -p $@ ipconfig.system sys 0 < $(CC65_HOME)/targetutil/loader.system
- java -jar $(AC) -cc65 $@ ipconfig bin 0 < ../../cpu/6502/ipconfig/ipconfig.apple2enh
- java -jar $(AC) -p $@ webserv.system sys 0 < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -p $@ menu.system sys < ../apple2enh/menu.system
+ java -jar $(AC) -p $@ ethconfi.system sys < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -cc65 $@ ethconfi bin < ../../cpu/6502/ethconfig/ethconfig.apple2enh
+ java -jar $(AC) -p $@ ipconfig.system sys < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -cc65 $@ ipconfig bin < ../../cpu/6502/ipconfig/ipconfig.apple2enh
+ java -jar $(AC) -p $@ webserv.system sys < $(CC65_HOME)/targetutil/loader.system
java -jar $(AC) -cc65 $@ webserv bin < ../../examples/webserver/webserver-example.apple2enh
- java -jar $(AC) -p $@ telnetd.system sys 0 < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -p $@ telnetd.system sys < $(CC65_HOME)/targetutil/loader.system
java -jar $(AC) -cc65 $@ telnetd bin < ../../examples/telnet-server/telnet-server.apple2enh
java -jar $(AC) -p $@ contiki.cfg bin 0 < ../apple2enh/default.cfg
java -jar $(AC) -p $@ cs8900a.eth rel 0 < ../../cpu/6502/ethconfig/cs8900a.eth
@@ -145,26 +145,26 @@ contiki-apple2-4.dsk: apple2enh-makes
contiki-apple2.2mg: apple2enh-makes
cp ../apple2enh/prodos.2mg $@
- java -jar $(AC) -p $@ menu.system sys 0 < ../apple2enh/menu.system
- java -jar $(AC) -p $@ ethconfi.system sys 0 < $(CC65_HOME)/targetutil/loader.system
- java -jar $(AC) -cc65 $@ ethconfi bin 0 < ../../cpu/6502/ethconfig/ethconfig.apple2enh
- java -jar $(AC) -p $@ ipconfig.system sys 0 < $(CC65_HOME)/targetutil/loader.system
- java -jar $(AC) -cc65 $@ ipconfig bin 0 < ../../cpu/6502/ipconfig/ipconfig.apple2enh
- java -jar $(AC) -p $@ webbrows.system sys 0 < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -p $@ menu.system sys < ../apple2enh/menu.system
+ java -jar $(AC) -p $@ ethconfi.system sys < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -cc65 $@ ethconfi bin < ../../cpu/6502/ethconfig/ethconfig.apple2enh
+ java -jar $(AC) -p $@ ipconfig.system sys < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -cc65 $@ ipconfig bin < ../../cpu/6502/ipconfig/ipconfig.apple2enh
+ java -jar $(AC) -p $@ webbrows.system sys < $(CC65_HOME)/targetutil/loader.system
java -jar $(AC) -cc65 $@ webbrows bin < ../../examples/webbrowser/webbrowser.apple2enh
- java -jar $(AC) -p $@ wget.system sys 0 < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -p $@ wget.system sys < $(CC65_HOME)/targetutil/loader.system
java -jar $(AC) -cc65 $@ wget bin < ../../examples/wget/wget.apple2enh
- java -jar $(AC) -p $@ irc.system sys 0 < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -p $@ irc.system sys < $(CC65_HOME)/targetutil/loader.system
java -jar $(AC) -cc65 $@ irc bin < ../../examples/irc/irc-client.apple2enh
- java -jar $(AC) -p $@ breadbox.system sys 0 < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -p $@ breadbox.system sys < $(CC65_HOME)/targetutil/loader.system
java -jar $(AC) -cc65 $@ breadbox bin < ../../../contikiprojects/vandenbrande.com/twitter/platform/apple2enh/breadbox64.apple2enh
- java -jar $(AC) -p $@ email.system sys 0 < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -p $@ email.system sys < $(CC65_HOME)/targetutil/loader.system
java -jar $(AC) -cc65 $@ email bin < ../../examples/email/email-client.apple2enh
- java -jar $(AC) -p $@ ftp.system sys 0 < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -p $@ ftp.system sys < $(CC65_HOME)/targetutil/loader.system
java -jar $(AC) -cc65 $@ ftp bin < ../../examples/ftp/ftp-client.apple2enh
- java -jar $(AC) -p $@ webserv.system sys 0 < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -p $@ webserv.system sys < $(CC65_HOME)/targetutil/loader.system
java -jar $(AC) -cc65 $@ webserv bin < ../../examples/webserver/webserver-example.apple2enh
- java -jar $(AC) -p $@ telnetd.system sys 0 < $(CC65_HOME)/targetutil/loader.system
+ java -jar $(AC) -p $@ telnetd.system sys < $(CC65_HOME)/targetutil/loader.system
java -jar $(AC) -cc65 $@ telnetd bin < ../../examples/telnet-server/telnet-server.apple2enh
java -jar $(AC) -p $@ contiki.cfg bin 0 < ../apple2enh/default.cfg
java -jar $(AC) -p $@ cs8900a.eth rel 0 < ../../cpu/6502/ethconfig/cs8900a.eth
From 7b3e80a957684a7cfedbb6168aa47ade918d6cc0 Mon Sep 17 00:00:00 2001
From: Oliver Schmidt
Date: Sun, 26 Apr 2015 14:23:33 +0200
Subject: [PATCH 2/3] Remove received packet(s) to allow to send one.
Behave just like the CS8900A driver: Both the CS8900A and the LAN91C96 dynamically share a buffer for received packets and packets to be send. If the chip is exposed to a network with a lot of broadcasts the shared buffer might fill quicker with received packets than the 6502 reads them (via polling). So we might need to drop some received packets in order to be able to send anything at all.
---
cpu/6502/net/lan91c96.S | 53 ++++++++++++++++++++++-------------------
1 file changed, 29 insertions(+), 24 deletions(-)
diff --git a/cpu/6502/net/lan91c96.S b/cpu/6502/net/lan91c96.S
index 0bfb4e35b..e94fdda7c 100644
--- a/cpu/6502/net/lan91c96.S
+++ b/cpu/6502/net/lan91c96.S
@@ -89,7 +89,7 @@ fixup: .byte fixup02-fixup01, fixup03-fixup02, fixup04-fixup03
.byte fixup29-fixup28, fixup30-fixup29, fixup31-fixup30
.byte fixup32-fixup31, fixup33-fixup32, fixup34-fixup33
.byte fixup35-fixup34, fixup36-fixup35, fixup37-fixup36
- .byte fixup38-fixup37, fixup39-fixup38, fixup40-fixup39
+ .byte fixup38-fixup37, fixup39-fixup38
fixups = * - fixup
@@ -272,9 +272,7 @@ fixup22:lda ethdata
bcs :++
; Yes, skip packet
- ; Remove and release RX packet from the FIFO
- lda #%10000000
-fixup23:sta ethmmucr
+ jsr releasepacket
; No packet available
lda #$00
@@ -285,7 +283,7 @@ fixup23:sta ethmmucr
; Read bytes into buffer
: jsr adjustptr
:
-fixup24:lda ethdata
+fixup23:lda ethdata
sta (ptr),y
iny
bne :-
@@ -294,8 +292,7 @@ fixup24:lda ethdata
bpl :-
; Remove and release RX packet from the FIFO
- lda #%10000000
-fixup25:sta ethmmucr
+ jsr releasepacket
; Return packet length
lda len
@@ -313,19 +310,19 @@ send:
; Allocate memory for TX
txa
ora #%00100000
-fixup26:sta ethmmucr
+fixup24:sta ethmmucr
; 8 retries
ldy #$08
; Wait for allocation ready
:
-fixup27:lda ethist
+fixup25:lda ethist
and #%00001000 ; ALLOC INT
bne :+
- ; Shouldn't we do something here to actively free memory,
- ; maybe removing and releasing an RX packet from the FIFO ???
+ ; No space avaliable, skip a received frame
+ jsr releasepacket
; And try again
dey
@@ -335,21 +332,21 @@ fixup27:lda ethist
; Acknowledge interrupt, is it necessary ???
: lda #%00001000
-fixup28:sta ethack
+fixup26:sta ethack
; Set packet address
-fixup29:lda etharr
-fixup30:sta ethpnr
+fixup27:lda etharr
+fixup28:sta ethpnr
lda #$00
ldx #%01000000 ; AUTO INCR.
-fixup31:sta ethptr
-fixup32:stx ethptr+1
+fixup29:sta ethptr
+fixup30:stx ethptr+1
; Status written by CSMA
lda #$00
-fixup33:sta ethdata
-fixup34:sta ethdata
+fixup31:sta ethdata
+fixup32:sta ethdata
; Check packet length parity:
; - Even packet length -> carry set -> add 6 bytes
@@ -361,10 +358,10 @@ fixup34:sta ethdata
; The packet contains 3 extra words
lda len
adc #$05 ; Actually 5 or 6 depending on carry
-fixup35:sta ethdata
+fixup33:sta ethdata
lda len+1
adc #$00
-fixup36:sta ethdata
+fixup34:sta ethdata
; Send the packet
; ---------------
@@ -372,7 +369,7 @@ fixup36:sta ethdata
; Write bytes from buffer
jsr adjustptr
: lda (ptr),y
-fixup37:sta ethdata
+fixup35:sta ethdata
iny
bne :-
inc ptr+1
@@ -390,13 +387,13 @@ fixup37:sta ethdata
; No
: lda #$00
-fixup38:sta ethdata ; Fill byte
+fixup36:sta ethdata ; Fill byte
:
-fixup39:sta ethdata ; Control byte
+fixup37:sta ethdata ; Control byte
; Add packet to FIFO
lda #%11000000 ; ENQUEUE PACKET - transmit packet
-fixup40:sta ethmmucr
+fixup38:sta ethmmucr
clc
rts
@@ -407,6 +404,14 @@ exit:
;---------------------------------------------------------------------
+releasepacket:
+ ; Remove and release RX packet from the FIFO
+ lda #%10000000
+fixup39:sta ethmmucr
+ rts
+
+;---------------------------------------------------------------------
+
adjustptr:
lda len
ldx len+1
From 9aee07c9adf2ddb942a5cea0f46fc6040eed8165 Mon Sep 17 00:00:00 2001
From: Oliver Schmidt
Date: Sun, 26 Apr 2015 21:45:33 +0200
Subject: [PATCH 3/3] Leverage the recently added exec() cmdline support in the
cc65 C library for the Apple ][.
---
platform/apple2enh/contiki-conf.h | 1 +
platform/apple2enh/lib/pfs.S | 32 ++++++++++++++++++++-----------
2 files changed, 22 insertions(+), 11 deletions(-)
diff --git a/platform/apple2enh/contiki-conf.h b/platform/apple2enh/contiki-conf.h
index 3f96da1aa..4326efe2d 100644
--- a/platform/apple2enh/contiki-conf.h
+++ b/platform/apple2enh/contiki-conf.h
@@ -64,5 +64,6 @@
#define WWW_CONF_MAX_FORMACTIONLEN 20
#define WWW_CONF_MAX_INPUTNAMELEN 20
#define WWW_CONF_MAX_INPUTVALUELEN 20
+#define WWW_CONF_WGET_EXEC(url) exec("wget", url)
#endif /* CONTIKI_CONF_H_ */
diff --git a/platform/apple2enh/lib/pfs.S b/platform/apple2enh/lib/pfs.S
index 00101d329..ed44dfc1e 100644
--- a/platform/apple2enh/lib/pfs.S
+++ b/platform/apple2enh/lib/pfs.S
@@ -32,13 +32,14 @@
;
;---------------------------------------------------------------------
.constructor init_pfs
- .destructor done_pfs
+ .destructor done_pfs
.importzp ptr1
- .import popax, _uip_aligned_buf
- .export _pfs_open, _pfs_read, _pfs_close
+ .import popax, _uip_aligned_buf
+ .export _pfs_open, _pfs_read, _pfs_close
;---------------------------------------------------------------------
pathname := $0280
mli := $BF00
+level := $BF94
OPEN_CALL = $C8
READ_CALL = $CA
@@ -68,8 +69,11 @@ close_fd: .byte $00 ;REF_NUM
.segment "INIT"
init_pfs:
- ; Get prefix len of path used to load binary
- ldx pathname
+ ; Allow exec() to keep file open
+ inc level
+
+ ; Get prefix len of path used to load binary
+ ldx pathname
: lda pathname,x
cmp #'/'
beq :+
@@ -80,6 +84,15 @@ init_pfs:
;---------------------------------------------------------------------
.code
+done_pfs:
+ ; Close all file
+ lda #$00
+ jsr _pfs_close
+
+ ; Allow exec() to keep file open
+ dec level
+ rts
+
_pfs_open:
; Pop and store name
jsr popax
@@ -131,11 +144,8 @@ _pfs_read:
ldx read_count_out+1
rts
-done_pfs:
- lda #$00
-
_pfs_close:
- ; Store fd
+ ; Store fd
sta close_fd
jsr mli
@@ -147,6 +157,6 @@ _pfs_close:
error:
; Return -1
lda #$FF
- tax
- rts
+ tax
+ rts
;---------------------------------------------------------------------