4.4BSD/usr/src/old/dbx/tests/mod/bitfields.mod

module main;

import io;

type
    uint = @align 1 cardinal;
    dotrecord = record
	cost : @size 24 uint;
	dtype : @size 3 uint;
	dirToCenter : @size 3 uint;
	pad : @size 1 uint;
	pin : @size 1 uint;
	traceback : @size 3 uint;
	traceforward : @size 3 uint;
	expanded : @size 1 uint;
	underDir : @size 3 uint;
	underOffset : @size 4 uint;
	start : @size 1 uint;
	target : @size 1 uint;
	owner : @size 6 uint;
	segment : @size 7 uint;
	intrinsicCost : @size 3 uint;
    end;

procedure p1 ();
var junk : dotrecord;
begin
    junk.owner := 63;
    junk.segment := 1;
    junk.intrinsicCost := 1;
    io.Writef(io.output, "owner = %d, segment = %d, intrinsicCost = %d\n",
	junk.owner, junk.segment, junk.intrinsicCost);
    p2();
end p1;

procedure p2 ();
var x : record
	first : integer;
	second : integer;
	a : @size 8 @align 1 integer;
	b : @size 8 @align 1 integer;
	c : integer;
    end;
begin
    x.first := 0;
    x.second := 0;
    x.a := 2;
    x.b := 10;
    x.c := 1;
    io.Writef(io.output, "done\n");
end p2;

begin
    p1();
end main.