So we got Bliss on VMS.
And we got Bliss for older DEC OS.
Are there any Bliss available for various Unix, Linux, Windows etc.?
Oracle supposedly did Bliss for Windows when they worked on Rdb for
Windows NT, but I believe that is not available.
So we got Bliss on VMS.
And we got Bliss for older DEC OS.
Are there any Bliss available for various Unix, Linux, Windows etc.?
Oracle supposedly did Bliss for Windows when they worked on Rdb for
Windows NT, but I believe that is not available.
I had heard eons ago that DEC had a bunch of BLISS compilers: for
RSTS, for ULTRIX, for Windows. I don't know if they really did, but
they were certainly never made available outside of DEC,
unfortunately.
On 7/12/2024 7:23 AM, Arne Vajhøj wrote:
So we got Bliss on VMS.
And we got Bliss for older DEC OS.
Are there any Bliss available for various Unix, Linux, Windows etc.?
Oracle supposedly did Bliss for Windows when they worked on Rdb for
Windows NT, but I believe that is not available.
A little search find:
https://github.com/madisongh/blissc
(one familiar name)
Seems to require either autotools or cmake.
On 7/12/2024 9:19 AM, Hunter Goatley wrote:
I installed cmake, llvm-dev, and clang on Ubuntu, but trying to compile
Here's another one, which I just found and haven't tried.
https://github.com/JonathanBelanger/bliss
the first module results in twenty errors about missing templates and
members and it aborts.
If anyone tries it and gets it to work, let me know!
The version there is four years old instead of five, but I get the same errors trying to build it.
Here's another one, which I just found and haven't tried.
https://github.com/JonathanBelanger/bliss
I've never been able to get Matt's compiler to build. I also haven't
tried since I gained more experience working on Linux. I have meant to
try again, but never have made the time.
#include "llvm/MC/Alignment.h"hunter@pmxx-u:llvmgen$
#include "llvm/MC/Host.h"
I chose the latest, llvm-15-dev, and then I had to
edit one file to point to the new include directory:
There were certainly compilers that generated bliss objects for the
PDP-11, but they were not hosted on a PDP-11; even the mighty, beloved
task builder could not make it fit.
Success! In addition to installing llvm-dev, I needed to install a
specific llvm-dev. I chose the latest, llvm-15-dev, and then I had to
edit one file to point to the new include directory:
On Fri, 12 Jul 2024 09:30:02 -0400, Robert A. Brooks wrote:
There were certainly compilers that generated bliss objects for the
PDP-11, but they were not hosted on a PDP-11; even the mighty, beloved
task builder could not make it fit.
Is Bliss more complex than Pascal? It was possible to get a (mostly functional) Pascal compiler to fit by breaking it into two passes. The Modula-2 compiler for the PDP-11 had no less than 5 passes.
It's not much, but I successfully compiled a module. It complains about MAIN=main, and I'm not sure why, but I successfully created a .c with a main() that called my routine in the BLISS module (which called back to
the C module to actually print some output). Pretty slick!
On Fri, 12 Jul 2024 10:41:38 -0400, Hunter Goatley wrote:
Success! In addition to installing llvm-dev, I needed to install a
specific llvm-dev. I chose the latest, llvm-15-dev, and then I had to
edit one file to point to the new include directory:
Is that the madisongh one? I got more errors than that. But I have a range
of versions of llvm currently installed, and the oldest one, 13, seemed to
do the trick. (The build requirement is for 12 or later.)
Now I actually need to try compiling some code with it...
Slightly more elaborate example, doing some environment enquiries:
Output:
%bpval = 64, %bpunit = 8, %bpaddr = 64, %upval = 8
Slightly annoying that global names must be uppercased.
Also I wonder if I can get varargs to work ...
On Fri, 12 Jul 2024 23:23:22 -0400, Hunter Goatley wrote:
It's not much, but I successfully compiled a module. It complains about
MAIN=main, and I'm not sure why, but I successfully created a .c with a
main() that called my routine in the BLISS module (which called back to
the C module to actually print some output). Pretty slick!
I was able to compile this example adapted from page 1-15 of the May
1987 “Bliss Language Reference Manual”:
That “MAIN =” elicited no complaints, but neither did it seem to do anything useful.
On 7/12/2024 9:19 AM, Hunter Goatley wrote:
I had heard eons ago that DEC had a bunch of BLISS compilers: for
RSTS, for ULTRIX, for Windows. I don't know if they really did, but
they were certainly never made available outside of DEC,
unfortunately.
There were certainly compilers that generated bliss objects for the PDP-11, but they
were not hosted on a PDP-11; even the mighty, beloved task builder could not make it
fit.
On 2024-07-12, Robert A. Brooks <FIRST.LAST@vmssoftware.com> wrote:
On 7/12/2024 9:19 AM, Hunter Goatley wrote:
I had heard eons ago that DEC had a bunch of BLISS compilers: for
RSTS, for ULTRIX, for Windows. I don't know if they really did, but
they were certainly never made available outside of DEC,
unfortunately.
There were certainly compilers that generated bliss objects for the PDP-11, but they
were not hosted on a PDP-11; even the mighty, beloved task builder could not make it
fit.
$ set response/mode=good_natured
For those of us who had to work with overlay description files at the
start of our career, there's nothing beloved about that &$^#$^ TKB. :-)
Simon.
For those of us who had to work with overlay description files at
the
start of our career, there's nothing beloved about that &$^#$^ TKB.
:-)
I ran overlayed programs all the time. My Ultrix-11 was a heavily overlayed kernel to have room for networking. No big deal.
For those of us who had to work with overlay description files at the
start of our career, there's nothing beloved about that &$^#$^ TKB. :-)
On 7/13/2024 2:30 AM, Lawrence D'Oliveiro wrote:
Slightly annoying that global names must be uppercased.
Yeah.
On Sat, 13 Jul 2024 16:36:39 -0400, Hunter Goatley wrote:
On 7/13/2024 2:30 AM, Lawrence D'Oliveiro wrote:
Slightly annoying that global names must be uppercased.
Yeah.
Tried this patch, and my compiler build is now case-sensitive. Builtin
and reserved names must still be uppercased, but your own symbols (particularly references to names defined in C code) can be
lowercased:
On Sat, 13 Jul 2024 16:36:39 -0400, Hunter Goatley wrote:
On 7/13/2024 2:30 AM, Lawrence D'Oliveiro wrote:
Slightly annoying that global names must be uppercased.
Yeah.
Tried this patch, and my compiler build is now case-sensitive. Builtin
and reserved names must still be uppercased, but your own symbols (particularly references to names defined in C code) can be
lowercased:
diff -u lib/frontend/scanner.c{-orig,}
--- lib/frontend/scanner.c-orig 2024-07-13 10:52:16.426465872 +1200
+++ lib/frontend/scanner.c 2024-07-18 15:39:51.026148083 +1200
@@ -75,8 +75,8 @@
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 0, 0, 0, 0, 0, 0,
0, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 0, 0, 0, 0, '_', - 0, 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
- 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 0, 0, 0, 0, 0,
+ 0, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o',
+ 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
That “MAIN =” elicited no complaints, but neither did it seem to do anything useful.
On Sat, 13 Jul 2024 03:53:48 -0000 (UTC), I wrote:
That “MAIN =” elicited no complaints, but neither did it seem to do
anything useful.
The routine referenced by the “MAIN =” directive is checked for
validity in lib/frontend/declarations.c:
but in lib/llvmgen/llvm_gencode.c, where it would be used to set the
start address in the generated code, that part is disabled:
I wonder if that code actually works?
On 7/20/2024 4:28 AM, Lawrence D'Oliveiro wrote:
I wonder if that code actually works?
Do you need it?
arne@arnepc6:~$ blissc-master/blissc newtest.b32
arne@arnepc6:~$ gcc newtest.o -o newtest
arne@arnepc6:~$ ./newtest
Hello world!
arne@arnepc6:~$
Interesting. I copied and pasted your sample program, and I get the same thing I get with all of my tests: it complains about expecting a name,
and then it goes into an infinite loop. I can only get past that if I
specify some name besides "main" for the main routine.
Also, where is your puts() coming from?
On 7/21/2024 4:59 AM, Hunter Goatley wrote:
Interesting. I copied and pasted your sample program, and I get the
same thing I get with all of my tests: it complains about expecting a
name, and then it goes into an infinite loop. I can only get past that
if I specify some name besides "main" for the main routine.
OK. I had not applied Lawrence's patch yet. After applying that, the
sample compiles OK. Thanks!
Also, where is your puts() coming from?
Ah, I get it now. The use of gcc to do the link pulls it in from the C
RTL. I hadn't thought about that before.
On 7/21/2024 5:18 AM, Hunter Goatley wrote:
Ah, I get it now. The use of gcc to do the link pulls it in from the C
RTL. I hadn't thought about that before.
On VMS you use LIB$ and SYS$ calls.
On Linux using C RTL seems to be the best equivalent.
uplit(%ascii'%%bpval = %d, %%bpunit = %d, %%bpaddr = %d, %%upval = %d', 10, 0),
Currently working my way through AA_H275C-TK (1983 edition). Adapted
this example from page 15-9:
That value should be 9, not 10.
Currently working my way through AA_H275C-TK (1983 edition). Adapted
this example from page 15-9:
MODULE quote_test_1 =
BEGIN
OWN x;
LITERAL mark = 4;
MACRO m = mark + %UNQUOTE mark %;
GLOBAL ROUTINE doit : NOVALUE =
BEGIN
LITERAL mark = 5;
x = m;
END;
END ELUDOM
When I look at the generated assembler
doit:
...
movq $10, x(%rip)
retq
That value should be 9, not 10.
On 7/25/2024 10:10 PM, Lawrence D'Oliveiro wrote:
Currently working my way through AA_H275C-TK (1983 edition). Adapted
this example from page 15-9:
MODULE quote_test_1 =
BEGIN
OWN x;
LITERAL mark = 4;
MACRO m = mark + %UNQUOTE mark %;
GLOBAL ROUTINE doit : NOVALUE =
BEGIN
LITERAL mark = 5;
x = m;
END;
END ELUDOM
When I look at the generated assembler
doit:
...
movq $10, x(%rip)
retq
That value should be 9, not 10.
What compiler is that from? That isn't even PIC code. And the $10 in
the output is hex 10.
On 7/25/2024 10:10 PM, Lawrence D'Oliveiro wrote:
Currently working my way through AA_H275C-TK (1983 edition). Adapted
this example from page 15-9:
MODULE quote_test_1 =
BEGIN
OWN x;
LITERAL mark = 4;
MACRO m = mark + %UNQUOTE mark %;
GLOBAL ROUTINE doit : NOVALUE =
BEGIN
LITERAL mark = 5;
x = m;
END;
END ELUDOM
When I look at the generated assembler
doit:
...
movq $10, x(%rip)
retq
That value should be 9, not 10.
What compiler is that from? That isn't even PIC code. And the $10 in
the output is hex 10.
Matt Madisons open source Bliss compiler running on Linux.
Adapted this example from page 15-9:
On Fri, 26 Jul 2024 19:51:12 -0400, Arne Vajhøj wrote:
Matt Madisons open source Bliss compiler running on Linux.
With the case-sensitivity patch. ;)
On 7/26/2024 3:42 PM, John Reagan wrote:
On 7/25/2024 10:10 PM, Lawrence D'Oliveiro wrote:
Currently working my way through AA_H275C-TK (1983 edition). Adapted
this example from page 15-9:
MODULE quote_test_1 =
BEGIN
OWN x;
LITERAL mark = 4;
MACRO m = mark + %UNQUOTE mark %;
GLOBAL ROUTINE doit : NOVALUE =
BEGIN
LITERAL mark = 5;
x = m;
END;
END ELUDOM
When I look at the generated assembler
doit:
...
movq $10, x(%rip)
retq
That value should be 9, not 10.
What compiler is that from? That isn't even PIC code. And the $10 in
the output is hex 10.
Matt Madisons open source Bliss compiler running on
Linux.
So not one of your compilers. :-)
Arne
Sysop: | Keyop |
---|---|
Location: | Huddersfield, West Yorkshire, UK |
Users: | 432 |
Nodes: | 16 (2 / 14) |
Uptime: | 30:12:37 |
Calls: | 9,081 |
Calls today: | 4 |
Files: | 13,409 |
Messages: | 6,022,132 |