POGA-INTERCAL

From Esolang
Jump to navigation Jump to search

This is like INTERCAL-72 and C-INTERCAL and CLC-INTERCAL, with some differences:

  • Now it doesn't matter if a command has DO or PLEASE or whatever, and if you aren't polite you can override it. Also, there are no more standard libraries.
  • Labels for statements are (number) but to go to the label you need to put the number, such as "#123" or "!12$.?13'~#15".
  • ABSTAIN and REINSTATE command are now ABSTAIN label and REINSTATE label, no abstain/reinstate commands.
  • COME FROM label command is now multi-threading, in case more than one COME FROM is the same label. A thread is destroyed by a GIVE UP command. All threads have separate data spaces, but shared code and ABSTAIN and REINSTATE of labels. See Threaded INTERCAL.
  • C-INTERCAL operators ($ for mingle, ? for XOR) are supported.
  • Put NOT or DON'T before a command to make it pre-abstained, as in C-INTERCAL.
  • Put MAYBE before a command to do backtracking. You can also use RECONSIDER and COMMIT commands. See Backtracking INTERCAL.
  • Computed COME FROM is allowed. When a label is reached, see which COME FROM's compute to the same label.
  • For the NEXT command, you must put NEXT first before label number
  • To assign values, you must type CALCULATE .1 <- #1 instead of .1 <- #1.
  • You can do enslavement of registers. Type ENSLAVE .1 TO .2 to make .2 to own .1. To do the owner of the register, do #2^.1 for second owner of register .1. Type FREE .1 FROM .2 to unenslave.
  • You can use computed register names. After , or . or : or ; you can put another . before the number to refer to another register, and its value is then used as the number for the register.
  • Input/output is done as Unicode text, with bytes of a 16-bit register reversed (so #256 is character number 1). If you do READ OUT a . register then it will output that Unicode character. If you do READ OUT a , register then it will output the characters in the array in reverse order. If you do WRITE IN it can only be a . no other type is available, but the register isn't reversed (so that #256 if write in is character number 256). If is 32-bit value, then it is the device-code mingle by the character value. When input a 32-bit value it does the device code store in that register before it was input. Maybe the input device will redirect to a different device, in case the new value will be according to the new device.