A large commit.
[pdp8.git] / sw / src / pascal / DRACHE.PS
diff --git a/sw/src/pascal/DRACHE.PS b/sw/src/pascal/DRACHE.PS
new file mode 100644 (file)
index 0000000..7c9193d
--- /dev/null
@@ -0,0 +1,63 @@
+PROGRAM PLOTDRACHENKURVE(INPUT,OUTPUT);
+
+  VAR   N,R: INTEGER;
+
+  PROCEDURE ANFANG;
+    BEGIN
+        WRITELN("H800@1700AKI");
+        R := N MOD 8
+    END (* ANFANG *);
+
+  PROCEDURE BOGEN(I: INTEGER);
+    BEGIN IF I=1 THEN
+        BEGIN
+            CASE R OF
+                0: WRITELN("3@AJ7@3AJ4@4AJ3@7AJ@3AJ");
+                1: WRITELN("2@2QJ7@3QJ6@AJ7@3AJ2@2AJ");
+                2: WRITELN("@3QJ3@7QJ4@4QJ7@3QJ3@AJ");
+                3: WRITELN("2P2QJ3P7QJ@6QJ3@7QJ2@2QJ");
+                4: WRITELN("3PAJ7P3QJ4P4QJ3P7QJ@3QJ");
+                5: WRITELN("2P2AJ7P3AJ6PAJ7P3QJ2P2QJ");
+                6: WRITELN("@3AJ3P7AJ4P4AJ7P3AJ3PAJ");
+                7: WRITELN("2@2AJ3@7AJ@6AJ3P7AJ2P2AJ")
+            END;
+            R := (R - 2) MOD 8
+        END ELSE
+        BEGIN
+            CASE R OF
+                0: WRITELN("3@AJ7@3QJ4@4QJ3@7QJ@3QJ");
+                1: WRITELN("2@2QJ3@7QJ@6QJ3P7QJ2P2QJ");
+                2: WRITELN("@3QJ3P7QJ4P4QJ7P3QJ3PAJ");
+                3: WRITELN("2P2QJ7P3QJ6PAJ7P3AJ2P2AJ");
+                4: WRITELN("3PAJ7P3AJ4P4AJ3P7AJ@3AJ");
+                5: WRITELN("2P2AJ3P7AJ@6AJ3@7AJ2@2AJ");
+                6: WRITELN("@3AJ3@7AJ4@4AJ7@3AJ3@AJ");
+                7: WRITELN("2@2AJ7@3AJ6@AJ7@3QJ2@2QJ")
+            END;
+            R := (R + 2) MOD 8
+        END
+    END (* BOGEN *);
+
+  PROCEDURE SCHLUSS;
+        BEGIN WRITELN("H3200@AK", " ":384) END;
+
+
+  PROCEDURE DRACHE(N,I: INTEGER);
+    BEGIN
+        IF N>0 THEN
+            BEGIN
+                DRACHE(N-1,1);
+                BOGEN(I);
+                DRACHE(N-1,0)
+            END
+    END (* DRACHE *);
+
+
+BEGIN
+    WHILE NOT EOF DO
+        BEGIN READ(N);
+            ANFANG;
+            DRACHE(N,1);
+            SCHLUSS
+        END
+END.