Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
Luigi Thirty
Apr 30, 2006

Emergency confection port.

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

Adbot
ADBOT LOVES YOU

Fergus Mac Roich
Nov 5, 2008

Soiled Meat

Ghost of Reagan Past posted:


Nothing much to see here, just booting into a Rust kernel with a VGA driver and the ability to write to the screen :snoop:

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.

kayakyakr
Feb 16, 2004

Kayak is true

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.

I write Python and do web stuff for a living, so this is both way out of my comfort zone and pretty fun. The fun part is that Rust makes everything really straightforward and I don't have to do much with raw pointers (but I can, because Rust!). I don't know where I'm going with this but I'll figure it out.

Also, Windows Subsystem for Linux is ridiculously great. That's QEMU running in X, and it's built using the Linux toolchain, all without a VM in Windows. I'd use it over Mac OS for work if I could, it's that good.

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

skimothy milkerson
Nov 19, 2006

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

Munkeymon
Aug 14, 2003

Motherfucker's got an
armor-piercing crowbar! Rigoddamndicu𝜆ous.



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 :effort:

Also, do people actually prefer Lucida Console or have these Mac/Linux users just not heard The Good Word of the Prophet Consolas?

Ghost of Reagan Past
Oct 7, 2003

rock and roll fun

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.

Ferg
May 6, 2007

Lipstick Apathy

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.

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.

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!

hendersa
Sep 17, 2006

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:


Nothing much to see here, just booting into a Rust kernel with a VGA driver and the ability to write to the screen :snoop:

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. :science:

hendersa fucked around with this message at 21:45 on Dec 29, 2016

Luigi Thirty
Apr 30, 2006

Emergency confection port.

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.

skimothy milkerson
Nov 19, 2006

Luigi Thirty posted:

69 downloads

NICE!

Ghost of Reagan Past
Oct 7, 2003

rock and roll fun

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.
Thanks! Most of the hard work was really done by others, I just read what they did and implemented it on my own. Stand on the shoulder of giants, etc.

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() :haw:

Ghost of Reagan Past fucked around with this message at 06:17 on Dec 30, 2016

dougdrums
Feb 25, 2005
CLIENT REQUESTED ELECTRONIC FUNDING RECEIPT (FUNDS NOW)

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.

sarehu
Apr 20, 2007

(call/cc call/cc)
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.

Only registered members can see post attachments!

putin is a cunt
Apr 5, 2007

BOY DO I SURE ENJOY TRASH. THERE'S NOTHING MORE I LOVE THAN TO SIT DOWN IN FRONT OF THE BIG SCREEN AND EAT A BIIIIG STEAMY BOWL OF SHIT. WARNER BROS CAN COME OVER TO MY HOUSE AND ASSFUCK MY MOM WHILE I WATCH AND I WOULD CERTIFY IT FRESH, NO QUESTION
This thread is excellent, but it also makes my work seem super boring by comparison.

Valtis
Sep 21, 2009
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.

bobua
Mar 23, 2003
I'd trade it all for just a little more.

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. :(

Luigi Thirty
Apr 30, 2006

Emergency confection port.

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.

Sirocco
Jan 27, 2009

HEY DIARY! HA HA HA!
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

ynohtna
Feb 16, 2007

backwoods compatible
Illegal Hen

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.

Luigi Thirty
Apr 30, 2006

Emergency confection port.

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.

* just in case some of your ProTracker samples are trying to be all modern and long.

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

Rocko Bonaparte
Mar 12, 2002

Every day is Friday!

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.

Luigi Thirty
Apr 30, 2006

Emergency confection port.

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

Scaramouche
Mar 26, 2001

SPACE FACE! SPACE FACE!

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.

Moey
Oct 22, 2010

I LIKE TO MOVE IT
Welp, someone tipped off lifehacker on hendersa's project.

http://lifehacker.com/bes-turns-a-beaglebone-into-a-nintendo-centric-game-con-1791071444

hendersa
Sep 17, 2006


My guess is that that someone was Adafruit. Maybe Lifehacker watches Adafruit's blog and snatches anything it can repost?

Sirocco
Jan 27, 2009

HEY DIARY! HA HA HA!


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.).

upsidedown
Dec 30, 2008
You bastard.

Factor Mystic
Mar 20, 2006

Baby's First Post-Apocalyptic Fiction

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.

Valtis
Sep 21, 2009
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:

steckles
Jan 14, 2006

Valtis posted:

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:


That's awesome. Are you rolling the parser yourself or are you using the output from a parser generator as a base?

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.

Valtis
Sep 21, 2009

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 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.

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.

dougdrums
Feb 25, 2005
CLIENT REQUESTED ELECTRONIC FUNDING RECEIPT (FUNDS NOW)

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 ...

Volguus
Mar 3, 2009
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.

Flash Gordon
May 8, 2006
Death To Ming
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.

Sirocco
Jan 27, 2009

HEY DIARY! HA HA HA!


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

Luigi Thirty
Apr 30, 2006

Emergency confection port.

I found a Sega Saturn IDE on the internet, and, well...

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
Just how much of a pain in the rear end is it to coax the Saturn into drawing something that seemingly straightforward?

leper khan
Dec 28, 2010
Honest to god thinks Half Life 2 is a bad game. But at least he likes Monster Hunter.

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.

Internet Janitor
May 17, 2008

"That isn't the appropriate trash receptacle."
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?

Adbot
ADBOT LOVES YOU

Luigi Thirty
Apr 30, 2006

Emergency confection port.

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 :v: 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.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply