WebNoter
-%?mhey %$h, thanks for saying '%$m'!%.
-Your Handle:
-Your Message:
-
-
\ No newline at end of file
diff --git a/client/examples/gamemusic.bin b/client/examples/gamemusic.bin
deleted file mode 100644
index 92a37537f8af3ce315c266dcf3e36ec902d30b48..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 694
zcmZ`%L2DC16n?YWot;U7tOcdwr9!c=xq1==_gK=>#zTY^!!B$g)zW~05Fz3&lnRrg
z=t2Amxu`!NM`4xHLk^y{NImR%LA?yrbbJ$or})7)-+SMCvu}5HRxg>nQcXNh-FSD}
z@RW!6yIdrmLO(%ic%#$rUq*m%^ir~`6)^3p11A6{A4bQicEPzDBZ5H1OvTH~iZMo3
z&MdNR#qsm%8!QAw8Ju&Vwr$e!c)WL1uh);r)oT{3IDF;Gs$mkqZ51|qAOS*j@cH=L
zuj_a24c>nI^xHvPp5yisY=!TaphU|V)JR4ty@|YqbdeC6+G>wZ~rIS5|n{pQ+B}cM=z2oJIB(L&E$|Lm>jZ%
fEfNl(N*1*>%jHB1Y$[{1}]
- endm
-
- mac stax
- sta [{1}]
- stx [{1}]+1
- endm
-
- mac cout
- lda [{1}]
- jsr print_a
- endm
-
- mac print_cr
- cout #13
- jsr print_a
- endm
-
- mac nb65call
- ldy [{1}]
- jsr NB65_DISPATCH_VECTOR
- endm
-
- mac print
-
- ldaxi [{1}]
- ldy #NB65_PRINT_ASCIIZ
- jsr NB65_DISPATCH_VECTOR
- endm
-
-
-
-protocol_http equ $00
-protocol_gopher equ $01
-
-;some routines & zero page variables
-print_a equ $ffd2
-temp_ptr equ $FB ; scratch space in page zero
-
-
-;start of code
-;NO BASIC stub! needs to be direct booted via TFTP
- org $1000
-
- jsr init_tod
-
- ldaxi #NB65_CART_SIGNATURE ;where signature should be in cartridge (if cart is banked in)
- jsr look_for_signature
- bcc found_nb65_signature
-
- ldaxi #NB65_RAM_STUB_SIGNATURE ;where signature should be in a RAM stub
- jsr look_for_signature
- bcs nb65_signature_not_found
- jsr NB65_RAM_STUB_ACTIVATE ;we need to turn on NB65 cartridge
- jmp found_nb65_signature
-
-nb65_signature_not_found
- ldaxi #nb65_api_not_found_message
- jsr print_ax
- rts
-
-found_nb65_signature
-
- lda NB65_API_VERSION
- cmp #02
- bpl .version_ok
- print incorrect_version
- jmp reset_after_keypress
-.version_ok
- print #initializing
- nb65call #NB65_INITIALIZE
- bcc .init_ok
- print_cr
- print #failed
- print_cr
- jsr print_errorcode
- jmp reset_after_keypress
-.init_ok
-
-;if we got here, we have found the NB65 API and initialised the IP stack
-;print out the current configuration
- nb65call #NB65_PRINT_IP_CONFIG
-
-
-
-
-listen_on_port_80
-
- ldaxi #scratch_buffer
- stax tcp_buffer_ptr
- print #waiting
- ldaxi #80 ;port number
- stax nb65_param_buffer+NB65_TCP_PORT
- stx nb65_param_buffer+NB65_TCP_REMOTE_IP
- stx nb65_param_buffer+NB65_TCP_REMOTE_IP+1
- stx nb65_param_buffer+NB65_TCP_REMOTE_IP+2
- stx nb65_param_buffer+NB65_TCP_REMOTE_IP+3
- ldaxi #http_callback
- stax nb65_param_buffer+NB65_TCP_CALLBACK
- ldaxi #nb65_param_buffer
- nb65call #NB65_TCP_CONNECT ;wait for inbound connect
- bcc .connected_ok
- print #error_while_waiting
- jsr print_errorcode
- jmp reset_after_keypress
-.connected_ok
-
- print #ok
- lda #0
- sta connection_closed
- sta found_eol
- clc
- lda $dc09 ;time of day clock: seconds (in BCD)
- sed
- adc #$30
- cmp #$60
- bcc .timeout_set
- sec
- sbc #$60
-.timeout_set:
- cld
- sta connection_timeout_seconds
-
-
-.main_polling_loop
- jsr NB65_PERIODIC_PROCESSING_VECTOR
-
- lda found_eol
- bne .got_eol
-
- lda $dc09 ;time of day clock: seconds
-
- cmp connection_timeout_seconds
- beq .connection_timed_out
-; nb65call #NB65_PRINT_HEX
- lda connection_closed
- beq .main_polling_loop
- jmp listen_on_port_80
-
-.connection_timed_out:
- print #timeout
- jmp listen_on_port_80
-.got_eol:
-
- ;if we have a CR, we have got enough of a request to know if it's a HTTP or gopher request
- lda #"G"
- cmp scratch_buffer
- bne .gopher
- lda #"E"
- cmp scratch_buffer+1
- bne .gopher
- lda #"T"
- cmp scratch_buffer+2
- bne .gopher
- lda #" "
- cmp scratch_buffer+3
- bne .gopher
- lda #protocol_http
- sta protocol
- print #http
- ldx #4
- jmp .copy_selector
-.gopher
- jsr print_a
- lda #protocol_gopher
- sta protocol
- print #gopher
- ldx #0
-
-.copy_selector:
- lda scratch_buffer,x
- cmp #"/"
- bne .copy_one_char
- inx
-.copy_one_char
- lda scratch_buffer,x
- cmp #$20
- bcc .last_char_in_selector
- sta selector,y
- inx
- iny
- bne .copy_one_char
-
-.last_char_in_selector
- lda #0
- sta selector,y
-
- print #selector
-
- ;ldaxi #html_length
- ldaxi #index_html_buffer_length
- stax nb65_param_buffer+NB65_TCP_PAYLOAD_LENGTH
-; ldaxi #html
- ldaxi #index_html_buffer
- stax nb65_param_buffer+NB65_TCP_PAYLOAD_POINTER
- ldaxi #nb65_param_buffer
- nb65call #NB65_SEND_TCP_PACKET
-
- nb65call #NB65_TCP_CLOSE_CONNECTION
-.start_new_connection
- jmp listen_on_port_80
-
-
-
-
-
-;look for NB65 signature at location pointed at by AX
-look_for_signature subroutine
- 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
-
-print_ax subroutine
- stax temp_ptr
- ldy #0
-.next_char
- lda (temp_ptr),y
- beq .done
- jsr print_a
- iny
- jmp .next_char
-.done
- rts
-
-get_key
- jsr $ffe4
- cmp #0
- beq get_key
- rts
-
-reset_after_keypress
- print #press_a_key_to_continue
- jsr get_key
- jmp $fce2 ;do a cold start
-
-
-;init the Time-Of-Day clock - cribbed from http://codebase64.org/doku.php?id=base:initialize_tod_clock_on_all_platforms
-init_tod:
- sei
- lda #0
- sta $d011 ;Turn off display to disable badlines
- sta $dc0e ;Set TOD Clock Frequency to 60Hz
- sta $dc0f ;Enable Set-TOD-Clock
- sta $dc0b ;Set TOD-Clock to 0 (hours)
- sta $dc0a ;- (minutes)
- sta $dc09 ;- (seconds)
- sta $dc08 ;- (deciseconds)
-
- lda $dc08 ;
-.wait_raster
- cmp $dc08 ;Sync raster to TOD Clock Frequency
- beq .wait_raster
-
- ldx #0 ;Prep X and Y for 16 bit
- ldy #0 ; counter operation
- lda $dc08 ;Read deciseconds
-.loop1
- inx ;2 -+
- bne .loop2 ;2/3 | Do 16 bit count up on
- iny ;2 | X(lo) and Y(hi) regs in a
- jmp .loop3 ;3 | fixed cycle manner
-.loop2
- nop ;2 |
- nop ;2 -+
-.loop3
- cmp $dc08 ;4 - Did 1 decisecond pass?
- beq .loop1 ;3 - If not, loop-di-doop
- ;Each loop = 16 cycles
- ;If less than 118230 cycles passed, TOD is
- ;clocked at 60Hz. If 118230 or more cycles
- ;passed, TOD is clocked at 50Hz.
- ;It might be a good idea to account for a bit
- ;of slack and since every loop is 16 cycles,
- ;28*256 loops = 114688 cycles, which seems to be
- ;acceptable. That means we need to check for
- ;a Y value of 28.
-
- cpy #28 ;Did 114688 cycles or less go by?
- bcc .hertz_correct ;- Then we already have correct 60Hz $dc0e value
- lda #$80 ;Otherwise, we need to set it to 50Hz
- sta $dc0e
-.hertz_correct
- lda #$1b ;Enable the display again
- sta $d011
- cli
- rts
-
-
-print_errorcode
- print #error_code
- nb65call #NB65_GET_LAST_ERROR
- nb65call #NB65_PRINT_HEX
- print_cr
- rts
-
-;http callback - will be executed whenever data arrives on the TCP connection
-http_callback
-
- ldaxi #nb65_param_buffer
- nb65call #NB65_GET_INPUT_PACKET_INFO
- lda nb65_param_buffer+NB65_PAYLOAD_LENGTH+1
- cmp #$ff
- bne .not_eof
- lda #1
- sta connection_closed
- rts
-.not_eof
-
- lda #"*"
- jsr print_a
- ldax nb65_param_buffer+NB65_PAYLOAD_POINTER
- stax tcp_inbound_data_ptr
- ldax nb65_param_buffer+NB65_PAYLOAD_LENGTH
- stax tcp_inbound_data_length
-
-;copy this chunk to our input buffer
- ldax tcp_buffer_ptr
- stax nb65_param_buffer+NB65_BLOCK_DEST
- ldax tcp_inbound_data_ptr
- stax nb65_param_buffer+NB65_BLOCK_SRC
- ldax tcp_inbound_data_length
- stax nb65_param_buffer+NB65_BLOCK_SIZE
- ldaxi #nb65_param_buffer
- nb65call #NB65_BLOCK_COPY
-
-
-;increment the pointer into the input buffer
- clc
- lda tcp_buffer_ptr
- adc tcp_inbound_data_length
- sta tcp_buffer_ptr
- sta temp_ptr
- lda tcp_buffer_ptr+1
- adc tcp_inbound_data_length+1
- sta tcp_buffer_ptr+1
- sta temp_ptr
-
-;put a null byte at the end (assumes we have set temp_ptr already)
- lda #0
- tay
- sta (temp_ptr),y
-
-;look for CR or LF in input
- sta found_eol
- ldaxi #scratch_buffer
- stax get_next_byte+1
-
-.look_for_eol
- jsr get_next_byte
- cmp #$0a
- beq .found_eol
- cmp #$0d
- bne .not_eol
-.found_eol
- inc found_eol
- rts
-.not_eol
- cmp #0
- bne .look_for_eol
- rts
-
-
-
-;constants
-nb65_api_not_found_message dc.b "ERROR - NB65 API NOT FOUND.",13,0
-incorrect_version dc.b "ERROR - NB65 API MUST BE AT LEAST VERSION 2.",13,0
-
-nb65_signature dc.b $4E,$42,$36,$35 ; "NB65" - API signature
-initializing dc.b "INITIALIZING ",13,0
-error_code dc.b "ERROR CODE: $",0
-error_while_waiting dc.b "ERROR WHILE "
-waiting dc.b "WAITING FOR CLIENT CONNECTION",13,0
-press_a_key_to_continue dc.b "PRESS ANY KEY TO CONTINUE",0
-mode dc.b " MODE",13,0
-disconnected dc.b 13,"CONNECTION CLOSED",13,0
-failed dc.b "FAILED ", 0
-ok dc.b "OK ", 0
-timeout dc.b 13,"CONNECTION TIMEOUT ",13, 0
-
-transmission_error dc.b "ERROR WHILE SENDING ",0
-http: dc.b "HTTP: ",0
-gopher: dc.b "GOPHER: ",0
-;self modifying code
-get_next_byte
- lda $ffff
- inc get_next_byte+1
- bne .skip
- inc get_next_byte+2
-.skip
- rts
-
-reset_output_buffer
- sta emit_a+1
- stx emit_a+2
- lda #0
- sta output_buffer_length
- sta output_buffer_length+1
- rts
-
-emit_a
- sta $ffff
- inc emit_a+1
- bne .1
- inc emit_a+2
-.1
- inc output_buffer_length
- bne .2
- inc output_buffer_length+1
-.2
- rts
-
-;variables
-protocol ds.b 1
-connection_closed ds.b 1
-connection_timeout_seconds ds.b 1
-found_eol ds.b 1
-nb65_param_buffer DS.B $20
-tcp_buffer_ptr ds.b 2
-scan_ptr ds.b 2
-tcp_inbound_data_ptr ds.b 2
-tcp_inbound_data_length ds.b 2
-output_buffer_length: ds.b 2
-selector: ds.b $100
-scratch_buffer: ds.b $1000
-index_html_buffer: ds.b $1000
-index_html_buffer_length: ds.b 2
-gopher_map_buffer: ds.b $1000
-
-
-
-;-- LICENSE FOR httpd.asm --
-; 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/
-;
-; 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.
-;
-; The Original Code is ip65.
-;
-; The Initial Developer of the Original Code is Jonno Downes,
-; jonno@jamtronix.com.
-; Portions created by the Initial Developer are Copyright (C) 2009
-; Jonno Downes. All Rights Reserved.
-; -- LICENSE END --
diff --git a/client/examples/irc.s b/client/examples/irc.s
deleted file mode 100644
index 4e8accf..0000000
--- a/client/examples/irc.s
+++ /dev/null
@@ -1,324 +0,0 @@
-
-.include "../inc/common.i"
-
-.ifndef KPR_API_VERSION_NUMBER
- .define EQU =
- .include "../inc/kipper_constants.i"
-.endif
-
-print_a = $ffd2
-
-.import ascii_to_native
-
-.macro kippercall function_number
- ldy function_number
- jsr KPR_DISPATCH_VECTOR
-.endmacro
-
-.zeropage
-temp_buff: .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:
-
- .import cls
- jsr cls
- lda #14
- jsr print_a ;switch to lower case
-
- ldax #KPR_CART_SIGNATURE ;where signature should be in cartridge (if cart is banked in)
-look_for_signature:
- stax temp_buff
- ldy #5
-@check_one_byte:
- lda (temp_buff),y
- cmp kipper_signature,y
- bne @bad_match
- dey
- bpl @check_one_byte
- jmp @found_kipper_signature
-
-@bad_match:
- ldax #kipper_api_not_found_message
- jsr print
- rts
-@found_kipper_signature:
- ldax #init_msg
- jsr print
- kippercall #KPR_INITIALIZE
- bcc @init_ok
- jsr print_cr
- ldax #failed_msg
- jsr print
- jsr print_cr
- jsr print_errorcode
- jmp reset_after_keypress
-@init_ok:
-;if we got here, we have found the KIPPER API and initialised the IP stack
- jsr print_ok
- jsr print_cr
- ldax #connecting_msg
- jsr print
- jsr connect_to_irc
- bcc @connect_ok
- jsr print_errorcode
- jmp reset_after_keypress
-@connect_ok:
-
- jsr print_ok
- jsr print_cr
- jsr send_nick
- jsr send_user
- jsr send_join
-
-@endless_loop:
- jsr KPR_PERIODIC_PROCESSING_VECTOR
- jmp @endless_loop
-
-print_ok:
-ldax #ok_msg
-jmp print
-
-reset_after_keypress:
- ldax #press_a_key_to_continue
- jsr print
-@wait_key:
- jsr $f142 ;not officially documented - where F13E (GETIN) falls through to if device # is 0 (KEYBD)
- beq @wait_key
- jmp $fce2 ;do a cold start
-
-print_errorcode:
- ldax #error_code
- jsr print
- kippercall #KPR_GET_LAST_ERROR
- kippercall #KPR_PRINT_HEX
- jmp print_cr
-
-
-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_cr:
- lda #13
- jmp print_a
-
-
-connect_to_irc:
- ldax #irc_server
- stax param_buffer
- ldax #param_buffer
- kippercall #KPR_DNS_RESOLVE
- bcs @exit
-
- ;IP address now set
- ldax irc_port
- stax param_buffer+KPR_TCP_PORT
- ldax #irc_callback
- stax param_buffer+KPR_TCP_CALLBACK
- ldax #param_buffer
- kippercall #KPR_TCP_CONNECT
-
-@exit:
- rts
-
-send_nick:
- ldx #0
-:
- lda nick_msg,x
- beq :+
- sta command_buffer,x
- inx
- bne :-
-:
- ldy #0
-:
- lda nick,y
- beq :+
- sta command_buffer,x
- iny
- inx
- bne :-
-:
-
-add_crlf_and_send_command:
- lda #13
- sta command_buffer,x
- inx
- lda #10
- sta command_buffer,x
- inx
- txa
- ldx #0
- stax param_buffer+KPR_TCP_PAYLOAD_LENGTH
- ldax #command_buffer
- stax param_buffer+KPR_TCP_PAYLOAD_POINTER
- ldax #param_buffer
- kippercall #KPR_SEND_TCP_PACKET
- rts
-
-send_user:
- ldax #user_msg_length
- stax param_buffer+KPR_TCP_PAYLOAD_LENGTH
- ldax #user_msg
- stax param_buffer+KPR_TCP_PAYLOAD_POINTER
- ldax #param_buffer
- kippercall #KPR_SEND_TCP_PACKET
- rts
-
-send_join:
- ldx #0
-:
- lda join_msg,x
- beq :+
- sta command_buffer,x
- inx
- bne :-
-:
- ldy #0
-:
- lda irc_channel,y
- beq :+
- sta command_buffer,x
- iny
- inx
- bne :-
-:
-
- jmp add_crlf_and_send_command
-
-irc_callback:
- ldax #param_buffer
- kippercall #KPR_GET_INPUT_PACKET_INFO
- lda param_buffer+KPR_PAYLOAD_LENGTH+1
- cmp #$ff
- bne @not_eof
- rts
-@not_eof:
- ldax param_buffer+KPR_PAYLOAD_POINTER
- stax pptr
- ldax param_buffer+KPR_PAYLOAD_LENGTH
- stax input_length
-:
-
-@print_loop:
- ldy #0
- lda (pptr),y
- jsr ascii_to_native
- jsr print_a
- dec input_length
- lda input_length
- cmp #$ff
- bne :+
- dec input_length+1
- lda input_length
- cmp #$ff
- beq @done_print
-:
- 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
-
-.bss
-param_buffer: .res 20
-command_buffer: .res 256
-input_length: .res 2
-
-.data
-
-irc_server:
- ;.byte "irc.newnet.net",0
- .byte "jamtronix.com",0
-irc_port:
- .word 6667
-irc_channel:
- .byte "#foo",0
-
-
-nick_msg:
- .byte "NICK ",0
-
-nick:
- .byte "kipper_nick2",0
-
-join_msg:
- .byte "JOIN ",0
-
-user_msg:
- .byte "USER kipper 0 unused :A Kipper User",13,10
-user_msg_length=*-user_msg
-
-kipper_api_not_found_message:
- .byte "ERROR - KIPPER API NOT FOUND.",13,0
-
-failed_msg:
- .byte "FAILED", 0
-
-ok_msg:
- .byte "OK", 0
-init_msg:
- .byte "INITIALIZING ",0
- connecting_msg:
- .byte "CONNECTING ",0
-
-press_a_key_to_continue:
- .byte "PRESS A KEY TO CONTINUE",13,0
-
-kipper_signature:
-.byte $4B,$49,$50,$50,$45,$52 ; "KIPPER"
-
-error_code:
- .asciiz "ERROR CODE: "
-
-
-
-
-;-- LICENSE FOR irc.s --
-; 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/
-;
-; 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.
-;
-; The Original Code is ip65.
-;
-; The Initial Developer of the Original Code is Jonno Downes,
-; jonno@jamtronix.com.
-; Portions created by the Initial Developer are Copyright (C) 2009
-; Jonno Downes. All Rights Reserved.
-; -- LICENSE END --
diff --git a/client/examples/make_sine_data.rb b/client/examples/make_sine_data.rb
deleted file mode 100644
index 9666bf2..0000000
--- a/client/examples/make_sine_data.rb
+++ /dev/null
@@ -1,37 +0,0 @@
-f=File.open("sine_data.i","w")
-
-TABLE_ENTRIES=0x80
-AMPLITUDE=255
-OFFSET=00
-
-TABLE_ENTRIES.times do |i|
- value=OFFSET+Math.sin(Math::PI*i.to_f/TABLE_ENTRIES.to_f)*AMPLITUDE
- if i%0x08==0
- f<<"\n.byte "
- else
- f<<", "
- end
- f<<"$%02x" % value
-end
-
-f.close
-
-
-#-- LICENSE FOR make_sine_data.rb --
-# 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/
-#
-# 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.
-#
-# The Original Code is ip65.
-#
-# The Initial Developer of the Original Code is Jonno Downes,
-# jonno@jamtronix.com.
-# Portions created by the Initial Developer are Copyright (C) 2009
-# Jonno Downes. All Rights Reserved.
-# -- LICENSE END --
diff --git a/client/examples/powertrain.bin b/client/examples/powertrain.bin
deleted file mode 100644
index b6aa81ad45075804504b00f54d9143ec38fc003b..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 3763
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
diff --git a/client/examples/raster.s b/client/examples/raster.s
deleted file mode 100644
index 230b898..0000000
--- a/client/examples/raster.s
+++ /dev/null
@@ -1,293 +0,0 @@
-
-.include "../inc/common.i"
-
-print_a = $ffd2
-
-
-SCREEN_RAM = $0400
-COLOUR_RAM = $d800
-VIC_CTRL_A = $d011
-VIC_RASTER_REG = $d012
-VIC_CTRL_B = $d016
-VIC_MEMORY_CTRL=$d018
-VIC_IRQ_FLAG = $d019
-
-
-IRQ_VECTOR=$314
-
-BORDER_COLOR = $d020
-BACKGROUND_COLOR_0 = $d021
-SCROLL_DELAY=4
-CHARS_PER_LINE = 40
-SCROLL_LINE=12
-SCROLL_RAM = SCREEN_RAM+(SCROLL_LINE*CHARS_PER_LINE)
-
-TOP_BORDER_SCAN_LINES = 50
-
-
-BLACK = 0
-WHITE = 1
-RED = 2
-CYAN = 3
-PURPLE = 4
-GREEN = 5
-BLUE = 6
-YELLOW = 7
-ORANGE = 8
-BROWN = 9
-LIGHT_RED = 10
-DARK_GRAY = 11
-GRAY = 12
-LIGHT_GREEN = 13
-LIGHT_BLUE = 14
-LIGHT_GRAY = 15
-
-
-.macro wait_next_raster
- lda VIC_RASTER_REG
-:
- cmp VIC_RASTER_REG
- beq :-
-.endmacro
-
-.zeropage
-temp_buff: .res 2
-pptr: .res 2
-
-.bss
-
-
-.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
-
-.code
-init:
-
-
- lda #0
- jsr clear_screen
- lda #DARK_GRAY
- sta BORDER_COLOR
- lda #YELLOW
- sta BACKGROUND_COLOR_0
-
-
-
- sei ;disable maskable IRQs
-
- lda #$7f
- sta $dc0d ;disable timer interrupts which can be generated by the two CIA chips
- sta $dd0d ;the kernal uses such an interrupt to flash the cursor and scan the keyboard, so we better
- ;stop it.
-
- lda $dc0d ;by reading this two registers we negate any pending CIA irqs.
- lda $dd0d ;if we don't do this, a pending CIA irq might occur after we finish setting up our irq.
- ;we don't want that to happen.
-
- lda #$01 ;this is how to tell the VICII to generate a raster interrupt
- sta $d01a
-
- lda #$00 ;this is how to tell at which rasterline we want the irq to be triggered
- sta VIC_RASTER_REG
-
- ldax IRQ_VECTOR
- stax old_irq
- jsr set_next_irq_jump
- cli ;enable maskable interrupts again
-
- lda #23
-@endless_loop:
- nop
- inc $ff
- inc $400
- tsx
- stx $410
- sta $411
- ldy #$80
-:
- iny
- bne :-
- jmp @endless_loop
-
-
-clear_screen:
-
- ldx #$00
- lda #$41
-
-:
- sta SCREEN_RAM,x
- sta SCREEN_RAM+$100,x
- sta SCREEN_RAM+$200,x
- sta SCREEN_RAM+$300,x
- sta COLOUR_RAM,x
- sta COLOUR_RAM+$100,x
- sta COLOUR_RAM+$200,x
- sta COLOUR_RAM+$300,x
-
- dex
- bne :-
- rts
-
-set_next_irq_jump:
- inc jump_counter
-
- lda jump_counter
- asl
- asl
-load_next_raster_entry:
- tax
- lda raster_jump_table,x ;bit 9 of raster to trigger on
-
- cmp #$ff
- bne not_last_entry
- lda #0
- sta jump_counter
- jmp load_next_raster_entry
-not_last_entry:
- ora #$18 ;turn on bits 3 & 4
- sta VIC_CTRL_A
- lda raster_jump_table+1,x ;bits 0..7 of raster to trigger on
- sta VIC_RASTER_REG
- lda raster_jump_table+2,x ;LSB of IRQ handler
- sta IRQ_VECTOR
- lda raster_jump_table+3,x ;LSB of IRQ handler
- sta IRQ_VECTOR+1
- rts
-
-exit_from_irq:
- jsr set_next_irq_jump
-jmp_to_original_irq_handler:
- lda #$ff ;this is the orthodox and safe way of clearing the interrupt condition of the VICII.
- sta VIC_IRQ_FLAG;if you don't do this the interrupt condition will be present all the time and you end
- ;up having the CPU running the interrupt code all the time, as when it exists the
- ;interrupt, the interrupt request from the VICII will be there again regardless of the
- ;rasterline counter.
-
- old_irq = * + 1 ; Placeholder for self-modifying code
- jmp $ffff
-
-raster_irq:
-
- ldax #synchronised_irq
- stax IRQ_VECTOR
- nop ; waste at least 12 cycles
- nop ; (up to 64 cycles delay allowed here)
- nop
- nop
- nop
- nop
- inc VIC_RASTER_REG ; At this stage, we have already moved to the next line
- lda #1
- sta VIC_IRQ_FLAG ; acknowledge the first raster interrupt
- cli ; enable interrupts (the second interrupt can now occur)
- ldy #9
- dey
- bne *-1 ; delay
- nop ; The second interrupt will occur while executing these
- nop ; two-cycle instructions.
- nop
- nop
- nop
-
- jmp jmp_to_original_irq_handler
-
-synchronised_irq:
-
- ldx VIC_RASTER_REG
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- bit $24 ; 6569, 63 cycles/line
-
- cpx VIC_RASTER_REG ; The comparison cycle is executed CYCLES or CYCLES+1 cycles
- ; after the interrupt has occurred.
- beq :+ ; Delay by one cycle if $d012 hadn't changed.
- ; Now exactly CYCLES+3 cycles have passed since the interrupt
-:
-
- ;now got a stable raster
- nop
- nop
- nop
- nop
- nop
- nop
- nop
- inc BORDER_COLOR
- inc BACKGROUND_COLOR_0
-
- ldx #20
-@loop:
- wait_next_raster
- dex
- bne @loop
- dec BORDER_COLOR
- dec BACKGROUND_COLOR_0
-
-
- jmp exit_from_irq
-
-
-
-.data
-
-raster_jump_table:
- ;format:
- ;offset meaning
- ; $00 BIT 9 OF RASTER TO TRIGGER ON ($00 if bit 8 =0 , $80 if bit 8 =1)
- ; $01 BITS 0..7 OF RASTER TO TRIGGER ON
- ; $02 LSB OF ROUTINE TO JUMP TO
- ; $03 MSB OF ROUTINE TO JUMP TO
- ;table needs to end with a single byte $ff
- ;table needs to be sorted by scanlines
-; .byte $0,$01
-; .word scroll_text_irq
- .byte $0,$81
- .word raster_irq
-
-; .byte $0,$80
-; .word raster_irq
- .byte $ff ;end of list
-
-jump_counter: .byte 0
-
-
-
-
-
-;-- LICENSE FOR raster.s --
-; 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/
-;
-; 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.
-;
-; The Original Code is ip65.
-;
-; The Initial Developer of the Original Code is Jonno Downes,
-; jonno@jamtronix.com.
-; Portions created by the Initial Developer are Copyright (C) 2009
-; Jonno Downes. All Rights Reserved.
-; -- LICENSE END --
diff --git a/client/examples/sidplay.s b/client/examples/sidplay.s
deleted file mode 100644
index 5f9a1b0..0000000
--- a/client/examples/sidplay.s
+++ /dev/null
@@ -1,250 +0,0 @@
-
-.include "../inc/common.i"
-.include "../inc/commonprint.i"
-
-.import cfg_get_configuration_ptr
-.import copymem
-.importzp copy_src
-.importzp copy_dest
-.import ascii_to_native
-
-.zeropage
-
-.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:
-
- lda #14
- jsr print_a
- ldax #included_sid_length
- stax sidfile_length
- ldax #sid_data
- jsr load_sid
- bcc @ok
- ldax #error
- jmp print
-@ok:
- lda default_song
- jsr init_song
- jsr install_irq_handler
-@loop:
- jmp @loop
- rts
-
-load_sid:
- stax sidfile_address
- stax copy_src
-
- ldy #1
- lda (copy_src),y
- cmp #'S' ;make sure the file starts with 'PSID' or 'RSID'
- beq @ok
- sec
- rts
-@ok:
- ldy #7
- lda (copy_src),y
- sta header_length
-
- inc header_length
- inc header_length
-
- tay
- ;y now points to the start of the real c64 file
- lda (copy_src),y
- sta copy_dest
- iny
- lda (copy_src),y
- sta copy_dest+1
-
- ldy #$0a
- lda (copy_src),y
- sta init_song+2
- iny
- lda (copy_src),y
- sta init_song+1
- iny
- lda (copy_src),y
- sta play_song+2
- iny
- lda (copy_src),y
- sta play_song+1
-
- ldy #$0f
- lda (copy_src),y
- sta number_of_songs
-
- ldy #$11
- lda (copy_src),y
- sta default_song
-
- ldy #$16
- jsr print_ascii_string
-
- ldy #$36
- jsr print_ascii_string
- ldy #$56
- jsr print_ascii_string
-
- ldax #songs
- jsr print
-
- lda number_of_songs
- jsr print_hex
- jsr print_cr
-
- ldax #init_address
- jsr print
- lda init_song+2
- jsr print_hex
- lda init_song+1
- jsr print_hex
- jsr print_cr
-
- ldax #play_address
- jsr print
- lda play_song+2
- jsr print_hex
- lda play_song+1
- jsr print_hex
- jsr print_cr
-
- ldax sidfile_address
- stax copy_src
-
-
- clc
- lda sidfile_address
- adc header_length
- pha
- lda sidfile_address+1
- adc #0
- tax
- pla
- stax copy_src
- sec
- lda sidfile_length
- sbc header_length
- pha
- lda sidfile_length+1
- sbc #0
- tax
- pla
- jsr copymem
-
- clc
- rts
-
-
-install_irq_handler:
- ldax $314 ;previous IRQ handler
- stax jmp_old_irq+1
- sei ;don't want any interrupts while we fiddle with the vector
- ldax #irq_handler
- stax $314 ;previous IRQ handler
- sta irq_handler_installed_flag
- cli
- rts
-
-irq_handler:
- lda $d012
- cmp #100
- bne irq_handler
- lda $01
- pha
- lda #$35
- sta $01
-
- inc $d020
- jsr play_song
- dec $d020
-
- pla
- sta $01
- jmp jmp_old_irq
-
-
-print_ascii_string:
-:
- lda (copy_src),y
- beq :+
- jsr ascii_to_native
- jsr print_a
- iny
- bne :-
- :
- jmp print_cr
-
-
-
-.bss
-number_of_songs: .res 1
-default_song: .res 1
-sidfile_address: .res 2
-header_length: .res 1
-sidfile_length: .res 2
-
-.rodata
-
-songs:
- .byte "SONGS $",0
-error:
- .byte "ERROR",13,0
-init_address:
- .byte "LOAD ADDRESS $",0
-play_address:
- .byte "PLAY ADDRESS $",0
-
-sid_data:
- ;.incbin "Melonix.sid"
-; .incbin "Power_Train.sid"
-; .incbin "Y-Out.sid"
-.incbin "outlaw.sid"
-
-included_sid_length=*-sid_data
-.data
-
-irq_handler_installed_flag: .byte 0
-
-init_song:
- jmp $ffff
-play_song:
- jmp $ffff
-jmp_old_irq:
- jmp $ffff
-
-
-
-
-;-- LICENSE FOR sidplay.s --
-; 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/
-;
-; 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.
-;
-; The Original Code is ip65.
-;
-; The Initial Developer of the Original Code is Jonno Downes,
-; jonno@jamtronix.com.
-; Portions created by the Initial Developer are Copyright (C) 2009
-; Jonno Downes. All Rights Reserved.
-; -- LICENSE END --
diff --git a/client/examples/sidplay_zigzag.s b/client/examples/sidplay_zigzag.s
deleted file mode 100644
index 766da15..0000000
--- a/client/examples/sidplay_zigzag.s
+++ /dev/null
@@ -1,122 +0,0 @@
-
-.include "../inc/common.i"
-.include "../inc/commonprint.i"
-
-.import cfg_get_configuration_ptr
-.import copymem
-.importzp copy_src
-.importzp copy_dest
-.import ascii_to_native
-
-.zeropage
-
-.segment "STARTUP" ;this is what gets put at the start of the file on the C64
-
-.word basicstub ; load address
-
-init_song=$1000
-play_song=$1003
-
-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 #sid_data+2
- stax copy_src
-
- ldax $4000
- stax copy_dest
-
- jsr copymem
-
-
- ldax $4000
- stax copy_src
-
- ldax $1000
- stax copy_dest
-
- jsr copymem
-
- lda #0
- jsr init_song
- jsr install_irq_handler
-@loop:
- jmp @loop
- rts
-
-
-
- clc
- rts
-
-
-install_irq_handler:
- ldax $314 ;previous IRQ handler
- stax jmp_old_irq+1
- sei ;don't want any interrupts while we fiddle with the vector
- ldax #irq_handler
- stax $314 ;previous IRQ handler
- sta irq_handler_installed_flag
- cli
- rts
-
-irq_handler:
- inc $d020
- jsr play_song
- dec $d020
- jmp jmp_old_irq
-
-
-
-
-.bss
-
-.rodata
-
-sid_data:
- ;.incbin "Melonix.sid"
-; .incbin "Power_Train.sid"
- .incbin "zigzag.prg"
-
-included_sid_length=*-sid_data
-.data
-
-irq_handler_installed_flag: .byte 0
-
-jmp_old_irq:
- jmp $ffff
-
-
-
-
-;-- LICENSE FOR sidplay_zigzag.s --
-; 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/
-;
-; 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.
-;
-; The Original Code is ip65.
-;
-; The Initial Developer of the Original Code is Jonno Downes,
-; jonno@jamtronix.com.
-; Portions created by the Initial Developer are Copyright (C) 2009
-; Jonno Downes. All Rights Reserved.
-; -- LICENSE END --
diff --git a/client/examples/sine_data.i b/client/examples/sine_data.i
deleted file mode 100644
index 052ab2f..0000000
--- a/client/examples/sine_data.i
+++ /dev/null
@@ -1,37 +0,0 @@
-
-.byte $00, $06, $0c, $12, $18, $1f, $25, $2b
-.byte $31, $37, $3d, $44, $4a, $4f, $55, $5b
-.byte $61, $67, $6d, $72, $78, $7d, $83, $88
-.byte $8d, $92, $97, $9c, $a1, $a6, $ab, $af
-.byte $b4, $b8, $bc, $c1, $c5, $c9, $cc, $d0
-.byte $d4, $d7, $da, $dd, $e0, $e3, $e6, $e9
-.byte $eb, $ed, $f0, $f2, $f4, $f5, $f7, $f8
-.byte $fa, $fb, $fc, $fd, $fd, $fe, $fe, $fe
-.byte $ff, $fe, $fe, $fe, $fd, $fd, $fc, $fb
-.byte $fa, $f8, $f7, $f5, $f4, $f2, $f0, $ed
-.byte $eb, $e9, $e6, $e3, $e0, $dd, $da, $d7
-.byte $d4, $d0, $cc, $c9, $c5, $c1, $bc, $b8
-.byte $b4, $af, $ab, $a6, $a1, $9c, $97, $92
-.byte $8d, $88, $83, $7d, $78, $72, $6d, $67
-.byte $61, $5b, $55, $4f, $4a, $44, $3d, $37
-.byte $31, $2b, $25, $1f, $18, $12, $0c, $06
-
-
-;-- LICENSE FOR sine_data.i --
-; 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/
-;
-; 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.
-;
-; The Original Code is ip65.
-;
-; The Initial Developer of the Original Code is Jonno Downes,
-; jonno@jamtronix.com.
-; Portions created by the Initial Developer are Copyright (C) 2009
-; Jonno Downes. All Rights Reserved.
-; -- LICENSE END --
diff --git a/client/examples/spud_letters.spr b/client/examples/spud_letters.spr
deleted file mode 100644
index 38a50ad7220572b4e0b462d35d23ae61678358d2..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 2048
zcmb7FJC58i4CQJoyO~_VNV6A78${3+2BzK8-C~PH4v<=AnP~z9^dW5I4vV?Q-asKG
zezzcxsVe+eKM&ZB#`OFpj2E*!__cHwKE
zf8v0a=<@TF;`ahFAVA4Rj4I-)Yr0U3&(&@?OOYEL_RMw7)iFNjyO?B8B*>}LpIh(~
zKmV7X@)`i>kpIbHWj3pQ^ArB27JL{JhJkhz$Hnh&E~E@Fd{S;wI^HAq5!QKLK$x!U(__V|(heXHl%_R)Kfi!#XFLC6s-&8e;Sgu|-tv?p4uuO#+LiKfD=
zUFo6kXOgIY8*Vz)F8rFJgesF%As=Pg3
zR=3#WmH9*Ta(O?jm~<^(E-Rxn+32p%tSLvRB0|1`3*cT_ND7OvrOV|Kmr@SV0|o0+
zT~f@A((Lc|o7v>#uYn?4NbPuWPC9ZRW6kx_B|iVpT$C!kG}lL^$8(2h{{0M!m*J_*
zj{#R61NGeHvV@fp$`&7|iz%o;vbV->Ix#|tGC|wsN2&XQ8k1p1>gzIWDM_G6M`(sq
zgo1iWE}4{mIJOd}>O0IBV8+W-eIE=cQ3gR(9I$>V7F^QR9;n{h08MU#dD+(a0a|)g
z?U3E8j`v=!){(_zNYA}QkM+nyNO_4Wd_gf3=KE=>Up-5g7P5zzl1Zs#e=kl;lJtc;
zNmx3&TX~+Ql*3g0Hig>~*ZOG^s~=L>ntF$ltl`82oy(i&Cur_))tRy>C#ix8>N%Uj
z6_isn_dNY9lwBwU@2tejP{Gn)Av0b{?qx|Q=|?Hs-rOnr(K*{(INKbmq(bFv7W|<~
zjR<0)@_}8p)kI#
z`44#6&}Eo3WDI{Xv+#A)${xE;sw2l$}zSH>qzKQ*Fw|5
z8{U25L#L+e=zg-MbIkqU!+j>sbar;?GtfcJ%*0~V0qo8*XU=R^)=QUeuB>$a=+e!#
zmFGHVZ?3Ss&Cks4s_4(@R{i?iTL@iet6l%$!XMvWs16HY8jPqJi6-kcq#(A_aMon3A2{`#L9`*T`X|5uNnzhJM*7LX2t@{JjSwusx8m?lz%vd(EeF9;rRpsG*;_dbH&4G44zyj+lZVvs=
zoOa&pMzA>#?xiP7n=~^%PQ!Xrt*-
zqEEbW7Xun5I2^fJt=)1&8v=VY9SH+d55$4G$f%3^EcyfI?&9MAb!JvUAK%t4qG6jh
zOd|wZt;0CfFw__(&}tpVkQA~G5@@v!W2i1vU-i6TBQMY(ffhsoP7CmU5)es%3-H7r
z;HsGKXysb@$4IM47$A?eatycgei!HBcM_LK7$7@cTov=~+RNkxCKThZu>KC7b}&9~A$GF_>AWBc_~VDv
z)iv5GHr+O3(=128 so emit all 3 digits
- cmp #10
- bmi @emit_units
- cmp #100
- bmi @emit_tens
-@emit_hundreds:
- lda temp_bcd+1 ;get the most significant digit
- and #$0f
- clc
- adc #'0'
- jsr emit_a
-
-@emit_tens:
- lda temp_bcd
- lsr
- lsr
- lsr
- lsr
- clc
- adc #'0'
- jsr emit_a
-@emit_units:
- lda temp_bcd
- and #$0f
- clc
- adc #'0'
- jsr emit_a
-
- rts
-
-reset_after_keypress:
- ldax #press_a_key_to_continue
- jsr print
-@wait_key:
- jsr $f142 ;not officially documented - where F13E (GETIN) falls through to if device # is 0 (KEYBD)
- beq @wait_key
- jmp $fce2 ;do a cold start
-
-print_errorcode:
- ldax #error_code
- jsr print
- kippercall #KPR_GET_LAST_ERROR
- kippercall #KPR_PRINT_HEX
- jmp print_cr
-
-
-
-
-
-play_music_irq:
-; inc BORDER_COLOR
- start_irq
- jsr MUSIC_BASE+PLAYER_PLAY
-; dec BORDER_COLOR
- jmp exit_from_irq
-
-emit_titles:
- ldax #download_buffer
- kippercall #KPR_PARSER_INIT
-@next_title:
- ldax #title
- kippercall #KPR_PARSER_SKIP_NEXT
- bcs @done
-
- jsr emit_tag_contents
- lda #' '
- jsr emit_a
- lda #'/'
- jsr emit_a
- lda #' '
- jsr emit_a
- jmp @next_title
-@done:
- lda #0
- jsr emit_a
- rts
-
-emit_tag_contents:
- stax temp_buff
- lda #0
- sta string_offset
-@next_byte:
- jsr @get_next_byte
- cmp #0
- beq @done
- cmp #'<'
- beq @done
- cmp #'&'
- beq @entity
- jsr emit_a
- beq @done
- jmp @next_byte
-@entity:
- jsr @get_next_byte
- cmp #'a'
- bne @not_amper
- lda #'&'
- jsr emit_a
-@not_amper:
- cmp #'g'
- bne @not_gt
- lda #'>'
- jsr emit_a
-@not_gt:
- cmp #'l'
- bne @not_lt
- lda #'<'
- jsr emit_a
-@not_lt:
-
-@loop_till_semi_colon:
- jsr @get_next_byte
- cmp #0
- beq @done
- cmp #';'
- bne @loop_till_semi_colon
- jmp @next_byte
-@get_next_byte:
- ldy string_offset
- lda (temp_buff),y
- inc string_offset
-@done:
- rts
-
-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_cr:
- lda #13
- jmp print_a
-
-.data
-
-sprite_ticker: .byte 0
-
-emit_a:
-current_output_ptr=emit_a+1
- sta $ffff
- inc current_output_ptr
- bne :+
- inc current_output_ptr+1
-:
- rts
-
-get_a:
-current_input_ptr=get_a+1
- lda $ffff
- inc current_input_ptr
- bne :+
- inc current_input_ptr+1
-:
- rts
-
-
-raster_jump_table:
- ;format:
- ;offset meaning
- ; $00 BIT 9 OF RASTER TO TRIGGER ON ($00 if bit 8 =0 , $80 if bit 8 =1)
- ; $01 BITS 0..7 OF RASTER TO TRIGGER ON
- ; $02 LSB OF ROUTINE TO JUMP TO
- ; $03 MSB OF ROUTINE TO JUMP TO
- ;table needs to end with a single byte $ff
- ;table needs to be sorted by scanlines
- .byte $0,$01
- .word scroll_text_irq
- .byte $0,$20
- .word pixel_scroll_irq
-
-
- .byte $0,$80
- .word play_music_irq
-
- .byte $80,$05
- .word move_sprites_irq
-
- .byte $ff ;end of list
-
-jump_counter: .byte 0
-
-
-sprite_x_pos:
-.byte $34,$54,$78,$90,$Bb,$Db,$Fb,$1b
-
-sprite_x_msb:
-.byte $80
-
-sprite_y_pos:
-.repeat 128
- .byte 0
-.endrep
-.include "sine_data.i"
-
-;.include "sine_data.i"
-
-
-
-static_title: .byte "up 'n atom - the old skool feed reader!",$20,0
-sprite_text:
-
-.byte "UP\NATOM" ;options are A-Z, "[\]^_"
-
-scroll_template:
-.byte " ip: %i / gateway: %g / dns server %d / polling %f /"
-.byte " ",0
-
-
-feed_url:
-.byte "http://static.cricinfo.com/rss/livescores.xml",0
-.byte "http://search.twitter.com/search.atom?q=kipper",0
-;leave space for whatever we read in from disk
-.repeat 128
-.byte 0
-.endrep
-
-url_config_file:
-
-.byte "URL.CFG",0
-
-read_url_file_param_buffer:
- .word url_config_file ;KPR_FILE_ACCESS_FILENAME
- .word feed_url ;B65_FILE_ACCESS_POINTER
- .word $0000 ;KPR_FILE_ACCESS_FILESIZE - should be filled in
- .byte $00 ;KPR_FILE_ACCESS_DEVICE
-
-
-title:
-.byte "",0
-
-kipper_api_not_found_message:
- .byte "ERROR - KIPPER API NOT FOUND.",13,0
-
-failed_msg:
- .byte "FAILED", 0
-
-ok_msg:
- .byte "OK", 0
-
-
-init_msg:
- .byte " INITIALIZING ",0
-
-press_a_key_to_continue:
- .byte "PRESS A KEY TO CONTINUE",13,0
-
-kipper_signature:
-.byte $4B,$49,$50,$50,$45,$52 ; "KIPPER"
-
-error_code:
- .asciiz "ERROR CODE: "
-
-charset_font:
- .incbin "font16x8.bin"
-sprite_font:
- .incbin "spud_letters.spr"
-musicdata:
-;.incbin "tune.bin"
-.incbin "powertrain.bin"
-musicdata_size=*-musicdata
-
-.segment "SAFE_BSS"
-;we want our variables to start at $3000, out of the way of our music player and the font data
-
-param_offset: .res 1
-
-temp_bin: .res 1
-temp_bcd: .res 2
-
-scroll_state: .res 1
-
-param_buffer: .res $20
-
-download_buffer:
-download_buffer_length=12000
- .res download_buffer_length
-
-.res 10 ;filler
-scroll_buffer_0:
- .res 1000
-
-scroll_buffer_1:
- .res 2000
-
-string_offset: .res 1
-
-
-
-;-- LICENSE FOR upnatom.s --
-; 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/
-;
-; 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.
-;
-; The Original Code is ip65.
-;
-; The Initial Developer of the Original Code is Jonno Downes,
-; jonno@jamtronix.com.
-; Portions created by the Initial Developer are Copyright (C) 2009
-; Jonno Downes. All Rights Reserved.
-; -- LICENSE END --
diff --git a/client/examples/url.cfg b/client/examples/url.cfg
deleted file mode 100644
index 8fa7f64..0000000
--- a/client/examples/url.cfg
+++ /dev/null
@@ -1 +0,0 @@
-http://static.cricinfo.com/rss/livescores.xml
\ No newline at end of file
diff --git a/client/examples/webnoter.s b/client/examples/webnoter.s
deleted file mode 100644
index cb1637f..0000000
--- a/client/examples/webnoter.s
+++ /dev/null
@@ -1,941 +0,0 @@
-
-.include "../inc/common.i"
-
-.ifndef KPR_API_VERSION_NUMBER
- .define EQU =
- .include "../inc/kipper_constants.i"
-.endif
-
-print_a = $ffd2
-
-
-.export musicdata
-.export musicdata_size
-.export sprite_font
-.export html
-.export scroll_template_1
-.export scroll_template_2
-
-.import __DATA6K_LOAD__
-.import __DATA6K_RUN__
-.import __DATA6K_SIZE__
-
-SCREEN_RAM = $0400
-COLOUR_RAM = $d800
-VIC_CTRL_A = $d011
-VIC_RASTER_REG = $d012
-VIC_CTRL_B = $d016
-VIC_MEMORY_CTRL=$d018
-VIC_IRQ_FLAG = $d019
-
-copy_src = $24
-
-
-IRQ_VECTOR=$fffe
-
-MUSIC_BASE=$1000 ;where we relocate our music routine to
-PLAYER_INIT=0
-PLAYER_PLAY=3
-
-BORDER_COLOR = $d020
-BACKGROUND_COLOR_0 = $d021
-SCROLL_DELAY=4
-CHARS_PER_LINE = 40
-SCROLL_LINE=12
-SCROLL_RAM = SCREEN_RAM+(SCROLL_LINE*CHARS_PER_LINE)
-
-TOP_BORDER_SCAN_LINES = 50
-
-
-BLACK = 0
-WHITE = 1
-RED = 2
-CYAN = 3
-PURPLE = 4
-GREEN = 5
-BLUE = 6
-YELLOW = 7
-ORANGE = 8
-BROWN = 9
-LIGHT_RED = 10
-DARK_GRAY = 11
-GRAY = 12
-LIGHT_GREEN = 13
-LIGHT_BLUE = 14
-LIGHT_GRAY = 15
-
-.macro start_irq
- pha
- txa
- pha
- tya
- pha
-
-.endmacro
-
-
-.macro end_irq
- pla
- tay
- pla
- tax
- pla
-.endmacro
-
-.macro wait_next_raster
- lda VIC_RASTER_REG
-@loop:
- cmp VIC_RASTER_REG
- beq @loop
-.endmacro
-
-.macro kippercall function_number
- ldy function_number
- jsr KPR_DISPATCH_VECTOR
-.endmacro
-
-.zeropage
-temp_buff: .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 #KPR_CART_SIGNATURE ;where signature should be in cartridge (if cart is banked in)
-look_for_signature:
- stax temp_buff
- ldy #5
-@check_one_byte:
- lda (temp_buff),y
- cmp kipper_signature,y
- bne @bad_match
- dey
- bpl @check_one_byte
- jmp @found_kipper_signature
-
-@bad_match:
- ldax #kipper_api_not_found_message
- jsr print
-@loop:
- jmp @loop
- rts
-@found_kipper_signature:
-
- ldax #init_msg
- jsr print
- kippercall #KPR_INITIALIZE
- bcc @init_ok
- jsr print_cr
- ldax #failed_msg
- jsr print
- jsr print_cr
- jsr print_errorcode
- jmp reset_after_keypress
-@init_ok:
-
-;if we got here, we have found the KIPPER API and initialised the IP stack
-
-
- ;copy our runtime data to where it lives
- ldax #__DATA6K_LOAD__
- stax param_buffer+KPR_BLOCK_SRC
- ldax #__DATA6K_RUN__
- stax param_buffer+KPR_BLOCK_DEST
- ldax #__DATA6K_SIZE__
- stax param_buffer+KPR_BLOCK_SIZE
- ldax #param_buffer
- kippercall #KPR_BLOCK_COPY
-
-
-
- ;copy our music data up to a temp buffer (in case it gets overwritten by
- ;one of the other unpacking moves)
- ldax #musicdata+2 ;skip over the 2 byte address
- stax param_buffer+KPR_BLOCK_SRC
- ldax #download_buffer
- stax param_buffer+KPR_BLOCK_DEST
- ldax #musicdata_size-2 ;don't copy the 2 byte address
- stax param_buffer+KPR_BLOCK_SIZE
- ldax #param_buffer
- kippercall #KPR_BLOCK_COPY
-
- ;copy our font data and the sprite data to $3000..$3fff
- ldax #charset_font
- stax param_buffer+KPR_BLOCK_SRC
- ldax #$3000
- stax param_buffer+KPR_BLOCK_DEST
- ldax #MUSIC_BASE
- stax param_buffer+KPR_BLOCK_SIZE
- ldax #param_buffer
- kippercall #KPR_BLOCK_COPY
-
- ;should now be now safe to copy the music data back down
- ;copy our music data to $1000..$1fff
- ldax #download_buffer
- stax param_buffer+KPR_BLOCK_SRC
- ldax #MUSIC_BASE
- stax param_buffer+KPR_BLOCK_DEST
- ldax #musicdata_size-2 ;don't copy the 2 byte address
- stax param_buffer+KPR_BLOCK_SIZE
- ldax #param_buffer
- kippercall #KPR_BLOCK_COPY
-
-
- ldax #scroll_template_1
- jsr setup_static_scroll_text
-
- lda #0
- jsr clear_screen
- lda #DARK_GRAY
- sta BORDER_COLOR
- lda #YELLOW
- sta BACKGROUND_COLOR_0
-
- lda #$1c ; use charset at $3000
- sta VIC_MEMORY_CTRL
-
-
- sei ;disable maskable IRQs
-
- lda #$7f
- sta $dc0d ;disable timer interrupts which can be generated by the two CIA chips
- sta $dd0d ;the kernal uses such an interrupt to flash the cursor and scan the keyboard, so we better
- ;stop it.
-
- lda $dc0d ;by reading this two registers we negate any pending CIA irqs.
- lda $dd0d ;if we don't do this, a pending CIA irq might occur after we finish setting up our irq.
- ;we don't want that to happen.
-
- lda #$01 ;this is how to tell the VICII to generate a raster interrupt
- sta $d01a
-
- lda #$00 ;this is how to tell at which rasterline we want the irq to be triggered
- sta VIC_RASTER_REG
-
-
- ;copy KERNAL to the RAM underneath, in case any ip65 routines need it
- ldax #$e000
- stax param_buffer+KPR_BLOCK_SRC
- stax param_buffer+KPR_BLOCK_DEST
- ldax #$1FFF
- stax param_buffer+KPR_BLOCK_SIZE
- ldax #param_buffer
- kippercall #KPR_BLOCK_COPY
-
- ;copy KIPPER cart to the RAM underneath, so we can swap it out and modify the IRQ vector
- ldax #$8000
- stax param_buffer+KPR_BLOCK_SRC
- stax param_buffer+KPR_BLOCK_DEST
- ldax #$4000
- stax param_buffer+KPR_BLOCK_SIZE
- ldax #param_buffer
- kippercall #KPR_BLOCK_COPY
-
-
- lda #$35 ;we turn off the BASIC and KERNAL rom here, so we can overwrite the IRQ vector at $fffe
- sta $01 ;the cpu now sees RAM everywhere except at $d000-$e000, where still the registers of
- ;SID/VICII/etc are visible
-
- lda #((SPRITE_FRAMES-1)*8)
- sta sprite_text_frame
- jsr setup_sprites
-
- jsr setup_music
-
-
- jsr set_next_irq_jump
- cli ;enable maskable interrupts again
-
-
-;position for the first text
-
- jsr reset_input_buffer
-
-
-
-start_web_server:
- ldax #httpd_callback
- kippercall #KPR_HTTPD_START ;this will only return if there is an error
- rts
-
-
-reset_input_buffer:
-
- lda new_message
- beq @no_message_yet
- ldax #scroll_template_2
- jsr setup_static_scroll_text
- ldx #0
- stx new_message
-
-@no_message_yet:
- ldax #scroll_buffer
- stax current_input_ptr
- rts
-
-httpd_callback:
- lda #'h'
- kippercall #KPR_HTTPD_GET_VAR_VALUE
- bcs @not_complete_fields
- stax copy_src
- ldy #0
- lda (copy_src),y
- beq @not_complete_fields
-
-@copy_handle_loop:
- lda (copy_src),y
- beq @end_of_handle
- sta handle,y
- iny
- bne @copy_handle_loop
-@end_of_handle:
- lda #0
- sta handle,y
- lda #'m'
- kippercall #KPR_HTTPD_GET_VAR_VALUE
- bcs @not_complete_fields
- stax copy_src
- ldy #0
- lda (copy_src),y
- beq @not_complete_fields
-
-@copy_message_loop:
- lda (copy_src),y
- beq @end_of_message
- sta message_text,y
- iny
- bne @copy_message_loop
-@end_of_message:
- lda #0
- sta message_text,y
- inc new_message
-
-@not_complete_fields:
-
- ldax #html
- ldy #2 ;text/html
- clc
- rts
-
-
-;set up the tune
-setup_music:
- lda #$00 ;init subtune 0
- jsr MUSIC_BASE+PLAYER_INIT
- rts
-
-setup_sprites:
-
- ;turn on all 8 sprites
- lda #$FF
- sta $d015
-
- ldx #$07
-@setup_sprite:
- ;position each sprite
- txa
- asl
- tay
- lda sprite_x_pos,x
- sta $d000,y ;sprite 0 X pos (LSB)
- lda #0
- sta $d001,y ;sprite 0 Y pos
-
- ;colour sprite 0
- lda #BLUE
- sta $d027,x ;sprite 0 color
-
- ;select bitmap for sprite
- dex
- bpl @setup_sprite
-
- lda sprite_x_msb
- sta $d010
-
- ;turn on multicolor mode for all 8 sprites
- lda #$FF
- sta $d01c
-
- sta sprite_ticker
-
- lda #DARK_GRAY
- sta $d025 ;sprite multicolor register 0
- lda #LIGHT_GRAY
- sta $d026 ;sprite multicolor register 1
-
- rts
-
-
-clear_screen:
-
- ldx #$00
- lda #$20
-
-:
- sta SCREEN_RAM,x
- sta SCREEN_RAM+$100,x
- sta SCREEN_RAM+$200,x
- sta SCREEN_RAM+$300,x
- sta COLOUR_RAM,x
- sta COLOUR_RAM+$100,x
- sta COLOUR_RAM+$200,x
- sta COLOUR_RAM+$300,x
-
- dex
- bne :-
- rts
-
-set_next_irq_jump:
- inc jump_counter
-
- lda jump_counter
- asl
- asl
-load_next_raster_entry:
- tax
- lda raster_jump_table,x ;bit 9 of raster to trigger on
-
- cmp #$ff
- bne not_last_entry
- lda #0
- sta jump_counter
- jmp load_next_raster_entry
-not_last_entry:
- ora #$18 ;turn on bits 3 & 4
- sta VIC_CTRL_A
- lda raster_jump_table+1,x ;bits 0..7 of raster to trigger on
- sta VIC_RASTER_REG
- lda raster_jump_table+2,x ;LSB of IRQ handler
- sta IRQ_VECTOR
- lda raster_jump_table+3,x ;LSB of IRQ handler
- sta IRQ_VECTOR+1
- rts
-
-exit_from_irq:
- jsr set_next_irq_jump
- lda #$ff ;this is the orthodox and safe way of clearing the interrupt condition of the VICII.
- sta VIC_IRQ_FLAG;if you don't do this the interrupt condition will be present all the time and you end
- ;up having the CPU running the interrupt code all the time, as when it exists the
- ;interrupt, the interrupt request from the VICII will be there again regardless of the
- ;rasterline counter.
-
- end_irq
- rti
-
-
-
-scroll_text_irq:
- start_irq
- lda scroll_timer
- bne done_scrolling_message
- lda #SCROLL_DELAY
- sta scroll_timer
- ldx #1
- ldy #0
-scroll_1_char:
- lda SCROLL_RAM,x
- sta SCROLL_RAM,y
- lda SCROLL_RAM+40,x
- sta SCROLL_RAM+40,y
-
- inx
- iny
- cpx #CHARS_PER_LINE
- bne scroll_1_char
-
-
- jsr get_a
- cmp #0
- beq last_char_in_message
- sta SCROLL_RAM+CHARS_PER_LINE-1
- clc
- adc #$80
- sta SCROLL_RAM+CHARS_PER_LINE+40-1
-
- jmp done_scrolling_message
-
-
-last_char_in_message:
- jsr reset_input_buffer
-
-done_scrolling_message:
- dec scroll_timer
-
- jmp exit_from_irq
-
-
-scroll_timer: .byte 1
-scroll_counter: .byte 0
-
-
-pixel_scroll_irq:
- start_irq
- wait_next_raster
-; set X scroll offset
- lda scroll_timer
- clc
- asl
- clc
- and #$07
- sta VIC_CTRL_B
-
- jmp exit_from_irq
-
-move_sprites_irq:
- start_irq
- wait_next_raster
-
- inc sprite_ticker
- bne @sprite_not_offscreen
- clc
- lda sprite_text_frame
- adc #8
- cmp #8*SPRITE_FRAMES
- bne @not_last_frame
- lda #0
-@not_last_frame:
- sta sprite_text_frame
- ldx #$07
-@set_sprite_text:
- clc
- txa
- adc sprite_text_frame
- tay
- lda sprite_text,y
- cmp #' '
- bne @not_space
- lda #'`' ;map a space in the sprite text to 0x60,so it ends up with font offset 0x1F after subbing 'A'
-@not_space:
- sec
- sbc #'A'
- clc
- adc #<($3800/64) ;sprite font should be relocated here
- sta SCREEN_RAM+$03f8,x
- dex
- bpl @set_sprite_text
-
-@sprite_not_offscreen:
- ldy sprite_ticker
- ldx #$0e ;7*2
-@position_sprite:
- lda sprite_y_pos,y
- sta $d001,x ;sprite 0 Y pos
-
- ;change colour when the sprite goes off screen
-; cmp #$ff ;are we off the screen?
-; bne @not_off_screen
-; txa
-; pha
-; lsr
-; tax
-; inc $d027,x ;sprite color
-; pla
-; tax
-;@not_off_screen:
-
- txa
- beq @y_set
- dex
- dex
-@mod_y:
- iny
- iny
- iny
- dex
- dex
- bpl @mod_y
-@y_set:
-
- tax
- dex
- dex
- bpl @position_sprite
-
- jmp exit_from_irq
-
-
-setup_static_scroll_text:
- stax current_input_ptr
- lda #0
- sta new_message
- ldax #scroll_buffer
- stax current_output_ptr
-@next_byte:
- jsr get_a
- beq @next_byte
- cmp #'%'
- beq @operator
- pha
- jsr emit_a
- pla
- bne @next_byte
- rts
-
-@operator:
- jsr get_a
- cmp #'m'
- bne @not_message
- ldx #0
-:
- lda message_text,x
- beq @next_byte
- cmp #$20
- bpl @not_ctrl_char
- lda #' '
-@not_ctrl_char:
- jsr emit_a
- inx
- bne :-
-
-@not_message:
- cmp #'h'
- bne @not_handle
- ldx #0
- :
- lda handle,x
- beq @next_byte
- jsr emit_a
- inx
- bne :-
-
-@not_handle:
-
- cmp #'i'
- bne @not_ip
- lda #KPR_CFG_IP
- jmp @loaded_offset
-@not_ip:
- cmp #'g'
- bne @not_gateway
- lda #KPR_CFG_GATEWAY
- jmp @loaded_offset
-@not_gateway:
- cmp #'d'
- bne @not_dns
- lda #KPR_CFG_DNS_SERVER
- jmp @loaded_offset
-@not_dns:
- jmp @next_byte
-
-@loaded_offset:
- sta param_offset
- kippercall #KPR_GET_IP_CONFIG
- adc param_offset
- bcc :+
- inx
-:
- jsr emit_dotted_quad
-
-
- jmp @next_byte
-
-;emit the 4 bytes pointed at by AX as dotted decimals
-emit_dotted_quad:
- sta pptr
- stx pptr + 1
- ldy #0
- lda (pptr),y
- jsr emit_decimal
- lda #'.'
- jsr emit_a
-
- ldy #1
- lda (pptr),y
- jsr emit_decimal
- lda #'.'
- jsr emit_a
-
- ldy #2
- lda (pptr),y
- jsr emit_decimal
- lda #'.'
- jsr emit_a
-
- ldy #3
- lda (pptr),y
- jsr emit_decimal
-
- rts
-
-emit_decimal: ;emit byte in A as a decimal number
- pha
- sta temp_bin ;save
- sed ; Switch to decimal mode
- lda #0 ; Ensure the result is clear
- sta temp_bcd
- sta temp_bcd+1
- ldx #8 ; The number of source bits
- :
- asl temp_bin+0 ; Shift out one bit
- lda temp_bcd+0 ; And add into result
- adc temp_bcd+0
- sta temp_bcd+0
- lda temp_bcd+1 ; propagating any carry
- adc temp_bcd+1
- sta temp_bcd+1
- dex ; And repeat for next bit
- bne :-
-
- cld ;back to binary
-
- pla ;get back the original passed in number
- bmi @emit_hundreds ; if N is set, the number is >=128 so emit all 3 digits
- cmp #10
- bmi @emit_units
- cmp #100
- bmi @emit_tens
-@emit_hundreds:
- lda temp_bcd+1 ;get the most significant digit
- and #$0f
- clc
- adc #'0'
- jsr emit_a
-
-@emit_tens:
- lda temp_bcd
- lsr
- lsr
- lsr
- lsr
- clc
- adc #'0'
- jsr emit_a
-@emit_units:
- lda temp_bcd
- and #$0f
- clc
- adc #'0'
- jsr emit_a
-
- rts
-
-reset_after_keypress:
- ldax #press_a_key_to_continue
- jsr print
-@wait_key:
- jsr $f142 ;not officially documented - where F13E (GETIN) falls through to if device # is 0 (KEYBD)
- beq @wait_key
- jmp $fce2 ;do a cold start
-
-print_errorcode:
- ldax #error_code
- jsr print
- kippercall #KPR_GET_LAST_ERROR
- kippercall #KPR_PRINT_HEX
- jmp print_cr
-
-
-
-
-
-play_music_irq:
-; inc BORDER_COLOR
- start_irq
- jsr MUSIC_BASE+PLAYER_PLAY
-; dec BORDER_COLOR
- jmp exit_from_irq
-
-
-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_cr:
- lda #13
- jmp print_a
-
-.data
-
-sprite_ticker: .byte 0
-
-emit_a:
-current_output_ptr=emit_a+1
- sta $ffff
- inc current_output_ptr
- bne :+
- inc current_output_ptr+1
-:
- rts
-
-get_a:
-current_input_ptr=get_a+1
- lda $ffff
- inc current_input_ptr
- bne :+
- inc current_input_ptr+1
-:
- rts
-
-
-raster_jump_table:
- ;format:
- ;offset meaning
- ; $00 BIT 9 OF RASTER TO TRIGGER ON ($00 if bit 8 =0 , $80 if bit 8 =1)
- ; $01 BITS 0..7 OF RASTER TO TRIGGER ON
- ; $02 LSB OF ROUTINE TO JUMP TO
- ; $03 MSB OF ROUTINE TO JUMP TO
- ;table needs to end with a single byte $ff
- ;table needs to be sorted by scanlines
- .byte $0,$01
- .word scroll_text_irq
- .byte $0,$20
- .word pixel_scroll_irq
-
-
- .byte $0,$80
- .word play_music_irq
-
- .byte $80,$05
- .word move_sprites_irq
-
- .byte $ff ;end of list
-
-jump_counter: .byte 0
-
-.data
-kipper_api_not_found_message:
- .byte "ERROR - KIPPER API NOT FOUND.",13,0
-
-failed_msg:
- .byte "FAILED", 0
-
-ok_msg:
- .byte "OK", 0
-
-
-init_msg:
- .byte " INITIALIZING ",0
-
-press_a_key_to_continue:
- .byte "PRESS A KEY TO CONTINUE",13,0
-
-kipper_signature:
-.byte $4B,$49,$50,$50,$45,$52 ; "KIPPER"
-
-error_code:
- .asciiz "ERROR CODE: "
-
-charset_font:
- .incbin "font16x8.bin"
-sprite_font:
- .incbin "spud_letters.spr"
-
-musicdata:
-.incbin "powertrain.bin"
-musicdata_size=*-musicdata
-
-
-.segment "DATA6K"
-
-
-sprite_x_pos:
-.byte $34,$54,$78,$90,$Bb,$Db,$Fb,$1b
-
-sprite_x_msb:
-.byte $80
-
-sprite_y_pos:
-.repeat 128
- .byte 0
-.endrep
-.include "sine_data.i"
-
-;.include "sine_data.i"
-
-
-html:
- .incbin "form.html"
-.byte 0
-
-scroll_template_1:
-.byte "WebNoter - go to http://%i/ and bang away! -"
-.byte " ",0
-
-scroll_template_2:
-.byte "http://%i/"
-.byte " - %h sez '%m' -"
-.byte " ",0
-
-sprite_text:
-;[\]^_`=0,29?
-.byte "WEBNOTER"
-.byte "A KIPPER"
-.byte " POWERED"
-.byte "PRODUCT "
-.byte "TUNE IS "
-.byte "BY JCH "
-.byte "FROM THE"
-.byte "VIBRANTS"
-.byte "GREETZ ]"
-.byte "ALL AT "
-.byte "DA BEACH"
-.byte "PARTY I["
-SPRITE_FRAMES=(*-sprite_text)/8
-
-
-
-
-
-
-
-
-
-
-
-
-.segment "BSS4K"
-;we want our variables to start at $4000, out of the way of our music player and the font data
-
-handle: .res 256
-message_text: .res 256
-
-new_message:
-.res 1
-message_buffer:
-.res 256
-
-param_offset: .res 1
-
-temp_bin: .res 1
-temp_bcd: .res 2
-
-
-param_buffer: .res $20
-
-.res 10 ;filler
-scroll_buffer:
- .res 1000
-sprite_text_frame: .res 1
-string_offset: .res 1
-
-download_buffer:
-download_buffer_length=6000
- .res download_buffer_length
-
diff --git a/client/inc/a2const.i b/client/inc/a2const.i
deleted file mode 100644
index dc3f132..0000000
--- a/client/inc/a2const.i
+++ /dev/null
@@ -1,551 +0,0 @@
- GOWARM = $00
- GOSTROUT = $03
- USR = $0A
- CHARAC = $0D
- ENDCHR = $0E
- TKN_CNTR = $0F
- EOL_PNTR = $0F
- NUMDIM = $0F
- DIMFLG = $10
- VALTYP = $11
- DATAFLG = $13
- GARFLG = $13
- SUBFLG = $14
- INPUTFLG = $15
- CPRMASK = $16
- SIGNFLG = $16
- HGR_SHAPE = $1A
- HGR_BITS = $1C
- HGR_COUNT = $1D
- MON_CH = $24
- MON_GBASL = $26
- MON_GBASH = $27
- MON_H2 = $2C
- MON_V2 = $2D
- MON_HMASK = $30
- MON_INVFLG = $32
- MON_PROMPT = $33
- MON_A1L = $3C
- MON_A1H = $3D
- MON_A2L = $3E
- MON_A2H = $3F
- LINNUM = $50
- TEMPPT = $52
- LASTPT = $53
- TEMPST = $55
- INDEX = $5E
- DEST = $60
- RESULT = $62
- TXTTAB = $67
- VARTAB = $69
- ARYTAB = $6B
- STREND = $6D
- FRETOP = $6F
- FRESPC = $71
- MEMSIZ = $73
- CURLIN = $75
- OLDLIN = $77
- OLDTEXT = $79
- DATLIN = $7B
- DATPTR = $7D
- INPTR = $7F
- VARNAM = $81
- VARPNT = $83
- FORPNT = $85
- TXPSV = $87
- LASTOP = $87
- CPRTYP = $89
- TEMP3 = $8A
- FNCNAM = $8A
- DSCPTR = $8C
- DSCLEN = $8F
- JMPADRS = $90
- LENGTH = $91
- ARG_EXTENSION = $92
- TEMP1 = $93
- ARYPNT = $94
- HIGHDS = $94
- HIGHTR = $96
- TEMP2 = $98
- TMPEXP = $99
- INDX = $99
- EXPON = $9A
- DPFLG = $9B
- LOWTR = $9B
- EXPSGN = $9C
- FAC = $9D
- DSCTMP = $9D
- VPNT = $A0
- FAC_SIGN = $A2
- SERLEN = $A3
- SHIFT_SIGN_EXT = $A4
- ARG = $A5
- ARG_SIGN = $AA
- SGNCPR = $AB
- FAC_EXTENSION = $AC
- SERPNT = $AD
- STRNG1 = $AB
- STRNG2 = $AD
- PRGEND = $AF
- CHRGET = $B1
- CHRGOT = $B7
- TXTPTR = $B8
- RNDSEED = $C9
- HGR_DX = $D0
- HGR_DY = $D2
- HGR_QUADRANT = $D3
- HGR_E = $D4
- LOCK = $D6
- ERRFLG = $D8
- ERRLIN = $DA
- ERRPOS = $DC
- ERRNUM = $DE
- ERRSTK = $DF
- HGR_X = $E0
- HGR_Y = $E2
- HGR_COLOR = $E4
- HGR_HORIZ = $E5
- HGR_PAGE = $E6
- HGR_SCALE = $E7
- HGR_SHAPE_PNTR = $E8
- HGR_COLLISIONS = $EA
- FIRST = $F0
- SPEEDZ = $F1
- TRCFLG = $F2
- FLASH_BIT = $F3
- TXTPSV = $F4
- CURLSV = $F6
- REMSTK = $F8
- HGR_ROTATION = $F9
-
-M_NEG = $D0C7
-M_EQU = $D0CA
-M_REL = $D0CD
-QT_ERROR = $D353
-QT_IN = $D35B
-QT_BREAK = $D35D
-BLTU = $D393
-BLTU2 = $D39A
-CHKMEM = $D3D6
-REASON = $D3E3
-MEMERR = $D410
-ERROR = $D412
-INLIN = $D52C
-INLIN2 = $D52E
-INCHR = $D553
-PARSE = $D56C
-FNDLIN = $D61A
-FL1 = $D61E
-RTS_1 = $D648
-NEW = $D649
-SCRTCH = $D64B
-CLEAR = $D66A
-CLEARC = $D66C
-STKINI = $D683
-RTS_2 = $D696
-STXTPT = $D697
-LIST = $D6A5
-LIST_0 = $D6DA
-LIST_1 = $D6FE
-LIST_2 = $D702
-LIST_3 = $D724
-GETCHR = $D72C
-LIST_4 = $D734
-FOR = $D766
-STEP = $D7AF
-NEWSTT = $D7D2
-TRACE_ = $D805
-GOEND = $D826
-EXECUTE_STATEMENT=$D828
-COLON_ = $D842
-SYNERR_1 = $D846
-SETDA = $D853
-RTS_3 = $D857
-ISCNTC = $D858
-STOP = $D86E
-END = $D870
-END2 = $D871
-END4 = $D88A
-CONT = $D896
-RTS_4 = $D8AF
-SAVE = $D8B0
-LOAD = $D8C9
-VARTIO = $D8F0
-PROGIO = $D901
-RUN = $D912
-GOSUB = $D921
-GOTO = $D93E
-RTS_5 = $D96A
-POP = $D96B
-UNDERR = $D97C
-SYNERR_2 = $D981
-RETURN = $D984
-DATA = $D995
-ADDON = $D998
-RTS_6 = $D9A2
-DATAN = $D9A3
-REMN = $D9A6
-PULL3 = $D9C5
-IF = $D9C9
-REM = $D9DC
-ONGOTO = $D9EC
-ON_1 = $D9F4
-ON_2 = $D9F8
-RTS_7 = $DA0B
-LINGET = $DA0C
-LET = $DA46
-LET2 = $DA63
-PUTSTR = $DA7B
-PRINT = $DAD5
-PRINT2 = $DAD7
-CRDO = $DAFB
-NEGATE = $DB00
-RTS_8 = $DB02
-NXSPC = $DB2C
-DOSPC = $DB35
-STROUT = $DB3A
-STRPRT = $DB3D
-OUTSP = $DB57
-OUTQUES = $DB5A
-OUTDO = $DB5C
-ERLIN = $DB7F
-INPERR = $DB86
-GET = $DBA0
-INPUT = $DBB2
-NXIN = $DBDC
-READ = $DBE2
-INPFIN = $DC99
-NEXT = $DCF9
-NEXT_1 = $DCFF
-NEXT_2 = $DD02
-GERR = $DD0D
-NEXT_3 = $DD0F
-FRMNUM = $DD67
-CHKNUM = $DD6A
-CHKSTR = $DD6C
-CHKVAL = $DD6D
-JERROR = $DD78
-FRMEVL = $DD7B
-NXOP = $DDD6
-SAVOP = $DDD7
-PREFNC = $DDF6
-SNTXERR = $DE0D
-NOTMATH = $DE35
-GOEX = $DE38
-EXIT = $DE5D
-STRTXT = $DE81
-NOT_ = $DE90
-EQUOP = $DE98
-FN_ = $DEA4
-SGN_ = $DEAB
-PARCHK = $DEB2
-CHKCLS = $DEB8
-CHKOPN = $DEBB
-CHKCOM = $DEBE
-SYNCHR = $DEC0
-SYNERR = $DEC9
-MIN = $DECE
-EQUL = $DED0
-SCREEN = $DEF9
-UNARY = $DF0C
-OR_KWD = $DF4F
-AND_KWD = $DF55
-FALSE = $DF5D
-TRUE = $DF60
-RELOPS = $DF65
-STRCMP = $DF7D
-NUMCMP = $DFB0
-PDL = $DFCD
-NXDIM = $DFD6
-DIM = $DFD9
-PTRGET = $DFE3
-BADNAM = $DFF4
-NAMOK = $DFF7
-ISLETC = $E07D
-C_ZERO = $E09A
-GETARY = $E0ED
-NEG32768 = $E101
-MAKINT = $E102
-MKINT = $E108
-AYINT = $E10C
-MI1 = $E119
-MI2 = $E11B
-ARRAY = $E11E
-SUBERR = $E196
-IQERR = $E199
-JER = $E19B
-FAE_1 = $E253
-GSE = $E269
-GME = $E26C
-FAE_2 = $E26F
-FAE_3 = $E270
-RTS_9 = $E2AC
-MULTIPLY_SUBSCRIPT = $E2AD
-FRE = $E2DE
-GIVAYF = $E2F2
-POS = $E2FF
-SNGFLT = $E301
-ERRDIR = $E306
-UNDFNC = $E30E
-DEF = $E313
-FNC_ = $E341
-FUNCT = $E354
-STR = $E3C5
-STRINI = $E3D5
-STRSPA = $E3DD
-STRLIT = $E3E7
-STRLT2 = $E3ED
-PUTNEW = $E42A
-JERR = $E432
-PUTEMP = $E435
-GETSPA = $E452
-GARBAG = $E484
-CAT = $E597
-MOVINS = $E5D4
-MOVSTR = $E5E2
-FRESTR = $E5FD
-FREFAC = $E600
-FRETMP = $E604
-FRETMS = $E635
-CHRSTR = $E646
-MIDSTR = $E691
-LEN = $E6D6
-GETSTR = $E6DC
-ASC = $E6E5
-GOIQ = $E6F2
-GTBYTC = $E6F5
-GETBYT = $E6F8
-CONINT = $E6FB
-VAL = $E707
-POINT = $E73D
-GTNUM = $E746
-COMBYTE = $E74C
-GETADR = $E752
-PEEK = $E764
-POKE = $E77B
-WAIT = $E784
-RTS_10 = $E79F
-FADDH = $E7A0
-FSUB = $E7A7
-FSUBT = $E7AA
-FADD_1 = $E7B9
-FADD = $E7BE
-FADDT = $E7C1
-FADD_2 = $E7CE
-FADD_3 = $E7FA
-FADD_4 = $E855
-RTS_11 = $E89D
-RTS_12 = $E8D4
-CON_ONE = $E916
-POLY_LOG = $E918
-CON_SQR_HALF = $E930
-CON_SQR_TWO = $E935
-CON_NEG_HALF = $E93A
-CON_LOG_TWO = $E93F
-LOG = $E941
-GIQ = $E948
-LOG_2 = $E94B
-FMULT = $E97F
-FMULTT = $E982
-RTS_13 = $E9E2
-ZERO = $EA31
-JOV = $EA36
-MUL10 = $EA39
-CON_TEN = $EA53
-DIV10 = $EA55
-DIV = $EA5E
-FDIV = $EA66
-FDIVT = $EA69
-SETFOR = $EB27
-MFA = $EB55
-MAF = $EB66
-RTS_14 = $EB71
-SIGN = $EB82
-SIGN1 = $EB86
-SIGN2 = $EB88
-RTS_15 = $EB8F
-SGN = $EB90
-FLOAT = $EB93
-ABS = $EBAF
-FCOMP = $EBB2
-FCOMP2 = $EBB4
-QINT = $EBF2
-RTS_16 = $EC11
-QINT_2 = $EC12
-INT = $EC23
-QINT_3 = $EC40
-RTS_17 = $EC49
-FIN = $EC4A
-FIN_1 = $EC61
-FIN_2 = $EC64
-FIN_3 = $EC66
-FIN_4 = $EC87
-FIN_5 = $EC8A
-FIN_6 = $EC8C
-FIN_10 = $EC98
-FIN_7 = $EC9E
-FIN_8 = $ECA0
-FIN_9 = $ECC1
-ADDACC = $ECD5
-GETEXP = $ECE8
-CON_99999999_9 = $ED0D
-CON_999999999 = $ED12
-CON_BILLION = $ED17
-INPRT = $ED19
-LINPRT = $ED24
-FOUT = $ED34
-FOUT_1 = $ED36
-FOUT_2 = $ED8C
-FOUT_3 = $EE17
-FOUT_4 = $EE57
-FOUT_5 = $EE5A
-FOUT_6 = $EE5F
-CON_HALF = $EE67
-DECTBL = $EE6C
-SQR = $EE8D
-FPWRT = $EE97
-NEGOP = $EED0
-RTS_18 = $EEDA
-CON_LOG_E = $EEDE
-POLY_EXP = $EEE0
-EXP = $EF09
-RTS_19 = $EFA5
-CON_RND_1 = $EFA9
-CON_RND_2 = $EFAD
-RND = $EFAE
-GO_MOVMF = $EFE7
-COS = $EFEA
-SIN = $EFF1
-SIN_1 = $F023
-SIN_2 = $F026
-TAN = $F03A
-TAN_1 = $F062
-CON_PI_HALF = $F069
-CON_PI_DOUB = $F06E
-QUARTER = $F073
-POLY_SIN = $F075
-ATN = $F09E
-RTS_20 = $F0CD
-POLY_ATN = $F0CE
-CALL = $F1D5
-GOERR = $F206
-PLOT = $F225
-HLIN = $F232
-VLIN = $F241
-COLOR = $F24F
-VTAB = $F256
-SPEED = $F262
-TRACE = $F26D
-NORMAL = $F273
-N_I_ = $F279
-N_I_F_ = $F27B
-FLASH = $F280
-HIMEM = $F286
-JMM = $F296
-SETHI = $F299
-LOMEM = $F2A6
-ONERR = $F2CB
-RESUME = $F318
-JSYN = $F32E
-DEL = $F331
-GR = $F390
-TEXT = $F399
-STORE = $F39F
-RECALL = $F3BC
-HGR2 = $F3D8
-HGR = $F3E2
-SETHPG = $F3EA
-HCLR = $F3F2
-BKGND = $F3F6
-HPOSN = $F411
-HPLOT0 = $F457
-LR_1 = $F46E
-LR_2 = $F471
-LR_3 = $F476
-LR_4 = $F478
-LRUDX1 = $F49C
-LRUDX2 = $F49D
-LRUD1 = $F4B3
-LRUD2 = $F4B4
-LRUD3 = $F4C4
-LRUD4 = $F4C8
-UD_1 = $F501
-HLINRL = $F530
-HGLIN = $F53A
-MOVEX = $F57C
-MOVEX2 = $F581
-MSKTBL = $F5B8
-CON_1C = $F5B9
-HFIND = $F5CB
-RTS_22 = $F600
-DRAW0 = $F601
-DRAW1 = $F605
-XDRAW0 = $F65D
-XDRAW1 = $F661
-HFNS = $F6B9
-GGERR = $F6E6
-HCOLOR = $F6E9
-RTS_23 = $F6F5
-COLORTBL = $F6FC
-HPLOT = $F6FE
-ROT = $F721
-SCALE = $F727
-DRWPNT = $F72D
-DRAW = $F769
-XDRAW = $F76F
-SHLOAD = $F775
-HTAB = $F7E7
-
-STACK = $100
-INPUT_BUFFER = $200
-AMPERSAND_VECTOR = $3F5
-KEYBOARD = $C000
-SW_TXTCLR = $C050
-SW_MIXCLR = $C052
-SW_MIXSET = $C053
-SW_LOWSCR = $C054
-SW_HISCR = $C055
-SW_LORES = $C056
-SW_HIRES = $C057
-MON_PLOT = $F800
-MON_HLINE = $F819
-MON_VLINE = $F828
-MON_SETCOL = $F864
-MON_SCRN = $F871
-MON_PREAD = $FB1E
-MON_SETTXT = $FB39
-MON_SETGR = $FB40
-MON_TABV = $FB5B
-MON_HOME = $FC58
-MON_WAIT = $FCA8
-MON_RD2BIT = $FCFA
-MON_RDKEY = $FD0C
-MON_GETLN = $FD6A
-MON_COUT = $FDED
-MON_INPORT = $FE8B
-MON_OUTPORT = $FE95
-MON_WRITE = $FECD
-MON_READ = $FEFD
-MON_READ2 = $FF02
-TOKEN_FOR = $81
-TOKEN_DATA = $83
-TOKEN_POP = $A1
-TOKEN_GOTO = $AB
-TOKEN_GOSUB = $B0
-TOKEN_REM = $B2
-TOKEN_PRINT = $BA
-TOKEN_TAB = $C0
-TOKEN_TO = $C1
-TOKEN_FN = $C2
-TOKEN_SPC = $C3
-TOKEN_THEN = $C4
-TOKEN_AT = $C5
-TOKEN_NOT = $C6
-TOKEN_STEP = $C7
-TOKEN_PLUS = $C8
-TOKEN_MINUS = $C9
-TOKEN_GREATER = $CF
-TOKEN_EQUAL = $D0
-TOKEN_SGN = $D2
-TOKEN_SCRN = $D7
-TOKEN_LEFTSTR = $E8
diff --git a/client/inc/a2keycodes.i b/client/inc/a2keycodes.i
deleted file mode 100644
index b21fc05..0000000
--- a/client/inc/a2keycodes.i
+++ /dev/null
@@ -1,28 +0,0 @@
-KEYCODE_SLASH=('/'+$80)
-KEYCODE_DOWN=$8a
-KEYCODE_UP=$8b
-KEYCODE_LEFT=$88
-KEYCODE_RIGHT=$95
-KEYCODE_ABORT=$9B
-.define KEYNAME_ABORT "ESC"
-.export KEYCODE_ABORT
-
-
-;-- LICENSE FOR a2keycodes.i --
-; 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/
-;
-; 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.
-;
-; The Original Code is ip65.
-;
-; The Initial Developer of the Original Code is Jonno Downes,
-; jonno@jamtronix.com.
-; Portions created by the Initial Developer are Copyright (C) 2009
-; Jonno Downes. All Rights Reserved.
-; -- LICENSE END --
diff --git a/client/inc/c64keycodes.i b/client/inc/c64keycodes.i
deleted file mode 100644
index 2f41234..0000000
--- a/client/inc/c64keycodes.i
+++ /dev/null
@@ -1,36 +0,0 @@
-KEYCODE_SLASH=$2f
-KEYCODE_DOWN=$11
-KEYCODE_UP=$91
-KEYCODE_LEFT=$9d
-KEYCODE_RIGHT=$1d
-KEYCODE_F1=$85
-KEYCODE_F2=$89
-KEYCODE_F3=$86
-KEYCODE_F4=$8a
-KEYCODE_F5=$87
-KEYCODE_F6=$8b
-KEYCODE_F7=$88
-KEYCODE_F8=$8c
-KEYCODE_ABORT=$03 ;RUN/STOP
-.define KEYNAME_ABORT "RUN/STOP"
-.export KEYCODE_ABORT
-.export KEYCODE_F1
-
-;-- LICENSE FOR c64keycodes.i --
-; 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/
-;
-; 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.
-;
-; The Original Code is ip65.
-;
-; The Initial Developer of the Original Code is Jonno Downes,
-; jonno@jamtronix.com.
-; Portions created by the Initial Developer are Copyright (C) 2009
-; Jonno Downes. All Rights Reserved.
-; -- LICENSE END --
diff --git a/client/inc/config_menu.i b/client/inc/config_menu.i
deleted file mode 100644
index 71fd88d..0000000
--- a/client/inc/config_menu.i
+++ /dev/null
@@ -1,212 +0,0 @@
-
- .import dns_ip
- .import dns_resolve
- .import dns_set_hostname
-.import cfg_default_drive
-.bss
- temp_ax: .res 2
-.code
-
-configuration_menu:
- jsr cls
-@show_config_menu:
- ldax #menu_header_msg
- jsr print_ascii_as_native
- ldax #config_menu_msg
- jsr print_ascii_as_native
- jsr print_ip_config
- jsr print_default_drive
- jsr print_cr
-@get_key_config_menu:
- jsr get_key_ip65
- cmp #KEYCODE_ABORT
- bne @not_abort
- rts
-@not_abort:
- cmp #KEYCODE_F1
- bne @not_ip
- ldax #new
- jsr print_ascii_as_native
- ldax #ip_address_msg
- jsr print_ascii_as_native
- jsr print_cr
- ldax #filter_ip
- ldy #20
- jsr get_filtered_input
- bcs @no_ip_address_entered
- jsr parse_dotted_quad
- bcc @no_ip_resolve_error
- jmp configuration_menu
-@no_ip_resolve_error:
- ldax #dotted_quad_value
- stax copy_src
- ldax #cfg_ip
- stax copy_dest
- ldax #4
- jsr copymem
-@no_ip_address_entered:
- jmp configuration_menu
-
-@not_ip:
- cmp #KEYCODE_F2
- bne @not_netmask
- ldax #new
- jsr print_ascii_as_native
- ldax #netmask_msg
- jsr print_ascii_as_native
- jsr print_cr
- ldax #filter_ip
- ldy #20
- jsr get_filtered_input
- bcs @no_netmask_entered
- jsr parse_dotted_quad
- bcc @no_netmask_resolve_error
- jmp configuration_menu
-@no_netmask_resolve_error:
- ldax #dotted_quad_value
- stax copy_src
- ldax #cfg_netmask
- stax copy_dest
- ldax #4
- jsr copymem
-@no_netmask_entered:
- jmp configuration_menu
-
-@not_netmask:
- cmp #KEYCODE_F3
- bne @not_gateway
- ldax #new
- jsr print_ascii_as_native
- ldax #gateway_msg
- jsr print_ascii_as_native
- jsr print_cr
- ldax #filter_ip
- ldy #20
- jsr get_filtered_input
- bcs @no_gateway_entered
- jsr parse_dotted_quad
- bcc @no_gateway_resolve_error
- jmp configuration_menu
-@no_gateway_resolve_error:
- ldax #dotted_quad_value
- stax copy_src
- ldax #cfg_gateway
- stax copy_dest
- ldax #4
- jsr copymem
- jsr arp_calculate_gateway_mask ;we have modified our netmask, so we need to recalculate gw_test
-@no_gateway_entered:
- jmp configuration_menu
-
-
-@not_gateway:
- cmp #KEYCODE_F4
- bne @not_dns_server
- ldax #new
- jsr print_ascii_as_native
- ldax #dns_server_msg
- jsr print_ascii_as_native
- jsr print_cr
- ldax #filter_ip
- ldy #20
- jsr get_filtered_input
- bcs @no_dns_server_entered
- jsr parse_dotted_quad
- bcc @no_dns_resolve_error
- jmp configuration_menu
-@no_dns_resolve_error:
- ldax #dotted_quad_value
- stax copy_src
- ldax #cfg_dns
- stax copy_dest
- ldax #4
- jsr copymem
-@no_dns_server_entered:
-
- jmp configuration_menu
-
-@not_dns_server:
- cmp #KEYCODE_F5
- bne @not_tftp_server
- ldax #new
- jsr print_ascii_as_native
- ldax #tftp_server_msg
- jsr print_ascii_as_native
- jsr print_cr
- ldax #filter_dns
- ldy #40
- jsr get_filtered_input
- bcs @no_server_entered
- stax temp_ax
- jsr print_cr
- ldax #resolving
- jsr print_ascii_as_native
- ldax temp_ax
- jsr dns_set_hostname
- bcs @resolve_error
- jsr dns_resolve
- bcs @resolve_error
-
- ldax #dns_ip
- stax copy_src
- ldax #cfg_tftp_server
- stax copy_dest
- ldax #4
- jsr copymem
-@no_server_entered:
- jmp configuration_menu
-
-@not_tftp_server:
-
-
-cmp #KEYCODE_F6
- bne @not_reset
- jsr ip65_init ;this will reset everything
- jmp configuration_menu
-@not_reset:
-cmp #KEYCODE_F7
- bne @not_main_menu
- jmp main_menu
-
-@not_main_menu:
-
-cmp #'+'
- bne @not_plus
- inc cfg_default_drive
- jmp @show_config_menu
-@not_plus:
-
-cmp #'-'
- bne @not_minus
- dec cfg_default_drive
- jmp @show_config_menu
-
-@not_minus:
-
- jmp @get_key_config_menu
-
-@resolve_error:
- print_failed
- jsr wait_for_keypress
- jmp configuration_menu
-
-
-print_default_drive:
- ldax #default_drive
- jsr print_ascii_as_native
- lda cfg_default_drive
- jsr print_hex
- jmp print_cr
-
-.rodata
-
-config_menu_msg:
-.byte 10,"Configuration",10,10
-.byte "F1: IP Address F2: Netmask",10
-.byte "F3: Gateway F4: DNS Server",10
-.byte "F5: TFTP Server F6: Reset To Default",10
-.byte "F7: Main Menu +/- Drive #",10,10
-.byte 0
-
-default_drive:
-.byte "Use Drive # : $",0
diff --git a/client/inc/disk_transfer.i b/client/inc/disk_transfer.i
deleted file mode 100644
index 3400338..0000000
--- a/client/inc/disk_transfer.i
+++ /dev/null
@@ -1,268 +0,0 @@
-
-.import io_track_no
-.import io_sector_no
-.import io_write_sector
-.import io_read_sector
-
-
-.segment "APP_SCRATCH"
- track: .res 1
- sector: .res 1
- errors: .res 1
- sectors_in_track: .res 1
- sector_buffer_address: .res 2
- output_buffer_address: .res 2
-;the io_* and tftp_* routines both use the 'output_buffer' so we lose the data in the second sector
-;therefore we need to copy the data to here before we use it
- sector_buffer: .res 512
-
-.code
-download_d64:
- stax kipper_param_buffer+KPR_TFTP_FILENAME
- jsr cls
- ldax #downloading_msg
- jsr print_ascii_as_native
- ldax kipper_param_buffer+KPR_TFTP_FILENAME
- jsr print_ascii_as_native
- jsr reset_counters_to_first_sector
- ldax #write_next_block
- stax kipper_param_buffer+KPR_TFTP_POINTER
- ldax #kipper_param_buffer
- kippercall #KPR_TFTP_CALLBACK_DOWNLOAD
-after_tftp_transfer:
- bcc :+
- jsr print_cr
- print_failed
- jsr print_errorcode
- jsr print_cr
-:
- print_ok
- ldax #press_a_key_to_continue
- jsr print
- jsr get_key
- rts
-
-
-upload_d64:
- ldax #enter_filename
- jsr print
- kippercall #KPR_INPUT_HOSTNAME ;the 'hostname' filter is pretty close to being a filter for legal chars in file names as well
- bcc :+
- rts
-:
-
- stax kipper_param_buffer+KPR_TFTP_FILENAME
- jsr cls
- ;switch to lower case charset
- lda #23
- sta $d018
- ldax #uploading_msg
- jsr print
- ldax kipper_param_buffer+KPR_TFTP_FILENAME
- jsr print
- jsr reset_counters_to_first_sector
- ldax #read_next_block
- stax kipper_param_buffer+KPR_TFTP_POINTER
- ldax #kipper_param_buffer
- kippercall #KPR_TFTP_CALLBACK_UPLOAD
- jmp after_tftp_transfer
-
-copy_sector_buffer_to_output_buffer:
- ldax #sector_buffer
- stax copy_src
- ldax output_buffer_address
- stax copy_dest
- ldax #$200
- jmp copymem
-
-read_next_block:
-;tftp upload callback routine
-;AX will point to address to fill
- stax output_buffer_address
- ldax #sector_buffer
- stax sector_buffer_address
-
- lda track
- cmp #36
- beq @past_last_track
- jsr read_sector
- bcc @not_last_sector
- jsr copy_sector_buffer_to_output_buffer
- ldax #$100
- rts
-@not_last_sector:
- inc sector_buffer_address+1
- ldax sector_buffer_address
- jsr read_sector
- jsr copy_sector_buffer_to_output_buffer
- ldax #$200
- rts
-@past_last_track:
- ldax #$0000
- rts
-
-
-save_sector:
- ldax #position_cursor_for_track_display
- jsr print
- jsr print_current_sector
-
- lda track
- sta io_track_no
-
- lda sector
- sta io_sector_no
-
- ldax sector_buffer_address
- jsr io_write_sector
- bcc :+
- inc errors
-:
- jmp move_to_next_sector
-
-
-
-read_sector:
- ldax #position_cursor_for_track_display
- jsr print
- jsr print_current_sector
-
- lda track
- sta io_track_no
-
- lda sector
- sta io_sector_no
-
- ldax sector_buffer_address
- jsr io_read_sector
- bcc :+
- inc errors
-:
- jmp move_to_next_sector
-
-write_next_block:
-;tftp download callback routine
-;AX will point at block to be written (prepended with 2 bytes indicating block length)
- clc
- adc #02 ;skip the 2 byte length at start of buffer
- bcc :+
- inx
-:
- stax copy_src
- ldax #sector_buffer
- stax copy_dest
- stax sector_buffer_address
- ldax #$200
- jsr copymem
- jsr save_sector
-
- bcc @not_last_sector
- rts
-@not_last_sector:
- inc sector_buffer_address+1
- jsr save_sector
- rts
-
-@past_last_track:
- rts
-
-
-print_current_sector:
- ldax #track_no
- jsr print_ascii_as_native
- lda track
- jsr print_hex
- ldax #sector_no
- jsr print_ascii_as_native
- lda sector
- jsr print_hex
- ldax #errors_msg
- jsr print_ascii_as_native
- lda errors
- jsr print_hex
- jsr print_cr
- rts
-
-
-reset_counters_to_first_sector:
- ldx #1
- stx track
- dex
- stx sector
- stx errors
- ldx #21
- stx sectors_in_track
- rts
-
-move_to_next_sector:
- inc sector
- lda sector
- cmp sectors_in_track
- beq @move_to_next_track
- rts
-@move_to_next_track:
- lda #0
- sta sector
- inc track
- lda track
- cmp #18
- bne @not_track_18
- lda #19
- sta sectors_in_track
- clc
- rts
-@not_track_18:
- cmp #25
- bne @not_track_25
- lda #18
- sta sectors_in_track
- clc
- rts
-@not_track_25:
- cmp #31
- bne @not_track_31
- lda #17
- sta sectors_in_track
- clc
- rts
-@not_track_31:
- lda track
- cmp #36 ;carry will be set if hit track 36
- rts
-
-
-.rodata
-
-track_no:
- .byte "TRACK $",0
-
-sector_no:
- .byte " SECTOR $",0
-errors_msg:
- .byte " ERRORS $",0
-position_cursor_for_track_display:
-.byte $13,13,13,0
-position_cursor_for_error_display:
-.byte $13,13,13,0
-enter_filename: .asciiz "FILENAME: "
-
-
-
-;-- LICENSE FOR disk_transfer.i --
-; 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/
-;
-; 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.
-;
-; The Original Code is ip65.
-;
-; The Initial Developer of the Original Code is Jonno Downes,
-; jonno@jamtronix.com.
-; Portions created by the Initial Developer are Copyright (C) 2009
-; Jonno Downes. All Rights Reserved.
-; -- LICENSE END --
diff --git a/client/inc/gopher.i b/client/inc/gopher.i
deleted file mode 100644
index f7ec692..0000000
--- a/client/inc/gopher.i
+++ /dev/null
@@ -1,680 +0,0 @@
-; C64 gopher browser
-; july 2009 - jonno @ jamtronix.com
-; this contains the key gopher rendering routines
-; to use:
-; 1) include this file
-; 2) include these other files:
-; .include "../inc/common.i"
-; .include "../inc/commonprint.i"
-; .include "../inc/net.i"
-; .include "../inc/char_conv.i"
-; .include "../inc/c64keycodes.i"
-; 3) define a routine called 'exit_gopher'
-
-
- .import get_key_if_available
- .import mul_8_16
- .importzp acc16
- .importzp copy_src
- .importzp copy_dest
- .import copymem
- .import ascii_to_native
- .import dns_ip
- .import dns_resolve
- .import dns_set_hostname
- .import ip65_error
- .import cls
- .import get_filtered_input
- .import filter_dns
- .import filter_text
- .importzp screen_current_row
- .importzp screen_current_col
- .import print_a_inverse
-
- .import telnet_port
- .import telnet_ip
- .import telnet_connect
- .import telnet_use_native_charset
-
- .import url_ip
- .import url_port
- .import url_selector
- .import url_resource_type
- .import url_parse
- .import url_download
- .import url_download_buffer
- .import url_download_buffer_length
- .import resource_download
-
-.segment "IP65ZP" : zeropage
-
-; pointer for moving through buffers
-buffer_ptr: .res 2 ; source pointer
-
-.data
-get_next_byte:
- lda $ffff
- inc get_next_byte+1
- bne :+
- inc get_next_byte+2
-:
- rts
-
-
-current_resource_history_entry: .byte 0
-
-.segment "APP_SCRATCH"
-
-DISPLAY_LINES=22
-page_counter: .res 1
-MAX_PAGES = 50
-page_pointer_lo: .res MAX_PAGES
-page_pointer_hi: .res MAX_PAGES
-
-resource_counter: .res 1
-MAX_RESOURCES = DISPLAY_LINES
-
-resource_pointer_lo: .res MAX_RESOURCES
-resource_pointer_hi: .res MAX_RESOURCES
-resource_type: .res MAX_RESOURCES
-
-download_flag: .res 1
-dl_loop_counter: .res 2
-this_is_last_page: .res 1
-
-
-;temp_ax: .res 2
-
-RESOURCE_HOSTNAME_MAX_LENGTH=64
-current_resource:
-resource_hostname: .res RESOURCE_HOSTNAME_MAX_LENGTH
-resource_port: .res 2
-resource_selector: .res 128
-resource_selector_length: .res 1
-displayed_resource_type: .res 1
-
-
-RESOURCE_HISTORY_ENTRIES=8
-resource_history:
-.res $100*RESOURCE_HISTORY_ENTRIES
-
-scratch_buffer_length=GOPHER_BUFFER_SIZE
-scratch_buffer:
- .res scratch_buffer_length
-
-.code
-
-;display whatever is in the buffer either as plain text or gopher text
-
-display_resource_in_buffer:
- ldax #scratch_buffer
- stax get_next_byte+1
-
- lda #0
- sta page_counter
-
-@do_one_page:
- jsr cls
-
-; ldax #page_header
-; jsr print
-; lda page_counter
-; jsr print_hex
-
-; jsr print_resource_description
- ldx page_counter
- lda get_next_byte+1
- sta page_pointer_lo,x
- lda get_next_byte+2
- sta page_pointer_hi,x
- inc page_counter
-
-
- lda displayed_resource_type
- cmp #'0'
- bne @displayed_resource_is_directory
-
-;if this is a text file, just convert ascii->petscii and print to screen
-@show_one_char:
- jsr get_next_byte
- tax ;this sets Z flag
- bne :+
- lda #1
- sta this_is_last_page
- jmp @get_keypress
-:
-
- jsr ascii_to_native
- jsr print_a
- lda screen_current_row
- cmp #DISPLAY_LINES
- bmi @show_one_char
- jmp @end_of_current_page
-
-@displayed_resource_is_directory:
-
- lda #0
- sta resource_counter
-
-@next_line:
- jsr get_next_byte
- cmp #0
- beq @last_line
- cmp #'.'
- bne @not_last_line
-@last_line:
- lda #1
- sta this_is_last_page
- jmp @done
-@not_last_line:
- cmp #'i'
- beq @info_line
- cmp #'0'
- beq @standard_resource
- cmp #'1'
- beq @standard_resource
- cmp #'7'
- beq @standard_resource
- cmp #'8'
- beq @standard_resource
-
- ;if we got here, we know not what it is
- jmp @skip_to_end_of_line
-@standard_resource:
- pha
- ldx resource_counter
- sta resource_type,x
- sec
- lda get_next_byte+1
- sbc #1 ;since "get_next_byte" did the inc, we need to backtrack 1 byte
- sta resource_pointer_lo,x
- lda get_next_byte+2
- sbc #0 ;in case there was an overflow on the low byte
- sta resource_pointer_hi,x
- inc resource_counter
-
- lda screen_current_col ;are we at the start of the current line?
- beq :+
-
- jsr print_cr
-:
- pla ;get back the resource type
-
- lda resource_counter
- clc
- adc #'a'-1
- jsr print_a_inverse
- lda #' '
- jsr print_a
-
-@info_line:
-@print_until_tab:
-@next_byte:
- jsr get_next_byte
- cmp #0
- beq @last_line
-
- cmp #$09
- beq @skip_to_end_of_line
- jsr ascii_to_native
- jsr print_a
- jmp @next_byte
-
-@skip_to_end_of_line:
- jsr get_next_byte
- cmp #0
- beq @last_line
-
- cmp #$0A
- bne @skip_to_end_of_line
-
- lda screen_current_col
- cmp #0
- beq :+
- jsr print_cr
-:
- lda screen_current_row
- cmp #DISPLAY_LINES
- bpl @end_of_current_page
- jmp @next_line
-
-@end_of_current_page:
- lda #0
- sta this_is_last_page
-@done:
-@get_keypress:
- jsr ip65_process ;keep polling the network, so we respond to arps/pings/late packets etc etc
- jsr get_key_if_available
- cmp #' '
- beq @go_next_page
- cmp #KEY_NEXT_PAGE
- beq @go_next_page
- cmp #KEYCODE_DOWN
- beq @go_next_page
- cmp #KEY_PREV_PAGE
- beq @go_prev_page
- cmp #KEYCODE_UP
- beq @go_prev_page
- cmp #KEY_SHOW_HISTORY
- beq @show_history
- cmp #KEYCODE_LEFT
- beq @back_in_history
- cmp #KEY_BACK_IN_HISTORY
- beq @back_in_history
- cmp #KEY_NEW_SERVER
- beq @prompt_for_new_server
-
- cmp #KEYCODE_ABORT
- beq @quit
- ;if fallen through we don't know what the keypress means, go get another one
- and #$7f ;turn off the high bit
- sec
- sbc #$40
- bmi @not_a_resource
- cmp resource_counter
- beq @valid_resource
- bcs @not_a_resource
-@valid_resource:
- tax
- dex
- jsr select_resource_from_current_directory
-@not_a_resource:
- jmp @get_keypress
-@back_in_history:
- ldx current_resource_history_entry
- dex
- beq @get_keypress ;if we were already at start of history, can't go back any further
- stx current_resource_history_entry
- txa
- jsr load_resource_from_history
- jsr load_resource_into_buffer
- jmp display_resource_in_buffer
-@show_history:
- jsr show_history
- jmp display_resource_in_buffer
-@go_next_page:
- lda this_is_last_page
- bne @get_keypress
- jmp @do_one_page
-@prompt_for_new_server:
- jsr prompt_for_gopher_resource ;that routine only returns if no server was entered.
- jmp display_resource_in_buffer
-
-@quit:
- jmp exit_gopher
-@go_prev_page:
- ldx page_counter
- dex
- bne @not_first_page
- jmp @get_keypress
-@not_first_page:
- dex
- dec page_counter
- dec page_counter
-
- lda page_pointer_lo,x
- sta get_next_byte+1
- lda page_pointer_hi,x
- sta get_next_byte+2
- jmp @do_one_page
-
-;get a gopher resource
-;X should be the selected resource number
-;the resources selected should be loaded into resource_pointer_*
-select_resource_from_current_directory:
- lda resource_pointer_lo,x
- sta buffer_ptr
- lda resource_pointer_hi,x
- sta buffer_ptr+1
- ldy #0
- ldx #0
-
- lda (buffer_ptr),y
- sta displayed_resource_type
-
-@skip_to_next_tab:
- iny
- beq @done_skipping_over_tab
- lda (buffer_ptr),y
- cmp #$09
- bne @skip_to_next_tab
-@done_skipping_over_tab:
-
-;should now be pointing at the tab just before the selector
-@copy_selector:
- iny
- lda (buffer_ptr),y
- cmp #09
- beq @end_of_selector
- sta resource_selector,x
- inx
- jmp @copy_selector
-@end_of_selector:
- stx resource_selector_length
- ;terminate with a CR,LF,$00
- lda #$0D
- sta resource_selector,x
- lda #$0A
- sta resource_selector+1,x
- lda #$00
- sta resource_selector+2,x
-
-
- tax
-;should now be pointing at the tab just before the hostname
-@copy_hostname:
- iny
- lda (buffer_ptr),y
- cmp #09
- beq @end_of_hostname
- sta resource_hostname,x
- inx
- jmp @copy_hostname
-
-@end_of_hostname:
- lda #$00
- sta resource_hostname,x
-
-;should now be pointing at the tab just before the port number
- lda #0
- sta resource_port
- sta resource_port+1
-@parse_port:
- iny
- beq @end_of_port
- lda (buffer_ptr),y
- cmp #$1F
- bcc @end_of_port ;any control char should be treated as end of port field
-
- ldax resource_port
- stax acc16
- lda #10
- jsr mul_8_16
- ldax acc16
- stax resource_port
- lda (buffer_ptr),y
- sec
- sbc #'0'
- clc
- adc resource_port
- sta resource_port
- bcc :+
- inc resource_port+1
-:
- jmp @parse_port
-@end_of_port:
-
- lda displayed_resource_type
-
- cmp #'7' ;is it a 'search' resource?
- bne @done
-
- ldax #query
- jsr print
-@get_query_string:
- ldy #32 ;max chars
- ldax #filter_text
- jsr get_filtered_input
- bcs @get_query_string
- stax buffer_ptr
- jsr print_cr
- ldy #0
- ldx resource_selector_length
- lda #09
-@copy_one_char:
- sta resource_selector,x
- inx
- lda (buffer_ptr),y
- beq @done_query_string
- iny
- bne @copy_one_char
-@done_query_string:
- ;terminate with a CR,LF,$00
- lda #$0D
- sta resource_selector,x
- lda #$0A
- sta resource_selector+1,x
- lda #$00
- sta resource_selector+2,x
-
-@done:
-
-add_resource_to_history_and_display:
- ;add this to the resource history
- lda current_resource_history_entry
- cmp #RESOURCE_HISTORY_ENTRIES
- bne @dont_shuffle_down
- ldax #resource_history
- stax copy_dest
- inx ;one page higher up
- stax copy_src
- ldx #(RESOURCE_HISTORY_ENTRIES-1)
- lda #$00
- jsr copymem
- dec current_resource_history_entry
-
-@dont_shuffle_down:
- ldax #current_resource
- stax copy_src
- lda #resource_history
- adc current_resource_history_entry
- sta copy_dest+1
- ldax #$100
- jsr copymem
-
- inc current_resource_history_entry
-
- jsr load_resource_into_buffer
- bcs @error_in_loading
- jmp display_resource_in_buffer
-@error_in_loading:
- jmp print_errorcode
-
-
-;show the entries in the history buffer
-show_history:
-
- jsr cls
- ldax #history
- jsr print
-
- lda current_resource_history_entry
-@show_one_entry:
- pha
- jsr load_resource_from_history
- jsr print_resource_description
- pla
- sec
- sbc #1
- bne @show_one_entry
-get_keypress_then_rts:
- jsr print_cr
- ldax #press_a_key_to_continue
- jsr print
- jsr get_key_ip65
- rts
-
-
-;load the 'current_resource' into the buffer
-load_resource_into_buffer:
- ldax #resolving
- jsr print
- ldax #resource_hostname
- jsr print
- jsr print_cr
- ldax #resource_hostname
- jsr dns_set_hostname
-
- bcs :+
- jsr dns_resolve
-:
- bcc @no_error
- rts
-@no_error:
- ldx #3 ; save IP address just retrieved
-: lda dns_ip,x
- sta url_ip,x
- sta telnet_ip,x
- dex
- bpl :-
-
-
- lda displayed_resource_type
- cmp #'8' ;is it a 'telnet' resource?
- bne @not_telnet_resource
- ldax #connecting
- jsr print
- ldax resource_port
- stax telnet_port
- lda #0
- sta telnet_use_native_charset
-
- ;if the username = '/n', then connect in native mode
- lda resource_selector_length
-
- cmp #2
- bne @not_native
- lda resource_selector
- cmp #'/'
- bne @not_native
- lda resource_selector+1
- cmp #'n'
- bne @not_native
- inc telnet_use_native_charset
-@not_native:
- jsr telnet_connect
- jmp get_keypress_then_rts
-
-@not_telnet_resource:
- ldax resource_port
- stax url_port
- ldax #resource_selector
- stax url_selector
- ldax #scratch_buffer
- stax url_download_buffer
- ldax #scratch_buffer_length
- stax url_download_buffer_length
-
- jmp resource_download
-
-
-
-;retrieve entry specified by A from resource history
-;NB 'A' = 1 means the first entry
-load_resource_from_history:
- clc
- adc #(>resource_history)-1
- sta copy_src+1
- lda #C}cndtE~dw>fx1%
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
Gi~a?X4++8m
diff --git a/client/kipperterm2/Makefile b/client/kipperterm2/Makefile
deleted file mode 100644
index 1c35a60..0000000
--- a/client/kipperterm2/Makefile
+++ /dev/null
@@ -1,58 +0,0 @@
-AS=ca65
-LD=ld65
-CFLAGS=-Oirs -t $(TARGET)
-AFLAGS=
-
-INCFILES=\
- ../inc/common.i\
- ../inc/commonprint.i\
- ../inc/net.i\
- ../inc/menu.i\
- ../inc/kipper_constants.i\
- ../inc/version.i\
-
-IP65LIB=../ip65/ip65.lib
-IP65TCPLIB=../ip65/ip65_tcp.lib
-C64RRNETLIB=../drivers/c64rrnet.lib
-IP65WIZNETLIB=../ip65/ip65_wiznet.lib
-C64WIZNETLIB=../drivers/c64wiznet.lib
-
-
-all: ip65 drivers kipperterm2.prg kt2wiz.prg kipperterm2.d64 kt2wiz.d64
-
-
-kipperterm2.o: kipperterm2.s $(INCFILES) ../inc/telnet.i ../inc/config_menu.i ../inc/gopher.i
- ruby -e "puts '.byte \"' + Time.now.strftime('%Y-%m-%d')+'\"'" > timestamp.i
- $(AS) $(AFLAGS) -o $@ $<
-
-%.o: %.s $(INCFILES)
- $(AS) $(AFLAGS) $<
-
-%.prg: %.o $(IP65LIB) $(C64RRNETLIB) $(INCFILES) ../cfg/c64fullprg.cfg
- $(LD) -m $*.map -vm -C ../cfg/c64fullprg.cfg -o $*.prg $(AFLAGS) $< $(IP65TCPLIB) $(C64RRNETLIB)
- ruby ../carts/set_ip_config.rb $@ mac auto
-
-kt2wiz.prg: kipperterm2.o $(IP65WIZNETLIB) $(C64WIZNETLIB) $(INCFILES) ../cfg/c64fullprg.cfg
- $(LD) -m kt2wiz.map -vm -C ../cfg/c64fullprg.cfg -o kt2wiz.prg $(AFLAGS) $< $(IP65WIZNETLIB) $(C64WIZNETLIB)
- cp kt2wiz.prg ../../server/boot
-
-
-kipperterm2.d64: kipperterm2.prg addresses.txt abe.bas
- c1541 -format kipperterm2,k2 d64 $@ -attach $@ -write kipperterm2.prg -write "addresses.txt" "addresses.txt,s" -write abe
- cp kipperterm2.d64 ../../server/boot
-
-kt2wiz.d64: kt2wiz.prg addresses.txt abe.bas
- c1541 -format kt2wiz,kw d64 $@ -attach $@ -write kt2wiz.prg -write "addresses.txt" "addresses.txt,s" -write abe
- cp kt2wiz.d64 ../wiznet/
-
-clean:
- rm -f *.o *.bin *.map *.prg *.pg2 *.dsk *.d64
-
-distclean: clean
- rm -f *~
-
-ip65:
- make -C ../ip65 all
-
-drivers:
- make -C ../drivers all
diff --git a/client/kipperterm2/TODO.txt b/client/kipperterm2/TODO.txt
deleted file mode 100644
index 18fba8f..0000000
--- a/client/kipperterm2/TODO.txt
+++ /dev/null
@@ -1,9 +0,0 @@
-redo directory listing code (not hardcoded to 1541 disk format)
-scrollback buffer
-log session to disk
-punter protocol
-tftp individual files
-allow changing of default drive from telnet menu
-send dos command to current drive
-
-
diff --git a/client/kipperterm2/abe b/client/kipperterm2/abe
deleted file mode 100644
index 1929f361610996ead948562b7e759859fafc2359..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 2707
zcmZ`*dyErh5TE9HxP5K64gN!rd|8%U7t6KVyDLZc4&A%%9SgnPz3v`*CkiI~VN860
z{DHw3B))ivkNBV(0|*IvAdiBQTw+25l@LP=s38#(9|@vSLX58fAYkln>?S3=A
zZ@&3velxQnPUfQUEE~4$MS7JDS=ABEWm>sh)g6ZoSk@Azmkrmdg2BZQx7adG%h61R
zsNoUKsIao-vO#MECb&523wb3!FF$`?R~{bbrbD^@en#mn%B5#nMRQy>=ICWst{O{q
zc!iqK|nm$Z(XK17?L5N|!u|zj+xx;4<(e
zbH}BOsmpMdE8wc^_^YqEAzUr8{M9AS#+7Y(z(2SNc!u@n^KhM84mG$jvJy0@E(RCY
zolf_5R|Gk7Kh&65)wQx=4l_~JB-@!yzKU}r=P;h_|PaXj*)
zj4@g4mf@Yqt)b1#IArRcaXJx>MHYv4&Msta3C=`ZRNHt5F|d3wa#sisEFiE%Au;5-
zBf-_kJx!^jOC(A~S2slzEgvXHA8AT4YAF05<47_X(dUAL6cIh4(4$Tq7E5?zB@fG@
zuX_5!hs0iVg+v>oyHRv9gXd)x#O7Kz+Kr9RNB4&s)-(}bi~bVwx9^Fvwi>3pd%g^x
zMCZ2EMCLzB4BJM!{0B=#_&l0xtHJqbciUFD5WU#uXFC=9p{*I)vhEC44cj#=6ItT8
zrZ%FJVcV)=?q|h*YI}?sb!E4yLoxO<9h+{ZLls}Z+`yvPHMHk@t%@XhAT}*r!@K$s
zpKQ45IV@(Cg6zXyjtL&jkN5w=4#Z}JF{>2*Lqw{Y|E|J2v4L<6-iuYj8<+vdV>YfX
z#zxU55r=}pD!NNAuH{v(S5f04aB+t~R+WvCYIMwSv&^AaM_a0kkcux2?_`4#i19n{
z=s}NAih@~O5MLGuMk#;DvTov_9ltXWJAt@|#LMF=!cP6e%%CLiEq24I_`Qg7h`qRx
z%x#FTA<1E-A=nZ>81}PtAbuoV6SaQL88nQX-EZrz_cq+`w?xhXT*Ly3$1+P_ashZvvRsV5oz1)sUf{
zzMS|m(A%wgVz8%QnfNWx54Y;6G(7zS324Wo$bqL4)7u;VW665qq_FKv%xaN)Zs5I`
z7YQm9rK=|oXA`qqK%OrI3c}QceVfR%lRO9-wDUu>Zlyg2jEL$WD=A>pdAr@9jF+BZ
zh6GuD0?#od3h*AUtztM(zJy;(hMF~lR*1(9D--;NRx7LdEiG1jAX(YMPm&d?wjF2z
zN!~E9jX%=<1To!_VHeNcfY+wjyu~Lw*27U==-AGb9&Er$4}8qe=y)6#x|zi$o7LSc
z4vo)vsbdF1;0wO9V=H{eujy#C=qvoA9oUas(U5!^LDA$_oeo_cq~zC~NK99A#~gNm
z6}ypJN?`#ykW2p1N$nP^!$|(}KcHpF>!`uHaV5$%?RzN6_!tm`f^5E3q+ftkX=A{xM1SE-D9ec=|?
zH=Z*WiZDl*Dtdd1!il24cbo{m9xB4=Kwy#}NYw4Zxgx%HlkpY8w$ct(fK@`RRBH}3
z9GqK(*Gr8#D&ATWCpBqO%sScIMA#<0QEDXYZDC)jWu_`U6uG0qyCr|B9v6-g)SIfO
zg;P`^M3pauYo%uM{#}@+;?4dsQ2jp4rv%lnLmFZDjGtc
z{Ogf-h*R-{ONE=$D=30AA<81mPfw|I$sz{IO`q^I-Y71!dCV~JBhbd#gPdEIzT8LS
q>7MkJzDANBOhZ5MVO=`hA0%s2nwc*m1+)QO%=W@_>AB{50QeKGoVc9;
diff --git a/client/kipperterm2/abe.bas b/client/kipperterm2/abe.bas
deleted file mode 100644
index cbf0043d0bf752e9e01bfc304c2d46370808ce46..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 2669
zcmZ`*Yitx%6h517b@nwoyTLz%kegvhcgWJ+*|uxhX_0An+74`IraM!hh>8h642cqu
z9~h0Pji_kFM|`jv1E>kQBG?rqAu%C7i7~{08WJ%PO%RO|V(<|##&c$7*Y(vOF!!AA
ze&^it+z=;oQFx4vTK1S;Wg}K~TyvRLE?0HOVMCU+is@y;wW?rnF~qI3Ow)2SlObw!
zTr(=HY`JXM8i#dU9QB2~l3$v?erZo0?&9V_x$#a$=`YHq$5=&kTsGQHCC&!1-x;4Ud)2$l1121ulz?B*wW|qltlv@mDg$_!OT*rU&GQ7`a-~r}N
zNf}d@;WSskQ`zxP=eQ9(jamNbB4^{twmjf(+&Xxa_2={O2X_n9;JV00(4>YKJXm+S
z-LHLqrDxw;C%E#ho9|K?E8*ZY|FYcTs3UhuuQBH$2GNa
zorrC#in(7H`?2FbW;B$SO&yA{pU7;wl@3*W5_1D%vEPx;_gWQ6vN?85xQ1`_BVKR1
z>NzZCm4fWUo{0$_%#Zi~!VbmehcT-Z{y8eDn*XiBk=RhU25-kI;TdMYyD=M27h)60
zNrgi}VHMq_57+WK*XyV$5xBTRAgjtINHsBOxLM}Vr=zXbMM%Y0hxf5z3B>q~XnNQy
zC`G|6E{m@Z1QV1$tg>FJK|6j^Aa(+AABk^?ZwNb$4>H4&{93UWw!}9f%AxATi$pgQ
z-$s%*m8M`e{zll((xLd_a81+(HD}l`a`vFDyWZF6pg*24%%8@O;cW`MBV(nJWqj3u
zsQMyRT#leG<0t*MT#TO%d=z&o1)NFY#2FNL-ZhjS@_?FEN_-u_v}T1mSgsmYsHZO{
zehBn-yPhi8({D`t66iGPFPs#%1Br!ga?cHX7xN-P
zjiU7Q<>7QR3tfAd(uV_B>4T5?`Ca$pK{vBFWV5=P#ij8X
zFLmuj2zx_gN{^3^T(2=r@$=>$CDciyWp$ji2~)sz^!dg
zu~qsM_4Kf1x`sK4ef?eXRKe@(tI4y4R$uoJK}a}{1Pg>Wib#OFu2Pxu=E4nZU@B)W
z7h$n*tmxe>3hx#DyHix)(@+sk1_F}=L88_QXNvgQOXM4b-KD*(09%Awsn%L*xHxBp
z7fQ`NDy}Grbxo>^Stq+jgx$i6rDnoj7Y>x#cB;}xkvl59Rr0s$yTWmTdRz6R@DX(g
zmC6^w@1@r8{#Cd}#h3kKq55-}PYJ5uhqT0Kb@tIDSe%-V;$Un3B_2pgDE4P|8@ih6
zMzOyn^ArS+{8?`qPb{Ddu;)KDAH>v;n9{|)F*02R)pDs5n|
z_x}w>R@|5P`$&afQ>#@3pe^5Rvg&!N;!i0RI@22{HZ=RoIQ-McRC2$FA?QxO=V`np
zTV_j{VdBp_8@CEpQ!#yMfELeC`pQ5v{43KiNSU5YhX;c+Y)murDNL?5q>I^p*pyyk
HP6NQ7BEPK+
diff --git a/client/kipperterm2/addresses.txt b/client/kipperterm2/addresses.txt
deleted file mode 100644
index b65da5a..0000000
--- a/client/kipperterm2/addresses.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-1FLOODGAP GOPHER / GOPHER.FLOODGAP.COM 70
-8JAMTRONIX PETSCIIMATION /n JAMTRONIX.COM 6464
-8ANTIDOTE /n ANTIDOTE.HOPTO.ORG 23
-8EXCALIBUR'S STONE /n BBS.EXCALIBURSSTONE.COM 6400
-8JAMMING SIGNAL /n BBS.JAMMINGSIGNAL.COM 23
-8MAD WORLD /n MADWORLD.BOUNCEME.NET 23
-8REALMS OF MYSTERY /n BBS.PIPESUP.CA 6400
-8RIKTRONICS /n RKBBS.NET 23
-8WIZARD'S REALM /n WIZBBS.DYNDNS.ORG 23
-8COTTONWOOD BBS /n COTTONWOOD.SERVEBBS.COM 23
-8COTTONWOOD II /n COTTONWOOD.SERVEBBS.COM 6400
-8THE HIDDEN /n THE-HIDDEN.HOPTO.ORG 23
-
-.
\ No newline at end of file
diff --git a/client/kipperterm2/kipperterm2.s b/client/kipperterm2/kipperterm2.s
deleted file mode 100644
index 18049d3..0000000
--- a/client/kipperterm2/kipperterm2.s
+++ /dev/null
@@ -1,781 +0,0 @@
-; #############
-; KIPPERTERM 2 - Telnet/Gopher client for C64
-; jonno@jamtronix.com
-
-
- .include "../inc/common.i"
- .include "../inc/commonprint.i"
- .include "../inc/c64keycodes.i"
- .include "../inc/menu.i"
- .include "../inc/config_menu.i"
-
- 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
-
- XMODEM_IN_TELNET = 1
- GOPHER_BUFFER_SIZE = 2000
- .include "../inc/gopher.i"
- .include "../inc/telnet.i"
-
-
- .import xmodem_iac_escape
- .import io_error_buffer
- .import cls
- .import beep
- .import exit_to_basic
- .import ip65_process
- .import ip65_init
- .import get_filtered_input
- .import filter_text
- .import filter_dns
- .import filter_ip
- .import arp_calculate_gateway_mask
- .import parse_dotted_quad
- .import dotted_quad_value
- .import parse_integer
-
-
- .import xmodem_receive
- .import xmodem_send
-
- .import get_key_ip65
- .import cfg_mac
- .import dhcp_init
-
- .import cfg_ip
- .import cfg_netmask
- .import cfg_gateway
- .import cfg_dns
- .import cfg_tftp_server
-
- .import xmodem_receive
-
- .import tcp_send
- .import tcp_send_data_len
-
- .import io_read_catalogue
- .import io_device_no
- .import io_read_file
- .import io_filename
- .import io_filesize
- .export telnet_menu
-
- .import print_a
- .import print_cr
- .import copymem
- .importzp copy_src
- .importzp copy_dest
- .import get_filtered_input
-
- .import cfg_tftp_server
-
-.bss
-;temp_ax: .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 / 10000) .mod 10) + $30)
- .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 #$36
- sta $01 ;turn off BASIC
- jsr setup_screen
-
- ldax #menu_header_msg
- jsr print_ascii_as_native
- ldax #init_msg+1
- jsr print_ascii_as_native
- ldax #eth_driver_name
- jsr print_ascii_as_native
- lda #' '
- jsr print_a
- lda eth_driver_io_base+1
- jsr print_hex
- lda eth_driver_io_base
- jsr print_hex
- lda #' '
- jsr print_a
- jsr ip65_init
- bcs init_failed
- jsr dhcp_init
- bcc init_ok
- jsr ip65_init ;if DHCP failed, then reinit the IP stack (which will reset IP address etc that DHCP messed with to default values)
- bcc init_ok
-init_failed:
- print_failed
- jsr print_errorcode
- jsr wait_for_keypress
-
- jmp exit_to_basic
-
-print_main_menu:
- jsr cls
- ldax #menu_header_msg
- jsr print_ascii_as_native
- ldax #main_menu_msg
- jmp print_ascii_as_native
-
-init_ok:
-
- lda $ba
- sta cfg_default_drive
-
-main_menu:
- jsr print_main_menu
- jsr print_ip_config
- jsr print_cr
-
-@get_key:
- jsr get_key_ip65
- cmp #KEYCODE_F1
- bne @not_f1
- jsr cls
- ldax #telnet_header
- jsr print_ascii_as_native
- jmp telnet_main_entry
-
- @not_f1:
- cmp #KEYCODE_F3
- bne @not_f3
- jsr cls
- ldax #gopher_header
- jsr print_ascii_as_native
- jsr prompt_for_gopher_resource ;only returns if no server was entered.
- jmp exit_gopher
- @not_f3:
-
- cmp #KEYCODE_F5
- bne @not_f5
- jsr cls
-
- clc
- jsr set_io_device_no
- ldax #address_book_filename
- stax io_filename
- ldax #scratch_buffer
- jsr io_read_file
- bcc @no_error_reading_address_book
- ldax #address_book_fail_msg
- jsr print_ascii_as_native
- jsr print_errorcode
- ldax #address_book_filename
- jsr print_ascii_as_native
- jsr print_cr
- ldax #drive_text
- jsr print
- lda $ba
- ldx #0
- jsr print_integer
- jsr print_cr
-
- ldax #io_error_buffer
- jsr print
-
- jsr wait_for_keypress
- jmp main_menu
-
-@no_error_reading_address_book:
-
-
- lda #'1'
- sta displayed_resource_type
-
-;put a nul byte at end of file
- ldax #scratch_buffer
- stax pptr
- clc
- lda io_filesize
- adc #scratch_buffer
- sta pptr+1
- lda #0
- tay
- sta (pptr),y
- inc $d020
- jsr display_resource_in_buffer
-
- jmp exit_gopher
-@not_f5:
-
- cmp #KEYCODE_F7
- beq @change_config
- cmp #KEYCODE_F8
- bne @not_f8
-
- jsr cls
- ldax #menu_header_msg
- jsr print_ascii_as_native
- ldax #credits
- jsr print_ascii_as_native
- ldax #press_a_key_to_continue
- jsr print_ascii_as_native
- jsr get_key_ip65
- jmp main_menu
-@not_f8:
-
- jmp @get_key
-
-@change_config:
- jsr configuration_menu
- jmp main_menu
-
-
-
-
-
-wait_for_keypress:
- ldax #press_a_key_to_continue
- jsr print_ascii_as_native
-@loop:
- jsr $ffe4
- beq @loop
- rts
-
-get_key:
- jmp get_key_ip65
-
-cfg_get_configuration_ptr:
- ldax #cfg_mac
- rts
-
-
-setup_screen:
- jsr cls
- ;make sure normal font
- lda #$15
- sta $d018
-
- LDA #$06 ;blue
-
- STA $D020 ;border
- LDA #$00 ;black
- STA $D021 ;background
- lda #$05 ;petscii for white text
- jsr print_a
-
- lda #14
- jmp print_a ;switch to lower case
-
-save_screen_settings:
- ;save current settings
- lda $d018
- sta temp_font
- lda $d020
- sta temp_border
- lda $d021
- sta temp_text_back
- lda $0286
- sta temp_text_fore
-
- ldx #$27
-@save_page_zero_vars_loop:
- lda $cf,x
- sta temp_page_zero_vars,x
- dex
- bne @save_page_zero_vars_loop
-
- ldax #$400
- stax copy_src
- ldax #temp_screen_chars
- stax copy_dest
- ldax #$400
- jsr copymem
-
- ldax #$d800
- stax copy_src
- ldax #temp_colour_ram
- stax copy_dest
- ldax #$400
- jmp copymem
-
-restore_screen_settings:
- lda temp_font
- sta $d018
-
-
- lda temp_border
- sta $d020
- lda temp_text_back
- sta $d021
- lda temp_text_fore
- sta $0286
-
- ldx #$27
-@restore_page_zero_vars_loop:
- lda temp_page_zero_vars,x
- sta $cf,x
- dex
- bne @restore_page_zero_vars_loop
-
- ldax #temp_screen_chars
- stax copy_src
- ldax #$400
- stax copy_dest
- ldax #$400
- jsr copymem
-
- ldax #temp_colour_ram
- stax copy_src
- ldax #$d800
- stax copy_dest
- ldax #$400
- jmp copymem
-
-
-telnet_menu:
-
- jsr save_screen_settings
- jsr setup_screen
-
-@show_menu:
-
- jsr cls
-
- ldax #menu_header_msg
- jsr print_ascii_as_native
- ldax #telnet_menu_msg
- jsr print_ascii_as_native
-
-@get_menu_option:
- jsr get_key
- cmp #KEYCODE_F1
- bne :+
- jsr xmodem_download
- jmp @exit
-:
- cmp #KEYCODE_F3
- bne :+
- jsr xmodem_upload
- jmp @exit
-:
- cmp #KEYCODE_F5
- bne :+
-@get_ascii_value:
- ldax #enter_ascii
- jsr print_ascii_as_native
- ldy #3 ;max chars
- ldax #filter_number
- jsr get_filtered_input
- bcs @show_menu
- ;AX now points a string containing 0..999
- .import parse_integer
- jsr parse_integer
- cpx #0
- bne @get_ascii_value
- sta ascii_packet
- lda #1
- stax tcp_send_data_len
- jsr restore_screen_settings ;since we won't return from tcp_send
- ldax #ascii_packet
- jmp tcp_send
-
-
-:
- cmp #KEYCODE_F7
- beq @exit
- jmp @get_menu_option
-@exit:
- jsr restore_screen_settings
- rts
-
-set_io_device_no:
- lda cfg_default_drive
- sec
- sbc #7
- sta io_device_no
- rts
-xmodem_upload:
- jsr set_io_device_no
- lda #0
- sta eof
-
- ldax #directory_buffer
- jsr io_read_catalogue
- bcs @dir_failed
- lda directory_buffer ;get the first byte that was downloaded
- bne :+
- jmp @no_files_on_disk
-:
-
- ldax #directory_buffer
- ldy #0 ;filenames will NOT be ASCII
- jsr select_option_from_menu
- bcc @disk_filename_set
- rts
-
-@dir_failed:
- ldax #dir_listing_fail_msg
-@print_error:
- jsr print_ascii_as_native
- jsr print_errorcode
- jsr print_cr
- jmp wait_for_keypress
-
-@no_files_on_disk:
- ldax #no_files
- jsr print_ascii_as_native
-@wait_keypress_then_return_to_main:
- jmp wait_for_keypress
-
-
-@disk_filename_set:
-
-;open file needs XY=pointer to name, A = length of name
- stax copy_src
- ldy #$ff
-@next_byte:
- iny
- lda (copy_src),y
- bne @next_byte
- tya
- ldx copy_src
- ldy copy_src+1
-
- jsr open_file
- ldax #read_byte
- jsr xmodem_send
- bcc @no_error
- print_failed
- jsr print_errorcode
- jmp :+
-@no_error:
- print_ok
-:
- jsr close_file
- jmp wait_for_keypress
-
-
-read_byte:
- lda eof
- beq @not_eof
- sec
- rts
-@not_eof:
- ldx #$02 ; filenumber 2 = output file
- jsr $FFC6 ; call CHKIN (file 2 now used as input)
-
- jsr $FFCF ; call CHRIN (get a byte from file)
- pha
-
- jsr $FFB7 ; call READST (read status byte)
-
- beq :+ ; either EOF or read error
- inc eof
-:
- ldx #$00 ; filenumber 0 = console
- jsr $FFC6 ; call CHKIN (console now used as input)
-
- pla
- clc
- rts
-
-xmodem_download:
- ldax #opening_file
- jsr print_ascii_as_native
- jsr open_dl_file
- bcs @error
- ldax #ok_msg
- jsr print_ascii_as_native
- jsr print_cr
- ldax #write_byte
- jsr xmodem_receive
- bcs @error
- jsr close_file
- ldax #transfer_complete
- jsr print_ascii_as_native
- ldax #prompt_for_filename
- jsr print_ascii_as_native
-@get_filename:
- ldax #filter_dns
- ldy #40
- jsr get_filtered_input
- bcs @get_filename
- jsr rename_file
-
-
- rts
-@error:
- print_failed
- jsr print_errorcode
- jsr close_file
- jmp wait_for_keypress
-
-open_dl_file:
-
- ;scratch the file first (if it exists)
- ;first copy the "S:"
- ldx #0
-:
- lda scratch_cmd,x
- sta command_buffer,x
- inx
- cmp #':'
- bne :-
- jsr copy_tmp_filename_and_execute_cmd
-
- lda #temp_filename_end-temp_filename
- ldx #temp_filename
-
-
-open_file:
- ;A,X,Y set up ready for a call to SETNAM for file #2
- jsr $FFBD ; call SETNAM
- lda #$02 ; file number 2
-.import cfg_default_drive
- ldx cfg_default_drive
-
- ldy #$02 ; secondary address 2
- jsr $FFBA ; call SETLFS
-
- jsr $FFC0 ; call OPEN
- bcs @error ; if carry set, the file could not be opened
- rts
-@error:
- sta ip65_error
- jsr close_file
- sec
- rts
-
-write_byte:
- pha
- ldx #$02 ; filenumber 2 = output file
- jsr $FFC9 ; call CHKOUT
- pla
- jsr $ffd2 ;write byte
- JSR $FFB7 ; call READST (read status byte)
- bne @error
- ldx #$00 ; filenumber 0 = console
- jsr $FFC9 ; call CHKOUT
- rts
-@error:
- lda #KPR_ERROR_FILE_ACCESS_FAILURE
- sta ip65_error
- jsr close_file
- sec
- rts
-
-
-close_file:
-
- lda #$02 ; filenumber 2
- jsr $FFC3 ; call CLOSE
- rts
-
-
-rename_file:
-;AX points at new filename
- stax copy_src
- ldx #0
- ;first the "RENAME0:"
-
-:
- lda rename_cmd,x
- sta command_buffer,x
- inx
-
- cmp #':'
- bne :-
-
- ;now the new filename
- ldy #0
-:
- lda (copy_src),y
- beq @end_of_new_filename
- sta command_buffer,x
- inx
- iny
- bne :-
-@end_of_new_filename:
-
- ;now the "="
- lda #'='
- sta command_buffer,x
- inx
-
-copy_tmp_filename_and_execute_cmd:
- ;now the old filename
- ldy #0
-:
- lda temp_filename,y
- cmp #','
- beq @end_of_old_filename
- sta command_buffer,x
- inx
- iny
- bne :-
-@end_of_old_filename:
- txa ;filename length
- ldx #command_buffer
- jsr $FFBD ; call SETNAM
- lda #$0F ; filenumber 15
- ldx cfg_default_drive
- ldy #$0F ; secondary address 15
- jsr $FFBA ; call SETLFS
- jsr $FFC0 ; call OPEN
- lda #$0F ; filenumber 15
- jsr $FFC3 ; call CLOSE
- rts
-
-
-scratch_cmd:
- .byte "S:"
-
-rename_cmd:
- .byte "RENAME:"
-
-exit_telnet:
-exit_gopher:
- jsr setup_screen
- jmp main_menu
-.rodata
-
-menu_header_msg:
-.byte $13,10,"KIPPERTERM 2"
-.byte 10,0
-main_menu_msg:
-.byte 10,"Main Menu",10,10
-.byte "F1: Telnet F3: Gopher ",10
-.byte "F5: Address Book",10
-.byte "F7: Config F8: Credits",10,10
-
-.byte 0
-telnet_menu_msg:
-.byte 10,10,10
-.byte "F1: D/L File (XMODEM)",10
-.byte "F3: U/L File (XMODEM)",10
-.byte "F5: Send ASCII char",10
-.byte "F7: Return",10,10
-.byte 0
-
-
-opening_file:
-.byte 10,"opening file",10,0
-transfer_complete:
-.byte "transfer complete.",10,0
-prompt_for_filename: .byte "save file as?",10,0
-current:
-.byte "current ",0
-
-enter_ascii:
-.byte 10,"ASCII value (0..255)? ",0
-
-byte_sent:
-.byte 10,"byte sent.",0
-
-new:
-.byte"new ",0
-
-resolving:
- .byte "resolving ",0
-
-no_files:
- .byte "no files",10,0
-
-address_book_fail_msg:
- .byte "couldn't open address book",10,0
-
-dir_listing_fail_msg:
- .byte "directory listing failed",10,0
-
-temp_filename:
-.byte "XMODEM.TMP,P,W" ; @ means 'overwrite if existing', ',P,W' is required to make this an output file
-temp_filename_end:
-.byte 0
-
-
-address_book_filename: .byte "ADDRESSES.TXT",0
-
-gopher_header: .byte "gopher",10,0
-telnet_header: .byte "telnet",10,0
-
-drive_text: .byte "drive #",0
-
-
-credits:
-.byte 10,"License: Mozilla Public License v1.1",10,"http://www.mozilla.org/MPL/"
-.byte 10
-.byte 10,"Contributors:",10
-.byte 10,"Jonno Downes"
-.byte 10,"Glenn Holmer"
-.byte 10,"Per Olofsson"
-.byte 10,"Lars Stollenwerk"
-.byte 10,10
-.byte "Build "
-.include "../inc/version.i"
-.byte " ("
-.include "timestamp.i"
-.byte ")"
-.byte 10,10
-
-.byte 0
-
-.segment "APP_SCRATCH"
-
-temp_font: .res 1
-temp_border: .res 1
-temp_text_back: .res 1
-temp_text_fore: .res 1
-temp_page_zero_vars: .res $28
-temp_screen_chars: .res $400
-temp_colour_ram: .res $400
-command_buffer: .res $80
-eof: .res 1
-ascii_packet: .res 1
-
-directory_buffer: .res $400
-
-;we need to reserve space at $2000..$27FF for the VT100 font table
-.segment "FONT_TABLE"
-.res $800
-
-;make a dummy cartdige header so our
-.segment "CARTRIDGE_HEADER"
-.byte "80"
-.byte "KIPTRM"
-.byte $0,$0,$0 ;reserved for future use
-.byte $0,$0,$0 ;reserved for future use
-.byte $0,$0,$0 ;reserved for future use
-
-;-- LICENSE FOR kipperterm.s --
-; 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/
-;
-; 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.
-;
-; The Original Code is KipperTerm.
-;
-; The Initial Developer of the Original Code is Jonno Downes,
-; jonno@jamtronix.com.
-; Portions created by the Initial Developer are Copyright (C) 2009
-; Jonno Downes. All Rights Reserved.
-; -- LICENSE END --
diff --git a/client/kipperterm2/timestamp.i b/client/kipperterm2/timestamp.i
deleted file mode 100644
index 772ac73..0000000
--- a/client/kipperterm2/timestamp.i
+++ /dev/null
@@ -1 +0,0 @@
-.byte "2013-04-11"
diff --git a/client/tcp_test.bat b/client/tcp_test.bat
deleted file mode 100644
index 245992e..0000000
--- a/client/tcp_test.bat
+++ /dev/null
@@ -1 +0,0 @@
-start c:\temp\WinVICE-2.1\x64.exe -cart16 carts\kipperkart.bin
\ No newline at end of file
diff --git a/client/test/atom_test.xml b/client/test/atom_test.xml
deleted file mode 100644
index 85a62a4..0000000
--- a/client/test/atom_test.xml
+++ /dev/null
@@ -1,242 +0,0 @@
-
-
- tag:search.twitter.com,2005:search/#c64
-
-
- #c64 - Twitter Search
-
-
- since_id removed for pagination.
- 2009-08-10T10:03:59Z
- 15
-
-
- tag:search.twitter.com,2005:3222849162
- 2009-08-10T10:03:59Z
-
- Lately I edited a Firebird music compilation. You can play it by using this player here. Please listen. http://bit.ly/DF8zQ #c64 #chiptune
- Lately I edited a Firebird music compilation. You can play it by using this player here. Please listen. <a href="http://bit.ly/DF8zQ">http://bit.ly/DF8zQ</a> <a href="http://search.twitter.com/search?q=%23c64"><b>#c64</b></a> <a href="http://search.twitter.com/search?q=%23chiptune">#chiptune</a>
- 2009-08-10T10:03:59Z
-
- <a href="http://twitter.com/">web</a>
- en
-
- aka_obi (akaobi)
- http://twitter.com/aka_obi
-
-
-
- tag:search.twitter.com,2005:3222793961
- 2009-08-10T09:57:28Z
-
- Lately I edited a Firebird music compilation. You can play it by using this player here. Have fun. http://bit.ly/DF8zQ #c64 #chiptune
- Lately I edited a Firebird music compilation. You can play it by using this player here. Have fun. <a href="http://bit.ly/DF8zQ">http://bit.ly/DF8zQ</a> <a href="http://search.twitter.com/search?q=%23c64"><b>#c64</b></a> <a href="http://search.twitter.com/search?q=%23chiptune">#chiptune</a>
- 2009-08-10T09:57:28Z
-
- <a href="http://twitter.com/">web</a>
- en
-
- aka_obi (akaobi)
- http://twitter.com/aka_obi
-
-
-
- tag:search.twitter.com,2005:3221757110
- 2009-08-10T07:30:45Z
-
- is listening SID music on the iPhone! http://iphone.vanille.de/sidplayer/ #c64 #sid #iphone #chipmusic #8bit
- is listening SID music on the iPhone! <a href="http://iphone.vanille.de/sidplayer/">http://iphone.vanille.de/sidplayer/</a> <a href="http://search.twitter.com/search?q=%23c64"><b>#c64</b></a> <a href="http://search.twitter.com/search?q=%23sid">#sid</a> <a href="http://search.twitter.com/search?q=%23iphone">#iphone</a> <a href="http://search.twitter.com/search?q=%23chipmusic">#chipmusic</a> <a href="http://search.twitter.com/search?q=%238bit">#8bit</a>
- 2009-08-10T07:30:45Z
-
- <a href="http://twitter.com/">web</a>
- en
-
- chiptune (rez)
- http://twitter.com/chiptune
-
-
-
- tag:search.twitter.com,2005:3205731747
- 2009-08-09T10:16:06Z
-
- Wenn man früher auf dem C64 nur mit S-Mon geproggt hat, dann ist das ScienceFiction! http://bit.ly/RuhAh
- #c64
- Wenn man früher auf dem C64 nur mit S-Mon geproggt hat, dann ist das ScienceFiction! <a href="http://bit.ly/RuhAh">http://bit.ly/RuhAh</a>
- <a href="http://search.twitter.com/search?q=%23c64"><b>#c64</b></a>
- 2009-08-09T10:16:06Z
-
- <a href="http://thecosmicmachine.com/eventbox/">EventBox</a>
- de
-
- wurstgranate (Wurstgranate)
- http://twitter.com/wurstgranate
-
-
-
- tag:search.twitter.com,2005:3205709954
- 2009-08-09T10:13:18Z
-
- http://bit.ly/RuhAh
- #c64
- <a href="http://bit.ly/RuhAh">http://bit.ly/RuhAh</a>
- <a href="http://search.twitter.com/search?q=%23c64"><b>#c64</b></a>
- 2009-08-09T10:13:18Z
-
- <a href="http://thecosmicmachine.com/eventbox/">EventBox</a>
-
-
- wurstgranate (Wurstgranate)
- http://twitter.com/wurstgranate
-
-
-
- tag:search.twitter.com,2005:3205118149
- 2009-08-09T08:59:41Z
-
- http://www.remix64.com/amigacharts.html remix64 #c64 #amiga #charts ! check hybris 2009 :)
- <a href="http://www.remix64.com/amigacharts.html">http://www.remix64.com/amigacharts.html</a> remix64 <a href="http://search.twitter.com/search?q=%23c64"><b>#c64</b></a> <a href="http://search.twitter.com/search?q=%23amiga">#amiga</a> <a href="http://search.twitter.com/search?q=%23charts">#charts</a> ! check hybris 2009 :)
- 2009-08-09T08:59:41Z
-
- <a href="http://twitter.com/">web</a>
- fr
-
- grabule (grabule)
- http://twitter.com/grabule
-
-
-
- tag:search.twitter.com,2005:3194733775
- 2009-08-08T16:35:20Z
-
- http://www.x-formz.com/music/ ultra great remixes of #c64 #amiga musics
- <a href="http://www.x-formz.com/music/">http://www.x-formz.com/music/</a> ultra great remixes of <a href="http://search.twitter.com/search?q=%23c64"><b>#c64</b></a> <a href="http://search.twitter.com/search?q=%23amiga">#amiga</a> musics
- 2009-08-08T16:35:20Z
-
- <a href="http://twitter.com/">web</a>
- eo
-
- grabule (grabule)
- http://twitter.com/grabule
-
-
-
- tag:search.twitter.com,2005:3191289093
- 2009-08-08T09:16:19Z
-
- 8bit-Prodigy really rocks! Praise the SID chip! ;) e.g. http://bit.ly/29WsHg (more at http://bit.ly/jPkYc) via @sv #wakeup_music #c64 #fb
- 8bit-Prodigy really rocks! Praise the SID chip! ;) e.g. <a href="http://bit.ly/29WsHg">http://bit.ly/29WsHg</a> (more at <a href="http://bit.ly/jPkYc">http://bit.ly/jPkYc</a>) via <a href="http://twitter.com/sv">@sv</a> <a href="http://search.twitter.com/search?q=%23wakeup_music">#wakeup_music</a> <a href="http://search.twitter.com/search?q=%23c64"><b>#c64</b></a> <a href="http://search.twitter.com/search?q=%23fb">#fb</a>
- 2009-08-08T09:16:19Z
-
- <a href="http://twitter.com/">web</a>
- en
-
- gesus (gesus)
- http://twitter.com/gesus
-
-
-
- tag:search.twitter.com,2005:3183233498
- 2009-08-07T20:50:04Z
-
- #StreetFighter II running on a #C64. Holy crap does that look bad! http://bit.ly/YgIdZ
- <a href="http://search.twitter.com/search?q=%23StreetFighter">#StreetFighter</a> II running on a <a href="http://search.twitter.com/search?q=%23C64"><b>#C64</b></a>. Holy crap does that look bad! <a href="http://bit.ly/YgIdZ">http://bit.ly/YgIdZ</a>
- 2009-08-07T20:50:04Z
-
- <a href="http://www.tweetdeck.com/">TweetDeck</a>
- en
-
- sidshuman (Sid Shuman)
- http://twitter.com/sidshuman
-
-
-
- tag:search.twitter.com,2005:3183089623
- 2009-08-07T20:39:47Z
-
- @IdleSi Armalyte rocks! My school mate held the high score in CVG magazine way back. Great loading music too. #retro #c64 #sid
- <a href="http://twitter.com/IdleSi">@IdleSi</a> Armalyte rocks! My school mate held the high score in CVG magazine way back. Great loading music too. <a href="http://search.twitter.com/search?q=%23retro">#retro</a> <a href="http://search.twitter.com/search?q=%23c64"><b>#c64</b></a> <a href="http://search.twitter.com/search?q=%23sid">#sid</a>
- 2009-08-07T20:39:47Z
-
- <a href="http://www.tweetdeck.com/">TweetDeck</a>
- en
-
- sevik (Sean Parker)
- http://twitter.com/sevik
-
-
-
- tag:search.twitter.com,2005:3164495376
- 2009-08-06T10:29:54Z
-
- RT: @3typen der #iPhone #App #c64 #sid player für unterwegs http://twitpic.com/cypku wann kommt eigentlich ifrodo?
- RT: <a href="http://twitter.com/3typen">@3typen</a> der <a href="http://search.twitter.com/search?q=%23iPhone">#iPhone</a> <a href="http://search.twitter.com/search?q=%23App">#App</a> <a href="http://search.twitter.com/search?q=%23c64"><b>#c64</b></a> <a href="http://search.twitter.com/search?q=%23sid">#sid</a> player für unterwegs <a href="http://twitpic.com/cypku">http://twitpic.com/cypku</a> wann kommt eigentlich ifrodo?
- 2009-08-06T10:29:54Z
-
- <a href="http://apiwiki.twitter.com/">API</a>
- de
-
- uberguineapig (Guinea Pigz)
- http://twitter.com/uberguineapig
-
-
-
- tag:search.twitter.com,2005:3164476839
- 2009-08-06T10:27:39Z
-
- der #iPhone #App #c64 #sid player für unterwegs http://twitpic.com/cypku wann kommt eigentlich ifrodo?
- der <a href="http://search.twitter.com/search?q=%23iPhone">#iPhone</a> <a href="http://search.twitter.com/search?q=%23App">#App</a> <a href="http://search.twitter.com/search?q=%23c64"><b>#c64</b></a> <a href="http://search.twitter.com/search?q=%23sid">#sid</a> player für unterwegs <a href="http://twitpic.com/cypku">http://twitpic.com/cypku</a> wann kommt eigentlich ifrodo?
- 2009-08-06T10:27:39Z
-
- <a href="http://www.tweetdeck.com/">TweetDeck</a>
- de
-
- 3typen (3typen)
- http://twitter.com/3typen
-
-
-
- tag:search.twitter.com,2005:3152292799
- 2009-08-05T20:30:00Z
-
- Shredz64!!! Guitar Hero for Commodore 64.. wait what? people are still making stuff for Commodore? http://bit.ly/WpM41 #commodore #c64
- Shredz64!!! Guitar Hero for Commodore 64.. wait what? people are still making stuff for Commodore? <a href="http://bit.ly/WpM41">http://bit.ly/WpM41</a> <a href="http://search.twitter.com/search?q=%23commodore">#commodore</a> <a href="http://search.twitter.com/search?q=%23c64"><b>#c64</b></a>
- 2009-08-05T20:30:00Z
-
- <a href="http://www.tweetdeck.com/">TweetDeck</a>
- en
-
- kevireilly (Kevin Reilly)
- http://twitter.com/kevireilly
-
-
-
- tag:search.twitter.com,2005:3152230931
- 2009-08-05T20:26:26Z
-
- ... Disk2 http://tinyurl.com/kwbxth #smashdesigns #ourdarkness #c64 #demoscene
- ... Disk2 <a href="http://tinyurl.com/kwbxth">http://tinyurl.com/kwbxth</a> <a href="http://search.twitter.com/search?q=%23smashdesigns">#smashdesigns</a> <a href="http://search.twitter.com/search?q=%23ourdarkness">#ourdarkness</a> <a href="http://search.twitter.com/search?q=%23c64"><b>#c64</b></a> <a href="http://search.twitter.com/search?q=%23demoscene">#demoscene</a>
- 2009-08-05T20:26:26Z
-
- <a href="http://twitter.com/">web</a>
- en
-
- falingo (Michael)
- http://twitter.com/falingo
-
-
-
- tag:search.twitter.com,2005:3151332602
- 2009-08-05T19:35:28Z
-
- RT @SilwerSurfer: Bauernfeind @3Sat ! #Politik #zensursula #piraten #schäuble #C64
- RT <a href="http://twitter.com/SilwerSurfer">@SilwerSurfer</a>: Bauernfeind <a href="http://twitter.com/3Sat">@3Sat</a> ! <a href="http://search.twitter.com/search?q=%23Politik">#Politik</a> <a href="http://search.twitter.com/search?q=%23zensursula">#zensursula</a> <a href="http://search.twitter.com/search?q=%23piraten">#piraten</a> <a href="http://search.twitter.com/search?q=%23sch%C3%A4uble">#schäuble</a> <a href="http://search.twitter.com/search?q=%23C64"><b>#C64</b></a>
- 2009-08-05T19:35:28Z
-
- <a href="http://twitter.com/">web</a>
- de
-
- emju (EMJU)
- http://twitter.com/emju
-
-
-
diff --git a/client/test/file1.html b/client/test/file1.html
deleted file mode 100644
index 4e65228..0000000
--- a/client/test/file1.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-This is file1
-
\ No newline at end of file
diff --git a/client/test/index.html b/client/test/index.html
deleted file mode 100644
index 83daf07..0000000
--- a/client/test/index.html
+++ /dev/null
@@ -1,3 +0,0 @@
-
-This is index.html
-
\ No newline at end of file
diff --git a/client/uthernet/Makefile b/client/uthernet/Makefile
deleted file mode 100644
index b19609b..0000000
--- a/client/uthernet/Makefile
+++ /dev/null
@@ -1,44 +0,0 @@
-AS=ca65
-LD=ld65
-CFLAGS=-Oirs -t $(TARGET)
-AFLAGS=
-
-INCFILES=\
- ../inc/common.i\
- ../inc/commonprint.i\
- ../inc/net.i\
- ../inc/menu.i\
- ../inc/kipper_constants.i
-
-IP65LIB=../ip65/ip65.lib
-
-APPLE2PROGLIB=../drivers/a2uther.lib
-
-%.o: %.s $(INCFILES) $(APPLE2PROGLIB)
- $(AS) $(AFLAGS) $<
-
-all: utherboot.dsk
-
-#c700_rom.bin: c700_rom.o ../cfg/a2rom.cfg
-# $(LD) -C ../cfg/a2rom.cfg -o $@ c700_rom.o $(APPLE2PROGLIB)
-#
-#bankswitch_eeprom.bin: bankswitch_eeprom.o ../cfg/a2rom.cfg
-# $(LD) -C ../cfg/a2rom.cfg -o $@ bankswitch_eeprom.o $(APPLE2PROGLIB)
-#
-#applewin.exe: c700_rom.bin bankswitch_eeprom.bin patch_applewin.rb
-# ruby patch_applewin.rb
-
-
-utherboot.pg2: utherboot.o $(IP65LIB) $(APPLE2PROGLIB) $(INCFILES) ../cfg/a2language_card.cfg
- $(LD) -m utherboot.map -C ../cfg/a2language_card.cfg -o $@ $< $(IP65LIB) $(APPLE2PROGLIB)
-
-utherboot.dsk: utherboot.pg2
- ripxplore.rb --init AppleDos utherboot.dsk -a utherboot.pg2 -t AppleBinary
- ripxplore.rb utherboot.dsk -a hello -t Applesoft
-
-
-clean:
- rm -f *.o *.bin *.map *.prg *.pg2 *.dsk *.d64
-
-distclean: clean
- rm -f *~
diff --git a/client/uthernet/bankswitch_eeprom.s b/client/uthernet/bankswitch_eeprom.s
deleted file mode 100644
index 9207238..0000000
--- a/client/uthernet/bankswitch_eeprom.s
+++ /dev/null
@@ -1,51 +0,0 @@
-.segment "C800_0"
-.asciiz "BANK $00"
-.segment "C800_1"
-.asciiz "BANK $01"
-.segment "C800_2"
-.asciiz "BANK $02"
-.segment "C800_3"
-.asciiz "BANK $03"
-.segment "C800_4"
-.asciiz "BANK $04"
-.segment "C800_5"
-.asciiz "BANK $05"
-.segment "C800_6"
-.asciiz "BANK $06"
-.segment "C800_7"
-.asciiz "BANK $07"
-.segment "C800_8"
-.asciiz "BANK $08"
-.segment "C800_9"
-.asciiz "BANK $09"
-.segment "C800_A"
-.asciiz "BANK $0A"
-.segment "C800_B"
-.asciiz "BANK $0B"
-.segment "C800_C"
-.asciiz "BANK $0C"
-.segment "C800_D"
-.asciiz "BANK $0D"
-.segment "C800_E"
-.asciiz "BANK $0E"
-
-
-
-;-- LICENSE FOR bankswitch_eeprom.s --
-; 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/
-;
-; 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.
-;
-; The Original Code is ip65.
-;
-; The Initial Developer of the Original Code is Jonno Downes,
-; jonno@jamtronix.com.
-; Portions created by the Initial Developer are Copyright (C) 2009
-; Jonno Downes. All Rights Reserved.
-; -- LICENSE END --
diff --git a/client/uthernet/c700_rom.s b/client/uthernet/c700_rom.s
deleted file mode 100644
index c1bc679..0000000
--- a/client/uthernet/c700_rom.s
+++ /dev/null
@@ -1,69 +0,0 @@
-.include "../inc/common.i"
-.include "../inc/a2keycodes.i"
-
-.import print_a
-.import print_cr
-
-pptr=$04 ;temp pointer for printing from
-
-
-.segment "C700"
-
-;Autostart 'signature' bytes - make this rom look like a Disk ][ controller card
-.byte $c9,$20,$c9,$00,$c9,$03,$c9,$3c
-
-ldax #hello_world
-jsr print
-
-rts
-
-sta $cfff ;turn of all other expansion ROMs
-sta $c0f4 ;set bank
-ldax #$c800
-
-jsr print
-rts
-
-
-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
-
-
-hello_world:
- .byte "hello from autostart firmware land!",13,0
-
-
-
-
-
-;-- LICENSE FOR c700_rom.s --
-; 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/
-;
-; 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.
-;
-; The Original Code is ip65.
-;
-; The Initial Developer of the Original Code is Jonno Downes,
-; jonno@jamtronix.com.
-; Portions created by the Initial Developer are Copyright (C) 2009
-; Jonno Downes. All Rights Reserved.
-; -- LICENSE END --
diff --git a/client/uthernet/patch_applewin.rb b/client/uthernet/patch_applewin.rb
deleted file mode 100644
index 75007c7..0000000
--- a/client/uthernet/patch_applewin.rb
+++ /dev/null
@@ -1,52 +0,0 @@
-unpatched_applewin_filename='unpatched_applewin.exe'
-patched_applewin_filename='applewin.exe'
-
-c700_rom_filename='c700_rom.bin'
-bankswitch_eeprom_filename="bankswitch_eeprom.bin"
-
-[unpatched_applewin_filename,c700_rom_filename,bankswitch_eeprom_filename].each do |filename|
- if !(FileTest.file?(filename)) then
- puts "file '#{filename}' not found"
- exit
- end
-
-end
-
-filebytes=File.open(unpatched_applewin_filename,"rb").read
-
-c700_sig=(07).chr*256
-bankswitch_eeprom_sig=(0xF0).chr*256
-
-c700_rom_offset=filebytes.index(c700_sig)
-raise "C700 ROM signature not found in #{unpatched_applewin_filename}" if c700_rom_offset.nil?
-bankswitch_eeprom_offset=filebytes.index(bankswitch_eeprom_sig)
-raise "bankswitch EEPROM signature not found in #{unpatched_applewin_filename}" if bankswitch_eeprom_offset.nil?
-
-c700_rom=File.open(c700_rom_filename,"rb").read
-bankswitch_eeprom=File.open(bankswitch_eeprom_filename,"rb").read
-
-filebytes[c700_rom_offset,c700_rom.length]=c700_rom
-filebytes[bankswitch_eeprom_offset,bankswitch_eeprom.length]=bankswitch_eeprom
-filehandle=File.open(patched_applewin_filename,"wb")
-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
- bne @not_installed
- ldax #@already_installed_msg
- jsr __print
- rts
-
- @installed_msg: .byte "V1541 INSTALLED",0
- @already_installed_msg: .byte "V1541 ALREADY INSTALLED",0
-@not_installed:
-
-
- ldax #__DATA_LOAD__
- stax copy_src
- ldax #__DATA_RUN__
- stax copy_dest
- ldax #__DATA_SIZE__
- jsr __copymem
-
- ldax #__CODESTUB_LOAD__
- stax copy_src
- ldax #__CODESTUB_RUN__
- stax copy_dest
- ldax #__CODESTUB_SIZE__
- jsr __copymem
-
- ldax #__RODATA_LOAD__
- stax copy_src
- ldax #__RODATA_RUN__
- stax copy_dest
- ldax #__RODATA_SIZE__
- jsr __copymem
-
- ldax #__IP65_DEFAULTS_LOAD__
- stax copy_src
- ldax #__IP65_DEFAULTS_RUN__
- stax copy_dest
- ldax #__IP65_DEFAULTS_SIZE__
- jsr __copymem
-
-
-
-
- jsr swap_basic_out
-
- jsr ip65_init
- bcc @init_ok
- ldax #@no_nic
- jsr print
-@fail_and_exit:
- ldax #@not_installed_msg
- jsr print
- jmp @done
-@no_nic: .byte "NO RR-NET FOUND - ",0
-@not_installed_msg: .byte "V1541 NOT INSTALLED.",0
-@init_ok:
- ldax #@dhcp_init_msg
- jsr print
- jsr dhcp_init
- bcc @dhcp_worked
-@failed:
- ldax #@fail_msg
- jsr print
- jmp @fail_and_exit
-@dhcp_init_msg: .byte "DHCP INITIALISATION"
-@elipses: .byte "...",0
-@ok_msg: .byte "OK",13,0
-@fail_msg: .byte "FAILED",13,0
-@dhcp_worked:
- ldax #@ok_msg
- jsr print
-
- ldax #@resolve_servername_msg
- jsr print
- ldax #@elipses
- jsr print
- ldax #@servername
- jsr dns_set_hostname
- jsr dns_resolve
- bcc @dns_worked
- jmp @failed
-@resolve_servername_msg: .byte "RESOLVING "
-@servername: .byte SERVERNAME,0
-@dns_worked:
- ldax #@ok_msg
- jsr print
- ldx #3
-@copy_server_ip_loop:
- lda dns_ip,x
- sta tcp_connect_ip,x
- dex
- bpl @copy_server_ip_loop
-
- ldax #@connecting_msg
- jsr print
- ldax #@servername
- jsr print
- ldax #@elipses
- jsr print
- ldax #csip_callback
- stax tcp_callback
- ldax #SERVER_PORT
- jsr tcp_connect
- bcc @connect_worked
- jmp @failed
-@connecting_msg: .byte "CONNECTING TO ",0
-
-@connect_worked:
- ldax #@ok_msg
- jsr print
- ;IP stack OK, now set vectors
-
- ldax CINV
- stax old_irq_vector
-
- ldax ILOAD
- stax old_load_vector
- ldax #load_handler
- stax ILOAD
- ldax #@installed_msg
- jsr print
-
-ldax #irq_handler
- sei
- stax CINV
-
-@done:
- jsr swap_basic_in
- lda #0
- sta $dc08 ;make sure TOD clock is started
- cli
-
- rts
-
-__copymem:
- sta end
- ldy #0
-
- cpx #0
- beq @tail
-
-: lda (copy_src),y
- sta (copy_dest),y
- iny
- bne :-
- inc copy_src+1 ;next page
- inc copy_dest+1 ;next page
- dex
- bne :-
-
-@tail:
- lda end
- beq @done
-
-: lda (copy_src),y
- sta (copy_dest),y
- iny
- cpy end
- bne :-
-
-@done:
- rts
-
-end: .byte 0
-
-__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
-
-
-.code
-
-load_dev_2:
- ldy #$00
- sty receive_type ;0 = display to screen, 1 = load to memory
- sty buffer_length
- sty buffer_length+1
- lda (FNADDR),y
- cmp #'!'
- beq @do_disks
- cmp #'>'
- beq @do_command
- cmp #'#'
- beq @do_insert
- cmp #'='
- beq @do_find
- cmp #'/'
- bne @not_cf
- lda FNLEN
- cmp #1
- bne @do_cf
- ldax #cmd_cf_root
- jmp @send_string_receive_response
-@not_cf:
- cmp #'%'
- beq @do_name
- cmp #'$'
- beq @do_cat
- inc receive_type
- ldax #cmd_load
- jmp @copy_prefix
-
-@done:
-
- clc
- jmp swap_basic_in
-
-@do_command:
- ldy FNLEN
-@copy_cmd:
- lda (FNADDR),y
- sta cmd_buffer-1,y
- dey
- bne @copy_cmd
-
- ldy FNLEN
- lda #$0D
- sta cmd_buffer-1,y
- lda #0
- sta cmd_buffer,y
-@send_command_buffer:
- ldax #cmd_buffer
- jmp @send_string_receive_response
-
-@do_name:
- ldax #cmd_name
- jmp @send_string_receive_response
-
-@do_find:
- ldax #cmd_find
- jmp @copy_prefix
-
-@do_cat:
- ldax #cmd_cat
- jmp @send_string_receive_response
-
-
-@do_disks:
- ldax #cmd_dsks
-@send_string_receive_response:
- jsr tcp_send_string
- bcs @error
- lda receive_type
- bne @load_file
- jsr show_list
- jmp @done
-@load_file:
- jsr receive_file
- jmp @done
-
-@do_cf:
- ldax #cmd_cf
- jmp @copy_prefix
-
-
-@do_insert:
- ldax #cmd_insert
-@copy_prefix:
- stax copy_src
- ldy #0
-@copy_prefix_loop:
- lda (copy_src),y
- beq @end_copy_prefix
- sta cmd_buffer,y
- iny
- bne @copy_prefix_loop
-@end_copy_prefix:
- tya
- tax
- ldy #1
- lda receive_type
- beq :+
- dey ;if this is a LOAD command, don't skip the first byte
-:
- lda (FNADDR),y
- sta cmd_buffer,x
- iny
- inx
- cpy FNLEN
-
- bne :-
-
- lda #$0D
- sta cmd_buffer,x
- lda #0
- sta cmd_buffer+1,x
- jmp @send_command_buffer
-
-@error:
- ldax #SERVER_PORT
- jsr tcp_connect
-
- ldax #transmission_error
- jsr print
-
- jmp @done
-
-
-show_list:
-
-@loop:
- lda $91 ; look for STOP key
- cmp #$7F
- beq @done
- lda #2 ;wait for max 2 seconds
- jsr getc
- bcc @got_data
- rts
-@got_data:
-
- cmp #$03 ;ETX byte (indicating end of page)?
- beq @get_user_input
- cmp #$04 ;EOT byte (indicating end of list)?
- beq @done
- jsr print_a ;got a byte - output it
- jmp @loop ;continue getting characters
-
-;End of page, so ask for user input
- @get_user_input:
-
- jsr get_key
-
- cmp #'S'
- beq @user_exit
-
- cmp #$0D
- bne @get_user_input
- ldax #continue_cmd
-
- jsr tcp_send_string
- jmp @loop
-
-;User wishes to stop - send S to server and quit
-@user_exit:
- ldax #stop_cmd
- jsr tcp_send_string
-
-@done:
-
-rts
-
-
-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
-
-
-csip_callback:
- lda tcp_inbound_data_length+1
- cmp #$ff
- bne @not_eof
- rts
-@not_eof:
-
- ldax tcp_inbound_data_ptr
- stax copy_src
- ldax #csip_stream_buffer
- stax copy_dest
- stax next_char_ptr
-
- ldax tcp_inbound_data_length
- stax buffer_length
- jsr copymem
- rts
-
-getc:
- sta getc_timeout_seconds
-
- clc
- lda $dc09 ;time of day clock: seconds (in BCD)
- sed
- adc getc_timeout_seconds
- cmp #$60
- bcc @timeout_set
- sec
- sbc #$60
-@timeout_set:
- cld
- sta getc_timeout_end
-
-@poll_loop:
- jsr next_char
- bcs @no_char
- rts ;done!
-@no_char:
- jsr check_for_abort_key
- bcc @no_abort
- lda #KPR_ERROR_ABORTED_BY_USER
- sta ip65_error
- inc user_abort
- rts
-@no_abort:
- jsr ip65_process
- lda $dc09 ;time of day clock: seconds
- cmp getc_timeout_end
- bne @poll_loop
- lda #00
- sec
- rts
-
-next_char:
- lda buffer_length
- bne @not_eof
- lda buffer_length+1
- bne @not_eof
- sec
- rts
-@not_eof:
- next_char_ptr=*+1
- lda $ffff
- pha
- inc next_char_ptr
- bne :+
- inc next_char_ptr+1
-:
- sec
- lda buffer_length
- sbc #1
- sta buffer_length
- lda buffer_length+1
- sbc #0
- sta buffer_length+1
- pla
- clc
-
- rts
-
-tcp_irq_handler:
-
- inc keep_alive_counter
- lda keep_alive_counter
- bne @skip
- jsr tcp_send_keep_alive
-@skip:
- jsr ip65_process
-@done:
-
- rts
-
-receive_file:
- lda #0
- sta byte_count
-@loop:
- lda $91 ; look for STOP key
- cmp #$7F
- beq @done
- lda #2 ;wait for max 2 seconds
- jsr getc
- bcc @got_data
-@done:
- rts
-@got_data:
- ldy byte_count
- sta file_length,y
- inc byte_count
- lda byte_count
- cmp #4
- bne @loop
- ;is the first 4 bytes "500 "
-;
- lda file_length+1
- cmp #'0' ;if 2nd char was '0' this might be an ASCII error message
- bne @real_file_transmission
- lda file_location
- cmp #$01
- beq @real_file_transmission
- ;this was probably an ASCII error message
-
- lda #0
- sta byte_count
-:
- ldy byte_count
- lda file_length,y
- jsr print_a
- inc byte_count
- lda byte_count
- cmp #4
- bne :-
- jmp show_list
-@real_file_transmission:
- ldax file_location
- stax copy_dest
-
- lda file_length
- sec
- sbc #2
- sta file_length
-
- lda file_length+1
- sbc #0
- sta file_length+1
-
-@rx_loop:
- lda file_length+1
- bne @not_done
- lda file_length
- bne @not_done
- ;file now fully in RAM, time for housekeeping
- sta $297 ;RS-232 status = 0 (no error)
- sta $90 ;status = 0 (no error)
- ldy copy_dest+1 ;high byte of end of loaded program
- ldx copy_dest ;lo byte of end of loaded program
- inx
- bne :+
- iny ;if X rolled over, bump y
-:
- rts ;done!
-
-@not_done:
- lda #2 ;wait for max 2 seconds
- jsr getc
- bcs @rx_error
- ldy #0
- sta (copy_dest),y
- inc copy_dest
- bne :+
- inc copy_dest+1
-:
- lda file_length
- bne :+
- dec file_length+1
- lda #'.'
- jsr print_a
-:
- dec file_length
- jmp @rx_loop
-
-@rx_error:
- ldax #receive_error
- jmp print
-
-.segment "CODESTUB"
-
-swap_basic_out:
- lda $01
- sta underneath_basic
- and #$FE
- sta $01
- rts
-
-swap_basic_in:
- lda $01
- ora #$01
- sta $01
- lda #$0
- sta underneath_basic
- rts
-
-underneath_basic: .res 1
-
-load_handler:
- ldx $BA ; Current Device Number
- cpx #$02
- beq :+
- .byte $4c ;jmp
-old_load_vector:
- .word $ffff
- :
- jsr swap_basic_out
- jmp load_dev_2
-
-irq_handler:
-
- lda underneath_basic
- bne @done
- jsr swap_basic_out
- jsr tcp_irq_handler
- jsr swap_basic_in
-@done:
- .byte $4c ;jmp
-old_irq_vector:
- .word $ffff
-
-
-.data
-cmd_dsks: .byte "DISKS 22",$0d,$0
-cmd_insert: .byte "INSERT ",0
-cmd_cat: .byte "$",$0d,$00
-cmd_find: .byte "FIND ",$00
-cmd_name: .byte "NAME",$0d,$00
-cmd_cf: .byte "CF ",0
-cmd_load: .byte "LOAD ",0
-cmd_cf_root: .byte "CF /",$0d,0
-
-transmission_error: .byte "TRANSMIT ERROR",13,0
-receive_error: .byte "RECEIVE ERROR",13,0
-
-.segment "TCP_VARS"
-csip_stream_buffer: .res 1500
-cmd_buffer: .res 100
-.bss
-
-user_abort: .res 1
-getc_timeout_end: .res 1
-getc_timeout_seconds: .res 1
-buffer_length: .res 2
-keep_alive_counter: .res 1
-file_length: .res 2
-file_location: .res 2
-rx_length: .res 2
-receive_type: .res 1
-byte_count: .res 1
-.data
-continue_cmd: .byte $0D,0
-stop_cmd: .byte "S",0
-
-
-;-- LICENSE FOR v1541.s --
-; 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/
-;
-; 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.
-;
-; The Original Code is ip65.
-;
-; The Initial Developer of the Original Code is Jonno Downes,
-; jonno@jamtronix.com.
-; Portions created by the Initial Developer are Copyright (C) 2010
-; Jonno Downes. All Rights Reserved.
-; -- LICENSE END --
diff --git a/client/wiznet/Makefile b/client/wiznet/Makefile
deleted file mode 100644
index a0bd917..0000000
--- a/client/wiznet/Makefile
+++ /dev/null
@@ -1,94 +0,0 @@
-AS=ca65
-LD=ld65
-CFLAGS=-Oirs -t $(TARGET)
-AFLAGS=
-
-INCFILES=\
- ../inc/common.i\
- ../inc/commonprint.i\
- ../inc/net.i\
- ../inc/menu.i\
- ../inc/kipper_constants.i\
- ../inc/version.i\
-
-IP65LIB=../ip65/ip65.lib
-IP65TCPLIB=../ip65/ip65_tcp.lib
-C64RRNETLIB=../drivers/c64rrnet.lib
-C64WIZNETLIB=../drivers/c64wiznet.lib
-IP65WIZNETLIB=../ip65/ip65_wiznet.lib
-
-
-all: ip65 drivers\
- wizboot.bin \
- wizboot2.prg \
- cartheader.prg \
- wiztest.prg \
- wizboot.prg \
- telnetd.bin \
- telnetd.prg \
- wizbobcart.prg \
- kt2wiz.d64 \
- wiztest.d64 \
- bootc64.prg \
-
-%.o: %.s $(INCFILES) timestamp.rb
- ruby timestamp.rb > timestamp.i
- $(AS) $(AFLAGS) $<
-
-
-%.prg: %.o $(IP65WIZNETLIB) $(C64WIZNETLIB) $(INCFILES) ../cfg/c64prg.cfg
- $(LD) -m $*.map -vm -C ../cfg/c64prg.cfg -o $*.prg $(AFLAGS) $< $(IP65WIZNETLIB) $(C64WIZNETLIB)
-
-
-wizboot.bin: wizboot.o $(IP65WIZNETLIB) $(C64WIZNETLIB) $(INCFILES) ../cfg/c64_8kcart.cfg
- $(LD) -m wizboot.map -vm -C ../cfg/c64_8kcart.cfg -o $@ $< $(IP65WIZNETLIB) $(C64WIZNETLIB)
- ruby ../carts/fix_cart.rb $@ 8192
-
-wizboot.prg: wizboot.bin cartheader.prg
- cat cartheader.prg wizboot.bin > $@
-
-wizflash.prg: wizboot.bin wizflashheader.prg
- cat wizflashheader.prg wizboot.bin > $@
-
-telnetd.o: ../carts/telnetd.s $(INCFILES) timestamp.rb
- $(AS) $(AFLAGS) ../carts/telnetd.s -o telnetd.o
-
-telnetd.bin: telnetd.o $(IP65WIZNETLIB) $(C64WIZNETLIB) $(INCFILES) ../cfg/c64_8kcart.cfg
- $(LD) -m telnetd.map -vm -C ../cfg/c64_8kcart.cfg -o $@ $< $(IP65WIZNETLIB) $(C64WIZNETLIB)
- ruby ../carts/fix_cart.rb $@ 8192
-
-telnetd.prg: telnetd.bin cartheader.prg
- cat cartheader.prg telnetd.bin > $@
-
-wizbobcart.bin: wizbobcart.o $(IP65WIZNETLIB) $(C64WIZNETLIB) $(INCFILES) wizbobcart.cfg
- $(LD) -m wizbobcart.map -vm -C wizbobcart.cfg -o $@ $< $(IP65WIZNETLIB) $(C64WIZNETLIB)
- ruby ../carts/fix_cart.rb $@ 8192
-
-wizbobcart.prg: wizbobcart.bin cartheader.prg
- cat cartheader.prg wizbobcart.bin > $@
-
-wiztest.d64: wiztest.prg wizboot.prg wizflash.prg
- c1541 -format wiztest,wt d64 $@ -attach $@ -write wizboot.prg -write wiztest.prg -write wizflash.prg
-
-clean:
- rm -f *.o *.bin *.map *.prg *.pg2 *.dsk *.d64
-
-distclean: clean
- rm -f *~
-
-ip65:
- make -C ../ip65 all
-
-drivers:
- make -C ../drivers all
-
-kt2wiz.d64:
- make -C ../kipperterm2 kt2wiz.d64
-
-
-bootc64.prg:
-# cp wizbobcart.prg ../../server/boot/bootc64.prg
-# cp telnetd.prg ../../server/boot/bootc64.prg
-# cp wizboot2.prg ../../server/boot/bootc64.prg
- cp wiztest.prg ../../server/boot/bootc64.prg
-# cp wizflash.prg ../../server/boot/bootc64.prg
\ No newline at end of file
diff --git a/client/wiznet/cartheader.s b/client/wiznet/cartheader.s
deleted file mode 100644
index f49c65c..0000000
--- a/client/wiznet/cartheader.s
+++ /dev/null
@@ -1,54 +0,0 @@
-
-.include "../inc/common.i"
-
-.import copymem
-.importzp copy_src
-.importzp copy_dest
-
-.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:
-
-;copy BASIC to RAM
- ldax #$A000
- stax copy_src
- stax copy_dest
- ldax #$2000
- jsr copymem
-
-;copy cart data from end of file to $8000 (RAM)
- ldax #cart_data
- stax copy_src
- ldax #$8000
- stax copy_dest
- ldax #$2000
- jsr copymem
-
-;swap out the cartridge (also swaps out BASIC)
-
- lda $01
- and #$fe ;reset bit 0
- sta $01
-
-;execute the cartridge from RAM
- jmp ($8002)
-
-
-.bss
-
-cart_data: ;this should point to where the cart data gets appended.
- .res $2000
\ No newline at end of file
diff --git a/client/wiznet/commonprint.i b/client/wiznet/commonprint.i
deleted file mode 100644
index 7e32057..0000000
--- a/client/wiznet/commonprint.i
+++ /dev/null
@@ -1,377 +0,0 @@
-
-
-.ifndef KPR_API_VERSION_NUMBER
- .define EQU =
- .include "../inc/kipper_constants.i"
-.endif
-
- .export print_hex
- .export print_ip_config
- .export ok_msg
- .export failed_msg
- .export init_msg
- .export print
- .export print
- .export print_integer
- .export print_dotted_quad
- .export mac_address_msg
- .export ip_address_msg
- .export netmask_msg
- .export gateway_msg
- .export dns_server_msg
- .export tftp_server_msg
- .import ip65_error
- .export print_errorcode
- .export press_a_key_to_continue
-
-
-
-.import eth_driver_name
-.import eth_driver_io_base
-.importzp copy_src
-.import cfg_tftp_server
-;reuse the copy_src zero page var
-pptr = copy_src
-
-.bss
-temp_bin: .res 2
-temp_bcd: .res 3
-temp_ptr: .res 2
-.code
-.macro print_driver_init
- ldax #eth_driver_name
- jsr print
- lda #'('
- jsr print_a
- lda #'$'
- jsr print_a
- lda eth_driver_io_base+1
- jsr print_hex
- lda eth_driver_io_base
- jsr print_hex
- lda #')'
- jsr print_a
-
- ldax #init_msg
- jsr print
-.endmacro
-
-
-.macro print_dhcp_init
- ldax #dhcp_msg
- jsr print
- ldax #init_msg
- jsr print
-.endmacro
-
-.macro print_failed
- ldax #failed_msg
- jsr print
- jsr print_cr
-.endmacro
-
-.macro print_ok
- ldax #ok_msg
- jsr print
- jsr print_cr
-.endmacro
-
-
-.code
-
-.import print_a
-.import print_cr
-.import eth_driver_name
-print_ip_config:
-
- ldax #interface_type
- jsr print
-
- ldax #eth_driver_name
- jsr print
- jsr print_cr
-
- ldax #mac_address_msg
- jsr print
- jsr cfg_get_configuration_ptr ;ax=base config, carry flag clear
- ;first 6 bytes of cfg_get_configuration_ptr is MAC address
- jsr print_mac
- jsr print_cr
-
- ldax #ip_address_msg
- jsr print
- jsr cfg_get_configuration_ptr ;ax=base config, carry flag clear
- adc #KPR_CFG_IP
- bcc :+
- inx
-:
- jsr print_dotted_quad
- jsr print_cr
-
- ldax #netmask_msg
- jsr print
- jsr cfg_get_configuration_ptr ;ax=base config, carry flag clear
- adc #KPR_CFG_NETMASK
- bcc :+
- inx
-:
- jsr print_dotted_quad
- jsr print_cr
-
- ldax #gateway_msg
- jsr print
- jsr cfg_get_configuration_ptr ;ax=base config, carry flag clear
- adc #KPR_CFG_GATEWAY
- bcc :+
- inx
-:
- jsr print_dotted_quad
- jsr print_cr
-
- ldax #dns_server_msg
- jsr print
- jsr cfg_get_configuration_ptr ;ax=base config, carry flag clear
- adc #KPR_CFG_DNS_SERVER
- bcc :+
- inx
-: jsr print_dotted_quad
- jsr print_cr
-
- ldax #tftp_server_msg
- jsr print
- ldax #cfg_tftp_server
- jsr print_dotted_quad
- jsr print_cr
-
- ldax #dhcp_server_msg
- jsr print
- jsr cfg_get_configuration_ptr ;ax=base config, carry flag clear
- adc #KPR_CFG_DHCP_SERVER
- bcc :+
- inx
-:
- jsr print_dotted_quad
- jsr print_cr
-
- rts
-
-
-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 the 4 bytes pointed at by AX as dotted decimals
-print_dotted_quad:
- sta pptr
- stx pptr + 1
- lda #0
-@print_one_byte:
- pha
- tay
- lda (pptr),y
- ldx #0
- jsr print_integer
- pla
- cmp #3
- beq @done
- clc
- adc #1
- pha
- lda #'.'
- jsr print_a
- pla
- bne @print_one_byte
-@done:
-
- rts
-
-;print 6 bytes printed at by AX as a MAC address
-print_mac:
- stax pptr
- ldy #0
-@one_mac_digit:
- tya ;just to set the Z flag
- pha
- beq @dont_print_colon
- lda #':'
- jsr print_a
-@dont_print_colon:
- pla
- tay
- lda (pptr),y
- jsr print_hex
- iny
- cpy #06
- bne @one_mac_digit
- rts
-
-print_integer: ;print 16 bit number in AX as a decimal number
-
-;hex to bcd routine taken from Andrew Jacob's code at http://www.6502.org/source/integers/hex2dec-more.htm
- stax temp_bin
- sed ; Switch to decimal mode
- lda #0 ; Ensure the result is clear
- sta temp_bcd
- sta temp_bcd+1
- sta temp_bcd+2
- ldx #16 ; The number of source bits
- :
- asl temp_bin+0 ; Shift out one bit
- rol temp_bin+1
- lda temp_bcd+0 ; And add into result
- adc temp_bcd+0
- sta temp_bcd+0
- lda temp_bcd+1 ; propagating any carry
- adc temp_bcd+1
- sta temp_bcd+1
- lda temp_bcd+2 ; ... thru whole result
- adc temp_bcd+2
- sta temp_bcd+2
-
- dex ; And repeat for next bit
- bne :-
-
- stx temp_bin+1 ;x is now zero - reuse temp_bin as a count of non-zero digits
- cld ;back to binary
- ldx #2
- stx temp_bin+1 ;reuse temp_bin+1 as loop counter
-@print_one_byte:
- ldx temp_bin+1
- lda temp_bcd,x
- pha
- lsr
- lsr
- lsr
- lsr
- jsr @print_one_digit
- pla
- and #$0f
- jsr @print_one_digit
- dec temp_bin+1
- bpl @print_one_byte
- rts
-@print_one_digit:
- cmp #0
- beq @this_digit_is_zero
- inc temp_bin ;increment count of non-zero digits
-@ok_to_print:
- clc
- adc #'0'
- jsr print_a
- rts
-@this_digit_is_zero:
- ldx temp_bin ;how many non-zero digits have we printed?
- bne @ok_to_print
- ldx temp_bin+1 ;how many digits are left to print?
- bne @this_is_not_last_digit
- inc temp_bin ;to get to this point, this must be the high nibble of the last byte.
- ;by making 'count of non-zero digits' to be >0, we force printing of the last digit
-@this_is_not_last_digit:
- 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
-
-print_errorcode:
- ldax #error_code
- jsr print
- lda ip65_error
- jsr print_hex
- jmp print_cr
-
-.rodata
-hexdigits:
-.byte "0123456789ABCDEF"
-
-
-interface_type:
-.byte "INTERFACE : ",0
-
-mac_address_msg:
-.byte "MAC ADDRESS : ", 0
-
-ip_address_msg:
-.byte "IP ADDRESS : ", 0
-
-netmask_msg:
-.byte "NETMASK : ", 0
-
-gateway_msg:
-.byte "GATEWAY : ", 0
-
-dns_server_msg:
-.byte "DNS SERVER : ", 0
-
-dhcp_server_msg:
-.byte "DHCP SERVER : ", 0
-
-tftp_server_msg:
-.byte "TFTP SERVER : ", 0
-
-init_msg:
- .byte " INITIALIZING ",0
-
-
-dns_lookup_failed_msg:
- .byte "DNS LOOKUP "
-failed_msg:
- .byte "FAILED", 0
-
-ok_msg:
- .byte "OK", 0
-
-
-error_code:
- .asciiz "ERROR CODE: "
-
-press_a_key_to_continue:
- .byte "PRESS A KEY TO CONTINUE",13,0
-
-
-
-;-- LICENSE FOR commonprint.i --
-; 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/
-;
-; 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.
-;
-; The Original Code is ip65.
-;
-; The Initial Developer of the Original Code is Jonno Downes,
-; jonno@jamtronix.com.
-; Portions created by the Initial Developer are Copyright (C) 2009
-; Jonno Downes. All Rights Reserved.
-; -- LICENSE END --
diff --git a/client/wiznet/kipperwizdisk.d64 b/client/wiznet/kipperwizdisk.d64
deleted file mode 100644
index c521e10bac926c0d26a7df0851b83a09ed56c65c..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001
literal 174848
zcmeFa3wRVo)<4{n&Sf&0Bojc4_aX!#3Q4#cE&?G05*bJ&iGZS+5E2v3%@71{5JWB_
zJp_?Ult>&!=|~R=UeV3kE^c6WC-kh#uDasBy6$puH9M^91>JSN->IGn0WZ7n`~RNr
z`#+D}nRHj3I(6#QuTE80S65dFf^irK7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$
z7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$
z7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$
z7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$
z7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$
z7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$
z7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$
z7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$
z7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$7zh{$
z7zh{${O=Kn>2ET}n137f