Login
Username:

Password:

Remember me



Lost Password?

Register now!

Sections

Who's Online
34 user(s) are online (27 user(s) are browsing Forums)

Members: 0
Guests: 34

more...

Support us!

Headlines

Forum Index


Board index » All Posts




Re: Bootarguments for Qemu AmigaOne install on Mac M1
Just can't stay away
Just can't stay away


@johnfante

yep, there still some issues, 'cos server(s) where updated.
Hope they will fixed ASAP.

Go to top


Re: Snork: New Tracing Tool for AmigaOS 4
Home away from home
Home away from home


@joerg
Quote:

to add support for international chars, for example the default ISO 8859-15 ones.
Unprintable control chars on AmigaOS, in any supported 8 bit charset, are only 0-31 and 127-159.


Good catch , thanks !

Btw, what is the best way to follow if we need to parse data in a patch ? At fist, i just doing simple parsing inside of the patch, and then print it before calling original function. Then after , i add some simple IPC via PutMsg() (from patch) /GetMsg() (in main).

At first i tried to simple send what i have to the main, but find out that strings and other data simple died offten (because patch is done, memory changes, but i tried to handle it in the main which is point on whatever else). Because of that i had to copy in the patch before putmsg whole set : libname, functionname, doing findtaks(null), copy strings and tags, and then send this instead. For copy i use IExec->CopyMem/IUtility->Strlcpy (that for libname, funcname and strings), and for tags i simple do simple loop copy.

The question i had now , is it correct way of doing things. I mean, for speed and for being correct at all. As i doing dynamic copy for each patching function, i do not need locks and mutexes, but not sure shouldn't i somehow protect it or not ?


Edited by kas1e on 2025/6/27 19:58:44
Join us to improve dopus5!
AmigaOS4 on youtube
Go to top


Re: Bootarguments for Qemu AmigaOne install on Mac M1
Just popping in
Just popping in


@jabirulo

Thank you! That is the version I am running.

Think this is some kind of server error.

Go to top


Re: Bootarguments for Qemu AmigaOne install on Mac M1
Just can't stay away
Just can't stay away


@johnfante

there is an update AmiUpdate v2.56:
http://www.codebench.co.uk/amiupdate_ ... /index.php?page=downloads

Think it fixes the amissl v5 issue.

Go to top


Re: Snork: New Tracing Tool for AmigaOS 4
Home away from home
Home away from home


@msteed
Quote:
Of course, if the string pointer is invalid the function you're calling will probably cause a DSI itself as soon as you call it. Still, there's some value to Snork not causing the DSI, even if there's going to be one an instant later anyway.
Some functions may work with invalid string pointers, depending on other arguments the string pointer may not be used at all by the function itself and if it isn't accessed there wont be a DSI.
But Snork would cause a DSI trying to print it.

Go to top


Re: Snork: New Tracing Tool for AmigaOS 4
Home away from home
Home away from home


@kas1e
Quote:
strncpy(output"NULL"output_size 1);
output[output_size 1] = '\0';
= strlcpy(output, "NULL", output_size);

strncpy() and strncat() should be replaced by strlcpy() and strlcat().

Quote:
} else if (input[i] >= 32 && input[i] <= 126) {
            
output[j++] = input[i];
Replace by
} else if ((input[i] >= 32 && input[i] <= 126) || (input[i] >= 160)) {
to add support for international chars, for example the default ISO 8859-15 ones.
Unprintable control chars on AmigaOS, in any supported 8 bit charset, are only 0-31 and 127-159.

Go to top


Re: Bootarguments for Qemu AmigaOne install on Mac M1
Just popping in
Just popping in


I managed to mount the CD (Qemu on mac has a GUI for that I found out), installed a browser and got going. Now running a Update 2 system with latest version of AmiUpdate and also updated RTL8139 devicedriver.

After Update 2 the system seems to run fine and stable.

However, I get the error below when I try to use AmiUpdate. Loads fine and finds the updates on the servers. However, it crashes when I try to update:

https://www.dropbox.com/scl/fi/6f4yeaj ... q6k8pi3zlp9emk5n5zpg&dl=0

Is that normal on Qemu? Or something that can be fixed? Maybe more RAM to the system?

Or can it be AmiSSL related? I have the latest 5.20 installed but do I need 4.12 also? I think I read that somewhere.

My bootargument is this:

qemu-system-ppc -machine amigaone -rtc base=localtime -serial stdio -vga none -device sm501 -drive media=disk,format=raw,file=amigahd.img -device rtl8139,addr=0x09,netdev=nic -netdev user,hostname=amigaone-os4,hostfwd=tcp::22220-:22,id=nic -rtc base=localtime -device loader,cpu-num=0,file=bboot -device loader,addr=0x600000,file=Kickstart.zip


Thank you!

Short update:

This seems like an AmiUpdate/server bug of some kind.

When I try to update from the Codebench.co.uk server it crashes with the DSI
When I update from the Hyperion server it downloads and install the updates fine except the two MUI updates

Examining the log it says "Redirection required, following link ...." when it crashes.

Can anyone alse confirm?


Edited by johnfante on 2025/6/27 10:19:51
Edited by johnfante on 2025/6/27 14:07:22
Edited by johnfante on 2025/6/27 14:47:33
Go to top


Re: Snork: New Tracing Tool for AmigaOS 4
Just popping in
Just popping in


@msteed

Quote:
Of course, if the string pointer is invalid the function you're calling will probably cause a DSI itself as soon as you call it. Still,
there's some value to Snork not causing the DSI, even if there's going to be one an instant later anyway.


Or (another suggestion) Snork doesn't pass the invalid pointer but passes on a valid string like "DEADSTRING\0". Than at least
no DSI , still the string could mess up other stuff. But still some additional steps before a potential crash.

Go to top


Re: Introducing the Rear Window blog
Amigans Defender
Amigans Defender


@all

Now on the Rear Window blog, my personal manifesto for the summer. Enjoy reading!

The Rear Window blog

AmigaOne X5000 @ 2GHz / 4GB RAM / Radeon RX 560 / ESI Juli@ / AmigaOS 4.1 Final Edition
SAM440ep-flex @ 667MHz / 1GB RAM / Radeon 9250 / AmigaOS 4.1 Final Edition
Go to top


Re: ScummVM and AmigaOS4.1 F.E.
Home away from home
Home away from home


Steffen would like to use the RetroArch version but it's not exactly the same, we'll need a maintainer who can compile the official version

Go to top


Re: Snork: New Tracing Tool for AmigaOS 4
Just popping in
Just popping in


@kas1e

Quote:
Should be enough imho even without IExec->TypeOfMem() ?

I think the idea behind using TypeOfMem() is to catch cases where the string pointer points to something that is not a valid RAM address, where trying to read the characters of the string will probably cause a DSI.

Of course, if the string pointer is invalid the function you're calling will probably cause a DSI itself as soon as you call it. Still, there's some value to Snork not causing the DSI, even if there's going to be one an instant later anyway.

If TypeOfMem() returns zero you can print the string pointer as a hex value, which lets the user see what value was passed and perhaps provides a clue as to what went wrong (assuming the ensuing crash doesn't take down the system).

Go to top


Re: Snork: New Tracing Tool for AmigaOS 4
Home away from home
Home away from home


@msteed
Quote:

For dealing with buggy pointers to something that's not a NUL-delimited string, I was thinking of something simple, like limiting the length that's printed to something reasonable, so you won't potentially get thousands of random characters until it happens to encounter a NUL.

In addition, you could filter the string to turn unprintable characters into periods (or some other character), so you won't possibly print an escape code or control character that interferes with the display of the snooped data. That would require making a copy of the string, since you don't want to alter the original.


For now i limited string to 256 chars, + checking on null and 0xffffffff, + checked on format characters so to printf them as it, without taking as formatting symbols, cheking on fancy characters and replace them to (so printable ASCII character only) , etc. So before show the string i just do this:

// Create a safe, quoted string representation for logging
void safe_string_representation(const char *inputchar *outputsize_t output_size) {
    if (!
input) {
        
strncpy(output"NULL"output_size 1);
        
output[output_size 1] = '\0';
        return;
    }
    if (
input == (CONST_STRPTR)0xFFFFFFFF) {
        
strncpy(output"0xFFFFFFFF"output_size 1);
        
output[output_size 1] = '\0';
        return;
    }
    
size_t j 0;
    if (
output_size 1) {
        
output[j++] = '"';
    }
    for (
size_t i 0input[i] && output_size 2i++) {
        if (
input[i] == '%') {
            if (
output_size 3) {
                
output[j++] = '%';
                
output[j++] = '%';
            }
        } else if (
input[i] == '"' || input[i] == '\\') {
            if (
output_size 3) {
                
output[j++] = '\\';
                
output[j++] = input[i];
            }
        } else if (
input[i] >= 32 && input[i] <= 126) {
            
output[j++] = input[i];
        } else {
            if (
output_size 3) {
                
output[j++] = '?';
            }
        }
    }
    if (
output_size 1) {
        
output[j++] = '"';
    }
    
output[j] = '\0';
    if (
>= output_size 1) {
        
output[output_size 1] = '\0';
    }
}


And then :

char safe_str[256];
                        
safe_string_representation((const char *)tag->ti_Datasafe_strsizeof(safe_str));
                        
IExec->DebugPrintF("  %s = %s\n"info->Namesafe_str);


Should be enough imho even without IExec->TypeOfMem() ?

Join us to improve dopus5!
AmigaOS4 on youtube
Go to top


Re: Snork: New Tracing Tool for AmigaOS 4
Just popping in
Just popping in


@kas1e

Quote:
Thanks for suggestions !

Thanks for implementing them!

Quote:
For string handling at minimum will do as Joerg says with IExec->TypeOfMem() , better than nothing (for now).

For dealing with buggy pointers to something that's not a NUL-delimited string, I was thinking of something simple, like limiting the length that's printed to something reasonable, so you won't potentially get thousands of random characters until it happens to encounter a NUL.

In addition, you could filter the string to turn unprintable characters into periods (or some other character), so you won't possibly print an escape code or control character that interferes with the display of the snooped data. That would require making a copy of the string, since you don't want to alter the original.

Quote:
Btw, added also new keyword for template %t - so you can output tags instead of pointer,

Nice; I hadn't even thought of that one. Looking forward to the next update!

Go to top


Re: ScummVM and AmigaOS4.1 F.E.
Just popping in
Just popping in


@khayoz

That's a pity. :(

I'll ping MagicSN, thanks for the info.

Go to top


Re: Snork: New Tracing Tool for AmigaOS 4
Home away from home
Home away from home


@all
Thanks for suggestions !

@Javier
Quote:

Just when you CTRL+C Snork just show a simple "Snork ended" on Shell/CLI (and maybe to serial outoput too).


Added, now it says start/end on both serial and console.

@msteed
Quote:

It would also be nice if it showed the name of the program making the call like OS4 Snoopy does, so you can see which calls are made by the program being debugged


Done, now output looks like this (some simple trace of few dos functions):

...
Task/ProcessWorkbench (0x62E0AB30) --> IDOS->Open(name="LOCALE:Catalogs/english_UTF-8/Sys/libs.catalog",accessMode=1005)
Task/ProcessWorkbench (0x62E0AB30) --> IDOS->AllocDosObject(type=0,tags=0x00000000)
Task/ProcessWorkbench (0x62E0AB30) --> IDOS->PRIVATEDoPkt32(port=0x6FDF5450,action=1005,arg1=411674462,arg2=415205712,arg3=409172995,arg4=0,arg5=409172995,arg6=0,arg7=0)
Task/ProcessWorkbench (0x62E0AB30) --> IDOS->PRIVATEDoPkt32(port=0x6FDF5450,action=1005,arg1=411674462,arg2=412428724,arg3=409172995,arg4=0,arg5=409172995,arg6=0,arg7=0)
Task/ProcessWorkbench (0x62E0AB30) --> IDOS->FreeDosObject(type=0,ptr=0x62269D78)
Task/ProcessWorkbench (0x62E0AB30) --> IDOS->IoErr()
Task/ProcessWorkbench (0x62E0AB30) --> IDOS->Open(name="LOCALE:Catalogs/english_US_ASCII/Sys/libs.catalog",accessMode=1005)
Task/ProcessWorkbench (0x62E0AB30) --> IDOS->AllocDosObject(type=0,tags=0x00000000)
Task/ProcessWorkbench (0x62E0AB30) --> IDOS->PRIVATEDoPkt32(port=0x6FDF5450,action=1005,arg1=411674462,arg2=415205712,arg3=409172995,arg4=0,arg5=409172995,arg6=0,arg7=0)
Task/ProcessWorkbench (0x62E0AB30) --> IDOS->PRIVATEDoPkt32(port=0x6FDF5450,action=1005,arg1=411674462,arg2=412428724,arg3=409172995,arg4=0,arg5=409172995,arg6=0,arg7=0)
Task/ProcessWorkbench (0x62E0AB30) --> IDOS->FreeDosObject(type=0,ptr=0x62269D78)
Task/ProcessWorkbench (0x62E0AB30) --> IDOS->IoErr()
Task/Processdopus_clock (0x61F8C1F0) --> IDOS->DateStamp(date=0x61A2ED44)
Task/ProcessELF Collector (0x6FDB57A0) --> IDOS->Delay(timeout=25)
Task/ProcessELF Collector (0x6FDB57A0) --> IDOS->Delay(timeout=25)
Task/Processdopus_clock (0x61F8C1F0) --> IDOS->DateStamp(date=0x61A2ED44)
Task/ProcessELF Collector (0x6FDB57A0) --> IDOS->Delay(timeout=25)
Task/ProcessELF Collector (0x6FDB57A0) --> IDOS->Delay(timeout=25)
Task/Processdopus_clock (0x61F8C1F0) --> IDOS->DateStamp(date=0x61A2ED44)
Task/ProcessELF Collector (0x6FDB57A0) --> IDOS->Delay(timeout=25)
Task/ProcessELF Collector (0x6FDB57A0) --> IDOS->Delay(timeout=25)
Task/Processdopus_clock (0x61F8C1F0) --> IDOS->DateStamp(date=0x61A2ED44)
Task/ProcessELF Collector (0x6FDB57A0) --> IDOS->Delay(timeout=25)
Task/ProcessELF Collector (0x6FDB57A0) --> IDOS->Delay(timeout=25)
Task/Processdopus_clock (0x61F8C1F0) --> IDOS->DateStamp(date=0x61A2ED44)
Task/ProcessELF Collector (0x6FDB57A0) --> IDOS->Delay(timeout=25)
Task/Processsnork (0x62E0A9B0) --> IDOS->Output()
Task/Processsnork (0x62E0A9B0) --> IDOS->IoErr()
Task/Processsnork (0x62E0A9B0) --> IDOS->IoErr()
Task/Processsnork (0x62E0A9B0) --> IDOS->Write(file=0x1839CFA8,buffer=0x60671000,length=51)
...


Also added 3 arguments now :

IDOS->Printf("Usage: %s [--help] [--script=<filename>] [--taskinfo=<yes|no>] [--show=<process name>]\n"argv[0]);
            
IDOS->Printf("  --help                Show this help message and exit\n");
            
IDOS->Printf("  --script=<filename>   Script file to parse (must end with .snork, default: main.snork)\n");
            
IDOS->Printf("  --taskinfo=<yes|no>   Show task/process info (default: yes)\n");
            
IDOS->Printf("  --show=<process name> Log only for specified process name (default: all processes)\n");
            
IDOS->Printf("Note: For process names with spaces, quote the entire argument, e.g., --show=\"ELF Collector\"\n");


So you can 1), enable/disable task names, 2) use any script you wish (default main.snork), 3) have output from any task you want.


For string handling at minimum will do as Joerg says with IExec->TypeOfMem() , better than nothing (for now).

ps. Btw, added also new keyword for template %t - so you can output tags instead of pointer, and then output will looks like this:

Snork started!
Task/ProcessWinFrame 1 Process (0x62907070) --> IDOS->Open(name="NIL:",accessMode=1005)
Task/ProcessWinFrame 1 Process (0x62907070) --> IDOS->CreateNewProc()
tags: (tags=0x61A58EE0)
  
NP_Seglist 0x1BFCF735
  NP_WindowPtr 
0x0
  NP_Error 
0x0
  NP_Path 
0x0
  NP_FreeSeglist 
FALSE
  NP_Input 
0x0
  NP_Output 
0x0
  NP_CloseInput 
FALSE
  NP_CloseOutput 
FALSE
  NP_CurrentDir 
0x0
  NP_ProgramDir 
0x0
  NP_Cli 
TRUE
  SYS_Asynch 
TRUE
  SYS_Input 
0x0
  SYS_Output 
0x0
  SYS_Error 
0x0
  SYS_UserShell 
TRUE
  NP_Path 
0x189539AC
  NP_CopyVars 
TRUE
  NP_Name 
"DuplicateShell"
  
NP_Priority 0
  NP_StackSize 
65536
  NP_ConsolePort 
0x0
  Processed 23 tags
Task
/ProcessDuplicateShell (0x62082830) --> IDOS->Open(name="console:",accessMode=1006)
Task/ProcessNewShell (0x62082830) --> IDOS->CreateNewProc()
tags: (tags=0x61A58100)
  
NP_Seglist 0x1BFCF735
  NP_FreeSeglist 
FALSE
  NP_StackSize 
65528
  NP_Cli 
TRUE
  NP_ProgramDir 
0x0
  NP_CloseInput 
FALSE
  NP_CloseOutput 
FALSE
  NP_CurrentDir 
0x0
  NP_Input 
0x0
  NP_Output 
0x0
  NP_CopyVars 
TRUE
  NP_Name 
"Shell Process"
  
Processed 12 tags


For that had to create a base of the tags for every library (as they can cross, in hope they will not).

And i also move all stuff to IPC now, i.e. in generic_patch just
now send the message and call to original, all loging/parsing happens in main's handleinput.

Join us to improve dopus5!
AmigaOS4 on youtube
Go to top


Re: Snork: New Tracing Tool for AmigaOS 4
Not too shy to talk
Not too shy to talk


@kas1e

Thank you for another one of your "coding adventure" tools!
Keep em coming.

1989-> A500, A600, A3000, A4000, A1200, CD32, µA1, PegII, A1XE, CDTV, Amy/416D79, A1X5000, Vampire 500 V2+, Vampire 600 V2, Amy-ITX, Denise ITX <-2024
Go to top


Re: ScummVM and AmigaOS4.1 F.E.
Not too shy to talk
Not too shy to talk


@Nuder_Try

Raziel isn't here anymore, he's alive but he left Amiga and Amigans.net a while ago sadly.. Talked to him in late May/early June and mentioned to him to contact @MagicSN about the ScummVM port.

1989-> A500, A600, A3000, A4000, A1200, CD32, µA1, PegII, A1XE, CDTV, Amy/416D79, A1X5000, Vampire 500 V2+, Vampire 600 V2, Amy-ITX, Denise ITX <-2024
Go to top


Re: G-Wars
Home away from home
Home away from home


@Rob

Quote:
MorphOS user have reported it to be running fine on their systems although one did have a problem with the player ship not being drawn correctly.


MorphOS try’s to have same clock ticks as a Amiga 500, while AmigaOS4 decided to have a higher precision clock based on real time clock, (so it’s not dived down.)

In any case if the game was not broken, timing should work, only Nova Coder can fix the bugs in his game..

And nobody else them him know how it should work in his game.


Edited by LiveForIt on 2025/6/26 16:01:42
Edited by LiveForIt on 2025/6/26 16:02:11
(NutsAboutAmiga)

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


Re: G-Wars
Home away from home
Home away from home


@Rob

There are many ways time kept in AmigaOS, one is timer.device, timer.device can measure time in cpu clock cycles ticks or milliseconds, ticks are synchronized to refresh rate, so ticks are not same between NTSC and PAL Amiga computers and therefore should not be assumed to be fixed number of clock cycles. Doing so is a bug.

This hack should slow down your clock cycles ticks to old Amiga 500 pal amiga.

https://os4depot.net/?function=showfil ... tility/misc/timerhack.lha

Another way to keep time is cia chip a/cia chip b timer a and b, if hardware banging is used for timing then NallePuh, it should fix timing..

WaitTOF in graphics library we talked about before, should sync to video modes refresh rate..

refresh rate is behind the “@” in screen modes, typical this are auto detected using DDC.. but custom screen modes can be added to the screen mode icons. Refresh rate is typically 60hz on LCD, on CRT it can be as high as 90Hz. Old school Amiga 500 is typical 25Hz/33Mhz, for TV syncing.

https://forum.amiga.org/index.php?topic=63099.0

(NutsAboutAmiga)

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


Re: Bootarguments for Qemu AmigaOne install on Mac M1
Quite a regular
Quite a regular


@johnfante
For inserting CD after boot see change command in QEMU Monitor https://www.qemu.org/docs/master/system/monitor.html or you could use the early startup menu as on real machine by holding both mouse buttons at the right moment during boot (around when the logo fades in but it may be hard to find when to do that, too early or too late may not work).
About USB shared folder see http://qmiga.codeberg.page/#faq you need the corresponding -drive option to define ufat but this is limited to small files and writing it does not really work so using network for file transfer is better.

Go to top



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




Powered by XOOPS 2.0 © 2001-2024 The XOOPS Project