emailler/test/parsequerystring.s

141 lines
2.6 KiB
ArmAsm

.include "../inc/common.inc"
.include "../inc/commonprint.inc"
.include "../inc/net.inc"
.export start
.import exit_to_basic
.import print_a
.import get_key
.import ascii_to_native
.import http_parse_request
.import http_get_value
; keep LD65 happy
.segment "INIT"
.segment "ONCE"
.segment "STARTUP"
; switch to lower case charset
lda #14
jsr print_a
start:
jsr print_cr
ldax #query_1
jsr test_querystring
ldax #query_2
jsr test_querystring
ldax #query_3
jsr test_querystring
jsr get_key
ldax #query_4
jsr test_querystring
ldax #query_5
jsr test_querystring
ldax #query_6
jsr test_querystring
jmp exit_to_basic
test_querystring:
stax temp_ax
jsr print_ascii_as_native
jsr print_cr
ldax temp_ax
jsr http_parse_request
lda #1
jsr print_var
lda #2
jsr print_var
lda #'h'
jsr print_var
lda #'m'
jsr print_var
lda #'q'
jsr print_var
rts
print_var:
pha
cmp #1
beq @print_method
cmp #2
beq @print_path
jsr ascii_to_native
jsr print_a
@print_equals:
lda #'='
jsr print_a
pla
jsr http_get_value
bcc @found_var_value
lda #'?'
jsr print_a
jmp print_cr
@found_var_value:
jsr print_ascii_as_native
jmp print_cr
@print_path:
ldax #path
jmp @print_caption
@print_method:
ldax #method
@print_caption:
jsr print_ascii_as_native
jmp @print_equals
.bss
temp_ax: .res 2
.rodata
path:
.byte "path",0
method:
.byte "method",0
query_1:
.byte "GET /?h=slack&m=goober+woober+woo%21+%3B+i+am+text HTTP/1.1",0
query_2:
.byte "POST /?h=slack&m=goober+woober+woo!+%3b+i+am+text",0
query_3:
.byte "GET /?handle=slack&message=goober+woober+woo%21+%3B+i+am+text+%0d%0a%21%40%23%24%25%5E%26%25%5D%5B%7B%7D& HTTP/1.1",0
query_4:
.byte "GET /this/is/a/long/q/path.html?q=foo",0
query_5:
.byte "/this/is/a/gopher_selector",0
query_6:
.byte $0d,$0a,0 ; this should also be a gopher path
; -- LICENSE FOR parsequerystring.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 --