chips
TypeScript
chips | TypeScript | |
---|---|---|
9 | 1,305 | |
911 | 98,060 | |
- | 0.6% | |
7.7 | 9.9 | |
17 days ago | 5 days ago | |
C | TypeScript | |
zlib License | Apache License 2.0 |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
chips
-
Zilog Z80 CPU – Modern, free and open source silicon clone
Because it's a software implementation in Verilog which is much closer to a software emulator and has nothing to do with the original Z80 "transistor structure".
For instance here's the LD A,(DE) "payload":
https://github.com/rejunity/z80-open-silicon/blob/974c7711b2...
And here's the equivalent in my software emulator:
https://github.com/floooh/chips/blob/bd1ecff58337574bb46eba5...
What's interesting though is that the Verilog implementation doesn't seem to update the internal WZ register, even though there are references to WZ in other places.
But in the end, if it looks and feels like a Z80 from the outside (e.g. the right pins are active at the right time) the internal implementation doesn't matter all that much.
-
Getting into way too much detail with the Z80 netlist simulation (2021)
Author here, interesting to see this posted since it's more like a reference manual for Z80 instructions with 'unusual' timings. The followup blog post about the cycle-stepped Z80 emulator is probably more interesting:
https://floooh.github.io/2021/12/17/cycle-stepped-z80.html
One important note: at the start of the post I'm speculating about why I was seeing some minor differences to a 'real' Z80, it turned out that this speculation was wrong and instead the differences were caused by 'incomplete' netlist simulation code which worked fine for the 6502 but required some tweaks for the Z80, see the comments of this GH issue for details: https://github.com/floooh/v6502r/issues/2.
As far as I'm aware the netlist simulation now behaves correctly like a Zilog Z80 (but note that reverse engineered Z80 clones like the East German U880 are known to have slightly different undocumented behaviour), and the Z80 emulator in https://github.com/floooh/chips is tested against the netlist simulation for correct behaviour and timing.
-
A world to win: WebAssembly for the rest of us
I simply don't see that there's a big enough difference between traditional garbage collection, refcounting and manual memory management. Each of those can already be implemented in pure WASM, just more or less awkwardly.
As for "just another ISA", there have been CPUs which had separate call- and data-stacks, with the call-stack living on the CPU and not accessible as regular data. In that sense WASM isn't much different then those esoteric CPUs.
And even though WASM might not allow free jumps, I yet have to see a noticeable performance difference between WASM and native for this type of "worst case code":
https://github.com/floooh/chips/blob/f5b6684ff6e899429544b21...
-
Appler: Apple ][ emulator for IBM PC, written in 8088 assembly
Oh my, the 6502 emulation [1] has fewer lines of assembly code than my (code-generated) implementation has lines of C code [2] :D
Very nice use of a macro assembler though [3], makes the code feel very high level.
To my defense, the generated code has a lot of redundancies (such as assert(false) which were meant to catch any 'stray cycles' but which are removed in release mode.
[1] https://github.com/zajo/appler/blob/develop/src/65C02.ASM
[2] https://github.com/floooh/chips/blob/master/chips/m6502.h
[3] https://github.com/zajo/appler/blob/52aaa0f768cdf303438cd2c7...
-
Ask HN: What's the best source code you've read?
I don't know if it's the best code I've ever read but this emulation library [0] of 8 bits computers is pretty well written, documented and designed: https://github.com/floooh/chips.
It's a good way to document old hardware with emulation code.
- A new cycle-stepped Z80 emulator
-
Tiny Emulators
Looks like here's the source code of the emulators:
8-bit chip and system emulators in standalone C headers - https://github.com/floooh/chips
-
Emulating a Parallel Memory chip at the circuit level:
There's a project on GitHub of similar nature -- it has include-able .h files emulating 8-bit computer chips on the pin level, and bus state is also held in a 64-bit value: https://github.com/floooh/chips/blob/master/chips/m6502.h
-
Yet Another Eater Sap1 Is Finished
I wrote also a library of components for some complex chips (like 6502 simulation using https://github.com/floooh/chips)
TypeScript
-
JSR Is Not Another Package Manager
Regular expressions are part of the language, so it's not so unreasonable that TypeScript should parse them and take their semantics into account. Indeed, TypeScript 5.5 will include [new support for syntax checking of regular expressions](https://github.com/microsoft/TypeScript/pull/55600), and presumably they'll eventually be able to solve the problem the GP highlighted on top of those foundations.
-
TypeScript Essentials: Distinguishing Types with Branding
Dedicated syntax for creating unique subsets of a type that denote a particular refinement is a longstanding ask[2] - and very useful, we've experimented with implementations.[3]
I don't think it has any relation to runtime type checking at all. It's refinement types, [4] or newtypes[5] depending on the details and how you shape it.
[1] https://github.com/microsoft/TypeScript/blob/main/src/compil...
-
What is an Abstract Syntax Tree in Programming?
GitHub | Website
-
Smart Contract Programming Languages: sCrypt vs. Solidity
Learning Curve and Developer Tooling sCrypt is an embedded Domain Specific Language (eDSL) based on TypeScript. It is strictly a subset of TypeScript, so all sCrypt code is valid TypeScript. TypeScript is chosen as the host language because it provides an easy, familiar language (JavaScript), but with type safety. There’s an abundance of learning materials available for TypeScript and thus sCrypt, including online tutorials, courses, documentation, and community support. This makes it relatively easy for beginners to start learning. It also has a vast ecosystem with numerous libraries and frameworks (e.g., React, Angular, Vue) that can simplify development and integration with Web2 applications.
-
Understanding the Difference Between Type and Interface in TypeScript
As a JavaScript or TypeScript developer, you might have come across the terms type and interface when working with complex data structures or defining custom types. While both serve similar purposes, they have distinct characteristics that influence when to use them. In this blog post, we'll delve into the differences between types and interfaces in TypeScript, providing examples to aid your understanding.
-
Type-Safe Fetch with Next.js, Strapi, and OpenAPI
TypeScript helps you in many ways in the context of a JavaScript app. It makes it easier to consume interfaces of any type.
- Proposal: Types as Configuration
-
How to scrape Amazon products
In this guide, we'll be extracting information from Amazon product pages using the power of TypeScript in combination with the Cheerio and Crawlee libraries. We'll explore how to retrieve and extract detailed product data such as titles, prices, image URLs, and more from Amazon's vast marketplace. We'll also discuss handling potential blocking issues that may arise during the scraping process.
-
Shared Tailwind Setup For Micro Frontend Application with Nx Workspace
TypeScript
-
Building a Dynamic Job Board with Issues Github, Next.js, Tailwind CSS and MobX-State-Tree
Familiarity with TypeScript, React and Next.js
What are some alternatives?
wasm.cljc - Spec compliant WebAssembly compiler, decompiler, and generator
zod - TypeScript-first schema validation with static type inference
s7-wasm - Example of using s7 Scheme with web assembly and emscripten
Flutter - Flutter makes it easy and fast to build beautiful apps for mobile and beyond
makaronLab - CPU simulation experiments
Tailwind CSS - A utility-first CSS framework for rapid UI development.
8086tiny - 8086tiny interpreter by Adrian Cable, taken from http://www.megalith.co.uk/8086tiny/
zx - A tool for writing better scripts
appler - Apple ][ emulator for MS-DOS, written in 8088 assembly
esbuild - An extremely fast bundler for the web
mikeOS - Mirror for MikeOS 4.5 - Simple and educational Operating System written by Mike Saunders
gray-matter - Smarter YAML front matter parser, used by metalsmith, Gatsby, Netlify, Assemble, mapbox-gl, phenomic, vuejs vitepress, TinaCMS, Shopify Polaris, Ant Design, Astro, hashicorp, garden, slidev, saber, sourcegraph, and many others. Simple to use, and battle tested. Parses YAML by default but can also parse JSON Front Matter, Coffee Front Matter, TOML Front Matter, and has support for custom parsers. Please follow gray-matter's author: https://github.com/jonschlinkert