-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
286 lines (249 loc) · 13.4 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
<!DOCTYPE html>
<html>
<head>
<title>Projects</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta name="description" content="transistorfet's website" />
<meta name="author" content="transistor fet" />
<meta name="keywords" content="jabberwocky, transistorfet, programming, electronics" />
<link rel="canonical" href="https://jabberwocky.ca/" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Recursive" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=IBM+Plex+Mono" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="./assets/normalize.css" type="text/css" charset="utf-8" />
<link rel="stylesheet" href="./assets/layout.css" type="text/css" charset="utf-8" />
<link id="pagetheme" rel="stylesheet" href="./assets/theme-light.css" type="text/css" charset="utf-8" />
<link id="codetheme" rel="stylesheet" href="./assets/code-default.css" type="text/css" charset="utf-8" />
<script src="./assets/theme.js"></script>
</head>
<body>
<div id="main">
<div id="theme-toggle"></div>
<div id="menu-toggle">☰</div>
<input class="toggle-trigger" type="checkbox" checked />
<div id="sidebar" class="toggle">
<a href="./"><h2>Projects</h2></a>
<hr>
<ul class="projects">
<li><a href="./projects/retroverse/">RetroVerse</a></li>
<li><a href="./projects/computie/">Computie 68k</a></li>
<li><a href="./projects/molten/">Molten</a></li>
<li><a href="./projects/moa/">Moa Emulator</a></li>
<li><a href="./projects/ruxpin/">Ruxpin OS</a></li>
<li><a href="./projects/fidget/">Fidget</a></li>
<li><a href="./projects/z280/">Z280 Computer</a></li>
<li><a href="./projects/gloworm/">Gloworm OS</a></li>
<li><a href="./projects/nerve/">Nerve Control Network</a></li>
<li><a href="./projects/deskclock2/">DeskClock2</a></li>
<li><a href="./projects/rgbnode/">RGB Node</a></li>
<li><a href="./projects/rgbnode-rs/">RGB Node with Rust</a></li>
<li><a href="./projects/webmush/">WebMUSH</a></li>
<li><a href="./projects/conlog/">Conlog</a></li>
<li><a href="./projects/fallingrust/">Falling Rust</a></li>
<li><a href="./projects/abugslife/">A Bug's Life</a></li>
<li><a href="./projects/acamlslife/">A Caml's Life</a></li>
<li><a href="./projects/synthetik/">Synthetik Synth</a></li>
<li><a href="./projects/meteorman/">Meteor Games</a></li>
<li><a href="./projects/logarithm/">Logarithm IRC Bot</a></li>
<li><a href="./projects/sdm/">Super Duper Moo</a></li>
<li><a href="./projects/sdrl/">SDRL Interpreter</a></li>
<li><a href="./projects/stutter/">Stutter IRC Client</a></li>
</ul>
<hr>
<h3>Posts</h3>
<ul class="posts">
<li><a href="./posts/2022-01-emulating_the_sega_genesis_part3.html">Emulating the Sega Genesis - Part III</a></li>
<li><a href="./posts/2022-01-emulating_the_sega_genesis_part2.html">Emulating the Sega Genesis - Part II</a></li>
<li><a href="./posts/2022-01-emulating_the_sega_genesis_part1.html">Emulating the Sega Genesis - Part I</a></li>
<li><a href="./posts/2021-11-making_an_emulator.html">Making a 68000 Emulator in Rust</a></li>
<li><a href="./posts/2021-09-bootstrapping_with_arduino.html">Bootstrapping a Homebuilt Computer Using An Arduino</a></li>
<li><a href="./posts/2021-08-molten_overview.html">An Overview Of Molten Internals</a></li>
</ul>
<hr>
<a href="https://github.com/transistorfet"><img class="icon" src="./assets/icons/github.svg"></a>
<a href="https://bsky.app/profile/transistorfet.bsky.social"><img class="icon" src="./assets/icons/bluesky.svg"></a>
<a href="https://mastodon.social/@transistor_fet"><img class="icon" src="./assets/icons/mastodon.svg"></a>
<a href="https://twitch.tv/transistorfet"><img class="icon" src="./assets/icons/twitch.svg"></a>
<a href="https://youtube.com/@transistorfet"><img class="icon" src="./assets/icons/youtube.svg"></a>
<a href="https://dev.to/transistorfet"><img class="icon" src="./assets/icons/dev-badge.svg"></a>
<a href="mailto:[email protected]"><img class="icon" src="./assets/icons/email.svg"></a>
<a href="https://linkedin.com/in/sarimcfarland"><img class="icon" src="./assets/icons/linkedin.svg"></a>
</div>
<div id="content">
<p></p>
<div class="project">
<a href="projects/retroverse/"><h2>RetroVerse</h2><img src="assets/covers/cover-retroverse.jpg" /></a>
<p>A collection of cards based around the VME bus (Versa Module Eurocard) for use in modular
retro-computers (In Progress)
</p>
</div>
<div class="project">
<a href="projects/computie/"><h2>Computie 68k</h2><img src="assets/covers/cover-computie-k30.jpg" /></a>
<p>A series of single board computers using 68010 and 68030 processors, along with
<a href="projects/gloworm/">Gloworm</a>, a Unix-like OS, that runs on them.
</p>
</div>
<div class="project">
<a href="projects/molten/"><h2>Molten</h2></a>
<p>A type-inferred language and compiler, written in Rust, based on ML, Rust, and Python, and using
LLVM as the backend. It can compile to LLVM IR bitcode, which can be further compiled to a native
binary.
</p>
</div>
<div class="project">
<a href="projects/moa/"><h2>Moa Emulator</h2><img src="assets/covers/cover-moa.png" /></a>
<p>An emulator for 68000 and Z80 processors written in Rust. It can emulate the
<a href="projects/computie/">Computie</a> hardware, as well as the Sega Genesis and the TRS-80. I've
also been working on support for the Macintosh 512k.
</p>
</div>
<div class="project">
<a href="projects/ruxpin/"><h2>Ruxpin OS</h2></a>
<p>An Operating System written in Rust for a Raspberry Pi 3 (Aarch64), which also runs in Qemu. For the
moment, it's a simple monolithic OS with a Unix-like API. It can run user processes in their own virtual
memory address space, loaded from an elf binary compiled by Cargo, which is in turn loaded from the
microSD card. It also has a virtual file system with support for reading and writing ext2 partitions.
</p>
</div>
<div class="project">
<a href="projects/fidget/"><h2>Fidget - The FPGA Widget</h2><img src="assets/covers/cover-fidget.jpg" /></a>
<p>An iCE40 FPGA Development board with the <a href="projects/computie/">Computie</a> bus, to act as a
generic peripheral device for Computie, or possibly an in-circuit debugger or logic analyzer.
</p>
</div>
<div class="project">
<a href="projects/z280/"><h2>Z280 Computer</h2><img src="assets/covers/cover-z280.jpg" /></a>
<p>A prototype for bootstrapping development with the Z280, a 16-bit extension of the Z80 CPU. It has
some onboard memory, and space for a CompactFlash card slot, and ATF1504AS CPLD to extend the onboard
logic.
</p>
</div>
<div class="project">
<a href="projects/gloworm/"><h2>Gloworm OS</h2></a>
<p>A Unix-like Operating System written in C for <a href="projects/computie/">Computie</a> (68k). It
supports the Minix file system, along with a simple procfs, devfs, and memory-backed file system. Through
the second serial port on Computie, it can operate SLIP (Serial Line IP), with a rudimentary UDP and TCP
implementation, which when bridged to the internet using another computer, can run NTP to update its
system clock, and host a proof-of-concept HTTP server.
</p>
</div>
<div class="project">
<a href="projects/nerve/"><h2>Nerve Control Network</h2><img src="assets/covers/cover-nerve.png" /></a>
<p>A server program written in python3 that controls and coordinates devices in the home. This project
ties together the Android Remote, RGB Nodes, and Desk Clock projects, along with various other control
and data sources, such as VLC, XMMS2, IR-controllable equipment, and
<a href="http://www.mysensors.org/">MySensors</a> wireless nodes. A built-in web server is used as the
primary user interface.
</p>
</div>
<div class="project">
<a href="projects/deskclock2/"><h2>DeskClock 2</h2><img src="assets/covers/cover-deskclock2.jpg" /></a>
<p>A desktop companion with an LCD screen, buttons, and a temperature sensor, using an
<a href="https://learn.adafruit.com/adafruit-stm32f405-feather-express">Adafruit Feather STM32F405</a>.
It displays the current time, current artist and song playing on the desktop, and the indoor and outdoor
temperatures. The buttons control the music, sort/shuffle the playlist, and turn on lighting in my room.
The desktop side of the control uses <a href="https://jabberwocky.ca/projects/nerve/">Nerve</a>.
</p>
</div>
<div class="project">
<a href="projects/rgbnode/"><h2>RGB Node</h2><img src="assets/covers/cover-rgbnode.jpg" /></a>
<p>An Arduino-based controller for RGB LED strip lighting. The controller has an IR receiver programmed
to read the codes from a repurposed TV remote, as well as to receive commands through USB from a computer.
Multiple controllers are able to work in unison via a MIDI-based communications bus. The controller also
has a generic IR transmitter which can be used to control audio/visual equipment (a TV and stereo in the
current setup).
</p>
</div>
<div class="project">
<a href="projects/rgbnode-rs/"><h2>RGB Node, but with Rust on an STM32</h2></a>
<p>A port of RGBNode to Rust using an STM32F103 Bluepill board. It uses the usbd-serial crate to communicate
with a computer, and uses the infrared crate to receive IR commands from the same repurposed TV remote. Currently
it's only built as a prototype on a breadboard, and doesn't include the daisy-chained MIDI-based bus for controlling
multiple units
</p>
</div>
<div class="project">
<a href="projects/webmush/"><h2>WebMUSH</h2><img src="assets/covers/cover-webmush.png" /></a>
<p>A web-based multi-user shared hallucination, in the spirit of the MUDs, MUSHes, and MOOs of the 80's and 90's.
</p>
</div>
<div class="project">
<a href="projects/conlog/"><h2>Conlog</h2></a>
<p>A simple prolog interpreter with no external depedencies, written in Rust.
</p>
</div>
<div class="project">
<a href="projects/fallingrust/"><h2>Falling Rust</h2><img src="assets/covers/cover-fallingsand.png" /></a>
<p>A falling sand game written in Rust and compiled to Web Assembly. A demo is available at
<a href="https://transistorfet.github.io/fallingrust/">here</a>
</p>
</div>
<div class="project">
<a href="projects/abugslife/"><h2>A Bug's Life Simulator</h2><img src="assets/covers/cover-abugslife.png" /></a>
<p>An artificial life simulator written in Rust and using the Piston game engine. Circular creatures move around
in search of food on the tiled ground with an effect that looks like bugs.
</p>
</div>
<div class="project">
<a href="projects/acamlslife/"><h2>A Caml's Life Simulator</h2></a>
<p>A clone of the "A Bug's Life" simulator, but written in Ocaml.
</p>
</div>
<div class="project">
<a href="projects/synthetik/"><h2>Synthetik</h2></a>
<p>An arduino shield with Yamaha FM synthesizer chips, and MIDI input, to be used as an audio synthesizer
(work in progress).
</p>
</div>
<div class="project">
<a href="projects/meteorman/"><h2>Meteor Games Website</h2></a>
<p>A website written using the Meteor node.js framework, for playing some card games and tile rummy. Play in
real time against other human players. This project was not fully completed and has a lot of rough edges.
A demo site may be available at <a href="http://games.jabberwocky.ca/">http://games.jabberwocky.ca/</a>
</p>
</div>
<div class="project">
<a href="projects/logarithm/"><h2>Logarithm</h2></a>
<p>An IRC bot that primarily logs the chat to text files and makes them available via the web. Logarithm also
provides some helpful features such as trivia, a decision maker, a calculator, and a system of polling/voting
among channel users. It was in use 24/7 from 2002 until 2021.
</p>
</div>
<div class="project">
<a href="projects/sdm/"><h2>Super Duper Moo</h2></a>
<p>A MOO, inspired by LambdaMOO, that allows users to connect with an IRC client (originally intended to have
support for multiple protocols). Written in C++, it contains it's own Scheme-like scripting language and stores
the object database in XML.
</p>
</div>
<div class="project">
<a href="projects/sdrl/"><h2>SDRL</h2></a>
<p>An obtuse and needlessly tedious interpreted language in which almost everything is a function. The interpreter
is written in pure C and the language itself is vaugely Scheme-like with no specific definition. The interpreter
itself can be configured for a number of different language features (different parsers, different scope rules, etc.).
</p>
</div>
<div class="project">
<a href="projects/stutter/"><h2>Stutter IRC Client</h2></a>
<p>A text-based IRC client written in C and designed for portability. The client is/was usable and was my main IRC
client for a few years, before neglect and a lack of features drove me to use other programs.
</p>
</div>
<h2>Posts</h2>
<ul class="posts">
<li><a href="./posts/2022-01-emulating_the_sega_genesis_part3.html">Emulating the Sega Genesis - Part III</a></li>
<li><a href="./posts/2022-01-emulating_the_sega_genesis_part2.html">Emulating the Sega Genesis - Part II</a></li>
<li><a href="./posts/2022-01-emulating_the_sega_genesis_part1.html">Emulating the Sega Genesis - Part I</a></li>
<li><a href="./posts/2021-11-making_an_emulator.html">Making a 68000 Emulator in Rust</a></li>
<li><a href="./posts/2021-09-bootstrapping_with_arduino.html">Bootstrapping a Homebuilt Computer Using An Arduino</a></li>
<li><a href="./posts/2021-08-molten_overview.html">An Overview Of Molten Internals</a></li>
</ul>
</div>
<div id="footer">
<hr>
Made with <a href="./generate.py">Python</a>
<div class="email">[email protected]</div>
</div>
</div>
</body>
</html>