emailler/test/testarpcache.s

206 lines
2.0 KiB
ArmAsm

.include "../inc/common.i"
.include "../inc/petscii.i"
.import ip65_init
.import ip65_process
.import ip65_ctr
.import ip65_ctr_arp
.import ip65_ctr_ip
.import arp_cache
.zeropage
printptr: .res 2
pptr: .res 2
.bss
pbtemp: .res 1
cnt: .res 1
.segment "STARTUP"
.word basicstub ; load address
basicstub:
.word @nextline
.word 2003
.byte $9e
.byte <(((init / 1000) .mod 10) + $30)
.byte <(((init / 100 ) .mod 10) + $30)
.byte <(((init / 10 ) .mod 10) + $30)
.byte <(((init ) .mod 10) + $30)
.byte 0
@nextline:
.word 0
.code
init:
lda #0
sta $d021
jsr ip65_init
ldx #0
bcc :+
ldax #failmsg
jmp print
: ldax #startmsg
jsr print
main:
lda ip65_ctr_arp
pha
lda ip65_ctr_ip
pha
jsr ip65_process
pla
cmp ip65_ctr_arp
beq :+
jsr printarp
: pla
cmp ip65_ctr_ip
beq :+
jsr printip
: jmp main
printarp:
ldax #arp_cache
stax pptr
lda #petscii_home
jsr $ffd2
lda #petscii_down
jsr $ffd2
lda #8
sta cnt
@print:
ldy #petscii_ltgray
lda #6
jsr printbytes
lda #' '
jsr $ffd2
ldy #petscii_gray
lda #4
jsr printbytes
lda #13
jsr $ffd2
dec cnt
bne @print
rts
printip:
lda #petscii_home
jsr $ffd2
ldx #10
lda #petscii_down
: jsr $ffd2
dex
bne :-
lda #petscii_white
jsr $ffd2
lda ip65_ctr_ip
jsr printhex
ldax ippktmsg
jsr print
rts
printbytes:
sta pbtemp
tya
jsr $ffd2
ldy #0
: lda (pptr),y
jsr printhex
lda #' '
jsr $ffd2
iny
cpy pbtemp
bne :-
lda pbtemp
clc
adc pptr
sta pptr
bcc :+
inc pptr+1
: rts
print:
sta printptr
stx printptr + 1
ldy #0
: lda (printptr),y
beq :+
jsr $ffd2
iny
bne :-
: rts
printint:
pha
txa
jsr printhex
pla
printhex:
pha
lsr
lsr
lsr
lsr
tax
lda hexdigit,x
jsr $ffd2
pla
and #$0f
tax
lda hexdigit,x
jsr $ffd2
rts
.data
hexdigit:
.byte "0123456789ABCDEF"
startmsg:
.byte petscii_clear, petscii_lower, "arp CACHE:", 13, 0
failmsg:
.byte petscii_lower, "rr-nET INIT FAILED", 13, 0
ippktmsg:
.byte petscii_ltgray, " ip PACKETS RECEIVED",0
bytesmsg:
.byte " BYTES", 13, 0
pingdest:
.byte 130, 241, 53, 61