git-svn-id: http://svn.code.sf.net/p/netboot65/code@307 93682198-c243-4bdb-bd91-e943c89aac3b

This commit is contained in:
jonnosan 2011-01-19 06:20:25 +00:00
parent b65824fee4
commit 301dc60728
11 changed files with 652 additions and 93 deletions

Binary file not shown.

Binary file not shown.

View File

@ -1,4 +1,5 @@
; Ethernet driver for W5100 W5100 chip
; Ethernet driver for SMC LAN91C96 chip
; ;
.ifndef KPR_API_VERSION_NUMBER .ifndef KPR_API_VERSION_NUMBER
@ -18,14 +19,148 @@
.import eth_outp .import eth_outp
.import eth_outp_len .import eth_outp_len
.import cfg_mac
.code
; LANceGS hardware addresses
ethbsr := $c00E ; Bank select register R/W (2B)
; Register bank 0
ethtcr := $c000 ; Transmission control register R/W (2B)
ethephsr := $c002 ; EPH status register R/O (2B)
ethrcr := $c004 ; Receive control register R/W (2B)
ethecr := $c006 ; Counter register R/O (2B)
ethmir := $c008 ; Memory information register R/O (2B)
ethmcr := $c00A ; Memory Config. reg. +0 R/W +1 R/O (2B)
; Register bank 1
ethcr := $c000 ; Configuration register R/W (2B)
ethbar := $c002 ; Base address register R/W (2B)
ethiar := $c004 ; Individual address register R/W (6B)
ethgpr := $c00A ; General address register R/W (2B)
ethctr := $c00C ; Control register R/W (2B)
; Register bank 2
ethmmucr := $c000 ; MMU command register W/O (1B)
ethautotx := $c001 ; AUTO TX start register R/W (1B)
ethpnr := $c002 ; Packet number register R/W (1B)
etharr := $c003 ; Allocation result register R/O (1B)
ethfifo := $c004 ; FIFO ports register R/O (2B)
ethptr := $c006 ; Pointer register R/W (2B)
ethdata := $c008 ; Data register R/W (4B)
ethist := $c00C ; Interrupt status register R/O (1B)
ethack := $c00C ; Interrupt acknowledge register W/O (1B)
ethmsk := $c00D ; Interrupt mask register R/W (1B)
; Register bank 3
ethmt := $c000 ; Multicast table R/W (8B)
ethmgmt := $c008 ; Management interface R/W (2B)
ethrev := $c00A ; Revision register R/W (2B)
ethercv := $c00C ; Early RCV register R/W (2B)
.segment "IP65ZP" : zeropage
eth_packet: .res 2
.data ;can't be in "code" segment, because that may end up in ROM.
;initialize the ethernet adaptor ;initialize the ethernet adaptor
;inputs: none ;inputs: none
;outputs: carry flag is set if there was an error, clear otherwise ;outputs: carry flag is set if there was an error, clear otherwise
eth_init: eth_init:
sec ;FIX ME ! jsr lan_self_modify
lda #$01
fixlan00:
sta ethbsr ; Select register bank 1
fixlan01:
lda ethcr ; Read first four bytes - $31, $20, $67, $18
cmp #$31
bne lanerror
fixlan03:
lda ethbar
cmp #$67
bne lanerror
fixlan04:
lda ethbar+1
cmp #$18
bne lanerror
; we have the magic signature
; Reset ETH card
lda #$00 ; Bank 0
fixlan05:
sta ethbsr
lda #%10000000 ; Software reset
fixlan06:
sta ethrcr+1
ldy #$00
fixlan07:
sty ethrcr
fixlan08:
sty ethrcr+1
; Delay
: cmp ($FF,x) ; 6 cycles
cmp ($FF,x) ; 6 cycles
iny ; 2 cycles
bne :- ; 3 cycles
; 17 * 256 = 4352 -> 4,4 ms
; Enable transmit and receive
lda #%10000001 ; Enable transmit TXENA, PAD_EN
ldx #%00000011 ; Enable receive, strip CRC ???
fixlan09:
sta ethtcr
fixlan10:
stx ethrcr+1
lda #$01 ; Bank 1
fixlan11:
sta ethbsr
fixlan12:
lda ethcr+1
ora #%00010000 ; No wait (IOCHRDY)
fixlan13:
sta ethcr+1
lda #%00001001 ; Auto release
fixlan14:
sta ethctr+1
; Set MAC address
lda cfg_mac
ldx cfg_mac + 1
fixlan15:
sta ethiar
fixlan16:
stx ethiar + 1
lda cfg_mac + 2
ldx cfg_mac + 3
fixlan17:
sta ethiar + 2
fixlan18:
stx ethiar + 3
lda cfg_mac + 4
ldx cfg_mac + 5
fixlan19:
sta ethiar + 4
fixlan20:
stx ethiar + 5
; Set interrupt mask
lda #$02 ; Bank 2
fixlan21:
sta ethbsr
lda #%00000000 ; No interrupts
fixlan22:
sta ethmsk
clc
rts
lanerror:
sec
rts rts
@ -37,7 +172,70 @@ eth_init:
; eth_inp contains the received packet, ; eth_inp contains the received packet,
; and eth_inp_len contains the length of the packet ; and eth_inp_len contains the length of the packet
eth_rx: eth_rx:
sec ;FIX ME ! fixlan38:
lda ethist
and #%00000001 ; Check receive interrupt
bne :+
sec ; No packet available
rts
: lda #$00
ldx #%11100000 ; Receive, Auto Increment, Read
fixlan39:
sta ethptr
fixlan40:
stx ethptr + 1
; Last word contains 'last data byte' and $60 or 'fill byte' and $40
fixlan41:
lda ethdata ; Status word
fixlan42:
lda ethdata ; Only need high byte
; Move ODDFRM bit into carry:
; - Even packet length -> carry clear -> subtract 6 bytes
; - Odd packet length -> carry set -> subtract 5 bytes
lsr
lsr
lsr
lsr
lsr
; The packet contains 3 extra words
fixlan43:
lda ethdata ; Total number of bytes
sbc #$05 ; Actually 5 or 6 depending on carry
sta eth_inp_len
fixlan44:
lda ethdata
sbc #$00
sta eth_inp_len+1
; Read bytes into buffer
lda #<eth_inp
ldx #>eth_inp
sta eth_packet
stx eth_packet+1
ldx eth_inp_len+1
ldy #$00
lanread:
fixlan46:
lda ethdata
sta (eth_packet),y
iny
bne :+
inc eth_packet+1
: cpy eth_inp_len
bne lanread
dex
bpl lanread
; Remove and release RX packet from the FIFO
lda #%10000000
fixlan47:
sta ethmmucr
clc
rts rts
@ -49,10 +247,195 @@ eth_rx:
; if there was an error sending the packet then carry flag is set ; if there was an error sending the packet then carry flag is set
; otherwise carry flag is cleared ; otherwise carry flag is cleared
eth_tx: eth_tx:
sec ;FIX ME ! lda eth_outp_len + 1 ;
ora #%00100000
fixlan23:
sta ethmmucr ; Allocate memory for transmission
fixlan24:
lda ethist
and #%00001000 ; Allocation interrupt
bne :+
sec
rts ; Not able to allocate; bail
: lda #%00001000
fixlan25:
sta ethack ; Acknowledge interrupt
fixlan26:
lda etharr
fixlan27:
sta ethpnr ; Set packet number
lda #$00
ldx #%01000000 ; Auto increment
fixlan28:
sta ethptr
fixlan29:
stx ethptr + 1
lda #$00 ; Status written by CSMA
fixlan30:
sta ethdata
fixlan31:
sta ethdata
lda eth_outp_len
eor #$01
lsr
lda eth_outp_len
adc #$05 ; Actually will be 5 or 6 depending on carry
fixlan32:
sta ethdata
lda eth_outp_len + 1
adc #$00
fixlan33:
sta ethdata
lda #<eth_outp ; Send the packet
ldx #>eth_outp
sta eth_packet
stx eth_packet + 1
ldx eth_outp_len + 1
ldy #$00
lanwrite:
lda (eth_packet),y
fixlan34:
sta ethdata
iny
bne :+
inc eth_packet + 1
: cpy eth_outp_len
bne lanwrite
dex
bpl lanwrite
lda eth_outp_len ; Odd packet length?
lsr
bcc :+
lda #%001000000 ; Yes, Odd
bne fixlan36 ; Always
: lda #$00 ; No
fixlan35:
sta ethdata ; Fill byte
fixlan36:
sta ethdata ; Control byte
lda #%11000000 ; Enqueue packet - transmit
fixlan37:
sta ethmmucr
clc
rts rts
;
; lan_self_modify - make all entry points variable so we can move the
; LANceGS card around in the Apple
;
lan_self_modify:
lda #$C0 ; FIXME - hardcoded to slot 4
; Make the accumulator contain slot number plus $80
; i.e. Slot 1 = $90
; i.e. Slot 2 = $A0
; i.e. Slot 3 = $B0
; i.e. Slot 4 = $C0
; i.e. Slot 5 = $D0
; i.e. Slot 6 = $E0
; i.e. Slot 7 = $F0
; $C0s0: Save off all ethtcr, ethcr, ethmmucr, and ethmt mods
sta fixlan01 + 1
sta fixlan09 + 1
sta fixlan23 + 1
sta fixlan37 + 1
; sta fixlan45 + 1 ; Removed
sta fixlan47 + 1
; $C0s1: Save off all ethtcr+1, ethcr+1, ethmmucr+1, and ethmt+1 mods
adc #$01
; sta fixlan02 + 1 ; Removed
sta fixlan12 + 1
sta fixlan13 + 1
; $C0s2: Save off all ethephsr, ethbar, and ethpnr mods
adc #$01
sta fixlan03 + 1
sta fixlan27 + 1
; $C0s3: Save off all ethephsr+1, ethbar+1, ethpnr+1, and etharr mods
adc #$01
sta fixlan04 + 1
sta fixlan26 + 1
; $C0s4: Save off all ethrcr, ethiar, and ethfifo mods
adc #$01
sta fixlan07 + 1
sta fixlan15 + 1
; $C0s5: Save off all ethrcr+1, ethiar+1, and ethfifo+1 mods
adc #$01
sta fixlan06 + 1
sta fixlan08 + 1
sta fixlan10 + 1
sta fixlan16 + 1
; $C0s6: Save off all ethecr, ethptr, and ethiar+2 mods
adc #$01
sta fixlan17 + 1
sta fixlan28 + 1
sta fixlan39 + 1
; $C0s7: Save off all ethecr+1, ethptr+1, and ethiar+3 mods
adc #$01
sta fixlan18 + 1
sta fixlan29 + 1
sta fixlan40 + 1
; $C0s8: Save off all ethmir, ethdata, ethmgmt, and ethiar+4 mods
adc #$01
sta fixlan19 + 1
sta fixlan30 + 1
sta fixlan31 + 1
sta fixlan32 + 1
sta fixlan33 + 1
sta fixlan34 + 1
sta fixlan35 + 1
sta fixlan36 + 1
sta fixlan41 + 1
sta fixlan42 + 1
sta fixlan43 + 1
sta fixlan44 + 1
sta fixlan46 + 1
; $C0s9: Save off all ethmir+1, ethdata+1, ethmgmt+1, and ethiar+5 mods
adc #$01
sta fixlan20 + 1
; $C0sA: Save off all ethmcr, ethgpr, and ethrev mods
; $C0sB: Save off all ethmcr+1, ethgpr+1, and ethrev+1 mods
; None
; $C0sC: Save off all ethctr, ethist, ethack, and ethercv mods
adc #$03 ; Because there were no a or b mods
sta fixlan24 + 1
sta fixlan25 + 1
sta fixlan38 + 1
; $C0sD: Save off all ethmsk, ethctr+1 mods
adc #$01
sta fixlan14 + 1
sta fixlan22 + 1
; $C0sE: Save off all ethbsr mods
adc #$01
sta fixlan00 + 1
sta fixlan05 + 1
sta fixlan11 + 1
sta fixlan21 + 1
rts
.rodata .rodata
eth_driver_name: eth_driver_name:
.asciiz "LANceGS (91C96)" .asciiz "LANceGS (91C96)"
@ -69,7 +452,8 @@ eth_driver_name:
; ;
; The Original Code is ip65. ; The Original Code is ip65.
; ;
; The Initial Developer of the Original Code is <## TBD ##> ; The Initial Developer of the Original Code is David Schmidt
; Portions created by the Initial Developer is Copyright (C) 2010 ; Portions created by the Initial Developer is Copyright (C) 2011
; All Rights Reserved. ; All Rights Reserved.
; -- LICENSE END -- ; -- LICENSE END --

View File

@ -25,10 +25,12 @@
: :
print_ok print_ok
print_dhcp_init print_dhcp_init
jsr dhcp_init jsr dhcp_init
bcc :+ bcc :+
print_failed print_failed
sec sec

View File

@ -11,6 +11,7 @@
.endif .endif
DEFAULT_CIFS_CMD_BUFFER = $6800 DEFAULT_CIFS_CMD_BUFFER = $6800
DEFAULT_SMB_RESPONSE_BUFFER=$6000
.export cifs_l1_encode .export cifs_l1_encode
.export cifs_l1_decode .export cifs_l1_decode
.export cifs_start .export cifs_start
@ -30,6 +31,7 @@ DEFAULT_CIFS_CMD_BUFFER = $6800
.import udp_send_dest_port .import udp_send_dest_port
.import udp_send_len .import udp_send_len
.importzp ip_src .importzp ip_src
.importzp ip_dest
.import ip_data .import ip_data
.import ip_inp .import ip_inp
.import tcp_close .import tcp_close
@ -53,8 +55,8 @@ nbns_nscount=8
nbns_arcount=10 nbns_arcount=10
nbns_question_name=12 nbns_question_name=12
nbns_service_type=43 nbns_service_type=43
nbns_ttl=56
nbns_additional_record_flags=62
nbns_my_ip=64 nbns_my_ip=64
nbns_registration_message_length=68 nbns_registration_message_length=68
@ -202,6 +204,7 @@ cifs_start:
jsr tcp_listen jsr tcp_listen
@loop: @loop:
inc $d020 ;FIXME
jsr ip65_process jsr ip65_process
lda connection_closed lda connection_closed
beq @loop beq @loop
@ -238,7 +241,7 @@ cifs_advertise_hostname:
ldax #$20 ldax #$20
jsr copymem jsr copymem
;copy our encode hostname to the host announcment ;copy our raw hostname to the host announcment
ldax #raw_local_hostname ldax #raw_local_hostname
stax copy_src stax copy_src
ldax #host_announce_servername ldax #host_announce_servername
@ -309,6 +312,18 @@ nbns_callback:
@name_request: @name_request:
;this is a NB NAME REQUEST. ;this is a NB NAME REQUEST.
;is it a unicast message?
ldx #3
@check_unicast_loop:
lda ip_inp+ip_dest,x
cmp cfg_ip,x
bne @not_unicast
dex
bpl @check_unicast_loop
jmp @looking_for_us
@not_unicast:
;is it looking for our local hostname? ;is it looking for our local hostname?
ldax #udp_inp+udp_data+nbns_question_name+1 ldax #udp_inp+udp_data+nbns_question_name+1
stax copy_src stax copy_src
@ -320,52 +335,44 @@ nbns_callback:
iny iny
cpy #30 cpy #30
bne @cmp_loop bne @cmp_loop
@looking_for_us:
;this is a request for our name! ;this is a request for our name!
;we will overwrite the input message to make our response ;copy the txn id
ldax udp_inp+udp_data ;first 2 bytes of data are txn id
stax netbios_name_query_response
;set the opcode & flags to make this a response ;set the sender & recipients IP address
lda #$85
ldx #$00
sta udp_inp+udp_data+nbns_opcode
stx udp_inp+udp_data+nbns_opcode+1
;set the question count to 0
stx udp_inp+udp_data+nbns_qdcount+1
;set the answer count to 1
inx
stx udp_inp+udp_data+nbns_ancount+1
;set the sender & recipients IP address
ldx #03 ldx #03
@copy_address_loop: @copy_address_loop:
lda ip_inp+ip_src,x lda ip_inp+ip_src,x
sta udp_send_dest,x sta udp_send_dest,x
lda cfg_ip,x lda cfg_ip,x
sta udp_inp+udp_data+nbns_my_ip-6,x sta netbios_name_query_response_ip,x
dex dex
bpl @copy_address_loop bpl @copy_address_loop
;copy our encoded hostname
ldax #local_hostname
;set the answers stax copy_src
ldax #netbios_name_query_response_hostname
ldax #nbns_ttl_etc
stax copy_src
ldax #udp_inp+udp_data+nbns_ttl-6
stax copy_dest stax copy_dest
ldax #08 ldax #30
jsr copymem jsr copymem
;copy the service identifier - last 2 bytes in the query hostname
.import eth_inp
ldax eth_inp+$55
stax netbios_name_query_response_hostname+30
ldax #137 ldax #137
stax udp_send_dest_port stax udp_send_dest_port
stax udp_send_src_port stax udp_send_src_port
ldax #nbns_registration_message_length-6 ldax #netbios_name_query_response_length
stax udp_send_len stax udp_send_len
ldax #udp_inp+udp_data ldax #netbios_name_query_response
jmp udp_send jmp udp_send
@ -453,7 +460,8 @@ nb_session_callback:
jmp @message_handled jmp @message_handled
;this doesn't look like a NBT session message or SMB, so give up ;this doesn't look like a NBT session message or SMB, so give up
@not_session_message: @not_session_message:
@not_smb: @not_smb:
jsr tcp_close jsr tcp_close
@ -471,25 +479,96 @@ nb_session_callback:
@not_got_full_message: @not_got_full_message:
.import print_hex
lda cifs_cmd_length+1
jsr print_hex
lda cifs_cmd_length
jsr print_hex
rts rts
smb_handler: smb_handler:
; at this point, copy_src points to an SMB block encapsulated in an NBT session header ; at this point, copy_src points to an SMB block encapsulated in an NBT session header
clc
lda copy_src
adc #4
sta smb_ptr ;skip past the NBT header
lda copy_src+1
adc #00
sta smb_ptr+1
ldy #8 ldy #8
lda (copy_src),y ;get the SMB type lda (copy_src),y ;get the SMB type
cmp #$72 cmp #$72
beq @negotiate_protcol bne @not_negotiate_protocol
;unknown SMB jmp @negotiate_protocol
@not_negotiate_protocol:
;we assume it is an "AndX" command
sta andx_opcode
lda smb_ptr
clc
adc #$20 ;skip over SMB header
sta andx_ptr
lda smb_ptr+1
adc #00
sta andx_ptr+1
jsr start_smb_response
@parse_andx_block:
ldax andx_ptr
stax copy_src
lda andx_opcode
cmp #$ff
beq @done_all_andx_blocks
ldy #0
@andx_opcode_scan:
lda andx_opcodes,y
beq @opcode_not_found
cmp andx_opcode
beq @opcode_found
iny
iny
iny
jmp @andx_opcode_scan
@opcode_found:
lda andx_opcodes+1,y
sta andx_handler+1
lda andx_opcodes+2,y
sta andx_handler+2
jsr andx_handler
jmp @go_to_next_andx_block
@opcode_not_found:
jsr unknown_andx
@go_to_next_andx_block:
ldy #3
lda (copy_src),y ;get the AndX offset low byte
clc
adc smb_ptr
sta andx_ptr
iny
lda (copy_src),y ;get the AndX offset high byte
adc smb_ptr+1
sta andx_ptr+1
ldy #1
lda (copy_src),y ;get the subsequent AndX opcode
sta andx_opcode
jmp @parse_andx_block
@done_all_andx_blocks:
ldax smb_response_length
inx ;FIXME! this is to force wireshark to dump as SMB even tho packet is incorrect
stax tcp_send_data_len
ldax smb_response_buffer
jsr tcp_send
rts rts
@negotiate_protcol: @negotiate_protocol:
;copy the request TID,PID,UID,MID into the response ;copy the request TID,PID,UID,MID into the response
ldy #28 ;offset of TID from start of message ldy #28 ;offset of TID from start of message
ldx #0 ldx #0
@ -559,14 +638,83 @@ smb_handler:
rts rts
start_smb_response:
ldax smb_response_buffer
stax copy_dest
ldy #0
@copy_header_loop:
lda (copy_src),y ; copy_src should be the SMB request - cloning this will set PID / MID etc
sta (copy_dest),y
iny
cpy #smb_response_header_length
bne @copy_header_loop
lda #0
sta smb_response_length+1
lda #smb_response_header_length
sta smb_response_length
ldy #3
sta (copy_dest),y
;set the flags correctly
ldy #smb_response_flags_offset
lda #$82 ;FLAGS byte
sta (copy_dest),y
iny
lda #$01 ;FLAGS2 low byte
sta (copy_dest),y
iny
lda #$00 ;FLAGS2 hi byte
sta (copy_dest),y
rts
add_andx_response:
rts
.import print_a
.import print_hex
session_setup_andx:
lda #'S'
jsr print_a
rts
tree_connect_andx:
lda #'T'
jsr print_a
rts
unknown_andx:
lda andx_opcode
jsr print_hex
lda #'?'
jsr print_a
rts
.rodata
andx_opcodes:
.byte $73
.word session_setup_andx
.byte $75
.word tree_connect_andx
.byte $00
.data .data
andx_handler:
jmp $FFFF ;filled in later
smb_response_header:
negotiate_protocol_response_message: negotiate_protocol_response_message:
.byte $00 ;message type = session message .byte $00 ;message type = session message
.byte $00,$00,negotiate_protocol_response_message_length-4 ;NBT header .byte $00,$00,negotiate_protocol_response_message_length-4 ;NBT header
.byte $FF,"SMB" ;SMB header .byte $FF,"SMB" ;SMB header
.byte $72 ;command = negotiate protocol .byte $72 ;command = negotiate protocol
.byte $00,$00,$00,$00 ;status = OK .byte $00,$00,$00,$00 ;status = OK
smb_response_flags_offset =*-smb_response_header
.byte $82 ;flags : oplocks not supported, paths are case sensitive .byte $82 ;flags : oplocks not supported, paths are case sensitive
.byte $01,$00 ;flags 2 - long file names allowed .byte $01,$00 ;flags 2 - long file names allowed
.byte $00, $00 ;PID HIGH .byte $00, $00 ;PID HIGH
@ -577,6 +725,7 @@ negotiate_protocol_response_tid:
.byte $98,$76 ;PID - to be overwritten .byte $98,$76 ;PID - to be overwritten
.byte $65,$64 ;USER ID - to be overwritten .byte $65,$64 ;USER ID - to be overwritten
.byte $ab,$cd ;multiplex ID - to be overwritten .byte $ab,$cd ;multiplex ID - to be overwritten
smb_response_header_length=*-smb_response_header
.byte $11 ;word count .byte $11 ;word count
dialect_index: .res 2 ;index of selected dialect dialect_index: .res 2 ;index of selected dialect
.byte $00 ;security mode: share, no encryption .byte $00 ;security mode: share, no encryption
@ -666,6 +815,27 @@ host_announce_hostname:
.byte $0 ;host comment .byte $0 ;host comment
host_announce_message_length=*-host_announce_message host_announce_message_length=*-host_announce_message
netbios_name_query_response:
.byte $12,$34 ;transaction id
.byte $85,$00 ;flags: name query response, no error
.byte $00,$00 ;questions = 0
.byte $00,$01 ;answers = 1
.byte $00,$00 ;authority records = 0
.byte $00,$00 ;additional records = 0
.byte $20 ;
netbios_name_query_response_hostname:
.res 30 ;will be replaced with encoded hostname
.byte $43,$41 ;
.byte $00 ;
.byte $00,$20 ; type = NB
.byte $00,$01 ;class = IN
.byte $00,$00,$01,$40 ; TTL = 64 seconds
.byte $00,$06 ;data length
.byte $00,$00 ;FLAGS = B-NODE, UNIQUE NAME
netbios_name_query_response_ip:
.res 4 ;filled in with our IP
netbios_name_query_response_length=*-netbios_name_query_response
registration_request: registration_request:
@ -685,7 +855,6 @@ registration_request_servername:
.byte $c0,$0c ;additional record name : ptr to string in QUESTION NAME .byte $c0,$0c ;additional record name : ptr to string in QUESTION NAME
.byte $00,$20 ;question_type = NB .byte $00,$20 ;question_type = NB
.byte $00,$01 ;question_class = IN .byte $00,$01 ;question_class = IN
nbns_ttl_etc:
.byte $00,$00,$01,$40 ; TTL = 64 seconds .byte $00,$00,$01,$40 ; TTL = 64 seconds
.byte $00,$06 ;data length .byte $00,$06 ;data length
.byte $00,$00 ;FLAGS = B-NODE, UNIQUE NAME .byte $00,$00 ;FLAGS = B-NODE, UNIQUE NAME
@ -700,6 +869,12 @@ positive_session_response_packet:
.byte $00, $00 ;message length .byte $00, $00 ;message length
positive_session_response_packet_length=*-positive_session_response_packet positive_session_response_packet_length=*-positive_session_response_packet
.data
cifs_cmd_buffer: .word DEFAULT_CIFS_CMD_BUFFER
smb_response_buffer: .word DEFAULT_SMB_RESPONSE_BUFFER
.bss .bss
hostname_buffer: .res 33 hostname_buffer: .res 33
@ -716,11 +891,13 @@ connection_closed: .res 1
cifs_cmd_buffer_ptr: .res 2 cifs_cmd_buffer_ptr: .res 2
cifs_cmd_length: .res 2 cifs_cmd_length: .res 2
.data andx_opcode: .res 1
andx_ptr: .res 2 ;pointer to next 'AndX' command
andx_length: .res 2
smb_ptr: .res 2
smb_response_length: .res 2
cifs_cmd_buffer: .word DEFAULT_CIFS_CMD_BUFFER
;-- LICENSE FOR cifs.s --
; The contents of this file are subject to the Mozilla Public License ; 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 ; 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 ; compliance with the License. You may obtain a copy of the License at

View File

@ -32,7 +32,6 @@
.export udp_send_dest_port .export udp_send_dest_port
.export udp_send_len .export udp_send_len
.import ip_calc_cksum .import ip_calc_cksum
.import ip_send .import ip_send
.import ip_create_packet .import ip_create_packet

View File

@ -1 +1 @@
.byte "2011-01-15" .byte "2011-01-15"

View File

@ -104,7 +104,6 @@ test_vic20.prg: test_vic20.o $(IP65TCPLIB) $(VIC20RRNETLIB) $(INCFILES) ../cfg/v
test_lancegs.pg2: test_lancegs.o $(IP65LIB) $(A2LANCEGSLIB) $(INCFILES) ../cfg/a2bin.cfg test_lancegs.pg2: test_lancegs.o $(IP65LIB) $(A2LANCEGSLIB) $(INCFILES) ../cfg/a2bin.cfg
$(LD) -C ../cfg/a2bin.cfg -o test_lancegs.pg2 $(AFLAGS) $< $(IP65LIB) $(A2LANCEGSLIB) $(LD) -C ../cfg/a2bin.cfg -o test_lancegs.pg2 $(AFLAGS) $< $(IP65LIB) $(A2LANCEGSLIB)
httpd_test.d64: test_httpd.prg index.html file1.html httpd_test.d64: test_httpd.prg index.html file1.html
cp test_httpd.prg autoexec.prg cp test_httpd.prg autoexec.prg
ripxplore.rb --init CbmDos httpd_test.d64 -a autoexec.prg ripxplore.rb --init CbmDos httpd_test.d64 -a autoexec.prg
@ -112,12 +111,12 @@ httpd_test.d64: test_httpd.prg index.html file1.html
ripxplore.rb httpd_test.d64 -a file1.html -t C64Seq ripxplore.rb httpd_test.d64 -a file1.html -t C64Seq
ip65test.dsk: testdns.pg2 testdottedquad.pg2 testtftp.pg2 ip65test.dsk: testdns.pg2 testdottedquad.pg2 testtftp.pg2 test_lancegs.pg2
ripxplore.rb --init BeautifulBoot ip65test.dsk -a testdns.pg2 -t AppleBinary ripxplore.rb --init AppleDos ip65test.dsk -a test_lancegs.pg2 -t AppleBinary
ripxplore.rb ip65test.dsk -a testdns.pg2 -t AppleBinary # ripxplore.rb --init BeautifulBoot ip65testb.dsk -a test_lancegs.pg2 -t AppleBinary
ripxplore.rb ip65test.dsk -a testtftp.pg2 -t AppleBinary # ripxplore.rb ip65test.dsk -a testtftp.pg2 -t AppleBinary
ripxplore.rb ip65test.dsk -a testdottedquad.pg2 -t AppleBinary # ripxplore.rb ip65test.dsk -a testdottedquad.pg2 -t AppleBinary
ripxplore.rb ip65test.dsk -a testdns.pg2 -t AppleBinary # ripxplore.rb ip65test.dsk -a testdns.pg2 -t AppleBinary
test_disk_io.d64: test_disk_io.prg test_disk_io.d64: test_disk_io.prg

View File

@ -13,6 +13,7 @@
.import __CODE_SIZE__ .import __CODE_SIZE__
.import __RODATA_SIZE__ .import __RODATA_SIZE__
.import __DATA_SIZE__ .import __DATA_SIZE__
.import __IP65_DEFAULTS_SIZE__
.segment "STARTUP" ;this is what gets put at the start of the file on the C64 .segment "STARTUP" ;this is what gets put at the start of the file on the C64
@ -33,15 +34,26 @@ basicstub:
.segment "EXEHDR" ;this is what gets put an the start of the file on the Apple 2 .segment "EXEHDR" ;this is what gets put an the start of the file on the Apple 2
.addr __CODE_LOAD__-$11 ; Start address .addr __CODE_LOAD__-$11 ; Start address
.word __CODE_SIZE__+__RODATA_SIZE__+__DATA_SIZE__+4 ; Size .word __CODE_SIZE__+__RODATA_SIZE__+__DATA_SIZE__+__IP65_DEFAULTS_SIZE__+4 ; Size
jmp init jmp init
.code .code
init: init:
lda #$0E ;change to lower case
; jsr print_cr jsr print_a
jsr print_cr
init_ip_via_dhcp init_ip_via_dhcp
; jsr ip65_init
ldx #3
:
lda static_ip,x
sta cfg_ip,x
dex
bpl :-
jsr print_ip_config jsr print_ip_config
ldax #hostname_1 ldax #hostname_1
@ -96,6 +108,8 @@ hostname_3:
cifs_hostname: cifs_hostname:
.byte "KIPPERCIFS",0 .byte "KIPPERCIFS",0
static_ip:
.byte 10,5,1,64
sample_msg: sample_msg:
.byte $ff, $ff, $ff, $ff, $ff, $ff, $f8, $1e, $df, $dc, $47, $a1, $08, $00, $45, $00 .byte $ff, $ff, $ff, $ff, $ff, $ff, $f8, $1e, $df, $dc, $47, $a1, $08, $00, $45, $00
.byte $00, $4e, $9e, $cf, $00, $00, $40, $11, $c4, $c5, $0a, $05, $01, $02, $0a, $05 .byte $00, $4e, $9e, $cf, $00, $00, $40, $11, $c4, $c5, $0a, $05, $01, $02, $0a, $05

View File

@ -2,46 +2,30 @@
.include "../inc/commonprint.i" .include "../inc/commonprint.i"
.include "../inc/net.i" .include "../inc/net.i"
.import cfg_get_configuration_ptr .import cfg_get_configuration_ptr
.import copymem .import copymem
.importzp copy_src .importzp copy_src
.importzp copy_dest .importzp copy_dest
.import exit_to_basic
.import __CODE_LOAD__ .import __CODE_LOAD__
.import __CODE_SIZE__ .import __CODE_SIZE__
.import __RODATA_SIZE__ .import __RODATA_SIZE__
.import __DATA_SIZE__ .import __DATA_SIZE__
.import __IP65_DEFAULTS_SIZE__
.segment "EXEHDR" ;this is what gets put an the start of the file on the Apple 2 .segment "EXEHDR" ;this is what gets put an the start of the file on the Apple 2
.addr __CODE_LOAD__-$11 ; Start address .addr __CODE_LOAD__-$03 ; Start address
.word __CODE_SIZE__+__RODATA_SIZE__+__DATA_SIZE__+4 ; Size .word __CODE_SIZE__+__RODATA_SIZE__+__DATA_SIZE__+__IP65_DEFAULTS_SIZE__+4 ; file size
jmp init jmp init
.code .code
init: init:
cld
jsr print_cr jsr print_cr
init_ip_via_dhcp init_ip_via_dhcp
jsr print_ip_config jsr print_ip_config
jsr print_cr jsr print_cr
rts jmp exit_to_basic
;-- LICENSE FOR test_ping.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 --

Binary file not shown.