PageSourceSearch

https://draemm.li/p/mirac/

html draemm.li collected 2026-10-02 05:15:09 UTC 23,006 bytes, 516 lines download raw bytes

1<!DOCTYPE html>
2<html>
3	<head>
4		<meta charset="utf-8" />
5		<link href="./_css/mirac.css" rel="stylesheet" type="text/css" media="all">
6		<title>
7			MIRAC Emulator
8		</title>
9		
10		<link rel="apple-touch-icon" sizes="180x180" href="./apple-touch-icon-180x180.png">
11		<link rel="icon" type="image/png" href="./favicon-192x192.png" sizes="192x192">
12		<link rel="icon" type="image/png" href="./favicon-160x160.png" sizes="160x160">
13		<link rel="icon" type="image/png" href="./favicon-96x96.png" sizes="96x96">
14		<link rel="icon" type="image/png" href="./favicon-16x16.png" sizes="16x16">
15		<link rel="icon" type="image/png" href="./favicon-32x32.png" sizes="32x32">
16		
17		<meta name="mobile-web-app-capable" content="yes" />
18	</head>
19	<body>
20		<div id="centrificator">
21			<div class="register">
22				<h2>Program Ctr</h2>
23				<div id="r1" class="registerValue"></div>
24			</div><div class="register">
25				<h2>Accumulator</h2>
26				<div id="r0" class="registerValue"></div>
27			</div><div class="register">
28				<h2>Instruction</h2>
29				<div id="r2" class="registerValue"></div>
30			</div><div class="register">
31				<h2>Argument Rg</h2>
32				<div id="r3" class="registerValue"></div>
33			</div><div class="register">
34				<h2>ALU Operand</h2>
35				<div id="r4" class="registerValue"></div>
36			</div><div class="register">
37				<h2>Address Bus</h2>
38				<div id="r5" class="registerValue"></div>
39			</div><div class="register">
40				<h2>Data Bus In</h2>
41				<div id="r6" class="registerValue"></div>
42			</div><div class="register">
43				<h2>DataBus Out</h2>
44				<div id="r7" class="registerValue"></div>
45			</div>
46			<br />
47			<div id="moreRegistersPanel">
48				<div class="register">
49					<h2>StackPointr</h2>
50					<div id="r11" class="registerValue"></div>
51				</div><div class="register">
52					<h2>Gen.Purpose</h2>
53					<div id="r100" class="registerValue" title="g0"></div>
54					<div id="r101" class="registerValue" title="g1"></div>
55					<div id="r102" class="registerValue" title="g2"></div>
56					<div id="r103" class="registerValue" title="g3"></div>
57					<div id="r104" class="registerValue" title="g4"></div>
58					<div id="r105" class="registerValue" title="g5"></div>
59					<div id="r106" class="registerValue" title="g6"></div>
60					<div id="r107" class="registerValue" title="g7"></div>
61				</div><div class="register">
62					<h2>Device Addr</h2>
63					<div id="r8" class="registerValue"></div>
64				</div><div class="register">
65					<h2>Device Din</h2>
66					<div id="r9" class="registerValue"></div>
67				</div><div class="register">
68					<h2>Device Dout</h2>
69					<div id="r10" class="registerValue"></div>
70				</div>
71			</div><div id="about">
72				<img src="./Mirac-Logo.svg" id="miracLogo" width="320" alt="MIRAC Emulator"/>
73				<br />
74				<p>
75					This is a JavaScript emulation of the<br />
76					Minecraft Redstone Automatic Computer.
77				</p>
78				<p>
79					Documentation about the architecture, instruction set, assembly language and other topics:<br />
80					<a href="./docs/Mirac.pdf" target="_blank">Download</a> (pdf, 42k).
81				</p>
82				<p>
83					<a href="https://github.com/RolandR/MIRAC-Emulator" target="_blank">Github Repository</a>. Made by <a href="http://rolandrytz.ch" target="_blank">Roland Rytz</a>.
84				</p>
85			</div><div id="romInput" class="panel">
86				<h2>
87				<abbr title="MIDAS - Mirac Direct Assembly">MIDAS</abbr> Assembly Input
88				<button id="loadProgramButton" onclick="Control.showPopup('exampleProgramsPopup');">Load example...</button>
89				<button id="biggerButton" onclick="Control.toggleEditorSize();"></button>
90				</h2>
91				<div id="#romLines">
92				</div>
93				<div id="romTextContainer"><!--TextAreas are bugged-->
94					<textarea
95						id="romText"
96						spellcheck="false"
97						oninput="setTimeout(editor.onEdit)"
98						onkeydown="setTimeout(editor.onEdit);"
99						onkeyup="editor.onEdit();"
100						onpaste="setTimeout(editor.onEdit);"
101						onmouseup="editor.onEdit();"
102						onscroll="editor.onScroll();"
103					></textarea>
104				</div>
105				<div id="romDisplay" contenteditable="true"></div>
106				<div id="romControls">
107					<button id="loadRamButton" onclick="Control.loadToRam();"><span></span>Load to RAM</button>
108					<span id="atAddress">
108 starting at octal address </span>
109					<input id="loadToAddress" type="text" value="0">
110				</div>
111			</div>
112			<br />
113			<div id="leftpanel"><div id="ram" class="panel">
114				<h2>Memory</h2>
115				<table id="ramtable" class="memtable">
116					<tbody id="ramtbody"></tbody>
117				</table>
118			</div><br /><div id="octJoystick"><div id="octalDisplay" class="panel">
119				<h2 title="Device Address: 020">Oct Display</h2>
120				<div class="displayContainer">
121					<div class="displaySegment" id="displaySegment0"></div><div class="displaySegment" id="displaySegment1"></div><div class="displaySegment" id="displaySegment2"></div>
122				</div>
123				<span class="peripheryDocs" onclick="Control.showPopup('octalDisplayInfoPopup');">Docs</span>
124			</div><br /><!--div id="joystick" class="panel">
125				<h2 title="Device Address: 050">Joystick</h2>
126				<div class="joystickContainer">
127					<table>
128						<tr>
129							<td></td><td><button>^</button></td><td></td>
130						</tr>
131						<tr>
132							<td><button>&lt;</button></td><td><button>o</button></td><td><button>&gt;</button></td>
133						</tr>
134						<tr>
135							<td></td><td><button>v</button></td><td></td>
136						</tr>
137					</table>
138				</div>
139				<span class="peripheryDocs" onclick="Control.showPopup('dotMatrixInfoPopup');">Docs</span>
140			</div--></div><div id="dotMatrix" class="panel">
141				<h2 title="Device Addresses: 030 - 034">Dot Matrix</h2>
142				<div class="dotMatrixContainer">
143					<canvas id="dotMatrixCanvas" height="160" width="160"></canvas>
144				</div>
145				<span class="peripheryDocs" onclick="Control.showPopup('dotMatrixInfoPopup');">Docs</span>
146			</div><div id="asciiDisplay" class="panel">
147				<h2 title="Device Address: 040">ASCII Display</h2>
148				<div class="asciiDisplayContainer">
149					<span id="displayChar0">
150					</span><span id="displayChar1">
151					</span><span id="displayChar2">
152					</span><span id="displayChar3">
153					</span><span id="displayChar4">
154					</span><span id="displayChar5">
155					</span><span id="displayChar6">
156					</span><span id="displayChar7">
157					</span><span id="displayChar8">
158					</span><span id="displayChar9">
159					</span></div>
160				<span class="peripheryDocs" onclick="Control.showPopup('asciiDisplayInfoPopup');">Docs</span>
161			</div></div><div id="rightpanel"><div id="control" class="rightPanelDiv panel">
162				<h2>Control</h2>
163				<button id="run" class="runButton" onclick="Control.toggleRun()"><span></span>Start</button><!-- Maaaaan, why does html interpret line breaks? Even for inline elements, that's somewhat silly.
164			 --><button id="resetpc" onclick="Control.reset();" title="Clears registers and flags."><span></span>Reset to start</button><br /><!--
165			 --><button id="cycle" onclick="Control.cycle();" title="Single cycle step."><span></span>Step</button><!--
166			 --><button id="resetmem" onclick="Control.hardReset();" title="Clears memory and all registers and flags."><span></span>Hard reset</button><!--
167			 --><hr /><!--
168			 --><span class="controlValueLabel">Cycle interval: </span><!--
169			 --><input class="controlValue" id="cycleInterval" type="number" value="" /><!--
170			 --><button class="controlValueButton" id="cycleIntervalButton" onclick="Control.updateCycleInterval();">Apply</button><!--
171			 --><hr /><!--
172			 --><span class="controlValueLabel">Set PC (octal): </span><!--
173			 --><input class="controlValue" id="setPC" type="text" value="0" /><!--
174			 --><button class="controlValueButton" id="setPCButton" onclick="Control.setPC();">Apply</button><!--
175			 --><hr /><!--
176			 --><span class="controlValueLabel" id="frequencyLabel">Running at: </span><!--
177			 --><span class="controlValueLabel" id="frequency" title="Breathtaking speeds!">(Paused)</span><!--
178			 --><hr /><!--
179			 --><span class="controlValueLabel">Use animations: </span><!--
180			 --><input class="controlValue" id="useAnimations" type="checkbox" checked="true" onclick="Control.updateUseAnimations();" /><!--
181			 --><hr /><!--
182			 --><span class="controlValueLabel">Update values: </span><!--
183			 --><input class="controlValue" id="displayValues" type="checkbox" checked="true" onclick="Control.updateDisplayValues();" />
184			 
185			 
186			 </div><div id="flags" class="rightPanelDiv panel">
187				<h2>Flags</h2>
188				<table id="flagtable">
189					<tbody>
190						<tr>
191							<td>Carry</td>
192							<td>Zero</td>
193							<td>Overflow</td>
194							<td>Negative</td>
195						</tr>
196						<tr>
197							<td id="f0" class="">0</td>
198							<td id="f1" class="">0</td>
199							<td id="f2" class="">0</td>
200							<td id="f3" class="">0</td>
201						</tr>
202					</tbody>
203				</table>
204			</div><div id="stack" class="rightPanelDiv panel">
205				<h2>Call Stack</h2>
206				<table id="stacktable" class="memtable">
207					<tbody id="stacktbody"></tbody>
208				</table>
209			</div>
210			<div id="rdLogoContainer">
211				<a href="http://rolandrytz.ch">
212					<img src="./RedstoneDigital-Logo.svg" id="rdLogo" width="320" alt="Redstone Digital"/>
213				</a>
214			</div>
215			</div>
216		</div>
217		<div id="popupOverlay">
218			<div id="overlayContainer">
219				<div class="popup" id="octalDisplayInfoPopup">
220					<h2>Info: Octal Display <button class="popupCloseButton" onclick="Control.hidePopup(this.parentElement.parentElement.id);">x</button></h2>
221					<section>
222						<h3>Octal Number Display</h3>
223						<table>
224							<tr><th>Address</th><th>Mode</th></tr>
225							<tr><td>020</td><td>Display single byte</td></tr>
226						</table>
227						
228						<h3>Description</h3>
229						
230						The octal display can display a single byte in base 8.<br />
231						Use is simple: Write a single bite to device address 020.
232
233						<h3>Examples</h3>
234
235						<code>
236							<span class="e-comment">// write octal 123 to display</span>
237							<br />
238							<span class="e-valid-instruction" title="Opcode 101">PDAI</span>
239							<span class="e-octal" title="Binary: 00010000">020</span>
240							<span class="e-comment">// set device address</span>
241							<br />
242							<span class="e-valid-instruction" title="Opcode 103">PDWI</span>
243							<span class="e-octal" title="Binary: 01010011">123</span>
244							<span class="e-comment">// write immediate byte</span>
245						</code>
246
247						<code>
248							<span class="e-comment">// write byte from memory address</span>
249							<br />
250							<span class="e-valid-instruction" title="Opcode 101">PDAI</span>
251							<span class="e-octal" title="Binary: 00010000">020</span>
252							<span class="e-comment">// set device address</span>
253							<br />
254							<span class="e-valid-instruction" title="Opcode 104">PDWM</span>
255							<span class="e-octal" title="Binary: 01000000">100</span>
256							<span class="e-comment">// write bite at memory location 100</span>
257						</code>
258
259						<code>
260							<span class="e-comment">// write byte from accumulator</span>
261							<br />
262							<span class="e-comment">// we're going to use the result of an addition</span>
263							<br />
264							<span class="e-valid-instruction" title="Opcode 002">LDAI</span>
265							<span class="e-decimal" title="Octal: 024">20.</span>
266							<span class="e-comment">// load decimal 20</span>
267							<br />
268							<span class="e-valid-instruction" title="Opcode 005">OPRA</span>
269							<span class="e-comment">// write accumulator to operand register</span>
270							<br />
271							<span class="e-valid-instruction" title="Opcode 002">LDAI</span>
272							<span class="e-decimal" title="Octal: 052">42.</span>
273							<span class="e-comment">// load decimal 42</span>
274							<br />
275							<span class="e-valid-instruction" title="Opcode 006">ADDC</span>
276							<span class="e-comment">// perform addition</span>
277							<br />
278							<span class="e-valid-instruction" title="Opcode 101">PDAI</span>
279							<span class="e-octal" title="Binary: 00010000">020</span>
280							<span class="e-comment">// set device address</span>
281							<br />
282							<span class="e-valid-instruction" title="Opcode 105">PDWA</span>
283							<span class="e-comment">// write addition result to display</span>
284						</code>
285
286						
287						
288					</section>
289				</div>
290				<div class="popup" id="dotMatrixInfoPopup">
291					<h2>Info: Dot Matrix <button class="popupCloseButton" onclick="Control.hidePopup(this.parentElement.parentElement.id);">x</button></h2>
292					<section>
293						<h3>Dot Matrix Display</h3>
294						<table>
295							<tr><th>Address</th><th>Mode</th></tr>
296							<tr><td>030</td><td>Flip pixel at coordinates YYYY XXXX</td></tr>
297							<tr><td>031</td><td>Turn on  pixel at coordinates YYYY XXXX</td></tr>
298							<tr><td>032</td><td>Turn off pixel at coordinates YYYY XXXX</td></tr>
299							<tr><td>033</td><td>Push byte to dot matrix, each byte controlling a pixel.</td></tr>
300							<tr><td>034</td><td>Fill matrix with pattern in pdout</td></tr>
301						</table>
302						<h3>Description</h3>
303						A 16x16 pixel monochrome dot matrix display.<br />
304						There are various modes for controlling it, including manipulating single pixels, badge feeding entire bytes and filling the screen with a single-byte pattern.
305						<h3>Examples</h3>
306						<code>
307							<span class="e-comment">// Flip a pixel somewhere in the middle</span>
308							<br />
309							<span class="e-valid-instruction" title="Opcode 101">PDAI</span>
310							<span class="e-octal" title="Binary: 00011000">030</span>
311							<br />
312							<span class="e-valid-instruction" title="Opcode 103">PDWI</span>
313							<span class="e-binary" title="Octal: 131">#01011001</span>
314							<span class="e-comment">// y = 5, x = 9</span>
315						</code>
316						<code>
317							<span class="e-comment">// Turn on and then off the bottom left pixel</span>
318							<br />
319							<span class="e-valid-instruction" title="Opcode 101">pdai</span>
320							<span class="e-octal" title="Binary: 00011001">031</span>
321							<br />
322							<span class="e-valid-instruction" title="Opcode 103">pdwi</span>
323							<span class="e-binary" title="Octal: 360">#11110000</span>
324							<span class="e-comment">// y = 15, x = 0</span>
325							<br />
326							<span class="e-valid-instruction" title="Opcode 101">pdai</span>
327							<span class="e-octal" title="Binary: 00011010">032</span>
328							<br />
329							<span class="e-valid-instruction" title="Opcode 103">pdwi</span>
330							<span class="e-binary" title="Octal: 360">#11110000</span>
331						</code>
332						<code>
333							<span class="e-comment">// Fill in some pixels, starting from the top</span>
334							<br />
335							<span class="e-valid-instruction" title="Opcode 101">pdai</span>
336							<span class="e-octal" title="Binary: 00011011">033</span>
337							<br />
338							<span class="e-valid-instruction" title="Opcode 103">pdwi</span>
339							<span class="e-binary" title="Octal: 210">#10001000</span>
340							<span class="e-valid-instruction" title="Opcode 103">pdwi</span>
341							<span class="e-binary" title="Octal: 210">#10001000</span>
342							<br />
343							<span class="e-valid-instruction" title="Opcode 103">pdwi</span>
344							<span class="e-binary" title="Octal: 314">#11001100</span>
345							<span class="e-valid-instruction" title="Opcode 103">pdwi</span>
346							<span class="e-binary" title="Octal: 314">#11001100</span>
347							<br />
348							<span class="e-valid-instruction" title="Opcode 103">pdwi</span>
349							<span class="e-binary" title="Octal: 252">#10101010</span>
350							<span class="e-valid-instruction" title="Opcode 103">pdwi</span>
351							<span class="e-binary" title="Octal: 252">#10101010</span>
352							<br />
353							<span class="e-valid-instruction" title="Opcode 103">pdwi</span>
354							<span class="e-binary" title="Octal: 377">#11111111</span>
355							<span class="e-valid-instruction" title="Opcode 103">pdwi</span>
356							<span class="e-binary" title="Octal: 377">#11111111</span>
357							<br />
358							<span class="e-comment">// Mode 033 is useful for displaying entire images</span>
359						</code>
360						<code>
361							<span class="e-comment">// Blank screen</span>
362							<br />
363							<span class="e-valid-instruction" title="Opcode 101">pdai</span>
364							<span class="e-octal" title="Binary: 00011100">034</span>
365							<br />
366							<span class="e-valid-instruction" title="Opcode 103">pdwi</span>
367							<span class="e-binary" title="Octal: 000">#00000000</span>
368						</code>
369					</section>
370				</div>
371				<div class="popup" id="asciiDisplayInfoPopup">
372					<h2>Info: ASCII Display <button class="popupCloseButton" onclick="Control.hidePopup(this.parentElement.parentElement.id);">x</button></h2>
373					<section>
374						<h3>ASCII Text Display</h3>
375						<table>
376							<tr><th>Address</th><th>Mode</th></tr>
377							<tr><td>040</td><td>Set or replace character right of caret</td></tr>
378							<tr><td>041</td><td>Set or replace character at caret</td></tr>
379							<tr><td>042</td><td>Clear and reset</td></tr>
380						</table>
381						<h3>Description</h3>
382						A 10-character ASCII text display.<br />
383						The display has an internal caret (cursor).<br />
384						It increments if characters are written in mode 040. It wraps around when it reaches the last position.<br />
385						Reset (Mode 042) resets the caret to position 0.<br />
386						<br />
387						The character 127 (octal 177) acts as backspace.<br />
388						It will clear the character at the caret, and decrement the caret position.<br />
389						<h3>Examples</h3>
390						<code>
391							<span class="e-comment">// Write "Foo" at cursor</span>
392							<br />
393							<span class="e-valid-instruction" title="Opcode 101">pdai</span>
394							<span class="e-octal" title="Binary: 00100000">040</span>
395							<br />
396							<span class="e-valid-instruction" title="Opcode 103">pdwi</span>
397							<span class="e-valid-char" title="Octal: 70">'F'</span>
398							<br />
399							<span class="e-valid-instruction" title="Opcode 103">pdwi</span>
400							<span class="e-valid-char" title="Octal: 111">'o'</span>
401							<br />
402							<span class="e-valid-instruction" title="Opcode 103">pdwi</span>
403							<span class="e-valid-char" title="Octal: 112">'p'</span>
404							<br />
405							<span class="e-valid-instruction" title="Opcode 103">pdwi</span>
406							<span class="e-decimal" title="Octal: 177">127.</span>
407							<span class="e-comment">//127 is backspace</span>
408							<br />
409							<span class="e-valid-instruction" title="Opcode 103">pdwi</span>
410							<span class="e-valid-char" title="Octal: 111">'o'</span>
411						</code>
412						<code>
413							<span class="e-comment">// Clear and reset</span>
414							<br />
415							<span class="e-valid-instruction" title="Opcode 101">pdai</span>
416							<span class="e-octal" title="Binary: 00100010">042</span>
417							<br />
418							<span class="e-valid-instruction" title="Opcode 103">pdwi</span>
419							<span class="e-octal" title="Binary: 00000000">000</span>
420							<span class="e-comment">// Could be any value</span>
421						</code>
422						<code>
423							<span class="e-comment">// Blinking cursor animation</span>
424							<br />
425							<span class="e-valid-instruction" title="Opcode 101">pdai</span>
426							<span class="e-octal" title="Binary: 00100001">041</span>
427							<br />
428							<span class="e-define-label">$loop:</span>
429							<br />
430							<span class="e-valid-instruction" title="Opcode 103">pdwi</span>
431							<span class="e-valid-char" title="Octal: 32">' '</span>
432							<br />
433							<span class="e-valid-instruction" title="Opcode 000">nope</span>
434							<span class="e-comment">// for timing, because jmpi takes one tick</span>
435							<br />
436							<span class="e-valid-instruction" title="Opcode 103">pdwi</span>
437							<span class="e-valid-char" title="Octal: 95">'_'</span>
438							<br />
439							<span class="e-valid-instruction" title="Opcode 004">jmpi</span>
440							<span class="e-label">$loop</span>
441						</code>
442					</section>
443				</div>
444				<div class="popup" id="exampleProgramsPopup">
445					<h2>Example Programs <button class="popupCloseButton" onclick="Control.hidePopup(this.parentElement.parentElement.id);">x</button></h2>
446					<section>
447						<div class="sampleProgram">
448							<button class="sampleProgramButton" onclick="Control.openSampleProgram('bouncing_ball.midas')">Open</button>
449							<h3>Bouncing Ball</h3>
450							Displays a bouncing ball on the dot matrix.
451						</div>
452						<div class="sampleProgram">
453							<button class="sampleProgramButton" onclick="Control.openSampleProgram('show_picture.midas')">Open</button>
454							<h3>Show Picture</h3>
455							Displays a static image on the dot matrix.
456						</div>
457						<div class="sampleProgram">
458							<button class="sampleProgramButton" onclick="Control.openSampleProgram('winking_owl.midas')">Open</button>
459							<h3>Winking Owl</h3>
460							Shows a way to display two alternating images.
461						</div>
462						<div class="sampleProgram">
463							<button class="sampleProgramButton" onclick="Control.openSampleProgram('visual_quine.midas')">Open</button>
464							<h3>Visual Quine</h3>
465							This program draws a visual representation of itself.
466						</div>
467						<div class="sampleProgram">
468							<button class="sampleProgramButton" onclick="Control.openSampleProgram('string_loader.midas')">Open</button>
469							<h3>String Loader</h3>
470							Displays a string of characters on the ASCII display.
471						</div>
472						<div class="sampleProgram">
473							<button class="sampleProgramButton" onclick="Control.openSampleProgram('generic_sample_program.midas')">Open</button>
474							<h3>Stack demo</h3>
475							A simple example program with recursion.
476						</div>
477					</section>
478				</div>
479				<div class="popup" id="errorPopup">
480					<h2>Error <button class="popupCloseButton" onclick="Control.hidePopup(this.parentElement.parentElement.id);">x</button></h2>
481					<section id="errors">
482						
483					</section>
484				</div>
485			</div>
486		</div>
487		
488		
489		
490		
490<script type="text/javascript" src="./_js/setZeroTimeout.js"></script>
490
491		
491<script type="text/javascript" src="./_js/loadFile.js"></script>
491
492		
493		
493<script type="text/javascript" src="./_js/Config.js"></script>
493
494		
495		
495<script type="text/javascript" src="./_js/Conversions.js"></script>
495
496		
496<script type="text/javascript" src="./_js/Register.js"></script>
496
497		
497<script type="text/javascript" src="./_js/Flag.js"></script>
497
498		
498<script type="text/javascript" src="./_js/Mem.js"></script>
498
499		
499<script type="text/javascript" src="./_js/Mirac.js"></script>
499
500		
500<script type="text/javascript" src="./_js/ALU.js"></script>
500
501		
502		
502<script type="text/javascript" src="./_js/OctalDisplay.js"></script>
502
503		
503<script type="text/javascript" src="./_js/DotMatrix.js"></script>
503
504		
504<script type="text/javascript" src="./_js/AsciiDisplay.js"></script>
504
505		
505<script type="text/javascript" src="./_js/Devices.js"></script>
505
506		
507		
507<script type="text/javascript" src="./_js/Ins.js"></script>
507
508		
508<script type="text/javascript" src="./_js/Opcode.js"></script>
508
509		
509<script type="text/javascript" src="./_js/Opcodes.js"></script>
509
510		
511		
511<script type="text/javascript" src="./_js/Assembler.js"></script>
511
512		
512<script type="text/javascript" src="./_js/Control.js"></script>
512
513		
513<script type="text/javascript" src="./_js/Editor.js"></script>
513
514		
514<script type="text/javascript" src="./_js/Emulator.js"></script>
514
515	</body>
516</html>

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.