Skip to content

Single-instruction (subleq) programming game

License

Notifications You must be signed in to change notification settings

jaredkrinke/sic1

Repository files navigation

SIC-1 Logo

SIC-1 is a free and open source single-instruction (subleq) programming game. Neglect your personal life in pursuit of promotions and vague assurances of job security! Optimize your programs to rise to the top of the leaderboards! SIC Systems thanks you for your hard work! Now please return to your desk.

Play

Contribute

Links

Description

SIC-1 is a programming game where the computer only understands a single instruction.

  • Learn an esoteric assembly language.
  • Implement programs to unlock more impressive job titles.
  • Optimize your programs to climb the leaderboards.
  • Sacrifice your personal life for the good of the company!

It's an assembly language zachlike for everyone! New programmers will appreciate how few unique instructions there are to learn (just one!), and experienced programmers will appreciate how poorly suited this one instruction is for writing straight-forward programs.

If you're ready for a challenge, respond to this job posting from SIC Systems:

SIC Systems is hiring engineers to produce highly efficient programs for our flagship product: the Single Instruction Computer Mark 1 (SIC-1).

The SIC-1 represents a transformational change in computing, reducing complexity to the point that the processor only executes a single instruction: subtract and branch if less than or equal to zero ("subleq").

Enter the brave new world of single-instruction computing and invent new ways of implementing programs that would be trivial on a conventional computer. Don't adjust the technology to match how you think, adjust your thinking to match how the SIC-1 operates!

Screenshots

Gameplay screenshot

User rank screenshot

SIC-1 Assembly Language

Examples and in-depth documentation are available both in-game and here:

SIC-1 Assembly Language

Example

; Read two numbers and output their sum. Repeat.
@loop:
subleq @tmp, @IN
subleq @tmp, @IN
subleq @OUT, @tmp
subleq @tmp, @tmp, @loop

@tmp: .data 0

General information about subleq

Note: these resources are not specific to the SIC-1 and do not use SIC-1 Assembly Language.