![]() |
![]() |
#1 |
Registered User
Join Date: Nov 2009
Location: Top of the world
Posts: 188
|
MuForce and MuGA hit when using NOSTARTUP in SAS/C, Why?
I was trying to convert some small very simple test programs to compile without startup-code and started encountering some strange errors.
So I made a copy of "sc:examples/nostartup/Example_2" and compiled it, and ran it like "hello >ser:" I got no errors. But if I change it from: Code:
#include <string.h> #include <proto/dos.h> #include <proto/exec.h> #define MSG "Hello, World!\n" void hello(void) { struct DosLibrary *DOSBase = (struct DosLibrary *)OpenLibrary("dos.library", 0L); Write(Output(), MSG, strlen(MSG)); CloseLibrary((struct Library *)DOSBase); Code:
#include <string.h> #include <proto/dos.h> #include <proto/exec.h> #define MSG "Hello, World!\n" struct DosLibrary *DOSBase; void hello(void) { DOSBase = (struct DosLibrary *)OpenLibrary("dos.library", 0L); Write(Output(), MSG, strlen(MSG)); CloseLibrary((struct Library *)DOSBase); } Code:
Hello, World! *MuForce Hit LONG READ from 00A1A0E0 PC: 080BED5A USP : 08074EE4 SR: 0000 (U0)(-)(-) TCB: 08074018 Data: 00A1A0E4 00A1A0E4 08011310 08074ECC 00000001 022854CB 00000001 080750F8 Addr: 08036D48 00A1A0E0 08011458 08074074 08A2B3F0 00F9574C 08000884 080022A4 Stck: 00F9600A 00000000 00000000 00001000 08077740 00000001 022854CB 00000001 Stck: 0228A3C9 08077741 08A28F25 08A28F24 0800DC1C 08075158 08074062 08074F6C Stck: 00F97EF4 0000000C 00001000 08077740 00000001 022874E7 0201D83F 02003707 Stck: 08073F3D 08074018 08074FE4 08011310 0000000C 02003707 08A1C7C4 022874E7 Stck: 00001000 08077740 00000001 08075108 00000000 08074000 00FCAA7E 00001000 Stck: 00000000 00000000 00000010 00000000 022874E7 00000000 08073FAC 00000000 Stck: 08074018 08074FF8 0000000A 08070D44 00000000 022874E7 0807517C 00FCA4D2 Stck: 00000004 FFFFFFFF 00000001 FFFFFFFF 08063EBC 08074018 08011310 022874E7 Stck: 00000000 022871F1 00000000 00000000 00000000 00010001 00000000 0000000A Stck: 00000000 00000000 00FC91B6 00000000 00000000 00000000 00F95B76 08073F3C Stck: 08063EBC 08011310 00FC8AA8 003F4A8F FFFFFFFE 00000027 003F4A8F 0000009C Stck: 00F95B76 00000000 00000000 00000000 08000884 00000027 00F9CC18 08000884 Stck: 00F97DE0 0000009C 00F95B76 00000000 00FC85E8 08011310 00F95E1C 00FCAF10 Stck: 003F4A8F FFFFFFFE 00000000 00000000 08011310 00FC8250 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 08074018 00000000 08063EBC 08075158 08074018 00000F84 00000000 00000001 Stck: 00FC7E92 00000000 00FC7DE8 08074018 00F959F8 00001000 496E6974 69616C20 Stck: 434C4900 08074000 08074062 00000000 00000001 08075120 00000014 00000002 Stck: 003E5535 003E7434 00000000 003F1F79 00000000 08076D90 00000020 08075144 Stck: 08075148 0807514C 08075150 08075154 08075158 00000000 00000000 00000000 Stck: 00000000 00000000 08077628 00000006 08077640 00000100 08077740 00000100 Stck: 00000000 00000000 00000000 00000000 08076A90 08076B90 0000000C 08076BB0 Stck: 0000000B 08076BA0 0000000B 08000884 08011310 08005068 00000000 00000049 Stck: FFFFFFFD 68656C6C 6F000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 FFFFFFFD 0000008C 00000001 Stck: 00004281 0000024D 00000930 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 003F4AC5 003F4A8F 003F4A9D 003F4ABB 003F4AC7 00000000 00000000 00000000 Stck: 00000000 00000000 08076C40 0000000C 0000000C 08076C40 00000100 08076990 Stck: 000000DE 00000000 00000000 00000000 00000000 00000F84 00000000 080760E0 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00004000 Stck: 00000000 43000100 0000002C 00000002 4E6F7374 61727475 70000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000002 00001000 00000008 00004281 0000024D 00000930 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 436F6465 3A432D43 6F64652F 4E6F7374 61727475 Stck: 702F006E 666F0074 2F006E66 6F000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 434F4E00 08A0A6FC 08073D50 08077958 080778B8 Stck: 080778B8 08076C4E 00030000 08077966 080778B8 00000015 00000001 08A199C8 Stck: 00000038 080778B8 00000024 00000000 00000000 080755BC 00000000 080755B8 Stck: 08A19870 00000000 08A19918 00000000 00000002 02003707 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 ----> 080BED5A - "SYS:System/MuTools/MuGuardianAngel" Hunk 0000 Offset 00001FCA ----> 00F9600A - "ROM - dos 47.30 (2.12.2021)" Hunk 0000 Offset 00000B02 ----> 00F97EF4 - "ROM - dos 47.30 (2.12.2021)" Hunk 0000 Offset 000029EC ----> 00FCAA7E - "ROM - shell 47.48 (29.9.2021)" Hunk 0000 Offset 00002C72 ----> 00FCA4D2 - "ROM - shell 47.48 (29.9.2021)" Hunk 0000 Offset 000026C6 ----> 00FC91B6 - "ROM - shell 47.48 (29.9.2021)" Hunk 0000 Offset 000013AA ----> 00F95B76 - "ROM - dos 47.30 (2.12.2021)" Hunk 0000 Offset 0000066E ----> 00FC8AA8 - "ROM - shell 47.48 (29.9.2021)" Hunk 0000 Offset 00000C9C ----> 00F95B76 - "ROM - dos 47.30 (2.12.2021)" Hunk 0000 Offset 0000066E ----> 00F9CC18 - "ROM - dos 47.30 (2.12.2021)" Hunk 0000 Offset 00007710 ----> 00F97DE0 - "ROM - dos 47.30 (2.12.2021)" Hunk 0000 Offset 000028D8 ----> 00F95B76 - "ROM - dos 47.30 (2.12.2021)" Hunk 0000 Offset 0000066E ----> 00FC85E8 - "ROM - shell 47.48 (29.9.2021)" Hunk 0000 Offset 000007DC ----> 00F95E1C - "ROM - dos 47.30 (2.12.2021)" Hunk 0000 Offset 00000914 ----> 00FCAF10 - "ROM - shell 47.48 (29.9.2021)" Hunk 0000 Offset 00003104 ----> 00FC8250 - "ROM - shell 47.48 (29.9.2021)" Hunk 0000 Offset 00000444 ----> 00FC7E92 - "ROM - shell 47.48 (29.9.2021)" Hunk 0000 Offset 00000086 ----> 00FC7DE8 - "ROM - gameport 47.1 (4.8.2019)" Hunk 0000 Offset 00000A38 ----> 00F959F8 - "ROM - dos 47.30 (2.12.2021)" Hunk 0000 Offset 000004F0 PC-8: 0DDC588F 70004E75 48E7FFFC 601A2009 660E203C ABADF00D 22002040 22404E75 PC *: 202148E7 FFFC7200 41EF0038 4BF9080C 11482848 28012400 47ED0070 2449BFEE 080becda : 6100 0e3a bsr $80bfb16 080becde : 6028 bra.s $80bed08 080bece0 : 2203 move.l d3,d1 080bece2 : 203c 7fff fff0 move.l #$7ffffff0,d0 080bece8 : 6100 f894 bsr $80be57e 080becec : 601a bra.s $80bed08 080becee : 4a2d 0114 tst.b $114(a5) 080becf2 : 6714 beq.s $80bed08 080becf4 : 91c8 suba.l a0,a0 080becf6 : 203c 080c 0c57 move.l #$80c0c57,d0 080becfc : 224c movea.l a4,a1 080becfe : 7201 moveq.l #$1,d1 080bed00 : 2f06 move.l d6,-(a7) 080bed02 : 6100 0e12 bsr $80bfb16 080bed06 : 588f addq.l #$4,a7 080bed08 : 242e 0114 move.l $114(a6),d2 080bed0c : 6712 beq.s $80bed20 080bed0e : 2042 movea.l d2,a0 080bed10 : 0c28 000d 0008 cmpi.b #$d,$8(a0) 080bed16 : 6606 bne.s $80bed1e 080bed18 : 7267 moveq.l #$67,d1 080bed1a : 2141 0094 move.l d1,$94(a0) 080bed1e : 7400 moveq.l #$0,d2 080bed20 : 6100 0c42 bsr $80bf964 080bed24 : 2002 move.l d2,d0 080bed26 : 4e75 rts 080bed28 : 203c 080c 0e09 move.l #$80c0e09,d0 080bed2e : 224c movea.l a4,a1 080bed30 : 7200 moveq.l #$0,d1 080bed32 : 4879 080c 09f8 pea.l $80c09f8 080bed38 : 6100 0ddc bsr $80bfb16 080bed3c : 588f addq.l #$4,a7 080bed3e : 7000 moveq.l #$0,d0 080bed40 : 4e75 rts 080bed42 : 48e7 fffc movem.l d0-a5,-(a7) 080bed46 : 601a bra.s $80bed62 080bed48 : 2009 move.l a1,d0 080bed4a : 660e bne.s $80bed5a 080bed4c : 203c abad f00d move.l #-$54520ff3,d0 080bed52 : 2200 move.l d0,d1 080bed54 : 2040 movea.l d0,a0 080bed56 : 2240 movea.l d0,a1 080bed58 : 4e75 rts 080bed5a : *2021 move.l -(a1),d0 080bed5c : 48e7 fffc movem.l d0-a5,-(a7) 080bed60 : 7200 moveq.l #$0,d1 080bed62 : 41ef 0038 lea.l $38(a7),a0 080bed66 : 4bf9 080c 1148 lea.l $80c1148,a5 080bed6c : 2848 movea.l a0,a4 080bed6e : 2801 move.l d1,d4 080bed70 : 2400 move.l d0,d2 080bed72 : 47ed 0070 lea.l $70(a5),a3 080bed76 : 2449 movea.l a1,a2 080bed78 : bfee 003a cmpa.l $3a(a6),a7 080bed7c : 6508 bcs.s $80bed86 080bed7e : bfee 0036 cmpa.l $36(a6),a7 080bed82 : 6500 01be bcs $80bef42 080bed86 : 6100 0b52 bsr $80bf8da 080bed8a : 6100 f788 bsr $80be514 080bed8e : 220a move.l a2,d1 080bed90 : 6700 0084 beq $80bee16 080bed94 : 0201 0007 andi.b #$7,d1 080bed98 : 6600 00a4 bne $80bee3e 080bed9c : 4a82 tst.l d2 080bed9e : 6700 008a beq $80bee2a 080beda2 : 220c move.l a4,d1 080beda4 : 6700 014a beq $80beef0 080beda8 : 2054 movea.l (a4),a0 080bedaa : b1ed 0018 cmpa.l $18(a5),a0 080bedae : 6508 bcs.s $80bedb8 080bedb0 : b1ed 001c cmpa.l $1c(a5),a0 080bedb4 : 6300 013a bls $80beef0 080bedb8 : 2602 move.l d2,d3 080bedba : 264a movea.l a2,a3 080bedbc : 202d 0044 move.l $44(a5),d0 080bedc0 : d4ad 00f8 add.l $f8(a5),d2 080bedc4 : d0ad 00f4 add.l $f4(a5),d0 080bedc8 : 5e82 addq.l #$7,d2 080bedca : 95c0 suba.l d0,a2 080bedcc : 0202 00f8 andi.b #-$8,d2 080bedd0 : d480 add.l d0,d2 080bedd2 : 204a movea.l a2,a0 080bedd4 : 6100 0ec0 bsr $80bfc96 080bedd8 : 2c55 movea.l (a5),a6 Name: "Initial CLI" CLI: "hello" SegList is invalid!!! *MuGuardianAngel Hit Null-sized FreeMem, ignored. PC : 00f9600a USP: 08074ee8 ( )( ) Name: hello ----> 00f9600a - "ROM - dos 47.30 (2.12.2021)" Hunk 0 Offset 00000b02 Data: 00000000 00a1a0e4 08011310 08074ecc 00000001 022854cb 00000001 080750f8 Addr: 08036d48 00a1a0e0 08011458 08074074 08a2b3f0 00f9574c SysBase -------- Stck: 00000000 00000000 00001000 08077740 00000001 022854cb 00000001 0228a3c9 Stck: 08077741 08a28f25 08a28f24 0800dc1c 08075158 08074062 08074f6c 00f97ef4 Stck: 0000000c 00001000 08077740 00000001 022874e7 0201d83f 02003707 08073f3d Stck: 08074018 08074fe4 08011310 0000000c 02003707 08a1c7c4 022874e7 00001000 Stck: 08077740 00000001 08075108 00000000 08074000 00fcaa7e 00001000 00000000 Stck: 00000000 00000010 00000000 022874e7 00000000 08073fac 00000000 08074018 Stck: 08074ff8 0000000a 08070d44 00000000 022874e7 0807517c 00fca4d2 00000004 Stck: ffffffff 00000001 ffffffff 08063ebc 08074018 08011310 022874e7 00000000 Stck: 022871f1 00000000 00000000 00000000 00010001 00000000 0000000a 00000000 Stck: 00000000 00fc91b6 00000000 00000000 00000000 00f95b76 08073f3c 08063ebc Stck: 08011310 00fc8aa8 003f4a8f fffffffe 00000027 003f4a8f 0000009c 00f95b76 Stck: 00000000 00000000 00000000 08000884 00000027 00f9cc18 08000884 00f97de0 Stck: 0000009c 00f95b76 00000000 00fc85e8 08011310 00f95e1c 00fcaf10 003f4a8f Stck: fffffffe 00000000 00000000 08011310 00fc8250 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 08074018 Stck: 00000000 08063ebc 08075158 08074018 00000f84 00000000 00000001 00fc7e92 Stck: 00000000 00fc7de8 08074018 00f959f8 00001000 496e6974 69616c20 434c4900 Stck: 08074000 08074062 00000000 00000001 08075120 00000014 00000002 003e5535 Stck: 003e7434 00000000 003f1f79 00000000 08076d90 00000020 08075144 08075148 Stck: 0807514c 08075150 08075154 08075158 00000000 00000000 00000000 00000000 Stck: 00000000 08077628 00000006 08077640 00000100 08077740 00000100 00000000 Stck: 00000000 00000000 00000000 08076a90 08076b90 0000000c 08076bb0 0000000b Stck: 08076ba0 0000000b 08000884 08011310 08005068 00000000 00000049 fffffffd Stck: 68656c6c 6f000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 fffffffd 0000008c 00000001 00004281 Stck: 0000024d 00000930 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000 Stck: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 003f4ac5 Stck: 003f4a8f 003f4a9d 003f4abb 003f4ac7 00000000 00000000 00000000 00000000 ----> 00f97ef4 - "ROM - dos 47.30 (2.12.2021)" Hunk 0 Offset 000029ec ----> 00fcaa7e - "ROM - shell 47.48 (29.9.2021)" Hunk 0 Offset 00002c72 ----> 00fca4d2 - "ROM - shell 47.48 (29.9.2021)" Hunk 0 Offset 000026c6 ----> 00fc91b6 - "ROM - shell 47.48 (29.9.2021)" Hunk 0 Offset 000013aa ----> 00f95b76 - "ROM - dos 47.30 (2.12.2021)" Hunk 0 Offset 0000066e ----> 00fc8aa8 - "ROM - shell 47.48 (29.9.2021)" Hunk 0 Offset 00000c9c ----> 00f95b76 - "ROM - dos 47.30 (2.12.2021)" Hunk 0 Offset 0000066e ----> 00f9cc18 - "ROM - dos 47.30 (2.12.2021)" Hunk 0 Offset 00007710 ----> 00f97de0 - "ROM - dos 47.30 (2.12.2021)" Hunk 0 Offset 000028d8 ----> 00f95b76 - "ROM - dos 47.30 (2.12.2021)" Hunk 0 Offset 0000066e ----> 00fc85e8 - "ROM - shell 47.48 (29.9.2021)" Hunk 0 Offset 000007dc ----> 00f95e1c - "ROM - dos 47.30 (2.12.2021)" Hunk 0 Offset 00000914 ----> 00fcaf10 - "ROM - shell 47.48 (29.9.2021)" Hunk 0 Offset 00003104 ----> 00fc8250 - "ROM - shell 47.48 (29.9.2021)" Hunk 0 Offset 00000444 ----> 00fc7e92 - "ROM - shell 47.48 (29.9.2021)" Hunk 0 Offset 00000086 ----> 00fc7de8 - "ROM - gameport 47.1 (4.8.2019)" Hunk 0 Offset 00000a38 ----> 00f959f8 - "ROM - dos 47.30 (2.12.2021)" Hunk 0 Offset 000004f0 PC-8: 0010265f 275fffe2 275fffde 27470054 2f009282 59812241 2c780004 4eaefd4e PC *: 201f275f 00704cdf 7ffc2200 4e7570ff 60f06100 fd122028 00545980 2e402001 00f95fea : 0010 265f ori.b #$5f,(a0) 00f95fee : 275f ffe2 move.l (a7)+,-$1e(a3) 00f95ff2 : 275f ffde move.l (a7)+,-$22(a3) 00f95ff6 : 2747 0054 move.l d7,$54(a3) 00f95ffa : 2f00 move.l d0,-(a7) 00f95ffc : 9282 sub.l d2,d1 00f95ffe : 5981 subq.l #$4,d1 00f96000 : 2241 movea.l d1,a1 00f96002 : 2c78 0004 movea.l $4.w,a6 00f96006 : 4eae fd4e jsr -$2b2(a6) 00f9600a : *201f move.l (a7)+,d0 00f9600c : 275f 0070 move.l (a7)+,$70(a3) 00f96010 : 4cdf 7ffc movem.l (a7)+,d2-a6 00f96014 : 2200 move.l d0,d1 00f96016 : 4e75 rts 00f96018 : 70ff moveq.l #-$1,d0 00f9601a : 60f0 bra.s $f9600c 00f9601c : 6100 fd12 bsr $f95d30 00f96020 : 2028 0054 move.l $54(a0),d0 00f96024 : 5980 subq.l #$4,d0 00f96026 : 2e40 movea.l d0,a7 00f96028 : 2001 move.l d1,d0 The compile options used are: Code:
PARAMETERS=REGISTERS NOSTACKCHECK STRINGMERGE OPTIMIZE LINK SMALLCODE SMALLDATA STRIPDEBUG NOSTARTUP I tried compiling with DEBUG=FULL, but that did not change much in hit-output. Attaching that log. Also the behavior is identical without console redirection to ser:. What am I missing here? -Hagbard Celine |
![]() |
![]() |
#2 | |
bye
Join Date: Jun 2016
Location: Some / Where
Posts: 696
|
Quote:
You are using the smalldata model, where a4 is used, but not initialized. |
|
![]() |
![]() |
#3 |
Registered User
Join Date: Nov 2009
Location: Top of the world
Posts: 188
|
Ah thank you, I had a feeling it was something embarrassingly simple. Adding SAVEDS to compile options fixed it.
Going to crawl under the nearest rock now ![]() ![]() ![]() -Hagbard Celine |
![]() |
![]() |
#4 |
Natteravn
Join Date: Nov 2009
Location: Herford / Germany
Posts: 2,581
|
The first which came into my mind was that you didn't initialize SysBase.
But I seem to remember that SAS/C's exec-inlines read the base directly from Chip-RAM address 4 instead of SysBase (which is not optimal)? Anyway, a portable source text without startup-code should better initialize SysBase. ![]() |
![]() |
![]() |
#5 | ||
Registered User
Join Date: Nov 2009
Location: Top of the world
Posts: 188
|
Quote:
But unless you make an active choice to change it, it uses address 4. Quote:
Personally I blame this whole thread on bad example code. I actually read the manual section about no startup-code several times before posting here. My error was assuming that, since the manual uses two out of eight bullet-points to state that you must use __saveds on first function, the examples missing it must in code must mean they have it is SCOPTIONS since they are all single-function. If I'd actually read the SCOPTIONS instead of just pasting them in my post, the world might have been spared of this thread. ![]() |
||
![]() |
Currently Active Users Viewing This Thread: 1 (0 members and 1 guests) | |
Thread Tools | |
![]() |
||||
Thread | Thread Starter | Forum | Replies | Last Post |
VirusZ crashes but not when booting from the backup partition, MuForce log included. | shelter | support.Apps | 5 | 11 March 2023 12:50 |
Using Enforcer/MuForce on WinUAE | Honitos | support.WinUAE | 4 | 16 April 2022 10:02 |
ZZ9000 MuForce/MuGa Hit when executing Monitor Driver | my_pc_is_amiga | support.Other | 8 | 02 April 2022 10:34 |
Diagnosing MuForce hits from ROM code? | Warty | Coders. System | 9 | 14 December 2020 16:10 |
using MuForce with a bridgeboard | SimonV | support.Hardware | 6 | 19 December 2019 18:47 |
|
|