about summary refs log blame commit diff stats
path: root/translate_subx_baremetal_emulated
blob: 881fcef1dfc7a7fa68e5c5551fbb1e1a8af3426f (plain) (tree)
1
2
3
4
5
6
7pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt
#!/bin/sh
# Translate given SubX files to 'baremetal', a raw disk image that can boot and
# run without any OS.
#
# This script uses emulation, so it does not require x86 or Linux. However it
# is slow.

set -e

./build

cat $*          |./bootstrap run apps/braces            > a.braces

cat a.braces    |./bootstrap run apps/calls             > a.calls

cat a.calls     |./bootstrap run apps/sigils            > a.sigils

cat a.sigils    |./bootstrap run apps/tests             > a.tests

# no assort since baremetal SubX doesn't have segments yet

cat a.tests     |./bootstrap run apps/dquotes           > a.dquotes

cat a.dquotes   |./bootstrap run apps/pack              > a.pack

cat a.pack      |./bootstrap run apps/survey_baremetal  > a.survey

cat a.survey    |./bootstrap run apps/hex               > a.bin

# Create disk.img containing baremetal/boot.hex and a.bin
dd if=/dev/zero of=disk.img count=20160  # 512-byte sectors, so 10MB
./bootstrap run apps/hex < baremetal/boot.hex  > boot.bin
cat boot.bin a.bin > disk.bin
dd if=disk.bin of=disk.img conv=notrunc

if [ `stat --printf="%s" disk.bin` -ge 129024 ]  # 4 tracks * 63 sectors per track * 512 bytes per sector (keep this sync'd with boot.hex)
then
  echo "disk.bin won't all be loaded on boot"
  exit 1
fi
class="p">) logger.Println("Starting up aerc") conf, err := config.LoadConfig(nil) if err != nil { panic(err) } var ( aerc *widgets.Aerc ui *libui.UI ) aerc = widgets.NewAerc(conf, logger, func(cmd string) error { cmds := getCommands(aerc.SelectedTab()) for i, set := range cmds { err := set.ExecuteCommand(aerc, cmd) if _, ok := err.(commands.NoSuchCommand); ok { if i == len(cmds) - 1 { return err } else { continue } } else if _, ok := err.(commands.ErrorExit); ok { ui.Exit = true return nil } else if err != nil { return err } else { break } } return nil }) ui, err = libui.Initialize(conf, aerc) if err != nil { panic(err) } defer ui.Close() for !ui.Exit { if !ui.Tick() { // ~60 FPS time.Sleep(16 * time.Millisecond) } } }