<feed xmlns='http://www.w3.org/2005/Atom'>
<title>bedrock-pc/src/devices, branch v1.0.0-alpha1</title>
<subtitle>Bedrock emulator and assembler for Windows and Linux
</subtitle>
<id>https://code.benbridle.com/bedrock-pc/atom?h=v1.0.0-alpha1</id>
<link rel='self' href='https://code.benbridle.com/bedrock-pc/atom?h=v1.0.0-alpha1'/>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/'/>
<updated>2024-10-28T07:29:12Z</updated>
<entry>
<title>Rewrite emulator</title>
<updated>2024-10-28T07:29:12Z</updated>
<author>
<name>Ben Bridle</name>
<email>bridle.benjamin@gmail.com</email>
</author>
<published>2024-10-28T07:25:01Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=1a830a3d1b9d99653322d5ae49ea8165de7ed9d0'/>
<id>urn:sha1:1a830a3d1b9d99653322d5ae49ea8165de7ed9d0</id>
<content type='text'>
This is a complete rewrite and restructure of the entire emulator
project, as part of the effort in locking down the Bedrock specification
and in creating much better tooling for creating and using Bedrock
programs.

This commit adds a command-line argument scheme, an embedded assembler,
a headless emulator for use in non-graphical environments, deferred
window creation for programs that do not access the screen device,
and new versions of phosphor and bedrock-core. The new version of
phosphor supports multi-window programs, which will make it possible to
implement program forking in the system device later on, and the new
version of bedrock-core implements the final core specification.
</content>
</entry>
<entry>
<title>Fix mapping of draw operations in screen device</title>
<updated>2024-09-10T00:50:44Z</updated>
<author>
<name>Ben Bridle</name>
<email>bridle.benjamin@gmail.com</email>
</author>
<published>2024-09-10T00:50:44Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=03c4b069e1806af256730639cefdae115b24401a'/>
<id>urn:sha1:03c4b069e1806af256730639cefdae115b24401a</id>
<content type='text'>
The mapping of draw codes to draw operations didn't match the screen
device specification. This error was introduced in commit 6b3796c.
</content>
</entry>
<entry>
<title>Improve performance of hierarchical file navigation</title>
<updated>2024-08-13T05:06:07Z</updated>
<author>
<name>Ben Bridle</name>
<email>bridle.benjamin@gmail.com</email>
</author>
<published>2024-08-13T05:06:07Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=05326e69658bfcb0e857988bc3ddfa9b2655ec52'/>
<id>urn:sha1:05326e69658bfcb0e857988bc3ddfa9b2655ec52</id>
<content type='text'>
The most recently closed directory listing is cached instead of being
discarded. The next time a directory is to be opened, if the file path
is the same as the cached directory, the cached directory listing is
used in order to save the entire listing from having to be regenerated.
This is expected to result in performance gains on Windows.
</content>
</entry>
<entry>
<title>Prevent unused variable warning on Linux</title>
<updated>2024-08-11T00:38:13Z</updated>
<author>
<name>Ben Bridle</name>
<email>bridle.benjamin@gmail.com</email>
</author>
<published>2024-08-11T00:38:13Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=68f633f6ba35a4fbbae9ed22fc759ce3544f6a0e'/>
<id>urn:sha1:68f633f6ba35a4fbbae9ed22fc759ce3544f6a0e</id>
<content type='text'>
The base variable is only used when compiling on Windows, so an
unused variable warning is raised when compiling on Linux.
</content>
</entry>
<entry>
<title>Fix panic in ReadOnlyTextBuffer</title>
<updated>2024-08-10T02:37:02Z</updated>
<author>
<name>Ben Bridle</name>
<email>bridle.benjamin@gmail.com</email>
</author>
<published>2024-08-10T02:34:00Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=59820850b2bd326a20306279bdcbe52982a74889'/>
<id>urn:sha1:59820850b2bd326a20306279bdcbe52982a74889</id>
<content type='text'>
Previously when reading from a ReadOnlyTextBuffer the pointer would
fall off the end and crash the emulator.

This commit also makes the ReadOnlyTextBuffer Unicode-compatible,
rather than the previous behaviour of clamping every character into
the ASCII range.
</content>
</entry>
<entry>
<title>Fix ascend-to-parent behaviour of file device</title>
<updated>2024-08-10T02:37:02Z</updated>
<author>
<name>Ben Bridle</name>
<email>bridle.benjamin@gmail.com</email>
</author>
<published>2024-08-10T02:36:42Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=516f5cf5edfb7a2c4a4f3571aa6ce692a476d582'/>
<id>urn:sha1:516f5cf5edfb7a2c4a4f3571aa6ce692a476d582</id>
<content type='text'>
We were finding the parent of the relative path and then passing this
to the BedrockFilePath::from_path constructor, but this constructor
expects to be passed an absolute path and so was unconditionally
returning None.
</content>
</entry>
<entry>
<title>Refactor the file device</title>
<updated>2024-08-07T05:09:14Z</updated>
<author>
<name>Ben Bridle</name>
<email>ben@derelict.engineering</email>
</author>
<published>2024-08-07T05:09:14Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=38d40a2c5d4b553f524d87755b8e2e0e47928b8a'/>
<id>urn:sha1:38d40a2c5d4b553f524d87755b8e2e0e47928b8a</id>
<content type='text'>
This is the Windows side of the refactoring job. The windows crate has
been added as a dependency in order to get a list of available drives
by drive letter, and a virtual top-level root directory has been
implemented in the Windows code to make it possible for programs to
hierarchically navigate between available drives.
</content>
</entry>
<entry>
<title>Refactor the file device</title>
<updated>2024-08-06T07:12:43Z</updated>
<author>
<name>Ben Bridle</name>
<email>bridle.benjamin@gmail.com</email>
</author>
<published>2024-08-06T07:11:46Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=65b53003e8de9543ba25a3b3d3cace399b92dc1d'/>
<id>urn:sha1:65b53003e8de9543ba25a3b3d3cace399b92dc1d</id>
<content type='text'>
The major feature of this refactor is the creation of BedrockFilePath,
a type which can be losslessly converted into an operating-system
specific path or a Bedrock-style byte path. It also prevents file paths
which can't be represented as Bedrock-style byte paths from being
constructed, and allows the use of a base directory which acts as an
inescapable sandbox.

BedrockFilePath will support the creation of a virtual root directory
on Windows which will allow navigation between drive letters via the
standard hierarchical navigation ports.

This commit has been tested on Linux, but not yet Windows. Further work
is expected before the new code will work on Windows.
</content>
</entry>
<entry>
<title>Set error flag when file device cannot ascend to parent directory</title>
<updated>2024-08-04T01:09:48Z</updated>
<author>
<name>Ben Bridle</name>
<email>bridle.benjamin@gmail.com</email>
</author>
<published>2024-08-04T01:09:48Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=67d5d2c434db7d6b85d438f263ca51c26715a583'/>
<id>urn:sha1:67d5d2c434db7d6b85d438f263ca51c26715a583</id>
<content type='text'>
This should have been happening previously, but was missed.
</content>
</entry>
<entry>
<title>Fix compilation on Linux</title>
<updated>2024-08-04T01:09:04Z</updated>
<author>
<name>Ben Bridle</name>
<email>bridle.benjamin@gmail.com</email>
</author>
<published>2024-08-04T01:09:04Z</published>
<link rel='alternate' type='text/html' href='https://code.benbridle.com/bedrock-pc/commit/?id=b82ffe72b3f72b8fc5e42464319bab69973c097f'/>
<id>urn:sha1:b82ffe72b3f72b8fc5e42464319bab69973c097f</id>
<content type='text'>
Some Windows-only library functions were added in during a previous
commit while I was developing on Windows.
</content>
</entry>
</feed>
