6,991 karma · joined January 17, 2009
As I understand it, the process goes something like this:
- Debian wants to package a Rust tool
- They examine the tool's Cargo.toml file to determine its immediate dependencies
- Those Rust dependencies are converted into Debian package names
- Generate a Debian package definition that lists those dependencies under "Build-Depends"
- When building the Debian package in an isolated environment, Build-Depends packages are installed, providing things like `rustc` and `cargo` as well as putting the dependencies' source into the "local dependencies" directory
- Cargo runs, configured to only look in the "local dependencies" directory for dependencies
- the resulting binary is scooped up and packaged
> WordPerfect requires that I decide whether I want to cut or copy a block, then immediately mark the beginning of the block, then immediately mark the end of the block, then immediately position the cursor at where I want the block to go, then immediately move the block, and then find my way back to the place where I was originally working. From the moment I decide I might, perhaps, want to do something with a block of text to the moment I actually finish that operation, WordPerfect is in control, dictating what I must do.
> WordStar, with its long-hand-page metaphor, says, hey, do whatever you want whenever you want to. This is a good spot to mark the beginning of a block? Fine. What would you like to do next? Deal with the block? Continue writing? Use the thesaurus?
> After another half hour of writing, I can say, ah hah!, this is where I want to end that block. And two hours later I can say, and this is where that block should go.
According to Wikipedia¹, American typewriters were pretty consistent with keyboard layout until the IBM Selectric electric typewriter. Apparently "small" characters (like apostrophe, double-quote, underscore, and hyphen) should be typed with less pressure to avoid damaging the platen, and IBM decided the Selectric could be simpler if those symbols were grouped on dedicated keys instead of sharing keys with "high pressure" symbols, so they shuffled the symbols around a bit, resulting in a layout that would look very familiar to a modern PC user.
Because IBM electric typewriters were so widely used (at least in English speaking countries), any computer company that wanted to sell to businesses wanted a Selectric-style layout, including the IBM PC.
Meanwhile, in other countries where typewriters in general weren't so popular or useful, the earliest computers had ASCII-style punctuation layout for simplicity, and later computers didn't have any pressing need to change, so they stuck with it. Japanese keyboards, for example, are still ASCII-style to this day.
¹: https://en.wikipedia.org/wiki/IBM_Selectric#Keyboard_layout
That's why the most robust CD image format is the BIN/CUE format. The BIN file contains all the sectors the drive allows us to read, the CUE file contains the disc metadata as interpreted for us by the drive firmware.
There are some drives which support extra "raw read" commands, but they're incredibly rare and consequently in great demand by CD preservation projects like redump.org.
Some people have used the contents of BIN/CUE data to reconstruct what should actually be on the disk, but that's not quite the same thing. Here's a great explanation of the CD structure in all its complexity:
https://github.com/higan-emu/emulation-articles/tree/master/...
I'm guessing they picked the 6809 because it's a lot more friendly to C than those other architectures.
The trick is that the Game Boy display is smaller than the SNES display, so it doesn't have to transfer a complete frame, and so it can be completed within the vertical blanking interval.
Apparently the timing is so close that it's not possible to transfer palette information alongside the video, just black-and-white, which is why there was never a Super Game Boy Color.
In Windows, you can type characters in the Latin1 character set by holding down Alt, then typing a zero on the numeric keypad, then the code you want, such as Alt+0233 for "é". The leading zero disambiguates Latin1 characters from the traditional DOS character set, so you'd have to type Alt+130 to get the same character that way.
- emulators/simulators/FPGA code
- books, data sheets, OCR'd PDFs of books and data sheets, text files copy/pasted from PDFs or retyped from books and data sheets
Code is likely to be heavily tested, but it makes extracting high-level information about the instruction set very difficult.
Data is easy to analyse and synthesise, but since it's described in prose there's no easy way to test or validate it - if somebody in 1984 made a typo that a particular instruction took 3 cycles instead of 2, and that error was copy/pasted and made its way into half the "6502 instruction set" websites online, how would you know? How would you detect it?
Using SQL to enforce constraints and validation gives me confidence that there aren't a bunch of typos and copy/paste errors in this data. In addition, being able to express special cases like "read-modify-write instructions applying to the accumulator do not pay the three cycle penalty" in code rather than in prose makes it more likely they will be applied correctly. Lastly, since the result is an SQL database, it can be pretty easily formatted to resemble any book or data sheet you like for simplified visual verification against book/data sheet sources.
All the enhancement chips used in officially licensed games were collected, decapped, and dumped via an electron microscope. Yes, even the ones only used by a single Shougi game each. :)
I think I can fix this.
It turns out that 3.37.0 is the version that added the `table_list` pragma. I've added that requirement to the README.
What output do you get when you run these commands?
$ sqlite3 --version
-- Loading resources from /home/st/.sqliterc
3.45.1 2024-01-30 16:01:20 e876e51a0ed5c5b3126f52e532044363a014bc594cfefa87ffb5b82257ccalt1 (64-bit)
$ sqlite3 :memory: -init /dev/null "select * from pragma_table_list();"
-- Loading resources from /dev/null
main|sqlite_schema|table|5|0|0
temp|sqlite_temp_schema|table|5|0|0
EDIT: The ability to use pragmas as table-valued functions was added in version 3.16.0[1], but the table_list pragma was first added in 3.37.0[2], which is newer than your sqlite3 version.[1]: https://www.postgresql.org/docs/current/information-schema.h...