head     5.1;
access   paws bayes danm geli hal jch jws brad larry;
symbols  ;
locks    ; strict;
comment  @# @;


5.1
date     86.10.28.17.19.11;  author hal;  state Exp;
branches ;
next     4.1;

4.1
date     86.09.30.20.12.50;  author hal;  state Exp;
branches ;
next     3.1;

3.1
date     86.09.01.12.24.09;  author hal;  state Exp;
branches ;
next     1.1;

1.1
date     86.08.27.16.01.12;  author hal;  state tmp;
branches ;
next     ;


desc
@Base file for PWS 3.2 release.

@


5.1
log
@Automatic bump of revision number for PWS version 3.2j
@
text
@$SYSPROG$

PROGRAM MAKE_A_DOT_OUT(INPUT, OUTPUT);

IMPORT SYSGLOBALS;

TYPE A_DOT_OUT_BLOCK = PACKED RECORD
      MAGIC     : INTEGER;
      STAMP     : SHORTINT;
      UNUSED    : SHORTINT;
      SPAREHP   : INTEGER;
      TEXT      : INTEGER;
      DATA      : INTEGER;
      BSS       : INTEGER;
      TRSIZE    : INTEGER;
      DRSIZE    : INTEGER;
      PASINT    : INTEGER;
      LESYMS    : INTEGER;
      DNTTSIZE  : INTEGER;
      ENTRY     : INTEGER;
      SLTSIZE   : INTEGER;
      VTSIZE    : INTEGER;
      SPARE3    : INTEGER;
      SPARE4    : INTEGER;
     END;


CONST BOOT_A_DOT_OUT = A_DOT_OUT_BLOCK[
				       MAGIC   : HEX('020C0108'),
				       STAMP   : 0,
				       UNUSED  : 0,
				       SPAREHP : 0,
				       TEXT    : 0,
				       DATA    : 0,
				       BSS     : 0,
				       TRSIZE  : 0,
				       DRSIZE  : 0,
				       PASINT  : 0,
				       LESYMS  : 0,
				       DNTTSIZE: 0,
				       ENTRY   : 0,
				       SLTSIZE : 0,
				       VTSIZE  : 0,
				       SPARE3  : 0,
				       SPARE4  : 0  ];

VAR INNAME      : STRING[255];
    OUTNAME     : STRING[255];
    INFILE      : FILE OF CHAR;
    OUTFILE     : FILE OF CHAR;
    C           : CHAR;
    CP          : CHARPTR;
    SIZEFILE    : FILE OF INTEGER;
    A_OUT_BLOCK : A_DOT_OUT_BLOCK;
    I           : SHORTINT;
    PCOFFSET    : INTEGER;

BEGIN
 WRITELN('PROGRAM TO CONVERT A BOOT FILE TO A.OUT FORMAT FOR HPUX BOOTER');
 WRITELN;
 WRITELN;
 WRITELN;

 A_OUT_BLOCK := BOOT_A_DOT_OUT;

 WRITE('NAME OF ORIGINAL BOOTFILE ? ');
 READLN(INNAME);

 RESET(SIZEFILE, INNAME);
 WITH A_OUT_BLOCK DO
  BEGIN
   READ(SIZEFILE, TEXT);        {DUMMY READ}
   READ(SIZEFILE, TEXT);
   TEXT := TEXT - 8;            {REMOVE FIRST 8 BYTES OF BOOT FORMAT}
   READ(SIZEFILE, PCOFFSET);
   READ(SIZEFILE, PCOFFSET);
   READ(SIZEFILE, PCOFFSET);
   PCOFFSET := PCOFFSET + 8;
  END;
 CLOSE(SIZEFILE);

 WRITE('NAME FOR A.OUT FILE ? ');
 READLN(OUTNAME);
 REWRITE(OUTFILE, OUTNAME, '\-5813\');

 CP := ADDR(A_OUT_BLOCK);
 FOR I := 1 TO SIZEOF(A_OUT_BLOCK) DO BEGIN
     WRITE(OUTFILE, CP^);
     CP := ADDR(CP^, 1);
 END;

 RESET(INFILE, INNAME);
 FOR I := 1 TO 8 DO
  READ(INFILE, C);      {SPACE PAST FIRST 8 BYTES OF BOOT FORMAT}
 FOR I := 1 TO 14 DO
  READ(INFILE, C);
 { LEA *,A0 }
 WRITE(OUTFILE, CHR(HEX('41')));
 WRITE(OUTFILE, CHR(HEX('FA')));
 WRITE(OUTFILE, CHR(HEX('FF')));
 WRITE(OUTFILE, CHR(HEX('FE')));
 { LEA PCOFFSET,A1 }
 WRITE(OUTFILE, CHR(HEX('43')));
 WRITE(OUTFILE, CHR(HEX('F9')));
 CP := ADDR(PCOFFSET);
 FOR I := 1 TO SIZEOF(PCOFFSET) DO BEGIN
    WRITE(OUTFILE, CP^);
    CP := ADDR(CP^, 1);
 END;
 { ADDA.L A1, A0 }
 WRITE(OUTFILE, CHR(HEX('D1')));
 WRITE(OUTFILE, CHR(HEX('C9')));
 { JMP (A0) }
 WRITE(OUTFILE, CHR(HEX('4E')));
 WRITE(OUTFILE, CHR(HEX('D0')));
 WHILE NOT EOF(INFILE) DO
  BEGIN
   READ(INFILE, C);
   WRITE(OUTFILE,C);
  END;
 CLOSE(INFILE);

 CLOSE(OUTFILE, 'LOCK');
END.


@


4.1
log
@Automatic bump of revision number for PWS version 3.2i
@
text
@@


3.1
log
@Automatic bump of revision number for PWS version 3.2h
@
text
@@


1.1
log
@Initial revision
@
text
@@
