• Ada 83/TLALOC compiler : A modern revival of the historical MIL STD 1815A

    From ViMoBr@[email protected] to comp.lang.ada on Wed Aug 12 16:26:08 2026
    From Newsgroup: comp.lang.ada

    Ada 83/TLALOC is an open source pure Ada 83 compiler all written in Ada 83 which compiles itself.

    Both for vivid computer archaeology and modern use of the 1983 flavor Ada language, Ii is desirable to have a 'small' pure Ada 83 compiler.
    The clean front end uses well separated phases (par_phase, lib_phase, sem_phase, err_phase, expander, write_lib) which interact with a virtual paginated DIANA 86 tree.
    The expander phase produces FASMG assembly macros ".FINC" files for a LLIR stack machine directly assembled by FASMG in binary (static ELF64, no linking).

    - The first executable TLALOC/T1 has been produced with gnat on Linux Ubuntu from TLALOC sources.
    - T1 has compiled the 63 modules of TLALOC Ada 83 sources in FINC files assembled to produce T2.
    - T2 then compiled the same Ada 83 sources again and produced identical FINC files assembled in T3 auto hosted compiler.

    Though not completely Ada 83 compliant, TLALOC is nonetheless a capable compiler with a direct and auditable structure. It is a unique piece of software as there is no available open source pure Ada 83 auto hosted compiler written in Ada 83.

    It currently targets x86-64 processor and Linux OS. It is intended to run also with Linux on aarch-64 and riscv-64.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From =?UTF-8?B?Q8OzaWzDrW4=?= =?UTF-8?B?IE5pb2Nsw6Fzw61u?==?UTF-8?B?IEdsb3N0w6lpcg==?=@[email protected] to comp.lang.ada on Wed Aug 12 18:53:20 2026
    From Newsgroup: comp.lang.ada

    Congratulations!
    "Receiving objects: 100% (20662/20662), 657.14 MiB | 32.68 MiB/s, done."
    said
    git clone https://github.com/ViMoBr/Ada83_TLALOC.git
    and
    "1.3G"
    said
    du -h
    immediately afterwards (I did not run
    mkdir ./build
    etc. yet - I am too busy).
    (S. HTTP://Gloucester.Insomnia247.NL/ fuer Kontaktdaten!)
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Paul Rubin@[email protected] to comp.lang.ada on Wed Aug 12 14:16:42 2026
    From Newsgroup: comp.lang.ada

    Cóilín Nioclásín Glostéir <[email protected]> writes:
    Congratulations!
    "Receiving objects: 100% (20662/20662), 657.14 MiB | 32.68 MiB/s, done."
    said
    git clone https://github.com/ViMoBr/Ada83_TLALOC.git

    OMG, and thanks for the repo URL. Why so large? The "key components"
    table on the project page indicates indicates around 35 KLOC, not too
    bad. I might look into it sometime.
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Nicolas Paul Colin de Glocester@[email protected] to comp.lang.ada on Thu Aug 13 00:36:28 2026
    From Newsgroup: comp.lang.ada

    Paul Rubin <[email protected]d> wrote: |-----------------------------------|
    |"OMG, and thanks for the repo URL."|
    |-----------------------------------|

    You are welcome.

    |-----------------------------------|
    |"Why so large?" |
    |-----------------------------------|

    E.g. many PDF etc. files.

    du -h doc
    [. . .]
    252M doc

    E.g. many files in .git - I do not know about .git

    du -h .git
    658M .git/objects/pack
    4.0K .git/objects/info
    658M .git/objects
    4.0K .git/branches
    64K .git/hooks
    8.0K .git/refs/heads
    8.0K .git/refs/remotes/origin
    12K .git/refs/remotes
    4.0K .git/refs/tags
    28K .git/refs
    8.0K .git/logs/refs/heads
    8.0K .git/logs/refs/remotes/origin
    12K .git/logs/refs/remotes
    24K .git/logs/refs
    32K .git/logs
    8.0K .git/info
    659M .git

    ls -l -h .git/objects/pack
    total 658M
    drwxr-xr-x 2 gloucester gloucester 4.0K Aug 12 20:48 .
    drwxr-xr-x 4 gloucester gloucester 4.0K Aug 12 20:48 ..
    -r--r--r-- 1 gloucester gloucester 567K Aug 12 20:48 pack-2ff8b87b64f17e89dcce29ace4738d48c14d71b5.idx
    -r--r--r-- 1 gloucester gloucester 658M Aug 12 20:48 pack-2ff8b87b64f17e89dcce29ace4738d48c14d71b5.pack

    file .git/objects/pack/pack-2ff8b87b64f17e89dcce29ace4738d48c14d71b5.pack .git/objects/pack/pack-2ff8b87b64f17e89dcce29ace4738d48c14d71b5.pack: Git pack, version 2, 20662 objects

    du -h src
    20K src/pretty
    368K src/expander/fasmg
    1004K src/expander
    8.0K src/ada_cli
    60K src/communs
    72K src/par_phase
    16M src/tools/Archivage_Encode/TLALOC_grid
    18M src/tools/Archivage_Encode
    1.5M src/tools/Archivage_Bloquage/TLALOC_blocs_tech_doc
    1.8M src/tools/Archivage_Bloquage/PDF_SRC/src/pretty
    7.2M src/tools/Archivage_Bloquage/PDF_SRC/src/expander/fasmg
    28M src/tools/Archivage_Bloquage/PDF_SRC/src/expander
    7.1M src/tools/Archivage_Bloquage/PDF_SRC/src/communs
    4.8M src/tools/Archivage_Bloquage/PDF_SRC/src/par_phase
    3.1M src/tools/Archivage_Bloquage/PDF_SRC/src/tools/Archivage_Bloquage
    4.3M src/tools/Archivage_Bloquage/PDF_SRC/src/tools
    95M src/tools/Archivage_Bloquage/PDF_SRC/src/sem_phase
    9.1M src/tools/Archivage_Bloquage/PDF_SRC/src/ada_comp
    14M src/tools/Archivage_Bloquage/PDF_SRC/src/lalr_tools
    6.6M src/tools/Archivage_Bloquage/PDF_SRC/src/idl_tools
    169M src/tools/Archivage_Bloquage/PDF_SRC/src
    212K src/tools/Archivage_Bloquage/PDF_SRC/bin/ADA__LIB
    2.2M src/tools/Archivage_Bloquage/PDF_SRC/bin/idl_tools
    6.7M src/tools/Archivage_Bloquage/PDF_SRC/bin
    19M src/tools/Archivage_Bloquage/PDF_SRC/idl
    195M src/tools/Archivage_Bloquage/PDF_SRC
    20K src/tools/Archivage_Bloquage/OPT_SRC/src/pretty
    84K src/tools/Archivage_Bloquage/OPT_SRC/src/expander/fasmg
    652K src/tools/Archivage_Bloquage/OPT_SRC/src/expander
    60K src/tools/Archivage_Bloquage/OPT_SRC/src/communs
    72K src/tools/Archivage_Bloquage/OPT_SRC/src/par_phase
    28K src/tools/Archivage_Bloquage/OPT_SRC/src/tools/Archivage_Bloquage
    32K src/tools/Archivage_Bloquage/OPT_SRC/src/tools
    800K src/tools/Archivage_Bloquage/OPT_SRC/src/sem_phase
    108K src/tools/Archivage_Bloquage/OPT_SRC/src/ada_comp
    152K src/tools/Archivage_Bloquage/OPT_SRC/src/lalr_tools
    92K src/tools/Archivage_Bloquage/OPT_SRC/src/idl_tools
    2.0M src/tools/Archivage_Bloquage/OPT_SRC/src
    8.0K src/tools/Archivage_Bloquage/OPT_SRC/bin/ADA__LIB
    20K src/tools/Archivage_Bloquage/OPT_SRC/bin/idl_tools
    3.1M src/tools/Archivage_Bloquage/OPT_SRC/bin
    96K src/tools/Archivage_Bloquage/OPT_SRC/idl
    5.1M src/tools/Archivage_Bloquage/OPT_SRC
    20K src/tools/Archivage_Bloquage/BLK_SRC/src/pretty
    64K src/tools/Archivage_Bloquage/BLK_SRC/src/expander/fasmg
    260K src/tools/Archivage_Bloquage/BLK_SRC/src/expander
    68K src/tools/Archivage_Bloquage/BLK_SRC/src/communs
    72K src/tools/Archivage_Bloquage/BLK_SRC/src/par_phase
    32K src/tools/Archivage_Bloquage/BLK_SRC/src/tools/Archivage_Bloquage
    36K src/tools/Archivage_Bloquage/BLK_SRC/src/tools
    808K src/tools/Archivage_Bloquage/BLK_SRC/src/sem_phase
    116K src/tools/Archivage_Bloquage/BLK_SRC/src/ada_comp
    152K src/tools/Archivage_Bloquage/BLK_SRC/src/lalr_tools
    92K src/tools/Archivage_Bloquage/BLK_SRC/src/idl_tools
    1.6M src/tools/Archivage_Bloquage/BLK_SRC/src
    8.0K src/tools/Archivage_Bloquage/BLK_SRC/bin/ADA__LIB
    20K src/tools/Archivage_Bloquage/BLK_SRC/bin/idl_tools
    128K src/tools/Archivage_Bloquage/BLK_SRC/bin
    192K src/tools/Archivage_Bloquage/BLK_SRC/idl
    2.0M src/tools/Archivage_Bloquage/BLK_SRC
    203M src/tools/Archivage_Bloquage
    76M src/tools/Archivage_Decode
    297M src/tools
    836K src/sem_phase
    108K src/ada_comp
    152K src/lalr_tools
    92K src/idl_tools
    299M src

    find -name '*.adb' | wc --lines
    287

    wc --bytes `find -name '*.adb'`
    [. . .]
    4228178 total


    They want to avoid Ada 95 etc., but TLALOC would really benefit by
    offering something like Ada.Command_Line so for an early test I
    hardcoded an input parameter, but it is 1:36a.m. here so wait for me
    to sleep and awake before I shall report. Pardon !

    (S. HTTP://Gloucester.Insomnia247.NL/ fuer Kontaktdaten!)
    --- Synchronet 3.22a-Linux NewsLink 1.2
  • From Nicolas Paul Colin de Glocester@[email protected] to comp.lang.ada on Thu Aug 13 10:33:37 2026
    From Newsgroup: comp.lang.ada

    Bonjour !

    TLALOC builds much more quickly than an alternative toolchain.

    GNU time and TLALOC disagree . . .
    time ./a83.sh ./ ./dis_bonjour.adb W
    ada83 compiling ././dis_bonjour.adb ..... Ok 11 msec

    real 0m0.017s
    user 0m0.007s
    sys 0m0.009s

    HTTPS://GitHub.com/ViMoBr/Ada-83-TLALOC
    has
    "First Program Uee"
    -
    maybe you mean
    "First Program Use".

    HTTPS://GitHub.com/ViMoBr/Ada-83-TLALOC
    has
    "french"
    instead de
    "French".

    May I suggest replacing
    ") this command compile and create a .FINC macro text"
    by
    "). This command compiles and creates a .FINC macro text"
    ?

    May I suggest replacing
    "create a .fas macro header file in ADA__LIB also"
    by
    "creates a .fas macro header file in ADA__LIB also"
    ?

    ("Create" is a verb in the imperative mood whereas "creates" is a verb
    in the indicative mood.)

    ViMoBr <[email protected]d> wrote: |------------------------------------------|
    |"TLALOC is nonetheless a capable compiler"| |------------------------------------------|

    Pardon ! TLALOC is unusably buggy.

    It did succeed to build non-buggy DIS_BONJOUR and one non-buggy
    program by me, but it failed to build non-buggy minor
    variants.

    Though TLALOC is an Ada-83 compiler, I dared to attempt a non-Ada-83
    file. TLALOC showed an error message which was followed by
    " ..... Ok 3 msec".
    "Ok"
    is not the most appropriate report for an illegal code!

    unload_mdat is a non-Ada-83 program ( HTTP://Gloucester.Insomnia247.NL/FFMPEG_etc/unload_mdat/
    ) because it has
    with Ada.Command_Line;
    etc. So for TLALOC I slightly modified unload_mdat by hardcoding
    its command-line parameter (i.e. an input filename).

    This did succeed, but many later attempts to run any variant de
    unload_mdat built by TLALOC (including this formerly successful
    version) failed.

    TLALOC failed to produce
    TLALOC_DOES_NOT_CLEANLY_REBUILD.FINC
    and
    TLALOC_FAILS_TO_CLEANLY_REBUILD.FINC
    and
    SHORT.FINC
    de
    TLALOC_does_not_cleanly_rebuild.Ada
    and
    TLALOC_fails_to_cleanly_rebuild.adb
    and
    short.adb
    which are almost identical to the file by me that it did correctly
    build.

    E.g.

    ./a83.sh ./ ./short.adb W
    ada83 compiling ././short.adb ..... Ok 22 msec

    ./a83.sh ./ ./short.adb B
    TLALOC/Ada 83 - ./ADA__LIB/SHORT.fas created

    cd ./ADA__LIB

    ./fasmg ./SHORT.fas ./SHORT
    flat assembler version g.kd3c
    spec 0x00000000004000DB
    spec 0x00000000004000DB
    spec 0x00000000004007F4
    var elab NUL 0x00000000004007F4
    disp 0x00000000000000A0
    var elab SOH 0x0000000000400817
    disp 0x00000000000000A1
    var elab STX 0x000000000040083A
    disp 0x00000000000000A2
    var elab ETX 0x000000000040085D
    disp 0x00000000000000A3
    var elab EOT 0x0000000000400880
    disp 0x00000000000000A4
    var elab ENQ 0x00000000004008A3
    disp 0x00000000000000A5
    var elab ACK 0x00000000004008C6
    disp 0x00000000000000A6
    var elab BEL 0x00000000004008E9
    disp 0x00000000000000A7
    var elab BS 0x000000000040090C
    disp 0x00000000000000A8
    var elab HT 0x000000000040092F
    disp 0x00000000000000A9
    var elab LF 0x0000000000400952
    disp 0x00000000000000AA
    var elab VT 0x0000000000400975
    disp 0x00000000000000AB
    var elab FF 0x0000000000400998
    disp 0x00000000000000AC
    var elab CR 0x00000000004009BB
    disp 0x00000000000000AD
    var elab SO 0x00000000004009DE
    disp 0x00000000000000AE
    var elab SI 0x0000000000400A01
    disp 0x00000000000000AF
    var elab DLE 0x0000000000400A24
    disp 0x00000000000000B0
    var elab DC1 0x0000000000400A47
    disp 0x00000000000000B1
    var elab DC2 0x0000000000400A6A
    disp 0x00000000000000B2
    var elab DC3 0x0000000000400A8D
    disp 0x00000000000000B3
    var elab DC4 0x0000000000400AB0
    disp 0x00000000000000B4
    var elab NAK 0x0000000000400AD3
    disp 0x00000000000000B5
    var elab SYN 0x0000000000400AF6
    disp 0x00000000000000B6
    var elab ETB 0x0000000000400B19
    disp 0x00000000000000B7
    var elab CAN 0x0000000000400B3C
    disp 0x00000000000000B8
    var elab EM 0x0000000000400B5F
    disp 0x00000000000000B9
    var elab SUB 0x0000000000400B82
    disp 0x00000000000000BA
    var elab ESC 0x0000000000400BA5
    disp 0x00000000000000BB
    var elab FS 0x0000000000400BC8
    disp 0x00000000000000BC
    var elab GS 0x0000000000400BEB
    disp 0x00000000000000BD
    var elab RS 0x0000000000400C0E
    disp 0x00000000000000BE
    var elab US 0x0000000000400C31
    disp 0x00000000000000BF
    var elab DEL 0x0000000000400C54
    disp 0x00000000000000C0
    var elab EXCLAM 0x0000000000400C77
    disp 0x00000000000000C1
    var elab SHARP 0x0000000000400C9A
    disp 0x00000000000000C2
    var elab PERCENT 0x0000000000400CBD
    disp 0x00000000000000C3
    var elab COLON 0x0000000000400CE0
    disp 0x00000000000000C4
    var elab QUERY 0x0000000000400D03
    disp 0x00000000000000C5
    var elab L_BRACKET 0x0000000000400D26
    disp 0x00000000000000C6
    var elab R_BRACKET 0x0000000000400D49
    disp 0x00000000000000C7
    var elab UNDERLINE 0x0000000000400D6C
    disp 0x00000000000000C8
    var elab L_BRACE 0x0000000000400D8F
    disp 0x00000000000000C9
    var elab R_BRACE 0x0000000000400DB2
    disp 0x00000000000000CA
    var elab QUOTATION 0x0000000000400DD5
    disp 0x00000000000000CB
    var elab DOLLAR 0x0000000000400DF8
    disp 0x00000000000000CC
    var elab AMPERSAND 0x0000000000400E1B
    disp 0x00000000000000CD
    var elab SEMICOLON 0x0000000000400E3E
    disp 0x00000000000000CE
    var elab AT_SIGN 0x0000000000400E61
    disp 0x00000000000000CF
    var elab BACK_SLASH 0x0000000000400E84
    disp 0x00000000000000D0
    var elab CIRCUMFLEX 0x0000000000400EA7
    disp 0x00000000000000D1
    var elab GRAVE 0x0000000000400ECA
    disp 0x00000000000000D2
    var elab BAR 0x0000000000400EED
    disp 0x00000000000000D3
    var elab TILDE 0x0000000000400F10
    disp 0x00000000000000D4
    var elab LC_A 0x0000000000400F33
    disp 0x00000000000000D5
    var elab LC_B 0x0000000000400F56
    disp 0x00000000000000D6
    var elab LC_C 0x0000000000400F79
    disp 0x00000000000000D7
    var elab LC_D 0x0000000000400F9C
    disp 0x00000000000000D8
    var elab LC_E 0x0000000000400FBF
    disp 0x00000000000000D9
    var elab LC_F 0x0000000000400FE2
    disp 0x00000000000000DA
    var elab LC_G 0x0000000000401005
    disp 0x00000000000000DB
    var elab LC_H 0x0000000000401028
    disp 0x00000000000000DC
    var elab LC_I 0x000000000040104B
    disp 0x00000000000000DD
    var elab LC_J 0x000000000040106E
    disp 0x00000000000000DE
    var elab LC_K 0x0000000000401091
    disp 0x00000000000000DF
    var elab LC_L 0x00000000004010B4
    disp 0x00000000000000E0
    var elab LC_M 0x00000000004010D7
    disp 0x00000000000000E1
    var elab LC_N 0x00000000004010FA
    disp 0x00000000000000E2
    var elab LC_O 0x000000000040111D
    disp 0x00000000000000E3
    var elab LC_P 0x0000000000401140
    disp 0x00000000000000E4
    var elab LC_Q 0x0000000000401163
    disp 0x00000000000000E5
    var elab LC_R 0x0000000000401186
    disp 0x00000000000000E6
    var elab LC_S 0x00000000004011A9
    disp 0x00000000000000E7
    var elab LC_T 0x00000000004011CC
    disp 0x00000000000000E8
    var elab LC_U 0x00000000004011EF
    disp 0x00000000000000E9
    var elab LC_V 0x0000000000401212
    disp 0x00000000000000EA
    var elab LC_W 0x0000000000401235
    disp 0x00000000000000EB
    var elab LC_X 0x0000000000401258
    disp 0x00000000000000EC
    var elab LC_Y 0x000000000040127B
    disp 0x00000000000000ED
    var elab LC_Z 0x000000000040129E
    disp 0x00000000000000EE
    var elab EXCEPTIONS_TOP_CTX 0x000000000040185C
    disp 0x00000000000001F0
    var elab EXCEPTIONS_CURRENT 0x000000000040185C
    disp 0x00000000000001F8
    var elab EXC_CTX0 0x0000000000401AB9
    disp 0x0000000000000268

    ./SHORT.fas [14]:
    include 'SHORT.FINC'
    Processed: include 'SHORT.FINC'
    Error: source file 'SHORT.FINC' not found.



    rm restricted_version_of_unload_mdat_by_TLALOC UNLOAD_MDAT.fas UNLOAD_MDAT.DCL UNLOAD_MDAT.FINC
    is not sufficient to rebuild cleanly.

    A version having this statement -
    Octet_Io.Open(File => Input, Mode => Octet_Io.In_file, Name => "2025-09-14k_Gearan_i_gcoinne_Garda_MH254__2025_09_14_18_47_53.m4a");
    - crashed:
    EXCEPTION NON RATTRAPEE : NAME_ERROR

    Instead, a different version demanding a different name had not
    originally crashed via the same failure manner -
    Octet_Io.Open(File => Input, Mode => Octet_Io.In_file, Name => "2025-10-23d_agallamh_le_Fiosru__2025_10_23_09_44_53.m4a");
    but a later attempt to run an originally running executable has crashed!

    I modified unload_mdat.adb to demand
    Octet_Io.Open(File => Input, Mode => Octet_Io.In_file, Name => "Gearan_i_gcoinne_Garda_MH254.m4a");
    but it also suffered
    EXCEPTION NON RATTRAPEE : NAME_ERROR

    TLALOC built an executable which is orders of magnitude slower than
    fast executables which are built by a different Ada compiler.

    E.g. a version de unload_mdat processing a 241M input file ( HTTP://Gloucester.Insomnia247.NL/gardai/Where_are_you_from/2025-10-23d_agallamh_le_Fiosru__2025_10_23_09_44_53.m4a
    ) consumed much memory and time (e.g. top reported
    PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1451230 glouces+ 20 0 16.1g 5.6g 32 R 100.0 4.5 14:48.36
    ) before becoming killed at under 32% de would-be completion.

    date ; time ./restricted_version_of_unload_mdat_by_TLALOC ; date
    Thu Aug 13 01:40:24 AM CEST 2026
    unload_mdat by Nicholas Collin Paul de Gloucester copies a (probably
    defective) MPEG-4 audio file's contents excluding its (unneeded,
    probably defective) mdat header to raw.m4a. This is useful e.g. [. . .]
    Example usage:
    unload_mdat input.M4A
    faad -a newname.m4a raw.m4a
    ffmpeg -i newname.m4a -c:a aac Playable_audio_MPEG-4_final_output.M4A
    Killed

    real 15m46.070s
    user 0m48.488s
    sys 14m55.718s
    Thu Aug 13 01:56:10 AM CEST 2026

    Sincères salutations.



    Nicolas Paul Colin de Glocester
    (S. HTTP://Gloucester.Insomnia247.NL/ fuer Kontaktdaten!)
    --- Synchronet 3.22a-Linux NewsLink 1.2