2013-12-27 13:57:56 +00:00
|
|
|
.include "../inc/common.i"
|
2013-12-13 21:24:03 +00:00
|
|
|
|
2013-12-27 13:57:56 +00:00
|
|
|
.export parse_dotted_quad
|
|
|
|
.export dotted_quad_value
|
|
|
|
|
|
|
|
|
|
|
|
.bss
|
|
|
|
|
|
|
|
dotted_quad_value: .res 4 ; set to 32 bit ip address on a succesful call to parse_dotted_quad
|
|
|
|
|
|
|
|
|
|
|
|
.data
|
|
|
|
|
|
|
|
; self modifying code
|
|
|
|
dotted_quad_ptr:
|
2013-12-13 21:24:03 +00:00
|
|
|
lda $FFFF
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
2013-12-27 13:57:56 +00:00
|
|
|
.code
|
|
|
|
|
2013-12-13 21:24:03 +00:00
|
|
|
; convert a string representing a dotted quad (IP address, netmask) into 4 octets
|
|
|
|
; inputs:
|
2013-12-27 13:57:56 +00:00
|
|
|
; AX= pointer to null-terminated (*) string containing dotted quad
|
|
|
|
; e.g. "192.168.1.0",0
|
2013-12-13 21:24:03 +00:00
|
|
|
; outputs:
|
2013-12-27 13:57:56 +00:00
|
|
|
; carry flag is set if there was an error, clear otherwise
|
|
|
|
; dotted_quad_value: will be set to (32 bit) ip address (if no error)
|
2013-12-13 21:24:03 +00:00
|
|
|
; (*) NB to assist with url parsing, a ':' or '/' can also terminate the string
|
|
|
|
parse_dotted_quad:
|
2013-12-27 13:57:56 +00:00
|
|
|
stax dotted_quad_ptr+1
|
|
|
|
ldx #0
|
|
|
|
txa
|
|
|
|
sta dotted_quad_value
|
|
|
|
@each_byte:
|
|
|
|
jsr get_next_byte
|
|
|
|
cmp #0
|
|
|
|
beq @done
|
|
|
|
and #$7F ; turn off bit 7
|
|
|
|
cmp #'.'
|
|
|
|
beq @got_dot
|
|
|
|
cmp #':'
|
|
|
|
beq @done
|
|
|
|
cmp #'/'
|
|
|
|
beq @done
|
|
|
|
sec
|
|
|
|
sbc #'0'
|
|
|
|
bcc @error
|
|
|
|
cmp #10
|
|
|
|
bcs @error
|
|
|
|
|
|
|
|
clc
|
|
|
|
ldy #10
|
2013-12-13 21:24:03 +00:00
|
|
|
@mul_by_y:
|
2013-12-27 13:57:56 +00:00
|
|
|
adc dotted_quad_value,x
|
|
|
|
bcs @error
|
|
|
|
dey
|
|
|
|
bne @mul_by_y
|
|
|
|
sta dotted_quad_value,x
|
|
|
|
jmp @each_byte
|
|
|
|
|
2013-12-13 21:24:03 +00:00
|
|
|
@got_dot:
|
|
|
|
inx
|
|
|
|
cpx #4
|
|
|
|
beq @error
|
|
|
|
lda #0
|
|
|
|
sta dotted_quad_value,x
|
|
|
|
jmp @each_byte
|
|
|
|
@done:
|
2013-12-27 13:57:56 +00:00
|
|
|
cpx #3
|
|
|
|
bne @error
|
|
|
|
clc
|
|
|
|
rts
|
|
|
|
@error:
|
|
|
|
sec
|
|
|
|
rts
|
2013-12-13 21:24:03 +00:00
|
|
|
|
|
|
|
get_next_byte:
|
2013-12-27 13:57:56 +00:00
|
|
|
jsr dotted_quad_ptr
|
|
|
|
inc dotted_quad_ptr+1
|
|
|
|
bne :+
|
|
|
|
inc dotted_quad_ptr+2
|
|
|
|
: rts
|
|
|
|
|
2013-12-13 21:24:03 +00:00
|
|
|
|
|
|
|
|
2013-12-27 13:57:56 +00:00
|
|
|
; -- LICENSE FOR dottedquad.s --
|
2013-12-13 21:24:03 +00:00
|
|
|
; 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/
|
2013-12-27 13:57:56 +00:00
|
|
|
;
|
2013-12-13 21:24:03 +00:00
|
|
|
; 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.
|
2013-12-27 13:57:56 +00:00
|
|
|
;
|
2013-12-13 21:24:03 +00:00
|
|
|
; The Original Code is ip65.
|
2013-12-27 13:57:56 +00:00
|
|
|
;
|
2013-12-13 21:24:03 +00:00
|
|
|
; The Initial Developer of the Original Code is Jonno Downes,
|
|
|
|
; jonno@jamtronix.com.
|
|
|
|
; Portions created by the Initial Developer are Copyright (C) 2009
|
2013-12-27 13:57:56 +00:00
|
|
|
; Jonno Downes. All Rights Reserved.
|
2013-12-13 21:24:03 +00:00
|
|
|
; -- LICENSE END --
|