|
Ghost of Reagan Past posted:Through this I learned that x86-64 is bullshit for garbagemen, because holy poo poo jumping to long mode is a pain in the rear end. Not going to lie, x86 GDT and segmenting garbage no human should have to deal with is why my toy assembler projects are pretty much all 68000. 16MB is enough for anyone. Memory protection is for losers who suck at pointers as evidenced by how many Enforcer hits my game causes. Luigi Thirty fucked around with this message at 05:59 on Dec 29, 2016 |
# ? Dec 29, 2016 05:56 |
|
|
# ? Apr 24, 2024 20:24 |
|
Ghost of Reagan Past posted:
Did you post the code anywhere? Even if there's not much to it yet I'd love to see what this looks like under the hood.
|
# ? Dec 29, 2016 06:57 |
|
Ghost of Reagan Past posted:Through this I learned that x86-64 is bullshit for garbagemen, because holy poo poo jumping to long mode is a pain in the rear end. There are still a few problems with it. I still can't use it for my startup's use case because files on VolFS don't quite have all the flags that our system wants in regards to temp files. Works great if you're a vim'er, though since you can use DriveFS. VolFS speed it not quite there yet either. But when it is, it's going to be a really good thing to develop on. Been working on a blog post detailing my ideal set up, but haven't finished it off yet. In short: Docker (w/ Hyper V) for services + terminal for servers + favorite editor working on symlinked files. e: Also watching https://hyper.is/ for history support (issue #111, I think, for bash on windows), as that's a much more capable interface for the terminal. kayakyakr fucked around with this message at 07:03 on Dec 29, 2016 |
# ? Dec 29, 2016 06:58 |
Luigi Thirty posted:Not going to lie, x86 GDT and segmenting garbage no human should have to deal with is why my toy assembler projects are pretty much all 68000. 16MB is enough for anyone. Memory protection is for losers who suck at pointers as evidenced by how many Enforcer hits my game causes. yo luigi30 write something useful for actual humans because it would probably be very good+cool
|
|
# ? Dec 29, 2016 07:48 |
|
kayakyakr posted:e: Also watching https://hyper.is/ for history support (issue #111, I think, for bash on windows), as that's a much more capable interface for the terminal. That's pretty neat and might obviate my desire to switch the subsystem's default interactive shell, which I think I spent five whole minutes on before giving up Also, do people actually prefer Lucida Console or have these Mac/Linux users just not heard The Good Word of the Prophet Consolas?
|
# ? Dec 29, 2016 15:45 |
|
Fergus Mac Roich posted:Did you post the code anywhere? Even if there's not much to it yet I'd love to see what this looks like under the hood. Nah, code isn't up anywhere. I've cobbled a bunch together from here and here, and I really skipped the poo poo at OSDev because while the info is useful it's all couched in a ton of annoying "we're better than you, this is too hard for mere mortals" bullshit. Once I understood what was going on it was remarkably straightforward (the only real errors I've encountered were nasm errors and xargo errors because lol no you don't have libc). Really, the most important things these tutorials got me was navigating the build process. Once it diverges significantly and I get some direction I might put a repo up somewhere. I don't think I'm gonna take it anywhere interesting, though.
|
# ? Dec 29, 2016 19:19 |
|
Ghost of Reagan Past posted:Nah, code isn't up anywhere. I've cobbled a bunch together from here and here, and I really skipped the poo poo at OSDev because while the info is useful it's all couched in a ton of annoying "we're better than you, this is too hard for mere mortals" bullshit. Once I understood what was going on it was remarkably straightforward (the only real errors I've encountered were nasm errors and xargo errors because lol no you don't have libc). Really, the most important things these tutorials got me was navigating the build process. I built some hobby retro gaming emulators a few years ago and decided to do an OS kernel as a follow up. The attitudes at OSDev turned me off immediately, especially compared to the awesome folks at NESDev who all seem to have the patience of a saint when explaining something complicated. Awesome job with what you've done so far!
|
# ? Dec 29, 2016 20:00 |
|
Sirocco posted:Congratulations, man! You should start posting in your project.log thread again (or make a new one) so we can keep better track of your progress. It has been so long since I posted in the old one that it went over to the archives. Since I've only recently dusted off my stuff and gotten back to work on it, I haven't created a new one. We'll see if I dive into anything new and interesting. If I do, I'll open up a thread there to talk about the nitty-gritty details. The flashier stuff will always be posted about here, though! Ghost of Reagan Past posted:
This is a really nice piece of work. I can appreciate how much tinkering went into the code that got that "Hello world" to come up. Ferg posted:I built some hobby retro gaming emulators a few years ago and decided to do an OS kernel as a follow up. The attitudes at OSDev turned me off immediately, especially compared to the awesome folks at NESDev who all seem to have the patience of a saint when explaining something complicated. Awesome job with what you've done so far! True that. While I've read all through the OSDev forums over the past few years, I've never posted in their forums. Those forums kind of remind me of this bash.org quote. OS development requires such a large amount of cross-domain know-how that OSDev goes a bit overboard with telling everyone how hard it all is. The info on their wiki is pretty good, though. I think we've all figured out that most of the folks in the computer world that have some serious know-how are more than a bit arrogant about it. In general, if you're a genius and super knowledgeable and all that, just... please don't be a dick about it. Help other folks along. That's what I like about threads like these. We can all throw some questions and advice out there and it isn't a big alpha-geek pissing contest. Shine on, all of you crazy Scrabble-tiling, tile-mapping, boot-loading, web-paging diamonds. hendersa fucked around with this message at 21:45 on Dec 29, 2016 |
# ? Dec 29, 2016 21:03 |
|
Ferg posted:I built some hobby retro gaming emulators a few years ago and decided to do an OS kernel as a follow up. The attitudes at OSDev turned me off immediately, especially compared to the awesome folks at NESDev who all seem to have the patience of a saint when explaining something complicated. Awesome job with what you've done so far! The people at English Amiga Board helped me out with my scrolling stuff and even went over my ASM blit routine on Github for me to figure out why it didn't work. The Atari forums are full of helpful people too. Skim Milk posted:yo luigi30 write something useful for actual humans because it would probably be very good+cool Too many people do that, my niche is things nobody will ever use. I did put a command alias I use on Aminet this week which has 69 downloads.
|
# ? Dec 29, 2016 23:12 |
Luigi Thirty posted:69 downloads NICE!
|
|
# ? Dec 30, 2016 04:39 |
|
hendersa posted:This is a really nice piece of work. I can appreciate how much tinkering went into the code that got that "Hello world" to come up. Now I'm reading about interrupt descriptor tables because I want to make it so my kernel will print a line every time I press a key--any key. I'm not picky. It's incredibly intimidating, and I'm really impressed by how folks like Linus must've struggled to get their loving kernel to compile and boot without the benefit of virtual machines and the Internet, let alone actually compile useful software for it. In one sense, I realize that Rust is a very good choice because it guarantees memory safety unless you tell it to not care (which, really, you have to do), but also a horrendous choice because I still have to dig through piles of C and assembly to figure out what the gently caress is going on on x86. Really I probably shouldn't have picked this as a toy project but what's the fun in playing in the shallow end when you can just dive into the Marianas trench? E: also the kernel function is krust() Ghost of Reagan Past fucked around with this message at 06:17 on Dec 30, 2016 |
# ? Dec 30, 2016 06:06 |
|
Ghost of Reagan Past posted:Through this I learned that x86-64 is bullshit for garbagemen, because holy poo poo jumping to long mode is a pain in the rear end. UEFI bro. Or I think if you use multiboot all you have to do is set up paging. I used to write executives using a set of bootloaders and bare bones drivers I wrote or stole from the linux kernel, when I needed something to have a very controlled latency ... As far as PC's are concerned, I don't think there's any reason to just not use linux. I feel like the linux kernel is now modular enough to essentially be a big driver for any given computer.
|
# ? Dec 31, 2016 23:55 |
|
I improved RethinkDB's hard durability performance a bit by making it only need one fdatasync() call for small hard durability writes, instead of two. It does so by putting checksums in the metablock of the other file ranges that have been written. (In the attached image, the first run is inserting 1000 documents against the old version of the server, the second is against the new version. OS X is particularly bad when it comes to file-syncing.) More info.
|
# ? Jan 3, 2017 17:35 |
|
This thread is excellent, but it also makes my work seem super boring by comparison.
|
# ? Jan 4, 2017 01:21 |
|
This Christmas I dug up my old compiler project and actually implemented something that resembles a compiler backend. . The backend is super primitive and can't really handle programs that are any more complex than the one in the screenshot right now. The register allocator is also terrible, I just allocate a register for a variable, and if the program happens to have more variables (including compiler generated temporaries) than registers then the compiler crashes. The produced assembly isn't exactly great either, but at least it works. Figuring out X86-64 instruction encoding for even simple instructions like add or mov took awhile. The backend produces ELF object files and I currently use gcc to actually link them with a C program to get things like IO. The assembly is almost one-to-one mapping to the three-address code I use internally. I currently save all the callee-saved registers unconditionally. I hope I can at least get branching, loops and function calls as well as a slightly less insane register allocator implemented before I lose interest again.
|
# ? Jan 5, 2017 23:54 |
|
Man, that looks like a real learning experience. I'm always planning to do something in assembly or just ground up on a pdp8 emulator or something just for the learning experience, but I never get around to it.
|
# ? Jan 7, 2017 00:54 |
|
I've got the contents of all 200 Protracker sample disks on my A2000 but I have no idea what is actually on half these disks... so I wrote a little search tool that will go into a sample directory and look for samples by name, so I can just punch in "MT32" and it'll show me every MT32 sample I've got and where to find it. If I can figure out how audio playback works in AmigaOS I'll throw in a playback button too.
|
# ? Jan 8, 2017 06:32 |
|
I love all that low level stuff, keep it up! A few new things, the probability indicator lets you know the specific odds of getting a rack and its relative probability compared to other racks (the colour turning from red to green the more common it gets). You can save your progress as well now if you want to stop and try again later where you left off. I've also made some special files for listing the most common racks (one for racks with solutions, the other with not). This listbox contains the list of most likely opening racks in order. I'll probably be adding more files for this later as I think of them. You also get a congratulatory message if you guess all words correctly. Next on the to-do list is to maybe add a list of alphagrams with the highest number of solutions and also some help documentation. Sirocco fucked around with this message at 18:29 on Jan 8, 2017 |
# ? Jan 8, 2017 12:39 |
|
Luigi Thirty posted:If I can figure out how audio playback works in AmigaOS I'll throw in a playback button too. Also consider adding a pair of "scan forward"/"scan backward" buttons that play in turn the first ~300ms* of each successive sample. Allows for being super lazy when trying to find something that properly tickles your ear. * just in case some of your ProTracker samples are trying to be all modern and long.
|
# ? Jan 8, 2017 13:27 |
|
ynohtna posted:Also consider adding a pair of "scan forward"/"scan backward" buttons that play in turn the first ~300ms* of each successive sample. Allows for being super lazy when trying to find something that properly tickles your ear. I've been sick all day so I'm just killing time working on this since it distracts me from my throat and head and snot. Haven't figured out how to play back raw PCM yet I did figure out how AmigaOS' weird object-oriented list inheritance (in C!) works despite my compiler throwing pointer type warnings so I can add more sample details. ...no, I haven't actually written any music yet. I did find that someone is working on an updated version of ProTracker full of bug fixes and it works way better on my A2000 than the old version. Luigi Thirty fucked around with this message at 03:57 on Jan 9, 2017 |
# ? Jan 9, 2017 03:54 |
|
Wow this really takes me back. I doodled in Impulse Tracker as a teenager, but early on, I was just downloading random trackers off of BBSes, opening them up, and being completely overwhelmed. I was just reminded of those early days when I had no drat clue what was going on, but having digital, sampled audio instead of just FM-synthesized stuff from on-board OPL3 chips was mindblowing.
|
# ? Jan 9, 2017 18:27 |
|
Rocko Bonaparte posted:Wow this really takes me back. I doodled in Impulse Tracker as a teenager, but early on, I was just downloading random trackers off of BBSes, opening them up, and being completely overwhelmed. I was just reminded of those early days when I had no drat clue what was going on, but having digital, sampled audio instead of just FM-synthesized stuff from on-board OPL3 chips was mindblowing. Yeah, I've got lots and lots of samples and very little actual music I've made. I still don't know what half the buttons do. Anyway, since samples aren't all sampled at the same rate, instead of a Preview button, I changed it to three octaves of Preview buttons! I also posted the code on Github since it pretty much works at this point. https://github.com/Luigi30/samplefinder
|
# ? Jan 10, 2017 04:30 |
|
Hah. I used to make MOD files on a 386DX20, using my own samples, back when it was nearly impossible to do that outside of the amiga. I remember the biggest problem was that the only way I could record on my original Sound Blaster would produce VOC files, but all the Trackers expected something else (PCM 16? AIFF? I don't even remember). I had a crappy converter, but for whatever reason it would introduce a CB-style squelch at the beginning of every file it converted. I remember manually hex-editing silence at the beginning of my samples after converting them, and then barely being able to use them because I had to work around the consistent 1 second of silence at the beginning of the sample (editing the sample and trimming it would re-introduced the squelch). Think I made 8-10 songs, no idea where they ended up.
|
# ? Jan 10, 2017 09:06 |
|
Welp, someone tipped off lifehacker on hendersa's project. http://lifehacker.com/bes-turns-a-beaglebone-into-a-nintendo-centric-game-con-1791071444
|
# ? Jan 11, 2017 23:01 |
|
Moey posted:Welp, someone tipped off lifehacker on hendersa's project. My guess is that that someone was Adafruit. Maybe Lifehacker watches Adafruit's blog and snatches anything it can repost?
|
# ? Jan 12, 2017 03:21 |
|
Top left: added some more special rack lists to the alphagram generator. Top right: here's the racks for most solutions and I-heavy racks. I wasn't especially rigourous when calculating racks with the most solutions but logic dictates racks with two blank tiles are going to have the most so that made things quicker. I then iterated over combinations of the most frequent letters. ??AERST can be used to build 1727 seven- and eight-letter words altogether. Interestingly there's only one word with 4 or more "I"s (DIVIDIVI, a type of tree). There are only 4 "U"s so that list's built up of racks with three or more "U"s. Bottom left: vowel-heavy on the left and A-heavy on the right. The vowel-heavy list shows all racks with 5 or more vowel tiles with solutions. Bottom right: an example of loading a rack from the O-heavy list. There's a help page accessible through the menu as well though it's going to need some more drafting. Next up is statistics for quick reference of useful related probabilities (most common starting letters for solutions, etc.).
|
# ? Jan 19, 2017 23:41 |
|
You bastard.
|
# ? Jan 21, 2017 21:36 |
|
Munkeymon posted:Also, do people actually prefer Lucida Console or have these Mac/Linux users just not heard The Good Word of the Prophet Consolas? There's also a few Consolas hacks that include powerline characters. It's great.
|
# ? Jan 22, 2017 20:30 |
|
My compiler now supports if and while statements: I also ended up refactoring my lexer and parser & error handling while doing this. I now have much prettier error messages, and the parser now recovers from errors rather than aborting on first syntax error:
|
# ? Jan 22, 2017 23:33 |
|
Valtis posted:My compiler now supports if and while statements: I wrote a parser generator based on Parsing Expression Grammars one time and it was a totally mind bending experience. Gave me a lot more respect for compiler writers.
|
# ? Jan 22, 2017 23:47 |
|
steckles posted:That's awesome. Are you rolling the parser yourself or are you using the output from a parser generator as a base? I rolled my own. It's recursive descent parser, so it's pretty easy to write by hand. Most headaches come from removing left recursion from the grammar.
|
# ? Jan 23, 2017 00:02 |
|
Valtis posted:I also ended up refactoring my lexer and parser & error handling while doing this. I now have much prettier error messages, and the parser now recovers from errors rather than aborting on first syntax error: This is really slick! Mine always just goes "you really hosed up this time!" and gives a stack trace. I gotta aspire to what you've got going ...
|
# ? Jan 25, 2017 15:55 |
|
A small service that I wrote for "Request a tiny custom app" thread: A Windows service that monitors URLs. It provides an HTTP API to add/get/delete/update the URLs and a webpage to see their status and response times. I used crow HTTP as the websocket+http server library and Microsoft PPL as the concurrency library. PPL is quite nice. I cannot say the same thing about Crow HTTP (great idea, relatively weak implementation, and now is no longer maintained it seems). The service stores the information in a sqlite database (what URLs to visit and the history of past visits). WinHTTP is the client library, using a wrapper class I found on codeproject.com. Gif of it in action: Core repository is on github: https://github.com/sa55231/WebMonitoring One of the new things I've learned is that with WinHTTP HTTPS is ... finicky. By default (at least on my system) it is using SSL2, SSL3 and TLS1. My first release of the application, the guy comes and says that it doesn't work for him at all (cannot connect to the websites he provided). When I investigate it looks like WinHTTP is complaining about being unable to load a required library. Turns out, from Chromium code, that sometimes, one either needs to only load SSL2 and SSL3 or only load TLS1 (and 1.1 and 1.2). Telling it to use whatever (all) sometimes, on some systems, simply fails. The Chromium code is not clear on why is that needed, and I haven't investigated more on it, but I found it strange.
|
# ? Jan 26, 2017 03:12 |
|
I've been learning rust and 3d graphics by writing a renderer loosely following these posts and a bunch of articles on the math that I've found. I just finished the texture mapping: There are still some bugs, I think in the z-buffering (check out the knee on this demon): It's been a lot of fun. Don't really feel like I've fully understood Rust or the best way to do things with it but I really like the language so far.
|
# ? Jan 26, 2017 07:05 |
|
The program now has a green/pink theme which is vaguely reminiscent of Scrabble. I've added some new features in a Word Study menu to help with the study of useful words to complement the Special Racks menu. One feature allows you to search for words with any particular prefix, suffix, or circumfix you like. The other gives a quick look-up for help on studying words that begin or end with a certain letter. Beginning to come to the close with this, not much else to add. Maybe some pregenerated lists of common prefixes and suffixes (OVER-, PRE-, UN- BE-, -EST, -NESS, -LESS, -ING, etc.) but it's trivial to type these into the Word Study anyway so maybe not. Given the very red/green theme this program has I should probably add a colourblind mode with more highly contrasting colours. Sirocco fucked around with this message at 17:24 on Jan 28, 2017 |
# ? Jan 28, 2017 17:21 |
|
I found a Sega Saturn IDE on the internet, and, well...
|
# ? Jan 28, 2017 20:44 |
|
Just how much of a pain in the rear end is it to coax the Saturn into drawing something that seemingly straightforward?
|
# ? Jan 29, 2017 01:06 |
|
Internet Janitor posted:Just how much of a pain in the rear end is it to coax the Saturn into drawing something that seemingly straightforward? Said they were using the slave proc, so the creator of the machine claims they're in the top 1% of all programmers. So every pain in the rear end. The manuals are available online; the architecture is as interesting as it is completely hosed.
|
# ? Jan 29, 2017 16:31 |
|
Yeah I'm familiar with the machine's general insanity. Luigi Thirty, were you starting from some template code or did you roll that totally from scratch?
|
# ? Jan 29, 2017 17:09 |
|
|
# ? Apr 24, 2024 20:24 |
|
There's a dev kit called SaturnOrbit that includes a bunch of Sega tools and examples scavenged from the various dev ISOs floating around. It includes Sega's SGL library (which wasn't available at launch) that takes care of most of the heavy lifting for you. I adapted a template to do that much and it wasn't that hard. I've been trying to get it to do more with little success The documentation is awful and the Sega example code is all commented in Japanese. And good luck getting a modeler to spit out DXF files full of quads in 2017. I like their 600 page "how to write a 3D game" manual complete with a crash course in Softimage for programmers.
|
# ? Jan 29, 2017 20:03 |