├── Axe ├── OWO.8xp ├── OWOSRC.8xp ├── SCREENSHOT.BMP ├── SCREENSHOT.png └── OwO source (readable on PC).txt ├── MSX88 ├── OwO.png ├── OwO.asm ├── OWO.O ├── Readme.md └── OWO.EJE ├── x86 ├── gcc-gas.sh ├── gcc-nasm.sh ├── msvc-masm.bat ├── msvc-nasm.bat ├── gas.s ├── nasm.asm ├── masm.asm └── README.md ├── C ├── CMakeLists.txt ├── OwO.cpp └── OwO.c ├── Rust ├── Cargo.toml └── src │ └── main.rs ├── Ocaml ├── Makefile ├── OwO.ml └── OCamlMakefile ├── CPP ├── CMakeLists.txt └── OwO.cpp ├── Docker └── Dockerfile ├── CSharp ├── OwO.csproj └── Program.cs ├── MIPS ├── README.md └── main.asm ├── FSharp ├── OwO.fsproj └── Program.fs ├── Slashes └── OwO ├── 05AB1E └── OwO.abe ├── Lua └── OwO.lua ├── Nim ├── Nim.nimble └── src │ └── OwO.nim ├── Lisp └── OwO.lisp ├── JavaScript └── OwO.js ├── Wenyan ├── OwO.wy └── OwO.svg ├── TypeScript └── OwO.ts ├── R └── OwO.R ├── BASIC └── OwO.bas ├── Elisp └── OwO.el ├── CoffeeScript └── OwO.coffee ├── Forth └── owo.fs ├── Kotlin └── OwO.kt ├── Crystal └── OwO.cr ├── Red └── OwO.red ├── Ruby └── OwO.rb ├── Tcl └── OwO.tcl ├── Terraform └── OwO.tf ├── Vala └── OwO.vala ├── Elixir └── Elixir.exs ├── Julia └── OwO.jl ├── Swift └── OwO.swift ├── Bash └── OwO.sh ├── Fish └── OwO.fish ├── Powershell └── OwO.ps1 ├── PLI └── OwO.pli ├── Batch └── OwO.bat ├── Emojicode └── OwO.emojic ├── NodeJs └── OwO.js ├── Perl └── OwO.pl ├── Dart └── OwO.dart ├── Zsh └── OwO.zsh ├── Erlang └── owo.erl ├── LOLCODE └── OwO.lol ├── awk └── OwO.awk ├── Boo └── OwO.boo ├── FET └── OwO.fet ├── JScript └── OwO.js ├── LaTeX └── OwO.tex ├── V └── OwO.v ├── FORTRAN └── owo.f95 ├── Scala └── OwO.scala ├── Pascal └── OwO.pas ├── Python └── owo.py ├── Español └── OwO.ext ├── D └── OwO.d ├── PHP └── OwO.php ├── ~English └── OwO.ext ├── Ada └── OwO.adb ├── Go └── OwO.go ├── Haskell └── OwO.hs ├── VisualBasic └── OwO.vb ├── Java └── OwO.java ├── Makefile └── Makefile ├── PostScript └── OwO.ps ├── PercentEncoding └── OwO ├── COBOL └── OwO.cbl ├── UTF-8 └── OwO ├── svg └── OwO.svg ├── Decimal └── OwO ├── VBScript └── OwO.vbs ├── CSS └── OwO.css ├── UTF-16 └── OwO ├── LICENSE ├── HTML └── OwO.html ├── UTF-32 └── OwO ├── Malbolge └── OwO.mal ├── vcalendar └── OwO.ics ├── Whitespaces └── whitespaces.txt ├── ASCII └── ASCII ├── BF └── OwO.bf ├── .gitignore ├── README.md └── Factor └── OwO.fact /Axe/OWO.8xp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Krutonium/OwO/HEAD/Axe/OWO.8xp -------------------------------------------------------------------------------- /Axe/OWOSRC.8xp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Krutonium/OwO/HEAD/Axe/OWOSRC.8xp -------------------------------------------------------------------------------- /MSX88/OwO.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Krutonium/OwO/HEAD/MSX88/OwO.png -------------------------------------------------------------------------------- /x86/gcc-gas.sh: -------------------------------------------------------------------------------- 1 | if [ -z "$CC" ]; then CC=gcc; fi 2 | "$CC" -m32 -o OwO gas.s 3 | -------------------------------------------------------------------------------- /Axe/SCREENSHOT.BMP: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Krutonium/OwO/HEAD/Axe/SCREENSHOT.BMP -------------------------------------------------------------------------------- /Axe/SCREENSHOT.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Krutonium/OwO/HEAD/Axe/SCREENSHOT.png -------------------------------------------------------------------------------- /C/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.1) 2 | project (OwO) 3 | add_executable(OwO OwO.c) 4 | -------------------------------------------------------------------------------- /Rust/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "OwO" 3 | version = "0.1.0" 4 | authors = [""] 5 | 6 | [dependencies] 7 | -------------------------------------------------------------------------------- /x86/gcc-nasm.sh: -------------------------------------------------------------------------------- 1 | if [ -z "$CC" ]; then CC=gcc; fi 2 | nasm -f elf32 -o gas.o nasm.asm 3 | "$CC" -m32 -o OwO gas.o 4 | -------------------------------------------------------------------------------- /Ocaml/Makefile: -------------------------------------------------------------------------------- 1 | RESULT = OwO 2 | SOURCES = OwO.ml 3 | LIBS = 4 | OCAMLMAKEFILE = OCamlMakefile 5 | include $(OCAMLMAKEFILE) 6 | -------------------------------------------------------------------------------- /x86/msvc-masm.bat: -------------------------------------------------------------------------------- 1 | ml /c /Fomasm.obj masm.asm 2 | link /DEFAULTLIB:libucrt.lib /DEFAULTLIB:libcmt.lib /OUT:OwO.exe masm.obj 3 | -------------------------------------------------------------------------------- /CPP/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.1) 2 | set (CMAKE_CXX_STANDARD 11) 3 | project (OwO) 4 | add_executable(OwO OwO.cpp) 5 | -------------------------------------------------------------------------------- /x86/msvc-nasm.bat: -------------------------------------------------------------------------------- 1 | nasm -f win32 -o nasm.obj -DMSVC nasm.asm 2 | link /DEFAULTLIB:libucrt.lib /DEFAULTLIB:libcmt.lib /OUT:OwO.exe nasm.obj 3 | -------------------------------------------------------------------------------- /Docker/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM ubuntu 2 | 3 | RUN apt-get update \ 4 | && apt-get install -y wget 5 | RUN wget -O OwO.sh https://raw.githubusercontent.com/Krutonium/OwO/master/Bash/OwO.sh 6 | RUN chmod +x OwO.sh 7 | CMD /OwO.sh -------------------------------------------------------------------------------- /CSharp/OwO.csproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | netcoreapp2.0 6 | 7 | 8 | 9 | -------------------------------------------------------------------------------- /MIPS/README.md: -------------------------------------------------------------------------------- 1 | This folder contains a MIPS assembly program. To run this program, you need to install a MIPS simulator like [MARS](http://courses.missouristate.edu/kenvollmar/mars/). 2 | 3 | To run the file, open `main.asm` in MARS. Click the assemble button, and then click the run button. 4 | -------------------------------------------------------------------------------- /FSharp/OwO.fsproj: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | Exe 5 | netcoreapp2.1 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | -------------------------------------------------------------------------------- /Slashes/OwO: -------------------------------------------------------------------------------- 1 | *Notices Bulge* 2 | __ ___ _ _ _ _ _ 3 | \ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ 4 | \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __| 5 | \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \ 6 | \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/ 7 | -------------------------------------------------------------------------------- /05AB1E/OwO.abe: -------------------------------------------------------------------------------- 1 | " *Notices Bulge* 2 | __ ___ _ _ _ _ _ 3 | \ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ 4 | \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __| 5 | \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \ 6 | \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/ 7 | -------------------------------------------------------------------------------- /Lua/OwO.lua: -------------------------------------------------------------------------------- 1 | print([[ *Notices Bulge* 2 | __ ___ _ _ _ _ _ 3 | \ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ 4 | \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __| 5 | \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \ 6 | \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/]]) 7 | -------------------------------------------------------------------------------- /Nim/Nim.nimble: -------------------------------------------------------------------------------- 1 | # Package 2 | 3 | version = "0.1.0" 4 | author = "Jay Shah" 5 | description = "OwO" 6 | license = "MIT" 7 | srcDir = "src" 8 | bin = @["OwO"] 9 | 10 | 11 | # Dependencies 12 | 13 | requires "nim >= 0.18.0" 14 | 15 | task run, "Runs the OwO.nim file": 16 | exec "nim c -r src/OwO.nim" 17 | -------------------------------------------------------------------------------- /Lisp/OwO.lisp: -------------------------------------------------------------------------------- 1 | (format t " *Notices Bulge* 2 | __ ___ _ _ _ _ _ 3 | \\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ 4 | \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __| 5 | \\ \V \V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\ 6 | \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/") 7 | -------------------------------------------------------------------------------- /JavaScript/OwO.js: -------------------------------------------------------------------------------- 1 | console.log(` *Notices Bulge* 2 | __ ___ _ _ _ _ _ 3 | \\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ 4 | \\ \\ /\\ / /| '_ \\ / _\\\`| __|// / __| | __| '_ \\| |/ __| 5 | \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\ 6 | \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/`) -------------------------------------------------------------------------------- /Wenyan/OwO.wy: -------------------------------------------------------------------------------- 1 | 吾有一言。曰「「 *Notices Bulge* 2 | __ ___ _ _ _ _ _ 3 | \\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ 4 | \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __| 5 | \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\ 6 | \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/」」 7 | 。書之。 8 | -------------------------------------------------------------------------------- /TypeScript/OwO.ts: -------------------------------------------------------------------------------- 1 | console.log(` *Notices Bulge* 2 | __ ___ _ _ _ _ _ 3 | \\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ 4 | \\ \\ /\\ / /| '_ \\ / _\\\`| __|// / __| | __| '_ \\| |/ __| 5 | \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\ 6 | \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/`) 7 | -------------------------------------------------------------------------------- /R/OwO.R: -------------------------------------------------------------------------------- 1 | #R version 3.3.2 2 | 3 | cat("\t*Notices Bulge*\n") 4 | text = "__ ___ _ _ _ _ _ \n\\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ \n \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __| \n \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\ \n \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/ \n" 5 | cat(text) 6 | -------------------------------------------------------------------------------- /BASIC/OwO.bas: -------------------------------------------------------------------------------- 1 | CLS 2 | PRINT TAB(10);"*Notices Bulge*" 3 | PRINT "__ ___ _ _ _ _ " 4 | PRINT "\ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___" 5 | PRINT " \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __|" 6 | PRINT " \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \" 7 | PRINT " \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/" 8 | SLEEP 9 | -------------------------------------------------------------------------------- /Elisp/OwO.el: -------------------------------------------------------------------------------- 1 | (princ " *Notices Bulge*\n\ 2 | __ ___ _ _ _ _ _ \n\ 3 | \\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ \n\ 4 | \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __|\n\ 5 | \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\\n\ 6 | \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/\n\ 7 | ") 8 | -------------------------------------------------------------------------------- /CoffeeScript/OwO.coffee: -------------------------------------------------------------------------------- 1 | console.log """ 2 | *Notices Bulge* 3 | __ ___ _ _ _ _ _ 4 | \\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ 5 | \\ \\ /\\ / /| '_ \\ / _\\\`| __|// / __| | __| '_ \\| |/ __| 6 | \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\ 7 | \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/ 8 | """ -------------------------------------------------------------------------------- /Forth/owo.fs: -------------------------------------------------------------------------------- 1 | : owo 2 | cr 17 spaces ." *Notices Bulge*" cr 3 | ." __ ___ _ _ _ _ _ " cr 4 | ." \ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ " cr 5 | ." \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __|" cr 6 | ." \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \" cr 7 | ." \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/" cr ; 8 | owo 9 | -------------------------------------------------------------------------------- /Kotlin/OwO.kt: -------------------------------------------------------------------------------- 1 | fun main(args: Array) { 2 | println(""" *Notices Bulge* 3 | __ ___ _ _ _ _ _ 4 | \ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ 5 | \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __| 6 | \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \ 7 | \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/""") 8 | } -------------------------------------------------------------------------------- /Ocaml/OwO.ml: -------------------------------------------------------------------------------- 1 | let () = 2 | print_endline (" 3 | *Notices Bulge*\n 4 | __ ___ _ _ _ _ _ 5 | \\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ 6 | \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __| 7 | \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\ 8 | \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/ 9 | ") -------------------------------------------------------------------------------- /Crystal/OwO.cr: -------------------------------------------------------------------------------- 1 | puts " *Notices Bulge*" 2 | puts "__ ___ _ _ _ _ _ " 3 | puts "\\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ " 4 | puts " \\ \\ /\\ / /| '_ \\ / _\\\`| __|// / __| | __| '_ \\| |/ __|" 5 | puts " \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\" 6 | puts " \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/" 7 | -------------------------------------------------------------------------------- /Red/OwO.red: -------------------------------------------------------------------------------- 1 | Red [Title: "OwO" Author: "Koolen Dasheppi"] 2 | 3 | print { 4 | *Notices Bulge* 5 | __ ___ _ _ _ _ _ 6 | \ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ 7 | \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __| 8 | \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \ 9 | \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/ 10 | } 11 | 12 | -------------------------------------------------------------------------------- /Ruby/OwO.rb: -------------------------------------------------------------------------------- 1 | puts " *Notices Bulge*" 2 | puts "__ ___ _ _ _ _ _ " 3 | puts "\\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ " 4 | puts " \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __|" 5 | puts " \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\ " 6 | puts " \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/" 7 | -------------------------------------------------------------------------------- /Tcl/OwO.tcl: -------------------------------------------------------------------------------- 1 | puts " *Notices Bulge*\n"; 2 | puts "__ ___ _ _ _ _ _ "; 3 | puts "\\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ "; 4 | puts " \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __|"; 5 | puts " \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\"; 6 | puts " \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/"; -------------------------------------------------------------------------------- /Terraform/OwO.tf: -------------------------------------------------------------------------------- 1 | output "OwO" { 2 | value = < 7 | 8 | io:format(" *Notices Bulge*\n__ ___ _ _ _ _ _ \n\\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ \n \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __|\n \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\\n \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/\n",[]). -------------------------------------------------------------------------------- /LOLCODE/OwO.lol: -------------------------------------------------------------------------------- 1 | HAI 1.2 2 | CAN HAS STDIO? 3 | VISIBLE " *Notices Bulge*" 4 | VISIBLE "__ ___ _ _ _ _ _" 5 | VISIBLE "\ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___" 6 | VISIBLE " \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __|" 7 | VISIBLE " \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \" 8 | VISIBLE " \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/" 9 | KTHXBYE -------------------------------------------------------------------------------- /awk/OwO.awk: -------------------------------------------------------------------------------- 1 | BEGIN { 2 | print " *Notices Bulge*"; 3 | print "__ ___ _ _ _ _ _"; 4 | print "\\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ "; 5 | print " \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __|"; 6 | print " \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\"; 7 | print " \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/"; 8 | } 9 | -------------------------------------------------------------------------------- /Boo/OwO.boo: -------------------------------------------------------------------------------- 1 | 2 | print " *Notices Bulge*" 3 | 4 | print "__ ___ _ _ _ _ _ " 5 | 6 | print "\\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ " 7 | 8 | print " \\ \\ /\\ / /| '_ \\ / _\\\`| __|// / __| | __| '_ \\| |/ __|" 9 | 10 | print " \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\" 11 | 12 | print " \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/" -------------------------------------------------------------------------------- /FET/OwO.fet: -------------------------------------------------------------------------------- 1 | make slave scream " *Notices Bulge*" 2 | make slave scream "__ ___ _ _ _ _ _" 3 | make slave scream "\ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___" 4 | make slave scream " \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __|" 5 | make slave scream " \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \" 6 | make slave scream " \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/" 7 | -------------------------------------------------------------------------------- /JScript/OwO.js: -------------------------------------------------------------------------------- 1 | var text; 2 | text = "\t*Notices Bulge*\n"; 3 | text += "__ ___ _ _ _ _ _ \n" 4 | text += "\\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) __ \n" 5 | text += " \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __ \n" 6 | text += " \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\ \n" 7 | text += " \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/ \n" 8 | WScript.Echo(text); 9 | -------------------------------------------------------------------------------- /LaTeX/OwO.tex: -------------------------------------------------------------------------------- 1 | \documentclass{article} 2 | \begin{document} 3 | \begin{verbatim} 4 | *Notices Bulge* 5 | __ ___ _ _ _ _ _ 6 | \ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ 7 | \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __| 8 | \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \ 9 | \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/ 10 | \end{verbatim} 11 | \end{document} 12 | -------------------------------------------------------------------------------- /V/OwO.v: -------------------------------------------------------------------------------- 1 | fn main() { 2 | println(' *Notices Bulge*') 3 | println('__ ___ _ _ _ _ _ ') 4 | println('\\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ ') 5 | println(' \\ \\ /\\ / /| \'_ \\ / _\\`| __|// / __| | __| \'_ \\| |/ __|') 6 | println(' \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\') 7 | println(' \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/') 8 | } 9 | -------------------------------------------------------------------------------- /FORTRAN/owo.f95: -------------------------------------------------------------------------------- 1 | program owo 2 | print *,"*Notices Bulge*" 3 | print *,"__ ___ _ _ _ _ _" 4 | print *,"\ \ / / ^|__ __ _^| ^|_ ( ) ___ ^| ^|_^| ^|__ (_) ___" 5 | print *," \ \ /\ / /^| '_ \ / _\`^| __^|// / __^| ^| __^| '_ \^| ^|/ __^|" 6 | print *," \ V V / ^| ^| ^| ^| (_^| ^| ^|_ \__ \ ^| ^|_^| ^| ^| ^| ^|\__ \" 7 | print *," \_/\_/ ^|_^| ^|_^|\__,_^|\__^| ^|___/ \___^|_^| ^|_^|_^|/___/" 8 | end program owo 9 | -------------------------------------------------------------------------------- /Scala/OwO.scala: -------------------------------------------------------------------------------- 1 | object OwO { 2 | def main(args: Array[String]): Unit = { 3 | println(""" 4 | *Notices Bulge* 5 | __ ___ _ _ _ _ _ 6 | \ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ 7 | \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __| 8 | \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \ 9 | \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/ 10 | """) 11 | } 12 | } -------------------------------------------------------------------------------- /Pascal/OwO.pas: -------------------------------------------------------------------------------- 1 | program Owo; 2 | begin 3 | writeln (' *Notices Bulge*'); 4 | writeln ('__ ___ _ _ _ _ _ '); 5 | writeln ('\ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ '); 6 | writeln (' \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __| '); 7 | writeln (' \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \ '); 8 | writeln (' \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/ '); 9 | end 10 | -------------------------------------------------------------------------------- /Python/owo.py: -------------------------------------------------------------------------------- 1 | # this is an if-else comparator 2 | # Code Updated By Pndaboi 3 | 4 | if __name__ == "__main__": 5 | print(" *Notices Bulge*") 6 | print("""__ ___ _ _ _ _ _ 7 | \ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ 8 | \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __| 9 | \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \\ 10 | \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/""") 11 | -------------------------------------------------------------------------------- /C/OwO.cpp: -------------------------------------------------------------------------------- 1 | #include 2 | using std::cout; 3 | int main() { 4 | cout<<" *Notices Bulge*\n\ 5 | __ ___ _ _ _ _ _ \n\ 6 | \\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ \n\ 7 | \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __|\n\ 8 | \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\\n\ 9 | \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/\n\ 10 | "; 11 | return 0; 12 | } 13 | -------------------------------------------------------------------------------- /C/OwO.c: -------------------------------------------------------------------------------- 1 | #include 2 | 3 | int main(int argc, char *argv[]) { 4 | printf(" *Notices Bulge*\n\ 5 | __ ___ _ _ _ _ _ \n\ 6 | \\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ \n\ 7 | \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __|\n\ 8 | \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\\n\ 9 | \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/\n\ 10 | "); 11 | return 0; 12 | } 13 | -------------------------------------------------------------------------------- /Español/OwO.ext: -------------------------------------------------------------------------------- 1 | Imprimir " *Notices Bulge*" salto de linea. 2 | Imprimir "__ ___ _ _ _ _ _" salto de linea. 3 | Imprimir "\ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___" salto de linea. 4 | Imprimir " \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __|" salto de linea. 5 | Imprimir " \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \" salto de linea. 6 | Imprimir " \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/" salto de linea. 7 | Fin de programa. -------------------------------------------------------------------------------- /D/OwO.d: -------------------------------------------------------------------------------- 1 | import std.stdio; 2 | 3 | void main() 4 | { 5 | writeln(" *Notices Bulge*"); 6 | writeln("__ ___ _ _ _ _ _ "); 7 | writeln("\\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ "); 8 | writeln(" \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __|"); 9 | writeln(" \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\"); 10 | writeln(" \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/"); 11 | } -------------------------------------------------------------------------------- /PHP/OwO.php: -------------------------------------------------------------------------------- 1 | 13 | -------------------------------------------------------------------------------- /~English/OwO.ext: -------------------------------------------------------------------------------- 1 | Display " *Notices Bulge*" and a newline. 2 | Display "__ ___ _ _ _ _ _ " and a newline. 3 | Display "\ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ " and a newline. 4 | Display " \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __|" and a newline. 5 | Display " \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \" and a newline. 6 | Display " \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/" and a newline. 7 | Stop the program. 8 | -------------------------------------------------------------------------------- /Ada/OwO.adb: -------------------------------------------------------------------------------- 1 | with Ada.Text_IO; use Ada.Text_IO; 2 | procedure owo is 3 | begin 4 | Put_Line (" *Notices Bulge*"); 5 | Put_Line ("__ ___ _ _ _ _ _"); 6 | Put_Line ("\ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___"); 7 | Put_Line (" \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __|"); 8 | Put_Line (" \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \"); 9 | Put_Line (" \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/"); 10 | end owo; 11 | -------------------------------------------------------------------------------- /FSharp/Program.fs: -------------------------------------------------------------------------------- 1 | module OwO 2 | 3 | [] 4 | let main argv = 5 | printfn " *Notices Bulge*" 6 | printfn "__ ___ _ _ _ _ _ " 7 | printfn "\\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ " 8 | printfn " \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __|" 9 | printfn " \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\" 10 | printfn " \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/" 11 | 0 12 | -------------------------------------------------------------------------------- /CPP/OwO.cpp: -------------------------------------------------------------------------------- 1 | // You print an elegantly typed "What's this" on the screen. 2 | 3 | #include 4 | 5 | int main(int argc, char *argv[]) { 6 | std::cout << R"( *Notices Bulge* 7 | __ ___ _ _ _ _ _ 8 | \ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ 9 | \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __| 10 | \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \ 11 | \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/ 12 | )"; 13 | return 0; 14 | } 15 | -------------------------------------------------------------------------------- /Go/OwO.go: -------------------------------------------------------------------------------- 1 | package main 2 | 3 | import ( 4 | "fmt" 5 | ) 6 | 7 | func main() { 8 | fmt.Println(" *Notices Bulge*") 9 | fmt.Println("__ ___ _ _ _ _ _ ") 10 | fmt.Println("\\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ ") 11 | fmt.Println(" \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __|") 12 | fmt.Println(" \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\") 13 | fmt.Println(" \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/") 14 | } 15 | -------------------------------------------------------------------------------- /Haskell/OwO.hs: -------------------------------------------------------------------------------- 1 | {-# OPTIONS_GHC -Wall -Werror #-} 2 | module Main where 3 | 4 | main :: IO () 5 | main = do 6 | putStrLn " *Notices Bulge*" 7 | putStrLn "__ ___ _ _ _ _ _ " 8 | putStrLn "\\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ " 9 | putStrLn " \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __|" 10 | putStrLn " \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\" 11 | putStrLn " \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/" 12 | -------------------------------------------------------------------------------- /VisualBasic/OwO.vb: -------------------------------------------------------------------------------- 1 | Module UwU 2 | Sub Main() 3 | Console.WriteLine(" *Notices Bulge*") 4 | Console.WriteLine("__ ___ _ _ _ _ _ ") 5 | Console.WriteLine("\ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ ") 6 | Console.WriteLine(" \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __|") 7 | Console.WriteLine(" \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \") 8 | Console.WriteLine(" \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/") 9 | End Sub 10 | End Module 11 | -------------------------------------------------------------------------------- /x86/gas.s: -------------------------------------------------------------------------------- 1 | .att_syntax 2 | .globl main 3 | .extern puts 4 | 5 | .text 6 | main: pushl $message 7 | calll puts 8 | popl %eax 9 | xorl %eax, %eax 10 | ret 11 | 12 | .data 13 | message: .ascii " *Notices Bulge*\n" 14 | .ascii "__ ___ _ _ _ _ _\n" 15 | .ascii "\\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___\n" 16 | .ascii " \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __|\n" 17 | .ascii " \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\\n" 18 | .ascii " \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/\0" 19 | -------------------------------------------------------------------------------- /Java/OwO.java: -------------------------------------------------------------------------------- 1 | public class OwO 2 | { 3 | public static void main(String[] args) 4 | { 5 | System.out.println(" *Notices Bulge*"); 6 | System.out.println("__ ___ _ _ _ _ _ "); 7 | System.out.println("\\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ "); 8 | System.out.println(" \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __|"); 9 | System.out.println(" \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\"); 10 | System.out.println(" \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/"); 11 | } 12 | } 13 | -------------------------------------------------------------------------------- /MSX88/OwO.asm: -------------------------------------------------------------------------------- 1 | ORG 1000H 2 | MSG DB "OwO " 3 | DB " *Notices Bulge* " 4 | DB "__ ___ _ _ _ _ _ " 5 | DB "\ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ " 6 | DB " \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __|" 7 | DB " \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \" 8 | DB " \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/" 9 | MSG_END DB ? 10 | 11 | ORG 2000H 12 | 13 | MOV AL,55 14 | MOV BX,OFFSET MSG 15 | 16 | LOOP:INT 7 17 | ADD BX,55 18 | CMP BX,OFFSET MSG_END 19 | JNZ LOOP 20 | INT 0 21 | END 22 | -------------------------------------------------------------------------------- /Makefile/Makefile: -------------------------------------------------------------------------------- 1 | SHELL := /bin/bash 2 | 3 | .PHONY: default help 4 | 5 | default: build; 6 | 7 | build: ## 8 | -$(info *Notices Bulge* ) 9 | -$(info __ ___ _ _ _ _ _ ) 10 | -$(info \ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ ) 11 | -$(info \ \ /\ / /| "_ \ / _\"| __|// / __| | __| "_ \| |/ __| ) 12 | -$(info \ V V / | | | | |_| | |_ \__ \ | |_| | | | |\__ \ ) 13 | -$(info \_/\_/ |_| |_|\__._|\__| |___/ \___|_| |_|_|/___/ ) 14 | 15 | help: ## View help information. 16 | @grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf "\033[36m%-30s\033[0m %s\n", $$1, $$2}' 17 | -------------------------------------------------------------------------------- /PostScript/OwO.ps: -------------------------------------------------------------------------------- 1 | %!PS 2 | 3 | % parameters for text location and size 4 | /tm 500 def /lm 100 def /pt 12 def /pd 2 def 5 | 6 | /newline { tm pt pd add sub /tm exch def lm tm moveto } def 7 | /Courier findfont pt scalefont setfont 8 | lm tm moveto 9 | ( *Notices Bulge*) show newline 10 | (__ ___ _ _ _ _ _) show newline 11 | (\\ \\ / / |__ __ _| |_ \( \) ___ | |_| |__ \(_\) ___) show newline 12 | ( \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __|) show newline 13 | ( \\ V V / | | | | \(_| | |_ \\__ \\ | |_| | | | |\\__ \\) show newline 14 | ( \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/) show newline 15 | 16 | showpage 17 | -------------------------------------------------------------------------------- /x86/nasm.asm: -------------------------------------------------------------------------------- 1 | %ifdef MSVC 2 | ; MSVC puts underscores before its symbols in C 3 | %define main _main 4 | %define puts _puts 5 | %endif 6 | 7 | global main 8 | extern puts 9 | 10 | section .text 11 | main: push message 12 | call puts 13 | pop eax 14 | xor eax, eax 15 | retn 16 | 17 | section .data 18 | message: db " *Notices Bulge*", 10 19 | db "__ ___ _ _ _ _ _", 10 20 | db "\ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___", 10 21 | db " \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __|", 10 22 | db " \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \", 10 23 | db " \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/", 0 24 | -------------------------------------------------------------------------------- /CSharp/Program.cs: -------------------------------------------------------------------------------- 1 | using System; 2 | 3 | namespace OwO 4 | { 5 | class Program 6 | { 7 | static void Main(string[] args) 8 | { 9 | Console.WriteLine(" *Notices Bulge*"); 10 | Console.WriteLine(@"__ ___ _ _ _ _ _ "); 11 | Console.WriteLine(@"\ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ "); 12 | Console.WriteLine(@" \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __|"); 13 | Console.WriteLine(@" \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \"); 14 | Console.WriteLine(@" \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/"); 15 | } 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /PercentEncoding/OwO: -------------------------------------------------------------------------------- 1 | %20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%2aNotices%20Bulge%2a%0a__%20%20%20%20%20%20%20%20___%20%20%20%20%20%20%20%20%20%20%20_%20%20%20%20_%20%20%20%20%20%20%20%20_%20%20%20_%20%20%20%20%20_%0a%5c%20%5c%20%20%20%20%20%20%2f%20%2f%20%7c__%20%20%20__%20_%7c%20%7c_%20%28%20%29%20___%20%20%7c%20%7c_%7c%20%7c__%20%28_%29%20___%0a%20%5c%20%5c%20%2f%5c%20%2f%20%2f%7c%20%27_%20%5c%20%2f%20_%5c%60%7c%20__%7c%2f%2f%20%2f%20__%7c%20%7c%20__%7c%20%27_%20%5c%7c%20%7c%2f%20__%7c%0a%20%20%5c%20V%20%20V%20%2f%20%7c%20%7c%20%7c%20%7c%20%28_%7c%20%7c%20%7c_%20%20%20%20%5c__%20%5c%20%7c%20%7c_%7c%20%7c%20%7c%20%7c%20%7c%5c__%20%5c%0a%20%20%20%5c_%2f%5c_%2f%20%20%7c_%7c%20%7c_%7c%5c__%2c_%7c%5c__%7c%20%20%20%7c___%2f%20%5c___%7c_%7c%20%7c_%7c_%7c%2f___%2f -------------------------------------------------------------------------------- /COBOL/OwO.cbl: -------------------------------------------------------------------------------- 1 | IDENTIFICATION DIVISION. 2 | PROGRAM-ID. OWO. 3 | ENVIRONMENT DIVISION. 4 | DATA DIVISION. 5 | WORKING-STORAGE SECTION. 6 | PROCEDURE DIVISION. 7 | DISPLAY " *Notices Bulge*" 8 | DISPLAY 9 | "__ ___ _ _ _ _ _ " 10 | DISPLAY 11 | "\ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ " 12 | DISPLAY 13 | " \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __|" 14 | DISPLAY 15 | " \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \" 16 | DISPLAY 17 | " \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/" 18 | GOBACK. 19 | -------------------------------------------------------------------------------- /x86/masm.asm: -------------------------------------------------------------------------------- 1 | .386P 2 | .model flat 3 | public _main 4 | extern _puts:near 5 | 6 | .code 7 | _main: push offset message 8 | call _puts 9 | pop eax 10 | xor eax, eax 11 | retn 12 | 13 | .data 14 | message byte ' *Notices Bulge*', 10 15 | byte '__ ___ _ _ _ _ _', 10 16 | byte 92, ' ', 92, ' / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___', 10 17 | byte ' ', 92, ' ', 92, ' /', 92, ' / /| ', 39, '_ ', 92, ' / _', 92, 96, '| __|// / __| | __| `_ ', 92, '| |/ __|', 10 18 | byte ' ', 92, ' V V / | | | | (_| | |_ ', 92, '__ ', 92, ' | |_| | | | |', 92, '__ ', 92, 10 19 | byte ' ', 92, '_/', 92, '_/ |_| |_|', 92, '__,_|', 92, '__| |___/ ', 92, '___|_| |_|_|/___/', 0 20 | 21 | end 22 | -------------------------------------------------------------------------------- /UTF-8/OwO: -------------------------------------------------------------------------------- 1 | \x2a\x4e\x6f\x74\x69\x63\x65\x73 \x42\x75\x6c\x67\x65\x2a 2 | \x5f\x5f \x5f\x5f\x5f \x5f \x5f \x5f \x5f \x5f 3 | \x5c \x5c \x2f \x2f \x7c\x5f\x5f \x5f\x5f \x5f\x7c \x7c\x5f \x28 \x29 \x5f\x5f\x5f \x7c \x7c\x5f\x7c \x7c\x5f\x5f \x28\x5f\x29 \x5f\x5f\x5f 4 | \x5c \x5c \x2f\x5c \x2f \x2f\x7c \x27\x5f \x5c \x2f \x5f\x5c\x60\x7c \x5f\x5f\x7c\x2f\x2f \x2f \x5f\x5f\x7c \x7c \x5f\x5f\x7c \x27\x5f \x5c\x7c \x7c\x2f \x5f\x5f\x7c 5 | \x5c \x56 \x56 \x2f \x7c \x7c \x7c \x7c \x28\x5f\x7c \x7c \x7c\x5f \x5c\x5f\x5f \x5c \x7c \x7c\x5f\x7c \x7c \x7c \x7c \x7c\x5c\x5f\x5f \x5c 6 | \x5c\x5f\x2f\x5c\x5f\x2f \x7c\x5f\x7c \x7c\x5f\x7c\x5c\x5f\x5f\x2c\x5f\x7c\x5c\x5f\x5f\x7c \x7c\x5f\x5f\x5f\x2f \x5c\x5f\x5f\x5f\x7c\x5f\x7c \x7c\x5f\x7c\x5f\x7c\x2f\x5f\x5f\x5f\x2f -------------------------------------------------------------------------------- /svg/OwO.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | *Notices Bulge* 9 | 10 | 11 | __ ___ _ _ _ _ _ 12 | \ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ 13 | \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __| 14 | \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \ 15 | \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/ 16 | 17 | -------------------------------------------------------------------------------- /MIPS/main.asm: -------------------------------------------------------------------------------- 1 | .data 2 | a: .asciiz " *Notices Bulge*\n" 3 | b: .asciiz "__ ___ _ _ _ _ _\n" 4 | c: .asciiz "\\ \\ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___\n" 5 | d: .asciiz " \\ \\ /\\ / /| '_ \\ / _\\`| __|// / __| | __| '_ \\| |/ __|\n" 6 | e: .asciiz " \\ V V / | | | | (_| | |_ \\__ \\ | |_| | | | |\\__ \\\n" 7 | f: .asciiz " \\_/\\_/ |_| |_|\\__,_|\\__| |___/ \\___|_| |_|_|/___/\0" 8 | .text 9 | .globl main 10 | main: 11 | li $v0, 4 12 | la $a0, a 13 | syscall 14 | 15 | li $v0, 4 16 | la $a0, b 17 | syscall 18 | 19 | li $v0, 4 20 | la $a0, c 21 | syscall 22 | 23 | li $v0, 4 24 | la $a0, d 25 | syscall 26 | 27 | li $v0, 4 28 | la $a0, e 29 | syscall 30 | 31 | li $v0, 4 32 | la $a0, f 33 | syscall 34 | 35 | li $v0, 10 36 | syscall 37 | -------------------------------------------------------------------------------- /Decimal/OwO: -------------------------------------------------------------------------------- 1 | 0004200078001110011600105000990010100115 000660011700108001030010100042 2 | 0009500095 000950009500095 00095 00095 00095 00095 00095 3 | 00092 00092 00047 00047 001240009500095 0009500095 0009500124 0012400095 00040 00041 000950009500095 00124 001240009500124 001240009500095 000400009500041 000950009500095 4 | 00092 00092 0004700092 00047 0004700124 0003900095 00092 00047 00095000920009600124 0009500095001240004700047 00047 000950009500124 00124 000950009500124 0003900095 0009200124 0012400047 000950009500124 5 | 00092 00086 00086 00047 00124 00124 00124 00124 000400009500124 00124 0012400095 000920009500095 00092 00124 001240009500124 00124 00124 00124 00124000920009500095 00092 6 | 000920009500047000920009500047 001240009500124 00124000950012400092000950009500044000950012400092000950009500124 0012400095000950009500047 00092000950009500095001240009500124 00124000950012400095001240004700095000950009500047 -------------------------------------------------------------------------------- /Axe/OwO source (readable on PC).txt: -------------------------------------------------------------------------------- 1 | .OWO ...I might be furry trash. 2 | 0→O 3 | DiagnosticOff 4 | 5 | .start coords 6 | 14→H 7 | 30→V 8 | 9 | .tile data 10 | S([E3A2A29455554949] 11 | S([8F8B8B5355542425] 12 | S([00000000E314C92A] 13 | S([1C141414B7505794] 14 | S([30484850BEC1DE41] 15 | 16 | 100→O 17 | 18 | S([2A2A221C00000000] 19 | S([ADAD8D7700000000] 20 | S([2A292C3B00000000] 21 | S([941358B700000000] 22 | S([3DBDC1BE00000000] 23 | 24 | 40→O 25 | 26 | S([E3A2A2A2BE82BEA2] 27 | S([848A8480E51A4AAA] 28 | S([00000000F008F008] 29 | 30 | 140→O 31 | S([A29E423F00000000] 32 | S([ABABAABF00000000] 33 | S([E8E808F000000000] 34 | 35 | 36 | 37 | .draw everything 38 | Fix 0 39 | Fix 5 40 | ClrHome 41 | ClrDraw 42 | Text(19,8,"*Notices Bulge*") 43 | 44 | 45 | For(X,0,7) 46 | Pt-On(8*X+1+(3*(X≥5))+H,V,L₁+(X*8)) 47 | Pt-On(8*X+1+(3*(X≥5))+H,V+8,L₁+(X*8)+100) 48 | End 49 | DispGraph 50 | Pause 5000 51 | 52 | Fix 4 53 | Return 54 | 55 | Lbl S 56 | expr(r₁,L₁+O,8) 57 | O+8→O 58 | Return 59 | -------------------------------------------------------------------------------- /MSX88/OWO.O: -------------------------------------------------------------------------------- 1 | 100077234F774F2020202020202020202020202020202020202020202020202020202020202020 2 | 102320232020202020202020202020202020202020202020202020202020202020202020202020 3 | 1046302320202A4E6F74696365732042756C67652A202020202020202020202020202020202020 4 | 10695F2320202020205F5F20202020202020205F5F5F20202020202020202020205F202020205F 5 | 108C502320202020202020205F2020205F20202020205F2020202020205C205C2020202020202F 6 | 10AF0D23202F207C5F5F2020205F5F205F7C207C5F20282029205F5F5F20207C207C5F7C207C5F 7 | 10D265235F20285F29205F5F5F20205C205C202F5C202F202F7C20275F205C202F205F5C607C20 8 | 10F572235F5F7C2F2F202F205F5F7C207C205F5F7C20275F205C7C207C2F205F5F7C20205C2056 9 | 11180D23202056202F207C207C207C207C20285F7C207C207C5F202020205C5F5F205C207C207C 10 | 113B00235F7C207C207C207C207C5C5F5F205C2020205C5F2F5C5F2F20207C5F7C207C5F7C5C5F 11 | 115E23235F2C5F7C5C5F5F7C2020207C5F5F5F2F205C5F5F5F7C5F7C207C5F7C5F7C2F5F5F5F2F 12 | 1181200120 13 | 20003513B037BB0010CD0781C3370081FB811175F4CD00 14 | -------------------------------------------------------------------------------- /VBScript/OwO.vbs: -------------------------------------------------------------------------------- 1 | Sub forceCScriptExecution 2 | Dim Arg, Str 3 | If Not LCase( Right( WScript.FullName, 12 ) ) = "\cscript.exe" Then 4 | For Each Arg In WScript.Arguments 5 | If InStr( Arg, " " ) Then Arg = """" & Arg & """" 6 | Str = Str & " " & Arg 7 | Next 8 | CreateObject( "WScript.Shell" ).Run _ 9 | "cscript //nologo """ & _ 10 | WScript.ScriptFullName & _ 11 | """ " & Str 12 | WScript.Quit 13 | End If 14 | End Sub 15 | forceCScriptExecution 16 | 17 | WScript.Echo vbTab & "*Notices Bulge*" 18 | text = ("__ ___ _ _ _ _ _" & vbCrLf & _ 19 | "\ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___" & vbCrLf & _ 20 | " \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __|" & vbCrLf & _ 21 | " \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \" & vbCrLf & _ 22 | " \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/") 23 | 24 | WScript.Echo text 25 | -------------------------------------------------------------------------------- /MSX88/Readme.md: -------------------------------------------------------------------------------- 1 | # Read me 2 | 3 | MSX88.exe is a simulator used for education to "teach assembly". 4 | [Illustration of program](OwO.png) 5 | 6 | To run it, enter "l OWO.EJE" to load it, and then enter "G" to start it. 7 | If you enter "+r" before running it, it will run as fast as it can. 8 | 9 | 10 | # Permission to distribute MSX88.exe 11 | 12 | "MSX88 ofrece una distribución gratuita, para estudiantes e instituciones sin ánimo de lucro, vía internet y también se da servicio de mantenimiento y consulta 'on line', igualmente por internet." 13 | 14 | Translation: 15 | 16 | "MSX88 is to be freely distributed, for non-profit students and institutions, via the internet, and maintenance and enquiries are answered 'on line', equally via the internet." 17 | 18 | From "BREVE MANUAL DE MSX88" by Rubén de Diego Martínez (Short manual for MSX88) 19 | Belongs to "UNIVERSIDAD POLITÉCNICA DE MADRID, E.U.I.T. TELECOMUNICACIÓN, DEPARTAMENTO DE INGENIERÍA Y ARQUITECTURAS TELEMÁTICAS" 20 | -------------------------------------------------------------------------------- /MSX88/OWO.EJE: -------------------------------------------------------------------------------- 1 | Fichero Ejecutable!! 2 | 3 | 100023774F774F2020202020202020202020202020202020202020202020202020202020202020 4 | 102323202020202020202020202020202020202020202020202020202020202020202020202020 5 | 1046233020202A4E6F74696365732042756C67652A202020202020202020202020202020202020 6 | 1069235F20202020205F5F20202020202020205F5F5F20202020202020202020205F202020205F 7 | 108C235020202020202020205F2020205F20202020205F2020202020205C205C2020202020202F 8 | 10AF230D202F207C5F5F2020205F5F205F7C207C5F20282029205F5F5F20207C207C5F7C207C5F 9 | 10D223655F20285F29205F5F5F20205C205C202F5C202F202F7C20275F205C202F205F5C607C20 10 | 10F523725F5F7C2F2F202F205F5F7C207C205F5F7C20275F205C7C207C2F205F5F7C20205C2056 11 | 1118230D202056202F207C207C207C207C20285F7C207C207C5F202020205C5F5F205C207C207C 12 | 113B23005F7C207C207C207C207C5C5F5F205C2020205C5F2F5C5F2F20207C5F7C207C5F7C5C5F 13 | 115E23235F2C5F7C5C5F5F7C2020207C5F5F5F2F205C5F5F5F7C5F7C207C5F7C5F7C2F5F5F5F2F 14 | 1181012020 15 | 20001335B037BB0010CD0781C3370081FB811175F4CD00 16 | -------------------------------------------------------------------------------- /CSS/OwO.css: -------------------------------------------------------------------------------- 1 | /* Add `
` in html file */ 2 | 3 | .OwO { 4 | width: 0px; 5 | } 6 | 7 | .OwO:before { 8 | content:"\00a0\00a0__\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0___\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0_\00a0\00a0\00a0\00a0_\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0_\00a0\00a0\00a0_\00a0\00a0\00a0\00a0\00a0\00a0_\00a0\ \00a0\00a0\00a0\\\00a0\\\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0\00a0/\00a0/\00a0\00a0\00a0|__\00a0\00a0\00a0__\00a0_|\00a0|_\00a0(\00a0)___\00a0|\00a0|_|\00a0|__\00a0(_)\00a0___ \00a0\00a0\00a0\00a0\00a0\\\00a0\\\00a0\00a0/\\\00a0\00a0\00a0/\00a0/|\00a0\00a0'_\00a0\00a0\\\00a0/\00a0_\\\`|\00a0__|//\00a0/\00a0__|\00a0|\00a0__|\00a0\00a0'_\00a0\\|\00a0|/\00a0\00a0\00a0__| \00a0\00a0\00a0\00a0\00a0\00a0\\\00a0V\00a0V\00a0/\00a0\00a0|\00a0\00a0|\00a0\00a0|\00a0\00a0|\00a0(_|\00a0\00a0|\00a0|_\00a0\00a0\00a0\00a0\\__\00a0\\\00a0|\00a0\00a0\00a0|_|\00a0\00a0|\00a0\00a0|\00a0\00a0\00a0|\00a0|\\__\00a0\\ \00a0\00a0\00a0\00a0\00a0\00a0\00a0\\_/\\_/\00a0\00a0|_|\00a0|_|\\__,_|\\__|\00a0\00a0\00a0|___/\00a0\\___|_|\00a0|_|_|/___/" 9 | } 10 | -------------------------------------------------------------------------------- /UTF-16/OwO: -------------------------------------------------------------------------------- 1 | \u002a\u004e\u006f\u0074\u0069\u0063\u0065\u0073 \u0042\u0075\u006c\u0067\u0065\u002a 2 | \u005f\u005f \u005f\u005f\u005f \u005f \u005f \u005f \u005f \u005f 3 | \u005c \u005c \u002f \u002f \u007c\u005f\u005f \u005f\u005f \u005f\u007c \u007c\u005f \u0028 \u0029 \u005f\u005f\u005f \u007c \u007c\u005f\u007c \u007c\u005f\u005f \u0028\u005f\u0029 \u005f\u005f\u005f 4 | \u005c \u005c \u002f\u005c \u002f \u002f\u007c \u0027\u005f \u005c \u002f \u005f\u005c\u0060\u007c \u005f\u005f\u007c\u002f\u002f \u002f \u005f\u005f\u007c \u007c \u005f\u005f\u007c \u0027\u005f \u005c\u007c \u007c\u002f \u005f\u005f\u007c 5 | \u005c \u0056 \u0056 \u002f \u007c \u007c \u007c \u007c \u0028\u005f\u007c \u007c \u007c\u005f \u005c\u005f\u005f \u005c \u007c \u007c\u005f\u007c \u007c \u007c \u007c \u007c\u005c\u005f\u005f \u005c 6 | \u005c\u005f\u002f\u005c\u005f\u002f \u007c\u005f\u007c \u007c\u005f\u007c\u005c\u005f\u005f\u002c\u005f\u007c\u005c\u005f\u005f\u007c \u007c\u005f\u005f\u005f\u002f \u005c\u005f\u005f\u005f\u007c\u005f\u007c \u007c\u005f\u007c\u005f\u007c\u002f\u005f\u005f\u005f\u002f -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Krutonium 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /HTML/OwO.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 8 | 9 | 10 |

11 | *Notices Bulge* 12 |

13 |

14 | __        ___           _    _        _   _     _      
15 | \ \      / / |__   __ _| |_ ( ) ___  | |_| |__ (_) ___ 
16 |  \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __|
17 |   \ V  V / | | | | (_| | |_    \__ \ | |_| | | | |\__ \
18 |    \_/\_/  |_| |_|\__,_|\__|   |___/ \___|_| |_|_|/___/
19 |

20 | 21 | 22 | -------------------------------------------------------------------------------- /UTF-32/OwO: -------------------------------------------------------------------------------- 1 | 0000002a0000004e0000006f0000007400000069000000630000006500000073 00000042000000750000006c00000067000000650000002a 2 | 0000005f0000005f 0000005f0000005f0000005f 0000005f 0000005f 0000005f 0000005f 0000005f 3 | 0000005c 0000005c 0000002f 0000002f 0000007c0000005f0000005f 0000005f0000005f 0000005f0000007c 0000007c0000005f 00000028 00000029 0000005f0000005f0000005f 0000007c 0000007c0000005f0000007c 0000007c0000005f0000005f 000000280000005f00000029 0000005f0000005f0000005f 4 | 0000005c 0000005c 0000002f0000005c 0000002f 0000002f0000007c 000000270000005f 0000005c 0000002f 0000005f0000005c000000600000007c 0000005f0000005f0000007c0000002f0000002f 0000002f 0000005f0000005f0000007c 0000007c 0000005f0000005f0000007c 000000270000005f 0000005c0000007c 0000007c0000002f 0000005f0000005f0000007c 5 | 0000005c 00000056 00000056 0000002f 0000007c 0000007c 0000007c 0000007c 000000280000005f0000007c 0000007c 0000007c0000005f 0000005c0000005f0000005f 0000005c 0000007c 0000007c0000005f0000007c 0000007c 0000007c 0000007c 0000007c0000005c0000005f0000005f 0000005c 6 | 0000005c0000005f0000002f0000005c0000005f0000002f 0000007c0000005f0000007c 0000007c0000005f0000007c0000005c0000005f0000005f0000002c0000005f0000007c0000005c0000005f0000005f0000007c 0000007c0000005f0000005f0000005f0000002f 0000005c0000005f0000005f0000005f0000007c0000005f0000007c 0000007c0000005f0000007c0000005f0000007c0000002f0000005f0000005f0000005f0000002f -------------------------------------------------------------------------------- /x86/README.md: -------------------------------------------------------------------------------- 1 | This folder contains 3 versions of the same x86 assembly, each formatted for a different assembler. Included are files supporting [MASM](https://en.wikipedia.org/wiki/Microsoft_Macro_Assembler), [GAS](https://en.wikipedia.org/wiki/GNU_Assembler), and [NASM](https://en.wikipedia.org/wiki/Netwide_Assembler). 2 | 3 | This version opts to use the `puts` function from C to output to the console. It is possible to use a `syscall` on Linux to print to the console from x86, but that method isn't portable, and modern Windows doesn't have an equivalent solution (a `syscall`-like system is available in DOS mode, though). Because of this, a C toolchain is required to build these files. I have included script files for using MSVC on Windows, and GCC or Clang on other systems. 4 | 5 | **Windows**: You need to install [Visual Studio](https://visualstudio.microsoft.com/) (preferably the latest version). If you want to use the NASM assembly file, you need to also install [NASM](https://www.nasm.us/). To build, open the Developer Command Prompt, navigate to the folder with with the assembly files, and run either `msvc-masm.bat` or `msvc-nasm.bat`. After building, you can run it with `OwO`. 6 | 7 | **\*NIX**: (including Linux) You need to install either GCC or Clang. If you want to use the NASM assembly file, you need to also install [NASM](https://www.nasm.us/). To build, navigate in the terminal to the directory with the assembly files, and run either `./gcc-gas.sh` or `./gcc-nasm.sh`. If you are using Clang, then run `CC=clang ./gcc-gas.sh` or `CC=clang ./gcc-nasm.sh`. After building, you can run it with `./OwO`. 8 | -------------------------------------------------------------------------------- /Malbolge/OwO.mal: -------------------------------------------------------------------------------- 1 | D'`$@^K7~;G9yUTSAuQ+q`.nm+*6FiE%|#S.>``{)y[wpun43210/.-,+*)('&%$\aZ_X]\Uy<;WVOsM5KJONGkEJCBGFE>bB$@98=<;4X87w5.-210/(L,+$j(!Efe#zyx>_{tyr8vuWVrqpih.fNjc)a`_^$ba`_A@VzZYX:PtTSL4PIHlLKD,BG@dD==6ZY9216543,P0/onK+kj(!Ef${z@a}v{zyr8vutsrkSi/.-kdiba'eGc\[!_^W?[Tx;WPUTMqKJOHGLKDhHA@EDCB;_?>~6;:3W7wv43210)Mnm+*)"'~D$d"!x}|{t:[qpotsrk1ongf,jcba`ed]#a`_^W{>=YRQu8TSLKPImM/KJIBAeED=%A@?>=6Z:9216543,Pqp.',%Ij"'&}C#cy~wvb%;:^>=6|:32Vwv.-210)ML&+$)(!~D|{z@x`|uzsxwp6Wmlqpohg-Ndchgf_%$baCBX]V[TxRv9UNMqQ32HGLKDhHA@EDCB;_9!=6Z:zy105432+O)o'&Jk)(!~%|B"baw|{zsr8vXnsrkjoh.fejib('e^F\aZY}W?[ZSRv9ONSRQJImlLKDIHGFED=<`#"8=<;:3W765.t21*Non&%IH(hg%${Ab~w|u;yxZputm3qponmfN+LKg`edcb[Z~^W{UZSXWPtTMRQJImMFEJCgG@E>CB;_?>7[;{32Vw/.3,10)M-,+kj(!E%|d"!~}v=a;@?>=<5YX876v43,+O/.n&J$#('~D|d"!~}vCB;_?>7[;{32V6v432+O/.n&Jkj(!EDed"y~}|u;yxwvXn4rqpRQ.fN+*)g`H^c\aZ~^@\[ZSwWVUNSLpPONMLEJCgG)?cC%$@9>7[;{32VU5ut2+O/.'&%$Hi'~%|#z@xw|u;yxZp6tsrkSi/gfejc)g`H^c\aZ~^@\[ZSwvPONSLpPINMLEiCBGF?>bB;#?>=6Z:987w5.RQ10/o',%$H('&feBA@x`|uzsxwp6tsrkSi/.-kdc)gfH%]E[`_XW{[==6|:32V6v432+O/.'&%$Hi'~%|#z@a}v{ts9wvutmrk1ongfkjc)gf_GcbaZ~}|?>ZYXWPOsSR4o\ 2 | -------------------------------------------------------------------------------- /vcalendar/OwO.ics: -------------------------------------------------------------------------------- 1 | BEGIN:VCALENDAR 2 | VERSION:2.0 3 | PRODID:-//hacksw/handcal//NONSGML v1.0//EN 4 | BEGIN:VEVENT 5 | UID:vcalendar_hacktoberfest_2019_OwO 6 | DTSTAMP:20191019T213000Z 7 | ORGANIZER;CN=doczkal 8 | RRULE:FREQ=YEARLY 9 | DTSTART;VALUE=DATE:20191001 10 | DTEND;VALUE=DATE:20191101 11 | SUMMARY:OwO.ics 12 | DESCRIPTION:OwO.ics 13 | X-ALT-DESC;FMTTYPE=text/html: 14 | 15 | 16 | 17 | 21 | 22 | 23 |

24 | *Notices Bulge* 25 |

26 |

27 | __        ___           _    _        _   _     _      
28 | \ \      / / |__   __ _| |_ ( ) ___  | |_| |__ (_) ___ 
29 |  \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __|
30 |   \ V  V / | | | | (_| | |_    \__ \ | |_| | | | |\__ \
31 |    \_/\_/  |_| |_|\__,_|\__|   |___/ \___|_| |_|_|/___/
32 |

33 | 34 | 35 | END:VEVENT 36 | END:VCALENDAR 37 | -------------------------------------------------------------------------------- /Whitespaces/whitespaces.txt: -------------------------------------------------------------------------------- 1 |                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          -------------------------------------------------------------------------------- /ASCII/ASCII: -------------------------------------------------------------------------------- 1 | 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00101010 01001110 01101111 01110100 01101001 01100011 01100101 01110011 00100000 01000010 01110101 01101100 01100111 01100101 00101010 00001010 01011111 01011111 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 01011111 01011111 01011111 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 01011111 00100000 00100000 00100000 00100000 01011111 00100000 00100000 00100000 00100000 00100000 00100000 00100000 00100000 01011111 00100000 00100000 00100000 01011111 00100000 00100000 00100000 00100000 00100000 01011111 00001010 01011100 00100000 01011100 00100000 00100000 00100000 00100000 00100000 00100000 00101111 00100000 00101111 00100000 01111100 01011111 01011111 00100000 00100000 00100000 01011111 01011111 00100000 01011111 01111100 00100000 01111100 01011111 00100000 00101000 00100000 00101001 00100000 01011111 01011111 01011111 00100000 00100000 01111100 00100000 01111100 01011111 01111100 00100000 01111100 01011111 01011111 00100000 00101000 01011111 00101001 00100000 01011111 01011111 01011111 00001010 00100000 01011100 00100000 01011100 00100000 00101111 01011100 00100000 00101111 00100000 00101111 01111100 00100000 00100111 01011111 00100000 01011100 00100000 00101111 00100000 01011111 01011100 01100000 01111100 00100000 01011111 01011111 01111100 00101111 00101111 00100000 00101111 00100000 01011111 01011111 01111100 00100000 01111100 00100000 01011111 01011111 01111100 00100000 00100111 01011111 00100000 01011100 01111100 00100000 01111100 00101111 00100000 01011111 01011111 01111100 00001010 00100000 00100000 01011100 00100000 01010110 00100000 00100000 01010110 00100000 00101111 00100000 01111100 00100000 01111100 00100000 01111100 00100000 01111100 00100000 00101000 01011111 01111100 00100000 01111100 00100000 01111100 01011111 00100000 00100000 00100000 00100000 01011100 01011111 01011111 00100000 01011100 00100000 01111100 00100000 01111100 01011111 01111100 00100000 01111100 00100000 01111100 00100000 01111100 00100000 01111100 01011100 01011111 01011111 00100000 01011100 00001010 00100000 00100000 00100000 01011100 01011111 00101111 01011100 01011111 00101111 00100000 00100000 01111100 01011111 01111100 00100000 01111100 01011111 01111100 01011100 01011111 01011111 00101100 01011111 01111100 01011100 01011111 01011111 01111100 00100000 00100000 00100000 01111100 01011111 01011111 01011111 00101111 00100000 01011100 01011111 01011111 01011111 01111100 01011111 01111100 00100000 01111100 01011111 01111100 01011111 01111100 00101111 01011111 01011111 01011111 00101111 -------------------------------------------------------------------------------- /BF/OwO.bf: -------------------------------------------------------------------------------- 1 | # Generated using https://copy(dot)sh/brainfuck/text(dot)html # 2 | # You can run it using https://copy(dot)sh/brainfuck/ or another BF interpreter # 3 | # (replace (dot) with periods) # 4 | ++++[->++++++++<]>.................++++++++++.---[->++<]>.-[--->+<]>.+++++.-----------.------.++.[--->+<]>----.+[---->+<]>+++.+[->++<]>.++[----->+<]>+.---------.-----.--.--[->+++<]>+.>++++++++++.[--->++<]>+++..+[->+++<]>........[->+++<]>-...+[->+++<]>...........[->+++<]>-.+[->+++<]>....[->+++<]>-.+[->+++<]>........[->+++<]>-.+[->+++<]>...[->+++<]>-.+[->+++<]>.....[->+++<]>-.+[->+++<]>......>++++++++++.[--->++<]>.+[--->+<]>+.-[->+++<]>-.+[--->+<]>+......[-->+++<]>-.+[--->++<]>.[-->+++<]>-.+[--->++<]>.-[->++++<]>.[---->+++<]>++..+[->+++<]>...[->+++<]>-..+[->+++<]>.[->+++<]>-.[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+++<]>++.+[->+++<]>.++++++++.--------.+++++++++.---------.[->+++<]>-...+[->+++<]>..-[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+++<]>++.[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+++<]>++..+[->+++<]>.++++++++.[++++>---<]>+.++++[->+++<]>.---------.[->+++<]>-...+[->+++<]>.>++++++++++.[->+++<]>++.-[->+++<]>-.+[--->+<]>+.-[->+++<]>-.+[--->+<]>+.[-->+++<]>-.-[->++<]>.+[--->+<]>+.[-->+++<]>-.+[--->++<]>.[-->+++<]>-.>--[-->+++<]>-.[---->+<]>+.+++++++.-[-->+++++<]>.+[->+++<]>.-[->+++<]>-.+[--->+<]>+.[-->+++<]>-.+[--->++<]>.[->+++<]>-.---.++++.-[->++++<]>.[---->+<]>+.[->+++<]>-..[->++++<]>.[----->++++<]>-..+[--->++<]>.[-->+++<]>-.+[--->++<]>.[->+++<]>-..[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+<]>+.[->+++<]>-..[->++++<]>.[---->+<]>+.+++++++.-[-->+++++<]>.+[->+++<]>.-[->+++<]>-.+[--->++++<]>.[---->+<]>+.-[->++++<]>.[----->++++<]>-.+[--->++<]>.[->+++<]>-..[->++++<]>.>++++++++++.[->+++<]>++..-[->+++<]>-.+[--->+<]>+.>+[--->++<]>.+[--->+<]>+++..>+[--->++<]>.+[--->+<]>+++.[-->+++<]>-.+[--->++<]>.-[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+<]>+.++++++++.[++++>---<]>+.[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+++<]>++.+[->+++<]>....-[->+++<]>-.+++..+[->+++<]>.-[->+++<]>-.+[--->+<]>+.-[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+++<]>++.[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+++<]>-.+++..+[->+++<]>.-[->+++<]>-.[++>---<]>.[->+++<]>++...-[->+++<]>-.+++.-[-->+<]>.-[->++<]>.+++.-[-->+<]>.+[--->++<]>..-[->++++<]>.[---->+++<]>++.[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+++<]>++.[->++++<]>.[---->+++<]>-.+++..-[-->+<]>---.+++[->++<]>+.[->++++<]>.[---->+++<]>-.+++..[->++++<]>.[---->+<]>+...-[->++++<]>.[---->+++<]>++...-[-->+<]>.+[--->++<]>.-[->+++<]>-.+++...[->++++<]>.[---->+++<]>++.[->++++<]>.[---->+<]>+.-[->++++<]>.[---->+++<]>++.[->++++<]>.[---->+++<]>++.[->++++<]>.[----->++++<]>-.[->++<]>+...-[-->+<]>.>++++++++++. -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | ## Ignore Visual Studio temporary files, build results, and 2 | ## files generated by popular Visual Studio add-ons. 3 | ## 4 | ## Get latest from 5 | https://github.com/github/gitignore/blob/master/VisualStudio.gitignore 6 | 7 | # User-specific files 8 | *.suo 9 | *.user 10 | *.userosscache 11 | *.sln.docstates 12 | 13 | # User-specific files (MonoDevelop/Xamarin Studio) 14 | *.userprefs 15 | 16 | # Build results 17 | [Dd]ebug/ 18 | [Dd]ebugPublic/ 19 | [Rr]elease/ 20 | [Rr]eleases/ 21 | bld/ 22 | [Bb]in/ 23 | [Oo]bj/ 24 | [Ll]og/ 25 | 26 | # Visual Studio 2015/2017 cache/options directory 27 | .vs/ 28 | # Uncomment if you have tasks that create the project's static files in 29 | wwwroot 30 | #wwwroot/ 31 | 32 | # MSTest test Results 33 | [Tt]est[Rr]esult*/ 34 | [Bb]uild[Ll]og.* 35 | 36 | # NUNIT 37 | *.VisualState.xml 38 | TestResult.xml 39 | 40 | # Build Results of an ATL Project 41 | [Dd]ebugPS/ 42 | [Rr]eleasePS/ 43 | dlldata.c 44 | 45 | # Benchmark Results 46 | BenchmarkDotNet.Artifacts/ 47 | 48 | # .NET Core 49 | project.lock.json 50 | project.fragment.lock.json 51 | artifacts/ 52 | **/Properties/launchSettings.json 53 | 54 | *_i.c 55 | *_p.c 56 | *_i.h 57 | *.ilk 58 | *.meta 59 | *.obj 60 | *.pch 61 | *.pdb 62 | *.pgc 63 | *.pgd 64 | *.rsp 65 | *.sbr 66 | *.tlb 67 | *.tli 68 | *.tlh 69 | *.tmp 70 | *.tmp_proj 71 | *.log 72 | *.vspscc 73 | *.vssscc 74 | .builds 75 | *.pidb 76 | *.svclog 77 | *.scc 78 | 79 | # Chutzpah Test files 80 | _Chutzpah* 81 | 82 | # Visual C++ cache files 83 | ipch/ 84 | *.aps 85 | *.ncb 86 | *.opendb 87 | *.opensdf 88 | *.sdf 89 | *.cachefile 90 | *.VC.db 91 | *.VC.VC.opendb 92 | 93 | # Visual Studio profiler 94 | *.psess 95 | *.vsp 96 | *.vspx 97 | *.sap 98 | 99 | # Visual Studio Trace Files 100 | *.e2e 101 | 102 | # TFS 2012 Local Workspace 103 | $tf/ 104 | 105 | # Guidance Automation Toolkit 106 | *.gpState 107 | 108 | # ReSharper is a .NET coding add-in 109 | _ReSharper*/ 110 | *.[Rr]e[Ss]harper 111 | *.DotSettings.user 112 | 113 | # JustCode is a .NET coding add-in 114 | .JustCode 115 | 116 | # TeamCity is a build add-in 117 | _TeamCity* 118 | 119 | # DotCover is a Code Coverage Tool 120 | *.dotCover 121 | 122 | # AxoCover is a Code Coverage Tool 123 | .axoCover/* 124 | !.axoCover/settings.json 125 | 126 | # Visual Studio code coverage results 127 | *.coverage 128 | *.coveragexml 129 | 130 | # NCrunch 131 | _NCrunch_* 132 | .*crunch*.local.xml 133 | nCrunchTemp_* 134 | 135 | # MightyMoose 136 | *.mm.* 137 | AutoTest.Net/ 138 | 139 | # Web workbench (sass) 140 | .sass-cache/ 141 | 142 | # Installshield output folder 143 | [Ee]xpress/ 144 | 145 | # DocProject is a documentation generator add-in 146 | DocProject/buildhelp/ 147 | DocProject/Help/*.HxT 148 | DocProject/Help/*.HxC 149 | DocProject/Help/*.hhc 150 | DocProject/Help/*.hhk 151 | DocProject/Help/*.hhp 152 | DocProject/Help/Html2 153 | DocProject/Help/html 154 | 155 | # Click-Once directory 156 | publish/ 157 | 158 | # Publish Web Output 159 | *.[Pp]ublish.xml 160 | *.azurePubxml 161 | # Note: Comment the next line if you want to checkin your web deploy 162 | settings, 163 | # but database connection strings (with potential passwords) will be 164 | unencrypted 165 | *.pubxml 166 | *.publishproj 167 | 168 | # Microsoft Azure Web App publish settings. Comment the next line if you 169 | want to 170 | # checkin your Azure Web App publish settings, but sensitive information 171 | contained 172 | # in these scripts will be unencrypted 173 | PublishScripts/ 174 | 175 | # NuGet Packages 176 | *.nupkg 177 | # The packages folder can be ignored because of Package Restore 178 | **/[Pp]ackages/* 179 | # except build/, which is used as an MSBuild target. 180 | !**/[Pp]ackages/build/ 181 | # Uncomment if necessary however generally it will be regenerated when 182 | needed 183 | #!**/[Pp]ackages/repositories.config 184 | # NuGet v3's project.json files produces more ignorable files 185 | *.nuget.props 186 | *.nuget.targets 187 | 188 | # Microsoft Azure Build Output 189 | csx/ 190 | *.build.csdef 191 | 192 | # Microsoft Azure Emulator 193 | ecf/ 194 | rcf/ 195 | 196 | # Windows Store app package directories and files 197 | AppPackages/ 198 | BundleArtifacts/ 199 | Package.StoreAssociation.xml 200 | _pkginfo.txt 201 | *.appx 202 | 203 | # Visual Studio cache files 204 | # files ending in .cache can be ignored 205 | *.[Cc]ache 206 | # but keep track of directories ending in .cache 207 | !*.[Cc]ache/ 208 | 209 | # Others 210 | ClientBin/ 211 | ~$* 212 | *~ 213 | *.dbmdl 214 | *.dbproj.schemaview 215 | *.jfm 216 | *.pfx 217 | *.publishsettings 218 | orleans.codegen.cs 219 | 220 | # Since there are multiple workflows, uncomment next line to ignore 221 | bower_components 222 | # (https://github.com/github/gitignore/pull/1529#issuecomment-104372622) 223 | #bower_components/ 224 | 225 | # RIA/Silverlight projects 226 | Generated_Code/ 227 | 228 | # Backup & report files from converting an old project file 229 | # to a newer Visual Studio version. Backup files are not needed, 230 | # because we have git ;-) 231 | _UpgradeReport_Files/ 232 | Backup*/ 233 | UpgradeLog*.XML 234 | UpgradeLog*.htm 235 | 236 | # SQL Server files 237 | *.mdf 238 | *.ldf 239 | *.ndf 240 | 241 | # Business Intelligence projects 242 | *.rdl.data 243 | *.bim.layout 244 | *.bim_*.settings 245 | 246 | # Microsoft Fakes 247 | FakesAssemblies/ 248 | 249 | # GhostDoc plugin setting file 250 | *.GhostDoc.xml 251 | 252 | # Node.js Tools for Visual Studio 253 | .ntvs_analysis.dat 254 | node_modules/ 255 | 256 | # TypeScript v1 declaration files 257 | typings/ 258 | 259 | # Visual Studio 6 build log 260 | *.plg 261 | 262 | # Visual Studio 6 workspace options file 263 | *.opt 264 | 265 | # Visual Studio 6 auto-generated workspace file (contains which files 266 | were open etc.) 267 | *.vbw 268 | 269 | # Visual Studio LightSwitch build output 270 | **/*.HTMLClient/GeneratedArtifacts 271 | **/*.DesktopClient/GeneratedArtifacts 272 | **/*.DesktopClient/ModelManifest.xml 273 | **/*.Server/GeneratedArtifacts 274 | **/*.Server/ModelManifest.xml 275 | _Pvt_Extensions 276 | 277 | # Paket dependency manager 278 | .paket/paket.exe 279 | paket-files/ 280 | 281 | # FAKE - F# Make 282 | .fake/ 283 | 284 | # JetBrains Rider 285 | .idea/ 286 | *.sln.iml 287 | 288 | # CodeRush 289 | .cr/ 290 | 291 | # Python Tools for Visual Studio (PTVS) 292 | __pycache__/ 293 | *.pyc 294 | 295 | # Cake - Uncomment if you are using it 296 | # tools/** 297 | # !tools/packages.config 298 | 299 | # Tabs Studio 300 | *.tss 301 | 302 | # Telerik's JustMock configuration file 303 | *.jmconfig 304 | 305 | # BizTalk build output 306 | *.btp.cs 307 | *.btm.cs 308 | *.odx.cs 309 | *.xsd.cs 310 | 311 | # OpenCover UI analysis results 312 | OpenCover/ 313 | 314 | #Executables 315 | *.exe 316 | *.class 317 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # OwO 2 | 3 | ![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/Krutonium/OwO) [![GitHub License](https://img.shields.io/github/license/Krutonium/OwO)](https://github.com/Krutonium/OwO/blob/master/LICENSE) 4 | 5 | ## _Notices Bulge_ 6 | 7 | ### What's This? 8 | 9 | ``` 10 | krutonium@Arch  ~  OwO 11 | *Notices Bulge* 12 | __ ___ _ _ _ _ _ 13 | \ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ 14 | \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __| 15 | \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \ 16 | \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/ 17 | ``` 18 | 19 | --- 20 | 21 | ### How To Run 22 | ======= 23 |
24 | **05AB1E** 25 | [Use the online interpreter](https://tio.run/#05ab1e) 26 |
27 | 28 |
29 | **Ada** 30 |

`gnatmake OwO.adb && ./OwO`

31 |
32 | 33 |
34 | **Axe Parser** 35 |

`Asm(prgmOWO)` (Send OWO.8XP to your calculator first)

36 |
37 | 38 |
39 | **BASIC** 40 |

`fbc OwO.bas`

41 |
42 | 43 |
44 | **Bash** 45 |

`chmod +x OwO.sh && ./OwO.sh`

46 |
47 | 48 |
49 | **Batch** 50 |

`CALL OwO.bat` or just run the program

51 |
52 | 53 |
54 | **Boo** 55 |

`booi OwO.boo`

56 |
57 | 58 |
59 | **Brainfuck** 60 | 61 | npm install --g node-brainfuck-compiler 62 | brainfuck-compiler -i BF/OwO.bf -o BF/OwO-compiled.js && node Brainfuck/OwO-compiled.js 63 | Alternatively, [Try it online!](https://tio.run/##vVTJboMwEL33K0bKJRGyuVcVhx7ab6iiHghxC2oKyBi1/XqKF8yw2ICS1kLInuX5zeI58TjL3@rko2l28MxyxmPBzlBXWf4OqRBldR@GSVH@7M@FOFRpeOocQsG@hZKm4vMCu7sdvBQ1JHEOvM4hE6tAoOAQ54VIGYfHJ8hywXjJWftXiHvOykucMFCe8JWJFErGs@JcHVqDoF1HEgVmPbxGdLwCuyghRBlLs3ZH2r3cWmW3zL5VUGulBfKoz9IlsGiB1hgVHSFR9WmeSh8hUvqGDtJg4kisgNA59dBiqHcqfEq3kwduPiKdsC4pQ3crN9ATpQJwyQ1YZ2OtJinE2UMKJJ4iYbpzNyAc3Ftd04xFxF1Csv3y7R6zfI/yL7taeffvSCV3kfiw3P1Vrhq75Li8/dt0WbgaI5KPCxe0d7e1MAb2AhvrCmbDe3vCptrOKuLsjU3sUfflYsP7sNwtsEjjijStYYCiXBGMq6ucRYqC@VkjfTy6DUPFm9itcsfjux59ZjDRUdZGc2Dhof7NQLqVfEVMR5vfYSdNkqI7vnc3QxLJcYfcdjD7I7MMzJzp6C35OXh4uVNHvJMWov8Q/4wGzZE@DZg0Hh1N8ws "brainfuck – Try It Online") 64 |
65 | 66 |
67 | **C** 68 |

`gcc OwO.c -o OwO && ./OwO`

69 |
70 | 71 |
72 | **C++** 73 |

`g++ OwO.cpp -o OwO && ./OwO`

74 |
75 | 76 |
77 | **C#/.NET** 78 |

`dotnet restore && dotnet run`

79 |
80 | 81 |
82 | **CoffeeScript** 83 |

`coffee OwO.coffee`

84 |
85 | 86 |
87 | **Crystal** 88 |

`crystal OwO.cr`

89 |
90 | 91 |
92 | **D** 93 |

`dmd OwO.d && ./OwO`

94 |
95 | 96 |
97 | **Dart** 98 |

`dart OwO.dart`

99 |
100 | 101 |
102 | **Docker** 103 |

`docker build . -t owo && docker run owo`

104 |
105 | 106 |
107 | **Elisp** 108 |

`emacs -q --script OwO.el`

109 |
110 | 111 |
112 | **Elixir** 113 |

`elixir Elixir.exs`

114 |
115 | 116 |
117 | **Emojicode** 118 |

`emojicodec OwO.emojic && ./OwO`

119 |
120 | 121 |
122 | **Erlang** 123 | 124 | $erl 125 | 126 | 1> c(owo). 127 | 128 | 2> owo:owoPrint(). 129 |
130 | 131 |
132 | **Factor** 133 | [Download and compile the Java Factor interpreter](https://github.com/bangyen/factor-lang) 134 |

`java Factor OwO.fact`

135 |
136 | 137 |
138 | **Fetlang** 139 |

`fetlang OwO.fet`

140 |
141 | 142 |
143 | **Fish** 144 |

`chmod +x OwO.fish && ./OwO.fish`

145 |
146 | 147 |
148 | **Forth** 149 |

`gforth owo.fs -e bye`

150 |
151 | 152 |
153 | **Go** 154 |

`go run OwO.go`

155 |
156 | 157 |
158 | **Haskell** 159 |

`runghc OwO.hs`

160 |
161 | 162 |
163 | **HTML** 164 |

`firefox OwO.html`

165 |
166 | 167 |
168 | **Java** 169 |

`java OwO.java`

170 |
171 | 172 |
173 | **JavaScript (NodeJS) and JSFuck** 174 |

`node OwO.js`

175 |
176 | 177 |
178 | **JScript** 179 |

`cscript OwO.js`

180 |
181 | 182 |
183 | **Julia** 184 |

`julia OwO.jl`

185 |
186 | 187 |
188 | **Kotlin** 189 |

`kotlinc OwO.kt -include-runtime -d OwO.jar && java -jar OwO.jar`

190 |
191 | 192 |
193 | **LaTeX** 194 |

`pdflatex OwO.tex` or `latex OwO.tex` or `xelatex OwO.tex`

195 |
196 | 197 |
198 | **Lisp** 199 |

`clisp OwO.lisp`

200 |
201 | 202 |
203 | **LOLCODE** 204 |

`lci OwO.lol`

205 |
206 | 207 |
208 | **Lua** 209 |

`lua OwO.lua`

210 |
211 | 212 |
213 | **Makefile** 214 |

`make`

215 |
216 | 217 |
218 | **Malbolge** 219 |

`malbolge OwO.mal`

220 |
221 | 222 |
223 | **Nim** 224 |

`nim compile --run OwO.nim` or `nimble run`

225 |
226 | 227 |
228 | **OCaml** 229 |

`ocaml OwO.ml`

230 |
231 | 232 |
233 | **Perl** 234 |

`perl OwO.pl`

235 |
236 | 237 |
238 | **PHP** 239 |

`php OwO.php`

240 |
241 | 242 |
243 | **Pascal** 244 |

`fpc OwO.pas`

245 |
246 | 247 |
248 | **PowerShell** 249 |

`powershell OwO.ps1`

250 |
251 | 252 |
253 | **Python (v2.x and v3.x respectively)** 254 |

`python owo.py` or `python3 owo.py`

255 |
256 | 257 |
258 | **R** 259 |

260 | `Rscript OwO.R` Linux/Unix 261 |
262 | `R.exe OwO.R` Windows 263 |

264 |
265 | 266 |
267 | **Red** 268 |

`red -c OwO.red` and then run the compiled executable from a command prompt/terminal.

269 |
270 | 271 |
272 | **Ruby** 273 |

`ruby OwO.rb`

274 |
275 | 276 |
277 | **Rust** 278 |

`cargo run`

279 |
280 | 281 |
282 | **Slashes** 283 | Find an interpreter on [here](https://codegolf.stackexchange.com/questions/37014/interpret-pronounced-slashes) and run it 284 |
285 | 286 |
287 | **Swift** 288 |

`swift OwO.swift`

289 |
290 | 291 |
292 | **TCL** 293 |

`tclsh OwO.tcl`

294 |
295 | 296 |
297 | **TypeScript** 298 |

`tsc OwO.ts | node OwO.ts`

299 |
300 | 301 |
302 | **V** 303 |

`v run OwO.v`

304 |
305 | 306 |
307 | **Vala** 308 |

`valac OwO.vala && ./OwO`

309 |
310 | 311 |
312 | **VBScript** 313 |

`cscript OwO.vbs`

314 |
315 | 316 |
317 | **VisualBasic** 318 |

`vbc ./OwO.vb && ./OwO`

319 |
320 | 321 |
322 | **Wenyan** 323 | `wenyan ./OwO.wy` 324 |
325 | `create an image that resembles pages from historical printed books` 326 |
327 | `wenyan --render ./OwO.wy` 328 |
329 | 330 | 331 |
332 | **WhiteSpaces** 333 | `Replace space with 1 and tab with 0` 334 |
335 | `Then decode binary` 336 |
337 | 338 |
339 | **Terraform** 340 |

`terraform init && terraform apply`

341 |
342 | 343 |
344 | **Zsh** 345 |

`chmod +x OwO.zsh && ./OwO.zsh`

346 |
347 | 348 | 349 | ### What's This? 350 | 351 | ``` 352 | krutonium@Arch  ~  OwO 353 | *Notices Bulge* 354 | __ ___ _ _ _ _ _ 355 | \ \ / / |__ __ _| |_ ( ) ___ | |_| |__ (_) ___ 356 | \ \ /\ / /| '_ \ / _\`| __|// / __| | __| '_ \| |/ __| 357 | \ V V / | | | | (_| | |_ \__ \ | |_| | | | |\__ \ 358 | \_/\_/ |_| |_|\__,_|\__| |___/ \___|_| |_|_|/___/ 359 | ``` 360 | 361 | --- 362 | -------------------------------------------------------------------------------- /Factor/OwO.fact: -------------------------------------------------------------------------------- 1 | 68612473420886018882788544838911944114917353486445642410584881371120011148098343270665679383675894274336558059982072186983568283049296958312047158787981960124186764097233470375002779359638043075904900149542155314429741416632123483276641339340270806790214585491633849132672184709967761641785918384892154000200746610192011121581513788814752062988411341813127096335401017099570970691230903039864863948935899970933683823319745303324472708197216095729547040229410233266600360858033994898634948766298079055105441269702945108836416366842827049339312485364245788425718629090380494239918262169417303280533323980919228015583509798710256828688985784495710144424450466816814558761554337515088474006733656140065126710484879507200915184100492328752807866391935555721542595718797775707753714776758858314487314951754456062131783069719048747159129687248554037921964948041755583631586872944868712779762506305648007639498192704338294490763961360265926531502444701823048180677016389422966875686627391684067105739373399630540475714070313569661558987463040538543855404744087886719348840735137670663843433833977162690297164413649593646019766913122262922094698568925098081187911185028123577036546710115251294097641251475041688080556180201787347828638581717465467538063804375187914907160819842858199836471607172171372777768289489727114753903026652811637413821259071947240645205512697391677354191687820838902969423842208777763691563115089471911010579940987989378683067600142431770707686808682047793835782644177669553120339365246314022207659504164888804788008733234885713959871935521353786329509329838149902726253379545381818718675302343432985990736372549113136291905957494221312838473725760534048972803290918378462939347687636799623677233104603270605499485043870808395286723656960490033210829589905403344120299052779072536820492170650525212692477193593700310454214558727051382908186155939591346632321196257517845423275575975563560599918007410206077760168245502593386476119553362375422608094283499438579795733642040910950489246711827928470353386159536347219166778350576147325650773315983513194082576384286285609324995771688991553664673687797926579510665835003850148369482039140772431571560716917345553319819724833291849735130019403590569383757039199332353329203176926159304204496182657772876931651213128967309598366884313177696854570381669754392821724764390507350034663082253309944274531093891204349239117209802973924574895962467595609136127587106892666956037701196815125358690592515618518262672959657982365761697316149318604058815811051242519998499345779925607556655152831767844976984648264333075117545740194798332269558953710069187076884060735754142138418846708368987450897398462835372243300721206407163599563778365588586542580695268610556697523533025962875988924204255175221340041159692526395658072014367307690437258247482950145071044063014645064259629486064080854578005116160820696533790909628356047989782558664034804769502336564009516448961128944581118093766407797131673534615850303394917796144698922258047961163200462004793521884382937392452654409997821778080354539146430494369881791840404780978337911502236238447249798660627238087324719190352603978000492280883102135274026878624155202625254303093264689462285740490802439932190512716779490172966926444310922103588310197977110639183284764197881931848769532695824780746719783571406956294213532231002718990443121829327885726688744497525835521667722315176150682606226739337493667953449202939825863783135095965924652419720519723064921157475138697310410238546593310739196093221280617201982121550377603671764119976575285794718654239060918719690433115876354569559396813239820354167453230424644684419771109361477644782270334506825552926797542878354738900336843934510118851854083532809938384707064413022239030665658208075261428640088955749001055355237473816402153548710011091780144064414890625638293704109732194615465553106536068583218310470504116751110444920211348480288465996003764646320266213678994432117963530705892320624195366603809850352370345670365484557305450615606133576765980330997474857887473434789232981774679117074500399629688024108145245376726651467933021812520009957424519744677797029423107494611921286475755434316816860218518454119307942513143658530956487405570187525279869344143619496444907053548695628312860873837971984869110149744566640572018175783026578075594302166439689734366579844243226432716092541617251647914433520429139673654772908813696160719136235661623700487055064939194567301064969969063443481993777480683737979434245650167078354083294218011062062035927152073621852767556296593931782746668014528707942332951014256878291310975458181005014691407878261652580532841580133197725996771638602821994080213408679521379791436442580023139776538137633914447687802917519530483553711008135660299534074127833555519289154675416206907419587510884563857041599058590523315036723213900431835705444984249441322212363048967613205778414345106880286609301062823490022748210994304206045381788858719019596447576524603853955248180502271376900162630787822665008545072357951270826547393771389286985790715365189601703466216377017999299405638448064011845059207782746818037105175002034842056588942024047136399375471242040420199777357424679592518460350533412592157059034280412324380527951690415600574032718443770640844340007882836221576902853705807640764301476223106174438572577747289878464169212176880403459603153367445190627675432214281525991433378727636889777021174357548916946160332999532279067213959178176536116084429970803197722505100480281066142927277371608611814509166313765428561984764359015244895470473925858593376510397113532628775303908472391021400028823469840450969786341721554633993070868665682414395274584654207370227892434628400336829571708463487528404696598799706829093567193108424104830531683233648112362390612206372922191384591687725952569975883660357154534960445894412622331223326011436631040326503167126260597908459569429682610577320422344610992150168999806580272255494929964660076018852887618420784695963464332802643213709801662094342466477284865812708062986777144646734624365247626781394719660945167019309432213963805473388050323450480691740910263698903704147291192964317600335509490331999511195653534691850637548505494817562339135888476724923988843033229676702994986434007519408552961545843460360508732711287515980336906188991353195875060695915340500529317211170725870941860444622046276563972440003091234330861802722684575648020159449522419152033250309271993976763597339572904486109972092532902931909474034368055662300259582313300745393128243176901708460539158982013313861203664492714841220287702206098107352989510805735498869570935015117302827072725508095709234625833100855357787886369909254305623264639168258403431894584796672035666587872206796596741333357843064296689937036585624054152864166490667647805786687558500518496305574579428116053425388859603539127328639896102354288626635153233245303599156644825630459751509919604667364092004602801246420187066592855622593192487937701914525128917682601437709644426333090945058298833896719064912091237030304398412196296622635415384694884300291517816746611258128958120238049661706980690185123609189288092652519931360566320274993534953141253680740624247701287056957316553197920603169616308013623860329806841925912697632122951745464520755102985259218023995029383555894310219607575997584278846366980568629200057860299787642907422278252460496984690068057384580405400959896939413574502781033167169135628118976631666266552691564731355329189724257333160598917664481786456763900614961221940246954252133440830431223053871746623238409094324138717357467848240487047406810680410474716110054256873252895709250921960841151412309084525402905717624271733537124789918949535080170027750147644839264078907477634500374097673452666660232086302178464617656334763034001417920272125388896364898407432476124911831129177859068898688246870566363372292229761933908707599452502876740749490050550719313068980617773547592216977550855072221124865562530385034554737363257762818434508881857816203932555484223318873305688842222073653492383290845539181457942114403528433259381436561190345827605743082802042023763252430924417452686754440927232989175146822803355413018836002635772822534169582408752632769382108609757930600024920751557590898455524173060024207275430037593734403138003562823477461577106364142389740189863328855876224154532672119195546930758738325715548491185090514130537046854240029818537563855731003642274950213252432550343834210501908620385303646788805208902738735591518782394457617213696808714072235514474757829024316084051521904501394730282670092439496471495341910042311717304330005917061383626674313165704670682120801889770927310541121018529777138800332738158365908162303746360480611006007531901857182574119900959748123835600034918285758404664955718748699569217266011263992204449798755074686865565294483735180939980102386804436728128526760896161220931222625425933405322731118985510078653408996793072769299779538768176699469364485000530618064475889231967880819473541768799293880019027179762438154111378556010192157174792859862188319179477347532827885322787308766910832703546872684302045259688226992241075005235497818801437996186489450623573205595262906362756695506148313264497390567500025039673126180418991256420278912521473451358585493214699311925396149009197547581304285057928836023923698499376271157530090688883172620040931440674938299971395893561474800200454144368417628371768157528943229493693956699373702467639356795906707067222159478232486423613837697043532231328174679094964525791523003027632292003980966646738797186437219400630359381710853738032667937827337874099301249876396290379892111715128923014566066145893749259629008971911283214368658328875770605853847811445911033570709806923204611941390246609210431868640952326021195237858011369327094744736838606419701028394279125956712971856917075227897376985424956493784547775422202290017310605993188147970668176316032693661228511171747619971832543502722142662289601263434010745262037985461140721139056465119312335437724046621067372922612496574772123242252485204710587527363210173898725249113854597646006188932462267569585550817671978703148014442896800816745832622491777437333764153398302436132929901516575706752186828891190084010108415825193474180555148202630374312907592624007790297845071664067996076976629993805771296507803967267845248432387563530584250389616866468551201785727151512996915541187092635916711415407263050816711813367166797637835706795181763450034486796693118828635145527601092446339919689015455329421911283822470063533104659549554862105013722449972333820534210274944764907442694212332708727577989468164258565829468488187996486205428915867533063774163431915539289009074749593743469484389181559132777609758632815412317272074749699672197132192763197807582423738659170010796759412553049733480546561357297313009823381419405692909398352659261063165656024217305510409818722531756758500195130601320986866076334048788845893731959527125580385258348185756990619045847808586952109820587509627976109265041544842578289034460139275210683328399737483056294840844541934897630498123892488082666289452703361826062205981273960567869399055926669672990459302346351475844648288762899532984282788096696476057079813386227125940929105170736273906007246574752047403749390204158641301944084687549125958788233593582997601411579624644249957258746867865242765389077482504573920974471267316488893270782624588205223897214821917583788599041073911129259329427060090442355998021318023057834211999977869743586983029334971120505641761566654798218392347991023663741352526404612594697153089925694113091096753848181781390213426243173086814699103945781940909005554794932822831124175339291903010575258578805619230271300059534994259259388260623517411689363161288946328486804979264009513556639355360943725257423532206023742488135742662487623892349094647362828099273075869852550702335308078766589721549055079830986366003644958118435564969475068703736307031400554300857189446658111982491553862957560497854223077546826616343870388824529850907065105395413504310731961953877889704659753439657 2 | -------------------------------------------------------------------------------- /Ocaml/OCamlMakefile: -------------------------------------------------------------------------------- 1 | ########################################################################### 2 | # OCamlMakefile 3 | # Copyright (C) 1999- Markus Mottl 4 | # 5 | # For updates see: 6 | # http://www.ocaml.info/home/ocaml_sources.html 7 | # 8 | ########################################################################### 9 | 10 | # Modified by damien for .glade.ml compilation 11 | 12 | # Set these variables to the names of the sources to be processed and 13 | # the result variable. Order matters during linkage! 14 | 15 | ifndef SOURCES 16 | SOURCES := foo.ml 17 | endif 18 | export SOURCES 19 | 20 | ifndef RES_CLIB_SUF 21 | RES_CLIB_SUF := _stubs 22 | endif 23 | export RES_CLIB_SUF 24 | 25 | ifndef RESULT 26 | RESULT := foo 27 | endif 28 | export RESULT := $(strip $(RESULT)) 29 | 30 | export LIB_PACK_NAME 31 | 32 | ifndef DOC_FILES 33 | DOC_FILES := $(filter %.mli, $(SOURCES)) 34 | endif 35 | export DOC_FILES 36 | FIRST_DOC_FILE := $(firstword $(DOC_FILES)) 37 | 38 | export BCSUFFIX 39 | export NCSUFFIX 40 | 41 | ifndef TOPSUFFIX 42 | TOPSUFFIX := .top 43 | endif 44 | export TOPSUFFIX 45 | 46 | # Eventually set include- and library-paths, libraries to link, 47 | # additional compilation-, link- and ocamlyacc-flags 48 | # Path- and library information needs not be written with "-I" and such... 49 | # Define THREADS if you need it, otherwise leave it unset (same for 50 | # USE_CAMLP4)! 51 | 52 | export THREADS 53 | export VMTHREADS 54 | export ANNOTATE 55 | export USE_CAMLP4 56 | 57 | export INCDIRS 58 | export LIBDIRS 59 | export EXTLIBDIRS 60 | export RESULTDEPS 61 | export OCAML_DEFAULT_DIRS 62 | 63 | export LIBS 64 | export CLIBS 65 | export CFRAMEWORKS 66 | 67 | export OCAMLFLAGS 68 | export OCAMLNCFLAGS 69 | export OCAMLBCFLAGS 70 | 71 | export OCAMLLDFLAGS 72 | export OCAMLNLDFLAGS 73 | export OCAMLBLDFLAGS 74 | 75 | export OCAMLMKLIB_FLAGS 76 | 77 | ifndef OCAMLCPFLAGS 78 | OCAMLCPFLAGS := a 79 | endif 80 | export OCAMLCPFLAGS 81 | 82 | ifndef DOC_DIR 83 | DOC_DIR := doc 84 | endif 85 | export DOC_DIR 86 | 87 | export PPFLAGS 88 | 89 | export LFLAGS 90 | export YFLAGS 91 | export IDLFLAGS 92 | 93 | export OCAMLDOCFLAGS 94 | 95 | export OCAMLFIND_INSTFLAGS 96 | 97 | export DVIPSFLAGS 98 | 99 | export STATIC 100 | 101 | # Add a list of optional trash files that should be deleted by "make clean" 102 | export TRASH 103 | 104 | ECHO := echo 105 | 106 | ifdef REALLY_QUIET 107 | export REALLY_QUIET 108 | ECHO := true 109 | LFLAGS := $(LFLAGS) -q 110 | YFLAGS := $(YFLAGS) -q 111 | endif 112 | 113 | #################### variables depending on your OCaml-installation 114 | 115 | SYSTEM := $(shell $(OCAMLFIND) c -config 2>/dev/null | sed -ne "s/system: //p" | tr -d '\015') 116 | # This may be 117 | # - mingw 118 | # - mingw64 119 | # - win32 120 | # - win64 121 | # - cygwin 122 | # - some other string means Unix 123 | # - empty means ocamlc does not support -config 124 | 125 | ifneq ($(filter $(SYSTEM),mingw mingw64),) 126 | MINGW=1 127 | endif 128 | ifneq ($(filter $(SYSTEM),win32 win64),) 129 | MSVC=1 130 | endif 131 | 132 | ifdef MINGW 133 | export MINGW 134 | WIN32 := 1 135 | ## The default value 'cc' makes 'ocamlc -cc "cc"' raises the error 'The 136 | ## NTVDM CPU has encountered an illegal instruction'. 137 | #ifndef CC 138 | # MNO_CYGWIN := $(shell gcc -Wextra -v --help 2>/dev/null | grep -q '\-mno-cygwin'; echo $$?) 139 | # CC := gcc 140 | #else 141 | # MNO_CYGWIN := $(shell $$CC -Wextra -v --help 2>/dev/null | grep -q '\-mno-cygwin'; echo $$?) 142 | #endif 143 | ## We are compiling with cygwin tools: 144 | #ifeq ($(MNO_CYGWIN),0) 145 | #CFLAGS_WIN32 := -mno-cygwin 146 | #endif 147 | ## The OCaml C header files use this flag: 148 | #CFLAGS += -D__MINGW32__ 149 | CC:= $(shell $(OCAMLFIND) ocamlc -config | awk '/^bytecomp_c_compiler/ {for(i=2;i<=NF;i++) printf "%s " ,$$i}' | tr -d '\015') 150 | AR:= $(shell $(OCAMLFIND) ocamlc -config | awk '/^bytecomp_c_compiler/ {print $$2}' | sed 's|gcc|ar|g' | tr -d '\015') 151 | endif 152 | ifdef MSVC 153 | export MSVC 154 | WIN32 := 1 155 | ifndef STATIC 156 | CPPFLAGS_WIN32 := -DCAML_DLL 157 | endif 158 | CFLAGS_WIN32 += -nologo 159 | EXT_OBJ := obj 160 | EXT_LIB := lib 161 | ifeq ($(CC),gcc) 162 | # work around GNU Make default value 163 | ifdef THREADS 164 | CC := cl -MT 165 | else 166 | CC := cl 167 | endif 168 | endif 169 | ifeq ($(CXX),g++) 170 | # work around GNU Make default value 171 | CXX := $(CC) 172 | endif 173 | CFLAG_O := -Fo 174 | endif 175 | ifdef WIN32 176 | EXT_CXX := cpp 177 | EXE := .exe 178 | endif 179 | 180 | ifndef EXT_OBJ 181 | EXT_OBJ := o 182 | endif 183 | ifndef EXT_LIB 184 | EXT_LIB := a 185 | endif 186 | ifndef EXT_CXX 187 | EXT_CXX := cc 188 | endif 189 | ifndef EXE 190 | EXE := # empty 191 | endif 192 | ifndef CFLAG_O 193 | CFLAG_O := -o # do not delete this comment (preserves trailing whitespace)! 194 | endif 195 | 196 | export CC 197 | export CXX 198 | export CFLAGS 199 | export CXXFLAGS 200 | export LDFLAGS 201 | export CPPFLAGS 202 | 203 | ifndef RPATH_FLAG 204 | ifdef ELF_RPATH_FLAG 205 | RPATH_FLAG := $(ELF_RPATH_FLAG) 206 | else 207 | RPATH_FLAG := -R 208 | endif 209 | endif 210 | export RPATH_FLAG 211 | 212 | ifndef MSVC 213 | ifndef PIC_CFLAGS 214 | PIC_CFLAGS := -fPIC 215 | endif 216 | ifndef PIC_CPPFLAGS 217 | PIC_CPPFLAGS := -DPIC 218 | endif 219 | endif 220 | 221 | export PIC_CFLAGS 222 | export PIC_CPPFLAGS 223 | 224 | BCRESULT := $(addsuffix $(BCSUFFIX), $(RESULT)) 225 | NCRESULT := $(addsuffix $(NCSUFFIX), $(RESULT)) 226 | TOPRESULT := $(addsuffix $(TOPSUFFIX), $(RESULT)) 227 | 228 | ifndef OCAMLFIND 229 | OCAMLFIND := ocamlfind 230 | endif 231 | export OCAMLFIND 232 | 233 | ifndef OCAML 234 | OCAML := ocaml 235 | endif 236 | export OCAML 237 | 238 | ifndef OCAMLC 239 | OCAMLC := ocamlc 240 | endif 241 | export OCAMLC 242 | 243 | ifndef OCAMLOPT 244 | OCAMLOPT := ocamlopt 245 | endif 246 | export OCAMLOPT 247 | 248 | ifndef OCAMLMKTOP 249 | OCAMLMKTOP := ocamlmktop 250 | endif 251 | export OCAMLMKTOP 252 | 253 | ifndef OCAMLCP 254 | OCAMLCP := ocamlcp 255 | endif 256 | export OCAMLCP 257 | 258 | ifndef OCAMLDEP 259 | OCAMLDEP := ocamldep 260 | endif 261 | export OCAMLDEP 262 | 263 | ifndef OCAMLLEX 264 | OCAMLLEX := ocamllex 265 | endif 266 | export OCAMLLEX 267 | 268 | ifndef OCAMLYACC 269 | OCAMLYACC := ocamlyacc 270 | endif 271 | export OCAMLYACC 272 | 273 | ifndef OCAMLMKLIB 274 | OCAMLMKLIB := ocamlmklib 275 | endif 276 | export OCAMLMKLIB 277 | 278 | ifndef OCAML_GLADECC 279 | OCAML_GLADECC := lablgladecc2 280 | endif 281 | export OCAML_GLADECC 282 | 283 | ifndef OCAML_GLADECC_FLAGS 284 | OCAML_GLADECC_FLAGS := 285 | endif 286 | export OCAML_GLADECC_FLAGS 287 | 288 | ifndef CAMELEON_REPORT 289 | CAMELEON_REPORT := report 290 | endif 291 | export CAMELEON_REPORT 292 | 293 | ifndef CAMELEON_REPORT_FLAGS 294 | CAMELEON_REPORT_FLAGS := 295 | endif 296 | export CAMELEON_REPORT_FLAGS 297 | 298 | ifndef CAMELEON_ZOGGY 299 | CAMELEON_ZOGGY := camlp4o pa_zog.cma pr_o.cmo 300 | endif 301 | export CAMELEON_ZOGGY 302 | 303 | ifndef CAMELEON_ZOGGY_FLAGS 304 | CAMELEON_ZOGGY_FLAGS := 305 | endif 306 | export CAMELEON_ZOGGY_FLAGS 307 | 308 | ifndef OXRIDL 309 | OXRIDL := oxridl 310 | endif 311 | export OXRIDL 312 | 313 | ifndef CAMLIDL 314 | CAMLIDL := camlidl 315 | endif 316 | export CAMLIDL 317 | 318 | ifndef CAMLIDLDLL 319 | CAMLIDLDLL := camlidldll 320 | endif 321 | export CAMLIDLDLL 322 | 323 | ifndef NOIDLHEADER 324 | MAYBE_IDL_HEADER := -header 325 | endif 326 | export NOIDLHEADER 327 | 328 | export NO_CUSTOM 329 | 330 | ifndef CAMLP4 331 | CAMLP4 := camlp4 332 | endif 333 | export CAMLP4 334 | 335 | ifndef REAL_OCAMLFIND 336 | ifdef PACKS 337 | ifndef CREATE_LIB 338 | ifdef THREADS 339 | PACKS += threads 340 | endif 341 | endif 342 | empty := 343 | space := $(empty) $(empty) 344 | comma := , 345 | ifdef PREDS 346 | PRE_OCAML_FIND_PREDICATES := $(subst $(space),$(comma),$(PREDS)) 347 | PRE_OCAML_FIND_PACKAGES := $(subst $(space),$(comma),$(PACKS)) 348 | OCAML_FIND_PREDICATES := -predicates $(PRE_OCAML_FIND_PREDICATES) 349 | # OCAML_DEP_PREDICATES := -syntax $(PRE_OCAML_FIND_PREDICATES) 350 | OCAML_FIND_PACKAGES := $(OCAML_FIND_PREDICATES) -package $(PRE_OCAML_FIND_PACKAGES) 351 | OCAML_DEP_PACKAGES := $(OCAML_DEP_PREDICATES) -package $(PRE_OCAML_FIND_PACKAGES) 352 | else 353 | OCAML_FIND_PACKAGES := -package $(subst $(space),$(comma),$(PACKS)) 354 | OCAML_DEP_PACKAGES := 355 | endif 356 | OCAML_FIND_LINKPKG := -linkpkg 357 | REAL_OCAMLFIND := $(OCAMLFIND) 358 | endif 359 | endif 360 | 361 | export OCAML_FIND_PACKAGES 362 | export OCAML_DEP_PACKAGES 363 | export OCAML_FIND_LINKPKG 364 | export REAL_OCAMLFIND 365 | 366 | ifndef OCAMLDOC 367 | OCAMLDOC := ocamldoc 368 | endif 369 | export OCAMLDOC 370 | 371 | ifndef LATEX 372 | LATEX := latex 373 | endif 374 | export LATEX 375 | 376 | ifndef DVIPS 377 | DVIPS := dvips 378 | endif 379 | export DVIPS 380 | 381 | ifndef PS2PDF 382 | PS2PDF := ps2pdf 383 | endif 384 | export PS2PDF 385 | 386 | ifndef OCAMLMAKEFILE 387 | OCAMLMAKEFILE := OCamlMakefile 388 | endif 389 | export OCAMLMAKEFILE 390 | 391 | ifndef OCAMLLIBPATH 392 | OCAMLLIBPATH := \ 393 | $(shell $(OCAMLFIND) ocamlc -where 2>/dev/null || echo /usr/local/lib/ocaml) 394 | endif 395 | export OCAMLLIBPATH 396 | 397 | ifndef OCAML_LIB_INSTALL 398 | OCAML_LIB_INSTALL := $(OCAMLLIBPATH)/contrib 399 | endif 400 | export OCAML_LIB_INSTALL 401 | 402 | ########################################################################### 403 | 404 | #################### change following sections only if 405 | #################### you know what you are doing! 406 | 407 | # delete target files when a build command fails 408 | .PHONY: .DELETE_ON_ERROR 409 | .DELETE_ON_ERROR: 410 | 411 | # for pedants using "--warn-undefined-variables" 412 | export MAYBE_IDL 413 | export REAL_RESULT 414 | export CAMLIDLFLAGS 415 | export THREAD_FLAG 416 | export RES_CLIB 417 | export MAKEDLL 418 | export ANNOT_FLAG 419 | export C_OXRIDL 420 | export SUBPROJS 421 | export CFLAGS_WIN32 422 | export CPPFLAGS_WIN32 423 | 424 | INCFLAGS := 425 | 426 | SHELL := /bin/sh 427 | 428 | MLDEPDIR := ._d 429 | BCDIDIR := ._bcdi 430 | NCDIDIR := ._ncdi 431 | 432 | FILTER_EXTNS := %.mli %.ml %.mll %.mly %.idl %.oxridl %.c %.m %.$(EXT_CXX) %.rep %.zog %.glade 433 | 434 | FILTERED := $(filter $(FILTER_EXTNS), $(SOURCES)) 435 | SOURCE_DIRS := $(filter-out ./, $(sort $(dir $(FILTERED)))) 436 | 437 | FILTERED_REP := $(filter %.rep, $(FILTERED)) 438 | DEP_REP := $(FILTERED_REP:%.rep=$(MLDEPDIR)/%.d) 439 | AUTO_REP := $(FILTERED_REP:.rep=.ml) 440 | 441 | FILTERED_ZOG := $(filter %.zog, $(FILTERED)) 442 | DEP_ZOG := $(FILTERED_ZOG:%.zog=$(MLDEPDIR)/%.d) 443 | AUTO_ZOG := $(FILTERED_ZOG:.zog=.ml) 444 | 445 | FILTERED_GLADE := $(filter %.glade, $(FILTERED)) 446 | DEP_GLADE := $(FILTERED_GLADE:%.glade=$(MLDEPDIR)/%.d) 447 | AUTO_GLADE := $(FILTERED_GLADE:.glade=.ml) 448 | 449 | FILTERED_ML := $(filter %.ml, $(FILTERED)) 450 | DEP_ML := $(FILTERED_ML:%.ml=$(MLDEPDIR)/%.d) 451 | 452 | FILTERED_MLI := $(filter %.mli, $(FILTERED)) 453 | DEP_MLI := $(FILTERED_MLI:.mli=.di) 454 | 455 | FILTERED_MLL := $(filter %.mll, $(FILTERED)) 456 | DEP_MLL := $(FILTERED_MLL:%.mll=$(MLDEPDIR)/%.d) 457 | AUTO_MLL := $(FILTERED_MLL:.mll=.ml) 458 | 459 | FILTERED_MLY := $(filter %.mly, $(FILTERED)) 460 | DEP_MLY := $(FILTERED_MLY:%.mly=$(MLDEPDIR)/%.d) $(FILTERED_MLY:.mly=.di) 461 | AUTO_MLY := $(FILTERED_MLY:.mly=.mli) $(FILTERED_MLY:.mly=.ml) 462 | 463 | FILTERED_IDL := $(filter %.idl, $(FILTERED)) 464 | DEP_IDL := $(FILTERED_IDL:%.idl=$(MLDEPDIR)/%.d) $(FILTERED_IDL:.idl=.di) 465 | C_IDL := $(FILTERED_IDL:%.idl=%_stubs.c) 466 | ifndef NOIDLHEADER 467 | C_IDL += $(FILTERED_IDL:.idl=.h) 468 | endif 469 | OBJ_C_IDL := $(FILTERED_IDL:%.idl=%_stubs.$(EXT_OBJ)) 470 | AUTO_IDL := $(FILTERED_IDL:.idl=.mli) $(FILTERED_IDL:.idl=.ml) $(C_IDL) 471 | 472 | FILTERED_OXRIDL := $(filter %.oxridl, $(FILTERED)) 473 | DEP_OXRIDL := $(FILTERED_OXRIDL:%.oxridl=$(MLDEPDIR)/%.d) $(FILTERED_OXRIDL:.oxridl=.di) 474 | AUTO_OXRIDL := $(FILTERED_OXRIDL:.oxridl=.mli) $(FILTERED_OXRIDL:.oxridl=.ml) $(C_OXRIDL) 475 | 476 | FILTERED_C_CXX := $(filter %.c %.m %.$(EXT_CXX), $(FILTERED)) 477 | OBJ_C_CXX := $(FILTERED_C_CXX:.c=.$(EXT_OBJ)) 478 | OBJ_C_CXX := $(OBJ_C_CXX:.m=.$(EXT_OBJ)) 479 | OBJ_C_CXX := $(OBJ_C_CXX:.$(EXT_CXX)=.$(EXT_OBJ)) 480 | 481 | PRE_TARGETS += $(AUTO_MLL) $(AUTO_MLY) $(AUTO_IDL) $(AUTO_OXRIDL) $(AUTO_ZOG) $(AUTO_REP) $(AUTO_GLADE) 482 | 483 | ALL_DEPS := $(DEP_ML) $(DEP_MLI) $(DEP_MLL) $(DEP_MLY) $(DEP_IDL) $(DEP_OXRIDL) $(DEP_ZOG) $(DEP_REP) $(DEP_GLADE) 484 | 485 | MLDEPS := $(filter %.d, $(ALL_DEPS)) 486 | MLIDEPS := $(filter %.di, $(ALL_DEPS)) 487 | BCDEPIS := $(MLIDEPS:%.di=$(BCDIDIR)/%.di) 488 | NCDEPIS := $(MLIDEPS:%.di=$(NCDIDIR)/%.di) 489 | 490 | ALLML := $(filter %.mli %.ml %.mll %.mly %.idl %.oxridl %.rep %.zog %.glade, $(FILTERED)) 491 | 492 | IMPLO_INTF := $(ALLML:%.mli=%.mli.__) 493 | IMPLO_INTF := $(foreach file, $(IMPLO_INTF), \ 494 | $(basename $(file)).cmi $(basename $(file)).cmo) 495 | IMPLO_INTF := $(filter-out %.mli.cmo, $(IMPLO_INTF)) 496 | IMPLO_INTF := $(IMPLO_INTF:%.mli.cmi=%.cmi) 497 | 498 | IMPLX_INTF := $(IMPLO_INTF:.cmo=.cmx) 499 | 500 | INTF := $(filter %.cmi, $(IMPLO_INTF)) 501 | IMPL_CMO := $(filter %.cmo, $(IMPLO_INTF)) 502 | IMPL_CMX := $(IMPL_CMO:.cmo=.cmx) 503 | IMPL_ASM := $(IMPL_CMO:.cmo=.asm) 504 | IMPL_S := $(IMPL_CMO:.cmo=.s) 505 | 506 | OBJ_LINK := $(OBJ_C_IDL) $(OBJ_C_CXX) 507 | OBJ_FILES := $(IMPL_CMO:.cmo=.$(EXT_OBJ)) $(OBJ_LINK) 508 | 509 | EXECS := $(addsuffix $(EXE), \ 510 | $(sort $(TOPRESULT) $(BCRESULT) $(NCRESULT))) 511 | ifdef WIN32 512 | EXECS += $(BCRESULT).dll $(NCRESULT).dll 513 | endif 514 | 515 | CLIB_BASE := $(RESULT)$(RES_CLIB_SUF) 516 | ifneq ($(strip $(OBJ_LINK)),) 517 | RES_CLIB := lib$(CLIB_BASE).$(EXT_LIB) 518 | endif 519 | 520 | ifdef WIN32 521 | DLLSONAME := dll$(CLIB_BASE).dll 522 | else 523 | DLLSONAME := dll$(CLIB_BASE).so 524 | endif 525 | 526 | NONEXECS := $(INTF) $(IMPL_CMO) $(IMPL_CMX) $(IMPL_ASM) $(IMPL_S) \ 527 | $(OBJ_FILES) $(PRE_TARGETS) $(BCRESULT).cma $(NCRESULT).cmxa \ 528 | $(NCRESULT).$(EXT_LIB) $(BCRESULT).cmi $(BCRESULT).cmo \ 529 | $(NCRESULT).cmi $(NCRESULT).cmx $(NCRESULT).$(EXT_OBJ) \ 530 | $(RES_CLIB) $(IMPL_CMO:.cmo=.annot) \ 531 | $(LIB_PACK_NAME).cmi $(LIB_PACK_NAME).cmo $(LIB_PACK_NAME).cmx \ 532 | $(LIB_PACK_NAME).$(EXT_OBJ) 533 | 534 | ifndef STATIC 535 | NONEXECS += $(DLLSONAME) 536 | endif 537 | 538 | ifndef LIBINSTALL_FILES 539 | LIBINSTALL_FILES := $(RESULT).mli $(RESULT).cmi $(RESULT).cma \ 540 | $(RESULT).cmxa $(RESULT).$(EXT_LIB) $(RES_CLIB) 541 | ifndef STATIC 542 | ifneq ($(strip $(OBJ_LINK)),) 543 | LIBINSTALL_FILES += $(DLLSONAME) 544 | endif 545 | endif 546 | endif 547 | 548 | export LIBINSTALL_FILES 549 | 550 | ifdef WIN32 551 | # some extra stuff is created while linking DLLs 552 | NONEXECS += $(BCRESULT).$(EXT_LIB) $(BCRESULT).exp $(NCRESULT).exp $(CLIB_BASE).exp $(CLIB_BASE).lib 553 | endif 554 | 555 | TARGETS := $(EXECS) $(NONEXECS) 556 | 557 | # If there are IDL-files 558 | ifneq ($(strip $(FILTERED_IDL)),) 559 | MAYBE_IDL := -cclib -lcamlidl 560 | endif 561 | 562 | ifdef USE_CAMLP4 563 | CAMLP4PATH := \ 564 | $(shell $(CAMLP4) -where 2>/dev/null || echo /usr/local/lib/camlp4) 565 | INCFLAGS := -I $(CAMLP4PATH) 566 | CINCFLAGS := -I$(CAMLP4PATH) 567 | endif 568 | 569 | INCFLAGS := $(INCFLAGS) $(INCDIRS:%=-I %) $(SOURCE_DIRS:%=-I %) $(OCAML_DEFAULT_DIRS:%=-I %) 570 | CINCFLAGS += $(SOURCE_DIRS:%=-I%) $(INCDIRS:%=-I%) $(OCAML_DEFAULT_DIRS:%=-I%) 571 | 572 | ifndef MSVC 573 | CLIBFLAGS += $(SOURCE_DIRS:%=-L%) $(LIBDIRS:%=-L%) \ 574 | $(EXTLIBDIRS:%=-L%) $(OCAML_DEFAULT_DIRS:%=-L%) 575 | 576 | ifeq ($(ELF_RPATH), yes) 577 | CLIBFLAGS += $(EXTLIBDIRS:%=-Wl,$(RPATH_FLAG)%) 578 | endif 579 | endif 580 | 581 | ifndef PROFILING 582 | INTF_OCAMLC := $(OCAMLC) 583 | else 584 | ifndef THREADS 585 | INTF_OCAMLC := $(OCAMLCP) -p $(OCAMLCPFLAGS) 586 | else 587 | # OCaml does not support profiling byte code 588 | # with threads (yet), therefore we force an error. 589 | ifndef REAL_OCAMLC 590 | $(error Profiling of multithreaded byte code not yet supported by OCaml) 591 | endif 592 | INTF_OCAMLC := $(OCAMLC) 593 | endif 594 | endif 595 | 596 | ifndef MSVC 597 | COMMON_LDFLAGS := $(LDFLAGS:%=-ccopt %) $(SOURCE_DIRS:%=-ccopt -L%) \ 598 | $(LIBDIRS:%=-ccopt -L%) $(EXTLIBDIRS:%=-ccopt -L%) \ 599 | $(EXTLIBDIRS:%=-ccopt -Wl $(OCAML_DEFAULT_DIRS:%=-ccopt -L%)) 600 | 601 | ifeq ($(ELF_RPATH),yes) 602 | COMMON_LDFLAGS += $(EXTLIBDIRS:%=-ccopt -Wl,$(RPATH_FLAG)%) 603 | endif 604 | else 605 | COMMON_LDFLAGS := -ccopt "/link -NODEFAULTLIB:LIBC $(LDFLAGS:%=%) $(SOURCE_DIRS:%=-LIBPATH:%) \ 606 | $(LIBDIRS:%=-LIBPATH:%) $(EXTLIBDIRS:%=-LIBPATH:%) \ 607 | $(OCAML_DEFAULT_DIRS:%=-LIBPATH:%) " 608 | endif 609 | 610 | CLIBS_OPTS := $(CLIBS:%=-cclib -l%) $(CFRAMEWORKS:%=-cclib '-framework %') 611 | ifdef MSVC 612 | ifndef STATIC 613 | # MSVC libraries do not have 'lib' prefix 614 | CLIBS_OPTS := $(CLIBS:%=-cclib %.lib) 615 | endif 616 | endif 617 | 618 | ifneq ($(strip $(OBJ_LINK)),) 619 | ifdef CREATE_LIB 620 | OBJS_LIBS := -cclib -l$(CLIB_BASE) $(CLIBS_OPTS) $(MAYBE_IDL) 621 | else 622 | OBJS_LIBS := $(OBJ_LINK) $(CLIBS_OPTS) $(MAYBE_IDL) 623 | endif 624 | else 625 | OBJS_LIBS := $(CLIBS_OPTS) $(MAYBE_IDL) 626 | endif 627 | 628 | ifdef LIB_PACK_NAME 629 | FOR_PACK_NAME := $(shell echo $(LIB_PACK_NAME) | awk '{print toupper(substr($$0,1,1))substr($$0,2)}') 630 | endif 631 | 632 | # If we have to make byte-code 633 | ifndef REAL_OCAMLC 634 | BYTE_OCAML := y 635 | 636 | # EXTRADEPS is added dependencies we have to insert for all 637 | # executable files we generate. Ideally it should be all of the 638 | # libraries we use, but it's hard to find the ones that get searched on 639 | # the path since I don't know the paths built into the compiler, so 640 | # just include the ones with slashes in their names. 641 | EXTRADEPS := $(addsuffix .cma,$(foreach i,$(LIBS),$(if $(findstring /,$(i)),$(i)))) 642 | 643 | 644 | ifndef LIB_PACK_NAME 645 | SPECIAL_OCAMLFLAGS := $(OCAMLBCFLAGS) 646 | else 647 | SPECIAL_OCAMLFLAGS := -for-pack $(FOR_PACK_NAME) $(OCAMLBCFLAGS) 648 | endif 649 | 650 | REAL_OCAMLC := $(INTF_OCAMLC) 651 | 652 | REAL_IMPL := $(IMPL_CMO) 653 | REAL_IMPL_INTF := $(IMPLO_INTF) 654 | IMPL_SUF := .cmo 655 | 656 | DEPFLAGS := 657 | MAKE_DEPS := $(MLDEPS) $(BCDEPIS) 658 | 659 | ifdef CREATE_LIB 660 | override CFLAGS := $(PIC_CFLAGS) $(CFLAGS) 661 | override CPPFLAGS := $(PIC_CPPFLAGS) $(CPPFLAGS) 662 | ifndef STATIC 663 | ifneq ($(strip $(OBJ_LINK)),) 664 | MAKEDLL := $(DLLSONAME) 665 | ALL_LDFLAGS := -dllib $(DLLSONAME) 666 | endif 667 | endif 668 | endif 669 | 670 | ifndef NO_CUSTOM 671 | ifneq "$(strip $(OBJ_LINK) $(THREADS) $(MAYBE_IDL) $(CLIBS) $(CFRAMEWORKS))" "" 672 | ALL_LDFLAGS += -custom 673 | endif 674 | endif 675 | 676 | ALL_LDFLAGS += $(INCFLAGS) $(OCAMLLDFLAGS) $(OCAMLBLDFLAGS) \ 677 | $(COMMON_LDFLAGS) $(LIBS:%=%.cma) 678 | CAMLIDLDLLFLAGS := 679 | 680 | ifdef THREADS 681 | ifdef VMTHREADS 682 | THREAD_FLAG := -vmthread 683 | else 684 | THREAD_FLAG := -thread 685 | endif 686 | ALL_LDFLAGS := $(THREAD_FLAG) $(ALL_LDFLAGS) 687 | ifndef CREATE_LIB 688 | ifndef REAL_OCAMLFIND 689 | ALL_LDFLAGS := unix.cma threads.cma $(ALL_LDFLAGS) 690 | endif 691 | endif 692 | endif 693 | 694 | # we have to make native-code 695 | else 696 | EXTRADEPS := $(addsuffix .cmxa,$(foreach i,$(LIBS),$(if $(findstring /,$(i)),$(i)))) 697 | ifndef PROFILING 698 | SPECIAL_OCAMLFLAGS := $(OCAMLNCFLAGS) 699 | PLDFLAGS := 700 | else 701 | SPECIAL_OCAMLFLAGS := -p $(OCAMLNCFLAGS) 702 | PLDFLAGS := -p 703 | endif 704 | 705 | ifndef LIB_PACK_NAME 706 | SPECIAL_OCAMLFLAGS := $(OCAMLNCFLAGS) 707 | else 708 | SPECIAL_OCAMLFLAGS := -for-pack $(FOR_PACK_NAME) $(OCAMLNCFLAGS) 709 | endif 710 | REAL_IMPL := $(IMPL_CMX) 711 | REAL_IMPL_INTF := $(IMPLX_INTF) 712 | IMPL_SUF := .cmx 713 | 714 | override CPPFLAGS := -DNATIVE_CODE $(CPPFLAGS) 715 | 716 | DEPFLAGS := -native 717 | MAKE_DEPS := $(MLDEPS) $(NCDEPIS) 718 | 719 | ALL_LDFLAGS := $(PLDFLAGS) $(INCFLAGS) $(OCAMLLDFLAGS) \ 720 | $(OCAMLNLDFLAGS) $(COMMON_LDFLAGS) 721 | CAMLIDLDLLFLAGS := -opt 722 | 723 | ifndef CREATE_LIB 724 | ALL_LDFLAGS += $(LIBS:%=%.cmxa) 725 | else 726 | override CFLAGS := $(PIC_CFLAGS) $(CFLAGS) 727 | override CPPFLAGS := $(PIC_CPPFLAGS) $(CPPFLAGS) 728 | endif 729 | 730 | ifdef THREADS 731 | THREAD_FLAG := -thread 732 | ALL_LDFLAGS := $(THREAD_FLAG) $(ALL_LDFLAGS) 733 | ifndef CREATE_LIB 734 | ifndef REAL_OCAMLFIND 735 | ALL_LDFLAGS := unix.cmxa threads.cmxa $(ALL_LDFLAGS) 736 | endif 737 | endif 738 | endif 739 | endif 740 | 741 | export MAKE_DEPS 742 | 743 | ifdef ANNOTATE 744 | ANNOT_FLAG := -annot 745 | else 746 | endif 747 | 748 | ALL_OCAMLCFLAGS := $(THREAD_FLAG) $(ANNOT_FLAG) $(OCAMLFLAGS) \ 749 | $(INCFLAGS) $(SPECIAL_OCAMLFLAGS) 750 | 751 | ifdef make_deps 752 | -include $(MAKE_DEPS) 753 | PRE_TARGETS := 754 | endif 755 | 756 | ########################################################################### 757 | # USER RULES 758 | 759 | # Call "OCamlMakefile QUIET=" to get rid of all of the @'s. 760 | QUIET=@ 761 | 762 | # generates byte-code (default) 763 | byte-code: $(PRE_TARGETS) 764 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(BCRESULT) \ 765 | REAL_RESULT="$(BCRESULT)" make_deps=yes 766 | bc: byte-code 767 | 768 | byte-code-nolink: $(PRE_TARGETS) 769 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) nolink \ 770 | REAL_RESULT="$(BCRESULT)" make_deps=yes 771 | bcnl: byte-code-nolink 772 | 773 | top: $(PRE_TARGETS) 774 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(TOPRESULT) \ 775 | REAL_RESULT="$(BCRESULT)" make_deps=yes 776 | 777 | # generates native-code 778 | 779 | native-code: $(PRE_TARGETS) 780 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(NCRESULT) \ 781 | REAL_RESULT="$(NCRESULT)" \ 782 | REAL_OCAMLC="$(OCAMLOPT)" \ 783 | make_deps=yes 784 | nc: native-code 785 | 786 | native-code-nolink: $(PRE_TARGETS) 787 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) nolink \ 788 | REAL_RESULT="$(NCRESULT)" \ 789 | REAL_OCAMLC="$(OCAMLOPT)" \ 790 | make_deps=yes 791 | ncnl: native-code-nolink 792 | 793 | # generates byte-code libraries 794 | byte-code-library: $(PRE_TARGETS) 795 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \ 796 | $(RES_CLIB) $(BCRESULT).cma \ 797 | REAL_RESULT="$(BCRESULT)" \ 798 | CREATE_LIB=yes \ 799 | make_deps=yes 800 | bcl: byte-code-library 801 | 802 | # generates native-code libraries 803 | native-code-library: $(PRE_TARGETS) 804 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \ 805 | $(RES_CLIB) $(NCRESULT).cmxa \ 806 | REAL_RESULT="$(NCRESULT)" \ 807 | REAL_OCAMLC="$(OCAMLOPT)" \ 808 | CREATE_LIB=yes \ 809 | make_deps=yes 810 | ncl: native-code-library 811 | 812 | ifdef WIN32 813 | # generates byte-code dll 814 | byte-code-dll: $(PRE_TARGETS) 815 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \ 816 | $(RES_CLIB) $(BCRESULT).dll \ 817 | REAL_RESULT="$(BCRESULT)" \ 818 | make_deps=yes 819 | bcd: byte-code-dll 820 | 821 | # generates native-code dll 822 | native-code-dll: $(PRE_TARGETS) 823 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \ 824 | $(RES_CLIB) $(NCRESULT).dll \ 825 | REAL_RESULT="$(NCRESULT)" \ 826 | REAL_OCAMLC="$(OCAMLOPT)" \ 827 | make_deps=yes 828 | ncd: native-code-dll 829 | endif 830 | 831 | # generates byte-code with debugging information 832 | debug-code: $(PRE_TARGETS) 833 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(BCRESULT) \ 834 | REAL_RESULT="$(BCRESULT)" make_deps=yes \ 835 | OCAMLFLAGS="-g $(OCAMLFLAGS)" \ 836 | OCAMLLDFLAGS="-g $(OCAMLLDFLAGS)" 837 | dc: debug-code 838 | 839 | debug-code-nolink: $(PRE_TARGETS) 840 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) nolink \ 841 | REAL_RESULT="$(BCRESULT)" make_deps=yes \ 842 | OCAMLFLAGS="-g $(OCAMLFLAGS)" \ 843 | OCAMLLDFLAGS="-g $(OCAMLLDFLAGS)" 844 | dcnl: debug-code-nolink 845 | 846 | # generates byte-code with debugging information (native code) 847 | debug-native-code: $(PRE_TARGETS) 848 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(NCRESULT) \ 849 | REAL_RESULT="$(NCRESULT)" make_deps=yes \ 850 | REAL_OCAMLC="$(OCAMLOPT)" \ 851 | OCAMLFLAGS="-g $(OCAMLFLAGS)" \ 852 | OCAMLLDFLAGS="-g $(OCAMLLDFLAGS)" 853 | dnc: debug-native-code 854 | 855 | debug-native-code-nolink: $(PRE_TARGETS) 856 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) nolink \ 857 | REAL_RESULT="$(NCRESULT)" make_deps=yes \ 858 | REAL_OCAMLC="$(OCAMLOPT)" \ 859 | OCAMLFLAGS="-g $(OCAMLFLAGS)" \ 860 | OCAMLLDFLAGS="-g $(OCAMLLDFLAGS)" 861 | dncnl: debug-native-code-nolink 862 | 863 | # generates byte-code libraries with debugging information 864 | debug-code-library: $(PRE_TARGETS) 865 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \ 866 | $(RES_CLIB) $(BCRESULT).cma \ 867 | REAL_RESULT="$(BCRESULT)" make_deps=yes \ 868 | CREATE_LIB=yes \ 869 | OCAMLFLAGS="-g $(OCAMLFLAGS)" \ 870 | OCAMLLDFLAGS="-g $(OCAMLLDFLAGS)" 871 | dcl: debug-code-library 872 | 873 | # generates byte-code libraries with debugging information (native code) 874 | debug-native-code-library: $(PRE_TARGETS) 875 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \ 876 | $(RES_CLIB) $(NCRESULT).cmxa \ 877 | REAL_RESULT="$(NCRESULT)" make_deps=yes \ 878 | REAL_OCAMLC="$(OCAMLOPT)" \ 879 | CREATE_LIB=yes \ 880 | OCAMLFLAGS="-g $(OCAMLFLAGS)" \ 881 | OCAMLLDFLAGS="-g $(OCAMLLDFLAGS)" 882 | dncl: debug-native-code-library 883 | 884 | # generates byte-code for profiling 885 | profiling-byte-code: $(PRE_TARGETS) 886 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(BCRESULT) \ 887 | REAL_RESULT="$(BCRESULT)" PROFILING="y" \ 888 | make_deps=yes 889 | pbc: profiling-byte-code 890 | 891 | # generates native-code 892 | 893 | profiling-native-code: $(PRE_TARGETS) 894 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(NCRESULT) \ 895 | REAL_RESULT="$(NCRESULT)" \ 896 | REAL_OCAMLC="$(OCAMLOPT)" \ 897 | PROFILING="y" \ 898 | make_deps=yes 899 | pnc: profiling-native-code 900 | 901 | # generates byte-code libraries 902 | profiling-byte-code-library: $(PRE_TARGETS) 903 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \ 904 | $(RES_CLIB) $(BCRESULT).cma \ 905 | REAL_RESULT="$(BCRESULT)" PROFILING="y" \ 906 | CREATE_LIB=yes \ 907 | make_deps=yes 908 | pbcl: profiling-byte-code-library 909 | 910 | # generates native-code libraries 911 | profiling-native-code-library: $(PRE_TARGETS) 912 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \ 913 | $(RES_CLIB) $(NCRESULT).cmxa \ 914 | REAL_RESULT="$(NCRESULT)" PROFILING="y" \ 915 | REAL_OCAMLC="$(OCAMLOPT)" \ 916 | CREATE_LIB=yes \ 917 | make_deps=yes 918 | pncl: profiling-native-code-library 919 | 920 | # packs byte-code objects 921 | pack-byte-code: $(PRE_TARGETS) 922 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) $(BCRESULT).cmo \ 923 | REAL_RESULT="$(BCRESULT)" \ 924 | PACK_LIB=yes make_deps=yes 925 | pabc: pack-byte-code 926 | 927 | # packs native-code objects 928 | pack-native-code: $(PRE_TARGETS) 929 | $(QUIET)$(MAKE) -r -f $(OCAMLMAKEFILE) \ 930 | $(NCRESULT).cmx $(NCRESULT).$(EXT_OBJ) \ 931 | REAL_RESULT="$(NCRESULT)" \ 932 | REAL_OCAMLC="$(OCAMLOPT)" \ 933 | PACK_LIB=yes make_deps=yes 934 | panc: pack-native-code 935 | 936 | # generates HTML-documentation 937 | htdoc: $(DOC_DIR)/$(RESULT)/html/index.html 938 | 939 | # generates Latex-documentation 940 | ladoc: $(DOC_DIR)/$(RESULT)/latex/doc.tex 941 | 942 | # generates PostScript-documentation 943 | psdoc: $(DOC_DIR)/$(RESULT)/latex/doc.ps 944 | 945 | # generates PDF-documentation 946 | pdfdoc: $(DOC_DIR)/$(RESULT)/latex/doc.pdf 947 | 948 | # generates all supported forms of documentation 949 | doc: htdoc ladoc psdoc pdfdoc 950 | 951 | ########################################################################### 952 | # LOW LEVEL RULES 953 | 954 | $(REAL_RESULT): $(REAL_IMPL_INTF) $(OBJ_LINK) $(EXTRADEPS) $(RESULTDEPS) 955 | $(REAL_OCAMLFIND) $(REAL_OCAMLC) \ 956 | $(OCAML_FIND_PACKAGES) $(OCAML_FIND_LINKPKG) \ 957 | $(OBJS_LIBS) $(ALL_LDFLAGS) -o $@$(EXE) \ 958 | $(REAL_IMPL) 959 | 960 | nolink: $(REAL_IMPL_INTF) $(OBJ_LINK) 961 | 962 | ifdef WIN32 963 | $(REAL_RESULT).dll: $(REAL_IMPL_INTF) $(OBJ_LINK) 964 | $(CAMLIDLDLL) $(CAMLIDLDLLFLAGS) $(OBJ_LINK) $(CLIBS) \ 965 | -o $@ $(REAL_IMPL) 966 | endif 967 | 968 | %$(TOPSUFFIX): $(REAL_IMPL_INTF) $(OBJ_LINK) $(EXTRADEPS) 969 | $(REAL_OCAMLFIND) $(OCAMLMKTOP) \ 970 | $(OCAML_FIND_PACKAGES) $(OCAML_FIND_LINKPKG) \ 971 | $(OBJS_LIBS) $(ALL_LDFLAGS) -o $@$(EXE) \ 972 | $(REAL_IMPL) 973 | 974 | .SUFFIXES: .mli .ml .cmi .cmo .cmx .cma .cmxa .$(EXT_OBJ) \ 975 | .mly .di .d .$(EXT_LIB) .idl %.oxridl .c .m .$(EXT_CXX) .h .so \ 976 | .rep .zog .glade 977 | 978 | ifndef STATIC 979 | ifdef MINGW 980 | # From OCaml 3.11.0, ocamlmklib is available on windows 981 | OCAMLMLIB_EXISTS = $(shell which $(OCAMLMKLIB)) 982 | ifeq ($(strip $(OCAMLMLIB_EXISTS)),) 983 | $(DLLSONAME): $(OBJ_LINK) 984 | $(CC) $(CFLAGS) $(CFLAGS_WIN32) $(OBJ_LINK) -shared -o $@ \ 985 | $(wildcard $(foreach dir,$(LIBDIRS),$(CLIBS:%=$(dir)/lib%.a))) \ 986 | '$(OCAMLLIBPATH)/ocamlrun.a' \ 987 | -Wl,--whole-archive \ 988 | -Wl,--export-all-symbols \ 989 | -Wl,--allow-multiple-definition \ 990 | -Wl,--enable-auto-import 991 | else 992 | $(DLLSONAME): $(OBJ_LINK) 993 | $(OCAMLMKLIB) $(INCFLAGS) $(CLIBFLAGS) \ 994 | -o $(CLIB_BASE) $(OBJ_LINK) $(CLIBS:%=-l%) \ 995 | $(CFRAMEWORKS:%=-framework %) \ 996 | $(OCAMLMKLIB_FLAGS) 997 | endif 998 | else 999 | #ifdef MSVC 1000 | #$(DLLSONAME): $(OBJ_LINK) 1001 | # link /NOLOGO /DLL /OUT:$@ $(OBJ_LINK) \ 1002 | # $(wildcard $(foreach dir,$(LIBDIRS),$(CLIBS:%=$(dir)/%.lib))) \ 1003 | # '$(OCAMLLIBPATH)/ocamlrun.lib' 1004 | # 1005 | #else 1006 | $(DLLSONAME): $(OBJ_LINK) 1007 | $(OCAMLMKLIB) $(INCFLAGS) $(CLIBFLAGS) \ 1008 | -o $(CLIB_BASE) $(OBJ_LINK) $(CLIBS:%=-l%) $(CFRAMEWORKS:%=-framework %) \ 1009 | $(OCAMLMKLIB_FLAGS) 1010 | #endif 1011 | endif 1012 | endif 1013 | 1014 | ifndef LIB_PACK_NAME 1015 | $(RESULT).cma: $(REAL_IMPL_INTF) $(MAKEDLL) $(EXTRADEPS) $(RESULTDEPS) 1016 | $(REAL_OCAMLFIND) $(REAL_OCAMLC) -a $(OBJS_LIBS) $(ALL_LDFLAGS) -o $@ $(REAL_IMPL) 1017 | 1018 | $(RESULT).cmxa $(RESULT).$(EXT_LIB): $(REAL_IMPL_INTF) $(EXTRADEPS) $(RESULTDEPS) 1019 | $(REAL_OCAMLFIND) $(OCAMLOPT) -a $(OBJS_LIBS) $(ALL_LDFLAGS) -o $@ $(REAL_IMPL) 1020 | else 1021 | # Packing a bytecode library 1022 | LIB_PACK_NAME_MLI = $(wildcard $(LIB_PACK_NAME).mli) 1023 | ifeq ($(LIB_PACK_NAME_MLI),) 1024 | LIB_PACK_NAME_CMI = $(LIB_PACK_NAME).cmi 1025 | else 1026 | # $(LIB_PACK_NAME).mli exists, it likely depends on other compiled interfaces 1027 | LIB_PACK_NAME_CMI = 1028 | $(LIB_PACK_NAME).cmi: $(REAL_IMPL_INTF) 1029 | endif 1030 | ifdef BYTE_OCAML 1031 | $(LIB_PACK_NAME_CMI) $(LIB_PACK_NAME).cmo: $(REAL_IMPL_INTF) 1032 | $(REAL_OCAMLFIND) $(REAL_OCAMLC) -pack -o $(LIB_PACK_NAME).cmo $(OCAMLLDFLAGS) $(REAL_IMPL) 1033 | # Packing into a unit which can be transformed into a library 1034 | # Remember the .ml's must have been compiled with -for-pack $(LIB_PACK_NAME) 1035 | else 1036 | $(LIB_PACK_NAME_CMI) $(LIB_PACK_NAME).cmx: $(REAL_IMPL_INTF) 1037 | $(REAL_OCAMLFIND) $(OCAMLOPT) -pack -o $(LIB_PACK_NAME).cmx $(OCAMLLDFLAGS) $(REAL_IMPL) 1038 | endif 1039 | 1040 | $(RESULT).cma: $(LIB_PACK_NAME).cmi $(LIB_PACK_NAME).cmo $(MAKEDLL) $(EXTRADEPS) $(RESULTDEPS) 1041 | $(REAL_OCAMLFIND) $(REAL_OCAMLC) -a $(OBJS_LIBS) $(ALL_LDFLAGS) -o $@ $(LIB_PACK_NAME).cmo 1042 | 1043 | $(RESULT).cmxa $(RESULT).$(EXT_LIB): $(LIB_PACK_NAME).cmi $(LIB_PACK_NAME).cmx $(EXTRADEPS) $(RESULTDEPS) 1044 | $(REAL_OCAMLFIND) $(OCAMLOPT) -a $(OBJS_LIBS) $(filter-out -custom, $(ALL_LDFLAGS)) -o $@ $(LIB_PACK_NAME).cmx 1045 | endif 1046 | 1047 | $(RES_CLIB): $(OBJ_LINK) 1048 | ifndef MSVC 1049 | ifneq ($(strip $(OBJ_LINK)),) 1050 | $(AR) rcs $@ $(OBJ_LINK) 1051 | endif 1052 | else 1053 | ifneq ($(strip $(OBJ_LINK)),) 1054 | lib -nologo -debugtype:cv -out:$(RES_CLIB) $(OBJ_LINK) 1055 | endif 1056 | endif 1057 | 1058 | %.cmi: %.mli $(EXTRADEPS) 1059 | $(QUIET)pp=`sed -n -e '/^#/d' -e 's/(\*pp \([^*]*\) \*)/\1/p;q' $<`; \ 1060 | if [ -z "$$pp" ]; then \ 1061 | $(ECHO) $(REAL_OCAMLFIND) $(INTF_OCAMLC) $(OCAML_FIND_PACKAGES) \ 1062 | -c $(THREAD_FLAG) $(ANNOT_FLAG) \ 1063 | $(OCAMLFLAGS) $(INCFLAGS) $<; \ 1064 | $(REAL_OCAMLFIND) $(INTF_OCAMLC) $(OCAML_FIND_PACKAGES) \ 1065 | -c $(THREAD_FLAG) $(ANNOT_FLAG) \ 1066 | $(OCAMLFLAGS) $(INCFLAGS) $<; \ 1067 | else \ 1068 | $(ECHO) $(REAL_OCAMLFIND) $(INTF_OCAMLC) $(OCAML_FIND_PACKAGES) \ 1069 | -c -pp \"$$pp $(PPFLAGS)\" $(THREAD_FLAG) $(ANNOT_FLAG) \ 1070 | $(OCAMLFLAGS) $(INCFLAGS) $<; \ 1071 | $(REAL_OCAMLFIND) $(INTF_OCAMLC) $(OCAML_FIND_PACKAGES) \ 1072 | -c -pp "$$pp $(PPFLAGS)" $(THREAD_FLAG) $(ANNOT_FLAG) \ 1073 | $(OCAMLFLAGS) $(INCFLAGS) $<; \ 1074 | fi 1075 | 1076 | %.cmi: %$(IMPL_SUF); 1077 | 1078 | %$(IMPL_SUF) %.$(EXT_OBJ): %.ml $(EXTRADEPS) 1079 | $(QUIET)pp=`sed -n -e '/^#/d' -e 's/(\*pp \([^*]*\) \*)/\1/p;q' $<`; \ 1080 | if [ -z "$$pp" ]; then \ 1081 | $(ECHO) $(REAL_OCAMLFIND) $(REAL_OCAMLC) $(OCAML_FIND_PACKAGES) \ 1082 | -c $(ALL_OCAMLCFLAGS) $<; \ 1083 | $(REAL_OCAMLFIND) $(REAL_OCAMLC) $(OCAML_FIND_PACKAGES) \ 1084 | -c $(ALL_OCAMLCFLAGS) $<; \ 1085 | else \ 1086 | $(ECHO) $(REAL_OCAMLFIND) $(REAL_OCAMLC) $(OCAML_FIND_PACKAGES) \ 1087 | -c -pp \"$$pp $(PPFLAGS)\" $(ALL_OCAMLCFLAGS) $<; \ 1088 | $(REAL_OCAMLFIND) $(REAL_OCAMLC) $(OCAML_FIND_PACKAGES) \ 1089 | -c -pp "$$pp $(PPFLAGS)" $(ALL_OCAMLCFLAGS) $<; \ 1090 | fi 1091 | 1092 | .PRECIOUS: %.ml 1093 | %.ml: %.mll 1094 | $(OCAMLLEX) $(LFLAGS) $< 1095 | 1096 | .PRECIOUS: %.ml %.mli 1097 | %.ml %.mli: %.mly 1098 | $(OCAMLYACC) $(YFLAGS) $< 1099 | $(QUIET)pp=`sed -n -e 's/.*(\*pp \([^*]*\) \*).*/\1/p;q' $<`; \ 1100 | if [ ! -z "$$pp" ]; then \ 1101 | mv $*.ml $*.ml.temporary; \ 1102 | echo "(*pp $$pp $(PPFLAGS)*)" > $*.ml; \ 1103 | cat $*.ml.temporary >> $*.ml; \ 1104 | rm $*.ml.temporary; \ 1105 | mv $*.mli $*.mli.temporary; \ 1106 | echo "(*pp $$pp $(PPFLAGS)*)" > $*.mli; \ 1107 | cat $*.mli.temporary >> $*.mli; \ 1108 | rm $*.mli.temporary; \ 1109 | fi 1110 | 1111 | 1112 | .PRECIOUS: %.ml 1113 | %.ml: %.rep 1114 | $(CAMELEON_REPORT) $(CAMELEON_REPORT_FLAGS) -gen $< 1115 | 1116 | .PRECIOUS: %.ml 1117 | %.ml: %.zog 1118 | $(CAMELEON_ZOGGY) $(CAMELEON_ZOGGY_FLAGS) -impl $< > $@ 1119 | 1120 | .PRECIOUS: %.ml 1121 | %.ml: %.glade 1122 | $(OCAML_GLADECC) $(OCAML_GLADECC_FLAGS) $< > $@ 1123 | 1124 | .PRECIOUS: %.ml %.mli 1125 | %.ml %.mli: %.oxridl 1126 | $(OXRIDL) $< 1127 | 1128 | .PRECIOUS: %.ml %.mli %_stubs.c %.h 1129 | %.ml %.mli %_stubs.c %.h: %.idl 1130 | $(CAMLIDL) $(MAYBE_IDL_HEADER) $(IDLFLAGS) \ 1131 | $(CAMLIDLFLAGS) $< 1132 | $(QUIET)if [ $(NOIDLHEADER) ]; then touch $*.h; fi 1133 | 1134 | %.$(EXT_OBJ): %.c 1135 | $(OCAMLC) -c -ccopt "$(CFLAGS) \ 1136 | $(CPPFLAGS) $(CPPFLAGS_WIN32) \ 1137 | $(CFLAGS_WIN32) $(CINCFLAGS) $(CFLAG_O)$@ " $< 1138 | 1139 | %.$(EXT_OBJ): %.m 1140 | $(CC) -c $(CFLAGS) $(CINCFLAGS) $(CPPFLAGS) \ 1141 | -I'$(OCAMLLIBPATH)' \ 1142 | $< $(CFLAG_O)$@ 1143 | 1144 | %.$(EXT_OBJ): %.$(EXT_CXX) 1145 | $(CXX) -c $(CXXFLAGS) $(CINCFLAGS) $(CPPFLAGS) \ 1146 | -I'$(OCAMLLIBPATH)' \ 1147 | $< $(CFLAG_O)$@ 1148 | 1149 | $(MLDEPDIR)/%.d: %.ml 1150 | $(QUIET)if [ ! -d $(@D) ]; then mkdir -p $(@D); fi 1151 | $(QUIET)pp=`sed -n -e '/^#/d' -e 's/(\*pp \([^*]*\) \*)/\1/p;q' $<`; \ 1152 | if [ -z "$$pp" ]; then \ 1153 | $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDEP) $(OCAML_DEP_PACKAGES) \ 1154 | $(INCFLAGS) $< \> $@; \ 1155 | $(REAL_OCAMLFIND) $(OCAMLDEP) $(OCAML_DEP_PACKAGES) \ 1156 | $(INCFLAGS) $< > $@; \ 1157 | else \ 1158 | $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDEP) $(OCAML_DEP_PACKAGES) \ 1159 | -pp \"$$pp $(PPFLAGS)\" $(INCFLAGS) $< \> $@; \ 1160 | $(REAL_OCAMLFIND) $(OCAMLDEP) $(OCAML_DEP_PACKAGES) \ 1161 | -pp "$$pp $(PPFLAGS)" $(INCFLAGS) $< > $@; \ 1162 | fi 1163 | 1164 | $(BCDIDIR)/%.di $(NCDIDIR)/%.di: %.mli 1165 | $(QUIET)if [ ! -d $(@D) ]; then mkdir -p $(@D); fi 1166 | $(QUIET)pp=`sed -n -e '/^#/d' -e 's/(\*pp \([^*]*\) \*)/\1/p;q' $<`; \ 1167 | if [ -z "$$pp" ]; then \ 1168 | $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDEP) $(DEPFLAGS) $(INCFLAGS) $< \> $@; \ 1169 | $(REAL_OCAMLFIND) $(OCAMLDEP) $(DEPFLAGS) $(INCFLAGS) $< > $@; \ 1170 | else \ 1171 | $(ECHO) $(REAL_OCAMLFIND) $(OCAMLDEP) $(DEPFLAGS) \ 1172 | -pp \"$$pp $(PPFLAGS)\" $(INCFLAGS) $< \> $@; \ 1173 | $(REAL_OCAMLFIND) $(OCAMLDEP) $(DEPFLAGS) \ 1174 | -pp "$$pp $(PPFLAGS)" $(INCFLAGS) $< > $@; \ 1175 | fi 1176 | 1177 | $(DOC_DIR)/$(RESULT)/html: 1178 | mkdir -p $@ 1179 | 1180 | $(DOC_DIR)/$(RESULT)/html/index.html: $(DOC_DIR)/$(RESULT)/html $(DOC_FILES) 1181 | rm -rf $ 2 | 17 | 19 | 20 | 22 | image/svg+xml 23 | 25 | 26 | 28 | 29 | 31 | 33 | 35 | 37 | 38 | 39 | 40 | 42 | 62 | 70 | 78 | 84 | 89 | 94 | 99 | 104 | 111 | 118 | 125 | 132 | 139 | 146 | 153 | 160 | 167 | 174 | 181 | 188 | 195 | 202 | 209 | 216 | 223 | 230 | 237 | 244 | 251 | 258 | 265 | 273 | 281 | 289 | 297 | 306 | 314 | 321 | 328 | * 336 | N 344 | o 352 | t 360 | i 368 | c 376 | e 384 | s 392 | B 400 | u 408 | l 416 | g 424 | e 432 | * 440 | _ 448 | _ 456 | _ 464 | _ 472 | _ 480 | _ 488 | _ 496 | _ 504 | _ 512 | _ 520 | \ 528 | \ 536 | \ 544 | \ 552 | / 560 | / 568 | | 576 | _ 584 | _ 592 | _ 600 | _ 608 | _ 616 | | 624 | | 632 | _ 640 | ( 648 | ) 656 | _ 664 | _ 672 | _ 680 | | 688 | | 696 | _ 704 | | 712 | | 720 | _ 728 | _ 736 | ( 744 | _ 752 | ) 760 | _ 768 | _ 776 | _ 784 | \ 792 | \ 800 | \ 808 | \ 816 | / 824 | \ 832 | \ 840 | / 848 | / 856 | | 864 | ' 872 | _ 880 | \ 888 | \ 896 | / 904 | _ 912 | \ 920 | \ 928 | ` 936 | | 944 | _ 952 | _ 960 | | 968 | / 976 | / 984 | / 992 | _ 1000 | _ 1008 | | 1016 | | 1024 | _ 1032 | _ 1040 | | 1048 | ' 1056 | _ 1064 | \ 1072 | \ 1080 | | 1088 | | 1096 | / 1104 | _ 1112 | _ 1120 | | 1128 | \ 1136 | \ 1144 | V 1152 | V 1160 | / 1168 | | 1176 | | 1184 | | 1192 | | 1200 | ( 1208 | _ 1216 | | 1224 | | 1232 | | 1240 | _ 1248 | \ 1256 | \ 1264 | _ 1272 | _ 1280 | \ 1288 | \ 1296 | | 1304 | | 1312 | _ 1320 | | 1328 | | 1336 | | 1344 | | 1352 | | 1360 | \ 1368 | \ 1376 | _ 1384 | _ 1392 | \ 1400 | \ 1408 | \ 1416 | \ 1424 | _ 1432 | / 1440 | \ 1448 | \ 1456 | _ 1464 | / 1472 | | 1480 | _ 1488 | | 1496 | | 1504 | _ 1512 | | 1520 | \ 1528 | \ 1536 | _ 1544 | _ 1552 | , 1560 | _ 1568 | | 1576 | \ 1584 | \ 1592 | _ 1600 | _ 1608 | | 1616 | | 1624 | _ 1632 | _ 1640 | _ 1648 | / 1656 | \ 1664 | \ 1672 | _ 1680 | _ 1688 | _ 1696 | | 1704 | _ 1712 | | 1720 | | 1728 | _ 1736 | | 1744 | _ 1752 | | 1760 | / 1768 | _ 1776 | _ 1784 | _ 1792 | / 1800 | 1807 | 1814 | 1823 | 1831 | 1839 | 1848 | 1849 | --------------------------------------------------------------------------------