Converted web server test from KIPPER Cart to "classic" IP65 program.

This commit is contained in:
Oliver Schmidt 2014-04-27 17:47:07 +02:00
parent 93c33c71c1
commit b093d71261
2 changed files with 30 additions and 151 deletions

View File

@ -39,6 +39,7 @@ prg: \
dns.prg \ dns.prg \
dottedquad.prg \ dottedquad.prg \
geturl_tcp.prg \ geturl_tcp.prg \
httpd_tcp.prg \
parsequerystring.prg \ parsequerystring.prg \
parser_tcp.prg \ parser_tcp.prg \
ping_tcp.prg \ ping_tcp.prg \
@ -53,6 +54,7 @@ bin: \
dns.bin \ dns.bin \
dottedquad.bin \ dottedquad.bin \
geturl_tcp.bin \ geturl_tcp.bin \
httpd_tcp.bin \
parsequerystring.bin \ parsequerystring.bin \
parser_tcp.bin \ parser_tcp.bin \
ping_tcp.bin \ ping_tcp.bin \
@ -67,6 +69,7 @@ vicprg: \
dns.vicprg \ dns.vicprg \
dottedquad.vicprg \ dottedquad.vicprg \
geturl_tcp.vicprg \ geturl_tcp.vicprg \
httpd_tcp.vicprg \
parsequerystring.vicprg \ parsequerystring.vicprg \
parser_tcp.vicprg \ parser_tcp.vicprg \
ping_tcp.vicprg \ ping_tcp.vicprg \
@ -110,6 +113,7 @@ ip65.d64: prg
$(C1541) -attach $@ -write dns.prg dns,p $(C1541) -attach $@ -write dns.prg dns,p
$(C1541) -attach $@ -write dottedquad.prg dottedquad,p $(C1541) -attach $@ -write dottedquad.prg dottedquad,p
$(C1541) -attach $@ -write geturl.prg geturl,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 parser.prg parser,p
$(C1541) -attach $@ -write ping.prg ping,p $(C1541) -attach $@ -write ping.prg ping,p
$(C1541) -attach $@ -write sntp.prg sntp,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 $@ dns bin 0 < dns.bin
java -jar $(AC) -cc65 $@ dottedquad bin 0 < dottedquad.bin java -jar $(AC) -cc65 $@ dottedquad bin 0 < dottedquad.bin
java -jar $(AC) -cc65 $@ geturl bin 0 < geturl.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 $@ parser bin 0 < parser.bin
java -jar $(AC) -cc65 $@ ping bin 0 < ping.bin java -jar $(AC) -cc65 $@ ping bin 0 < ping.bin
java -jar $(AC) -cc65 $@ sntp bin 0 < sntp.bin java -jar $(AC) -cc65 $@ sntp bin 0 < sntp.bin

View File

@ -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 .import exit_to_basic
.define EQU =
.include "../inc/kipper_constants.i"
.endif
.include "../ip65/copymem.s" .import httpd_start
.import http_get_value
; 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
.segment "STARTUP" .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 lda #14
jsr print_a ; switch to lower case jsr print_a ; switch to lower case
print #initializing ldax #initializing
jsr print
init_ip_via_dhcp
jsr print_ip_config
lda #$4c ldax #listening
sta $4000 jsr print
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 #httpd_callback ldax #httpd_callback
; ldax #$0000 jsr httpd_start
call #KPR_HTTPD_START
jsr print_errorcode jmp exit_to_basic
rts
print_vars: print_vars:
lda #'h' lda #'h'
call #KPR_HTTPD_GET_VAR_VALUE jsr http_get_value
bcs :+ bcs :+
call #KPR_PRINT_ASCIIZ jsr print
print #said ldax #said
jsr print
lda #'m' lda #'m'
call #KPR_HTTPD_GET_VAR_VALUE jsr http_get_value
bcs :+ bcs :+
call #KPR_PRINT_ASCIIZ jsr print
print_cr jsr print_cr
: rts : 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: httpd_callback:
jsr print_vars jsr print_vars
ldax #html ldax #html
ldy #2 ; text/html ldy #2 ; text/html
clc clc
rts rts
.rodata .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: initializing:
.byte "INITIALIZING ",0 .byte "INITIALIZING ",0
listening: 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 ; 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 ; 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 ; compliance with the License. You may obtain a copy of the License at