This is an old version, please visit the current version at codeberg.org!
(Note, this is made as part of the truttle1 esojam. This README contains roleplay for the fun and profit)
$ git clone https://github.com/LabRicecat/FIXME
$ cd FIXME
$ mkdir build
$ cd build
$ cmake .. && make install
$ ./fixme <file.fixme>
Oh.. I have to do it.. oh okay boss.
So! You want to learn about out failed wonderful project FIXME
, greeeeat...
Basically, imagine a BASIC
clone, but we really screwed up at this one.
A program consists of lines, each line looking like this:
LINE WORD VAL VAL VAL...
LINE PERSON = WORD VAL VAL VAL...
LINE PERSON = VAL
LINE
has to be any positive number... but somewhy the digit 3
is broken, so please don't use it, thank you.
WORD
has to be one of the known words.
VAL
has to be a valid value.
PERSON
has to be a known person.
There are no comments, as the people who tried to implement them somehow disappeared, and after 3 men, management said we were not allowed to continue, legal problems or something. (RIP Jeremy)
Also the interpreter memory leaks, of course it does... damn it
A word
is something that does some stuff, here a brief incomplete list:
Prints all it arguments to the screen, sadly the second argument does not work, so it will be ignored.
Adds it's arguments and returns that. (Yes, we made a typo, not our problem anymore)
Also every fourth call does not work for some reason, lol.
It was designed to subtract two numbers, but even that is too hard for our code monkeys..
So if both arguments are numbers, it works fine. If their types do not match, the right one gets casted to the type of the left argument.
If both are strings, they get.. shuffled together.. what the hell is this????
Jumps to a specified line, (+1 that is, we got the jump equation wrong)
This... I don't know why this exists really. jack
and jon
are good friends and I suppose this was a birthday present for one. Basically it jumps to a specified line if both persons don't have the same value. (-2, because they are excited)
Prompts the user for a text input. This is horribly broken, and we have no idea why, it ignores all whitespaces and there is this weird @
at the end of all inputs, ew
Returns 1
if the specified person is alive at the moment, 3
otherwise (PLEASE DON'T ASK ME WHY IT'S 3
!)
Oh and yes, this is a typo again, whoops
This trims a string on both ends by 1, but somewhy this distance always increased dependent on how often you call this function. We figured out that it is chars = (calls % 10) + 1
, but don't count on that..
This..
This just triggers undefined behaviour and when we try to remove it, the whole thing begins to burn soo.. no.
Jumps to the specified number and pushes the current location onto the callstack
, side effect: it whyever flips the callstack whenever you use it...
Pops one element of the callstack
and jumps to that location. This word hates jessica
and jeniffer
as they were mean to it in high school, and will disable them when called.
Exits the program with the code -4
because that looked funny, but because of performance issues, this only works if all people are turned off!
There are 2 types of values you should know about: Numbers and Strings. There are no floating point numbers, lol get screwed.
Examples:
"This is a string"
124
Wherever you put a value
, you can also place a person
.
So.. our value registers somehow became sentient and we now refer to them as "persons".
Register- sorry, "persons" can be alive or dead. When they're dead, you can not read from them, assigning to them will revive them.
Each person has it's own feelings and conditions you need to keep track of, if you don't, they refuse to work. Only jack and jackob do not mind. (The rest threatened to burn down our corp 5 times already, please PLEASE be kind to them)
A cool girl you can always read and write to. Old school friend of jessica it seems.
A picky guy, he will refuse to work if jack is alive!
The absolute best friend of jon! They will only work if jon is alive too!
Jon HATES even numbers, so they only are assignable on odd ones.
So damn lazy, they will ignore 50% of all write requests, pfff if only I could do that..
Yeah.. they are too old to work, please leave them alone.
Jackob dislikes other people, so they will only work if 4 or less people (them included) are alive at the moment.
Our little daemon, if you awake her, all other registers turn off... scary
Some.. mild hacks, so we feel better about ourselves
1 jon = ASK
5 jon = AdD "a" jon
15 jon = TRIM jon
16 james = "1"
20 PRINT jon
40 FRIENDS 70
50 PRINT jon
60 GOTO 40
10 jeniffer = ASK
20 jeniffer = AdD "a" jeniffer
40 jeniffer = TRIM jeniffer
41 TRIM " "
42 TRIM " "
44 TRIM " "
45 TRIM " "
46 TRIM " "
47 TRIM " "
48 TRIM " "
49 TRIM " "
50 TRIM " "
51 PRINT jeniffer
60 GOTO 9
10 jeniffer = 0
15 jon = 10
20 josh = 1
40 james = 0
50 FRIENDS 60
60 GOTO 99
69 josh = AdD josh jeniffer
70 jeniffer = SUB josh jeniffer
74 james = AdD 1 james
75 AdD 0 0
76 AdD 0 0
80 GOTO 49
100 PRINT jeniffer