[comp.sys.apollo] apollo logo

turner@dover.uucp (Robert Turner) (12/07/88)

Is there an easy place that documents the format of the
file "/sys/apollo_logo"?  

The file appears to be a mapl file, and the few internals
documents we have here seem to ignore this cute little file.

I know some vendors have modified this logo file replacing
the "apollo" with their logo.

Either mail a reply or post it.

Thanks
Robert

-- 
Robert Turner  (602) 835-0545  UUCP: ...!SUN!SUNBURN!DOVER!TURNER
Motorola Semiconductor Products

dpg@caen.engin.umich.edu (David P Gorgen) (12/13/88)

In article <576@dover.uucp> turner@dover.uucp (Robert Turner) writes:
> Is there an easy place that documents the format of the
> file "/sys/apollo_logo"?  
> 
> The file appears to be a mapl file, and the few internals
> documents we have here seem to ignore this cute little file.
> 
> I know some vendors have modified this logo file replacing
> the "apollo" with their logo.

This has been a subject of periodic interest on this newsgroup, so I
thought I'd post the answer and some actual code.

It's so simple it can hardly be said to have a format at all.  It is
nothing but the contents of a 512x160 bitmap.  No header or index or
anything.  The MSB of a word appears leftmost on the screen, as is
natural for 680x0's.

A long time ago I wrote some Pascal to convert between GPR external
bitmap files and "logo files".  The two programs are reasonably short,
so I append them.  Now you can write GPR code to make whatever logo
file you want.  Have fun.

(Obviously this stuff is in no way supported by Apollo, nor by me
personally for that matter.)

    --  Dave Gorgen


program bitmap2logo;

%include '/sys/ins/base.ins.pas';
%include '/sys/ins/ms.ins.pas';
%include '/sys/ins/error.ins.pas';
%include '/sys/ins/pgm.ins.pas';
%include '/sys/ins/gpr.ins.pas';

const
    str_size = 100;

type
    str_t = array [1..str_size] of char;

    logo_512x160_t = array [0..159, 0..31] of integer;

var
    st: status_$t;
    i, j: integer;
    arg_error: boolean;

    logo_pn, bitm_pn: str_t;
    logo_pn_len, bitm_pn_len: integer;

    file_pointer: ^ logo_512x160_t;
    file_len: linteger;

    init_bitm, bitm: gpr_$bitmap_desc_t;
    bitm_size: gpr_$offset_t;
    bitm_attribs: gpr_$attribute_desc_t;
    bitm_pointer: ^ logo_512x160_t;
    bitm_index: integer32;
    bitm_wpl: integer;
    bitm_version: gpr_$version_t;
    bitm_groups: integer;
    bitm_headers: gpr_$bmf_group_header_array_t;
    bitm_created: boolean;

begin
    bitm_pn_len := pgm_$get_arg(1, bitm_pn, st, str_size);
    arg_error := st.all <> 0;
    if not arg_error then begin
        logo_pn_len := pgm_$get_arg(2, logo_pn, st, str_size);
        arg_error := st.all <> 0;
    end;
    if arg_error then begin
        writeln('Usage:  bitmap2logo input_bitmap_file output_logo_file');
        return;
    end;

    file_pointer := ms_$crmapl(logo_pn, logo_pn_len, 0, 10240,
                               ms_$nr_xor_1w, st);
    if st.code <> 0 then begin
        error_$print_name(st, logo_pn, logo_pn_len);
        return;
    end;

    bitm_size.x_size := 16;
    bitm_size.y_size := 16;
    gpr_$init(gpr_$no_display, 0, bitm_size, 0, init_bitm, st);
    gpr_$allocate_attribute_block(bitm_attribs, st);
    bitm_size.x_size := 512;
    bitm_size.y_size := 160;
    bitm_groups := 1;
    with bitm_headers[0] do begin
        n_sects := 1;
        pixel_size := 1;
        allocated_size := 1;
        bytes_per_line := 64;
        bytes_per_sect := 10240;
    end;
    gpr_$open_bitmap_file(gpr_$readonly, bitm_pn, bitm_pn_len,
                          bitm_version, bitm_size, bitm_groups, bitm_headers,
                          bitm_attribs, bitm, bitm_created, st);
    gpr_$inq_bitmap_pointer(bitm, bitm_pointer, bitm_wpl, st);

    for i := 0 to 159 do
        for j := 0 to 31 do
            file_pointer^[i, j] := bitm_pointer^[i, j];

    ms_$truncate(file_pointer, 10240, st);
    ms_$unmap(file_pointer, 10240, st);

    gpr_$terminate(true, st);
end.



program logo2bitmap;

%include '/sys/ins/base.ins.pas';
%include '/sys/ins/ms.ins.pas';
%include '/sys/ins/error.ins.pas';
%include '/sys/ins/pgm.ins.pas';
%include '/sys/ins/gpr.ins.pas';

const
    str_size = 100;

type
    str_t = array [1..str_size] of char;

    logo_512x160_t = array [0..159, 0..31] of integer;

var
    st: status_$t;
    i, j: integer;
    arg_error: boolean;

    logo_pn, bitm_pn: str_t;
    logo_pn_len, bitm_pn_len: integer;

    file_pointer: ^ logo_512x160_t;
    file_len: linteger;

    init_bitm, bitm: gpr_$bitmap_desc_t;
    bitm_size: gpr_$offset_t;
    bitm_attribs: gpr_$attribute_desc_t;
    bitm_pointer: ^ logo_512x160_t;
    bitm_index: integer32;
    bitm_wpl: integer;
    bitm_version: gpr_$version_t;
    bitm_groups: integer;
    bitm_headers: gpr_$bmf_group_header_array_t;
    bitm_created: boolean;

begin
    logo_pn_len := pgm_$get_arg(1, logo_pn, st, str_size);
    arg_error := st.all <> 0;
    if not arg_error then begin
        bitm_pn_len := pgm_$get_arg(2, bitm_pn, st, str_size);
        arg_error := st.all <> 0;
    end;
    if arg_error then begin
        writeln('Usage:  logo2bitmap input_logo_file output_bitmap_file');
        return;
    end;

    file_pointer := ms_$mapl(logo_pn, logo_pn_len, 0, 131072,
                             ms_$nr_xor_1w, ms_$r, false, file_len, st);
    if st.code <> 0 then begin
        error_$print_name(st, logo_pn, logo_pn_len);
        return;
    end;

    bitm_size.x_size := 16;
    bitm_size.y_size := 16;
    gpr_$init(gpr_$no_display, 0, bitm_size, 0, init_bitm, st);
    gpr_$allocate_attribute_block(bitm_attribs, st);
    bitm_size.x_size := 512;
    bitm_size.y_size := 160;
    bitm_groups := 1;
    with bitm_headers[0] do begin
        n_sects := 1;
        pixel_size := 1;
        allocated_size := 1;
        bytes_per_line := 64;
        bytes_per_sect := 10240;
    end;
    gpr_$open_bitmap_file(gpr_$create, bitm_pn, bitm_pn_len,
                          bitm_version, bitm_size, bitm_groups, bitm_headers,
                          bitm_attribs, bitm, bitm_created, st);
    gpr_$inq_bitmap_pointer(bitm, bitm_pointer, bitm_wpl, st);

    for i := 0 to 159 do
        for j := 0 to 31 do
            bitm_pointer^[i, j] := file_pointer^[i, j];

    gpr_$terminate(true, st);
end.

larss@nada.kth.se (Lars Schylberg) (06/26/89)

Do anyone know what the font is called that is used 
in the  apollo logo.  Is this font availably in postscript
so that I could print it in a TEX document.  I've seen adus
also uses that font.

Talking about fonts by the way.  Have anyone a idea were I could
find the font "dunhill" in postscript.  The one we have now is called
"cmduhh10.tfm" but I sure I would get better printing quality if
I could use a ps version.

Lars Schylberg                           Email: larss@fmi.kth.se
Department of Photogrammetry             (Internet)
Royal Institute of Technolgy                    
S-100 44  STOCKHOLM, SWEDEN.             Tel. +46 8 790 86 33 (office)
-- 
Lars Schylberg                           Email: larss@fmi.kth.se
Department of Photogrammetry             (Internet)
Royal Institute of Technolgy                    
S-100 44  STOCKHOLM, SWEDEN.             Tel. +46 8 790 86 33 (office)

oj@apollo.COM (Ellis Oliver Jones) (06/29/89)

In article <1211@draken.nada.kth.se> larss@nada.kth.se (Lars Schylberg) writes:
>Do anyone know what the font is called that is used 
>in the  apollo logo.  

From the pre-HP "apollo Corporate Identity Manual:"
"Apollo's corporate logotype is set in a handworked version
 of the Avant Garde typeface, with customized letterspacing.
 The weight of the face has also been modified to allow
 easy enlargement or reduction."

This may be heresy to logotype purists, but I've had
decent success using PostScript Avant Garde Gothic Bold
to make the Apollo logo.
/Ollie Jones (speaking for myself only, not necessarily for
              HP, and definitely not for logotype purists.)