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 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/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 ;--------------------------------------------------------------------- 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