Skip to content

Latest commit

 

History

History

unix1_bdir

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
Disclaimer: all of this is still work in progress


The B compiler builds using apout with v1 compatibility
https://github.com/philbudne/pdp11-B/tree/pb/tools/apout
with two changes:

1. When using APOUT_UNIX_VERSION=V1 the user memory does not start at 040000.
change
	if (Binary == IS_V2) {
to
	if (Binary == IS_V2 || Binary == IS_V1) {
in load_a_out() to fix this.

2. `ar` skips negative argument pointers, i.e. anything above 0100000.
change
	posn = KE11LO - 2;
to
	posn = 040000*2 - 2;
in set_arg_env() to circumvent this bug.


The `.B` files use symbolic constants that replaced by
the sed script `preprocv1.sh`. This will NOT work under unix v1.
After this everything is done with v1/apout.


This directory is expected to be /usr/lang/bdir.
To build and install everything, run `sh install`.
This will:
	- build and install libb
	- build and install bilib
	- build bc from assembly
	- build ba from assembly
	- compile and build bc and ba(i) from B
The last step can also be invoked separately with `sh run`

There are directories `olibb` and `obilib` as well as `obrt1.s`
containing older versions of the B library and runtime.
The B library is not complete because not all functions were
used by the older programs. The same is actually true for bilib,
but not much fantasy was needed to restore the missing files.
These are not built by the install script.


There is a directory `int` which contains everything to build
the compiler using an interpreted code instead of threaded code.
With this the compiler will fit into 8kb.
`bai` is a version of `ba` that outputs interpreted code.
Build the threaded compiler first, then `sh run`.
This interpreted code is purely my fantasy, but something like
it is known to have existed at some point.
With this scheme only 4kw/8kb can be addressed.