Hi again,
OK I found your compiler project on github:
https://github.com/aap/b
I see you have introduced changes like this one:
- auto ab[500], ava[150];
- auto dirf, string, av, name[5], s;
+ auto ab 1000, ava 150;
+ auto dirf, string, av, name 5, s;
So it mean that at some point the auto declaration was changed?
Oh, yes it was. Here is the original syntax :
https://www.bell-labs.com/usr/dmr/www/kbman.html
And this one describes the use of quotes for auto arrays, but thats for
the H6070!
https://www.bell-labs.com/usr/dmr/www/bref.pdf
Also in bref, auto a[4] reserves 5 words, but in ken's version auto a 4
reserves 4 words.
I think I will make a command line option to support both language specs :)
And fix my code, because I had found this example
https://github.com/Spydr06/BCause/blob/main/examples/fibonacci.b
and was convinced that constants in auto were initial values, but I now
understand that this is incorrect.
Initialized auto variables would have been an avoidable syntactic sugar
on these machines!
Thanks,
Sebastien
Le 23/06/2023 à 12:59, Angelo Papenhoff a écrit :
Another update: I have worked quite a bit on my
compiler
the last couple of days and have managed to make it produce the same
code as those in the binaries (compared the intermediate code by eye).
There were a few mistakes, the files have been updated.
I removed some features that I figured were not in ken's original
compiler and most importantly changed it to generate RPN code directly
instead of parsing an expression into a tree and generating code from
that, which ken confirmed was how it worked.
I'm still not entirely happy with the result (the build() function seems
a bit kludgy), but at least it seems to produce something accurate.
Unfortunately I have no idea what the intermediate would have looked
like, so the output of this is purely my fantasy.
I will also have to adjust my take on ba now due to the changes.
For anyone interested, this is my WIP version of bc.b:
https://gist.github.com/aap/6df9b4c53c63592437d97dadab533649
aap
On 17/06/23, Angelo Papenhoff wrote:
> Update: I'm now done with the first pass of this.
> I reversed all the programs and successfully ran them through my
> compiler (i haven't assembled or linked anything though).
>
http://squoze.net/B/programs/
>
> To check for correctness, the files should of course be compiled,
> assembled and linked again. Unfortunately my compiler currently
> does not generate quite the same code as the original one. I will
> have to work on this.
> Most importantly & and | are only bitwise operators in the version
> of B that compiled these programs, but some other differences (like
> the fixup chain and the way strings are stored) exist too.
>
> It would be nice to have a fully working B system on v1/v2 UNIX again,
> with everything built from source, we can even reconstruct different
> versions of the runtime (and perhaps standard library). So far the
> PDP-11 version of my B system has only run on v6 and 2.11BSD.
>
> best,
> aap
>
> On 14/06/23, Angelo Papenhoff wrote:
>> I will hopefully continue with this in the next time (if, goto, mail and
>> glob are left).