mirror of
https://github.com/bobbimanners/emailler.git
synced 2024-09-08 21:54:28 +00:00
allow flashing of MK3 EEPROM
git-svn-id: http://svn.code.sf.net/p/netboot65/code@319 93682198-c243-4bdb-bd91-e943c89aac3b
This commit is contained in:
parent
c006b14720
commit
e7b042efdc
@ -47,6 +47,9 @@ wizboot.bin: wizboot.o $(IP65WIZNETLIB) $(C64WIZNETLIB) $(INCFILES) ../cfg/c64_8
|
|||||||
wizboot.prg: wizboot.bin cartheader.prg
|
wizboot.prg: wizboot.bin cartheader.prg
|
||||||
cat cartheader.prg wizboot.bin > $@
|
cat cartheader.prg wizboot.bin > $@
|
||||||
|
|
||||||
|
wizflash.prg: wizboot.bin wizflashheader.prg
|
||||||
|
cat wizflashheader.prg wizboot.bin > $@
|
||||||
|
|
||||||
telnetd.o: ../carts/telnetd.s $(INCFILES) timestamp.rb
|
telnetd.o: ../carts/telnetd.s $(INCFILES) timestamp.rb
|
||||||
$(AS) $(AFLAGS) ../carts/telnetd.s -o telnetd.o
|
$(AS) $(AFLAGS) ../carts/telnetd.s -o telnetd.o
|
||||||
|
|
||||||
@ -64,8 +67,11 @@ wizbobcart.bin: wizbobcart.o $(IP65WIZNETLIB) $(C64WIZNETLIB) $(INCFILES) wizbob
|
|||||||
wizbobcart.prg: wizbobcart.bin cartheader.prg
|
wizbobcart.prg: wizbobcart.bin cartheader.prg
|
||||||
cat cartheader.prg wizbobcart.bin > $@
|
cat cartheader.prg wizbobcart.bin > $@
|
||||||
|
|
||||||
wiztest.d64: wiztest.prg
|
wiztest.d64: wiztest.prg wizboot.prg wizflash.prg
|
||||||
ripxplore.rb -I CbmDos -a wiztest.prg $@
|
ripxplore.rb -I CbmDos $@
|
||||||
|
ripxplore.rb -a wizboot.prg $@
|
||||||
|
ripxplore.rb -a wiztest.prg $@
|
||||||
|
ripxplore.rb -a wizflash.prg $@
|
||||||
|
|
||||||
clean:
|
clean:
|
||||||
rm -f *.o *.bin *.map *.prg *.pg2 *.dsk *.d64
|
rm -f *.o *.bin *.map *.prg *.pg2 *.dsk *.d64
|
||||||
@ -88,3 +94,4 @@ bootc64.prg:
|
|||||||
# cp telnetd.prg ../../server/boot/bootc64.prg
|
# cp telnetd.prg ../../server/boot/bootc64.prg
|
||||||
# cp wizboot2.prg ../../server/boot/bootc64.prg
|
# cp wizboot2.prg ../../server/boot/bootc64.prg
|
||||||
cp wiztest.prg ../../server/boot/bootc64.prg
|
cp wiztest.prg ../../server/boot/bootc64.prg
|
||||||
|
# cp wizflash.prg ../../server/boot/bootc64.prg
|
@ -72,7 +72,6 @@ call_downloaded_prg:
|
|||||||
.code
|
.code
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
cold_init:
|
cold_init:
|
||||||
|
|
||||||
;first let the kernal do a normal startup
|
;first let the kernal do a normal startup
|
||||||
@ -83,6 +82,30 @@ cold_init:
|
|||||||
jsr $ff5B ;init. VIC
|
jsr $ff5B ;init. VIC
|
||||||
cli ;KERNAL init. finished
|
cli ;KERNAL init. finished
|
||||||
|
|
||||||
|
|
||||||
|
;do the 'secret knock' to disable writes to the EEPROM
|
||||||
|
|
||||||
|
lda #$55
|
||||||
|
sta $9c55
|
||||||
|
lda #$aa
|
||||||
|
sta $83aa
|
||||||
|
lda #$05
|
||||||
|
sta $9c55
|
||||||
|
|
||||||
|
@poll_loop:
|
||||||
|
lda $8000
|
||||||
|
cmp $8000
|
||||||
|
bne @poll_loop
|
||||||
|
|
||||||
|
;copy ourselves to the C64 RAM
|
||||||
|
;so if we go into 'SHUTUP' mode, we keep executing from the same address, in C64 RAM
|
||||||
|
ldax #$8000
|
||||||
|
stax copy_src
|
||||||
|
stax copy_dest
|
||||||
|
ldax #$2000
|
||||||
|
jsr copymem
|
||||||
|
|
||||||
|
|
||||||
warm_init:
|
warm_init:
|
||||||
|
|
||||||
jsr SCNKEY ;Query keyboard - put matrix code into $00CB & status of shift keys $028D
|
jsr SCNKEY ;Query keyboard - put matrix code into $00CB & status of shift keys $028D
|
||||||
|
289
client/wiznet/wizflashheader.s
Normal file
289
client/wiznet/wizflashheader.s
Normal file
@ -0,0 +1,289 @@
|
|||||||
|
|
||||||
|
.include "../inc/common.i"
|
||||||
|
print_a = $ffd2
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
.zeropage
|
||||||
|
cart_data_ptr: .res 2
|
||||||
|
eeprom_ptr: .res 2
|
||||||
|
pptr: .res 2
|
||||||
|
|
||||||
|
.segment "STARTUP" ;this is what gets put at the start of the file on the C64
|
||||||
|
|
||||||
|
.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
|
||||||
|
|
||||||
|
init:
|
||||||
|
|
||||||
|
ldax #banner
|
||||||
|
jsr print
|
||||||
|
cli
|
||||||
|
|
||||||
|
ldax #$8000
|
||||||
|
stax eeprom_ptr
|
||||||
|
|
||||||
|
;set up access to READ/WRITE external ROM
|
||||||
|
|
||||||
|
lda #$37
|
||||||
|
sta $01
|
||||||
|
sta $de02 ;leave 'shut up' mode
|
||||||
|
sta $de08 ;enable ROM
|
||||||
|
sta $de0a ;set banking bit 0
|
||||||
|
sta $de0c ;set banking bit 1
|
||||||
|
|
||||||
|
lda $d011
|
||||||
|
sta old_d011
|
||||||
|
and #$ef ;turn off bit 4
|
||||||
|
sta $d011
|
||||||
|
jsr turn_off_write_protect
|
||||||
|
|
||||||
|
ldax #cart_data
|
||||||
|
stax cart_data_ptr
|
||||||
|
ldax #$8000
|
||||||
|
stax eeprom_ptr
|
||||||
|
|
||||||
|
@copy_64_bytes:
|
||||||
|
; lda cart_data_ptr+1
|
||||||
|
; jsr print_hex
|
||||||
|
; lda cart_data_ptr
|
||||||
|
; jsr print_hex
|
||||||
|
; lda eeprom_ptr+1
|
||||||
|
; jsr print_hex
|
||||||
|
; lda eeprom_ptr
|
||||||
|
; jsr print_hex
|
||||||
|
inc $d020
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
@copy_1_byte:
|
||||||
|
lda (cart_data_ptr),y
|
||||||
|
sta (eeprom_ptr),y
|
||||||
|
iny
|
||||||
|
cpy #64
|
||||||
|
bne @copy_1_byte
|
||||||
|
jsr poll_till_stable
|
||||||
|
|
||||||
|
clc
|
||||||
|
tya
|
||||||
|
adc eeprom_ptr
|
||||||
|
sta eeprom_ptr
|
||||||
|
bcc :+
|
||||||
|
inc eeprom_ptr+1
|
||||||
|
:
|
||||||
|
clc
|
||||||
|
tya
|
||||||
|
adc cart_data_ptr
|
||||||
|
sta cart_data_ptr
|
||||||
|
bcc :+
|
||||||
|
inc cart_data_ptr+1
|
||||||
|
:
|
||||||
|
|
||||||
|
lda eeprom_ptr+1
|
||||||
|
cmp #$A0
|
||||||
|
bne @copy_64_bytes
|
||||||
|
|
||||||
|
;now validate the data
|
||||||
|
ldax #cart_data
|
||||||
|
stax cart_data_ptr
|
||||||
|
ldax #$8000
|
||||||
|
stax eeprom_ptr
|
||||||
|
ldy #0
|
||||||
|
@compare_loop:
|
||||||
|
lda (cart_data_ptr),y
|
||||||
|
cmp (eeprom_ptr),y
|
||||||
|
bne @validation_error
|
||||||
|
iny
|
||||||
|
bne @compare_loop
|
||||||
|
inc cart_data_ptr+1
|
||||||
|
inc eeprom_ptr+1
|
||||||
|
lda eeprom_ptr+1
|
||||||
|
cmp #$A0
|
||||||
|
bne @compare_loop
|
||||||
|
ldax #ok
|
||||||
|
jsr print
|
||||||
|
ldax #$8000
|
||||||
|
stax eeprom_ptr
|
||||||
|
|
||||||
|
jsr turn_on_write_protect
|
||||||
|
|
||||||
|
jmp @exit_to_basic
|
||||||
|
|
||||||
|
@validation_error:
|
||||||
|
sty error_offset
|
||||||
|
|
||||||
|
ldax #validation_error
|
||||||
|
jsr print
|
||||||
|
lda eeprom_ptr+1
|
||||||
|
jsr print_hex
|
||||||
|
lda eeprom_ptr
|
||||||
|
jsr print_hex
|
||||||
|
ldax #offset
|
||||||
|
jsr print
|
||||||
|
lda error_offset
|
||||||
|
jsr print_hex
|
||||||
|
jsr print_cr
|
||||||
|
|
||||||
|
|
||||||
|
ldax #wr
|
||||||
|
jsr print
|
||||||
|
lda #0
|
||||||
|
sta byte_ptr
|
||||||
|
@wr_loop:
|
||||||
|
ldy byte_ptr
|
||||||
|
lda (cart_data_ptr),y
|
||||||
|
jsr print_hex
|
||||||
|
|
||||||
|
lda byte_ptr
|
||||||
|
cmp error_offset
|
||||||
|
beq :+
|
||||||
|
inc byte_ptr
|
||||||
|
bne @wr_loop
|
||||||
|
:
|
||||||
|
jsr print_cr
|
||||||
|
|
||||||
|
ldax #rd
|
||||||
|
jsr print
|
||||||
|
lda #0
|
||||||
|
sta byte_ptr
|
||||||
|
@rd_loop:
|
||||||
|
ldy byte_ptr
|
||||||
|
lda (eeprom_ptr),y
|
||||||
|
jsr print_hex
|
||||||
|
lda byte_ptr
|
||||||
|
cmp error_offset
|
||||||
|
beq :+
|
||||||
|
inc byte_ptr
|
||||||
|
bne @rd_loop
|
||||||
|
:
|
||||||
|
jsr print_cr
|
||||||
|
|
||||||
|
;if there is an error somewhere in the eeprom, but we have a valid 'CBM80' header bad things can happen
|
||||||
|
;so overwrite the signature bytes
|
||||||
|
lda #$FF
|
||||||
|
sta $8004
|
||||||
|
sta $8005
|
||||||
|
sta $8006
|
||||||
|
sta $8007
|
||||||
|
sta $8008
|
||||||
|
|
||||||
|
@exit_to_basic:
|
||||||
|
sei
|
||||||
|
lda old_d011
|
||||||
|
sta $d011
|
||||||
|
rts
|
||||||
|
|
||||||
|
turn_off_write_protect:
|
||||||
|
;do the 'secret knock' to enable writes
|
||||||
|
lda #$55
|
||||||
|
sta $9c55
|
||||||
|
lda #$aa
|
||||||
|
sta $83aa
|
||||||
|
lda #$01
|
||||||
|
sta $9c55
|
||||||
|
lda #$55
|
||||||
|
sta $9c55
|
||||||
|
lda #$aa
|
||||||
|
sta $83aa
|
||||||
|
lda #$04
|
||||||
|
sta $9c55
|
||||||
|
jmp poll_till_stable
|
||||||
|
|
||||||
|
turn_on_write_protect:
|
||||||
|
;do the 'secret knock' to disable writes
|
||||||
|
|
||||||
|
lda #$55
|
||||||
|
sta $9c55
|
||||||
|
lda #$aa
|
||||||
|
sta $83aa
|
||||||
|
lda #$05
|
||||||
|
sta $9c55
|
||||||
|
|
||||||
|
poll_till_stable:
|
||||||
|
ldax eeprom_ptr
|
||||||
|
stax @offset_1+1
|
||||||
|
stax @offset_2+1
|
||||||
|
@poll_loop:
|
||||||
|
@offset_1:
|
||||||
|
lda $8000 ;address will get overwritten
|
||||||
|
@offset_2:
|
||||||
|
cmp $8000 ;address will get overwritten
|
||||||
|
bne poll_till_stable
|
||||||
|
|
||||||
|
@done:
|
||||||
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
print_cr:
|
||||||
|
lda #13
|
||||||
|
jmp print_a
|
||||||
|
|
||||||
|
print:
|
||||||
|
sta pptr
|
||||||
|
stx pptr + 1
|
||||||
|
|
||||||
|
@print_loop:
|
||||||
|
ldy #0
|
||||||
|
lda (pptr),y
|
||||||
|
beq @done_print
|
||||||
|
jsr print_a
|
||||||
|
inc pptr
|
||||||
|
bne @print_loop
|
||||||
|
inc pptr+1
|
||||||
|
bne @print_loop ;if we ever get to $ffff, we've probably gone far enough ;-)
|
||||||
|
@done_print:
|
||||||
|
rts
|
||||||
|
|
||||||
|
print_hex:
|
||||||
|
pha
|
||||||
|
pha
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
tax
|
||||||
|
lda hexdigits,x
|
||||||
|
jsr print_a
|
||||||
|
pla
|
||||||
|
and #$0F
|
||||||
|
tax
|
||||||
|
lda hexdigits,x
|
||||||
|
jsr print_a
|
||||||
|
pla
|
||||||
|
rts
|
||||||
|
|
||||||
|
.rodata
|
||||||
|
hexdigits:
|
||||||
|
.byte "0123456789ABCDEF"
|
||||||
|
|
||||||
|
banner:
|
||||||
|
.byte 147 ;cls
|
||||||
|
.byte 142 ;upper case
|
||||||
|
.byte 13," RR-NET MK3 FLASHER V0.02"
|
||||||
|
.include "timestamp.i"
|
||||||
|
.byte 13
|
||||||
|
.byte 0
|
||||||
|
ok: .byte 13,"OK",13,0
|
||||||
|
validation_error:
|
||||||
|
.byte 13,"VALIDATION ERROR : $",0
|
||||||
|
offset: .byte " OFFSET : $",0
|
||||||
|
|
||||||
|
rd: .byte "RD :",0
|
||||||
|
wr: .byte "WR :",0
|
||||||
|
.bss
|
||||||
|
cart_data: ;this should point to where the cart data gets appended.
|
||||||
|
.res $2000
|
||||||
|
|
||||||
|
error_offset: .res 1
|
||||||
|
byte_ptr: .res 1
|
||||||
|
old_d011: .res 1
|
@ -71,10 +71,35 @@ init:
|
|||||||
ldax #banner
|
ldax #banner
|
||||||
jsr print
|
jsr print
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta clockport_mode
|
||||||
|
lda $de01
|
||||||
|
and #$fe ;turn off clockport
|
||||||
|
sta $de01
|
||||||
|
|
||||||
|
lda #$80 ;reset
|
||||||
|
sta WIZNET_MODE_REG
|
||||||
|
lda WIZNET_MODE_REG
|
||||||
|
bne @try_clockport
|
||||||
|
;writing a byte to the MODE register with bit 7 set should reset.
|
||||||
|
;after a reset, mode register is zero
|
||||||
|
;therefore, if there is a real W5100 at the specified address,
|
||||||
|
;we should be able to write a $80 and read back a $00
|
||||||
|
|
||||||
|
lda #$13 ;set indirect mode, with autoinc, no auto PING
|
||||||
|
sta WIZNET_MODE_REG
|
||||||
|
lda WIZNET_MODE_REG
|
||||||
|
cmp #$13
|
||||||
|
beq @w5100_found
|
||||||
|
|
||||||
|
@try_clockport:
|
||||||
|
inc clockport_mode
|
||||||
|
;now try with clockport on
|
||||||
lda $de01
|
lda $de01
|
||||||
ora #1 ;turn on clockport
|
ora #1 ;turn on clockport
|
||||||
sta $de01
|
sta $de01
|
||||||
|
|
||||||
|
|
||||||
lda #$80 ;reset
|
lda #$80 ;reset
|
||||||
sta WIZNET_MODE_REG
|
sta WIZNET_MODE_REG
|
||||||
lda WIZNET_MODE_REG
|
lda WIZNET_MODE_REG
|
||||||
@ -103,12 +128,23 @@ init:
|
|||||||
;make sure if we write to mode register without bit 7 set,
|
;make sure if we write to mode register without bit 7 set,
|
||||||
;the value persists.
|
;the value persists.
|
||||||
|
|
||||||
|
|
||||||
|
@w5100_found:
|
||||||
|
|
||||||
ldax #w5100_found
|
ldax #w5100_found
|
||||||
jsr print
|
jsr print
|
||||||
lda #>WIZNET_MODE_REG
|
lda #>WIZNET_MODE_REG
|
||||||
jsr print_hex
|
jsr print_hex
|
||||||
lda #<WIZNET_MODE_REG
|
lda #<WIZNET_MODE_REG
|
||||||
jsr print_hex
|
jsr print_hex
|
||||||
|
lda clockport_mode
|
||||||
|
bne @clockport
|
||||||
|
ldax #direct
|
||||||
|
jmp :+
|
||||||
|
@clockport:
|
||||||
|
ldax #clockport
|
||||||
|
:
|
||||||
|
jsr print
|
||||||
jsr print_cr
|
jsr print_cr
|
||||||
|
|
||||||
|
|
||||||
@ -127,6 +163,8 @@ init:
|
|||||||
ldax #test_duration
|
ldax #test_duration
|
||||||
jsr print
|
jsr print
|
||||||
|
|
||||||
|
ldax #test_0
|
||||||
|
jsr print
|
||||||
|
|
||||||
ldax #test_1
|
ldax #test_1
|
||||||
jsr print
|
jsr print
|
||||||
@ -148,6 +186,8 @@ main:
|
|||||||
bne @not_space
|
bne @not_space
|
||||||
jsr reset_clock
|
jsr reset_clock
|
||||||
@loop_test:
|
@loop_test:
|
||||||
|
jsr do_test_0
|
||||||
|
bcs main
|
||||||
jsr do_test_1
|
jsr do_test_1
|
||||||
bcs main
|
bcs main
|
||||||
jsr do_test_2
|
jsr do_test_2
|
||||||
@ -158,6 +198,12 @@ main:
|
|||||||
bne main
|
bne main
|
||||||
jmp @loop_test
|
jmp @loop_test
|
||||||
@not_space:
|
@not_space:
|
||||||
|
cmp #'0'
|
||||||
|
bne @not_0
|
||||||
|
jsr reset_clock
|
||||||
|
jsr do_test_0
|
||||||
|
jmp main
|
||||||
|
@not_0:
|
||||||
cmp #'1'
|
cmp #'1'
|
||||||
bne @not_1
|
bne @not_1
|
||||||
jsr reset_clock
|
jsr reset_clock
|
||||||
@ -185,17 +231,38 @@ main:
|
|||||||
|
|
||||||
|
|
||||||
failed:
|
failed:
|
||||||
ldax #FAILED
|
lda #$02
|
||||||
jsr print
|
sta $d020
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
do_test_0:
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta address_inc_mode
|
||||||
|
|
||||||
|
ldax #test_0
|
||||||
|
jsr print
|
||||||
|
lda #$11 ;set indirect mode, with no autoinc, no auto PING
|
||||||
|
jmp set_address_mode
|
||||||
|
|
||||||
do_test_1:
|
do_test_1:
|
||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta intersperse_address_reads
|
sta intersperse_address_reads
|
||||||
|
lda #1
|
||||||
|
sta address_inc_mode
|
||||||
|
|
||||||
ldax #test_1
|
ldax #test_1
|
||||||
do_w5100_test:
|
do_w5100_test:
|
||||||
jsr print
|
jsr print
|
||||||
|
lda #$13 ;set indirect mode, with autoinc, no auto PING
|
||||||
|
set_address_mode:
|
||||||
|
|
||||||
|
sta WIZNET_MODE_REG
|
||||||
|
lda #$06 ;
|
||||||
|
sta $D020 ;border
|
||||||
|
|
||||||
jsr w5100_access_test
|
jsr w5100_access_test
|
||||||
bcs failed
|
bcs failed
|
||||||
@ -206,13 +273,19 @@ ok:
|
|||||||
rts
|
rts
|
||||||
|
|
||||||
do_test_2:
|
do_test_2:
|
||||||
|
|
||||||
lda #1
|
lda #1
|
||||||
sta intersperse_address_reads
|
sta intersperse_address_reads
|
||||||
|
sta address_inc_mode
|
||||||
|
|
||||||
ldax #test_2
|
ldax #test_2
|
||||||
jmp do_w5100_test
|
jmp do_w5100_test
|
||||||
|
|
||||||
|
|
||||||
do_test_3:
|
do_test_3:
|
||||||
|
lda #$06 ;
|
||||||
|
sta $D020 ;border
|
||||||
|
|
||||||
ldax #test_3
|
ldax #test_3
|
||||||
jsr print
|
jsr print
|
||||||
sei
|
sei
|
||||||
@ -224,6 +297,9 @@ do_test_3:
|
|||||||
lda #1
|
lda #1
|
||||||
sta update_clock
|
sta update_clock
|
||||||
|
|
||||||
|
lda #$11 ;set indirect mode, with no autoinc, no auto PING
|
||||||
|
sta WIZNET_MODE_REG
|
||||||
|
|
||||||
;set up the W5100 to trigger an interrupt
|
;set up the W5100 to trigger an interrupt
|
||||||
lda #1
|
lda #1
|
||||||
lda #$00
|
lda #$00
|
||||||
@ -236,6 +312,8 @@ do_test_3:
|
|||||||
sta WIZNET_ADDR_LO
|
sta WIZNET_ADDR_LO
|
||||||
lda #$00 ;retry period high byte
|
lda #$00 ;retry period high byte
|
||||||
sta WIZNET_DATA_REG
|
sta WIZNET_DATA_REG
|
||||||
|
lda #$18 ;retry period
|
||||||
|
sta WIZNET_ADDR_LO
|
||||||
lda #$01 ;retry period low byte
|
lda #$01 ;retry period low byte
|
||||||
sta WIZNET_DATA_REG
|
sta WIZNET_DATA_REG
|
||||||
|
|
||||||
@ -346,6 +424,11 @@ w5100_access_test:
|
|||||||
lda WIZNET_ADDR_LO ;see if we can force a glitch!
|
lda WIZNET_ADDR_LO ;see if we can force a glitch!
|
||||||
:
|
:
|
||||||
|
|
||||||
|
lda address_inc_mode
|
||||||
|
bne :+
|
||||||
|
inc WIZNET_ADDR_LO ;see if we can force a glitch!
|
||||||
|
:
|
||||||
|
|
||||||
inc byte_counter
|
inc byte_counter
|
||||||
bne @write_one_byte
|
bne @write_one_byte
|
||||||
|
|
||||||
@ -366,6 +449,11 @@ w5100_access_test:
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
@ok:
|
@ok:
|
||||||
|
lda address_inc_mode
|
||||||
|
bne :+
|
||||||
|
inc WIZNET_ADDR_LO ;see if we can force a glitch!
|
||||||
|
:
|
||||||
|
|
||||||
inx
|
inx
|
||||||
bne @test_one_byte
|
bne @test_one_byte
|
||||||
|
|
||||||
@ -513,7 +601,7 @@ get_key:
|
|||||||
banner:
|
banner:
|
||||||
.byte $93 ;CLS
|
.byte $93 ;CLS
|
||||||
.byte $9a;
|
.byte $9a;
|
||||||
.byte $0d,"RR-NET MK3 DIAGNOSTICS 0.21"
|
.byte $0d,"RR-NET MK3 DIAGNOSTICS 0.23"
|
||||||
|
|
||||||
.include "timestamp.i"
|
.include "timestamp.i"
|
||||||
.byte $0d
|
.byte $0d
|
||||||
@ -528,33 +616,37 @@ test_duration:
|
|||||||
|
|
||||||
OK:
|
OK:
|
||||||
.byte 157,157,"OK ",0
|
.byte 157,157,"OK ",0
|
||||||
FAILED:
|
|
||||||
.byte 157,157,"!!",0
|
test_0:
|
||||||
|
.byte $13 ;home
|
||||||
|
.byte $11,$11,$11,$11,$11,$11,$11
|
||||||
|
.byte "0) W5100 MEMORY ACCESS 0 : "
|
||||||
|
.byte 0
|
||||||
|
|
||||||
test_1:
|
test_1:
|
||||||
.byte $13 ;home
|
.byte $13 ;home
|
||||||
.byte $11,$11,$11,$11,$11,$11,$11
|
.byte $11,$11,$11,$11,$11,$11,$11,$11
|
||||||
.byte "1) W5100 MEMORY ACCESS 1 : "
|
.byte "1) W5100 MEMORY ACCESS 1 : "
|
||||||
.byte 0
|
.byte 0
|
||||||
test_2:
|
test_2:
|
||||||
.byte $13 ;home
|
.byte $13 ;home
|
||||||
.byte $11,$11,$11,$11,$11,$11,$11,$11
|
.byte $11,$11,$11,$11,$11,$11,$11,$11,$11
|
||||||
.byte "2) W5100 MEMORY ACCESS 2 : "
|
.byte "2) W5100 MEMORY ACCESS 2 : "
|
||||||
.byte 0
|
.byte 0
|
||||||
test_3:
|
test_3:
|
||||||
.byte $13 ;home
|
.byte $13 ;home
|
||||||
.byte $11,$11,$11,$11,$11,$11,$11,$11,$11
|
.byte $11,$11,$11,$11,$11,$11,$11,$11,$11,$11
|
||||||
.byte "3) NMI TEST : "
|
.byte "3) NMI TEST : "
|
||||||
.byte 0
|
.byte 0
|
||||||
prompt:
|
prompt:
|
||||||
.byte $13 ;home
|
.byte $13 ;home
|
||||||
.byte $11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11
|
.byte $11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11
|
||||||
.byte "PRESS 1..3 TO RUN A SINGLE TEST",13
|
.byte "PRESS 0..3 TO RUN A SINGLE TEST",13
|
||||||
.byte "SPACE TO CYCLE ALL TESTS",13
|
.byte "SPACE TO CYCLE ALL TESTS",13
|
||||||
.byte 0
|
.byte 0
|
||||||
after_prompt:
|
after_prompt:
|
||||||
.byte $13 ;home
|
.byte $13 ;home
|
||||||
.byte $11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11
|
.byte $11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11,$11
|
||||||
.byte 0
|
.byte 0
|
||||||
loop: .byte "TEST $",0
|
loop: .byte "TEST $",0
|
||||||
not_found: .byte "NO "
|
not_found: .byte "NO "
|
||||||
@ -562,6 +654,9 @@ w5100_found: .byte "W5100 FOUND AT $",0
|
|||||||
error_offset: .byte 13,"OFFSET $",0
|
error_offset: .byte 13,"OFFSET $",0
|
||||||
was: .byte " WAS $",0
|
was: .byte " WAS $",0
|
||||||
reset_cursor: .byte 157,157,0
|
reset_cursor: .byte 157,157,0
|
||||||
|
clockport: .byte " [CLOCKPORT]",0
|
||||||
|
direct: .byte " [DIRECT]",0
|
||||||
|
|
||||||
.bss
|
.bss
|
||||||
last_byte: .res 1
|
last_byte: .res 1
|
||||||
loop_count: .res 1
|
loop_count: .res 1
|
||||||
@ -576,3 +671,5 @@ update_clock: .res 1
|
|||||||
tick_counter: .res 1
|
tick_counter: .res 1
|
||||||
timeout_count: .res 1
|
timeout_count: .res 1
|
||||||
got_nmi: .res 1
|
got_nmi: .res 1
|
||||||
|
clockport_mode: .res 1
|
||||||
|
address_inc_mode: .res 1
|
Loading…
Reference in New Issue
Block a user