Login
Username:

Password:

Remember me



Lost Password?

Register now!

Sections

Who's Online
94 user(s) are online (55 user(s) are browsing Forums)

Members: 1
Guests: 93

TiredOfLife, more...

Support us!

Headlines

Forum Index


Board index » All Posts (LiveForIt)




Re: Qemu + VFIO GPU RadeonRX 550 + AmigaOS4 extremely slow
Home away from home
Home away from home


@joerg

Pritty sure Hans added GART support, but I bet its only for PCIe not PCI.

Random google seartch.

http://www.amiga-news.de/en/news/AN-2024-04-00014-EN.html


Edited by LiveForIt on 2024/6/17 22:25:38
(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


Re: Free 1st Person Shooter for AmigaOne X5K with OS 4.1
Home away from home
Home away from home


@hotrod

EUAE/WHDLOAD is not the correct way run this games, sure X5000 is pretty fast, I really like to see more work on making Alien Bread 3D more system-friendly, its already halfway there.

(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


Re: Sound issue with A1222?
Home away from home
Home away from home


@dfstudios

I also had issues with AHI prefs from AEON, I’m also using the original that works.

(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


Re: A1222 Freezes when writing to the RAM DISK
Home away from home
Home away from home


@Maijestro

Ram Disk should be using a new feature called Memory Objects, this are in high memory, Physical memory above 2Gbytes, this will happen on hybrid 32bit/64bit CPU’s.
As I understand if you have two dims they need to be of the same type.

(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


Re: A1222 Freezes when writing to the RAM DISK
Home away from home
Home away from home


@smarkusg

I translated that from Polish to English, and I can see there is confusion about DSI.

DSI is not a question of runtime or Application,

Runtime is when program, application, game or OS is being used.
Compile time, is when developer makes the game. Uses GCC and produce the application.

DSI can occur during compile time or under runtime.
(sense the development tools are in runtime)

DSI is short for Data Storage Interrupt. And it happens because the OS supports memory protection, when programs write outside allocated memory, or into page null, the running tool, game, program, application, driver or OS will be halted at bug in the software.

Gram Repair provided as detailed information about crash as it can get, and you send that developer, who wrote the software.

There are also other confusions I see all the time on forum, I keep seeing: people with no knowledge of this, are saying.

“AmigaOS does not have memory protection because X program crashes, and bring down the OS“

As I wrote above that is incorrect.
The reason why a crash can bring down AmigaOS, is because the stack is not isolated per Process/Task, like it’s on UNIX. On UNIX the stack is virtual, always at the same memory address, no matter if the stack content is different on a different process, stack is not shared. On AmigaOS the stack is in shared memory, and IPC is shared and lots of other tables, this means that they can easily be corrupted. the shall stack and process stack is one and the same, it is cleared, however, when running a different command. (At least you can’t snoop it from the same shell.)

On AmigaOS4.1
“The Stack” is always shared memory.
“the heap” is shred or private memory (can be virtual)


Edited by LiveForIt on 2024/6/8 9:54:33
Edited by LiveForIt on 2024/6/8 10:02:16
(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


Re: VARARGS vs TAGLIST
Home away from home
Home away from home


@Hypex


Fix length, is not that good, I agree alligment is issue.
making it smaller then 32bit, like 16bit or 8bit will sure create alligment issue, but sizeof(char)

// perhaps something like.

#define sizeof_alligned(x) (sizeof(x) & 3 ? ((sizeof(x) + 4) & -4) : sizeof(x))

Char *ptr .;

type = *((uint32 *) ptr); ptr+=4;
while(
type != TAG_END
{
   switch (
type)
   {
     case 
is_64bit_value:
                
value64 = *((uint64*) (ptr)); ptr+=8; break;

     case 
is_32bit_value:
                
value32 = *((uint32*) (ptr)); ptr+=4; break;
   }
   
type = *((uint32*) ptr); ptr+=4;
}



The natural alternative to tag lists and var_args is overloaded methods.
by definition function pointer is almost the same as virtual method, it’s a small jump from current implementation of AmigaOS4.1 interfaces.

C code, can be compiled by C++ compiler, so OS4.1 does not need to support C compiler anymore.

with over loaded methods, you do not need type argument, type and data argument, it already defined in the language standard. No need to interpret tag list, or var args to see what they contain.

var args and tag list will ways be slow, because they are in a array, or on stack. technical overloaded methods also are on stack, but type is known beforehand, sure it’s less flexible as you need to extend number of methods, to cope with different arguments.


Edited by LiveForIt on 2024/5/15 20:47:29
Edited by LiveForIt on 2024/5/16 12:25:25
Edited by LiveForIt on 2024/5/16 12:26:05
Edited by LiveForIt on 2024/5/16 12:26:44
Edited by LiveForIt on 2024/5/16 12:28:35
Edited by LiveForIt on 2024/5/16 12:49:24
(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


Re: VARARGS vs TAGLIST
Home away from home
Home away from home


@Hypex

Quote:
But 64 bit is really only needed for a 64 bit CPU with 64 bit addresses.


Oh no… I think you lack creativity, or perhaps your confusing size of data bus with the size of address bus?

64bit is faster at moving data, then 32bit.. fewer operations obviously.

and you can do wince the amount in fewer operations like SIMD.

ptr32[0]=<<1;
ptr32[1]=<<1;


can be replaced by:

*ptr64=<<1;


Another example of its usfullness is lookup tables like;

uint64 Lookup[1<<16];


imagine you are looking up 2 bytes and want convert this int two 32bit values.

Doubles has higher precision then a float, obvious better for precision mathematics, image rendering, science, etc..


Edited by LiveForIt on 2024/5/14 23:09:36
(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


Re: developing amiga 68000 clone
Home away from home
Home away from home


@kerravon

This is what the JIT compiler and stubs do on AmigaOS4.1.

there is also a project called VAMOS that allows you run simple programs on Windows/Linux.

as your probably already know older stuff from 80’s requires chipset emulation, so VAMOS is limited to simple commands. Even stuff from 90’s need chipset emulation as well, late 90’s you get more system friendly programs, but fewer, with often bugs do lack of MMU on many 68K systems they were developed on. unless you have source code to 68K programs your not going to get anywhere sadly.

If you want to help out, ask around for source code, and start replacing Puala routines, with AHI Routines and fix the bugs in the software.

(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


Re: Hello!
Home away from home
Home away from home


@dfstudios

Congratulations to you, and welcome, hope you stay longer this time.

(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


Re: VARARGS vs TAGLIST
Home away from home
Home away from home


@Hypex

Quote:
But AmigaOS doesn't traditionally pass floats in library functions


I’m really not sure why that is, but I can imagine it’s because of the choice of ABI, that uses register passing, and most 680x0 cpu did not have FPU they run into little problem, even so, it can be passed on standard A0-A7 registers, perhaps an address a float, or double instead of value of. Some functions use fix float type, where decimal point is moved to a fixed position on a integer.

Quote:
As well as the A1222 having nonstandard FPU. The taglist is restricted to 32 bit words and has been criticised for being unable so support 64 bit types directly. It is however designed to be key/value system with pointers.


But you can do the same with var args,

type=va_var(args,int); // type
value=va_var(args,double); // value

double is the same size as uint64.
value=va_var(args,uint64); // value

or perhaps a class that can do the set and get stuff internally using inline assembly, or soft float.
Quote:
Tags do have flags so they could be extended but that would involve extending to 64 bits, either to mixed or 64 only. Tags have flags lol.


they can be variable length as with var args, technically, its question how does it initialize memory, it won’t as simple as setting up an array (I come back to this later).

how do you read it. the reading parts is simple use macros like var_arg(args,type) do.

tags lists advantage is of course it can be setup it once at top of the code,
and forgotten it, while var args, has to be built on stack in place, every time you call a function.

I think you can write taglist initialize function that takes var args as parameter.
this can be as easy as calculate size, allocate memory and copy memory from stack to your local array.

see va_copy() macro.

(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


VARARGS vs TAGLIST
Home away from home
Home away from home


Continuing here, as we are going of topic.

See: https://www.amigans.net/modules/newbb/ ... id=148428#forumpost148428

Quote:

@LiveForIt

Well, the ABI does allow for floats to be passed. And it is efficient to use registers since it needs to be calculated in FPRs. But AmigaOS doesn't traditionally pass floats in library functions. As well as the A1222 having non standard FPU. The taglist is restricted to 32 bit words and has been criticised for being unable so support 64 bit types directly. It is however designed to be key/value system with pointers. Tags do have flags so they could be extended but that would involve extending to 64 bits, either to mixed or 64 only. Tags have flags lol.

(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


Re: Tracing
Home away from home
Home away from home


@Hypex

Perhaps the fact that doubles, floats are passed on stack, can make it easier to use the same API for A1222 and any other PowerPC computers. having to store it in register, just makes it harder.

(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


Re: Tracing
Home away from home
Home away from home


@joerg

Nah... use mutex instead, around debug printf, mutex should be forbid() free..
at least that was what we were told.

Using forbid has no advantage,

imagine a different task that print half a line without using forbid, now your task invokes forbid() and DebugPrintF, and Permit(), the other task, will continue after permit(), and the text will look bad.

perhaps patching DebugPrintF so it uses a mutex can do the trick, then the lock becomes global.

(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


Re: My Amiga Projects
Home away from home
Home away from home


@joerg

EUAE has built in debuger, so if want to freeze a 68K program or something you can use EUAE for that. EUAE’s built in debugger is not unlike action replay.

(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


Re: My Amiga Projects
Home away from home
Home away from home


@davec555

Grim Reaper is good debugging tool, the stack trace feature is really useful
a rs232 serial cable is also useful, if game or program crash while doing intuition lock, or bitmap lock, or some other lockup.
Spotless is nice debuging tool as well.
DumpDebugBuffer command.


Edited by LiveForIt on 2024/5/8 18:45:07
(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


Re: Tracing
Home away from home
Home away from home


@Kas1e

Bits might not be so obvious, for some who has coded Javascript, or never learned anything about digital processing.

bits are in order: (highest) 31 to (lowest) 0, importent when want to shift bits right or left.

just like you have 1000's, 100's and 10's and 1's in the descimal system.
it's place in binrary number thats set to active or 1, 0 is not active.

bit     5,  4,  3,  2,  1,  0
state off
,off,off,offOn,off


bit 0, if 1 its on, 0 is off, if ON it has value 1 in decimal system
bit 1, if 1 its on, 0 is off, if ON it has value 2 in decimal system
bit 2, if 1 its on, 0 is off, if ON it has value 4 in decimal system
bit 3, if 1 its on, 0 is off, if ON it has value 8 in decimal system
bit 4, if 1 its on, 0 is off, if ON it has value 16 in decimal system
bit 5, if 1 its on, 0 is off, if ON it has value 32 in decimal system

And so on.. the combination gives you any decimal number.

So when we taking about the signal it has value, bit it has also location in binrary number, this is the bit.

if more than one signal is set, then more than one bit is set, this is why you are geting a different value, when you’re reading the state of the task.


Edited by LiveForIt on 2024/5/8 17:20:15
Edited by LiveForIt on 2024/5/8 17:21:08
Edited by LiveForIt on 2024/5/8 18:36:53
Edited by LiveForIt on 2024/5/8 18:37:47
Edited by LiveForIt on 2024/5/8 18:38:13
(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


Re: Tracing
Home away from home
Home away from home


never mind

(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


Re: Tracing
Home away from home
Home away from home


@kas1e

>You need to make the trace collection function not depend on any globals and pass the process id to trace via a message

That won’t really work, by the time you get message, the task your monitoring is at different location in its program. So you will probably get poor stack traces.

(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


Re: Tracing
Home away from home
Home away from home


@kas1e

perhaps you should add

SetSignal( main_task, wakeup_signal );

in your trap, to notify you have something to do, instead of busy looping.

Then use wait in your main() function, as you should.

ActiveSignals = wait(1L << wakeup_singal | CTRLC );

Also you should check if your in forbid or not, as this can give you the option to freeze the trapped task, for a better stack trace. just restart it in main()

(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top


Re: Tracing
Home away from home
Home away from home


@Hypex

I don’t know why you want your code to have more likely bugs.

&ptr->member;

is the same as

(struct *)((char *) ptr + offsetof(struct,member))

now image you pointer is NULL, first is offset 0, 2en is offset 4, now image if member is 2en.

this means you have something like this:

if ((ptr+4) == NULL)

And this will never be NULL

The only thing you need to do, to screw up your code, is add a new member at the beginning of your struct, and your code breaks.

(NutsAboutAmiga)

Basilisk II for AmigaOS4
AmigaInputAnywhere
Excalibur
and other tools and apps.
Go to top



TopTop
(1) 2 3 4 ... 183 »




Powered by XOOPS 2.0 © 2001-2023 The XOOPS Project