From cd0506d8623e3a024292e43a195abf7dc28813ba Mon Sep 17 00:00:00 2001
From: Oliver Schmidt
Date: Fri, 28 Aug 2015 15:19:52 +0200
Subject: [PATCH] Added support for the ATARI 8-bit with Dragon Cart.
The actual ATARI-specific code is "inspired" by the IP65 variant published in http://atariage.com/forums/topic/211161-dragoncart-software/?p=2734494. The timer routines are modeled after the ones for the VIC20.
---
.gitignore | 9 +--
drivers/Makefile | 12 ++++
drivers/atrcharconv.s | 31 ++++++++++
drivers/atrinput.s | 91 +++++++++++++++++++++++++++
drivers/atrkernal.s | 43 +++++++++++++
drivers/atrprint.s | 97 +++++++++++++++++++++++++++++
drivers/atrtimer.s | 132 ++++++++++++++++++++++++++++++++++++++++
drivers/dragoncart.s | 37 +++++++++++
test/Makefile | 33 +++++++++-
test/cifs.s | 3 +
test/dns.s | 3 +
test/dottedquad.s | 3 +
test/geturl.s | 9 ++-
test/httpd.s | 3 +
test/parsequerystring.s | 8 ++-
test/parser.s | 10 ++-
test/ping.s | 8 ++-
test/sntp.s | 5 ++
test/tcp.s | 13 ++--
test/tftp.s | 5 +-
20 files changed, 538 insertions(+), 17 deletions(-)
create mode 100644 drivers/atrcharconv.s
create mode 100644 drivers/atrinput.s
create mode 100644 drivers/atrkernal.s
create mode 100644 drivers/atrprint.s
create mode 100644 drivers/atrtimer.s
create mode 100644 drivers/dragoncart.s
diff --git a/.gitignore b/.gitignore
index a4cee87..0743da4 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,9 +1,10 @@
-*.bin
-*.d64
-*.dsk
+*.o
*.lib
*.map
-*.o
*.prg
*.bin
+*.com
*.vicprg
+*.d64
+*.dsk
+*.atr
diff --git a/drivers/Makefile b/drivers/Makefile
index 58d7084..816f5b1 100644
--- a/drivers/Makefile
+++ b/drivers/Makefile
@@ -6,6 +6,7 @@
# a2lancegs.lib : Apple ][ with LANceGS (default slot: #3)
# a2uther2.lib : Apple ][ with Uthernet II (default slot: #3)
# a2combo.lib : Apple ][ with Uthernet or LANceGS or Uthernet II (default slot: #3)
+# atrdragon.lib : ATARI 8-bit with Dragon Cart (default base addr: $d500)
# vic20rrnet.lib : VIC20 with RR-Net or clone (default base addr: $980x)
DRIVERS=\
@@ -17,6 +18,7 @@ DRIVERS=\
a2lancegs.lib \
a2uther2.lib \
a2combo.lib \
+ atrdragon.lib \
vic20rrnet.lib
all: $(DRIVERS)
@@ -40,6 +42,13 @@ A2OBJS=\
a2filteredinput.o \
a2charconv.o
+ATROBJS=\
+ atrprint.o \
+ atrtimer.o \
+ atrkernal.o \
+ atrinput.o \
+ atrcharconv.o
+
VIC20OBJS=\
vic20print.o \
vic20timer.o \
@@ -72,6 +81,9 @@ a2uther2.lib: uthernet2.o w5100.o w5100driver.o ethernet.o a2slot.o $(A2OBJS)
a2combo.lib: uthernet.o cs8900a.o lancegs.o lan91c96.o uthernet2.o w5100.o ethernetcombo.o a2slotcombo.o $(A2OBJS)
ar65 a $@ $^
+atrdragon.lib: dragoncart.o cs8900a.o cs8900adriver.o ethernet.o $(ATROBJS)
+ ar65 a $@ $^
+
vic20rrnet.lib: vic20-rr-net.o cs8900a.o cs8900adriver.o ethernet.o $(VIC20OBJS)
ar65 a $@ $^
diff --git a/drivers/atrcharconv.s b/drivers/atrcharconv.s
new file mode 100644
index 0000000..aa0ab89
--- /dev/null
+++ b/drivers/atrcharconv.s
@@ -0,0 +1,31 @@
+.export ascii_to_native
+.export native_to_ascii
+
+; given an Atari Screen Code char in A, return equivalent ASCII
+native_to_ascii:
+ rts
+
+; given an ASCII char in A, return equivalent Atari Screen Code
+ascii_to_native:
+ rts
+
+
+
+; -- LICENSE FOR atrcharconv.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/drivers/atrinput.s b/drivers/atrinput.s
new file mode 100644
index 0000000..9d92791
--- /dev/null
+++ b/drivers/atrinput.s
@@ -0,0 +1,91 @@
+.export get_key
+.export check_for_abort_key
+.export get_key_if_available
+.export get_key_ip65
+
+.import ip65_process
+
+
+.data
+
+iocb: .byte 0
+kname: .byte "K:",155
+
+
+.code
+
+; inputs: none
+; outputs: A contains ASCII value of key just pressed
+get_key:
+ jsr get_key_if_available
+ beq get_key
+ rts
+
+; inputs: none
+; outputs: A contains ASCII value of key just pressed (0 if no key pressed)
+get_key_if_available:
+ lda $02fc ; GLOBAL VARIABLE FOR KEYBOARD
+ cmp #255
+ beq @nokey
+ ldx iocb ; K: already open?
+ bne @read
+ ldx #$40 ; IOCB to use for keyboard input
+ stx iocb ; mark K: as open
+ lda #kname
+ sta $345,x ; 1-byte high buffer address
+ lda #3 ; open
+ sta $342,x ; COMMAND CODE
+ lda #4 ; open for input (all devices)
+ sta $34a,x ; 1-byte first auxiliary information
+ jsr $e456 ; vector to CIO
+@read:
+ lda #0
+ sta $348,x ; 1-byte low buffer length
+ sta $349,x ; 1-byte high buffer length
+ lda #7 ; get character(s)
+ sta $342,x ; COMMAND CODE
+ jsr $e456 ; vector to CIO
+ ldx #255
+ stx $02fc ; GLOBAL VARIABLE FOR KEYBOARD
+ rts
+@nokey:
+ lda #0
+ rts
+
+; process inbound ip packets while waiting for a keypress
+get_key_ip65:
+ jsr ip65_process
+ jsr get_key_if_available
+ beq get_key_ip65
+ rts
+
+;check whether the ??? key is being pressed
+;inputs: none
+;outputs: sec if ??? pressed, clear otherwise
+check_for_abort_key:
+ ; TODO: implement actual check
+ clc
+ rts
+
+
+
+;-- LICENSE FOR atrinputs.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/drivers/atrkernal.s b/drivers/atrkernal.s
new file mode 100644
index 0000000..dd23cc5
--- /dev/null
+++ b/drivers/atrkernal.s
@@ -0,0 +1,43 @@
+.include "../inc/common.i"
+
+.export exit_to_basic
+
+.import timer_exit
+.import print
+.import get_key
+
+
+.data
+
+press_any_key:
+ .byte "Press any key to return to DOS ",0
+
+
+.code
+
+exit_to_basic:
+ jsr timer_exit
+ ldax #press_any_key
+ jsr print
+ jmp get_key
+
+
+
+; -- LICENSE FOR atrkernal.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/drivers/atrprint.s b/drivers/atrprint.s
new file mode 100644
index 0000000..af6967c
--- /dev/null
+++ b/drivers/atrprint.s
@@ -0,0 +1,97 @@
+.include "../inc/common.i"
+
+.export print_a
+.export print_a_inverse
+.export print_cr
+.export cls
+.export beep
+.exportzp screen_current_row
+.exportzp screen_current_col
+
+screen_current_col = $55 ; 2-byte cursor column
+screen_current_row = $54 ; 1-byte cursor row
+
+
+.bss
+
+char: .res 1
+
+
+.code
+
+; use ATARI CIOV function to display 1 char
+; inputs: A should be set to ASCII char to display
+; outputs: none
+print_a:
+ cmp #10 ; is it a CR?
+ bne @not_lf
+ lda #155 ; CR/LF char
+@not_lf:
+ cmp #13 ; is it a LF?
+ bne @not_cr
+ lda #155 ; CR/LF char
+@not_cr:
+ sta char
+ txa
+ pha
+ tya
+ pha
+ ldax #1
+ stax $0348 ; 2-byte buffer length
+ ldax #char
+ stax $0344 ; 2-byte buffer address
+ ldx #11 ; put character(s)
+ stx $0342 ; COMMAND CODE
+ ldx #0
+ jsr $e456 ; vector to CIO
+ pla
+ tay
+ pla
+ tax
+ rts
+
+; use ATARI CIOV function to move to new line
+; inputs: none
+; outputs: none
+print_cr:
+ lda #155 ; CR/LF char
+ jmp print_a
+
+; use ATARI CIOV function to clear the screen
+; inputs: none
+; outputs: none
+cls:
+ lda #125 ; clear screen
+ jmp print_a
+
+; use ATARI CIOV function to make a 'beep' noise
+; inputs: none
+; outputs: none
+beep:
+ lda #253 ; beep char
+ jmp print_a
+
+print_a_inverse:
+ ora #$80 ; turn on top bit
+ jmp print_a
+
+
+
+;-- LICENSE FOR atrprint.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/drivers/atrtimer.s b/drivers/atrtimer.s
new file mode 100644
index 0000000..273dc23
--- /dev/null
+++ b/drivers/atrtimer.s
@@ -0,0 +1,132 @@
+; 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 Atari implementation requires the routine timer_vbl_handler be called 60 times per second
+
+.include "../inc/common.i"
+
+.export timer_init
+.export timer_exit
+.export timer_read
+.export timer_seconds
+
+
+.bss
+
+current_time_value: .res 2
+current_seconds: .res 1
+current_jiffies: .res 1
+
+
+.data
+
+vbichain: .word 0
+
+
+.code
+
+; reset timer to 0
+; inputs: none
+; outputs: none
+timer_init:
+ lda vbichain+1
+ bne @handler_installed
+ ldax $222 ; IMMEDIATE VERTICAL BLANK NMI VECTOR
+ stax vbichain ; save old immediate vector
+ ldy #timer_vbl_handler
+ lda #6 ; STAGE 1 VBI
+ jsr $e45c ; vector to set VBLANK parameters
+@handler_installed:
+ lda #0
+ sta current_time_value
+ sta current_time_value+1
+ sta current_seconds
+ sta current_jiffies
+ rts
+
+timer_exit:
+ lda vbichain+1
+ beq @handler_not_installed
+ ldy vbichain
+ ldx vbichain+1
+ lda #6 ; STAGE 1 VBI
+ jsr $e45c ; vector to set VBLANK parameters
+@handler_not_installed:
+ 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, but carry flag can be modified)
+timer_vbl_handler:
+ pha
+ lda #17 ; 60 HZ =~ 17 ms per 'tick'
+ clc
+ adc current_time_value
+ sta current_time_value
+ bcc :+
+ inc current_time_value+1
+: inc current_jiffies
+ lda current_jiffies
+ cmp #60
+ bne @done
+ lda #0
+ sta current_jiffies
+ inc current_seconds
+ ; we don't want to mess around with decimal mode in an IRQ handler
+ lda current_seconds
+ cmp #$0a
+ bne :+
+ lda #$10
+: cmp #$1a
+ bne :+
+ lda #$20
+: cmp #$2a
+ bne :+
+ lda #$30
+: cmp #$3a
+ bne :+
+ lda #$40
+: cmp #$4a
+ bne :+
+ lda #$50
+: cmp #$5a
+ bne :+
+ lda #$00
+: sta current_seconds
+@done:
+ pla
+ jmp $e45f ; vector to process immediate VBLANK
+
+timer_seconds:
+ lda current_seconds
+ rts
+
+
+
+;-- LICENSE FOR atrtimer.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/drivers/dragoncart.s b/drivers/dragoncart.s
new file mode 100644
index 0000000..58e27b9
--- /dev/null
+++ b/drivers/dragoncart.s
@@ -0,0 +1,37 @@
+; Dragon Cart driver
+
+.export _cs8900a_driver_name
+.export _cs8900a_driver_io_base
+
+
+.rodata
+
+_cs8900a_driver_name:
+ .byte "Dragon Cart",0
+
+
+.data
+
+_cs8900a_driver_io_base:
+ .word $d500
+
+
+
+; -- LICENSE FOR dragoncart.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/test/Makefile b/test/Makefile
index 3830e36..376938f 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -20,6 +20,7 @@ else
C64DRIVERLIB = ../drivers/c64combo.lib
A2DRIVERLIB = ../drivers/a2combo.lib
endif
+ATRDRIVERLIB = ../drivers/atrdragon.lib
VICDRIVERLIB = ../drivers/vic20rrnet.lib
UDP =\
@@ -46,10 +47,13 @@ $(addsuffix .prg,$(TCP)): IP65LIB = ../ip65/ip65_tcp.lib
$(addsuffix .bin,$(UDP)): IP65LIB = ../ip65/ip65.lib
$(addsuffix .bin,$(TCP)): IP65LIB = ../ip65/ip65_tcp.lib
+$(addsuffix .com,$(UDP)): IP65LIB = ../ip65/ip65.lib
+$(addsuffix .com,$(TCP)): IP65LIB = ../ip65/ip65_tcp.lib
+
$(addsuffix .vicprg,$(UDP)): IP65LIB = ../ip65/ip65.lib
$(addsuffix .vicprg,$(TCP)): IP65LIB = ../ip65/ip65_tcp.lib
-$(foreach pgm,$(UDP) $(TCP),$(eval $(pgm): $(pgm).prg $(pgm).bin $(pgm).vicprg))
+$(foreach pgm,$(UDP) $(TCP),$(eval $(pgm): $(pgm).prg $(pgm).bin $(pgm).com $(pgm).vicprg))
INCFILES =\
../inc/common.i \
@@ -60,12 +64,16 @@ prg: $(addsuffix .prg,$(UDP) $(TCP))
bin: $(addsuffix .bin,$(UDP) $(TCP))
+com: $(addsuffix .com,$(UDP) $(TCP))
+
vicprg: $(addsuffix .vicprg,$(UDP) $(TCP))
d64: ip65.d64
dsk: ip65.dsk
+atr: ip65.atr
+
ip65:
make -C ../ip65
@@ -81,6 +89,9 @@ drivers:
%.bin: %.o ip65 drivers $(INCFILES)
ld65 -o $*.bin -C apple2.cfg -m $*.a2.map -vm $< $(IP65LIB) $(A2DRIVERLIB) apple2.lib
+%.com: %.o ip65 drivers $(INCFILES)
+ ld65 -o $*.com -C atari.cfg -m $*.atr.map -vm $< $(IP65LIB) $(ATRDRIVERLIB) atari.lib
+
%.vicprg: %.o ip65 drivers $(INCFILES)
ld65 -o $*.vicprg -C vic20-32k.cfg -m $*.vic.map -vm $< $(IP65LIB) $(VICDRIVERLIB) vic20.lib
@@ -108,6 +119,22 @@ ip65.dsk: bin
java -jar $(AC) -cc65 $@ tcp bin < tcp.bin
java -jar $(AC) -cc65 $@ tftp bin < tftp.bin
+ip65.atr: com
+ mkdir atr
+ cp dos.sys atr/dos.sys
+ cp dup.sys atr/dup.sys
+ cp dns.com atr/dns.com
+ cp dottedquad.com atr/dotquad.com
+ cp geturl.com atr/geturl.com
+ cp httpd.com atr/httpd.com
+ cp parser.com atr/parser.com
+ cp ping.com atr/ping.com
+ cp sntp.com atr/sntp.com
+ cp tcp.com atr/tcp.com
+ cp tftp.com atr/tftp.com
+ $(DIR2ATR) -b Dos25 1040 $@ atr
+ rm -r atr
+
%-slotscan.o: %.s
ca65 -D A2_SLOT_SCAN -o $@ $<
@@ -134,5 +161,5 @@ clean:
make -C ../ip65 clean
make -C ../drivers clean
-rm -f ../supplement/*.o
- -rm -f *.o *.prg *.bin *.vicprg *.map
- -rm -f ip65.d64 ip65.dsk ip65demo.dsk w5100.dsk
+ -rm -f *.o *.prg *.bin *.com *.vicprg *.map
+ -rm -f ip65.d64 ip65.dsk ip65.atr ip65demo.dsk w5100.dsk
diff --git a/test/cifs.s b/test/cifs.s
index c85af11..0a39b40 100644
--- a/test/cifs.s
+++ b/test/cifs.s
@@ -2,6 +2,8 @@
.include "../inc/commonprint.i"
.include "../inc/net.i"
+.export start
+
.import exit_to_basic
.import cifs_l1_encode
@@ -19,6 +21,7 @@
lda #14
jsr print_a
+start:
jsr print_cr
init_ip_via_dhcp
diff --git a/test/dns.s b/test/dns.s
index 94e6792..4e0592a 100644
--- a/test/dns.s
+++ b/test/dns.s
@@ -2,6 +2,8 @@
.include "../inc/commonprint.i"
.include "../inc/net.i"
+.export start
+
.import exit_to_basic
.import dns_set_hostname
@@ -20,6 +22,7 @@
lda #14
jsr print_a
+start:
jsr print_cr
init_ip_via_dhcp
; jsr overwrite_with_hardcoded_dns_server
diff --git a/test/dottedquad.s b/test/dottedquad.s
index bd17ed4..429a8f2 100644
--- a/test/dottedquad.s
+++ b/test/dottedquad.s
@@ -2,6 +2,8 @@
.include "../inc/commonprint.i"
.include "../inc/net.i"
+.export start
+
.import exit_to_basic
.import parse_dotted_quad
@@ -18,6 +20,7 @@
lda #14
jsr print_a
+start:
jsr print_cr
ldax #dotted_quad_1
diff --git a/test/geturl.s b/test/geturl.s
index 5b6469c..f61b238 100644
--- a/test/geturl.s
+++ b/test/geturl.s
@@ -2,6 +2,10 @@
.include "../inc/commonprint.i"
.include "../inc/net.i"
+.export start
+
+.import exit_to_basic
+
.import print_a
.import get_key
.import ascii_to_native
@@ -31,6 +35,8 @@ temp_buff = copy_dest
lda #14
jsr print_a
+start:
+ jsr print_cr
init_ip_via_dhcp
jsr print_ip_config
@@ -39,7 +45,8 @@ temp_buff = copy_dest
ldax #url_2
; jsr test_url_download
- rts
+
+ jmp exit_to_basic
test_url_download:
stax temp_url_ptr
diff --git a/test/httpd.s b/test/httpd.s
index 959bae2..e64838d 100644
--- a/test/httpd.s
+++ b/test/httpd.s
@@ -2,6 +2,8 @@
.include "../inc/commonprint.i"
.include "../inc/net.i"
+.export start
+
.import exit_to_basic
.import httpd_start
@@ -17,6 +19,7 @@
lda #14
jsr print_a ; switch to lower case
+start:
ldax #initializing
jsr print
init_ip_via_dhcp
diff --git a/test/parsequerystring.s b/test/parsequerystring.s
index 593abe1..1b68f4b 100644
--- a/test/parsequerystring.s
+++ b/test/parsequerystring.s
@@ -2,6 +2,10 @@
.include "../inc/commonprint.i"
.include "../inc/net.i"
+.export start
+
+.import exit_to_basic
+
.import print_a
.import get_key
.import ascii_to_native
@@ -20,6 +24,8 @@
lda #14
jsr print_a
+start:
+ jsr print_cr
ldax #query_1
jsr test_querystring
ldax #query_2
@@ -33,7 +39,7 @@
jsr test_querystring
ldax #query_6
jsr test_querystring
- rts
+ jmp exit_to_basic
test_querystring:
stax temp_ax
diff --git a/test/parser.s b/test/parser.s
index 93bfec5..d1323ca 100644
--- a/test/parser.s
+++ b/test/parser.s
@@ -2,6 +2,10 @@
.include "../inc/commonprint.i"
.include "../inc/net.i"
+.export start
+
+.import exit_to_basic
+
.import print_a
.import get_key
.import ascii_to_native
@@ -28,6 +32,8 @@ temp_buff = copy_dest
lda #14
jsr print_a
+start:
+ jsr print_cr
init_ip_via_dhcp
jsr print_ip_config
@@ -80,8 +86,10 @@ temp_buff = copy_dest
jsr print_cr
jmp @next_title
+
@done:
- rts
+ jmp exit_to_basic
+
test_url_parse:
stax temp_url_ptr
diff --git a/test/ping.s b/test/ping.s
index 6133a34..8c711fc 100644
--- a/test/ping.s
+++ b/test/ping.s
@@ -2,6 +2,8 @@
.include "../inc/commonprint.i"
.include "../inc/net.i"
+.export start
+
.import exit_to_basic
.import copymem
@@ -22,6 +24,7 @@
lda #14
jsr print_a
+start:
jsr print_cr
init_ip_via_dhcp
jsr print_ip_config
@@ -44,9 +47,10 @@
jsr print_integer
ldax #ms
jsr print
- rts
+ jmp exit_to_basic
@error:
- jmp print_errorcode
+ jsr print_errorcode
+ jmp exit_to_basic
.rodata
diff --git a/test/sntp.s b/test/sntp.s
index 6fca679..957a415 100644
--- a/test/sntp.s
+++ b/test/sntp.s
@@ -2,7 +2,10 @@
.include "../inc/commonprint.i"
.include "../inc/net.i"
+.export start
+
.import exit_to_basic
+
.import dns_set_hostname
.import dns_resolve
.import dns_ip
@@ -20,6 +23,8 @@
lda #14
jsr print_a ; switch to lower case
+
+start:
jsr print_cr
init_ip_via_dhcp
jsr print_ip_config
diff --git a/test/tcp.s b/test/tcp.s
index 8ece24d..8ab2262 100644
--- a/test/tcp.s
+++ b/test/tcp.s
@@ -2,7 +2,10 @@
.include "../inc/commonprint.i"
.include "../inc/net.i"
+.export start
+
.import exit_to_basic
+
.import ascii_to_native
.import parse_dotted_quad
.import dotted_quad_value
@@ -44,6 +47,9 @@
lda #14
jsr print_a
+start:
+ jsr print_cr
+
ldax #$1234
stax acc16
ldax #$1235
@@ -196,7 +202,7 @@
ldax #http_get_length
stax tcp_send_data_len
ldax #http_get_msg
- jsr tcp_send
+ jsr tcp_send
jsr check_for_error
; now try to connect to port 80 - should be accepted
@@ -217,7 +223,7 @@
ldax #http_get_length
stax tcp_send_data_len
ldax #http_get_msg
- jsr tcp_send
+ jsr tcp_send
jsr check_for_error
@loop_till_end:
@@ -226,7 +232,7 @@
cmp cxn_closed
beq @loop_till_end
- rts
+ jmp exit_to_basic
ldax #tcp_callback_routine
stax tcp_callback
@@ -255,7 +261,6 @@
@loop_forever:
jsr ip65_process
jmp @loop_forever
- rts
tcp_callback_routine:
lda tcp_inbound_data_length
diff --git a/test/tftp.s b/test/tftp.s
index 5514ca3..95bc581 100644
--- a/test/tftp.s
+++ b/test/tftp.s
@@ -2,6 +2,8 @@
.include "../inc/commonprint.i"
.include "../inc/net.i"
+.export start
+
.import exit_to_basic
.import copymem
@@ -26,6 +28,7 @@
lda #14
jsr print_a
+start:
jsr print_cr
init_ip_via_dhcp
jsr print_ip_config
@@ -58,7 +61,7 @@
jsr tftp_upload_from_memory
bcs @error
print_ok
- rts
+ jmp exit_to_basic
@error:
print_failed