summaryrefslogtreecommitdiff
path: root/warriors
diff options
context:
space:
mode:
Diffstat (limited to 'warriors')
-rw-r--r--warriors/big-nothing.red30
-rw-r--r--warriors/dwarf-replicator.red55
-rw-r--r--warriors/dwarf.red12
-rw-r--r--warriors/epson.red42
-rw-r--r--warriors/imp.red4
-rw-r--r--warriors/simple-clear.red9
-rw-r--r--warriors/splitter.red5
-rw-r--r--warriors/trap.red28
8 files changed, 113 insertions, 72 deletions
diff --git a/warriors/big-nothing.red b/warriors/big-nothing.red
index 8549f6f..a9aa6c9 100644
--- a/warriors/big-nothing.red
+++ b/warriors/big-nothing.red
@@ -1,20 +1,14 @@
-;author blah
-;name big nothing
+;author Benji Dial
+;name Big Nothing
start:
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-nop
-jmp start
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ nop
+ jmp start
diff --git a/warriors/dwarf-replicator.red b/warriors/dwarf-replicator.red
new file mode 100644
index 0000000..f301a05
--- /dev/null
+++ b/warriors/dwarf-replicator.red
@@ -0,0 +1,55 @@
+;author Benji Dial
+;name Dwarf Replicator
+
+;not a particularly good warrior, but is sufficient to test a few things
+
+start:
+ mov 0, 2908
+ nop }start, >start
+ jmp 2
+
+ dat
+
+ seq.a #end - start, start
+ jmp start
+ jmp 2
+
+ dat
+
+ sub.ab #end - start, start
+ spl @start
+ jmp 2, <start
+
+ dat
+
+dwarf:
+ mov end, end + 4
+ add.ab #4, dwarf
+ jmp 2
+
+ dat
+
+ seq.ab #start + 723 - dwarf, dwarf
+ jmp dwarf
+ jmp 2
+
+ dat
+
+core_clear:
+ mov end, end + 1
+ add.ab #1, 0-1
+ jmp 2
+
+ dat
+
+ seq.a #0-1, core_clear
+ jmp core_clear
+ jmp 2
+
+ dat
+
+ mov.ab #end + 1, core_clear
+ jmp core_clear
+ dat
+
+end:
diff --git a/warriors/dwarf.red b/warriors/dwarf.red
index 17c075c..e0e2638 100644
--- a/warriors/dwarf.red
+++ b/warriors/dwarf.red
@@ -1,10 +1,6 @@
-;author standard
-;name dwarf
+;author Standard
+;name Dwarf
-;assert (0 - bomb_step) % bomb_step == 0
-
-bomb_step equ 4
-
-mov 0-1, 3
-add.ab #bomb_step, 0-1
+mov 3, 7
+add.ab #4, 0-1
jmp 0-2
diff --git a/warriors/epson.red b/warriors/epson.red
new file mode 100644
index 0000000..b0409f0
--- /dev/null
+++ b/warriors/epson.red
@@ -0,0 +1,42 @@
+;author Benji Dial
+;name Epson
+
+period equ 10
+
+scan_init equ end - (end - scan) % period + period
+
+scan:
+ seq.i 0 - period, scan_init
+ jmp found
+
+found_ret:
+ add.ab #period, scan
+ seq.ab scan, scan
+ jmp scan
+
+ add.f scan_add, scan
+ jmn.a scan, scan
+
+clear:
+ mov end, 0 - 1
+ sub.ab #2, clear
+
+ seq.ab #end - clear - (end - clear) % 2 + 3, clear
+ jmp clear
+
+ mov.ab #0 - 1, clear
+ jmp clear
+
+scan_add:
+ dat 2, period + scan_init + 2
+
+found:
+ mov bomb, >scan
+ mov bomb + 1, @scan
+ jmp found_ret, <scan
+
+bomb:
+ spl 1
+ jmp bomb
+
+end:
diff --git a/warriors/imp.red b/warriors/imp.red
deleted file mode 100644
index 5ba74c4..0000000
--- a/warriors/imp.red
+++ /dev/null
@@ -1,4 +0,0 @@
-;author standard
-;name imp
-
-mov 0, 1
diff --git a/warriors/simple-clear.red b/warriors/simple-clear.red
deleted file mode 100644
index b40215e..0000000
--- a/warriors/simple-clear.red
+++ /dev/null
@@ -1,9 +0,0 @@
-;name simple core clear
-;author blah
-
-start:
-mov background, background + 1
-sne.ab #0-1, start
-mov.ab #background - start, start
-jmp start, >start
-background:
diff --git a/warriors/splitter.red b/warriors/splitter.red
deleted file mode 100644
index 17016c4..0000000
--- a/warriors/splitter.red
+++ /dev/null
@@ -1,5 +0,0 @@
-;author blah
-;name splitter
-
-spl 0
-jmp 0-1
diff --git a/warriors/trap.red b/warriors/trap.red
deleted file mode 100644
index 681ea6e..0000000
--- a/warriors/trap.red
+++ /dev/null
@@ -1,28 +0,0 @@
-;author benji
-;name trap
-
-org start
-
-trap:
-spl 1
-jmp trap
-
-start:
-mov.i bomb, bomb + 8
-add.ab #8, start
-sub.ab #8, bomb
-sne.ab #bomb - 8 - start, start
-jmp core_clear
-jmp start
-
-bomb:
-jmp trap - 8
-
-core_clear:
-mov background, background + 1
-add.ab #1, core_clear
-jnz.b core_clear, core_clear
-mov.ab #background + 1 - core_clear, core_clear
-jmp core_clear
-
-background: