mirror of
https://github.com/bobbimanners/emailler.git
synced 2024-09-12 02:54:54 +00:00
create a RAM stub (at $C000) that user apps can use to detect presence of a banked out NB65 cart, and a routine to request banking the cart back in
git-svn-id: http://svn.code.sf.net/p/netboot65/code@91 93682198-c243-4bdb-bd91-e943c89aac3b
This commit is contained in:
parent
49510e86b0
commit
ae8a98f8a1
@ -71,7 +71,7 @@ nb65_param_buffer: .res $20
|
|||||||
.word init ;cold start vector
|
.word init ;cold start vector
|
||||||
.word $FE47 ;warm start vector
|
.word $FE47 ;warm start vector
|
||||||
.byte $C3,$C2,$CD,$38,$30 ; "CBM80"
|
.byte $C3,$C2,$CD,$38,$30 ; "CBM80"
|
||||||
.byte "NB65" ;netboot 65 signature
|
.byte $4E,$42,$36,$35 ; "NB65" - API signature
|
||||||
jmp nb65_dispatcher ; NB65_DISPATCH_VECTOR : entry point for NB65 functions
|
jmp nb65_dispatcher ; NB65_DISPATCH_VECTOR : entry point for NB65 functions
|
||||||
jmp ip65_process ;NB65_PERIODIC_PROCESSING_VECTOR : routine to be periodically called to check for arrival of ethernet packects
|
jmp ip65_process ;NB65_PERIODIC_PROCESSING_VECTOR : routine to be periodically called to check for arrival of ethernet packects
|
||||||
jmp timer_vbl_handler ;NB65_VBL_VECTOR : routine to be called during each vertical blank interrupt
|
jmp timer_vbl_handler ;NB65_VBL_VECTOR : routine to be called during each vertical blank interrupt
|
||||||
@ -104,6 +104,15 @@ init:
|
|||||||
ldax #__DATA_SIZE__
|
ldax #__DATA_SIZE__
|
||||||
jsr copymem
|
jsr copymem
|
||||||
|
|
||||||
|
;copy the RAM stub to RAM
|
||||||
|
ldax #nb65_ram_stub
|
||||||
|
stax copy_src
|
||||||
|
ldax #NB65_RAM_STUB_SIGNATURE
|
||||||
|
stax copy_dest
|
||||||
|
ldax #nb65_ram_stub_length
|
||||||
|
jsr copymem
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
ldax #startup_msg
|
ldax #startup_msg
|
||||||
jsr print
|
jsr print
|
||||||
@ -340,3 +349,11 @@ no_files_on_server:
|
|||||||
|
|
||||||
press_a_key_to_continue:
|
press_a_key_to_continue:
|
||||||
.byte "PRESS A KEY TO CONTINUE",13,0
|
.byte "PRESS A KEY TO CONTINUE",13,0
|
||||||
|
|
||||||
|
nb65_ram_stub: ; this gets copied to $C000 so programs can bank in the cartridge
|
||||||
|
.byte $4E,$42,$36,$35 ; "NB65" - API signature
|
||||||
|
lda #$01
|
||||||
|
sta $de00 ;turns on RR cartridge (since it will have been banked out when exiting to BASIC)
|
||||||
|
rts
|
||||||
|
nb65_ram_stub_end:
|
||||||
|
nb65_ram_stub_length=nb65_ram_stub_end-nb65_ram_stub
|
@ -2,10 +2,13 @@
|
|||||||
|
|
||||||
NB65_API_VERSION=$0001
|
NB65_API_VERSION=$0001
|
||||||
|
|
||||||
|
|
||||||
|
NB65_CART_SIGNATURE = $8009
|
||||||
NB65_DISPATCH_VECTOR = $800d
|
NB65_DISPATCH_VECTOR = $800d
|
||||||
NB65_PERIODIC_PROCESSING_VECTOR = $8010
|
NB65_PERIODIC_PROCESSING_VECTOR = $8010
|
||||||
NB65_VBL_VECTOR = $8013
|
NB65_VBL_VECTOR = $8013
|
||||||
|
NB65_RAM_STUB_SIGNATURE = $C000
|
||||||
|
NB65_RAM_STUB_ACTIVATE = $C004
|
||||||
|
|
||||||
;function numbers
|
;function numbers
|
||||||
;to make a function call:
|
;to make a function call:
|
||||||
|
@ -63,16 +63,41 @@ basicstub:
|
|||||||
@nextline:
|
@nextline:
|
||||||
.word 0
|
.word 0
|
||||||
|
|
||||||
|
|
||||||
|
look_for_signature: ;look for NB65 signature at location pointed at by AX
|
||||||
|
stax temp_ptr
|
||||||
|
ldy #3
|
||||||
|
@check_one_byte:
|
||||||
|
lda (temp_ptr),y
|
||||||
|
cmp nb65_signature,y
|
||||||
|
bne @bad_match
|
||||||
|
dey
|
||||||
|
bpl@check_one_byte
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
@bad_match:
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
init:
|
init:
|
||||||
|
|
||||||
lda #$01
|
|
||||||
sta $de00 ;turns on RR cartridge (since it will have been banked out when exiting to BASIC)
|
|
||||||
|
|
||||||
ldy #NB65_GET_DRIVER_NAME
|
ldax #NB65_CART_SIGNATURE ;where signature should be in cartridge
|
||||||
jsr NB65_DISPATCH_VECTOR
|
jsr look_for_signature
|
||||||
|
bcc @found_nb65_signature
|
||||||
|
|
||||||
ldy #NB65_PRINT_ASCIIZ
|
ldax #NB65_RAM_STUB_SIGNATURE ;where signature should be in RAM
|
||||||
jsr NB65_DISPATCH_VECTOR
|
jsr look_for_signature
|
||||||
|
bcc :+
|
||||||
|
jmp nb65_signature_not_found
|
||||||
|
:
|
||||||
|
jsr NB65_RAM_STUB_ACTIVATE ;we need to turn on NB65 cartridge
|
||||||
|
|
||||||
|
@found_nb65_signature:
|
||||||
|
call #NB65_GET_DRIVER_NAME
|
||||||
|
|
||||||
|
|
||||||
|
call #NB65_PRINT_ASCIIZ
|
||||||
|
|
||||||
print #initializing
|
print #initializing
|
||||||
|
|
||||||
@ -216,6 +241,7 @@ udp_callback:
|
|||||||
|
|
||||||
bad_boot:
|
bad_boot:
|
||||||
print #press_a_key_to_continue
|
print #press_a_key_to_continue
|
||||||
|
restart:
|
||||||
jsr get_key
|
jsr get_key
|
||||||
jmp $fce2 ;do a cold start
|
jmp $fce2 ;do a cold start
|
||||||
|
|
||||||
@ -227,6 +253,17 @@ print_errorcode:
|
|||||||
print_cr
|
print_cr
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
nb65_signature_not_found:
|
||||||
|
|
||||||
|
ldy #0
|
||||||
|
:
|
||||||
|
lda nb65_signature_not_found_message,y
|
||||||
|
beq restart
|
||||||
|
jsr print_a
|
||||||
|
iny
|
||||||
|
jmp :-
|
||||||
|
|
||||||
|
|
||||||
;use C64 Kernel ROM function to read a key
|
;use C64 Kernel ROM function to read a key
|
||||||
;inputs: none
|
;inputs: none
|
||||||
;outputs: A contains ASCII value of key just pressed
|
;outputs: A contains ASCII value of key just pressed
|
||||||
@ -277,6 +314,9 @@ failed:
|
|||||||
ok:
|
ok:
|
||||||
.byte "OK ", 0
|
.byte "OK ", 0
|
||||||
|
|
||||||
|
nb65_signature_not_found_message:
|
||||||
|
.byte "NO NB65 API FOUND",13,"PRESS ANY KEY TO RESET", 0
|
||||||
|
|
||||||
dns_lookup_failed_msg:
|
dns_lookup_failed_msg:
|
||||||
.byte "DNS LOOKUP FAILED", 0
|
.byte "DNS LOOKUP FAILED", 0
|
||||||
|
|
||||||
@ -284,3 +324,6 @@ reply_message:
|
|||||||
.byte "PONG!"
|
.byte "PONG!"
|
||||||
reply_message_end:
|
reply_message_end:
|
||||||
reply_message_length=reply_message_end-reply_message
|
reply_message_length=reply_message_end-reply_message
|
||||||
|
|
||||||
|
nb65_signature:
|
||||||
|
.byte $4E,$42,$36,$35 ; "NB65" - API signature
|
Loading…
Reference in New Issue
Block a user