Byblos: Difference between revisions
m (use "Darwin/XNU" phrasing) |
(iconify tables; →Supported targets: fix erratum in win311 row) |
||
Line 14: | Line 14: | ||
===Platform support=== | ===Platform support=== | ||
Byblos 1 is multi-platform. While it endeavours to target all systems of relevance to Xion Megatrends, only three host platforms are supported: GNU/Linux on Intel 64, Darwin/XNU on Intel 64 and Darwin/XNU on Apple silicon. The following table gives Byblos 1's platform support matrix with respect to building and running software in the first and second tables, respectively. | Byblos 1 is multi-platform. While it endeavours to target all systems of relevance to Xion Megatrends, only three host platforms are supported: GNU/Linux on Intel 64, Darwin/XNU on Intel 64 and Darwin/XNU on Apple silicon. The following table gives Byblos 1's platform support matrix with respect to building and running software in the first and second tables, respectively. | ||
====Supported targets==== | |||
{| class="wikitable" width="900px" | |||
|- | |||
! style="text-wrap:nowrap;width:30px" | <tt>i</tt> | |||
! style="text-wrap:nowrap;width:60px" | Target | |||
! style="text-wrap:nowrap;width:150px" | Full name | |||
! style="text-wrap:nowrap;width:90px" | ISA | |||
! style="text-wrap:nowrap;width:30px" | <small>Host</small> | |||
! style="text-wrap:nowrap;width:30px" | <tt>ASM</tt> | |||
! style="text-wrap:nowrap;width:30px" | C | |||
! style="text-wrap:nowrap;width:30px" | <tt>bin</tt> | |||
! style="text-align:left" | Notes | |||
|- | |||
| style="text-align:center" | [[File:agbhb.svg|28px]] | |||
| style="text-align:center" | <tt>agbhb</tt> | |||
| style="text-align:center" | GBA homebrew | |||
| style="text-align:center" | ARMv4T | |||
| style="text-align:center" class="cell-red" | ✖ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| Scratch-building GBA ROMs. | |||
|- | |||
| style="text-align:center" | [[File:agbsp.svg|28px]] | |||
| style="text-align:center" | <tt>agbsp</tt> | |||
| style="text-align:center" | GBA sourcepage | |||
| style="text-align:center" | ARMv4T | |||
| style="text-align:center" class="cell-red" | ✖ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| Source-patching existing GBA ROMs. | |||
|- | |||
| style="text-align:center" | [[File:astar.svg|28px]] | |||
| style="text-align:center" | <tt>astar</tt> | |||
| style="text-align:center" | [[A*|Anodyne A*]] | |||
| style="text-align:center" | ''unknown'' | |||
| style="text-align:center" class="cell-red" | ✖ | |||
| style="text-align:center" class="cell-red" | ✖ | |||
| style="text-align:center" class="cell-red" | ✖ | |||
| style="text-align:center" class="cell-red" | ✖ | |||
| Too early to specify. | |||
|- | |||
| style="text-align:center" | [[File:darwin86.svg|28px]] | |||
| style="text-align:center" | <tt>darwin86</tt> | |||
| style="text-align:center" | Intel Mac | |||
| style="text-align:center" | x86-64 v1 | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-yellow" | – | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-yellow" | – | |||
| | |||
|- | |||
| style="text-align:center" | [[File:darwinm1.svg|28px]] | |||
| style="text-align:center" | <tt>darwinm1</tt> | |||
| style="text-align:center" | Apple Silicon Mac | |||
| style="text-align:center" | ARMv8 | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-yellow" | – | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-yellow" | – | |||
| Only host that can target everything. | |||
|- | |||
| style="text-align:center" | [[File:freebsd.svg|28px]] | |||
| style="text-align:center" | <tt>freebsd</tt> | |||
| style="text-align:center" | FreeBSD | |||
| style="text-align:center" | x86-64 v1 | |||
| style="text-align:center" class="cell-red" | ✖ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-yellow" | – | |||
| | |||
|- | |||
| style="text-align:center" | [[File:ibmpc.svg|28px]] | |||
| style="text-align:center" | <tt>ibmpc</tt> | |||
| style="text-align:center" | Real mode IBM-PC | |||
| style="text-align:center" | Intel i286 | |||
| style="text-align:center" class="cell-red" | ✖ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| Not specific to any DOS conventions. | |||
|- | |||
| style="text-align:center" | [[File:illumos.svg|28px]] | |||
| style="text-align:center" | <tt>illumos</tt> | |||
| style="text-align:center" | illumos/OpenIndiana | |||
| style="text-align:center" | SPARC64 V9 | |||
| style="text-align:center" class="cell-red" | ✖ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-yellow" | – | |||
| | |||
|- | |||
| style="text-align:center" | [[File:linux32.svg|28px]] | |||
| style="text-align:center" | <tt>linux32</tt> | |||
| style="text-align:center" | GNU/Linux 32-bit | |||
| style="text-align:center" | Intel i686 | |||
| style="text-align:center" class="cell-red" | ✖ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-yellow" | – | |||
| | |||
|- | |||
| style="text-align:center" | [[File:linux64.svg|28px]] | |||
| style="text-align:center" | <tt>linux64</tt> | |||
| style="text-align:center" | GNU/Linux 64-bit | |||
| style="text-align:center" | x86-64 v1 | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-yellow" | – | |||
| | |||
|- | |||
| style="text-align:center" | [[File:milotix.svg|28px]] | |||
| style="text-align:center" | <tt>milotix</tt> | |||
| style="text-align:center" | [[MILOTIX]] | |||
| style="text-align:center" | x86-64 v3 | |||
| style="text-align:center" class="cell-red" | ✖ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-yellow" | – | |||
| | |||
|- | |||
| style="text-align:center" | [[File:openbsd.svg|28px]] | |||
| style="text-align:center" | <tt>openbsd</tt> | |||
| style="text-align:center" | OpenBSD | |||
| style="text-align:center" | x86-64 v1 | |||
| style="text-align:center" class="cell-red" | ✖ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-yellow" | – | |||
| | |||
|- | |||
| style="text-align:center" | [[File:pcdos.svg|28px]] | |||
| style="text-align:center" | <tt>pcdos</tt> | |||
| style="text-align:center" | Real mode PC-DOS | |||
| style="text-align:center" | Intel i286 | |||
| style="text-align:center" class="cell-red" | ✖ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| | |||
|- | |||
| style="text-align:center" | [[File:win311.svg|28px]] | |||
| style="text-align:center" | <tt>win311</tt> | |||
| style="text-align:center" | Windows 3.11 | |||
| style="text-align:center" | Intel i286 | |||
| style="text-align:center" class="cell-red" | ✖ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| | |||
|- | |||
| style="text-align:center" | [[File:win95.svg|28px]] | |||
| style="text-align:center" | <tt>win95</tt> | |||
| style="text-align:center" | Windows 95, 98 & Me | |||
| style="text-align:center" | Intel i386 | |||
| style="text-align:center" class="cell-red" | ✖ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-yellow" | – | |||
| | |||
|- | |||
| style="text-align:center" | [[File:winnt32.svg|28px]] | |||
| style="text-align:center" | <tt>winnt32</tt> | |||
| style="text-align:center" | Windows NT 4.0 32-bit | |||
| style="text-align:center" | Intel i386 | |||
| style="text-align:center" class="cell-red" | ✖ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-yellow" | – | |||
| | |||
|- | |||
| style="text-align:center" | [[File:winnt64.svg|28px]] | |||
| style="text-align:center" | <tt>winnt64</tt> | |||
| style="text-align:center" | Windows NT 5.1 64-bit | |||
| style="text-align:center" | x86-64 v1 | |||
| style="text-align:center" class="cell-red" | ✖ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-green" | ✔ | |||
| style="text-align:center" class="cell-yellow" | – | |||
| | |||
|} | |||
====Compile time support matrix==== | ====Compile time support matrix==== | ||
Line 268: | Line 452: | ||
| DOSBox | | DOSBox | ||
| Accurate MS-DOS emulator with a focus on gaming. | | Accurate MS-DOS emulator with a focus on gaming. | ||
|} | |} | ||
Line 442: | Line 460: | ||
====Programs list==== | ====Programs list==== | ||
{| class="wikitable" width="900px" | {| class="wikitable" width="900px" | ||
|- | |- | ||
! style="text-wrap:nowrap;width: | ! style="text-wrap:nowrap;width:30px" | <tt>i</tt> | ||
! style="text-wrap:nowrap;width:30px" | | ! Utility | ||
! style="text-wrap:nowrap;width:30px" | | ! style="text-wrap:nowrap;width:30px" | <span title="agbhb">[[File:agbhb.svg|28px]]</span> | ||
! style="text-wrap:nowrap;width:30px" | | ! style="text-wrap:nowrap;width:30px" | <span title="agbsp">[[File:agbsp.svg|28px]]</span> | ||
! style="text-wrap:nowrap;width:30px" | | ! style="text-wrap:nowrap;width:30px" | <span title="astar">[[File:astar.svg|28px]]</span> | ||
! style="text-wrap:nowrap;width:30px" | | ! style="text-wrap:nowrap;width:30px" | <span title="darwin86">[[File:darwin86.svg|28px]]</span> | ||
! style="text-wrap:nowrap;width:30px" | | ! style="text-wrap:nowrap;width:30px" | <span title="darwinm1">[[File:darwinm1.svg|28px]]</span> | ||
! style="text-wrap:nowrap;width:30px" | | ! style="text-wrap:nowrap;width:30px" | <span title="freebsd">[[File:freebsd.svg|28px]]</span> | ||
! style="text-wrap:nowrap;width:30px" | | ! style="text-wrap:nowrap;width:30px" | <span title="ibmpc">[[File:ibmpc.svg|28px]]</span> | ||
! style="text-wrap:nowrap;width:30px" | | ! style="text-wrap:nowrap;width:30px" | <span title="illumos">[[File:illumos.svg|28px]]</span> | ||
! style="text-wrap:nowrap;width:30px" | | ! style="text-wrap:nowrap;width:30px" | <span title="linux32">[[File:linux32.svg|28px]]</span> | ||
! style="text-wrap:nowrap;width:30px" | | ! style="text-wrap:nowrap;width:30px" | <span title="linux64">[[File:linux64.svg|28px]]</span> | ||
! style="text-wrap:nowrap;width:30px" | | ! style="text-wrap:nowrap;width:30px" | <span title="milotix">[[File:milotix.svg|28px]]</span> | ||
! style="text-wrap:nowrap;width:30px" | | ! style="text-wrap:nowrap;width:30px" | <span title="openbsd">[[File:openbsd.svg|28px]]</span> | ||
! style="text-wrap:nowrap;width:30px" | | ! style="text-wrap:nowrap;width:30px" | <span title="pcdos">[[File:pcdos.svg|28px]]</span> | ||
! style="text-wrap:nowrap;width:30px" | | ! style="text-wrap:nowrap;width:30px" | <span title="win311">[[File:win311.svg|28px]]</span> | ||
! style="text-wrap:nowrap;width:30px" | | ! style="text-wrap:nowrap;width:30px" | <span title="win95">[[File:win95.svg|28px]]</span> | ||
! style="text-wrap:nowrap;width:30px" | | ! style="text-wrap:nowrap;width:30px" | <span title="winnt32">[[File:winnt32.svg|28px]]</span> | ||
! style="text-wrap:nowrap;width:30px" | <span title="winnt64">[[File:winnt64.svg|28px]]</span> | |||
|- | |- | ||
| style="text-align:center" | [[File:hinterlib.svg|28px]] | |||
| style="text-align:center" | [[Hinterlib]] | | style="text-align:center" | [[Hinterlib]] | ||
| style="text-align:center" class="cell-green" | ✔ | | style="text-align:center" class="cell-green" | ✔ | ||
Line 501: | Line 501: | ||
| style="text-align:center" class="cell-green" | ✔ | | style="text-align:center" class="cell-green" | ✔ | ||
| style="text-align:center" class="cell-green" | ✔ | | style="text-align:center" class="cell-green" | ✔ | ||
|- | |- | ||
| style="text-align:center" | [[File:inbound.svg|28px]] | |||
| style="text-align:center" | [[Inbound]] | | style="text-align:center" | [[Inbound]] | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
Line 521: | Line 521: | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
|- | |- | ||
| style="text-align:center" | [[File:outbound.svg|28px]] | |||
| style="text-align:center" | [[Outbound]] | | style="text-align:center" | [[Outbound]] | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
Line 541: | Line 541: | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
|- | |- | ||
| style="text-align:center" | [[File:rebound.svg|28px]] | |||
| style="text-align:center" | [[Rebound]] | | style="text-align:center" | [[Rebound]] | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
Line 561: | Line 561: | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
|- | |- | ||
| style="text-align:center" | [[File:earthbound.svg|28px]] | |||
| style="text-align:center" | [[Earthbound]] | | style="text-align:center" | [[Earthbound]] | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
Line 581: | Line 581: | ||
| style="text-align:center" class="cell-green" | ✔ | | style="text-align:center" class="cell-green" | ✔ | ||
| style="text-align:center" class="cell-green" | ✔ | | style="text-align:center" class="cell-green" | ✔ | ||
|- | |- | ||
| style="text-align:center" | [[File:forerunner.svg|28px]] | |||
| style="text-align:center" | [[Forerunner]] | | style="text-align:center" | [[Forerunner]] | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
Line 601: | Line 601: | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
|- | |- | ||
| style="text-align:center" | [[File:precursor.svg|28px]] | |||
| style="text-align:center" | [[Precursor]] | | style="text-align:center" | [[Precursor]] | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
Line 621: | Line 621: | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
|- | |- | ||
| style="text-align:center" | [[File:simbel.svg|28px]] | |||
| style="text-align:center" | [[Simbel]] | | style="text-align:center" | [[Simbel]] | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
Line 641: | Line 641: | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
|- | |- | ||
| style="text-align:center" | [[File:oracion.svg|28px]] | |||
| style="text-align:center" | [[Oración]] | | style="text-align:center" | [[Oración]] | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
Line 661: | Line 661: | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
|- | |- | ||
| style="text-align:center" | [[File:fcc.svg|28px]] | |||
| style="text-align:center" | [[Feeble C compiler|FCC]] | | style="text-align:center" | [[Feeble C compiler|FCC]] | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
Line 682: | Line 682: | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
|- | |- | ||
| style="text-align:center" | [[File:quindle.svg|28px]] | |||
| style="text-align:center" | [[Quindle]] | | style="text-align:center" | [[Quindle]] | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
Line 700: | Line 701: | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
|- | |- | ||
| style="text-align:center" | [[File:gauntlet.svg|28px]] | |||
| style="text-align:center" | [[Gauntlet]] | | style="text-align:center" | [[Gauntlet]] | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
Line 720: | Line 721: | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
|- | |- | ||
| style="text-align:center" | [[File:senusrets.svg|28px]] | |||
| style="text-align:center" | [[Senusret's browser|Senusret's]] | | style="text-align:center" | [[Senusret's browser|Senusret's]] | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
Line 740: | Line 741: | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
|- | |- | ||
| style="text-align:center" | [[File:sirius.svg|28px]] | |||
| style="text-align:center" | [[Sirius C*]] | | style="text-align:center" | [[Sirius C*]] | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
Line 760: | Line 761: | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
|- | |- | ||
| style="text-align:center" | [[File:natpython.svg|28px]] | |||
| style="text-align:center" | [[NatPython]] | | style="text-align:center" | [[NatPython]] | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
Line 780: | Line 781: | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
|- | |- | ||
| style="text-align:center" | [[File:blank.png|28px]] | |||
| style="text-align:center" | [[SablMap]] | | style="text-align:center" | [[SablMap]] | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
Line 800: | Line 801: | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
|- | |- | ||
| style="text-align:center" | [[File:blank.png|28px]] | |||
| style="text-align:center" | [[CheckASCII]] | | style="text-align:center" | [[CheckASCII]] | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
Line 820: | Line 821: | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
|- | |- | ||
| style="text-align:center" | [[File:blank.png|28px]] | |||
| style="text-align:center" | [[Checkline]] | | style="text-align:center" | [[Checkline]] | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
Line 840: | Line 841: | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
|- | |- | ||
| style="text-align:center" | [[File:blank.png|28px]] | |||
| style="text-align:center" | [[Flow72]] | | style="text-align:center" | [[Flow72]] | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
Line 860: | Line 861: | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
| style="text-align:center" class="cell-red" | ✖ | | style="text-align:center" class="cell-red" | ✖ | ||
|} | |} | ||
Revision as of 03:27, 23 June 2024
Byblos SDK | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Created by | Alexander Nicholi | ||||||||||
Initial release | unreleased | ||||||||||
Written in | ANSI C, Make, POSIX sh | ||||||||||
OSes | Darwin/XNU, GNU/Linux | ||||||||||
ISAs | Apple silicon, x86-64 | ||||||||||
Licence | ASL 1.1 |
Byblos is a software development kit developed for Sirius DOS, A* and Unix-based servers, with distinction for MILOTIX and Linux, BSD and Darwin (pan-Unix) support. It is divided into two versions: Byblos 1, a provisional SDK that uses existing compiler toolchains and host infrastructure of Unix-like operating systems, and Byblos 2, the proper SDK that provides its own C compiler, assembler, and the first C* compiler.
Byblos 1
Platform support
Byblos 1 is multi-platform. While it endeavours to target all systems of relevance to Xion Megatrends, only three host platforms are supported: GNU/Linux on Intel 64, Darwin/XNU on Intel 64 and Darwin/XNU on Apple silicon. The following table gives Byblos 1's platform support matrix with respect to building and running software in the first and second tables, respectively.
Supported targets
i | Target | Full name | ISA | Host | ASM | C | bin | Notes |
---|---|---|---|---|---|---|---|---|
agbhb | GBA homebrew | ARMv4T | ✖ | ✔ | ✔ | ✔ | Scratch-building GBA ROMs. | |
agbsp | GBA sourcepage | ARMv4T | ✖ | ✔ | ✔ | ✔ | Source-patching existing GBA ROMs. | |
astar | Anodyne A* | unknown | ✖ | ✖ | ✖ | ✖ | Too early to specify. | |
darwin86 | Intel Mac | x86-64 v1 | ✔ | – | ✔ | – | ||
darwinm1 | Apple Silicon Mac | ARMv8 | ✔ | – | ✔ | – | Only host that can target everything. | |
freebsd | FreeBSD | x86-64 v1 | ✖ | ✔ | ✔ | – | ||
ibmpc | Real mode IBM-PC | Intel i286 | ✖ | ✔ | ✔ | ✔ | Not specific to any DOS conventions. | |
illumos | illumos/OpenIndiana | SPARC64 V9 | ✖ | ✔ | ✔ | – | ||
linux32 | GNU/Linux 32-bit | Intel i686 | ✖ | ✔ | ✔ | – | ||
linux64 | GNU/Linux 64-bit | x86-64 v1 | ✔ | ✔ | ✔ | – | ||
milotix | MILOTIX | x86-64 v3 | ✖ | ✔ | ✔ | – | ||
openbsd | OpenBSD | x86-64 v1 | ✖ | ✔ | ✔ | – | ||
pcdos | Real mode PC-DOS | Intel i286 | ✖ | ✔ | ✔ | ✔ | ||
win311 | Windows 3.11 | Intel i286 | ✖ | ✔ | ✔ | ✔ | ||
win95 | Windows 95, 98 & Me | Intel i386 | ✖ | ✔ | ✔ | – | ||
winnt32 | Windows NT 4.0 32-bit | Intel i386 | ✖ | ✔ | ✔ | – | ||
winnt64 | Windows NT 5.1 64-bit | x86-64 v1 | ✖ | ✔ | ✔ | – |
Compile time support matrix
Host | Target | |||||
---|---|---|---|---|---|---|
agbhb | agbsp | astar | darwin86 | darwinm1 | freebsd | |
linux64 | devkitARM | devkitARM | unknown | none | none | LLVM |
darwin86 | devkitARM | devkitARM | unknown | hb:LLVM | hb:LLVM | hb:LLVM |
darwinm1 | devkitARM | devkitARM | unknown | hb:LLVM | hb:LLVM | hb:LLVM |
Host | Target | |||||
ibmpc | illumos | linux32 | linux64 | milotix | openbsd | |
linux64 | djGPP | LLVM | LLVM | LLVM | unknown | LLVM |
darwin86 | djGPP | hb:LLVM | hb:LLVM | hb:LLVM | unknown | hb:LLVM |
darwinm1 | djGPP | hb:LLVM | hb:LLVM | hb:LLVM | unknown | hb:LLVM |
Host | Target | |||||
pcdos | win311 | win95 | winnt32 | winnt64 | ||
linux64 | djGPP | djGPP | MinGW | MinGW | MinGW | |
darwin86 | djGPP | djGPP | MinGW | MinGW | MinGW | |
darwinm1 | djGPP | djGPP | MinGW | MinGW | MinGW |
Runtime support matrix
Host | Target | |||||
---|---|---|---|---|---|---|
agbhb | agbsp | astar | darwin86 | darwinm1 | freebsd | |
linux64 | mGBA | mGBA | unknown | none | none | QEMU/u |
darwin86 | mGBA | mGBA | unknown | native | none | QEMU/u |
darwinm1 | mGBA | mGBA | unknown | Rosetta 2 | native | QEMU/u |
Host | Target | |||||
ibmpc | illumos | linux32 | linux64 | milotix | openbsd | |
linux64 | Bochs | QEMU/h | native-ish | native | unknown | QEMU/u |
darwin86 | Bochs | QEMU/h | QEMU/u | QEMU/u | unknown | QEMU/u |
darwinm1 | Bochs | QEMU/h | QEMU/u | QEMU/u | unknown | QEMU/u |
Host | Target | |||||
pcdos | win311 | win95 | winnt32 | winnt64 | ||
linux64 | DOSBox | DOSBox | Wine | Wine | Wine | |
darwin86 | DOSBox | DOSBox | Wine | Wine | Wine | |
darwinm1 | DOSBox | DOSBox | Wine | Wine | Wine |
Tool list
Tool name | Description |
---|---|
devkitARM | devkitPro's 32-bit ARM GCC toolchain. |
hb:LLVM | LLVM installed via Homebrew on macOS. |
LLVM | LLVM installed on a Unix-like. |
djGPP | Modified GCC for compiling 16-bit DOS programs. |
MinGW | Modified GCC for targeting Microsoft Windows. |
mGBA | Accurate GBA emulator. |
QEMU/u | QEMU virtualisation framework, in the low-friction userland virtualisation mode. |
QEMU/h | QEMU virtualisation framework, using a full-fat VM. |
Bochs | Accurate IBM-PC emulator. |
Wine | Translation layer for Windows programs to run on other operating systems. |
Rosetta 2 | Apple's transition system for running Intel Mac programs on Apple Silicon. |
DOSBox | Accurate MS-DOS emulator with a focus on gaming. |
Notes
- binpacking is a highly portable method of compiling assets statically into binaries
- For assembly, uncertainty exists about toolchain support on macOS
- For binpacking, it may eventually work but needs further research
Programs list
i | Utility | |||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Hinterlib | ✔ | ✖ | ✖ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
Inbound | ✖ | ✖ | ✖ | ✔ | ✔ | ✔ | ✖ | ✔ | ✔ | ✔ | ✔ | ✔ | ✖ | ✖ | ✖ | ✖ | ✖ | |
Outbound | ✖ | ✖ | ✖ | ✔ | ✔ | ✔ | ✖ | ✔ | ✔ | ✔ | ✔ | ✔ | ✖ | ✖ | ✖ | ✖ | ✖ | |
Rebound | ✖ | ✖ | ✖ | ✖ | ✖ | ✔ | ✖ | ✖ | ✖ | ✔ | ✔ | ✔ | ✖ | ✖ | ✖ | ✖ | ✖ | |
Earthbound | ✖ | ✖ | ✖ | ✔ | ✔ | ✔ | ✖ | ✔ | ✔ | ✔ | ✔ | ✔ | ✖ | ✔ | ✔ | ✔ | ✔ | |
Forerunner | ✖ | ✖ | ✖ | ✖ | ✖ | ✔ | ✖ | ✖ | ✖ | ✔ | ✔ | ✔ | ✖ | ✖ | ✖ | ✖ | ✖ | |
Precursor | ✖ | ✖ | ✖ | ✔ | ✔ | ✔ | ✖ | ✔ | ✔ | ✔ | ✔ | ✔ | ✖ | ✖ | ✖ | ✖ | ✖ | |
Simbel | ✖ | ✖ | ✖ | ✔ | ✔ | ✔ | ✖ | ✔ | ✔ | ✔ | ✔ | ✔ | ✖ | ✖ | ✖ | ✖ | ✖ | |
Oración | ✖ | ✖ | ✖ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✖ | ✖ | ✖ | |
FCC | ✖ | ✖ | ✖ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✖ | ✖ | ✖ | |
Quindle | ✖ | ✖ | ✔ | ✖ | ✖ | ✖ | ✔ | ✖ | ✖ | ✖ | ✖ | ✖ | ✔ | ✖ | ✖ | ✖ | ✖ | |
Gauntlet | ✖ | ✖ | ✖ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✖ | ✖ | ✖ | ✖ | |
Senusret's | ✖ | ✖ | ✔ | ✖ | ✖ | ✖ | ✔ | ✖ | ✖ | ✖ | ✖ | ✖ | ✔ | ✖ | ✖ | ✖ | ✖ | |
Sirius C* | ✖ | ✖ | ✖ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✖ | ✖ | ✖ | |
NatPython | ✖ | ✖ | ✖ | ✔ | ✔ | ✔ | ✖ | ✔ | ✔ | ✔ | ✔ | ✔ | ✖ | ✖ | ✖ | ✖ | ✖ | |
SablMap | ✖ | ✖ | ✖ | ✔ | ✔ | ✖ | ✖ | ✖ | ✖ | ✔ | ✖ | ✖ | ✖ | ✖ | ✖ | ✖ | ✖ | |
CheckASCII | ✖ | ✖ | ✖ | ✔ | ✔ | ✖ | ✖ | ✖ | ✖ | ✔ | ✖ | ✖ | ✖ | ✖ | ✖ | ✖ | ✖ | |
Checkline | ✖ | ✖ | ✖ | ✔ | ✔ | ✖ | ✖ | ✖ | ✖ | ✔ | ✖ | ✖ | ✖ | ✖ | ✖ | ✖ | ✖ | |
Flow72 | ✖ | ✖ | ✖ | ✔ | ✔ | ✖ | ✖ | ✖ | ✖ | ✔ | ✖ | ✖ | ✖ | ✖ | ✖ | ✖ | ✖ |
Installation
The root directory of the Byblos 1 SDK is whatever the value of the $BYBLOS
environment variable is, falling back to /opt/byblos
(the default value of $BYBLOS
). Within this directory, the following hierarchy is observed:
Path | Description | Notes |
---|---|---|
$BYBLOS/{} | Target root | Use target's ident in place of {}
|
$BYBLOS/sbin | "script" binaries | |
$BYBLOS/include | C and C* header files | |
$BYBLOS/conf | Configuration settings | |
$BYBLOS/man | Documentation files | |
$BYBLOS/system | SDK internal management data | reserved for the exclusive use of the Byblos SDK; outside applications should never assume anything about this directory's contents or even that it exists at all |
"Script" binaries are programs that are, by themselves, architecture independent, usually because they are interpreted or compiled just-in-time on loading. These are separated from native binaries which are, as files, specific to the architecture in use. Byblos does not support any architectures other than the one in use on a given system (more exactly, whichever µarch the running kernel is compiled for). For instance, if a user is running a "multilib" system such as on amd64 with i386 as lib32/
, it will only support amd64.
The Byblos 1 SDK operates on the premise that the working development directory can be anywhere, while all tools and support files are either provided within the hierarchy above, or assumed present on the system-level. System-level utilities and libraries should be provisioned using system package managers and treated in full mutual exclusion to Byblos-specific tooling; Byblos stuff is not compiled into /usr/local
, and system stuff is never compiled into $BYBLOS
. Even if one must manually compile a package from source, it should never be installed with its --sysroot
set to $BYBLOS
! (Use /usr/local
instead.)
When developing new SDK components in a source tree, they should be built and installed into $BYBLOS/local/*
for testing and personal use. Packaged SDK software downloaded or installed from elsewhere will be configured to be installed into $BYBLOS/*
, where it is versioned and stripped and so on.