Contribute
Register

Native DSDT/AML IDE & Compiler: MaciASL Open Beta

Status
Not open for further replies.
The Device Properties window is very usefull.
But I can't make a screenshoot of it with Grab, since the window hides if another program gets active.
Also the text inside the Device Properties window can't be marked and copied.

Can you please make the window stay visible even if MaciASL is not the active application or enable copy of the text inside the window or both ?

Thanks
 
Hey SJ_UnderWater!

I have recently expired a problem with your patching engine!

RehabMan confirmed to me that it somehow has to do with maciasl!

All files and the problem with patching are underhttp://www.tonymacx86.com/mavericks-laptop-support/125911-dell-inspiron-3x37-5x37-7x37-clover-install-guide-24.html

Please help me :)
 
First, you should _never_, _ever_, _ever_ use a DSL file. While it's technically an acceptable iASL file format, it serves no useful purpose when you have access to an IDE like MaciASL. IDEs like MaciASL automatically decompile AML files and display the text for editing, then compile back to AML; there is no need to save in that format. Considering all of the possible encoding, line-ending, and content-transfer issues inherent to text files, there's no point. If you're working on your system's tables, they're already in AML format in memory. If you're working on the tables of another system, use the ACPI (tableset) format, which packages all tables and can perform name resolution when a table references others; just choose File > Export Tableset. We even support ACPI files directly here, so there's no need to ZIP.

For this specific issue, the DSL has a comment "/* HID Protocol Device (I2C bus) */" which fools the parser into thinking "Device (I2C bus)" is a device in the tree. This Device has no content, so the patcher can't find the region to check for matches. The parser could be better no doubt, but considering this would never appear in an AML file, it hasn't been an issue up until now. If users mark up their AMLs and save as DSL to preserve the comments, they don't then try to compile that file.

I have pushed a commit which makes the parser stricter, and to use this version you will have to compile MaciASL. With Xcode installed, clone http://git.code.sf.net/p/maciasl/code, open the Xcode project, and Build.
 
First, you should _never_, _ever_, _ever_ use a DSL file.

Tablesets are not as universal as disassembly via 'iasl -da' because you cannot disassemble SSDTs properly using MaciASL since it does not pass the other SSDTs/DSDT as context to the iasl disassembler when loading an SSDT from a tableset.

In addition, tablesets cannot be saved once one or more patches are applied. Because the (patched) SSDT cannot be disassembled standalone, further edits using the resulting AML are not possible.

The best strategy is to disassemble with 'iasl -da' all tables, and then work with the resulting *.dsl files from that point on.

For this specific issue, the DSL has a comment "/* HID Protocol Device (I2C bus) */" which fools the parser into thinking "Device (I2C bus)" is a device in the tree. This Device has no content, so the patcher can't find the region to check for matches. The parser could be better no doubt, but considering this would never appear in an AML file, it hasn't been an issue up until now. If users mark up their AMLs and save as DSL to preserve the comments, they don't then try to compile that file.

The newer versions of the iasl disassembler are more liberal with comments. This comment was generated by iasl, not the user.

I have pushed a commit which makes the parser stricter, and to use this version you will have to compile MaciASL. With Xcode installed, clone http://git.code.sf.net/p/maciasl/code, open the Xcode project, and Build.

Thanks. This should help users dealing with complex SSDTs and newer versions of iasl.
 
white page with url?

Not for web browsers... just git:

Code:
# in Terminal
mkdir ~/proj
cd ~/proj
git clone http://git.code.sf.net/p/maciasl/code maciasl.git
cd maciasl.git
open MaciASL.xcodeproj
 
Weird bug in latest:

Code:
DefinitionBlock ("dsdt.aml", "DSDT", 1, "TEST", "TEST", 0x00000000)
{
    Scope (BB.X1)
    {
        Device (X)
        {
            Method (M1, 0, NotSerialized)
            {
            }
            Method (M2, 0, NotSerialized)
            {
            }
        }
    }
}

Parsed as:
Screen Shot 2014-06-22 at 11.21.33 AM.png

Expect: M1 and M2 are direct children of Device(X).

Change code to:
Code:
DefinitionBlock ("dsdt.aml", "DSDT", 1, "TEST", "TEST", 0x00000000)
{
    Scope (B.X1)
    {
        Device (X)
        {
            Method (M1, 0, NotSerialized)
            {
            }
            Method (M2, 0, NotSerialized)
            {
            }
        }
    }
}

And correct parsing is achieved:
Screen Shot 2014-06-22 at 11.23.00 AM.png

Edit: Confirmed caused by latest commit.
 
Tablesets are not as universal as disassembly via 'iasl -da' because you cannot disassemble SSDTs properly using MaciASL since it does not pass the other SSDTs/DSDT as context to the iasl disassembler when loading an SSDT from a tableset.
This could easily have been posted as an issue months ago, considering I already perform this for DSDTs. See below for the resolution.
In addition, tablesets cannot be saved once one or more patches are applied. Because the (patched) SSDT cannot be disassembled standalone, further edits using the resulting AML are not possible.
Tablesets are immutable by design, and I can see no point in recompiling a patched AML originally taken from a one. Surely users requesting patches send their tablesets to a patcher, who then examines and tries patching the tables? What would someone do afterwards with a patched AML while not on the machine it came from?
The best strategy is to disassemble with 'iasl -da' all tables, and then work with the resulting *.dsl files from that point on.
This is bad practice for several reasons, which I mentioned. One which I didn't mention is that the AML extracted from memory is the "true" table: a DSL file is only one particular version of iASL's interpretation of that AML file, and is therefore never authoritative. Depending on which version(s) of iASL are used by the user and patcher, the DSL file can be very different; an immutable collection of AML blobs (a tableset) is the only guarantee. Additionally, I only see two cases where resolution is necessary: the user is at the machine in question, examining and editing tables; and a patcher examining and building patches for a machine not available to them. In the first case the user is simply at their machine, in the second the patcher needs an original copy of all tables to build the patch.
Weird bug in latest:
Edit: Confirmed caused by latest commit.
I realized this after pushing the commit, and on Saturday started and finished a rewrite of MaciASL. Once it passes testing, I will push the development branch for others to try, which will eventually merge onto master as v1.4. It contains a fix for the strict name check (Scopes are often longer than four characters), among other issues like the unreported SSDT resolution issue.
 
Status
Not open for further replies.
Back
Top