mirror of
https://github.com/Zeal-Operating-System/ZealOS.git
synced 2025-01-24 21:26:05 +00:00
db32fdb367
Reformatted DolDoc files, adjusted sprites in documentation to reflect naming changes, corrected keybinding labels in AutoComplete window, fixed formatting error in Tips.DD. Added DVD Boot AHCI prototyping into Kernel, displays detected AHCI configuration and halts mid-boot. Small modifications to standard font, slight increase to mouse X and Y speed.
99 lines
1.7 KiB
Text
Executable file
99 lines
1.7 KiB
Text
Executable file
$HL,1$//Press F5 in the editor to compile and run.
|
|
|
|
--------Hello.CC---------
|
|
"Hello World\n";
|
|
|
|
|
|
--------Hello.CC---------
|
|
U0 Main()
|
|
{
|
|
"Hello World\n";
|
|
}
|
|
Main;
|
|
|
|
|
|
--------Hello.CC---------
|
|
U0 MyPrint(U8 *st)
|
|
{
|
|
"%s", st;
|
|
}
|
|
MyPrint("Hello World\n");
|
|
|
|
|
|
--------Hello.CC---------
|
|
U0 MyPrint2(U8 *st1, U8 *st2) //Any number of args.
|
|
{
|
|
"%s %s\n", st1, st2; //Any number of args.
|
|
}
|
|
MyPrint2("Hello", "World");
|
|
|
|
|
|
--------Hello.CC---------
|
|
U0 MyPrint(U8 *st)
|
|
{
|
|
"" st; //Empty with no comma means first is format str.
|
|
}
|
|
MyPrint("Hello World\n");
|
|
|
|
|
|
--------Hello.CC---------
|
|
asm {
|
|
MESSAGE: DU8 "Hello World\n", 0;
|
|
|
|
//The convention is underscore on C callable.
|
|
//Two colons means exported symbol.
|
|
_HELLO_WORLD::
|
|
//You can only clobber RAX,RBX,RCX,RDX
|
|
PUSH RSI
|
|
MOV RSI, MESSAGE
|
|
CALL PUT_STR
|
|
POP RSI
|
|
RET
|
|
}
|
|
Call(_HELLO_WORLD);
|
|
|
|
|
|
--------Hello.CC---------
|
|
asm {
|
|
_HELLO_WORLD::
|
|
//You can only clobber RAX,RBX,RCX,RDX
|
|
MOV RAX, 'Hello '
|
|
CALL PUT_CHARS //Up to 8 chars packed into one 64-bit int.
|
|
MOV RAX, 'World\n'
|
|
CALL PUT_CHARS
|
|
RET
|
|
}
|
|
Call(_HELLO_WORLD);
|
|
|
|
|
|
--------Hello.CC---------
|
|
asm {
|
|
_MY_PRINT::
|
|
//You can only clobber RAX,RBX,RCX,RDX
|
|
PUSH RBP
|
|
MOV RBP, RSP
|
|
PUSH RSI
|
|
MOV RSI, U64 SF_ARG1[RBP]
|
|
CALL PUT_STR
|
|
POP RSI
|
|
POP RBP
|
|
RET1 8 //Callee pops the stack to clear args.
|
|
}
|
|
_extern _MY_PRINT U0 MyPrint(U8 *st);
|
|
MyPrint("Hello World\n");
|
|
|
|
|
|
--------Hello.CC---------
|
|
asm {
|
|
_MY_PRINT::
|
|
//You can only clobber RAX,RBX,RCX,RDX
|
|
PUSH RBP
|
|
MOV RBP, RSP
|
|
PUSH U64 SF_ARG1[RBP]
|
|
CALL &PutS //Callee pops the stack to clear args.
|
|
POP RBP
|
|
RET1 8
|
|
}
|
|
_extern _MY_PRINT U0 MyPrint(U8 *st);
|
|
MyPrint("Hello World\n");
|
|
$HL,0$
|