Join us on Discord!
You can help CodeWalrus stay online by donating here.

Claw development system, a multiplatform programming platform [multiplatform]

Started by DarkestEx, May 07, 2016, 05:33:29 PM

Previous topic - Next topic

0 Members and 3 Guests are viewing this topic.

DarkestEx

Quote from: DJ Omnimaga on August 08, 2016, 04:44:23 PM
I like it more actually now :)
Thanks :)

I FINISHED THE PREPROCESSOR! ;D
It can do, expressions, hexadecimal escapes, multiline statements, defines, undefines, nested if's, ifdefs, elseifs, custom errors, file includes and more.
Also the error handling is totally finished and displays nicely formatted errors.
Feel free to test and download the version from here:
http://claw.muessigb.net/dl/clawsemble-16_aug_09-a.zip
  • Calculators owned: TI-84+, Casio 101-S, RPN-Calc, Hewlett-Packard 100LX, Hewlett-Packard 95LX
  • Consoles, mobile devices and vintage computers owned: Original Commodore 64C, C64 DTV, Nintendo GameBoy Color, Nintendo GameCube, Xbox 360, PlayStation 2

Dream of Omnimaga

Awesome! I'm glad to see this progress smoothly so far. :) Will there be a mini tutorial in the future by the way?
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U
Now active at https://discord.gg/cuZcfcF (CodeWalrus server)

DarkestEx

Quote from: DJ Omnimaga on August 09, 2016, 04:06:03 AM
Awesome! I'm glad to see this progress smoothly so far. :) Will there be a mini tutorial in the future by the way?
Absolutely, as soon as I find time, I will write a full one up.
To make it easy for all of us, I kept the entire preprocessor compatible to the C one.

Little Clawsemble preprocessor overview:

Let's start with the conditionals.
They can be nested as much as desired and each if can have an unlimited amount of elseif's/elseifdef's and elseifndef's.
There can only be one else which is optional and has to be the last element in the if block.
#if (expression)    is used to only process the enclosed code if the condition is met, or the number or string inside the parantheses is non-zero
#ifdef defininition    is similar to the above but the condition is met, if a variable with the name is defined
#ifndef definition    as above, but condition is met, if the variable is not defined
#elseif (expression)    is used to provide an alternative, if the previous condition(s) is/are not met
#elseifdef definition    as above, but the condition is if a variable with that name is defined
#elseifndef definition    as above, but the if the variable is not defined
#else    if the condition is not met and the elseif's don't met their conditions either
#endif    is used to close the if-block

Expressions are simple.
All C arithmetic operators are supported and are using the same symbol, except for modulo, which is // now.
Numbers can be written with +/- prefix to show whether they are positive or negative. Negative numbers do
not need to be enclosed in parantheses. You can easily write something like: (-1 + -2 -3 - -4) and you can
even omit the spaces and Clawsemble will still be able to deal with it correctly.
Using the negative sign to negate an expression is NOT supported though. Use *-1 to do so instead.
Expressions should always be enclosed in one set of parantheses ()
Hexadecimal numbers are prefixed with an $ABAB, characters are written like this %d.

Multiple files work too.
Just use #include "filename.csm", to include other source files. They are just inserted into your main program at the position
of the #include statement and have access to the same #defines as your main program.

You can define variables.
Use #define MY_VAR 1234, #define YOUR_VAR %d, #define HEXVAR $DEADBEEF or #define ANOTHER_VAR (123 + $1242 * 123) to define your own variables
that you can check later on with the #if statement and it's companions. #undefine is used to delete a variable from memory again.
Variables can also be redefined at any point by simply calling #define again.
Be careful with the names, as they are case-sensitive. Also, all exact word-occurences of the variable name in the program are
automatically replaced by the value that the variable has at that point of time. If it changes later on in the assemblation,
the value won't change again.

Custom errors are easy to use.
Let's say, you have some conditions that have to be met for a program to be assembled correctly and you would like to prevent
the user from such accidents then you can simply use the #error statement to abort the further assemblation of the program.
You can even display an error message, the result of an expression or the contents of a variable by passing it after the #error statement:
e.g.: #error ("The architecture " + ARCH + " is unfortunately not supported at the moment!")

Make it short.
Many shorthand forms are available to save you typing:
#error, #err
#define, #def
#include, #inc
#elseif, #elif
#elseifdef, #elifdef
#elseifndef, #elifndef

Comment your code.
You can use the ; character to comment out lines if you don't want them to be parsed.
Everything after the start of a comment until a newline character is ignored and will not be processed.
You can put the comment at the beginning or the end of a line. Multiline comments are not supported.
Comments can be disabled by putting a \ in front of the comment. Like this:    \;
The \ character can also be used to break single line codes into multiple ones:
e.g.: #define MY_COMPLEX_EXPRESSION \
(123 + 124 + 23230 + 12040 + ONE_OF_MY_VARS + 12332 * 124224 - 20 + \
1402 + $BEEF)


This tutorial will be finished later on, when more of the assembler is done and ready for primetime.
  • Calculators owned: TI-84+, Casio 101-S, RPN-Calc, Hewlett-Packard 100LX, Hewlett-Packard 95LX
  • Consoles, mobile devices and vintage computers owned: Original Commodore 64C, C64 DTV, Nintendo GameBoy Color, Nintendo GameCube, Xbox 360, PlayStation 2

DarkestEx

Update:

I have finished the instruction list. A lot was already there but I have finally completed it.
Can you PLEASE have a look if I am missing anything and maybe suggest some improvements?

Here is the full instruction list:
https://docs.google.com/spreadsheets/d/1Tfi8z7maQLM3RUHfQpnS50gAkGyfiizkQ54TTZGl9e4/edit?usp=sharing
  • Calculators owned: TI-84+, Casio 101-S, RPN-Calc, Hewlett-Packard 100LX, Hewlett-Packard 95LX
  • Consoles, mobile devices and vintage computers owned: Original Commodore 64C, C64 DTV, Nintendo GameBoy Color, Nintendo GameCube, Xbox 360, PlayStation 2

Dream of Omnimaga

I can't check all commands now due to limited time, but wouldn't it be easier for programmers to not have to press Shift+# or Alt gr+#  every three second when coding?
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U
Now active at https://discord.gg/cuZcfcF (CodeWalrus server)

DarkestEx

Quote from: DJ Omnimaga on August 10, 2016, 01:34:15 PM
I can't check all commands now due to limited time, but wouldn't it be easier for programmers to not have to press Shift+# or Alt gr+#  every three second when coding?
What  ???
Well, first, C and many other languages use # for preprocessor directives and second, I think on most keyboards it's quite simple to reach the # symbol.
For me it's a separate key.
I primarily wanted to keep it compatible with existing things, so I choose the most common method. I doubt you will ever use the Assembler as I assume you don't get along with assembly and I can't complain if you can't; it's still not so easy. But don't worry, Cumred's high level compiler with mostly Basic/Lua syntax is on it's way ;)
  • Calculators owned: TI-84+, Casio 101-S, RPN-Calc, Hewlett-Packard 100LX, Hewlett-Packard 95LX
  • Consoles, mobile devices and vintage computers owned: Original Commodore 64C, C64 DTV, Nintendo GameBoy Color, Nintendo GameCube, Xbox 360, PlayStation 2

Dream of Omnimaga

Oh I meant how commands are #elseif instead of elseif for example. On my French Canadian keyboard the # has no 1st level key assigned. I am ok with #, but commands will take longer to type.

Keep up the good work though :3=
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U
Now active at https://discord.gg/cuZcfcF (CodeWalrus server)

DarkestEx

Quote from: DJ Omnimaga on August 10, 2016, 04:02:26 PM
Oh I meant how commands are #elseif instead of elseif for example. On my French Canadian keyboard the # has no 1st level key assigned. I am ok with #, but commands will take longer to type.

Keep up the good work though :3=
Thanks :D

You usually don't need to use these statements as they are executed on the compiler PC and not the device. Clawsemble has own instructions for it which are just written as a word.
  • Calculators owned: TI-84+, Casio 101-S, RPN-Calc, Hewlett-Packard 100LX, Hewlett-Packard 95LX
  • Consoles, mobile devices and vintage computers owned: Original Commodore 64C, C64 DTV, Nintendo GameBoy Color, Nintendo GameCube, Xbox 360, PlayStation 2

DarkestEx

I have finally finished Claw's instruction set :)

You can find a list with all the instructions and their descriptions and parameters here:
https://github.com/muessigb/Clawsemble/wiki/Instruction-set
  • Calculators owned: TI-84+, Casio 101-S, RPN-Calc, Hewlett-Packard 100LX, Hewlett-Packard 95LX
  • Consoles, mobile devices and vintage computers owned: Original Commodore 64C, C64 DTV, Nintendo GameBoy Color, Nintendo GameCube, Xbox 360, PlayStation 2

c4ooo

Quote from: DJ Omnimaga on August 10, 2016, 04:02:26 PM
Oh I meant how commands are #elseif instead of elseif for example. On my French Canadian keyboard the # has no 1st level key assigned. I am ok with #, but commands will take longer to type.

Keep up the good work though :3=
No keyboard has a first level '#'.
If you can't be bothered to press the shift button you could get the hash-tag keyboard :trollface: http://thehashkey.com/kickstarter


DarkestEx

Quote from: c4ooo on August 22, 2016, 08:50:08 AM
Quote from: DJ Omnimaga on August 10, 2016, 04:02:26 PM
Oh I meant how commands are #elseif instead of elseif for example. On my French Canadian keyboard the # has no 1st level key assigned. I am ok with #, but commands will take longer to type.

Keep up the good work though :3=
No keyboard has a first level '#'.
If you can't be bothered to press the shift button you could get the hash-tag keyboard :trollface: http://thehashkey.com/kickstarter
Do a bit of research before claiming something:

This is the german keyboard layout which has a first level # key right left to the return key.
Unfortunately the same layout makes it cumbersome to access the curly and sharp braces, as they need a modifier key to work.
  • Calculators owned: TI-84+, Casio 101-S, RPN-Calc, Hewlett-Packard 100LX, Hewlett-Packard 95LX
  • Consoles, mobile devices and vintage computers owned: Original Commodore 64C, C64 DTV, Nintendo GameBoy Color, Nintendo GameCube, Xbox 360, PlayStation 2

DarkestEx

Sorry for breaking the previous instruction set, but I forgot some really important instructions.
Here is the updated list:

#MnemonicDescriptionOperandsStatic operand
0x0NOPDo nothing.
0x1VNFOPushes the configuration flags of the virtual machine such as features and processor details.
0x2STSZPushes the current instance's allocated stack size followed by the usage.
0x3CASZPushes the current instance's allocated call stack size followed by the usage.
0x4PLSZPushes the system's allocated array pool size followed by the usage.
0x5RICKRickrolls the user. This will result in the program not behaving as expected. Use with care!
0x6HCFKills the current instance of the virtual machine. Displays an error message from the constant table. Use -1 to skip the message.TABLE_ENTRY (S)
0x7EOPEnds the current program. Performs a normal exit.
0x8BRKCreates a breakpoint. Takes a constant breakpoint ID.BREAKPOINT_ID (B)
0x9DBPSPrints a string from the constant table to the debug console.TABLE_ENTRY (S)
0xaDBDADumps the contents of the current array to the debug console.
0xbDBDVPops the last stack value and prints it to the debug console.VALUE ($0)
0xcMDPPushes whether the optional module is present and loaded. Takes an constant entry that contains the module name.TABLE_ENTRY  (S)
0xdMDLLoads a module into the extended instruction area. Takes a constant index of the module.MODULE_INDEX (B)
0xeMDVPushes the minor, the the major version of the module onto the stack. Takes a constant index of the module.MODULE_INDEX (B)
0xfLRLLoads a library/binary from a string handle. Takes the handle from the referenced constant table entry. Pushes whether the load was successful.SLOT ($0)TABLE_ENTRY (S)
0x10LRDLoads a library/binary from a string handle. Takes the handle from the currently loaded string. Pushes whether the load was successful.SLOT ($0)
0x11LRUUnloads a library/binary that was previously loaded. Does not crash if the slot was empty.SLOT ($0)
0x12FEXPushes whether a function exists. Using -1 as the slot will check for a local function.SLOT ($0), FUNCTION_INDEX ($0)
0x14LCLoads a numeric constant and pushes it onto the stack.VALUE (N)
0x15LDCopies a lower stack value onto the top of the stack. Uses a constant relative offset.REL_STK_OFFSET (B)
0x16LDDCopies a lower stack value onto the top of the stack. Uses a dynamic absolute offset.ABS_STK_OFFSET ($0)
0x17DVDrops the last value from the stack.VALUE ($0)
0x18DPDuplicates the uppermost value on the stack.VALUE ($0)
0x19SWSwaps the two uppermost values on the stack.VALUE ($0)
0x1aLXPushes a value from an array to the stack. Uses a constant address (aligned at the numeric type).ADDRESS (N)
0x1bLXDPushes a value from an array to the stack. Uses a dynamic address (aligned at the numeric type).ADDRESS ($0)
0x1cLXBPushes a byte value from an array to the stack. Uses a constant address (aligned at the byte type).ADDRESS (N)
0x1dLXBDPushes a byte value from an array to the stack. Uses a dynamic address (aligned at the byte type).ADDRESS ($0)
0x1ePXPushes a value from the stack to the array. Uses a constant address (aligned to the numeric type).VALUE ($0)ADDRESS (N)
0x1fPXDPushes a value from the stack to the array. Uses a dynamic address (aligned to the numeric type).VALUE ($1), ADDRESS ($0)
0x20PXBPushes a byte value from the stack to the array. Uses a constant address (aligned to the byte type).VALUE ($0)ADDRESS (N)
0x21PXBDPushes a byte value from the stack to the array. Uses a dynamic address (aligned to the byte type).VALUE ($1), ADDRESS ($0)
0x22XCCreates a new numeric array. Uses a constant size in elements. Selects the array afterwards.SIZE (N)
0x23XCBCreates a new byte array. Uses a constant size in bytes. Selects the array afterwards.SIZE (N)
0x24XCDCreates a new numeric array. Size in bytes is taken from the stack. Selects the array afterwards.SIZE ($0)
0x25XCICreates a new array and initializes it's contents and size with a constantly selected constant value from the constant table. Selects the array afterwards.TABLE_ENTRY (A)
0x26XSSelects the current array used to share data with. Uses a constant relative offset within the current instance.REL_ARR_OFFSET (B)
0x27XSDSelects the current array used to share data with. Uses a dynamic absolute identifier.ABS_ARR_OFFSET ($0)
0x28XSRSelects the current array as the array assigned to the calling executable.
0x29XARSets the current array as the array assigned to the calling executable.
0x2aXRResizes the currently selected array. Uses a dynamic size in elements. On some platforms only the last created array can be resized.SIZE ($0)
0x2bXRBResizes the currently selected array. Uses a dynamic size in bytes. On some platforms only the last created array can be resized.SIZE ($0)
0x2cXRLResizes the last created array. Uses a dynamic size in elements. This is guaranteed to work on any platform.SIZE ($0)
0x2dXRLBResizes the last created array. Uses a dynamic size in bytes. This is guaranteed to work on any platform.SIZE ($0)
0x2eXDDrops the currently selected array. On some platforms only the last created array can be dropped.
0x2fXDLDrops the last created array. This is guaranteed to work on any platform.
0x30XPOPushes the relative offset of the currently selected array to the stack.
0x31XPIPushes the absolute index of the currently selected array to the stack.REL_ARR_OFFSET (B)
0x32XPSPushes the size in bytes of the currently selected array to the stack.
0x33XPSBPushes the size in bytes of the currently selected array to the stack.
0x34XCSPushes the size in bytes of the dynamically selected constant table entry. Pushes 0 if the entry does not exist.TABLE_ENTRY ($0)
0x35XFNFills the array with a value. Takes the number, the length in elements and the offset in elements from the stack.LENGTH ($2), TAR_OFFSET ($1), VALUE ($0)
0x36XFCFills the array with a constant value. Takes length in bytes and offset in bytes from the stack.LENGTH ($1), TAR_OFFSET ($0)VALUE (B)
0x37XMNCopies from the current array to another one. Takes length in elements and offset in elements from the stack. Takes a constant relative array offset.LENGTH ($2), TAR_OFFSET ($1), SRC_OFFSET ($0)REL_ARR_OFFSET (B)
0x38XMBCopies from the current array to another one. Takes length in bytes and offset in bytes from the stack. Takes a constant relative array offset.LENGTH ($2), TAR_OFFSET ($1), SRC_OFFSET ($0)REL_ARR_OFFSET (B)
0x39XMDCopies from the current array to another one. Takes length, offset and absolute offset to target from the stack.LENGTH ($3), TAR_OFFSET ($2), SRC_OFFSET ($1), ABS_ARR_OFFSET ($0)
0x3aXMCNCopies a constant from the constant table to the array. Uses a constant table entry as source. Clips the constant, if it's longer than the size. Length and offset in elements.LENGTH ($2), TAR_OFFSET ($1), SRC_OFFSET ($0)TABLE_ENTRY (A)
0x3bXMCBCopies a constant from the constant table to the array. Uses a constant table entry as source. Clips the constant, if it's longer than the size. Length and offset in bytes.LENGTH ($2), TAR_OFFSET ($1), SRC_OFFSET ($0)TABLE_ENTRY (A)
0x3cXMCDCopies a constant from the constant table to the array. Uses a dynamic table entry. Clips the constant, if it's longer than the size. Length and offset in bytes.LENGTH ($2), TARGET_OFFSET  ($1), TABLE_ENTRY ($0)
0x3dCNBConverts the number in elements on the stack to the equivalent number of bytes.ELEMENTS ($0)
0x3eCNCConverts the constant number in elements to the equivalent number of bytes and pushes it.ELEMENTS (N)
0x3fCBNConverts the number in bytes on the stack to the next equivalent number of elements.BYTES ($0)
0x41JPPerforms a relative jump. Takes a constant offset to the target.OFFSET (L)
0x42JPDPerforms a relative jump. Takes a dynamic offset to the target.OFFSET ($0)
0x43JPZPerforms a relative jump, if the popped stack entry is <= 0.DISCRIMINATOR ($0)OFFSET (L)
0x44JPPPerforms a relative jump, if the popped stack entry is > 0.DISCRIMINATOR ($0)OFFSET (L)
0x45JPPDPerforms a relative jump to the dynamic offset, if the popped stack entry is > 0.DISCRIMINATOR ($1), OFFSET ($0)
0x46JSPerforms a short jump ahead if popped stack entry is > 0.DISCRIMINATOR ($0)OFFSET (SL)
0x47JSBPerforms a short jump back if popped stack entry is > 0.DISCRIMINATOR ($0)OFFSET (SL)
0x48CACalls a local function. Takes a constant function index.FUNCTION_INDEX (F)
0x49CADCalls a local function. Takes a dynamic function index.FUNCTION_INDEX ($0)
0x4aCLCalls a library function. Takes a constant function index.SLOT ($0)FUNCTION_INDEX (F)
0x4bCLDCalls a library function. Takes a dynamic function index.SLOT ($1), FUNCTION_INDEX ($0)
0x4cRETReturns from a function early.
0x4eADDPops $0 and $1. Pushes $1 + $0.$0, $1
0x4fSUBPops $0 and $1. Pushes $1 - $0.$0, $1
0x50MULPops $0 and $1. Pushes $1 * $0.$0, $1
0x51DIVPops $0 and $1. Pushes $1 / $0. This is a signed division.$0, $1
0x52MODPops $0 and $1. Pushes $1 % $0. This is a signed division.$0, $1
0x53POWPops $0 and $1. Pushes $0 to the power of $1.$0, $1
0x54MAXPops $0 and $1. Pushes the larger of both.$0, $1
0x55MINPops $0 and $1. Pushes the smaller of both.$0, $1
0x56ANDPops $0 and $1. Pushes $1 & $0. This is a bitwise function.$0, $1
0x57ORPops $0 and $1. Pushes $1 | $0. This is a bitwise function.$0, $1
0x58XORPops $0 and $1. Pushes $1 ^ $0. This is a bitwise function.$0, $1
0x59BSLPops $0 and $1. Pushes $1 << $0. This is a bitwise function.$0, $1
0x5aBSRPops $0 and $1. Pushes $1 >> $0. This is a bitwise function.$0, $1
0x5bADDCPops $0. Pushes $0 + c.$0C (N)
0x5cSUBCPops $0. Pushes $0 - c.$0C (N)
0x5dMULCPops $0. Pushes $0 * c.$0C (N)
0x5eDIVCPops $0. Pushes $0 / c. This is a signed division.$0C (N)
0x5fMODCPops $0. Pushes $0 % c. This is a signed division.$0C (N)
0x60ANDCPops $0. Pushes $0 & c. This is a bitwise function.$0C (N)
0x61ORCPops $0. Pushes $0 | c. This is a bitwise function.$0C (N)
0x62XORCPops $0. Pushes $0 ^ c. This is a bitwise function.$0C (N)
0x63BSLCPops $0. Pushes $0 << places. This is a bitwise function.$0PLACES (B)
0x64BSRCPops $0. Pushes $0 >> places. This is a bitwise function.$0PLACES (B)
0x65ICRPops $0. Pushes $0 + 1.$0
0x66DCRPops $0. Pushes $0 - 1.$0
0x67ABSPops $0. Pushes abs($0).$0
0x68RNDPops $0. Pushes rand() % $0.$0
0x69SQRTPops $0. Pushes sqrt($0).$0
0x6aLOG2Pops $0. Pushes log2($0).$0
0x6bIPW2Pops $0. Pushes a logic true, if $0 is a power of 2 and a logic false otherwise. This is a logical function.$0
0x6cNEGPops $0. Pushes -$0.$0
0x6dNOTPops $0. Pushes ~$0. This is a bitwise function.$0
0x6eREVPops $0. Reverses the bits of $0 and pushes them. This is a bitwise function.$0
0x6fCBSPops $0. Pushes the number of active bits in $0. This is a bitwise function.$0
0x70CBZPops $0. Pushes the number of trailing zero bits in $0. This is a bitwise function.$0
0x71LANDPops $0 and $1. Pushes $0 && $1. This is a logical function.$0, $1
0x72LORPops $0 and $1. Pushes $0 || $1. This is a logical function.$0, $1
0x73LNOTPops $0. Pushes !$0. This is a logical function.$0
0x74EQPops $0 and $1. Pushes $0 == $1. This is a logical function.$0, $1
0x75NEQPops $0 and $1. Pushes $0 != $1. This is a logical function.$0, $1
0x76LTPops $0 and $1. Pushes $0 < $1. This is a logical function.$0, $1
0x77LTEQPops $0 and $1. Pushes $0 <= $1. This is a logical function.$0, $1
0x78GTPops $0 and $1. Pushes $0 > $1. This is a logical function.$0, $1
0x79GTEQPops $0 and $1. Pushes $0 >= $1. This is a logical function.$0, $1C (N)
0x7aEQCPops $0. Pushes $0 == c. This is a logical function.$0C (N)
0x7bNEQCPops $0. Pushes $0 != c. This is a logical function.$0C (N)
0x7cLTCPops $0. Pushes $0 < c. This is a logical function.$0C (N)
0x7dLTEQCPops $0. Pushes $0 <= c. This is a logical function.$0C (N)
0x7eGTCPops $0. Pushes $0 > c. This is a logical function.$0C (N)
0x7fGTEQCPops $0. Pushes $0 >= c. This is a logical function.$0
  • Calculators owned: TI-84+, Casio 101-S, RPN-Calc, Hewlett-Packard 100LX, Hewlett-Packard 95LX
  • Consoles, mobile devices and vintage computers owned: Original Commodore 64C, C64 DTV, Nintendo GameBoy Color, Nintendo GameCube, Xbox 360, PlayStation 2

p2

Uuuuh, an evil doublepost  O.O Should better call the site Editors to fix that ;)

Btw you should also update the spoilered list in your old post :)
Aaand it really looks nice  :thumbsup:
  • Calculators owned: ti-83+, ti-84+, ti-84+, ti-84+se, ti-84+se(te), ti-nsphire, ti-nsphire CAS, ti-nsphire CX-CAS, ti-voyage, ti-voyage, Who reads this list anyways...?
Anyway war sucks. Just bring us your food instead of missiles  :P ~ DJ Omnimaga (11.10.2016 20:21:48)
if you cant get a jframe set up, draw stuff to it, and receive input, i can only imagine how horrible your game code is _._   ~ c4ooo (14.11.2016 22:44:07)
If they pull a Harambe on me tell my family I love them ~ u/Pwntear37d (AssangeWatch /r/)
make Walrii great again ~ DJ Omnimaga (28.11.2016 23:01:31)
God invented the pc, satan the smartphone I guess ~ p4nix (16.02.2017 22:51:49)

DarkestEx

Quote from: p2 on August 22, 2016, 01:53:58 PM
Uuuuh, an evil doublepost  O.O Should better call the site Editors to fix that ;)

Btw you should also update the spoilered list in your old post :)
Aaand it really looks nice  :thumbsup:
Haha, double posts are alright to promote big updates which this absolutely is ;)

I will and thanks :)
  • Calculators owned: TI-84+, Casio 101-S, RPN-Calc, Hewlett-Packard 100LX, Hewlett-Packard 95LX
  • Consoles, mobile devices and vintage computers owned: Original Commodore 64C, C64 DTV, Nintendo GameBoy Color, Nintendo GameCube, Xbox 360, PlayStation 2

Dream of Omnimaga

Thanks for the instructions update. Also I'm glad this is coming along nicely. I'm still curious about how fast vector graphics will render on lower-end platforms, especially if many vector graphics are present on the screen at the same time (such as Ikaruga or Touhou shooters)
  • Calculators owned: TI-82 Advanced Edition Python TI-84+ TI-84+CSE TI-84+CE TI-84+CEP TI-86 TI-89T cfx-9940GT fx-7400G+ fx 1.0+ fx-9750G+ fx-9860G fx-CG10 HP 49g+ HP 39g+ HP 39gs (bricked) HP 39gII HP Prime G1 HP Prime G2 Sharp EL-9600C
  • Consoles, mobile devices and vintage computers owned: Huawei P30 Lite, Moto G 5G, Nintendo 64 (broken), Playstation, Wii U
Now active at https://discord.gg/cuZcfcF (CodeWalrus server)

Powered by EzPortal