From b093d71261f07874724e9682c17ac88c4b0f1e53 Mon Sep 17 00:00:00 2001
From: Oliver Schmidt
Date: Sun, 27 Apr 2014 17:47:07 +0200
Subject: [PATCH] Converted web server test from KIPPER Cart to "classic" IP65
program.
---
test/Makefile | 5 ++
test/httpd.s | 176 +++++++-------------------------------------------
2 files changed, 30 insertions(+), 151 deletions(-)
diff --git a/test/Makefile b/test/Makefile
index 791279c..bb6a9a5 100644
--- a/test/Makefile
+++ b/test/Makefile
@@ -39,6 +39,7 @@ prg: \
dns.prg \
dottedquad.prg \
geturl_tcp.prg \
+ httpd_tcp.prg \
parsequerystring.prg \
parser_tcp.prg \
ping_tcp.prg \
@@ -53,6 +54,7 @@ bin: \
dns.bin \
dottedquad.bin \
geturl_tcp.bin \
+ httpd_tcp.bin \
parsequerystring.bin \
parser_tcp.bin \
ping_tcp.bin \
@@ -67,6 +69,7 @@ vicprg: \
dns.vicprg \
dottedquad.vicprg \
geturl_tcp.vicprg \
+ httpd_tcp.vicprg \
parsequerystring.vicprg \
parser_tcp.vicprg \
ping_tcp.vicprg \
@@ -110,6 +113,7 @@ ip65.d64: prg
$(C1541) -attach $@ -write dns.prg dns,p
$(C1541) -attach $@ -write dottedquad.prg dottedquad,p
$(C1541) -attach $@ -write geturl.prg geturl,p
+ $(C1541) -attach $@ -write httpd.prg httpd,p
$(C1541) -attach $@ -write parser.prg parser,p
$(C1541) -attach $@ -write ping.prg ping,p
$(C1541) -attach $@ -write sntp.prg sntp,p
@@ -121,6 +125,7 @@ ip65.dsk: bin
java -jar $(AC) -cc65 $@ dns bin 0 < dns.bin
java -jar $(AC) -cc65 $@ dottedquad bin 0 < dottedquad.bin
java -jar $(AC) -cc65 $@ geturl bin 0 < geturl.bin
+ java -jar $(AC) -cc65 $@ httpd bin 0 < httpd.bin
java -jar $(AC) -cc65 $@ parser bin 0 < parser.bin
java -jar $(AC) -cc65 $@ ping bin 0 < ping.bin
java -jar $(AC) -cc65 $@ sntp bin 0 < sntp.bin
diff --git a/test/httpd.s b/test/httpd.s
index d28cd69..3cfc372 100644
--- a/test/httpd.s
+++ b/test/httpd.s
@@ -1,181 +1,55 @@
-; test the "Kipper Kartridge API"
+.include "../inc/common.i"
+.include "../inc/commonprint.i"
+.include "../inc/net.i"
-.ifndef KPR_API_VERSION_NUMBER
- .define EQU =
- .include "../inc/kipper_constants.i"
-.endif
+.import exit_to_basic
-.include "../ip65/copymem.s"
-
-; load A/X macro
-.macro ldax arg
-.if (.match (.left (1, arg), #)) ; immediate mode
- lda #<(.right (.tcount (arg)-1, arg))
- ldx #>(.right (.tcount (arg)-1, arg))
-.else ; assume absolute or zero page
- lda arg
- ldx 1+(arg)
-.endif
-.endmacro
-
-; store A/X macro
-.macro stax arg
- sta arg
- stx 1+(arg)
-.endmacro
-
-print_a = $ffd2
-
-.macro cout arg
- lda arg
- jsr print_a
-.endmacro
-
-
-.zeropage
-
-temp_ptr: .res 2
-
-
-.bss
-
-kipper_param_buffer: .res $20
-block_number: .res $0
+.import httpd_start
+.import http_get_value
.segment "STARTUP"
-.macro print arg
- ldax arg
- ldy #KPR_PRINT_ASCIIZ
- jsr KPR_DISPATCH_VECTOR
-.endmacro
-
-.macro print_cr
- lda #13
- jsr print_a
-.endmacro
-
-.macro call arg
- ldy arg
- jsr KPR_DISPATCH_VECTOR
-.endmacro
-
-; look for KIPPER signature at location pointed at by AX
-look_for_signature:
- stax temp_ptr
- ldy #5
-@check_one_byte:
- lda (temp_ptr),y
- cmp kipper_signature,y
- bne @bad_match
- dey
- bpl@check_one_byte
- clc
- rts
-@bad_match:
- sec
- rts
-
-init:
- ldax #KPR_CART_SIGNATURE ; where signature should be in cartridge
- jsr look_for_signature
- bcc @found_kipper_signature
- jmp kipper_signature_not_found
-
-@found_kipper_signature:
lda #14
jsr print_a ; switch to lower case
- print #initializing
+ ldax #initializing
+ jsr print
+ init_ip_via_dhcp
+ jsr print_ip_config
- lda #$4c
- sta $4000
- ldax #print_vars
- stax $4001
-
- ldy #KPR_INITIALIZE
- jsr KPR_DISPATCH_VECTOR
- bcc :+
- print #failed
- jsr print_errorcode
- jmp bad_boot
-: print #ok
- print_cr
-
- call #KPR_PRINT_IP_CONFIG
- print #listening
+ ldax #listening
+ jsr print
ldax #httpd_callback
-; ldax #$0000
- call #KPR_HTTPD_START
- jsr print_errorcode
- rts
+ jsr httpd_start
+
+ jmp exit_to_basic
+
print_vars:
lda #'h'
- call #KPR_HTTPD_GET_VAR_VALUE
+ jsr http_get_value
bcs :+
- call #KPR_PRINT_ASCIIZ
- print #said
+ jsr print
+ ldax #said
+ jsr print
lda #'m'
- call #KPR_HTTPD_GET_VAR_VALUE
+ jsr http_get_value
bcs :+
- call #KPR_PRINT_ASCIIZ
- print_cr
+ jsr print
+ jsr print_cr
: rts
-bad_boot:
- print #press_a_key_to_continue
-restart:
- jsr get_key
- jmp $fce2 ; do a cold start
-
-print_errorcode:
- print #error_code
- call #KPR_GET_LAST_ERROR
- call #KPR_PRINT_HEX
- print_cr
- rts
-
-; use C64 Kernel ROM function to read a key
-; inputs: none
-; outputs: A contains ASCII value of key just pressed
-get_key:
- jsr $ffe4
- cmp #0
- beq get_key
- rts
-
-kipper_signature_not_found:
- ldy #0
-: lda kipper_signature_not_found_message,y
- beq restart
- jsr print_a
- iny
- jmp :-
-
httpd_callback:
jsr print_vars
ldax #html
- ldy #2 ; text/html
+ ldy #2 ; text/html
clc
rts
.rodata
-kipper_signature:
- .byte "KIPPER" ; API signature
- error_code:
- .asciiz "ERROR CODE: $"
-press_a_key_to_continue:
- .byte "PRESS A KEY TO CONTINUE",13,0
-failed:
- .byte "FAILED ",0
-ok:
- .byte "OK ",0
-kipper_signature_not_found_message:
- .byte "NO KIPPER API FOUND",13,"PRESS ANY KEY TO RESET",0
initializing:
.byte "INITIALIZING ",0
listening:
@@ -187,7 +61,7 @@ html:
-; -- LICENSE FOR test_httpd.s --
+; -- LICENSE FOR httpd.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