Skip to content

Commit 13eae42

Browse files
committed
fix/update
1 parent 23b7cfa commit 13eae42

File tree

14 files changed

+214
-66
lines changed

14 files changed

+214
-66
lines changed

Makefile

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ kernel: $(SOURCE)
4444
@$(AS) --cpu 6502 -tnone src/functions/bank_mng/search_free_bank.s -o tmp/search_free_bank.o
4545
@$(AS) --cpu 6502 -tnone src/functions/bank_mng/kernel_free_bank.s -o tmp/kernel_free_bank.o
4646
@$(AS) --cpu 6502 -tnone src/functions/bank_mng/kernel_free_bank_by_pid.s -o tmp/kernel_free_bank_by_pid.o
47+
@$(AS) --cpu 6502 -tnone src/functions/network/close_sockets_by_pid.s -o tmp/close_sockets_by_pid.o
4748
@$(AR) r tmp/kernel.lib tmp/xminma.o
4849
@$(AR) r tmp/kernel.lib tmp/switch_to_kernel_extended.o
4950
@$(AR) r tmp/kernel.lib tmp/kernel_restore_banking_states.o
@@ -56,6 +57,7 @@ kernel: $(SOURCE)
5657
@$(AR) r tmp/kernel_bank8.lib tmp/xconnect.o
5758
@$(AR) r tmp/kernel_bank8.lib tmp/xsend.o
5859
@$(AR) r tmp/kernel_bank8.lib tmp/xclose_socket.o
60+
@$(AR) r tmp/kernel_bank8.lib tmp/close_sockets_by_pid.o
5961

6062

6163
@$(AS) --cpu 6502 -DWITH_SDCARD_FOR_ROOT=1 --verbose -s -ttelestrat src/kernel_main_memory.s -o tmp/kernel_main_memory.ld65

run.sh

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,15 @@ ca65 --cpu 6502 -tnone src/functions/bank_mng/kernel_restore_banking_states.s -o
1212
ca65 --cpu 6502 -tnone src/functions/lib_mng/XBANK_ROUTINE.s -o tmp/xbank_routine.o
1313
ca65 --cpu 6502 -tnone src/functions/network/init_network.s -o tmp/init_network.o
1414
ca65 --cpu 6502 -tnone src/functions/network/xsocket.s -o tmp/xsocket.o
15+
ca65 --cpu 6502 -tnone src/functions/network/close_sockets_by_pid.s -o tmp/close_sockets_by_pid.o
16+
17+
RET=$?
18+
if [ $RET != 0 ]
19+
then
20+
echo Error
21+
exit
22+
fi
23+
1524
ca65 --cpu 6502 -tnone src/functions/network/xconnect.s -o tmp/xconnect.o
1625
ca65 --cpu 6502 -tnone src/functions/network/xsend.s -o tmp/xsend.o
1726
ca65 --cpu 6502 -tnone src/functions/network/xclose_socket.s -o tmp/xclose_socket.o
@@ -41,20 +50,30 @@ ar65 r tmp/kernel_bank8.lib tmp/kernel_free_bank_by_pid.o
4150
ar65 r tmp/kernel_bank8.lib tmp/xsocket.o
4251
ar65 r tmp/kernel_bank8.lib tmp/xconnect.o
4352
ar65 r tmp/kernel_bank8.lib tmp/xsend.o
44-
ar65 r tmp/kernel_bank8.lib tmp/xclose_socket.o
53+
ar65 r tmp/kernel_bank8.lib tmp/close_sockets_by_pid.o
54+
4555

4656

4757
ca65 --cpu 6502 -DWITH_SDCARD_FOR_ROOT=1 --verbose -s -ttelestrat src/kernel_main_memory.s -o tmp/kernel_main_memory.ld65
4858
ca65 --cpu 6502 -DWITH_SDCARD_FOR_ROOT=1 --verbose -s -ttelestrat src/kernel.asm -o tmp/kernelsd.ld65 --debug-info > memmap.md
59+
60+
RET=$?
61+
if [ $RET != 0 ]
62+
then
63+
echo Error
64+
exit
65+
fi
66+
4967
ca65 --cpu 6502 -DWITH_SDCARD_FOR_ROOT=1 --verbose -s -ttelestrat src/kernel_bank0.s -o tmp/kernel_bank0.ld65 --debug-info > memmap.md
5068
ca65 --cpu 6502 -tnone src/kernel8/src/kernel8.s -o tmp/kernel_bank8.ld65 > memmap.md
5169
RET=$?
5270
if [ $RET != 0 ]
5371
then
54-
echo Error
55-
exit
72+
echo Error
73+
exit
5674
fi
5775

76+
5877
#ld65 -tnone -DWITH_SDCARD_FOR_ROOT=1 tmp/kernelsd.ld65 tmp/kernel.lib -Ln tmp/kernelsd.sym -m tmp/memmap.txt -vm
5978
echo "##########"
6079
echo "# Bank 8 #"

src/functions/bank_mng/kernel_restore_banking_states.s

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,23 @@
11
.export kernel_restore_banking_states
2+
.export kernel_restore_banking_states_register
23

34
.import KERNEL_SAVE_XEXEC_CURRENT_SET
45
.import KERNEL_SAVE_XEXEC_CURRENT_ROM_RAM
56

67
.import switch_to_kernel_extended
78

9+
810
.segment "BANK7"
911

1012
.proc kernel_restore_banking_states
1113
pla
1214
jsr switch_to_kernel_extended
1315
; restore
16+
jmp kernel_restore_banking_states_register
17+
.endproc
18+
19+
20+
.proc kernel_restore_banking_states_register
1421
pha
1522
lda KERNEL_SAVE_XEXEC_CURRENT_SET
1623
sta $343
@@ -20,5 +27,3 @@
2027
cli
2128
rts
2229
.endproc
23-
24-
Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,20 @@
11
.include "telestrat.inc"
22

33
.export switch_to_kernel_extended
4+
.export switch_to_kernel_extended_fill_register
5+
46

57
.import KERNEL_SAVE_XEXEC_CURRENT_SET
68
.import KERNEL_SAVE_XEXEC_CURRENT_ROM_RAM
79

810
.segment "BANK7"
911

1012
.proc switch_to_kernel_extended
13+
jsr switch_to_kernel_extended_fill_register
14+
jmp $40C
15+
.endproc
16+
17+
.proc switch_to_kernel_extended_fill_register
1118

1219
pha
1320

@@ -20,15 +27,12 @@
2027
lda $342
2128
sta KERNEL_SAVE_XEXEC_CURRENT_ROM_RAM
2229
and #%11011111
23-
2430
sei
2531

2632
sta $342
2733

2834
lda #$04
2935
sta $343
3036
pla
31-
jmp $40C
32-
33-
34-
.endproc
37+
rts
38+
.endproc
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
.include "telestrat.inc"
2+
3+
.export close_sockets_by_pid
4+
5+
.import KERNEL_NETWORK_FLAG
6+
.import KERNEL_NETWORK_SOCKET_LIST
7+
.import KERNEL_NETWORK_SOURCE_PORT
8+
.import KERNEL_NETWORK_SOCKET_PID
9+
.import KERNEL_NETWORK_SOCKET_DOMAIN
10+
11+
.import kernel_process
12+
13+
.include "../../kernel8/orixlibs/ch395/usr/include/asm/ch395.inc"
14+
.include "../../include/kernel.inc"
15+
.include "../../include/process.inc"
16+
.include "../../include/network.inc"
17+
.include "../../include/memory.inc"
18+
19+
.import ch395_close_socket_sn
20+
21+
.proc close_sockets_by_pid
22+
;;@brief Close all sockets for current pid
23+
;;@modifyMEM_TR1
24+
25+
lda #$00 ; First socket
26+
sta TR1
27+
28+
@restart:
29+
lda #<KERNEL_NETWORK_SOCKET_PID
30+
ldy #>KERNEL_NETWORK_SOCKET_PID
31+
32+
sta ADDRESS_READ_BETWEEN_BANK_DOUBLON
33+
sty ADDRESS_READ_BETWEEN_BANK_DOUBLON+1
34+
35+
ldx TR1
36+
ldy #$00
37+
MEMORY_GET_VALUE_FROM_BANK ; A contains the value
38+
39+
cmp kernel_process + kernel_process_struct::kernel_current_process
40+
beq @close_socket
41+
42+
@compute:
43+
inc TR1
44+
lda TR1
45+
cmp #$08
46+
beq @exit
47+
bne @restart
48+
49+
50+
@close_socket:
51+
lda TR1 ; Socket ID
52+
jsr ch395_close_socket_sn
53+
54+
; Set to 0
55+
ldy TR1 ; Get socket id (index)
56+
lda #$00 ; clear
57+
ldx #$00 ; BANK
58+
MEMORY_PUT_VALUE_TO_BANK KERNEL_NETWORK_SOCKET_LIST ; ADDRESS_READ_BETWEEN_BANK_DOUBLON is already set previously : FIXME
59+
60+
; Set to 0n
61+
ldy TR1 ; Get socket id (index)
62+
lda #$00 ; Domain
63+
ldx #$00 ; BANK
64+
MEMORY_PUT_VALUE_TO_BANK KERNEL_NETWORK_SOCKET_DOMAIN ; ADDRESS_READ_BETWEEN_BANK_DOUBLON is already set previously : FIXME
65+
66+
; Clear PID
67+
ldy TR1 ; Get socket id (index)
68+
lda #$00
69+
ldx #$00 ; BANK
70+
MEMORY_PUT_VALUE_TO_BANK KERNEL_NETWORK_SOCKET_PID ; ADDRESS_READ_BETWEEN_BANK_DOUBLON is already set previously : FIXME
71+
jmp @compute
72+
@exit:
73+
rts
74+
.endproc

src/functions/network/init_network.s

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@
4848
ldy #>KERNEL_NETWORK_FLAG
4949

5050
sta ADDRESS_READ_BETWEEN_BANK_DOUBLON
51-
sty ADDRESS_READ_BETWEEN_BANK_DOUBLON+1
51+
sty ADDRESS_READ_BETWEEN_BANK_DOUBLON + 1
5252

5353
ldx #$00
5454
ldy #$00

src/functions/network/xconnect.s

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
type := TR3
2222

2323
sty ip
24-
stx ip+1
24+
stx ip + 1
2525
lda #<KERNEL_NETWORK_SOURCE_PORT
2626
sta ADDRESS_READ_BETWEEN_BANK_DOUBLON
2727

@@ -49,7 +49,7 @@
4949
ldy #>KERNEL_NETWORK_SOCKET_LIST
5050

5151
sta ADDRESS_READ_BETWEEN_BANK_DOUBLON
52-
sty ADDRESS_READ_BETWEEN_BANK_DOUBLON+1
52+
sty ADDRESS_READ_BETWEEN_BANK_DOUBLON + 1
5353

5454
ldx #$00
5555
ldy socket

src/functions/network/xsocket.s

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
.import ch395_set_proto_type_sn
1818
.import ch395_get_socket_status_sn
1919
.import ch395_close_socket_sn
20-
20+
.import kernel_process
21+
.import KERNEL_NETWORK_SOCKET_PID
2122
;.import socket_state
2223
;.export socket_sour_port
2324

@@ -68,7 +69,7 @@
6869
ldy #>KERNEL_NETWORK_SOCKET_LIST
6970

7071
sta ADDRESS_READ_BETWEEN_BANK_DOUBLON
71-
sty ADDRESS_READ_BETWEEN_BANK_DOUBLON+1
72+
sty ADDRESS_READ_BETWEEN_BANK_DOUBLON + 1
7273
ldy socket
7374
MEMORY_GET_VALUE_FROM_BANK ; A contains the value
7475
cmp #$00
@@ -85,26 +86,29 @@
8586
rts
8687

8788
@socketfound:
88-
; ; A contains the id of the socket
89+
; A contains the id of the socket
8990

9091

9192
; save TYPE (SOCK_STREAM etc)
9293
ldy socket ; Get socket id (index)
93-
lda type ; Type
94-
ldx #$00 ; BANK
95-
94+
lda type ; Type sock_stream
95+
ldx #$00 ; BANK
9696
MEMORY_PUT_VALUE_TO_BANK KERNEL_NETWORK_SOCKET_LIST ; ADDRESS_READ_BETWEEN_BANK_DOUBLON is already set previously : FIXME
9797

9898
; Store domain
9999
ldy socket ; Get socket id (index)
100100
lda domain ; Domain
101101
ldx #$00 ; BANK
102-
103102
MEMORY_PUT_VALUE_TO_BANK KERNEL_NETWORK_SOCKET_DOMAIN ; ADDRESS_READ_BETWEEN_BANK_DOUBLON is already set previously : FIXME
104103

104+
; Store pid
105+
ldy socket ; Get socket id (index)
106+
lda kernel_process + kernel_process_struct::kernel_current_process
107+
ldx #$00 ; BANK
108+
MEMORY_PUT_VALUE_TO_BANK KERNEL_NETWORK_SOCKET_PID ; ADDRESS_READ_BETWEEN_BANK_DOUBLON is already set previously : FIXME
109+
105110
; Setting CH395
106111
lda type
107-
108112
cmp #SOCK_RAW
109113
beq @is_ip_raw
110114

src/functions/process/kernel_kill_process.asm

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,18 @@
2626

2727
jsr close_all_fp_from_current_process
2828

29+
; Destroy socket attached to the process
30+
31+
lda KERNEL_BANK_EXTENDED_AVAILABLE
32+
cmp #128
33+
bne @do_not_destroy_socket
34+
35+
lda #KERNEL_SOCKET_CLOSE_FROM_PID_NETWORK
36+
jsr XNETWORK_START_ROUTINE
37+
38+
39+
@do_not_destroy_socket:
40+
2941
; destroy process memory chunks
3042
; Try to find all malloc from this process
3143

@@ -47,16 +59,16 @@
4759
lda (RES),y ; A contains the PPID
4860

4961
; X contains the current PID to kill here clear struct
50-
sta kernel_process+kernel_process_struct::kernel_current_process
62+
sta kernel_process + kernel_process_struct::kernel_current_process
5163

5264

5365
; remove reference of process struct in the main struct
5466
lda #$00
55-
sta kernel_process+kernel_process_struct::kernel_one_process_struct_ptr_low,x
56-
sta kernel_process+kernel_process_struct::kernel_one_process_struct_ptr_high,x
67+
sta kernel_process + kernel_process_struct::kernel_one_process_struct_ptr_low,x
68+
sta kernel_process + kernel_process_struct::kernel_one_process_struct_ptr_high,x
5769

5870
; remove pid from ps list
59-
sta kernel_process+kernel_process_struct::kernel_pid_list,x ; Flush pidlist to 0 for the current index
71+
sta kernel_process + kernel_process_struct::kernel_pid_list,x ; Flush pidlist to 0 for the current index
6072

6173
lda RES
6274
ldy RES+1

src/include/network.inc

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@
77
.define KERNEL_BIND_NETWORK $06
88
.define KERNEL_CONNECT_NETWORK $07
99
.define KERNEL_RECV_NETWORK $08
10-
.define KERNEL_SEND_NETWORK $09
11-
.define KERNEL_SOCKET_CLOSE_NETWORK $0A
12-
13-
14-
10+
.define KERNEL_SEND_NETWORK $09
11+
.define KERNEL_SOCKET_CLOSE_NETWORK $0A
12+
.define KERNEL_SOCKET_CLOSE_FROM_PID_NETWORK $0B
1513

1614

1715
.define KERNEL_NETWORK_STATE_NOT_INITIALIZED $00

0 commit comments

Comments
 (0)