TempleOSCD_150216.ISO
This commit is contained in:
1 parent
64f679eeb9
commit
401601816c
531 files changed
+23341
-22071
No files matched your search
@@ -17,7 +17,7 @@ _BEEPS::
|
||||
//You can always clobber RAX,RBX,RCX,RDX,R8,R9. The compiler expects that.
|
||||
PUSH RBP
|
||||
MOV RBP,RSP
|
||||
MOV RCX,U64 SF_ARG1[RBP] //$LK,"SF_ARG1",A="FF:::/Kernel/Adam1a.HPP,SF_ARG1"$
|
||||
MOV RCX,U64 SF_ARG1[RBP] //$LK,"SF_ARG1",A="FF:::/Kernel/KernelA.HPP,SF_ARG1"$
|
||||
|
||||
@@05: PUSH RCX
|
||||
//U0 $LK,"Beep",A="MN:Beep"$(I64 freq=500,Bool busy=FALSE)
|
||||
|
||||
@@ -17,13 +17,13 @@ USE64 //Defaults to 64, but this is a good habit.
|
||||
|
||||
JIFFIES_MSG: DU8 "Jiffies:",0;
|
||||
|
||||
//See $LK,"::/Kernel/Str1a.CPP",A="FL:::/Kernel/Str1a.CPP,1"$ and $LK,"::/Kernel/Utils1a.CPP"$.
|
||||
//See $LK,"::/Kernel/StrA.CPP",A="FL:::/Kernel/StrA.CPP,1"$ and $LK,"::/Kernel/KUtils.CPP"$.
|
||||
|
||||
_BEEPS2::
|
||||
//You can clobber RAX,RBX,RCX,RDX,R8,R9. The compiler expects that.
|
||||
PUSH RBP
|
||||
MOV RBP,RSP
|
||||
MOV RCX,U64 SF_ARG1[RBP] //$LK,"SF_ARG1",A="FF:::/Kernel/Adam1a.HPP,SF_ARG1"$
|
||||
MOV RCX,U64 SF_ARG1[RBP] //$LK,"SF_ARG1",A="FF:::/Kernel/KernelA.HPP,SF_ARG1"$
|
||||
|
||||
PUSH U64 [&cnts.jiffies]
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ error, like when repeatedly #including
|
||||
it from the cmd line.
|
||||
|
||||
These are many useful kernel
|
||||
routines $LK,"::/Kernel/Str1a.CPP",A="FF:::/Kernel/Str1a.CPP,PUT_CHARS"$
|
||||
routines $LK,"::/Kernel/StrA.CPP",A="FF:::/Kernel/StrA.CPP,PUT_CHARS"$
|
||||
intended to be called from
|
||||
asm. Generally, they preserve
|
||||
regs.
|
||||
|
||||
+16
-18
@@ -51,29 +51,27 @@ Call(_BUZZ_FIZZ);
|
||||
_BUZZ_FIZZ+0x0001 488BEC MOV U64 RBP,U64 RSP
|
||||
_BUZZ_FIZZ+0x0004 56 PUSH U64 RSI
|
||||
_BUZZ_FIZZ+0x0005 57 PUSH U64 RDI
|
||||
_BUZZ_FIZZ+0x0006 BE06000000 MOV U64 RSI,U32 00000006
|
||||
_BUZZ_FIZZ+0x000B BF07000000 MOV U64 RDI,U32 00000007
|
||||
_BUZZ_FIZZ+0x0010 B801000000 MOV U64 RAX,U32 00000001
|
||||
_BUZZ_FIZZ+0x0015 E88F7D2480 CALL I32 PUT_HEX_U64+0x0000
|
||||
_BUZZ_FIZZ+0x0006 BE06000000 MOV U32 ESI,U32 00000006
|
||||
_BUZZ_FIZZ+0x000B BF07000000 MOV U32 EDI,U32 00000007
|
||||
_BUZZ_FIZZ+0x0010 B801000000 MOV U32 EAX,U32 00000001
|
||||
_BUZZ_FIZZ+0x0015 E8C51F2BC0 CALL I32 PUT_HEX_U64+0x0000
|
||||
_BUZZ_FIZZ+0x001A 50 PUSH U64 RAX
|
||||
_BUZZ_FIZZ+0x001B B820000000 MOV U64 RAX,U32 00000020
|
||||
_BUZZ_FIZZ+0x0020 E8E87D2480 CALL I32 PUT_CHARS+0x0000
|
||||
_BUZZ_FIZZ+0x001B B820000000 MOV U32 EAX,U32 00000020
|
||||
_BUZZ_FIZZ+0x0020 E81E202BC0 CALL I32 PUT_CHARS+0x0000
|
||||
_BUZZ_FIZZ+0x0025 48FFCE DEC U64 RSI
|
||||
_BUZZ_FIZZ+0x0028 7514 JNZ I8 _BUZZ_FIZZ+0x003E
|
||||
_BUZZ_FIZZ+0x002A 48B846495A5A MOV U64 RAX,U32 5A5A4946
|
||||
_BUZZ_FIZZ+0x0030 2000 AND U8 [RAX],U8 AL
|
||||
_BUZZ_FIZZ+0x0032 0000 ADD U8 [RAX],U8 AL
|
||||
_BUZZ_FIZZ+0x0034 E8D47D2480 CALL I32 PUT_CHARS+0x0000
|
||||
_BUZZ_FIZZ+0x0039 BE06000000 MOV U64 RSI,U32 00000006
|
||||
_BUZZ_FIZZ+0x002A 48B846495A5A MOV U64 RAX,I64 000000205A5A4946
|
||||
_BUZZ_FIZZ+0x0030 20000000
|
||||
_BUZZ_FIZZ+0x0034 E80A202BC0 CALL I32 PUT_CHARS+0x0000
|
||||
_BUZZ_FIZZ+0x0039 BE06000000 MOV U32 ESI,U32 00000006
|
||||
_BUZZ_FIZZ+0x003E 48FFCF DEC U64 RDI
|
||||
_BUZZ_FIZZ+0x0041 7514 JNZ I8 _BUZZ_FIZZ+0x0057
|
||||
_BUZZ_FIZZ+0x0043 48B842555A5A MOV U64 RAX,U32 5A5A5542
|
||||
_BUZZ_FIZZ+0x0049 2000 AND U8 [RAX],U8 AL
|
||||
_BUZZ_FIZZ+0x004B 0000 ADD U8 [RAX],U8 AL
|
||||
_BUZZ_FIZZ+0x004D E8BB7D2480 CALL I32 PUT_CHARS+0x0000
|
||||
_BUZZ_FIZZ+0x0052 BF07000000 MOV U64 RDI,U32 00000007
|
||||
_BUZZ_FIZZ+0x0057 B80A000000 MOV U64 RAX,U32 0000000A
|
||||
_BUZZ_FIZZ+0x005C E8AC7D2480 CALL I32 PUT_CHARS+0x0000
|
||||
_BUZZ_FIZZ+0x0043 48B842555A5A MOV U64 RAX,I64 000000205A5A5542
|
||||
_BUZZ_FIZZ+0x0049 20000000
|
||||
_BUZZ_FIZZ+0x004D E8F11F2BC0 CALL I32 PUT_CHARS+0x0000
|
||||
_BUZZ_FIZZ+0x0052 BF07000000 MOV U32 EDI,U32 00000007
|
||||
_BUZZ_FIZZ+0x0057 B80A000000 MOV U32 EAX,U32 0000000A
|
||||
_BUZZ_FIZZ+0x005C E8E21F2BC0 CALL I32 PUT_CHARS+0x0000
|
||||
_BUZZ_FIZZ+0x0061 58 POP U64 RAX
|
||||
_BUZZ_FIZZ+0x0062 48FFC0 INC U64 RAX
|
||||
_BUZZ_FIZZ+0x0065 4883F864 CMP U64 RAX,I8 64
|
||||
|
||||
@@ -26,7 +26,7 @@ MUL_BY_HAND_U8_U8_TO_U16: //This is only for fun.
|
||||
_MUL_BY_HAND_U8_U8_TO_U16:: //C callable
|
||||
PUSH RBP
|
||||
MOV RBP,RSP
|
||||
MOV AL,U8 SF_ARG1[RBP] //$LK,"SF_ARG1",A="FF:::/Kernel/Adam1a.HPP,SF_ARG1"$
|
||||
MOV AL,U8 SF_ARG1[RBP] //$LK,"SF_ARG1",A="FF:::/Kernel/KernelA.HPP,SF_ARG1"$
|
||||
MOV BL,U8 SF_ARG2[RBP]
|
||||
CALL MUL_BY_HAND_U8_U8_TO_U16
|
||||
MOVZX RAX,AX
|
||||
@@ -38,7 +38,7 @@ _MUL_U64_U64_TO_U128::
|
||||
PUSH RBP
|
||||
MOV RBP,RSP
|
||||
MOV RBX,U64 SF_ARG3[RBP]
|
||||
MOV RAX,U64 SF_ARG1[RBP] //$LK,"SF_ARG1",A="FF:::/Kernel/Adam1a.HPP,SF_ARG1"$
|
||||
MOV RAX,U64 SF_ARG1[RBP] //$LK,"SF_ARG1",A="FF:::/Kernel/KernelA.HPP,SF_ARG1"$
|
||||
MUL U64 SF_ARG2[RBP] //Result RDX:RAX 128bit
|
||||
MOV U64 [RBX],RAX
|
||||
MOV U64 8[RBX],RDX
|
||||
|
||||
+1
-1
@@ -6,7 +6,7 @@ PUT_DEC_U64::
|
||||
MOV RBP,RSP
|
||||
SUB RSP,24 //24 char buffer on stack
|
||||
|
||||
//$LK,"Save regs",A="FF:::/Kernel/Adam1a.HPP,PUSH_C_REGS"$ which C code is free to clobber. We don't have to for C callers,
|
||||
//$LK,"Save regs",A="FF:::/Kernel/KernelA.HPP,PUSH_C_REGS"$ which C code is free to clobber. We don't have to for C callers,
|
||||
//but this function will be nice for ASM callers if it saves all regs.
|
||||
PUSH_C_REGS
|
||||
|
||||
|
||||
Reference in new issue
Block a user