about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorKartik K. Agaram <vc@akkartik.com>2021-08-29 09:32:40 -0700
committerKartik K. Agaram <vc@akkartik.com>2021-08-29 11:21:09 -0700
commit899cdcc3f3da2be04801ab79b53ec2264e8b1e4c (patch)
treebef3db0e929e0674ff088cfac228f52e640d658f
parentc5f8415e0327124a7a9fed12b524390ddf417f83 (diff)
downloadmu-899cdcc3f3da2be04801ab79b53ec2264e8b1e4c.tar.gz
inline SubX translation
We can't really translate purely SubX code anyway at the top-level. Stop
exposing those scripts.
-rwxr-xr-xtranslate51
-rwxr-xr-xtranslate_emulated51
-rwxr-xr-xtranslate_subx62
-rwxr-xr-xtranslate_subx_emulated66
4 files changed, 98 insertions, 132 deletions
diff --git a/translate b/translate
index c5b889d0..22b299bd 100755
--- a/translate
+++ b/translate
@@ -3,6 +3,53 @@
 
 set -e
 
-cat $* [0-9]*.mu    |linux/mu    > a.subx
+cat $* [0-9]*.mu                                          |linux/mu                         > a.subx
 
-./translate_subx boot.subx font.subx mu-init.subx [0-9]*.subx a.subx
+cat boot.subx font.subx mu-init.subx [0-9]*.subx a.subx   |linux/braces                     > a.braces
+
+cat a.braces                                              |linux/calls                      > a.calls
+
+cat a.calls                                               |linux/sigils                     > a.sigils
+
+cat a.sigils                                              |linux/tests                      > a.tests
+
+# no assort since baremetal SubX doesn't have segments yet
+
+cat a.tests                                               |linux/dquotes                    > a.dquotes
+
+cat a.dquotes                                             |linux/pack                       > a.pack
+
+cat a.pack                                                |linux/survey_baremetal > labels
+cat a.pack                                                |linux/labels_baremetal   labels  > a.survey
+
+cat a.survey                                              |linux/hex                        > a.bin
+
+# Create code.img containing a.bin
+dd if=/dev/zero of=code.img count=20160  # 20*16*63 512-byte sectors = almost 10MB
+dd if=a.bin of=code.img conv=notrunc
+
+if [ `stat --printf="%s" a.bin` -ge 492544 ]  # 15 tracks * 63 sectors per track * 512 bytes per sector (keep this sync'd with boot.subx)
+then
+  echo "a.bin won't all be loaded on boot"
+  exit 1
+fi
+
+if [ `stat --printf="%s" a.bin` -ge 492544 ]  # 15 tracks * 63 sectors per track * 512 bytes per sector
+then
+  echo "a.bin will overwrite BIOS/Video memory; you'll need to adjust boot.subx to load code to some other non-contiguous area of memory"
+  exit 1
+fi
+
+# Latter half of disk is for debug info.
+dd if=labels of=code.img seek=10080 conv=notrunc  # keep this sync'd with abort.subx
+if [ `stat --printf="%s" labels` -ge 1048576 ]  # 8 reads * 256 sectors * 512 bytes per sector
+then
+  echo "labels won't all be loaded on abort"
+  exit 1
+fi
+
+if [ `wc -l < labels` -gt 20480 ]  # 0x5000 stream capacity in abort.subx
+then
+  echo "abort will go into infinite regress"
+  exit 1
+fi
diff --git a/translate_emulated b/translate_emulated
index cfc1ee56..1093c3ba 100755
--- a/translate_emulated
+++ b/translate_emulated
@@ -7,6 +7,53 @@
 set -e
 set -v
 
-cat $* [0-9]*.mu  |linux/bootstrap/bootstrap run linux/mu                 > a.subx
+cat $* [0-9]*.mu                                          |linux/bootstrap/bootstrap run linux/mu                         > a.subx
 
-./translate_subx_emulated boot.subx font.subx mu-init.subx [0-9]*.subx a.subx
+cat boot.subx font.subx mu-init.subx [0-9]*.subx a.subx   |linux/bootstrap/bootstrap run linux/braces                     > a.braces
+
+cat a.braces                                              |linux/bootstrap/bootstrap run linux/calls                      > a.calls
+
+cat a.calls                                               |linux/bootstrap/bootstrap run linux/sigils                     > a.sigils
+
+cat a.sigils                                              |linux/bootstrap/bootstrap run linux/tests                      > a.tests
+
+# no assort since baremetal SubX doesn't have segments yet
+
+cat a.tests                                               |linux/bootstrap/bootstrap run linux/dquotes                    > a.dquotes
+
+cat a.dquotes                                             |linux/bootstrap/bootstrap run linux/pack                       > a.pack
+
+cat a.pack                                                |linux/bootstrap/bootstrap run linux/survey_baremetal > labels
+cat a.pack                                                |linux/bootstrap/bootstrap run linux/labels_baremetal   labels  > a.survey
+
+cat a.survey                                              |linux/bootstrap/bootstrap run linux/hex                        > a.bin
+
+# Create code.img containing a.bin
+dd if=/dev/zero of=code.img count=20160  # 20*16*63 512-byte sectors = almost 10MB
+dd if=a.bin of=code.img conv=notrunc
+
+if [ `stat --printf="%s" a.bin` -ge 492544 ]  # 15 tracks * 63 sectors per track * 512 bytes per sector (keep this sync'd with boot.subx)
+then
+  echo "a.bin won't all be loaded on boot"
+  exit 1
+fi
+
+if [ `stat --printf="%s" a.bin` -ge 492544 ]  # 15 tracks * 63 sectors per track * 512 bytes per sector
+then
+  echo "a.bin will overwrite BIOS/Video memory; you'll need to adjust boot.subx to load code to some other non-contiguous area of memory"
+  exit 1
+fi
+
+# Latter half of disk is for debug info.
+dd if=labels of=code.img seek=10080 conv=notrunc  # keep this sync'd with abort.subx
+if [ `stat --printf="%s" labels` -ge 1048576 ]  # 8 reads * 256 sectors * 512 bytes per sector
+then
+  echo "labels won't all be loaded on abort"
+  exit 1
+fi
+
+if [ `wc -l < labels` -gt 20480 ]  # 0x5000 stream capacity in abort.subx
+then
+  echo "abort will go into infinite regress"
+  exit 1
+fi
diff --git a/translate_subx b/translate_subx
deleted file mode 100755
index 6a902a42..00000000
--- a/translate_subx
+++ /dev/null
@@ -1,62 +0,0 @@
-#!/bin/sh
-# Translate SubX files to a bootable disk image.
-#
-# A couple of gotchas:
-# * Many phases here have no error-checking. Perhaps I should use a
-#   version of translate_subx_debug for baremetal.
-# * Don't pass in numbered .subx files without translated .mu files. Our test
-#   harness is in test.mu, and only Mu programs can run tests in baremetal.
-#
-# The top level is in general not as rigorous about avoiding dependency cycles
-# as the lower-level tools in linux/
-
-set -e
-
-cat $*          |linux/braces                                   > a.braces
-
-cat a.braces    |linux/calls                                    > a.calls
-
-cat a.calls     |linux/sigils                                   > a.sigils
-
-cat a.sigils    |linux/tests                                    > a.tests
-
-# no assort since baremetal SubX doesn't have segments yet
-
-cat a.tests     |linux/dquotes                                  > a.dquotes
-
-cat a.dquotes   |linux/pack                                     > a.pack
-
-cat a.pack      |linux/survey_baremetal   > labels
-cat a.pack      |linux/labels_baremetal     labels              > a.survey
-
-cat a.survey    |linux/hex                                      > a.bin
-
-# Create code.img containing a.bin
-dd if=/dev/zero of=code.img count=20160  # 20*16*63 512-byte sectors = almost 10MB
-dd if=a.bin of=code.img conv=notrunc
-
-if [ `stat --printf="%s" a.bin` -ge 492544 ]  # 15 tracks * 63 sectors per track * 512 bytes per sector (keep this sync'd with boot.subx)
-then
-  echo "a.bin won't all be loaded on boot"
-  exit 1
-fi
-
-if [ `stat --printf="%s" a.bin` -ge 492544 ]  # 15 tracks * 63 sectors per track * 512 bytes per sector
-then
-  echo "a.bin will overwrite BIOS/Video memory; you'll need to adjust boot.subx to load code to some other non-contiguous area of memory"
-  exit 1
-fi
-
-# Latter half of disk is for debug info.
-dd if=labels of=code.img seek=10080 conv=notrunc  # keep this sync'd with abort.subx
-if [ `stat --printf="%s" labels` -ge 1048576 ]  # 8 reads * 256 sectors * 512 bytes per sector
-then
-  echo "labels won't all be loaded on abort"
-  exit 1
-fi
-
-if [ `wc -l < labels` -gt 20480 ]  # 0x5000 stream capacity in abort.subx
-then
-  echo "abort will go into infinite regress"
-  exit 1
-fi
diff --git a/translate_subx_emulated b/translate_subx_emulated
deleted file mode 100755
index 87bfbf0b..00000000
--- a/translate_subx_emulated
+++ /dev/null
@@ -1,66 +0,0 @@
-#!/bin/sh
-# Translate SubX files to a bootable disk image.
-#
-# This script uses emulation, so it does not require x86 or Linux. However it
-# is slow.
-#
-# A couple of gotchas:
-# * Many phases here have no error-checking. Perhaps I should use a
-#   version of translate_subx_debug for baremetal.
-# * Don't pass in numbered .subx files without translated .mu files. Our test
-#   harness is in test.mu, and only Mu programs can run tests in baremetal.
-#
-# The top level is in general not as rigorous about avoiding dependency cycles
-# as the lower-level tools in linux/
-
-set -e
-set -v
-
-cat $*            |linux/bootstrap/bootstrap run linux/braces                         > a.braces
-
-cat a.braces      |linux/bootstrap/bootstrap run linux/calls                          > a.calls
-
-cat a.calls       |linux/bootstrap/bootstrap run linux/sigils                         > a.sigils
-
-cat a.sigils      |linux/bootstrap/bootstrap run linux/tests                          > a.tests
-
-# no assort since baremetal SubX doesn't have segments yet
-
-cat a.tests       |linux/bootstrap/bootstrap run linux/dquotes                        > a.dquotes
-
-cat a.dquotes     |linux/bootstrap/bootstrap run linux/pack                           > a.pack
-
-cat a.pack        |linux/bootstrap/bootstrap run linux/survey_baremetal   > labels
-cat a.pack        |linux/bootstrap/bootstrap run linux/labels_baremetal     labels    > a.survey
-
-cat a.survey      |linux/bootstrap/bootstrap run linux/hex                            > a.bin
-
-# Create code.img containing a.bin
-dd if=/dev/zero of=code.img count=20160  # 20*16*63 512-byte sectors = almost 10MB
-dd if=a.bin of=code.img conv=notrunc
-
-if [ `stat --printf="%s" a.bin` -ge 492544 ]  # 15 tracks * 63 sectors per track * 512 bytes per sector (keep this sync'd with boot.subx)
-then
-  echo "a.bin won't all be loaded on boot"
-  exit 1
-fi
-
-if [ `stat --printf="%s" a.bin` -ge 492544 ]  # 15 tracks * 63 sectors per track * 512 bytes per sector
-then
-  echo "a.bin will overwrite BIOS/Video memory; you'll need to adjust boot.subx to load code to some other non-contiguous area of memory"
-  exit 1
-fi
-
-# Latter half of disk is for debug info.
-dd if=labels of=code.img seek=10080 conv=notrunc  # keep this sync'd with abort.subx
-if [ `stat --printf="%s" labels` -ge 1048576 ]  # 8 reads * 256 sectors * 512 bytes per sector
-then
-  echo "labels won't all be loaded on abort"
-  exit 1
-fi
-
-if [ `wc -l < labels` -gt 20480 ]  # 0x5000 stream capacity in abort.subx
-then
-  echo "abort will go into infinite regress"
-  exit 1
-fi