Files
RedBear-OS/local/recipes/kde/kf6-syntaxhighlighting/source/autotests/html/highlight.asm-fasm.html
T

524 lines
54 KiB
HTML

<!DOCTYPE html>
<html><head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<title>highlight.asm-fasm</title>
<meta name="generator" content="KF5::SyntaxHighlighting - Definition (Intel x86 (FASM)) - Theme (Breeze Light)"/>
</head><body style="background-color:#ffffff;color:#1f1c1b"><pre>
<span style="font-weight:bold">jmp</span> <span style="color:#ca60ca">near</span> <span style="color:#0057ae">dword</span> <span style="color:#ca60ca">[</span><span style="color:#b08000">0</span><span style="color:#ca60ca">]</span>
<span style="font-weight:bold">jmp</span> <span style="color:#ca60ca">far</span> <span style="color:#0057ae">dword</span> <span style="color:#ca60ca">[</span><span style="color:#b08000">0</span><span style="color:#ca60ca">]</span>
<span style="color:#644a9b;font-weight:bold">mov</span> <span style="font-weight:bold">bx</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">ax</span> <span style="color:#898887">; general register to general register</span>
<span style="color:#644a9b;font-weight:bold">mov</span> <span style="color:#ca60ca">[</span>char<span style="color:#ca60ca">],</span><span style="font-weight:bold">al</span> <span style="color:#898887">; general register to memory</span>
<span style="color:#644a9b;font-weight:bold">mov</span> <span style="font-weight:bold">dl</span><span style="color:#ca60ca">,</span><span style="color:#b08000">32</span> <span style="color:#898887">; immediate value to general register</span>
<span style="color:#644a9b;font-weight:bold">mov</span> <span style="font-weight:bold">cr3</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">ebx</span> <span style="color:#898887">; general register to control register</span>
<span style="color:#644a9b;font-weight:bold">xchg</span> <span style="font-weight:bold">ax</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">bx</span> <span style="color:#898887">; swap two general registers</span>
<span style="color:#644a9b;font-weight:bold">xchg</span> <span style="font-weight:bold">al</span><span style="color:#ca60ca">,[</span>char<span style="color:#ca60ca">]</span> <span style="color:#898887">; swap register with memory</span>
<span style="color:#644a9b;font-weight:bold">push</span> <span style="font-weight:bold">ax</span> <span style="color:#898887">; store general register</span>
<span style="color:#644a9b;font-weight:bold">push</span> <span style="font-weight:bold">es</span> <span style="color:#898887">; store segment register</span>
<span style="color:#644a9b;font-weight:bold">pushw</span> <span style="color:#ca60ca">[</span><span style="font-weight:bold">bx</span><span style="color:#ca60ca">]</span> <span style="color:#898887">; store memory</span>
<span style="color:#644a9b;font-weight:bold">push</span> <span style="color:#b08000">1000</span><span style="color:#b08000">h</span> <span style="color:#898887">; store immediate value</span>
<span style="color:#644a9b;font-weight:bold">imul</span> <span style="font-weight:bold">ax</span><span style="color:#ca60ca">,[</span><span style="font-weight:bold">si</span><span style="color:#ca60ca">],</span><span style="color:#b08000">10</span> <span style="color:#898887">; memory by immediate value to register</span>
<span style="color:#644a9b;font-weight:bold">bt</span> <span style="font-weight:bold">ax</span><span style="color:#ca60ca">,</span><span style="color:#b08000">15</span> <span style="color:#898887">; test bit in register</span>
<span style="color:#644a9b;font-weight:bold">bts</span> <span style="color:#0057ae">word</span> <span style="color:#ca60ca">[</span><span style="font-weight:bold">bx</span><span style="color:#ca60ca">],</span><span style="color:#b08000">15</span> <span style="color:#898887">; test and set bit in memory</span>
<span style="color:#644a9b;font-weight:bold">bswap</span> <span style="font-weight:bold">edx</span> <span style="color:#898887">; swap bytes in register</span>
<span style="font-weight:bold">jmp</span> <span style="color:#b08000">100</span><span style="color:#b08000">h</span> <span style="color:#898887">; direct near jump</span>
<span style="font-weight:bold">jmp</span> <span style="color:#b08000">0FFFF</span><span style="color:#b08000">h</span><span style="color:#ca60ca">:</span><span style="color:#b08000">0</span> <span style="color:#898887">; direct far jump</span>
<span style="font-weight:bold">jmp</span> <span style="font-weight:bold">ax</span> <span style="color:#898887">; indirect near jump</span>
<span style="font-weight:bold">jmp</span> <span style="color:#0057ae">pword</span> <span style="color:#ca60ca">[</span><span style="font-weight:bold">ebx</span><span style="color:#ca60ca">]</span> <span style="color:#898887">; indirect far jump</span>
<span style="color:#644a9b;font-weight:bold">movs</span> <span style="color:#0057ae">byte</span> <span style="color:#ca60ca">[</span><span style="font-weight:bold">di</span><span style="color:#ca60ca">],[</span><span style="font-weight:bold">si</span><span style="color:#ca60ca">]</span> <span style="color:#898887">; transfer byte</span>
<span style="color:#644a9b;font-weight:bold">movs</span> <span style="color:#0057ae">word</span> <span style="color:#ca60ca">[</span><span style="font-weight:bold">es</span><span style="color:#ca60ca">:</span><span style="font-weight:bold">di</span><span style="color:#ca60ca">],[</span><span style="font-weight:bold">ss</span><span style="color:#ca60ca">:</span><span style="font-weight:bold">si</span><span style="color:#ca60ca">]</span> <span style="color:#898887">; transfer word</span>
<span style="color:#644a9b;font-weight:bold">movsd</span> <span style="color:#898887">; transfer double word</span>
<span style="color:#644a9b;font-weight:bold">cmpxchg8b</span> <span style="color:#ca60ca">[</span><span style="font-weight:bold">bx</span><span style="color:#ca60ca">]</span> <span style="color:#898887">; compare and exchange 8 bytes</span>
<span style="color:#644a9b;font-weight:bold">movq2dq</span> <span style="font-weight:bold">xmm0</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">mm1</span> <span style="color:#898887">; move from MMX register to SSE register</span>
<span style="color:#644a9b;font-weight:bold">movdq2q</span> <span style="font-weight:bold">mm0</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">xmm1</span> <span style="color:#898887">; move from SSE register to MMX register</span>
<span style="color:#644a9b;font-weight:bold">enter</span> <span style="color:#b08000">2048</span><span style="color:#ca60ca">,</span><span style="color:#b08000">0</span> <span style="color:#898887">; enter and allocate 2048 bytes on stack</span>
<span style="color:#644a9b;font-weight:bold">mov</span> <span style="color:#ca60ca">[</span>rip<span style="color:#ca60ca">+</span><span style="color:#b08000">3</span><span style="color:#ca60ca">],</span>sil <span style="color:#898887">; manual RIP-relative addressing</span>
<span style="color:#644a9b;font-weight:bold">blendvps</span> <span style="font-weight:bold">xmm3</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">xmm7</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">xmm0</span> <span style="color:#898887">; blend according to mask</span>
<span style="color:#644a9b;font-weight:bold">vgatherqps</span> <span style="font-weight:bold">xmm0</span><span style="color:#ca60ca">,[</span><span style="font-weight:bold">xmm2</span><span style="color:#ca60ca">],</span><span style="font-weight:bold">xmm3</span> <span style="color:#898887">; gather two floats</span>
<span style="color:#644a9b;font-weight:bold">vgatherqps</span> <span style="font-weight:bold">xmm0</span><span style="color:#ca60ca">,[</span><span style="font-weight:bold">ymm2</span><span style="color:#ca60ca">+</span><span style="color:#b08000">64</span><span style="color:#ca60ca">],</span><span style="font-weight:bold">xmm3</span> <span style="color:#898887">; gather four floats</span>
<span style="color:#644a9b;font-weight:bold">vfmsub231ps</span> <span style="font-weight:bold">ymm1</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">ymm2</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">ymm3</span> <span style="color:#898887">; multiply and subtract</span>
<span style="color:#644a9b;font-weight:bold">vfnmadd132sd</span> <span style="font-weight:bold">xmm0</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">xmm5</span><span style="color:#ca60ca">,[</span><span style="font-weight:bold">ebx</span><span style="color:#ca60ca">]</span> <span style="color:#898887">; multiply, negate and add</span>
<span style="color:#644a9b;font-weight:bold">vpermil2ps</span> <span style="font-weight:bold">ymm0</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">ymm3</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">ymm7</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">ymm2</span><span style="color:#ca60ca">,</span><span style="color:#b08000">0</span> <span style="color:#898887">; permute from two sources</span>
<span style="color:#644a9b;font-weight:bold">vscatterdps</span> <span style="color:#ca60ca">[</span><span style="font-weight:bold">eax</span><span style="color:#ca60ca">+</span><span style="font-weight:bold">xmm1</span><span style="color:#ca60ca">]{</span><span style="font-weight:bold">k1</span><span style="color:#ca60ca">},</span><span style="font-weight:bold">xmm0</span> <span style="color:#898887">; scatter four floats</span>
<span style="color:#644a9b;font-weight:bold">vscatterdpd</span> <span style="color:#ca60ca">[</span><span style="font-weight:bold">ymm3</span><span style="color:#ca60ca">*</span><span style="color:#b08000">8</span><span style="color:#ca60ca">]{</span><span style="font-weight:bold">k3</span><span style="color:#ca60ca">},</span><span style="font-weight:bold">zmm0</span> <span style="color:#898887">; scatter eight doubles</span>
<span style="color:#0057ae">dd</span> sum
x <span style="color:#ca60ca">=</span> <span style="color:#b08000">1</span>
x <span style="color:#ca60ca">=</span> x<span style="color:#ca60ca">+</span><span style="color:#b08000">2</span>
sum <span style="color:#ca60ca">=</span> x
<span style="color:#006e28">if</span> count<span style="color:#ca60ca">></span><span style="color:#b08000">0</span>
<span style="color:#644a9b;font-weight:bold">mov</span> <span style="font-weight:bold">cx</span><span style="color:#ca60ca">,</span>count
<span style="color:#644a9b;font-weight:bold">rep</span> <span style="color:#644a9b;font-weight:bold">movsb</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">if</span>
<span style="color:#006e28">if</span> count <span style="color:#ca60ca">&amp;</span> <span style="color:#ca60ca">~</span> count <span style="color:#ca60ca">mod</span> <span style="color:#b08000">4</span>
<span style="color:#644a9b;font-weight:bold">mov</span> <span style="font-weight:bold">cx</span><span style="color:#ca60ca">,</span>count<span style="color:#ca60ca">/</span><span style="color:#b08000">4</span>
<span style="color:#644a9b;font-weight:bold">rep</span> <span style="color:#644a9b;font-weight:bold">movsd</span>
<span style="color:#006e28">else</span> <span style="color:#006e28">if</span> count<span style="color:#ca60ca">></span><span style="color:#b08000">4</span>
<span style="color:#644a9b;font-weight:bold">mov</span> <span style="font-weight:bold">cx</span><span style="color:#ca60ca">,</span>count<span style="color:#ca60ca">/</span><span style="color:#b08000">4</span>
<span style="color:#644a9b;font-weight:bold">rep</span> <span style="color:#644a9b;font-weight:bold">movsd</span>
<span style="color:#644a9b;font-weight:bold">mov</span> <span style="font-weight:bold">cx</span><span style="color:#ca60ca">,</span>count <span style="color:#ca60ca">mod</span> <span style="color:#b08000">4</span>
<span style="color:#644a9b;font-weight:bold">rep</span> <span style="color:#644a9b;font-weight:bold">movsb</span>
<span style="color:#006e28">else</span>
<span style="color:#644a9b;font-weight:bold">mov</span> <span style="font-weight:bold">cx</span><span style="color:#ca60ca">,</span>count
<span style="color:#644a9b;font-weight:bold">rep</span> <span style="color:#644a9b;font-weight:bold">movsb</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">if</span>
<span style="color:#006e28">repeat</span> <span style="color:#b08000">8</span>
<span style="color:#644a9b;font-weight:bold">mov</span> <span style="color:#0057ae">byte</span> <span style="color:#ca60ca">[</span><span style="font-weight:bold">bx</span><span style="color:#ca60ca">],%</span>
<span style="color:#644a9b;font-weight:bold">inc</span> <span style="font-weight:bold">bx</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">repeat</span>
s <span style="color:#ca60ca">=</span> x<span style="color:#ca60ca">/</span><span style="color:#b08000">2</span>
<span style="color:#006e28">repeat</span> <span style="color:#b08000">100</span>
<span style="color:#006e28">if</span> x<span style="color:#ca60ca">/</span>s <span style="color:#ca60ca">=</span> s
<span style="color:#006e28">break</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">if</span>
s <span style="color:#ca60ca">=</span> <span style="color:#ca60ca">(</span>s<span style="color:#ca60ca">+</span>x<span style="color:#ca60ca">/</span>s<span style="color:#ca60ca">)/</span><span style="color:#b08000">2</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">repeat</span>
<span style="color:#006e28">repeat</span> <span style="color:#ca60ca">$-$$</span>
<span style="color:#644a9b;font-weight:bold">load</span> a <span style="color:#0057ae">byte</span> from <span style="color:#ca60ca">$$+%-</span><span style="color:#b08000">1</span>
<span style="color:#644a9b;font-weight:bold">store</span> <span style="color:#0057ae">byte</span> a <span style="color:#ca60ca">xor</span> c at <span style="color:#ca60ca">$$+%-</span><span style="color:#b08000">1</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">repeat</span>
GDTR <span style="color:#0057ae">dp</span> <span style="color:#ca60ca">?</span>
<span style="color:#006e28">virtual</span> <span style="color:#006e28">at</span> GDTR
GDT_limit <span style="color:#0057ae">dw</span> <span style="color:#ca60ca">?</span>
GDT_address <span style="color:#0057ae">dd</span> <span style="color:#ca60ca">?</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">virtual</span>
<span style="color:#006e28">virtual</span> <span style="color:#006e28">at</span> <span style="color:#b08000">0</span>
<span style="color:#0057ae">file</span> <span style="color:#bf0303">'a.txt'</span><span style="color:#ca60ca">:</span><span style="color:#b08000">10</span><span style="color:#b08000">h</span><span style="color:#ca60ca">,</span><span style="color:#b08000">1</span>
<span style="color:#644a9b;font-weight:bold">load</span> char from <span style="color:#b08000">0</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">virtual</span>
<span style="color:#006e28">virtual</span> <span style="color:#006e28">at</span> <span style="color:#b08000">0</span> as <span style="color:#bf0303">'asc'</span>
<span style="color:#006e28">times</span> <span style="color:#b08000">256</span> <span style="color:#0057ae">db</span> <span style="color:#ca60ca">%-</span><span style="color:#b08000">1</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">virtual</span>
<span style="color:#006e28">virtual</span> <span style="color:#006e28">at</span> <span style="color:#b08000">0</span>
<span style="color:#644a9b">hex_digits:</span>:
<span style="color:#0057ae">db</span> <span style="color:#bf0303">'0123456789ABCDEF'</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">virtual</span>
<span style="color:#644a9b;font-weight:bold">load</span> a <span style="color:#0057ae">byte</span> from hex_digits<span style="color:#ca60ca">:</span><span style="color:#b08000">10</span>
bits <span style="color:#ca60ca">=</span> <span style="color:#b08000">16</span>
<span style="color:#006e28">display</span> <span style="color:#bf0303">'Current offset is 0x'</span>
<span style="color:#006e28">repeat</span> bits<span style="color:#ca60ca">/</span><span style="color:#b08000">4</span>
d <span style="color:#ca60ca">=</span> <span style="color:#bf0303">'0'</span> <span style="color:#ca60ca">+</span> <span style="color:#ca60ca">$</span> <span style="color:#ca60ca">shr</span> <span style="color:#ca60ca">(</span>bits<span style="color:#ca60ca">-%*</span><span style="color:#b08000">4</span><span style="color:#ca60ca">)</span> <span style="color:#ca60ca">and</span> <span style="color:#b08000">0F</span><span style="color:#b08000">h</span>
<span style="color:#006e28">if</span> d <span style="color:#ca60ca">></span> <span style="color:#bf0303">'9'</span>
d <span style="color:#ca60ca">=</span> d <span style="color:#ca60ca">+</span> <span style="color:#bf0303">'A'</span><span style="color:#ca60ca">-</span><span style="color:#bf0303">'9'</span><span style="color:#ca60ca">-</span><span style="color:#b08000">1</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">if</span>
<span style="color:#006e28">display</span> d
<span style="color:#006e28">end</span> <span style="color:#006e28">repeat</span>
<span style="color:#006e28">display</span> <span style="color:#b08000">13</span><span style="color:#ca60ca">,</span><span style="color:#b08000">10</span>
<span style="color:#006e28">if</span> <span style="color:#ca60ca">~</span> <span style="color:#ca60ca">defined</span> alpha
<span style="color:#644a9b">alpha:</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">if</span>
<span style="color:#006e28">if</span> <span style="color:#ca60ca">~</span> <span style="color:#ca60ca">defined</span> alpha <span style="color:#ca60ca">|</span> <span style="color:#ca60ca">defined</span> <span style="color:#644a9b">@f</span>
<span style="color:#644a9b">alpha:</span>
<span style="color:#644a9b">@@:</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">if</span>
<span style="color:#644a9b;font-weight:bold">include</span> <span style="color:#bf0303">'macros.inc'</span>
d equ <span style="color:#0057ae">dword</span>
NULL equ d <span style="color:#b08000">0</span>
d equ <span style="font-weight:bold">edx</span>
d equ d<span style="color:#ca60ca">,</span><span style="font-weight:bold">eax</span>
b equ <span style="color:#0057ae">byte</span>
w equ <span style="color:#0057ae">word</span>
d equ <span style="color:#0057ae">dword</span>
p equ <span style="color:#0057ae">pword</span>
f equ <span style="color:#0057ae">fword</span>
q equ <span style="color:#0057ae">qword</span>
t equ <span style="color:#0057ae">tword</span>
x equ <span style="color:#0057ae">dqword</span>
y equ <span style="color:#0057ae">qqword</span>
incl fix include
<span style="color:#006e28">macro</span> tst <span style="color:#ca60ca">{</span><span style="color:#644a9b;font-weight:bold">test</span> <span style="font-weight:bold">al</span><span style="color:#ca60ca">,</span><span style="color:#b08000">0x</span><span style="color:#b08000">FF</span><span style="color:#ca60ca">}</span>
<span style="color:#006e28">macro</span> stos0
<span style="color:#ca60ca">{</span>
<span style="color:#644a9b;font-weight:bold">xor</span> <span style="font-weight:bold">al</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">al</span>
<span style="color:#644a9b;font-weight:bold">stosb</span>
<span style="color:#ca60ca">}</span>
<span style="color:#006e28">macro</span> align value <span style="color:#ca60ca">{</span> <span style="color:#0057ae">rb</span> <span style="color:#ca60ca">(</span>value<span style="color:#ca60ca">-</span><span style="color:#b08000">1</span><span style="color:#ca60ca">)-($+</span>value<span style="color:#ca60ca">-</span><span style="color:#b08000">1</span><span style="color:#ca60ca">)</span> <span style="color:#ca60ca">mod</span> value <span style="color:#ca60ca">}</span>
<span style="color:#006e28">macro</span> mov op1<span style="color:#ca60ca">,</span>op2
<span style="color:#ca60ca">{</span>
<span style="color:#006e28">if</span> op1 in <span style="color:#ca60ca">&lt;</span><span style="font-weight:bold">ds</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">es</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">fs</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">gs</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">ss</span><span style="color:#ca60ca">></span> <span style="color:#ca60ca">&amp;</span> op2 in <span style="color:#ca60ca">&lt;</span><span style="font-weight:bold">cs</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">ds</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">es</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">fs</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">gs</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">ss</span><span style="color:#ca60ca">></span>
<span style="color:#644a9b;font-weight:bold">push</span> op2
<span style="color:#644a9b;font-weight:bold">pop</span> op1
<span style="color:#006e28">else</span>
<span style="color:#644a9b;font-weight:bold">mov</span> op1<span style="color:#ca60ca">,</span>op2
<span style="color:#006e28">end</span> <span style="color:#006e28">if</span>
<span style="color:#ca60ca">}</span>
<span style="color:#006e28">macro</span> stoschar <span style="color:#ca60ca">[</span>char<span style="color:#ca60ca">]</span>
<span style="color:#ca60ca">{</span>
<span style="color:#644a9b;font-weight:bold">mov</span> <span style="font-weight:bold">al</span><span style="color:#ca60ca">,</span>char
<span style="color:#644a9b;font-weight:bold">stosb</span>
<span style="color:#ca60ca">}</span>
<span style="color:#006e28">macro</span> movstr
<span style="color:#ca60ca">{</span>
<span style="color:#006e28">local</span> move
<span style="color:#644a9b">move:</span>
<span style="color:#644a9b;font-weight:bold">lodsb</span>
<span style="color:#644a9b;font-weight:bold">stosb</span>
<span style="color:#644a9b;font-weight:bold">test</span> <span style="font-weight:bold">al</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">al</span>
<span style="font-weight:bold">jnz</span> move
<span style="color:#ca60ca">}</span>
<span style="color:#006e28">macro</span> strtbl name<span style="color:#ca60ca">,[</span>string<span style="color:#ca60ca">]</span>
<span style="color:#ca60ca">{</span>
<span style="color:#006e28">common</span>
<span style="color:#006e28">label</span> name <span style="color:#0057ae">dword</span>
forward
<span style="color:#006e28">local</span> label
<span style="color:#0057ae">dd</span> label
forward
<span style="color:#006e28">label</span> <span style="color:#0057ae">db</span> string<span style="color:#ca60ca">,</span><span style="color:#b08000">0</span>
<span style="color:#ca60ca">}</span>
<span style="color:#644a9b;font-weight:bold">push</span> <span style="color:#b08000">3</span>
<span style="color:#644a9b;font-weight:bold">push</span> <span style="color:#b08000">2</span>
<span style="color:#644a9b;font-weight:bold">push</span> <span style="color:#b08000">1</span>
<span style="font-weight:bold">call</span> foo
<span style="color:#006e28">macro</span> invoke proc<span style="color:#ca60ca">,[</span>arg<span style="color:#ca60ca">]</span>
<span style="color:#ca60ca">{</span> <span style="color:#006e28">common</span> stdcall <span style="color:#ca60ca">[</span>proc<span style="color:#ca60ca">],</span>arg <span style="color:#ca60ca">}</span>
<span style="color:#006e28">macro</span> jif op1<span style="color:#ca60ca">,</span>cond<span style="color:#ca60ca">,</span>op2<span style="color:#ca60ca">,</span>label
<span style="color:#ca60ca">{</span>
<span style="color:#644a9b;font-weight:bold">cmp</span> op1<span style="color:#ca60ca">,</span>op2
j<span style="color:#ca60ca">#</span>cond label
<span style="color:#ca60ca">}</span>
<span style="color:#006e28">macro</span> label name
<span style="color:#ca60ca">{</span>
<span style="color:#006e28">label</span> name
<span style="color:#006e28">if</span> <span style="color:#ca60ca">~</span> <span style="color:#ca60ca">used</span> name
<span style="color:#006e28">display</span> <span style="color:#ca60ca">`</span>name <span style="color:#ca60ca">#</span> <span style="color:#bf0303">" is defined but not used."</span><span style="color:#ca60ca">,</span><span style="color:#b08000">13</span><span style="color:#ca60ca">,</span><span style="color:#b08000">10</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">if</span>
<span style="color:#ca60ca">}</span>
<span style="color:#006e28">macro</span> message arg
<span style="color:#ca60ca">{</span>
<span style="color:#006e28">if</span> arg eqtype <span style="color:#bf0303">""</span>
<span style="color:#006e28">local</span> str
<span style="font-weight:bold">jmp</span> <span style="color:#644a9b">@f</span>
<span style="color:#644a9b;font-weight:bold">str</span> <span style="color:#0057ae">db</span> arg<span style="color:#ca60ca">,</span><span style="color:#b08000">0D</span><span style="color:#b08000">h</span><span style="color:#ca60ca">,</span><span style="color:#b08000">0A</span><span style="color:#b08000">h</span><span style="color:#ca60ca">,</span><span style="color:#b08000">24</span><span style="color:#b08000">h</span>
<span style="color:#644a9b">@@:</span>
<span style="color:#644a9b;font-weight:bold">mov</span> <span style="font-weight:bold">dx</span><span style="color:#ca60ca">,</span>str
<span style="color:#006e28">else</span>
<span style="color:#644a9b;font-weight:bold">mov</span> <span style="font-weight:bold">dx</span><span style="color:#ca60ca">,</span>arg
<span style="color:#006e28">end</span> <span style="color:#006e28">if</span>
<span style="color:#644a9b;font-weight:bold">mov</span> <span style="font-weight:bold">ah</span><span style="color:#ca60ca">,</span><span style="color:#b08000">9</span>
<span style="color:#644a9b;font-weight:bold">int</span> <span style="color:#b08000">21</span><span style="color:#b08000">h</span>
<span style="color:#ca60ca">}</span>
<span style="color:#006e28">macro</span> ext instr
<span style="color:#ca60ca">{</span>
<span style="color:#006e28">macro</span> instr op1<span style="color:#ca60ca">,</span>op2<span style="color:#ca60ca">,</span>op3
\<span style="color:#ca60ca">{</span>
<span style="color:#006e28">if</span> op3 eq
instr op1<span style="color:#ca60ca">,</span>op2
<span style="color:#006e28">else</span>
instr op1<span style="color:#ca60ca">,</span>op2
instr op2<span style="color:#ca60ca">,</span>op3
<span style="color:#006e28">end</span> <span style="color:#006e28">if</span>
\<span style="color:#ca60ca">}</span>
<span style="color:#ca60ca">}</span>
ext add
ext sub
<span style="color:#006e28">macro</span> tmacro <span style="color:#ca60ca">[</span>params<span style="color:#ca60ca">]</span>
<span style="color:#ca60ca">{</span>
<span style="color:#006e28">common</span> macro params <span style="color:#ca60ca">{</span>
<span style="color:#ca60ca">}</span>
<span style="color:#006e28">MACRO</span> fix tmacro
ENDM fix <span style="color:#ca60ca">}</span>
<span style="color:#006e28">MACRO</span> stoschar char
<span style="color:#644a9b;font-weight:bold">mov</span> <span style="font-weight:bold">al</span><span style="color:#ca60ca">,</span>char
<span style="color:#644a9b;font-weight:bold">stosb</span>
ENDM
<span style="color:#006e28">postpone</span>
<span style="color:#ca60ca">{</span>
code_size <span style="color:#ca60ca">=</span> <span style="color:#ca60ca">$</span>
<span style="color:#ca60ca">}</span>
<span style="color:#006e28">struc</span> point x<span style="color:#ca60ca">,</span>y
<span style="color:#ca60ca">{</span>
.x <span style="color:#0057ae">dw</span> x
.y <span style="color:#0057ae">dw</span> y
<span style="color:#ca60ca">}</span>
<span style="color:#006e28">struc</span> <span style="color:#0057ae">db</span> <span style="color:#ca60ca">[</span>data<span style="color:#ca60ca">]</span>
<span style="color:#ca60ca">{</span>
<span style="color:#006e28">common</span>
. <span style="color:#0057ae">db</span> data
.size <span style="color:#ca60ca">=</span> <span style="color:#ca60ca">$</span> <span style="color:#ca60ca">-</span> <span style="color:#ca60ca">.</span>
<span style="color:#ca60ca">}</span>
<span style="color:#006e28">rept</span> <span style="color:#b08000">5</span> <span style="color:#ca60ca">{</span> <span style="color:#644a9b;font-weight:bold">in</span> <span style="font-weight:bold">al</span><span style="color:#ca60ca">,</span><span style="font-weight:bold">dx</span> <span style="color:#ca60ca">}</span>
<span style="color:#006e28">rept</span> <span style="color:#b08000">3</span> counter
<span style="color:#ca60ca">{</span>
byte<span style="color:#ca60ca">#</span>counter <span style="color:#0057ae">db</span> counter
<span style="color:#ca60ca">}</span>
<span style="color:#006e28">match</span> <span style="color:#ca60ca">+,+</span> <span style="color:#ca60ca">{</span> <span style="color:#644a9b;font-weight:bold">include</span> <span style="color:#bf0303">'first.inc'</span> <span style="color:#ca60ca">}</span>
<span style="color:#006e28">match</span> <span style="color:#ca60ca">+,-</span> <span style="color:#ca60ca">{</span> <span style="color:#644a9b;font-weight:bold">include</span> <span style="color:#bf0303">'second.inc'</span> <span style="color:#ca60ca">}</span>
<span style="color:#006e28">match</span> a b<span style="color:#ca60ca">,</span> <span style="color:#b08000">1</span><span style="color:#ca60ca">+</span><span style="color:#b08000">2</span><span style="color:#ca60ca">+</span><span style="color:#b08000">3</span> <span style="color:#ca60ca">{</span> <span style="color:#0057ae">db</span> a <span style="color:#ca60ca">}</span>
V fix <span style="color:#ca60ca">{</span>
<span style="color:#006e28">macro</span> empty
V
V fix <span style="color:#ca60ca">}</span>
V
list equ
<span style="color:#006e28">macro</span> append item
<span style="color:#ca60ca">{</span>
<span style="color:#006e28">match</span> any<span style="color:#ca60ca">,</span> list <span style="color:#ca60ca">\{</span> list equ list<span style="color:#ca60ca">,</span>item <span style="color:#ca60ca">\}</span>
<span style="color:#006e28">match</span> <span style="color:#ca60ca">,</span> list <span style="color:#ca60ca">\{</span> list equ item <span style="color:#ca60ca">\}</span>
<span style="color:#ca60ca">}</span>
define a b<span style="color:#ca60ca">+</span><span style="color:#b08000">4</span>
define b <span style="color:#b08000">3</span>
<span style="color:#006e28">rept</span> <span style="color:#b08000">1</span> result<span style="color:#ca60ca">:</span>a<span style="color:#ca60ca">*</span>b<span style="color:#ca60ca">+</span><span style="color:#b08000">2</span> <span style="color:#ca60ca">{</span> define c result <span style="color:#ca60ca">}</span>
<span style="color:#006e28">rept</span> <span style="color:#b08000">8</span> n<span style="color:#ca60ca">:</span><span style="color:#b08000">0</span> <span style="color:#ca60ca">{</span> <span style="color:#644a9b;font-weight:bold">pxor</span> xmm<span style="color:#ca60ca">#</span>n<span style="color:#ca60ca">,</span>xmm<span style="color:#ca60ca">#</span>n <span style="color:#ca60ca">}</span>
<span style="color:#006e28">irps</span> reg<span style="color:#ca60ca">,</span> <span style="font-weight:bold">al</span> <span style="font-weight:bold">bx</span> <span style="font-weight:bold">ecx</span>
<span style="color:#ca60ca">{</span> <span style="color:#644a9b;font-weight:bold">xor</span> reg<span style="color:#ca60ca">,</span>reg <span style="color:#ca60ca">}</span>
<span style="color:#006e28">if</span> <span style="color:#b08000">0</span>
a <span style="color:#ca60ca">=</span> <span style="color:#b08000">1</span>
b equ <span style="color:#b08000">2</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">if</span>
<span style="color:#0057ae">dd</span> b
<span style="color:#644a9b;font-weight:bold">extrn</span> exit
<span style="color:#644a9b;font-weight:bold">extrn</span> <span style="color:#bf0303">'__imp__MessageBoxA@16'</span> as MessageBox<span style="color:#ca60ca">:</span><span style="color:#0057ae">dword</span>
<span style="color:#644a9b;font-weight:bold">extrn</span> <span style="color:#bf0303">'printf'</span> as _printf
printf <span style="color:#ca60ca">=</span> <span style="color:#ca60ca">PLT</span> _printf
tester<span style="color:#ca60ca">?</span> <span style="color:#ca60ca">=</span> <span style="color:#b08000">0</span>
<span style="color:#644a9b">space:</span>
space<span style="color:#ca60ca">.</span>x <span style="color:#ca60ca">=</span> <span style="color:#b08000">1</span>
space<span style="color:#ca60ca">.</span>y <span style="color:#ca60ca">=</span> <span style="color:#b08000">2</span>
<span style="color:#644a9b">space.color:</span>
space<span style="color:#ca60ca">.</span>color<span style="color:#ca60ca">.</span>r <span style="color:#ca60ca">=</span> <span style="color:#b08000">0</span>
space<span style="color:#ca60ca">.</span>color<span style="color:#ca60ca">.</span>g <span style="color:#ca60ca">=</span> <span style="color:#b08000">0</span>
space<span style="color:#ca60ca">.</span>color<span style="color:#ca60ca">.</span>b <span style="color:#ca60ca">=</span> <span style="color:#b08000">0</span>
<span style="color:#644a9b">space:</span>
<span style="color:#006e28">namespace</span> space
x <span style="color:#ca60ca">=</span> <span style="color:#b08000">1</span>
y <span style="color:#ca60ca">=</span> <span style="color:#b08000">2</span>
<span style="color:#644a9b">color:</span>
.r <span style="color:#ca60ca">=</span> <span style="color:#b08000">0</span>
.g <span style="color:#ca60ca">=</span> <span style="color:#b08000">0</span>
.b <span style="color:#ca60ca">=</span> <span style="color:#b08000">0</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">namespace</span>
<span style="color:#644a9b">first:</span>
.child <span style="color:#ca60ca">=</span> <span style="color:#b08000">1</span>
..other <span style="color:#ca60ca">=</span> <span style="color:#b08000">0</span>
<span style="color:#644a9b">second:</span>
.child <span style="color:#ca60ca">=</span> <span style="color:#b08000">2</span>
..another <span style="color:#ca60ca">=</span> <span style="color:#ca60ca">..</span>other
<span style="color:#006e28">label</span> character<span style="color:#ca60ca">:</span><span style="color:#0057ae">byte</span>
<span style="color:#006e28">label</span> char<span style="color:#ca60ca">:</span><span style="color:#b08000">1</span>
<span style="color:#0057ae">byte</span><span style="color:#ca60ca">?</span> <span style="color:#ca60ca">=</span> <span style="color:#b08000">1</span> <span style="color:#898887">; 8 bits</span>
<span style="color:#0057ae">word</span><span style="color:#ca60ca">?</span> <span style="color:#ca60ca">=</span> <span style="color:#b08000">2</span> <span style="color:#898887">; 16 bits</span>
<span style="color:#0057ae">dword</span><span style="color:#ca60ca">?</span> <span style="color:#ca60ca">=</span> <span style="color:#b08000">4</span> <span style="color:#898887">; 32 bits</span>
<span style="color:#0057ae">fword</span><span style="color:#ca60ca">?</span> <span style="color:#ca60ca">=</span> <span style="color:#b08000">6</span> <span style="color:#898887">; 48 bits</span>
<span style="color:#0057ae">pword</span><span style="color:#ca60ca">?</span> <span style="color:#ca60ca">=</span> <span style="color:#b08000">6</span> <span style="color:#898887">; 48 bits</span>
<span style="color:#0057ae">qword</span><span style="color:#ca60ca">?</span> <span style="color:#ca60ca">=</span> <span style="color:#b08000">8</span> <span style="color:#898887">; 64 bits</span>
<span style="color:#0057ae">tbyte</span><span style="color:#ca60ca">?</span> <span style="color:#ca60ca">=</span> <span style="color:#b08000">10</span> <span style="color:#898887">; 80 bits</span>
<span style="color:#0057ae">tword</span><span style="color:#ca60ca">?</span> <span style="color:#ca60ca">=</span> <span style="color:#b08000">10</span> <span style="color:#898887">; 80 bits</span>
<span style="color:#0057ae">dqword</span><span style="color:#ca60ca">?</span> <span style="color:#ca60ca">=</span> <span style="color:#b08000">16</span> <span style="color:#898887">; 128 bits</span>
<span style="color:#0057ae">xword</span><span style="color:#ca60ca">?</span> <span style="color:#ca60ca">=</span> <span style="color:#b08000">16</span> <span style="color:#898887">; 128 bits</span>
<span style="color:#0057ae">qqword</span><span style="color:#ca60ca">?</span> <span style="color:#ca60ca">=</span> <span style="color:#b08000">32</span> <span style="color:#898887">; 256 bits</span>
<span style="color:#0057ae">yword</span><span style="color:#ca60ca">?</span> <span style="color:#ca60ca">=</span> <span style="color:#b08000">32</span> <span style="color:#898887">; 256 bits</span>
<span style="color:#0057ae">dqqword</span><span style="color:#ca60ca">?</span> <span style="color:#ca60ca">=</span> <span style="color:#b08000">64</span> <span style="color:#898887">; 512 bits</span>
<span style="color:#0057ae">zword</span><span style="color:#ca60ca">?</span> <span style="color:#ca60ca">=</span> <span style="color:#b08000">64</span> <span style="color:#898887">; 512 bits</span>
element A
linpoly <span style="color:#ca60ca">=</span> A <span style="color:#ca60ca">+</span> A <span style="color:#ca60ca">+</span> <span style="color:#b08000">3</span>
vterm <span style="color:#ca60ca">=</span> linpoly scale <span style="color:#b08000">1</span> <span style="color:#ca60ca">*</span> linpoly element <span style="color:#b08000">1</span> <span style="color:#898887">; vterm = 2 * A</span>
<span style="color:#0057ae">db</span> <span style="color:#b08000">4</span> dup <span style="color:#b08000">90</span><span style="color:#b08000">h</span> <span style="color:#898887">; generate 4 bytes</span>
<span style="color:#0057ae">db</span> <span style="color:#b08000">2</span> dup <span style="color:#ca60ca">(</span><span style="color:#bf0303">'abc'</span><span style="color:#ca60ca">,</span><span style="color:#b08000">10</span><span style="color:#ca60ca">)</span> <span style="color:#898887">; generate 8 bytes</span>
<span style="color:#006e28">macro</span> measured name<span style="color:#ca60ca">,</span>string
<span style="color:#006e28">local</span> top
name <span style="color:#0057ae">db</span> string
<span style="color:#644a9b">top:</span> name<span style="color:#ca60ca">.</span>length <span style="color:#ca60ca">=</span> top <span style="color:#ca60ca">-</span> name
<span style="color:#006e28">end</span> <span style="color:#006e28">macro</span>
measured hello<span style="color:#ca60ca">,</span> <span style="color:#bf0303">'Hello!'</span> <span style="color:#898887">; hello.length = 6</span>
A equ <span style="color:#b08000">1</span>
A equ <span style="color:#b08000">2</span>
drop A
drop A
data1 <span style="color:#0057ae">dw</span> <span style="color:#b08000">1</span>
buffer1 <span style="color:#0057ae">rb</span> <span style="color:#b08000">10</span><span style="color:#b08000">h</span> <span style="color:#898887">; zeroed and present in the output</span>
<span style="color:#644a9b;font-weight:bold">org</span> <span style="color:#b08000">400</span><span style="color:#b08000">h</span>
<span style="color:#644a9b;font-weight:bold">data</span> <span style="color:#0057ae">dw</span> <span style="color:#b08000">2</span>
buffer2 <span style="color:#0057ae">rb</span> <span style="color:#b08000">20</span><span style="color:#b08000">h</span> <span style="color:#898887">; not in the output</span>
<span style="color:#644a9b;font-weight:bold">section</span> <span style="color:#b08000">1000</span><span style="color:#b08000">h</span>
data3 <span style="color:#0057ae">dw</span> <span style="color:#b08000">3</span>
buffer3 <span style="color:#0057ae">rb</span> <span style="color:#b08000">30</span><span style="color:#b08000">h</span> <span style="color:#898887">; not in the output</span>
<span style="color:#006e28">virtual</span> <span style="color:#006e28">at</span> <span style="color:#b08000">0</span>
<span style="color:#644a9b">hex_digits:</span>:
<span style="color:#0057ae">db</span> <span style="color:#bf0303">'0123456789ABCDEF'</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">virtual</span>
<span style="color:#644a9b;font-weight:bold">load</span> a<span style="color:#ca60ca">:</span><span style="color:#0057ae">byte</span> from hex_digits<span style="color:#ca60ca">:</span><span style="color:#b08000">10</span> <span style="color:#898887">; a = 'A'</span>
<span style="color:#0057ae">db</span> <span style="color:#bf0303">"Text"</span>
key <span style="color:#ca60ca">=</span> <span style="color:#b08000">7B</span><span style="color:#b08000">h</span>
<span style="color:#006e28">repeat</span> <span style="color:#ca60ca">$-$$</span>
<span style="color:#644a9b;font-weight:bold">load</span> a <span style="color:#ca60ca">:</span> <span style="color:#0057ae">byte</span> from <span style="color:#ca60ca">$$+%-</span><span style="color:#b08000">1</span>
<span style="color:#644a9b;font-weight:bold">store</span> a <span style="color:#ca60ca">xor</span> key <span style="color:#ca60ca">:</span> <span style="color:#0057ae">byte</span> at <span style="color:#ca60ca">$$+%-</span><span style="color:#b08000">1</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">repeat</span>
<span style="color:#644a9b;font-weight:bold">load</span> char <span style="color:#ca60ca">:</span> <span style="color:#0057ae">byte</span> from const<span style="color:#ca60ca">:</span><span style="color:#b08000">0</span>
<span style="color:#006e28">if</span> <span style="color:#ca60ca">$></span><span style="color:#b08000">10000</span><span style="color:#b08000">h</span>
<span style="color:#006e28">err</span> <span style="color:#bf0303">'segment too large'</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">if</span>
<span style="color:#006e28">calminstruction</span> please<span style="color:#ca60ca">?</span> cmd<span style="color:#ca60ca">&amp;</span>
<span style="color:#006e28">match</span> <span style="color:#ca60ca">=</span>do<span style="color:#ca60ca">?</span> <span style="color:#ca60ca">=</span><span style="color:#ca60ca">not</span><span style="color:#ca60ca">?</span> cmd<span style="color:#ca60ca">,</span> cmd
jyes done
assemble cmd
<span style="color:#644a9b">done:</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">calminstruction</span>
please do <span style="color:#ca60ca">not</span> display <span style="color:#bf0303">'Bye!'</span>
<span style="color:#006e28">macro</span> jmpi target
<span style="color:#006e28">if</span> target<span style="color:#ca60ca">-($+</span><span style="color:#b08000">2</span><span style="color:#ca60ca">)</span> <span style="color:#ca60ca">&lt;</span> <span style="color:#b08000">80</span><span style="color:#b08000">h</span> <span style="color:#ca60ca">&amp;</span> target<span style="color:#ca60ca">-($+</span><span style="color:#b08000">2</span><span style="color:#ca60ca">)</span> <span style="color:#ca60ca">>=</span> <span style="color:#ca60ca">-</span><span style="color:#b08000">80</span><span style="color:#b08000">h</span>
<span style="color:#0057ae">db</span> <span style="color:#b08000">0EB</span><span style="color:#b08000">h</span>
<span style="color:#0057ae">db</span> target<span style="color:#ca60ca">-($+</span><span style="color:#b08000">1</span><span style="color:#ca60ca">)</span>
<span style="color:#006e28">else</span>
<span style="color:#0057ae">db</span> <span style="color:#b08000">0E9</span><span style="color:#b08000">h</span>
<span style="color:#0057ae">dw</span> target<span style="color:#ca60ca">-($+</span><span style="color:#b08000">2</span><span style="color:#ca60ca">)</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">if</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">macro</span>
<span style="color:#006e28">macro</span> EX<span style="color:#ca60ca">?</span> first<span style="color:#ca60ca">,</span>second
<span style="color:#006e28">match</span> <span style="color:#ca60ca">(=</span><span style="font-weight:bold">SP</span><span style="color:#ca60ca">?),</span> first
<span style="color:#006e28">match</span> <span style="color:#ca60ca">=</span>HL<span style="color:#ca60ca">?,</span> second
<span style="color:#0057ae">db</span> <span style="color:#b08000">0E3</span><span style="color:#b08000">h</span>
<span style="color:#006e28">else</span> <span style="color:#006e28">match</span> <span style="color:#ca60ca">=</span>IX<span style="color:#ca60ca">?,</span> second
<span style="color:#0057ae">db</span> <span style="color:#b08000">0DD</span><span style="color:#b08000">h</span><span style="color:#ca60ca">,</span><span style="color:#b08000">0E3</span><span style="color:#b08000">h</span>
<span style="color:#006e28">else</span> <span style="color:#006e28">match</span> <span style="color:#ca60ca">=</span>IY<span style="color:#ca60ca">?,</span> second
<span style="color:#0057ae">db</span> <span style="color:#b08000">0FD</span><span style="color:#b08000">h</span><span style="color:#ca60ca">,</span><span style="color:#b08000">0E3</span><span style="color:#b08000">h</span>
<span style="color:#006e28">else</span>
<span style="color:#006e28">err</span> <span style="color:#bf0303">"incorrect second argument"</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">match</span>
<span style="color:#006e28">else</span> <span style="color:#006e28">match</span> <span style="color:#ca60ca">=</span>AF<span style="color:#ca60ca">?,</span> first
<span style="color:#006e28">match</span> <span style="color:#ca60ca">=</span>AF<span style="color:#bf0303">'?, second</span>
<span style="color:#0057ae">db</span> <span style="color:#b08000">08</span><span style="color:#b08000">h</span>
<span style="color:#006e28">else</span>
<span style="color:#006e28">err</span> <span style="color:#bf0303">"incorrect second argument"</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">match</span>
<span style="color:#006e28">else</span> <span style="color:#006e28">match</span> <span style="color:#ca60ca">=</span>DE<span style="color:#ca60ca">?,</span> first
<span style="color:#006e28">match</span> <span style="color:#ca60ca">=</span>HL<span style="color:#ca60ca">?,</span> second
<span style="color:#0057ae">db</span> <span style="color:#b08000">0EB</span><span style="color:#b08000">h</span>
<span style="color:#006e28">else</span>
<span style="color:#006e28">err</span> <span style="color:#bf0303">"incorrect second argument"</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">match</span>
<span style="color:#006e28">else</span>
<span style="color:#006e28">err</span> <span style="color:#bf0303">"incorrect first argument"</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">match</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">macro</span>
EX <span style="color:#ca60ca">(</span><span style="font-weight:bold">SP</span><span style="color:#ca60ca">),</span>HL
<span style="color:#006e28">macro</span> INC<span style="color:#ca60ca">?</span> argument
<span style="color:#006e28">match</span> <span style="color:#ca60ca">[:</span>r<span style="color:#ca60ca">:],</span> argument
<span style="color:#0057ae">db</span> <span style="color:#b08000">100</span><span style="color:#b08000">b</span> <span style="color:#ca60ca">+</span> r <span style="color:#ca60ca">shl</span> <span style="color:#b08000">3</span>
<span style="color:#006e28">else</span> <span style="color:#006e28">match</span> <span style="color:#ca60ca">(=</span>HL<span style="color:#ca60ca">?),</span> argument
<span style="color:#0057ae">db</span> <span style="color:#b08000">34</span><span style="color:#b08000">h</span>
<span style="color:#006e28">else</span> <span style="color:#006e28">match</span> <span style="color:#ca60ca">(=</span>IX<span style="color:#ca60ca">?+</span>d<span style="color:#ca60ca">),</span> argument
<span style="color:#0057ae">db</span> <span style="color:#b08000">0DD</span><span style="color:#b08000">h</span><span style="color:#ca60ca">,</span><span style="color:#b08000">34</span><span style="color:#b08000">h</span><span style="color:#ca60ca">,</span>d
<span style="color:#006e28">else</span> <span style="color:#006e28">match</span> <span style="color:#ca60ca">(=</span>IY<span style="color:#ca60ca">?+</span>d<span style="color:#ca60ca">),</span> argument
<span style="color:#0057ae">db</span> <span style="color:#b08000">0FD</span><span style="color:#b08000">h</span><span style="color:#ca60ca">,</span><span style="color:#b08000">34</span><span style="color:#b08000">h</span><span style="color:#ca60ca">,</span>d
<span style="color:#006e28">else</span>
<span style="color:#006e28">err</span> <span style="color:#bf0303">"incorrect argument"</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">match</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">macro</span>
<span style="color:#644a9b;font-weight:bold">INC</span> <span style="color:#ca60ca">(</span>IX<span style="color:#ca60ca">+</span><span style="color:#b08000">2</span><span style="color:#ca60ca">)</span>
element IY<span style="color:#ca60ca">?</span>
element L<span style="color:#ca60ca">?</span> <span style="color:#ca60ca">:</span> register <span style="color:#ca60ca">+</span> <span style="color:#b08000">101</span><span style="color:#b08000">b</span>
<span style="color:#006e28">macro</span> CALL<span style="color:#ca60ca">?</span> arguments<span style="color:#ca60ca">&amp;</span>
<span style="color:#006e28">local</span> cc<span style="color:#ca60ca">,</span>nn
<span style="color:#006e28">match</span> condition <span style="color:#ca60ca">=,</span> target<span style="color:#ca60ca">,</span> arguments
cc <span style="color:#ca60ca">=</span> condition <span style="color:#ca60ca">-</span> CC
nn <span style="color:#ca60ca">=</span> target
<span style="color:#0057ae">db</span> <span style="color:#b08000">0C4</span><span style="color:#b08000">h</span> <span style="color:#ca60ca">+</span> cc <span style="color:#ca60ca">shl</span> <span style="color:#b08000">3</span>
<span style="color:#006e28">else</span>
nn <span style="color:#ca60ca">=</span> arguments
<span style="color:#0057ae">db</span> <span style="color:#b08000">0CD</span><span style="color:#b08000">h</span>
<span style="color:#006e28">end</span> <span style="color:#006e28">match</span>
<span style="color:#0057ae">dw</span> nn
<span style="color:#006e28">end</span> <span style="color:#006e28">macro</span>
</pre></body></html>