mirror of
https://github.com/bobbimanners/emailler.git
synced 2024-08-07 07:29:03 +00:00
git-svn-id: http://svn.code.sf.net/p/netboot65/code@168 93682198-c243-4bdb-bd91-e943c89aac3b
This commit is contained in:
parent
675f2cc4b9
commit
ddccf4f0d1
@ -22,8 +22,11 @@ allowed_ptr=copy_src ;reuse zero page
|
|||||||
;inputs: none
|
;inputs: none
|
||||||
;outputs: A contains ASCII code of key pressed
|
;outputs: A contains ASCII code of key pressed
|
||||||
get_key:
|
get_key:
|
||||||
lda #$a0
|
;lda #$a0
|
||||||
jmp $fd1b
|
;lda #$20
|
||||||
|
;ldy #$24 ;KEYIN assumes Y is loaded with column
|
||||||
|
;jmp $fd1b
|
||||||
|
jmp $fd0c
|
||||||
|
|
||||||
;inputs: none
|
;inputs: none
|
||||||
;outputs: A contains ASCII value of key just pressed (0 if no key pressed)
|
;outputs: A contains ASCII value of key just pressed (0 if no key pressed)
|
||||||
@ -43,6 +46,7 @@ check_for_abort_key:
|
|||||||
lda $c000 ;current key pressed
|
lda $c000 ;current key pressed
|
||||||
cmp #$9B
|
cmp #$9B
|
||||||
bne :+
|
bne :+
|
||||||
|
bit $c010 ;clear the keyboard strobe
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
:
|
:
|
||||||
|
@ -1,10 +1,17 @@
|
|||||||
|
|
||||||
.export print_a
|
.export print_a
|
||||||
|
.export print_a_inverse
|
||||||
.export print_cr
|
.export print_cr
|
||||||
.export cls
|
.export cls
|
||||||
.export beep
|
.export beep
|
||||||
|
.exportzp screen_current_row
|
||||||
|
.exportzp screen_current_col
|
||||||
|
|
||||||
.code
|
.code
|
||||||
|
|
||||||
|
screen_current_col=$24 ; CH - Horizontal cursor-position (0-39)
|
||||||
|
screen_current_row=$25 ; CV - Vertical cursor-position (0-23)
|
||||||
|
|
||||||
;
|
;
|
||||||
;use Apple 2 monitor ROM function to display 1 char
|
;use Apple 2 monitor ROM function to display 1 char
|
||||||
;inputs: A should be set to ASCII char to display
|
;inputs: A should be set to ASCII char to display
|
||||||
@ -33,3 +40,7 @@ cls:
|
|||||||
;outputs: none
|
;outputs: none
|
||||||
beep:
|
beep:
|
||||||
jmp $fbdd
|
jmp $fbdd
|
||||||
|
|
||||||
|
print_a_inverse:
|
||||||
|
and #$7F ;turn off bit 8
|
||||||
|
jmp $fded
|
@ -3,6 +3,14 @@
|
|||||||
.export print_cr
|
.export print_cr
|
||||||
.export cls
|
.export cls
|
||||||
.export beep
|
.export beep
|
||||||
|
.export print_a_inverse
|
||||||
|
|
||||||
|
.exportzp screen_current_row
|
||||||
|
.exportzp screen_current_col
|
||||||
|
|
||||||
|
|
||||||
|
screen_current_row=$d6
|
||||||
|
screen_current_col=$d3
|
||||||
|
|
||||||
.data
|
.data
|
||||||
;use C64 Kernel ROM function to print a character to the screen
|
;use C64 Kernel ROM function to print a character to the screen
|
||||||
@ -31,3 +39,13 @@ cls:
|
|||||||
;outputs: none
|
;outputs: none
|
||||||
beep:
|
beep:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
;print a single char in inverse text:
|
||||||
|
print_a_inverse:
|
||||||
|
pha
|
||||||
|
lda #18 ;inverse mode on
|
||||||
|
jsr print_a
|
||||||
|
pla
|
||||||
|
jsr print_a
|
||||||
|
lda #146 ;inverse mode off
|
||||||
|
jmp print_a
|
||||||
|
@ -34,7 +34,9 @@
|
|||||||
.import get_filtered_input
|
.import get_filtered_input
|
||||||
.import filter_dns
|
.import filter_dns
|
||||||
.import filter_text
|
.import filter_text
|
||||||
|
.importzp screen_current_row
|
||||||
|
.importzp screen_current_col
|
||||||
|
.import print_a_inverse
|
||||||
.segment "IP65ZP" : zeropage
|
.segment "IP65ZP" : zeropage
|
||||||
|
|
||||||
; pointer for moving through buffers
|
; pointer for moving through buffers
|
||||||
@ -135,7 +137,7 @@ display_resource_in_buffer:
|
|||||||
|
|
||||||
jsr ascii_to_native
|
jsr ascii_to_native
|
||||||
jsr print_a
|
jsr print_a
|
||||||
lda $d6
|
lda screen_current_row
|
||||||
cmp #DISPLAY_LINES
|
cmp #DISPLAY_LINES
|
||||||
bmi @show_one_char
|
bmi @show_one_char
|
||||||
jmp @end_of_current_page
|
jmp @end_of_current_page
|
||||||
@ -180,27 +182,17 @@ display_resource_in_buffer:
|
|||||||
sta resource_pointer_hi,x
|
sta resource_pointer_hi,x
|
||||||
inc resource_counter
|
inc resource_counter
|
||||||
|
|
||||||
lda $d3 ;are we at the start of the current line?
|
lda screen_current_col ;are we at the start of the current line?
|
||||||
beq :+
|
beq :+
|
||||||
|
|
||||||
jsr print_cr
|
jsr print_cr
|
||||||
:
|
:
|
||||||
pla ;get back the resource type
|
pla ;get back the resource type
|
||||||
; cmp #'1'
|
|
||||||
; beq @resource_is_a_dir
|
|
||||||
; lda #'-'
|
|
||||||
; jmp @print_resource_indicator
|
|
||||||
;@resource_is_a_dir:
|
|
||||||
; lda #'+'
|
|
||||||
;@print_resource_indicator:
|
|
||||||
; jsr print_a
|
|
||||||
lda #18 ;inverse mode on
|
|
||||||
jsr print_a
|
|
||||||
lda resource_counter
|
lda resource_counter
|
||||||
clc
|
clc
|
||||||
adc #'a'-1
|
adc #'a'-1
|
||||||
jsr print_a
|
jsr print_a_inverse
|
||||||
lda #146 ;inverse mode off
|
|
||||||
jsr print_a
|
|
||||||
lda #' '
|
lda #' '
|
||||||
jsr print_a
|
jsr print_a
|
||||||
|
|
||||||
@ -219,13 +211,12 @@ display_resource_in_buffer:
|
|||||||
cmp #$0A
|
cmp #$0A
|
||||||
bne @skip_to_end_of_line
|
bne @skip_to_end_of_line
|
||||||
|
|
||||||
|
lda screen_current_col
|
||||||
lda $d3
|
|
||||||
cmp #0
|
cmp #0
|
||||||
beq :+
|
; beq :+
|
||||||
jsr print_cr
|
jsr print_cr
|
||||||
:
|
:
|
||||||
lda $d6
|
lda screen_current_row
|
||||||
cmp #DISPLAY_LINES
|
cmp #DISPLAY_LINES
|
||||||
bpl @end_of_current_page
|
bpl @end_of_current_page
|
||||||
jmp @next_line
|
jmp @next_line
|
||||||
@ -239,21 +230,21 @@ display_resource_in_buffer:
|
|||||||
jsr get_key_if_available
|
jsr get_key_if_available
|
||||||
cmp #' '
|
cmp #' '
|
||||||
beq @go_next_page
|
beq @go_next_page
|
||||||
cmp #KEYCODE_F7
|
cmp #KEY_NEXT_PAGE
|
||||||
beq @go_next_page
|
beq @go_next_page
|
||||||
cmp #KEYCODE_DOWN
|
cmp #KEYCODE_DOWN
|
||||||
beq @go_next_page
|
beq @go_next_page
|
||||||
cmp #KEYCODE_F1
|
cmp #KEY_PREV_PAGE
|
||||||
beq @go_prev_page
|
beq @go_prev_page
|
||||||
cmp #KEYCODE_UP
|
cmp #KEYCODE_UP
|
||||||
beq @go_prev_page
|
beq @go_prev_page
|
||||||
cmp #KEYCODE_F2
|
cmp #KEY_SHOW_HISTORY
|
||||||
beq @show_history
|
beq @show_history
|
||||||
cmp #KEYCODE_LEFT
|
cmp #KEYCODE_LEFT
|
||||||
beq @back_in_history
|
beq @back_in_history
|
||||||
cmp #KEYCODE_F3
|
cmp #KEY_BACK_IN_HISTORY
|
||||||
beq @back_in_history
|
beq @back_in_history
|
||||||
cmp #KEYCODE_F5
|
cmp #KEY_NEW_SERVER
|
||||||
beq @prompt_for_new_server
|
beq @prompt_for_new_server
|
||||||
|
|
||||||
cmp #KEYCODE_ABORT
|
cmp #KEYCODE_ABORT
|
||||||
@ -453,7 +444,7 @@ add_resource_to_history_and_display:
|
|||||||
lda ip65_error
|
lda ip65_error
|
||||||
jsr print_hex
|
jsr print_hex
|
||||||
jsr print_cr
|
jsr print_cr
|
||||||
jsr get_key
|
;jsr get_key
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
@ -45,6 +45,14 @@
|
|||||||
.include "../inc/menu.i"
|
.include "../inc/menu.i"
|
||||||
|
|
||||||
.if (BANKSWITCH_SUPPORT=$03)
|
.if (BANKSWITCH_SUPPORT=$03)
|
||||||
|
|
||||||
|
KEY_NEXT_PAGE=KEYCODE_F7
|
||||||
|
KEY_PREV_PAGE=KEYCODE_F1
|
||||||
|
KEY_SHOW_HISTORY=KEYCODE_F2
|
||||||
|
KEY_BACK_IN_HISTORY=KEYCODE_F3
|
||||||
|
KEY_NEW_SERVER=KEYCODE_F5
|
||||||
|
|
||||||
|
|
||||||
.include "../inc/gopher.i"
|
.include "../inc/gopher.i"
|
||||||
.include "../inc/telnet.i"
|
.include "../inc/telnet.i"
|
||||||
.endif
|
.endif
|
||||||
@ -640,7 +648,7 @@ exit_gopher:
|
|||||||
.rodata
|
.rodata
|
||||||
|
|
||||||
netboot65_msg:
|
netboot65_msg:
|
||||||
.byte 13," NETBOOT65 - C64 CLIENT VERSION "
|
.byte 13," NETBOOT65 FOR C64 - VERSION "
|
||||||
.include "nb65_version.i"
|
.include "nb65_version.i"
|
||||||
.byte 13,0
|
.byte 13,0
|
||||||
main_menu_msg:
|
main_menu_msg:
|
||||||
|
@ -50,6 +50,7 @@ test_tcp.prg: test_tcp.o $(IP65TCPLIB) $(C64PROGLIB) $(INCFILES) ../cfg/c64prg.c
|
|||||||
# $(LD) -m gopher_browser.map -vm -C ../cfg/c64prg.cfg -o gopher_browser.prg $(AFLAGS) $< $(IP65TCPLIB) $(C64PROGLIB)
|
# $(LD) -m gopher_browser.map -vm -C ../cfg/c64prg.cfg -o gopher_browser.prg $(AFLAGS) $< $(IP65TCPLIB) $(C64PROGLIB)
|
||||||
|
|
||||||
a2_gopher.pg2: a2_gopher.o $(IP65TCPLIB) $(APPLE2PROGLIB) $(INCFILES) ../cfg/a2bin.cfg ../inc/gopher.i
|
a2_gopher.pg2: a2_gopher.o $(IP65TCPLIB) $(APPLE2PROGLIB) $(INCFILES) ../cfg/a2bin.cfg ../inc/gopher.i
|
||||||
|
$(AS) $(AFLAGS) a2_gopher.s
|
||||||
$(LD) -C ../cfg/a2bin.cfg -o a2_gopher.pg2 $(AFLAGS) $< $(IP65TCPLIB) $(APPLE2PROGLIB)
|
$(LD) -C ../cfg/a2bin.cfg -o a2_gopher.pg2 $(AFLAGS) $< $(IP65TCPLIB) $(APPLE2PROGLIB)
|
||||||
|
|
||||||
a2_telnet.pg2: a2_telnet.o $(IP65TCPLIB) $(APPLE2PROGLIB) $(INCFILES) ../cfg/a2bin.cfg
|
a2_telnet.pg2: a2_telnet.o $(IP65TCPLIB) $(APPLE2PROGLIB) $(INCFILES) ../cfg/a2bin.cfg
|
||||||
@ -60,7 +61,7 @@ a2_telnet.pg2: a2_telnet.o $(IP65TCPLIB) $(APPLE2PROGLIB) $(INCFILES) ../cfg/a2b
|
|||||||
|
|
||||||
a2_netapps.dsk: a2_gopher.pg2 a2_telnet.pg2
|
a2_netapps.dsk: a2_gopher.pg2 a2_telnet.pg2
|
||||||
ripxplore.rb --init BeautifulBoot a2_netapps.dsk -a a2_gopher.pg2 -t AppleBinary
|
ripxplore.rb --init BeautifulBoot a2_netapps.dsk -a a2_gopher.pg2 -t AppleBinary
|
||||||
ripxplore.rb a2_netapps.dsk -a a2_telnet.pg2 -t AppleBinary
|
# ripxplore.rb a2_netapps.dsk -a a2_telnet.pg2 -t AppleBinary
|
||||||
|
|
||||||
ip65test.dsk: testdns.pg2 testdottedquad.pg2 testtftp.pg2
|
ip65test.dsk: testdns.pg2 testdottedquad.pg2 testtftp.pg2
|
||||||
ripxplore.rb --init BeautifulBoot ip65test.dsk -a testdns.pg2 -t AppleBinary
|
ripxplore.rb --init BeautifulBoot ip65test.dsk -a testdns.pg2 -t AppleBinary
|
||||||
|
@ -1,11 +1,21 @@
|
|||||||
;C64 gopher browser
|
;Apple 2 gopher browser
|
||||||
;july 2009 - jonno @ jamtronix.com
|
;july 2009 - jonno @ jamtronix.com
|
||||||
|
|
||||||
.include "../inc/common.i"
|
.include "../inc/common.i"
|
||||||
.include "../inc/commonprint.i"
|
.include "../inc/commonprint.i"
|
||||||
.include "../inc/net.i"
|
.include "../inc/net.i"
|
||||||
.include "../inc/c64keycodes.i"
|
.include "../inc/a2keycodes.i"
|
||||||
.include "../inc/gopher.i"
|
; .include "../inc/c64keycodes.i"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
KEY_NEXT_PAGE=$8E ; ^N
|
||||||
|
KEY_PREV_PAGE=$90; ^P
|
||||||
|
KEY_SHOW_HISTORY=$93; ^S
|
||||||
|
KEY_BACK_IN_HISTORY=$82 ; ^B
|
||||||
|
KEY_NEW_SERVER=$89 ;TAB key
|
||||||
|
|
||||||
|
.include "../inc/gopher.i"
|
||||||
|
|
||||||
.import __CODE_LOAD__
|
.import __CODE_LOAD__
|
||||||
.import __CODE_SIZE__
|
.import __CODE_SIZE__
|
||||||
@ -25,19 +35,25 @@
|
|||||||
init:
|
init:
|
||||||
|
|
||||||
jsr cls
|
jsr cls
|
||||||
|
jsr $c300 ; go to 80 column mode
|
||||||
|
|
||||||
|
|
||||||
ldax #title
|
ldax #title
|
||||||
jsr print
|
jsr print
|
||||||
jsr print_cr
|
jsr print_cr
|
||||||
init_ip_via_dhcp
|
init_ip_via_dhcp
|
||||||
jsr print_ip_config
|
jsr print_ip_config
|
||||||
|
|
||||||
@loop_forever:
|
|
||||||
jsr prompt_for_gopher_resource ;only returns if no server was entered.
|
ldax #initial_location
|
||||||
jsr print_cr
|
sta resource_pointer_lo
|
||||||
jmp @loop_forever
|
stx resource_pointer_hi
|
||||||
|
ldx #0
|
||||||
|
jsr select_resource_from_current_directory
|
||||||
|
|
||||||
exit_gopher:
|
exit_gopher:
|
||||||
rts
|
jmp $e000
|
||||||
|
; rts
|
||||||
|
|
||||||
.rodata
|
.rodata
|
||||||
title:
|
title:
|
||||||
@ -45,3 +61,7 @@ title:
|
|||||||
|
|
||||||
resolving:
|
resolving:
|
||||||
.byte "RESOLVING ",0
|
.byte "RESOLVING ",0
|
||||||
|
|
||||||
|
initial_location:
|
||||||
|
.byte "1gopher.floodgap.com",$09,"/",$09,"gopher.floodgap.com",$09,"70",$0D,$0A,0
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@
|
|||||||
.include "../inc/net.i"
|
.include "../inc/net.i"
|
||||||
.include "../inc/a2keycodes.i"
|
.include "../inc/a2keycodes.i"
|
||||||
|
|
||||||
|
|
||||||
.import __CODE_LOAD__
|
.import __CODE_LOAD__
|
||||||
.import __CODE_SIZE__
|
.import __CODE_SIZE__
|
||||||
.import __RODATA_SIZE__
|
.import __RODATA_SIZE__
|
||||||
@ -22,11 +23,21 @@
|
|||||||
.import telnet_ip
|
.import telnet_ip
|
||||||
.import cfg_init
|
.import cfg_init
|
||||||
|
|
||||||
|
.import dns_ip
|
||||||
|
.import dns_resolve
|
||||||
|
.import dns_set_hostname
|
||||||
|
.import get_filtered_input
|
||||||
|
.import filter_dns
|
||||||
|
.import filter_number
|
||||||
|
|
||||||
.segment "EXEHDR" ;this is what gets put an the start of the file on the Apple 2
|
.segment "EXEHDR" ;this is what gets put an the start of the file on the Apple 2
|
||||||
.addr __CODE_LOAD__-3 ; Start address
|
.addr __CODE_LOAD__-3 ; Start address
|
||||||
.word __CODE_SIZE__+__RODATA_SIZE__+__DATA_SIZE__+4 ; Size
|
.word __CODE_SIZE__+__RODATA_SIZE__+__DATA_SIZE__+4 ; Size
|
||||||
jmp init
|
jmp init
|
||||||
|
|
||||||
|
.segment "IP65ZP" : zeropage
|
||||||
|
|
||||||
|
buffer_ptr: .res 2
|
||||||
|
|
||||||
.code
|
.code
|
||||||
|
|
||||||
@ -37,42 +48,184 @@ init:
|
|||||||
ldax #title
|
ldax #title
|
||||||
jsr print
|
jsr print
|
||||||
jsr print_cr
|
jsr print_cr
|
||||||
jsr cfg_init
|
|
||||||
; jsr print_ip_config
|
|
||||||
; jsr get_key
|
|
||||||
init_ip_via_dhcp
|
init_ip_via_dhcp
|
||||||
jsr print_ip_config
|
jsr print_ip_config
|
||||||
|
|
||||||
@loop_forever:
|
jmp telnet_main_entry
|
||||||
|
|
||||||
|
exit_telnet:
|
||||||
|
jmp $e000
|
||||||
|
|
||||||
|
|
||||||
|
telnet_main_entry:
|
||||||
|
;prompt for a hostname, then resolve to an IP address
|
||||||
|
|
||||||
|
ldax #remote_host
|
||||||
|
jsr print
|
||||||
|
ldax #filter_dns
|
||||||
|
jsr get_filtered_input
|
||||||
|
bcc @host_entered
|
||||||
|
;if no host entered, then bail.
|
||||||
|
jmp exit_telnet
|
||||||
|
@host_entered:
|
||||||
|
stax hostname_ptr
|
||||||
|
jsr print_cr
|
||||||
|
ldax #resolving
|
||||||
|
jsr print
|
||||||
|
ldax hostname_ptr
|
||||||
|
jsr print
|
||||||
|
jsr print_cr
|
||||||
|
ldax hostname_ptr
|
||||||
|
jsr dns_set_hostname
|
||||||
|
bcs :+
|
||||||
|
jsr dns_resolve
|
||||||
|
:
|
||||||
|
bcc @resolved_ok
|
||||||
|
print_failed
|
||||||
|
jsr print_cr
|
||||||
|
jsr print_errorcode
|
||||||
|
jmp telnet_main_entry
|
||||||
|
@resolved_ok:
|
||||||
ldx #3
|
ldx #3
|
||||||
@copy_telnet_ip_loop:
|
@copy_telnet_ip_loop:
|
||||||
lda remote_host,x
|
lda dns_ip,x
|
||||||
sta telnet_ip,x
|
sta telnet_ip,x
|
||||||
dex
|
dex
|
||||||
bpl @copy_telnet_ip_loop
|
bpl @copy_telnet_ip_loop
|
||||||
|
@get_port:
|
||||||
|
ldax #remote_port
|
||||||
|
jsr print
|
||||||
|
jsr get_port_number
|
||||||
|
bcc @port_entered
|
||||||
|
;if no port entered, then assume port 23
|
||||||
ldax #23
|
ldax #23
|
||||||
|
@port_entered:
|
||||||
stax telnet_port
|
stax telnet_port
|
||||||
|
jsr print_cr
|
||||||
|
|
||||||
|
ldax #char_mode_prompt
|
||||||
|
jsr print
|
||||||
|
@char_mode_input:
|
||||||
|
jsr get_key
|
||||||
|
cmp #'A'
|
||||||
|
beq @ascii_mode
|
||||||
|
cmp #'a'
|
||||||
|
beq @ascii_mode
|
||||||
|
|
||||||
|
cmp #'N'
|
||||||
|
beq @native_mode
|
||||||
|
cmp #'n'
|
||||||
|
beq @native_mode
|
||||||
|
|
||||||
|
cmp #'l'
|
||||||
|
beq @line_mode
|
||||||
|
cmp #'L'
|
||||||
|
beq @line_mode
|
||||||
|
|
||||||
|
jmp @char_mode_input
|
||||||
|
@ascii_mode:
|
||||||
lda #0
|
lda #0
|
||||||
sta telnet_use_native_charset
|
sta telnet_use_native_charset
|
||||||
sta telnet_line_mode
|
sta telnet_line_mode
|
||||||
lda #1
|
lda #1
|
||||||
sta telnet_local_echo
|
sta telnet_local_echo
|
||||||
|
jmp @after_mode_set
|
||||||
|
@native_mode:
|
||||||
|
lda #1
|
||||||
|
sta telnet_use_native_charset
|
||||||
|
lda #0
|
||||||
|
sta telnet_local_echo
|
||||||
|
sta telnet_line_mode
|
||||||
|
jmp @after_mode_set
|
||||||
|
@line_mode:
|
||||||
|
lda #0
|
||||||
|
sta telnet_use_native_charset
|
||||||
|
lda #1
|
||||||
|
sta telnet_local_echo
|
||||||
|
sta telnet_line_mode
|
||||||
|
|
||||||
|
@after_mode_set:
|
||||||
|
|
||||||
|
jsr cls
|
||||||
|
|
||||||
|
ldax #connecting_in
|
||||||
|
jsr print
|
||||||
|
lda telnet_use_native_charset
|
||||||
|
beq @a_mode
|
||||||
|
ldax #native
|
||||||
|
jmp @c_mode
|
||||||
|
@a_mode:
|
||||||
|
lda telnet_line_mode
|
||||||
|
bne @l_mode
|
||||||
|
ldax #ascii
|
||||||
|
jmp @c_mode
|
||||||
|
@l_mode:
|
||||||
|
ldax #line
|
||||||
|
@c_mode:
|
||||||
|
jsr print
|
||||||
|
ldax #mode
|
||||||
|
jsr print
|
||||||
jsr telnet_connect
|
jsr telnet_connect
|
||||||
jmp @loop_forever
|
jmp telnet_main_entry
|
||||||
|
|
||||||
|
|
||||||
exit_telnet:
|
get_port_number:
|
||||||
|
.import mul_8_16
|
||||||
|
.importzp acc16
|
||||||
|
|
||||||
|
ldy #5 ;max chars
|
||||||
|
ldax #filter_number
|
||||||
|
jsr get_filtered_input
|
||||||
|
bcs @no_port_entered
|
||||||
|
|
||||||
|
;AX now points a string containing port number
|
||||||
|
|
||||||
|
stax buffer_ptr
|
||||||
|
lda #0
|
||||||
|
sta port_number
|
||||||
|
sta port_number+1
|
||||||
|
tay
|
||||||
|
@parse_port:
|
||||||
|
lda (buffer_ptr),y
|
||||||
|
cmp #$1F
|
||||||
|
bcc @end_of_port ;any control char should be treated as end of port field
|
||||||
|
ldax port_number
|
||||||
|
stax acc16
|
||||||
|
lda #10
|
||||||
|
jsr mul_8_16
|
||||||
|
ldax acc16
|
||||||
|
stax port_number
|
||||||
|
lda (buffer_ptr),y
|
||||||
|
sec
|
||||||
|
sbc #'0'
|
||||||
|
clc
|
||||||
|
adc port_number
|
||||||
|
sta port_number
|
||||||
|
bcc @no_rollover
|
||||||
|
inc port_number+1
|
||||||
|
@no_rollover:
|
||||||
|
iny
|
||||||
|
bne @parse_port
|
||||||
|
@end_of_port:
|
||||||
|
ldax port_number
|
||||||
|
clc
|
||||||
|
@no_port_entered:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
.bss
|
||||||
|
hostname_ptr: .res 2
|
||||||
|
port_number: .res 2
|
||||||
.rodata
|
.rodata
|
||||||
title: .byte " TELNET ][",13," jonno@jamtronix.com",13,0
|
title: .byte " TELNET ][",13," jonno@jamtronix.com",13,0
|
||||||
|
resolving: .byte "RESOLVING ",0
|
||||||
|
connecting_in: .byte "CONNECTING IN ",0
|
||||||
|
ascii: .byte "ASCII",0
|
||||||
|
native: .byte "NATIVE",0
|
||||||
|
line: .byte "LINE",0
|
||||||
|
mode: .byte " MODE",13,0
|
||||||
|
remote_host: .byte "HOSTNAME (LEAVE BLANK TO QUIT)",13,": ",0
|
||||||
|
remote_port: .byte "PORT # (LEAVE BLANK FOR DEFAULT)",13,": ",0
|
||||||
|
char_mode_prompt: .byte "MODE - A=ASCII, N=NATIVE, L=LINE",13,0
|
||||||
|
|
||||||
resolving:
|
|
||||||
.byte "RESOLVING ",0
|
|
||||||
|
|
||||||
remote_host:
|
|
||||||
.byte 10,5,2,1
|
|
||||||
padding: .byte 0,0,0,0,0
|
|
Loading…
Reference in New Issue
Block a user