]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/cpu/8080/test/test.factor
use radix literals
[factor.git] / extra / cpu / 8080 / test / test.factor
old mode 100755 (executable)
new mode 100644 (file)
index f88db29..a7b1624
@@ -1,22 +1,41 @@
-USING: kernel cpu.8080 cpu.8080.emulator math math io\r
-tools.time combinators sequences io.files io.encodings.ascii ;\r
+USING: \r
+    accessors\r
+    combinators\r
+    cpu.8080\r
+    cpu.8080.emulator\r
+    io\r
+    io.files\r
+    io.encodings.ascii\r
+    kernel \r
+    math\r
+    math.bits\r
+    sequences\r
+    tools.time\r
+;\r
 IN: cpu.8080.test\r
 \r
 : step ( cpu -- )\r
   #! Run a single 8080 instruction\r
   [ read-instruction ] keep ! n cpu\r
   over get-cycles over inc-cycles\r
-  [ swap instructions case ] keep\r
-  [ cpu-pc HEX: FFFF bitand ] keep \r
-  [ set-cpu-pc ] keep \r
+  [ swap instructions nth call( cpu -- ) ] keep\r
+  [ pc>> 0xFFFF bitand ] keep \r
+  [ pc<< ] keep \r
   process-interrupts ;\r
 \r
-\r
 : test-step ( cpu -- cpu )\r
   [ step ] keep dup cpu. ;\r
 \r
+: invaders ( -- seq )\r
+  {\r
+    { 0x0000 "invaders/invaders.h" }\r
+    { 0x0800 "invaders/invaders.g" }\r
+    { 0x1000 "invaders/invaders.f" }\r
+    { 0x1800 "invaders/invaders.e" }\r
+  } ;\r
+\r
 : test-cpu ( -- cpu )\r
-  <cpu> "invaders.rom" over load-rom dup cpu. ;\r
+  <cpu> invaders over load-rom* dup cpu. ;\r
 \r
 : test-n ( n -- )\r
   test-cpu swap [ test-step ] times drop ;\r
@@ -25,7 +44,7 @@ IN: cpu.8080.test
   [ dup step ] times ;\r
 \r
 : each-8bit ( n quot -- )\r
-  8 -rot [ >r bit? r> call ] 2curry each ; inline\r
+  [ 8 <bits> ] dip each ; inline\r
 \r
 : >ppm ( cpu filename -- cpu )\r
   #! Dump the current screen image to a ppm image file with the given name.\r
@@ -35,9 +54,9 @@ IN: cpu.8080.test
     "1" print\r
     224 [\r
       32 [\r
-        over 32 * over +  HEX: 2400 + ! cpu h w addr\r
-        >r pick r> swap cpu-ram nth [\r
-          0 = [\r
+        over 32 * over +  0x2400 + ! cpu h w addr\r
+        [ pick ] dip swap ram>> nth [\r
+          [\r
             " 0 0 0" write\r
           ] [\r
             " 1 1 1" write\r