(none of this is actually realised)
A fully documented assembly language that can be losslessly compiled to DM bytecode and back.
A DMASM document currently only represents a single proc (and thus contains no proc definitions - just the inner code.)
(TODO)
Details of the VM's state go here. Uh, there's a stack. a cache register, some registers for the iterator state. What else?
(TODO)
- A DMASM document is encoded with valid UTF-8
- Lines starting with
;are comments (they can start mid-line too) - Lines which are an identifier followed by
:are labels. - All other lines are whitespace or instructions
Operands are like function parameters. Instructions expect a specific set of operands (and sometimes none at all.) that specifies what they should do.
| Operand | Example | Description |
|---|---|---|
| SInt | 5 or 0x6 |
32-bit signed integer. Simple enough. |
| UInt | 5u or 0x6u |
32-bit unsigned integer. |
| Label | MyLabelName |
Reference to another instruction. |
| String | "Hello, World!" |
UTF-8 encoded string. There are some escape sequences available (TODO). |
| Value | Value(0xFF, 0xFFFFFFFF) |
Hardcoded internal DM value. |
| Proc | /proc/DoStuff |
Reference to a proc. It could even be to the current proc. |
| Variable | See Variable Operand | Reference to a variable. |
| Switch | See Switch Operands | Settings for performing a switch statement. |
| SwitchPick | See Switch Operands | Settings for performing a switch statement. |
| SwitchRange | See Switch Operands | Settings for performing a switch statement. |
TODO: Too complex. Skipped for now.
TODO: Too complex. Skipped for now.
| Instruction | Syntax | Description |
|---|---|---|
| End | End |
Returns the contents of the DOT variable from the current function. |
| New | New <ArgCount: UInt> |
Pushes a new object using data that was pushed to the stack (TODO.) |
| Format | Format <FormatStr: String> <ArgCount: UInt> |
Pushes a new string using the given format string and values from the stack. |
| Output | Output |
Outputs to an object using the two values at the top of the stack. |
| OutputFormat | OutputFormat <FormatStr: String> <ArgCount: UInt> |
Combines the behaviour of Format and Output. |
| Read | Read |
TODO |
| Stat | Stat |
TODO |
| Link | Link |
TODO |
| OutputFtp | OutputFtp |
TODO |
| OutputRun | OutputRun |
TODO |
| !!! Missile | Missile |
TODO |
| Del | Del |
Clears all existing references to the value at the top of the stack. |
| Test | Test |
TODO |
| Not | Not |
TODO |
| Jmp | Jmp <Destination: Label> |
TODO |
| !!!Jnz | Jnz ??? |
TODO |
| Jz | Jz <Destination: Label> |
TODO |
| Ret | Ret |
Returns the value at the top of the stack from the current function. |
| IsLoc | IsLoc |
TODO |
| IsMob | IsMob |
TODO |
| IsObj | IsObj |
TODO |
| IsArea | IsArea |
TODO |
| IsTurf | IsTurf |
TODO |
| Alert | Alert |
TODO |
| EmptyList | EmptyList |
TODO |
| NewList | NewList <Count: UInt> |
TODO |
| View | View |
TODO |
| OView | OView |
TODO |
| !!!ViewTarget | ViewTarget?? |
TODO |
| !!!OViewTarget | OViewTarget?? |
TODO |
| Block | Block |
TODO |
| Prob | Prob |
TODO |
| Rand | Rand |
TODO |
| RandRange | RandRange |
TODO |
| Sleep | Sleep |
TODO |
| Spawn | Spawn <Destination: Label> |
TODO |
| BrowseRsc | BrowseRsc |
TODO |
| IsIcon | IsIcon |
TODO |
| Call | Call <Proc: Variable> <ArgCount: UInt> |
TODO |
| CallNoReturn | CallNoReturn <Proc: Variable> <ArgCount: UInt> |
TODO |
| CallPath | CallPath <ArgCount: UInt> |
TODO |
| CallParent | CallParent |
TODO |
| CallParentArgList | CallParentArgList |
TODO |
| CallParentArgs | CallParentArgs <ArgCount: UInt> |
TODO |
| CallSelf | CallSelf |
TODO |
| CallSelfArgList | CallSelfArgList |
TODO |
| CallSelfArgs | CallSelfArgs <ArgCount: UInt> |
TODO |
| CallGlob | CallGlob <Proc> <ArgCount: UInt> |
TODO |
| Log10 | Log10 |
TODO |
| Log | Log |
TODO |
| GetVar | GetVar <Variable> |
TODO |
| SetVar | SetVar <Variable> |
TODO |
| SetVarNoPop | SetVarNoPop <Variable> |
TODO |
| GetFlag | GetFlag |
TODO |
| Teq | Teq |
TODO |
| Tne | Tne |
TODO |
| Tl | Tl |
TODO |
| Tg | Tg |
TODO |
| Tle | Tle |
TODO |
| Tge | Tge |
TODO |
| TestNotEquiv | TestNotEquiv |
TODO |
| UnaryNeg | UnaryNeg |
TODO |
| Add | Add |
TODO |
| Sub | Sub |
TODO |
| Mul | Mul |
TODO |
| Div | Div |
TODO |
| Mod | Mod |
TODO |
| Round | Round |
TODO |
| RoundN | RoundN |
TODO |
| AugAdd | AugAdd <Variable> |
TODO |
| AugSub | AugSub <Variable> |
TODO |
| AugMul | AugMul <Variable> |
TODO |
| AugDiv | AugDiv <Variable> |
TODO |
| AugMod | AugMod <Variable> |
TODO |
| AugBand | AugBand <Variable> |
TODO |
| AugBor | AugBor <Variable> |
TODO |
| AugXor | AugXor <Variable> |
TODO |
| AugLShift | AugLShift <Variable> |
TODO |
| AugRShift | AugRShift <Variable> |
TODO |
| PushInt | PushInt <SInt> |
TODO |
| Pop | Pop |
TODO |
| IterLoad | IterLoad <UInt> <UInt> |
TODO |
| IterNext | IterNext |
TODO |
| IterPush | IterPush |
TODO |
| IterPop | IterPop |
TODO |
| !!!Roll | Roll??? |
TODO |
| LocatePos | LocatePos |
TODO |
| LocateRef | LocateRef |
TODO |
| Flick | Flick |
TODO |
| !!!Shutdown | Shutdown??? |
TODO |
| !!!Startup | Startup??? |
TODO |
| RollStr | RollStr |
TODO |
| PushVal | PushVal <Value> |
TODO |
| NewImage | NewImage |
TODO |
| PreInc | PreInc <Variable> |
TODO |
| PostInc | PostInc <Variable> |
TODO |
| PreDec | PreDec <Variable> |
TODO |
| PostDec | PostDec <Variable> |
TODO |
| Inc | Inc <Variable> |
TODO |
| Dec | Dec <Variable> |
TODO |
| Abs | Abs |
TODO |
| Sqrt | Sqrt |
TODO |
| Pow | Pow |
TODO |
| Turn | Turn |
TODO |
| !!!AddText | AddText?? |
TODO |
| Length | Length |
TODO |
| CopyText | CopyText |
TODO |
| FindText | FindText |
TODO |
| FindTextEx | FindTextEx |
TODO |
| CmpText | CmpText |
TODO |
| SortText | SortText <ArgCount: UInt> |
TODO |
| SortTextEx | SortTextEx <ArgCount: UInt> |
TODO |
| UpperText | UpperText |
TODO |
| LowerText | LowerText |
TODO |
| Ascii2Text | Ascii2Text |
TODO |
| Text2Ascii | Text2Ascii |
TODO |
| Text2Num | Text2Num |
TODO |
| Num2Text | Num2Text |
TODO |
| Num2TextSigFigs | Num2TextSigFigs |
TODO |
| Switch | Switch <Switch> |
TODO |
| SwitchPick | SwitchPick <SwitchPick> |
TODO |
| SwitchRange | SwitchRange <SwitchRange> |
TODO |
| ListGet | ListGet |
TODO |
| ListSet | ListSet |
TODO |
| BeginListSetExpr | BeginListSetExpr |
TODO |
| IsType | IsType |
TODO |
| Band | Band |
TODO |
| Bor | Bor |
TODO |
| Bxor | Bxor |
TODO |
| Bnot | Bnot |
TODO |
| LShift | LShift |
TODO |
| RShift | RShift |
TODO |
| DbgFile | DbgFile <String> |
TODO |
| DbgLine | DbgLine <UInt> |
TODO |
| Step | Step |
TODO |
| StepTo | StepTo |
TODO |
| StepAway | StepAway |
TODO |
| StepTowards | StepTowards |
TODO |
| StepRand | StepRand |
TODO |
| StepSpeed | StepSpeed |
TODO |
| StepToSpeed | StepToSpeed |
TODO |
| Walk | Walk |
TODO |
| WalkTo | WalkTo |
TODO |
| WalkAway | WalkAway |
TODO |
| WalkTowards | WalkTowards |
TODO |
| WalkRand | WalkRand |
TODO |
| GetStep | GetStep |
TODO |
| GetStepTo | GetStepTo |
TODO |
| GetStepAway | GetStepAway |
TODO |
| GetStepTowards | GetStepTowards |
TODO |
| GetStepRand | GetStepRand |
TODO |
| GetDist | GetDist |
TODO |
| GetDir | GetDir |
TODO |
| LocateType | LocateType |
TODO |
| Shell | Shell |
TODO |
| Text2File | Text2File |
TODO |
| File2Text | File2Text |
TODO |
| FCopy | FCopy |
TODO |
| IsNull | IsNull |
TODO |
| IsNum | IsNum |
TODO |
| IsText | IsText |
TODO |
| !!!StatPanel | StatPanel?? |
TODO |
| !!!StatPanelCheck | StatPanelCheck?? |
TODO |
| Min | Min <ArgCount: UInt> |
TODO |
| Max | Max <ArgCount: UInt> |
TODO |
| TypesOf | TypesOf <ArgCount: UInt> |
TODO |
| CKey | CKey |
TODO |
| In | In |
TODO |
| InRange | InRange |
TODO |
| !!!Browse | Browse?? |
TODO |
| BrowseOpt | BrowseOpt |
TODO |
| FList | FList |
TODO |
| Index | Index |
TODO |
| JmpOr | JmpOr <Label> |
TODO |
| JmpAnd | JmpAnd <Label> |
TODO |
| FDel | FDel |
TODO |
| CallName | CallName <ArgCount: UInt> |
TODO |
| List2Params | List2Params |
TODO |
| Params2List | Params2List |
TODO |
| CKeyEx | CKeyEx |
TODO |
| PromptCheck | PromptCheck |
TODO |
| Rgb | Rgb |
TODO |
| Rgba | Rgba |
TODO |
| HasCall | HasCall |
TODO |
| HtmlEncode | HtmlEncode |
TODO |
| HtmlDecode | HtmlDecode |
TODO |
| Time2Text | Time2Text |
TODO |
| Input | Input <UInt> <UInt> <UInt> |
TODO |
| InputColor | Input <UInt> <UInt> <UInt> |
TODO |
| Sin | Sin |
TODO |
| Cos | Cos |
TODO |
| ArcSin | ArcSin |
TODO |
| ArcCos | ArcCos |
TODO |
| Crash | Crash |
TODO |
| NewAssocList | NewAssocList <ArgCount: UInt> |
TODO |
| CallPathArgList | CallPathArgList |
TODO |
| CallNameArgList | CallNameArgList |
TODO |
| CallGlobalArgList | CallGlobalArgList <Proc> |
TODO |
| NewArgList | NewArgList |
TODO |
| MinList | MinList |
TODO |
| MaxList | MaxList |
TODO |
| Pick | Pick |
TODO |
| PickProb | PickProb <Label>, ... |
TODO |
| NewImageArgList | NewImageArgList |
TODO |
| NewImageArgs | NewImageArgs <ArgCount: UInt> |
TODO |
| FCopyRsc | FCopyRsc |
TODO |
| RandSeed | RandSeed |
TODO |
| IconStates | IconStates |
TODO |
| IconNew | IconNew <ArgCount: UInt> |
TODO |
| TurnOrFlipIcon | TurnOrFlipIcon <Mode: UInt> <Variable> |
TODO |
| IconIntensity | IconIntensity <Variable> |
TODO |
| IconBlend | IconBlend <Variable> |
TODO |
| IconSwapColor | IconSwapColor <Variable> |
TODO |
| IconDrawBox | IconDrawBox <Variable> |
TODO |
| IconInsert | IconInsert <ArgCount: UInt> |
TODO |
| IconMapColors | IconMapColors <ArgCount: UInt> |
TODO |
| IconScale | IconScale <Variable> |
TODO |
| IconCrop | IconCrop <Variable> |
TODO |
| IconGetPixel | IconGetPixel(ParamCount), <ArgCount: UInt> |
TODO |
| IconSize | IconSize |
TODO |
| ShiftIcon | ShiftIcon <Variable> |
TODO |
| IsFile | IsFile |
TODO |
| Viewers | Viewers |
TODO |
| OViewers | OViewers |
TODO |
| Hearers | Hearers |
TODO |
| OHearers | OHearers |
TODO |
| IsPath | IsPath |
TODO |
| IsSubPath | IsSubPath |
TODO |
| FExists | FExists |
TODO |
| Jmp2 | Jmp2 <Label> |
TODO |
| Jnz2 | Jnz2 <Label> |
TODO |
| Jz2 | Jz2 <Label> |
TODO |
| PopN | PopN <UInt> |
TODO |
| CheckNum | CheckNum |
TODO |
| Range | Range |
TODO |
| Orange | Orange |
TODO |
| ForRange | ForRange <Label> <Variable> |
TODO |
| ForRangeStepSetup | ForRangeStepSetup |
TODO |
| ForRangeStep | ForRangeStep <Label> <Variable> |
TODO |
| UrlEncode | UrlEncode |
TODO |
| UrlDecode | UrlDecode |
TODO |
| Md5 | Md5 |
TODO |
| Text2Path | Text2Path |
TODO |
| WinOutput | WinOutput |
TODO |
| WinSet | WinSet |
TODO |
| WinGet | WinGet |
TODO |
| WinClone | WinClone |
TODO |
| WinShow | WinShow |
TODO |
| IconStatesMode | IconStatesMode |
TODO |
| CallLib | CallLib <ArgCount: UInt> |
TODO |
| CallLibArgList | CallLibArgList |
TODO |
| WinExists | WinExists |
TODO |
| !!!Bounds | Bounds?? |
TODO |
| !!!OBounds | OBounds?? |
TODO |
| BoundsDist | BoundsDist |
TODO |
| !!!StepAwaySpeed | StepAwaySpeed?? |
TODO |
| !!!StepTowardsSpeed | StepTowardsSpeed?? |
TODO |
| !!!StepRandSpeed | StepRandSpeed?? |
TODO |
| !!!WalkSpeed | WalkSpeed?? |
TODO |
| !!!WalkToSpeed | WalkToSpeed?? |
TODO |
| !!!WalkAwaySpeed | WalkAwaySpeed?? |
TODO |
| !!!WalkTowardsSpeed | WalkTowardsSpeed?? |
TODO |
| !!!WalkRandSpeed | WalkRandSpeed?? |
TODO |
| Animate | Animate |
TODO |
| NullAnimate | NullAnimate |
TODO |
| MatrixNew | MatrixNew <ArgCount: UInt> |
TODO |
| Database | Database <ArgCount: UInt> |
TODO |
| Try | Try <Label> |
TODO |
| Throw | Throw |
TODO |
| Catch | Catch <Label> |
TODO |
| ReplaceText | ReplaceText |
TODO |
| ReplaceTextEx | ReplaceTextEx |
TODO |
| FindLastText | FindLastText |
TODO |
| FindLastTextEx | FindLastTextEx |
TODO |
| !!!SpanText | SpanText?? |
TODO |
| !!!NonSpanText | NonSpanText?? |
TODO |
| SplitText | SplitText |
TODO |
| JoinText | JoinText |
TODO |
| JsonEncode | JsonEncode |
TODO |
| JsonDecode | JsonDecode |
TODO |
| RegexNew | RegexNew <ArgCount: UInt> |
TODO |
| FilterNewArgList | FilterNewArgList |
TODO |
| JmpIfNull | JmpIfNull <Label> |
TODO |
| JmpIfNull2 | JmpIfNull2 <Label> |
TODO |
| NullCacheMaybe | NullCacheMaybe |
TODO |
| PushToCache | PushToCache |
TODO |
| PopFromCache | PopFromCache |
TODO |
| Tan | Tan |
TODO |
| ArcTan | ArcTan |
TODO |
| ArcTan2 | ArcTan2 |
TODO |
| IsList | IsList |
TODO |
| Ref | Ref |
TODO |
| IsMovable | IsMovable |
TODO |
| Clamp | Clamp |
TODO |
| !!!Sha1 | Sha1?? |
TODO |
| LengthChar | LengthChar |
TODO |
| FindTextChar | FindTextChar |
TODO |
| CopyTextChar | CopyTextChar |
TODO |
| ReplaceTextChar | ReplaceTextChar |
TODO |
| ReplaceTextExChar | ReplaceTextExChar |
TODO |
| FindLastTextChar | FindLastTextChar |
TODO |
| FindLastTextExChar | FindLastTextExChar |
TODO |
| SpanTextChar | SpanTextChar |
TODO |
| NonSpanTextChar | NonSpanTextChar |
TODO |
| !!!SplitTextChar | SplitTextChar?? |
TODO |
| Text2NumRadix | Text2NumRadix |
TODO |
| Num2TextRadix | Num2TextRadix |
TODO |
| DebugBreak | DebugBreak |
TODO |