Who's Online |
62 user(s) are online ( 33 user(s) are browsing Forums)
Members: 1
Guests: 61
BCP,
more...
|
|
|
|
Re: Enhancer 2.2 Freezes X5K during installation
|
|
Just popping in 
|
Hi AmigaSociety, Not sure if you already did it, or have the equipment to do so, but I would try to capture the serial output of the X5000 on a second computer. You would need a null model cable and maybe a USB to RS232 converter. I permanently hooked up my X5000 to another PC to get the stack traces if my X5000 crashes. That is really helpful if the X5000 freezes, as most of the time one program crashed and took the entire OS with it. This might help you with setting it up: https://wiki.amigaos.net/wiki/Advanced_Serial_Debugging_Guide
|
|
|
|
Re: Trouble building GCC 11 cross-compiler on Ubuntu
|
|
Just popping in 
|
Regarding the missing include from the SDK, this can happen if you have a broken lha installed in Ubuntu. All versions that come with Ubuntu do not work correctly. This should be a working version, but you need to install it manually (download, ./configure, make install, ...): https://github.com/jca02266/lha
|
|
|
|
Re: Debugging on os4
|
|
Just popping in 
|
If you try to debug programs on a X5000 you are out of luck anyway. The stock kernel on a X5000 is broken and prevents any debugger (gdb, DB101 or Spotless) to work. As kas1e says, printf/kprintf/IExec->DebugPrintF are your friends. And maybe that helps you finding the problematic line of code after a crash: https://wiki.amigaos.net/wiki/Using_Crash-Logs_for_Debugging
|
|
|
|
Re: Strange crash with Enhancer DIR (54.5)
|
|
Just popping in 
|
@cnicol
Thank you very much for fixing the bug and the explanation. Yes, I can imagine that this causes serious issues if you need the column length for formatting the output, but you do not get it because of the backticks.
I hope the fixed command is available soon.
|
|
|
|
Re: Strange crash with Enhancer DIR (54.5)
|
|
Just popping in 
|
@rjd324
This is a bug in DIR 54.5.
I switched to the DIR coming with the installation CD (Version 53.3), and it works without any issue.
|
|
|
|
Strange crash with Enhancer DIR (54.5)
|
|
Just popping in 
|
Hi, I was trying to run the tests from the adtools_testing repo on my X5020. But the Enhancer DIR command (Version 54.5) constantly crashed with an DSI. Crash log:
kernel 54.30 (1.1.2021) AmigaOne X5000 release
Machine model: 9 (AmigaOne X5000/20)
Dump of context at 0xEFD80BA0
Trap type: DSI exception
DSISR: 00800000 DAR: 662BA000
Page: 0xEFD52EA0 (Virtual: 0x662BA000, Physical: 0x00000000, Flags: 0x 800)
Machine State (raw): 0x0002D030
Machine State (verbose): [Critical Ints on] [ExtInt on] [User] [IAT on] [DAT on]
Instruction pointer: 0x7F8F2344
Crashed process: DIR (0x680BFB10)
DSI verbose error description: Access to address 0x662BA000 not allowed by page protection in user state (protection violation)
Access was a store operation
Exception Syndrome Register: 0x00800000
0: 019152AC 662B0E90 00000002 FFFFFFFF 68AC9B48 46494C45 46490000 00000006
8: 7F8F2344 00000000 0191529C 01837D5C 7F8F2308 6AE86000 FFFFFFFF 662159AC
16: 6698DB80 EFE15F10 00010000 01930000 662159A8 680BFB5A 00000000 66257110
24: 00000000 6AC720B0 0227ECC2 1A2B26D2 00000000 6AC720A0 662BA000 01915248
CR: 39953953 XER: A000007E CTR: 01837D5C LR: 7F8F2344
Disassembly of crash site:
7F8F2334: 7F64DB78 mr r4,r27
7F8F2338: 83FF0000 lwz r31,0(r31)
7F8F233C: 7FE803A6 mtlr r31
7F8F2340: 4E800021 blrl
>7F8F2344: 987E0000 stb r3,0(r30)
7F8F2348: 895E0000 lbz r10,0(r30)
7F8F234C: 7D4A0774 extsb r10,r10
7F8F2350: 3BDE0001 addi r30,r30,1
7F8F2354: 2C0A0072 cmpwi r10,114
7F8F2358: 4082FFD4 bne+ 0x7F8F232C
msr: 0x0002B032
TLB1 (64 entries):
* [ 50]: size=7 tid = 0 TS = 1 epn=0xFE000000 rpn=0x0000000F_FE000000 WIMG=0x5 XXWWRR=0xF protected
* [ 51]: size=6 tid = 0 TS = 1 epn=0x01000000 rpn=0x00000000_01000000 WIMG=0x0 XXWWRR=0x5 protected
* [ 52]: size=6 tid = 0 TS = 1 epn=0x01400000 rpn=0x00000000_01400000 WIMG=0x0 XXWWRR=0x5 protected
* [ 53]: size=6 tid = 0 TS = 1 epn=0x01800000 rpn=0x00000000_01800000 WIMG=0x0 XXWWRR=0x33 protected
* [ 54]: size=6 tid = 0 TS = 1 epn=0x01C00000 rpn=0x00000000_01C00000 WIMG=0x0 XXWWRR=0x33 protected
* [ 55]: size=5 tid = 0 TS = 1 epn=0x02000000 rpn=0x00000000_02000000 WIMG=0x0 XXWWRR=0xF protected
* [ 56]: size=5 tid = 0 TS = 1 epn=0x02100000 rpn=0x00000000_02100000 WIMG=0x0 XXWWRR=0xF protected
* [ 57]: size=5 tid = 0 TS = 1 epn=0x02200000 rpn=0x00000000_02200000 WIMG=0x0 XXWWRR=0xF protected
* [ 58]: size=3 tid = 0 TS = 1 epn=0x02300000 rpn=0x00000000_02300000 WIMG=0x0 XXWWRR=0xF protected
* [ 59]: size=3 tid = 0 TS = 1 epn=0x02310000 rpn=0x00000000_02310000 WIMG=0x0 XXWWRR=0xF protected
* [ 60]: size=3 tid = 0 TS = 1 epn=0x02320000 rpn=0x00000000_02320000 WIMG=0x0 XXWWRR=0xF protected
* [ 61]: size=7 tid = 0 TS = 0 epn=0xFE000000 rpn=0x0000000F_FE000000 WIMG=0x5 XXWWRR=0xF protected
* [ 62]: size=A tid = 0 TS = 0 epn=0x00000000 rpn=0x00000000_00000000 WIMG=0x0 XXWWRR=0x3F protected
* [ 63]: size=A tid = 0 TS = 0 epn=0x40000000 rpn=0x00000000_40000000 WIMG=0x0 XXWWRR=0x3F protected
HAL_MaxTLB = 49, HAL_NextTLB = 0
MMUCFG = 0x064809C4
mas0 = 0x103F0000
mas1 = 0xC0000A00
mas2 = 0x40000000
mas3 = 0x4000003F
mas4 = 0x00000100
mas5 = 0x00000000
mas6 = 0x00000001
mas7 = 0x00000000
mas8 = 0x00000000
Kernel command line: serial debuglevel=5 munge
Registers pointing to code:
r0 : native kernel module dos.library.kmod+0x0001242c
r8 : module DIR at 0x7F8F2344 (section 0 @ 0x320)
r10: native kernel module dos.library.kmod+0x0001241c
r11: native kernel module kernel+0x00037d5c
r12: module DIR at 0x7F8F2308 (section 0 @ 0x2E4)
r19: native kernel module dos.library.kmod+0x0002d180
r26: native kernel module kernel+0x00a7ecc2
r31: native kernel module dos.library.kmod+0x000123c8
ip : module DIR at 0x7F8F2344 (section 0 @ 0x320)
lr : module DIR at 0x7F8F2344 (section 0 @ 0x320)
ctr: native kernel module kernel+0x00037d5c
Stack trace:
(0x662B0E90) module DIR at 0x7F8F2344 (section 0 @ 0x320)
(0x662B0EF0) module DIR at 0x7F8F2344 (section 0 @ 0x320)
Disassembly of crash site:
7F8F2334: 7F64DB78 mr r4,r27
7F8F2338: 83FF0000 lwz r31,0(r31)
7F8F233C: 7FE803A6 mtlr r31
7F8F2340: 4E800021 blrl
>7F8F2344: 987E0000 stb r3,0(r30)
7F8F2348: 895E0000 lbz r10,0(r30)
7F8F234C: 7D4A0774 extsb r10,r10
7F8F2350: 3BDE0001 addi r30,r30,1
7F8F2354: 2C0A0072 cmpwi r10,114
7F8F2358: 4082FFD4 bne+ 0x7F8F232C
Stack pointer (0x662B0E90) is inside bounds
Redzone is OK (4)
68k register dump
DATA: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
ADDR: 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Page information:
Page 0xEFD52EA0:
Virtual Address: 0x662BA000
Physical Address: 0x00000000
Lock count: 0
Flags (0x800): (Guard)
Protection bits (0x0): (super state only)
Page is assigned to VMArea primary heap
Ready Tasks
HOME_SMB2FS/smb2-handler 53.4 (pri 5, sigrec 0x80000180, sigwait 0xC0000000, masked 0x80000000)
MUSIC_SMB2FS/smb2-handler 53.4 (pri 5, sigrec 0x80000180, sigwait 0xC0000000, masked 0x80000000)
AMIGA_SMB2FS/smb2-handler 53.4 (pri 5, sigrec 0x80000180, sigwait 0xC0000000, masked 0x80000000)
WinFrame 1 Process (pri 5, sigrec 0x00800000, sigwait 0xFF800000, masked 0x00800000)
IDF0/FastFileSystem 53.2 (pri 5, sigrec 0x20000000, sigwait 0xA8000100, masked 0x20000000)
IDF1/FastFileSystem 53.2 (pri 5, sigrec 0x20000000, sigwait 0xA8000100, masked 0x20000000)
compose.task (pri 1, sigrec 0x00000010, sigwait 0x00000010, masked 0x00000010)
Workbench (pri 1, sigrec 0xC0000180, sigwait 0x80000000, masked 0x80000000)
Bildschirmschoner-Bibliothek. (pri 1, sigrec 0x04000100, sigwait 0xB4001000, masked 0x04000000)
NotificationServer (pri 0, sigrec 0x04000000, sigwait 0xBC001000, masked 0x04000000)
AmiDock (pri 0, sigrec 0x00080100, sigwait 0x00000100, masked 0x00000100)
Calendar (pri 0, sigrec 0x04000000, sigwait 0xDC001000, masked 0x04000000)
TCP/IP Control (pri 0, sigrec 0x50000100, sigwait 0xF8009080, masked 0x50000000)
ELF Collector (pri 0, sigrec 0x00000100, sigwait 0x00000100, masked 0x00000100)
hub.usbfd (pri 0, sigrec 0x10000000, sigwait 0x30000000, masked 0x10000000)
hub.usbfd (pri 0, sigrec 0x10000000, sigwait 0x30000000, masked 0x10000000)
Clock (pri 0, sigrec 0x02000000, sigwait 0x6E001000, masked 0x02000000)
Background CLI (pri 0, sigrec 0x10000100, sigwait 0xD0001080, masked 0x10000000)
dos_signal_server (pri -5, sigrec 0x00004100, sigwait 0x00000100, masked 0x00000100)
CPUDock_idleTask (pri -127, sigrec 0x00000000, sigwait 0x40000000, masked 0x00000000)
idle.task (pri -128, sigrec 0x00000000, sigwait 0x00000000, masked 0x00000000)
Waiting Tasks
DH1/NGFileSystem 54.34 (pri 10, sigrec 0x00000100, sigwait 0xF0000000, masked 0x00000000)
DH2/NGFileSystem 54.34 (pri 10, sigrec 0x00000100, sigwait 0xF0000000, masked 0x00000000)
DH0/NGFileSystem 54.34 (pri 10, sigrec 0x00000100, sigwait 0xF0000000, masked 0x00000000)
input.device (pri 20, sigrec 0x00000000, sigwait 0x80000000, masked 0x00000000)
P50x0 Ethernet (pri 20, sigrec 0x00000000, sigwait 0x00001000, masked 0x00000000)
sii3114ide.device - chip 0 port 0 (pri 12, sigrec 0x00008000, sigwait 0xC0000000, masked 0x00000000)
EHCI Controller Task Unit 1 (pri 15, sigrec 0x00000000, sigwait 0xBE009000, masked 0x00000000)
EHCI Controller Task Unit 0 (pri 15, sigrec 0x00000000, sigwait 0xBE009000, masked 0x00000000)
USB stack (pri 18, sigrec 0x00000000, sigwait 0xF800D000, masked 0x00000000)
Background CLI (pri 0, sigrec 0x00000000, sigwait 0x00000100, masked 0x00000000)
dos_filedir_notify (pri 5, sigrec 0x80000000, sigwait 0x40001000, masked 0x00000000)
CON/con-handler 53.82 (pri 5, sigrec 0x00000080, sigwait 0xB0000100, masked 0x00000000)
rx_gc (pri 100, sigrec 0x00000000, sigwait 0x80000001, masked 0x00000000)
p50x0sata.device Port 1 (pri 12, sigrec 0x10000000, sigwait 0xC0007000, masked 0x00000000)
hid.usbfd (pri 10, sigrec 0x00000100, sigwait 0xE0000000, masked 0x00000000)
HID Keyboard (pri 10, sigrec 0x00000000, sigwait 0x90001000, masked 0x00000000)
TimeGuard (pri 0, sigrec 0x04000100, sigwait 0xF0001000, masked 0x00000000)
Background CLI (pri 0, sigrec 0x00000000, sigwait 0x00000100, masked 0x00000000)
Shell Process (pri 0, sigrec 0x00000080, sigwait 0x00000100, masked 0x00000000)
p50x0sata.device Port 0 (pri 12, sigrec 0x10000000, sigwait 0xC0007000, masked 0x00000000)
appdir envarc manager (pri -50, sigrec 0x80000000, sigwait 0x00000100, masked 0x00000000)
serial.device (pri 1, sigrec 0x00000000, sigwait 0x7E000000, masked 0x00000000)
vsata disk changer (pri 0, sigrec 0x00000000, sigwait 0x80000000, masked 0x00000000)
ICD1/CDFileSystem 53.8 (pri 10, sigrec 0x00000000, sigwait 0x00000100, masked 0x00000000)
ICD0/CDFileSystem 53.8 (pri 10, sigrec 0x00000000, sigwait 0x00000100, masked 0x00000000)
CD0/CDFileSystem 53.8 (pri 10, sigrec 0x00000000, sigwait 0x00000100, masked 0x00000000)
« IPrefs » (pri 0, sigrec 0x00000000, sigwait 0x0000F000, masked 0x00000000)
hid.usbfd (pri 10, sigrec 0x00000100, sigwait 0xE0000000, masked 0x00000000)
HID Mouse (pri 10, sigrec 0x00000000, sigwait 0x80001000, masked 0x00000000)
TCP/IP Superserver (pri 0, sigrec 0x00000100, sigwait 0xD0000080, masked 0x00000000)
ClickToFront (pri 21, sigrec 0x00000100, sigwait 0xE000D000, masked 0x00000000)
ContextMenus (pri 0, sigrec 0x00000100, sigwait 0xE0001000, masked 0x00000000)
URL/launch-handler 53.39 (pri 5, sigrec 0x00000100, sigwait 0x80000000, masked 0x00000000)
TEXTCLIP/textclip-handler 53.4 (pri 3, sigrec 0x00000100, sigwait 0x80000000, masked 0x00000000)
RANDOM/Random-Handler 52.1 (pri 5, sigrec 0x00000000, sigwait 0x00000100, masked 0x00000000)
ramlib.support (pri -2, sigrec 0x00000000, sigwait 0x80005000, masked 0x00000000)
ramlib (pri 1, sigrec 0x00000000, sigwait 0x80001000, masked 0x00000000)
CON/con-handler 53.82 (pri 5, sigrec 0x00000000, sigwait 0xA0000100, masked 0x00000000)
Mounter Task (pri -1, sigrec 0x00000000, sigwait 0xB0001000, masked 0x00000000)
Mounter GUI (pri 0, sigrec 0x00000000, sigwait 0x80007000, masked 0x00000000)
Mounter Companion Process (pri -1, sigrec 0x00000000, sigwait 0x80003000, masked 0x00000000)
Workbench DosList Notify (pri 1, sigrec 0x00000100, sigwait 0x00003000, masked 0x00000000)
HID Consumer (pri 10, sigrec 0x00000000, sigwait 0x80001000, masked 0x00000000)
hub.usbfd (pri 0, sigrec 0x00000000, sigwait 0x30000000, masked 0x00000000)
ScreenBlankerEngine (pri 0, sigrec 0x00000100, sigwait 0xD8001000, masked 0x00000000)
hid.usbfd (pri 10, sigrec 0x00000100, sigwait 0xE0000000, masked 0x00000000)
TCP/IP Configuration (pri 0, sigrec 0x00000100, sigwait 0xF8003000, masked 0x00000000)
clipview.library server (pri 0, sigrec 0x00000000, sigwait 0xD8003000, masked 0x00000000)
RexxMaster (pri 4, sigrec 0x00000100, sigwait 0xC0000000, masked 0x00000000)
ContextMenus Command Dispatcher (pri 1, sigrec 0x00000000, sigwait 0x80001000, masked 0x00000000)
application.library messageserver (pri 0, sigrec 0x00000000, sigwait 0xC0000000, masked 0x00000000)
AsyncWB (pri 0, sigrec 0x00000100, sigwait 0xC0001000, masked 0x00000000)
InfoWB (pri 0, sigrec 0x00000100, sigwait 0xF8001000, masked 0x00000000)
texteditor.gadget Clipboard Server (pri 1, sigrec 0x00000100, sigwait 0x80000000, masked 0x00000000)
select.gadget prefs (pri 0, sigrec 0x00000100, sigwait 0x80001000, masked 0x00000000)
CON/con-handler 53.82 (pri 5, sigrec 0x00000000, sigwait 0xA0000100, masked 0x00000000)
CON/con-handler 53.82 (pri 5, sigrec 0x00000000, sigwait 0xA0000100, masked 0x00000000)
CON/con-handler 53.82 (pri 5, sigrec 0x00000000, sigwait 0xA0000100, masked 0x00000000)
CON/con-handler 53.82 (pri 5, sigrec 0x00000000, sigwait 0xA0000100, masked 0x00000000)
DefIcons (pri 0, sigrec 0x00000100, sigwait 0x80009000, masked 0x00000000)
CON/con-handler 53.82 (pri 5, sigrec 0x00000000, sigwait 0xA0000100, masked 0x00000000)
CON/con-handler 53.82 (pri 5, sigrec 0x00000000, sigwait 0xA0000100, masked 0x00000000)
CON/con-handler 53.82 (pri 5, sigrec 0x00000000, sigwait 0xA0000100, masked 0x00000000)
CON/con-handler 53.82 (pri 5, sigrec 0x00000000, sigwait 0xA0000100, masked 0x00000000)
string.gadget server (pri 1, sigrec 0x00000100, sigwait 0x40000000, masked 0x00000000)
Workbench Clipboard Server (pri 1, sigrec 0x00000100, sigwait 0x80000000, masked 0x00000000)
TCP/IP Log (pri 0, sigrec 0x00000000, sigwait 0x80003000, masked 0x00000000)
ConClip (pri 0, sigrec 0x00000000, sigwait 0x80000000, masked 0x00000000)
HID Consumer (pri 10, sigrec 0x00000000, sigwait 0x80001000, masked 0x00000000)
diskimage.device unit 1 (pri 4, sigrec 0x00000100, sigwait 0xC0000000, masked 0x00000000)
HID Consumer (pri 10, sigrec 0x00000000, sigwait 0x80001000, masked 0x00000000)
hid.usbfd (pri 10, sigrec 0x00000100, sigwait 0xE0000000, masked 0x00000000)
diskimage.device unit 0 (pri 4, sigrec 0x00000100, sigwait 0xC0000000, masked 0x00000000)
diskimage.device unit 5 (pri 4, sigrec 0x00000100, sigwait 0xC0000000, masked 0x00000000)
diskimage.device unit 4 (pri 4, sigrec 0x00000100, sigwait 0xC0000000, masked 0x00000000)
USB stack Process (pri 0, sigrec 0x00000000, sigwait 0x80001000, masked 0x00000000)
AUDIO/AHI-Handler 6.2 (pri 5, sigrec 0x00000000, sigwait 0x00000100, masked 0x00000000)
APPDIR/appdir-handler 54.17 (pri 5, sigrec 0x00000100, sigwait 0x80000000, masked 0x00000000)
MassStorage Notifier (pri 0, sigrec 0x00000000, sigwait 0x80001000, masked 0x00000000)
DST watcher (pri 0, sigrec 0x00000000, sigwait 0xC0000000, masked 0x00000000)
RAM/ram-handler 54.24 (pri 10, sigrec 0x00000100, sigwait 0x80000000, masked 0x00000000)
ENV/env-handler 54.18 (pri 5, sigrec 0x00000100, sigwait 0x80000000, masked 0x00000000)
CON/con-handler 53.82 (pri 5, sigrec 0x00000000, sigwait 0xA0000100, masked 0x00000000)
RAW/con-handler 53.82 (pri 5, sigrec 0x00000000, sigwait 0xA0000100, masked 0x00000000)
CON/con-handler 53.82 (pri 5, sigrec 0x00000000, sigwait 0xA0000100, masked 0x00000000)
dos_nbmd_process (pri 5, sigrec 0x00000000, sigwait 0x00001100, masked 0x00000000)
dos_lock_handler (pri 5, sigrec 0x00000000, sigwait 0x00001100, masked 0x00000000)
hub.usbfd (pri 0, sigrec 0x00000000, sigwait 0x30000000, masked 0x00000000)
hub.usbfd (pri 0, sigrec 0x00000000, sigwait 0x30000000, masked 0x00000000)
hub.usbfd (pri 0, sigrec 0x00000000, sigwait 0x30000000, masked 0x00000000)
Exec Command and Control (pri 30, sigrec 0x00000000, sigwait 0x80000000, masked 0x00000000)
DMA2 Channel 4 Handler (pri 0, sigrec 0x00000000, sigwait 0x80001000, masked 0x00000000)
DMA1 Channel 4 Handler (pri 0, sigrec 0x00000000, sigwait 0x80001000, masked 0x00000000)
DMA2 Channel 3 Handler (pri 0, sigrec 0x00000000, sigwait 0x80001000, masked 0x00000000)
DMA1 Channel 3 Handler (pri 0, sigrec 0x00000000, sigwait 0x80001000, masked 0x00000000)
DMA2 Channel 2 Handler (pri 0, sigrec 0x00000000, sigwait 0x80001000, masked 0x00000000)
DMA1 Channel 2 Handler (pri 0, sigrec 0x00000000, sigwait 0x80001000, masked 0x00000000)
DMA2 Channel 1 Handler (pri 0, sigrec 0x00000000, sigwait 0x80001000, masked 0x00000000)
DMA1 Channel 1 Handler (pri 0, sigrec 0x00000000, sigwait 0x80001000, masked 0x00000000)
Suspended Tasks
The crashing command is
execute `dir #?.script`
Running the command without the backticks work. With backticks it crashes. Update: Minimal test case:
cd RAM:
makedir test
cd test
touch test.script
echo `dir #?.script`
Edited by FlynnTheAvatar on 2023/5/29 13:34:36
|
|
|
|
Re: The ADTOOLS thread
|
|
Just popping in 
|
@rjd324
Thank you, with your latest change I could generate a cross-compiler.
Some of the tests fail to build, though. I am looking into it.
|
|
|
|
Re: The ADTOOLS thread
|
|
Just popping in 
|
@rjd324
Thank you for providing such an easy solution for compiling gcc. I managed to compile a cross-compiler using the normal adtools repository, but the script makes everything much easier.
Sadly, it does not seem to work on aarch64 (Raspberry Pi). It would be great if you could make it work on this platform, too.
|
|
|
|
Re: What the fastest possible x64 emulation way of OS4 today ?
|
|
Just popping in 
|
@white
Yes, this is correct. In the latest official release (0.8.29), only the SDL version supported UAEGFX.
LiveForIt did a lot of changes to make UAEGFX work with AmiGFX/NON-SDL graphics driver. But he prioritized making it work on the 8bit and 32/24bit modes.
|
|
|
|
Re: What the fastest possible x64 emulation way of OS4 today ?
|
Posted on: 5/24 20:07
#10
|
Just popping in 
|
@white
Yes, you are correct. 16bit color depth is only working on SDL or the original E-UAE 0.8.29 AmiGFX version.
And sorry, I just compiled the changes by @LiveForIt. He would be the better person to ask. Sadly, he stopped working on the AmiGFX improvements.
|
|
|
|
Re: Debug output from X5000
|
Posted on: 5/10 18:03
#11
|
Just popping in 
|
@Rolar
Sorry, I am not sure what I did to make it work. But I still think the wrong baud rate is your problem.
Could you please try the following?
Edit SYS:Devs/DOSDrivers/AUX and set Baud to 115200 there. This should set the Baudrate for logging in AmigaOS.
|
|
|
|
Re: Debug output from X5000
|
Posted on: 5/10 11:50
#12
|
Just popping in 
|
@Rolar
What options did you set in UBoot? I get full output after "Call Loader 0x2000000".
I think I set the following custom variables: os4_commandline=serial debuglevel=5 munge baudrate=115200
Setting the baudrate is important because UBoot uses 115200 baud, but the kernel switches to 19200. Using the same value for both systems makes accessing the logs much easier.
Otherwise you would need to switch your terminal program to 19200,8,1,N. But you would only get the output of the kernel, not UBoot. And you cannot control UBoot via serial anymore.
|
|
|
|
Re: What's the best/latest EUAE build for OS4?
|
|
Just popping in 
|
I just tried Icomp's Picasso96-3.3.3 that was released on Monday. And it works flawless on Workbench 3.2.x.
The icons have the correct colors, as have the splash screens. And also the jumping mouse movement seems to be fixed, too.
In difference to older versions, the icons also no longer vanish when using JIT.
The version before combining the source files still feels faster. I tried to make videos with an external USB HDMI recoder, but the framerate is so low that you do not see any difference between the newer and older version of uae. You barely see the "interlacing" effect of the latest version in the videos.
|
|
|
|
Re: AllocBitMap vs AllocBitMapTags
|
Posted on: 2/21 18:30
#15
|
Just popping in 
|
@joerg
Thank you, trying to load the Picasso96 and cybergraphics.library to check for RTG works great.
|
|
|
|
Re: AllocBitMap vs AllocBitMapTags
|
Posted on: 2/20 13:52
#16
|
Just popping in 
|
@joerg
Thank you for the input. Removing BMF_DISPLAYABLE does not make any difference.
Using BMF_CHECKMASK seems to be the only portable way to make it work on multiple AmigaOS versions. It seems to work on AmigaOS 3.2, AmigaOS 3.9 and OS 4.1. Edit: Not really, this would break executing on a non-RTG system. Is there a way to test if the system has Picasso96/CyberGraphX installed?
BTW: Is the strategy to draw into a separate bitmap and then blitting it into the window's bitmap the correct way? Or is there a better way to have "double buffering" in windows?
|
|
|
|
Re: AllocBitMap vs AllocBitMapTags
|
|
Just popping in 
|
@joerg Thanks for the input, but the SDK does not say that AllocBitMap (V39) is obsolete or should not be used. Also, BMF_CHECKMASK is not documented in the Autodocs - at least not in the AllocBitMap section. Update: Sorry, it is in the Autodocs. I am getting blind... @joerg + @msteed Thanks for the tip with GetBitMapAttr. These are the results:
AllocBitMap:
Bitmap flags: 10
BMA_DEPTH: 1
BMA_ISRTG: 0
BMA_BYTESPERPIXEL: 0
BMA_BITSPERPIXEL: 0
BMA_PIXELFORMAT: 0
AllocBitMapTags:
Bitmap flags: 0
BMA_DEPTH: 24
BMA_ISRTG: 1
BMA_BYTESPERPIXEL: 4
BMA_BITSPERPIXEL: 32
BMA_PIXELFORMAT: 6
AllocBitMap with BMF_MINPLANES:
Bitmap flags: 0
BMA_DEPTH: 24
BMA_ISRTG: 1
BMA_BYTESPERPIXEL: 4
BMA_BITSPERPIXEL: 32
BMA_PIXELFORMAT: 6
Using BMF_MINPLANES with AllocBitMap seems to do the trick, this will also alloc a RTG bitmap instead of a legacy one. But I am not sure why - the SDK indicates that BMF_MINPLANES should not be used for performance reasons (?!?).
Edited by FlynnTheAvatar on 2023/2/20 11:42:45
|
|
|
|
Re: AllocBitMap vs AllocBitMapTags
|
Posted on: 2/18 16:36
#18
|
Just popping in 
|
@LiveForIt
Both calls use the same flags and the same friend bitmap. So, why should there be a difference?
|
|
|
|
Re: AllocBitMap vs AllocBitMapTags
|
Posted on: 2/18 16:31
#19
|
Just popping in 
|
@LiveForIt
I am not talking about the call itself. Yes, the AllocBitMap call might take a couple of microseconds longer than AllocBitMapTagList because the call is intercepted and then converted to a call to the newer function.
What I am seeing is that blitting the bitmap created by AllocBitMap to the window bitmap takes much, much, much longer than blitting the bitmap created by AllocBitMapTags. I am talking about a factor of 100 or so.
That should not be that case.
|
|
|
|
AllocBitMap vs AllocBitMapTags
|
Posted on: 2/18 15:12
#20
|
Just popping in 
|
Hi, Maybe somebody with deeper knowledge of Amiga OS 4.1 could help me out, please. While following allong with the examples on http://www.kaiiv.de/retrocoding/1/ I found that the examples are extremly slow on AmigaOS 4.1. So slow infact that I could crash my X5000 by making the window larger (from 320x160 to 1920x1080). The BltBitMapRastPort call takes a lot time if back puffer bitmap is created with AllocBitMap (the V39 call, not the tag one). Strangely, when replacing AllocBitMap with AllocBitMapTags even with the same flags, the blitting is extremly fast. Why is that so? I did not find anything in the Autodocs that AllocBitMap is deprecated or has issues. Here comes an example for local testing. Compile it with: gcc engine3_os4.c -lamiga -o engine3_os4 To test it, enlarge the window to cover the whole screen; drawing a 1920x1080 window takes about 2s for me. Thanks, Flynn
#include
#include
#include
#include
#include
#include
#include
#include
#include
/* our system libraries addresses */
struct Library* GfxBase = NULL;
struct GraphicsIFace* IGraphics = NULL;
struct Library* IntuitionBase = NULL;
struct IntuitionIFace* IIntuition = NULL;
struct RenderEngineData
{
struct Window* window;
struct tPoint outputSize;
struct BitMap* backBuffer;
struct tPoint backBufferSize;
struct RastPort renderPort;
int returnCode;
BOOL run;
BOOL doRepaint;
BOOL doRender;
};
void RepaintWindow(struct RenderEngineData* rd)
{
/* on repaint we simply blit our backbuffer into our window's RastPort */
IGraphics->
BltBitMapRastPort(rd->backBuffer, 0, 0, rd->window->RPort,
(LONG)rd->window->BorderLeft,
(LONG)rd->window->BorderTop,
(LONG)rd->outputSize.x, (LONG)rd->outputSize.y,
(MINTERM_ABNC | MINTERM_ABC));
}
int PrepareBackBuffer(struct RenderEngineData* rd)
{
int result;
if(rd->outputSize.x != rd->backBufferSize.x ||
rd->outputSize.y != rd->backBufferSize.y)
{
/* if output size changed free our current bitmap... */
if(rd->backBuffer)
{
IGraphics->FreeBitMap(rd->backBuffer);
rd->backBuffer = NULL;
}
/* ... allocate a new one... */
/* DO NOT USE AllocBitMap - IT IS EXTREMELY SLOW WHEN BLITTING
* /
rd->backBuffer = IGraphics->AllocBitMap((ULONG)rd->outputSize.x,
(ULONG)rd->outputSize.y,
1,
BMF_CLEAR|BMF_DISPLAYABLE,
rd->window->RPort->BitMap);
*/
rd->backBuffer = IGraphics->AllocBitMapTags((ULONG)rd->outputSize.x,
(ULONG)rd->outputSize.y,
1,
BMATags_Friend, rd->window->RPort->BitMap,
BMATags_Clear, TRUE,
BMATags_Displayable, TRUE,
TAG_DONE);
/**/
if(rd->backBuffer)
{
/* and on success remember its size */
rd->backBufferSize = rd->outputSize;
}
/* link the bitmap into our render port */
IGraphics->InitRastPort(&rd->renderPort);
rd->renderPort.BitMap = rd->backBuffer;
}
result = rd->backBuffer ? RETURN_OK : RETURN_ERROR;
return result;
}
int RenderBackbuffer(struct RenderEngineData* rd)
{
int result;
result = PrepareBackBuffer(rd);
if(result == RETURN_OK)
{
struct RastPort* rastPort;
struct tPoint maxPos;
struct tPoint lineStep;
struct tPoint pos;
WORD i;
const WORD stepCount = 32;
/* we make a local copy of our RastPort pointer for ease of use */
rastPort = &rd->renderPort;
/* clear our bitmap */
IGraphics->SetRast(rastPort, 0);
/* now draw our line pattern */
maxPos.x = rd->backBufferSize.x - 1;
maxPos.y = rd->backBufferSize.y - 1;
lineStep.x = maxPos.x / stepCount;
lineStep.y = maxPos.y / stepCount;
IGraphics->SetAPen(rastPort, 1);
pos.x = pos.y = 0;
for(i = 0; i Move(rastPort, 0, (LONG)pos.y);
IGraphics->Draw(rastPort, (LONG)(maxPos.x - pos.x), 0);
IGraphics->Draw(rastPort, (LONG)maxPos.x, (LONG)(maxPos.y - pos.y));
IGraphics->Draw(rastPort, (LONG)pos.x, (LONG)maxPos.y);
IGraphics->Draw(rastPort, 0, (LONG)pos.y);
pos.x += lineStep.x;
pos.y += lineStep.y;
}
}
return result;
}
void ComputeOutputSize(struct RenderEngineData* rd)
{
/* our output size is simply the window's size minus its borders */
rd->outputSize.x =
rd->window->Width - rd->window->BorderLeft - rd->window->BorderRight;
rd->outputSize.y =
rd->window->Height - rd->window->BorderTop - rd->window->BorderBottom;
}
void DispatchWindowMessage(struct RenderEngineData* rd,
struct IntuiMessage* msg)
{
switch(msg->Class)
{
case IDCMP_CLOSEWINDOW:
{
/* User pressed the window's close gadget: exit the main loop as
* soon as possible */
rd->run = FALSE;
break;
}
case IDCMP_NEWSIZE:
{
/* On resize we compute our new output size... */
ComputeOutputSize(rd);
/* ... and trigger a render call */
rd->doRender = TRUE;
break;
}
case IDCMP_REFRESHWINDOW:
{
IIntuition->BeginRefresh(rd->window);
/* We do only repaint here if there is no pending
* render call */
if(!rd->doRender)
{
RepaintWindow(rd);
}
IIntuition->EndRefresh(rd->window, TRUE);
break;
}
}
}
int MainLoop(struct RenderEngineData* rd)
{
struct MsgPort* winport;
ULONG winSig;
/* remember the window port in a local variable for more easy use */
winport = rd->window->UserPort;
/* create our waitmask for the window port */
winSig = 1 doRender = TRUE;
/* we need to compute our output size initially */
ComputeOutputSize(rd);
/* enter our main loop */
while(rd->run)
{
struct Message* msg;
if(rd->doRender)
{
rd->returnCode = RenderBackbuffer(rd);
if(rd->returnCode == RETURN_OK)
{
/* Rendering succeeded, we need to repaint */
rd->doRepaint = TRUE;
rd->doRender = FALSE;
}
else
{
/* Rendering failed, do not repaint, leave our main
* loop instead */
rd->doRepaint = FALSE;
rd->run = FALSE;
}
}
if(rd->doRepaint)
{
RepaintWindow(rd);
rd->doRepaint = FALSE;
}
if(rd->run)
{
/* let's sleep until a message from our window arrives */
IExec->Wait(winSig);
}
/* our window signaled us, so let's harvest all its messages
* in a loop... */
while((msg = IExec->GetMsg(winport)))
{
/* ...and dispatch and reply each of them */
DispatchWindowMessage(rd, (struct IntuiMessage*)msg);
IExec->ReplyMsg(msg);
}
}
if(rd->backBuffer)
{
IGraphics->FreeBitMap(rd->backBuffer);
rd->backBuffer = NULL;
}
return rd->returnCode;
}
int RunEngine(void)
{
struct RenderEngineData* rd;
/* as long we did not enter our main loop we report an error */
int result = RETURN_ERROR;
/* allocate the memory for our runtime data and ititialize it
* with zeros */
if ((rd = (struct RenderEngineData*)
IExec->AllocVecTags(sizeof(struct RenderEngineData),
AVT_Type, MEMF_PRIVATE,
AVT_ClearWithValue, 0,
TAG_DONE)))
{
/* now let's open our window */
static struct NewWindow newWindow =
{
0, 14,
320, 160,
(UBYTE)~0, (UBYTE)~0,
IDCMP_CLOSEWINDOW | IDCMP_NEWSIZE | IDCMP_REFRESHWINDOW,
WFLG_CLOSEGADGET | WFLG_DRAGBAR | WFLG_DEPTHGADGET |
WFLG_SIMPLE_REFRESH | WFLG_SIZEBBOTTOM | WFLG_SIZEGADGET,
0, 0,
"Gfx Workshop",
0,
0,
96, 48,
(UWORD)~0, (UWORD)~0,
WBENCHSCREEN
};
if((rd->window = IIntuition->OpenWindow(&newWindow)))
{
/* the main loop will run as long this is TRUE */
rd->run = TRUE;
result = MainLoop(rd);
/* cleanup: close the window */
IIntuition->CloseWindow(rd->window);
rd->window = NULL;
}
/* free our runtime data */
IExec->FreeVec(rd);
rd = NULL;
}
return result;
}
int main(int argc, char* argv[])
{
/* as long we did not execute RunEngine() we report a failure */
int result = RETURN_FAIL;
/* we need at least 4.0 graphic.library's drawing functions */
if((GfxBase = IExec->OpenLibrary("graphics.library", 50)))
{
/* load interface */
if((IGraphics = (struct GraphicsIFace*)
IExec->GetInterface(GfxBase, "main", 1, NULL)))
{
/* we need at least 4.0 intuition.library for our window */
if((IntuitionBase =
IExec->OpenLibrary("intuition.library", 50)))
{
/* load interface */
if((IIntuition = (struct IntuitionIFace*)
IExec->GetInterface(IntuitionBase, "main", 1, NULL)))
{
/* All libraries needed are available, so let's run... */
result = RunEngine();
IExec->DropInterface((struct Interface*)IIntuition);
IIntuition = NULL;
}
IExec->CloseLibrary(IntuitionBase);
IntuitionBase = NULL;
}
IExec->DropInterface((struct Interface*)IGraphics);
IGraphics = NULL;
}
IExec->CloseLibrary(GfxBase);
GfxBase = NULL;
}
return result;
}
|
|
|
|