Metropoli BBS
VIEWER: dump2.c MODE: BINARY (HEX)
==============================================================================================================================================
OFFSET    00 01 02 03 04 05 06 07  08 09 0A 0B 0C 0D 0E 0F  10 11 12 13 14 15 16 17  18 19 1A 1B 1C 1D 1E 1F
----------------------------------------------------------------------------------------------------------------------------------------------
00000000  2F 2A 20 20 64 75 6D 70  2E 63 20 20 28 31 30 2F  38 33 29 20 20 44 65 62  75 67 20 73 74 79 6C 65  /*  dump.c  (10/83)  Debug style
00000020  20 64 75 6D 70 20 6F 66  20 61 20 66 69 6C 65 20  66 72 6F 6D 20 61 6E 79  20 73 74 61 72 74 69 6E   dump of a file from any startin
00000040  67 20 70 6F 73 69 74 69  6F 6E 2E 0D 0A 0D 0A 0D  0A 20 20 55 73 61 67 65  3A 20 64 75 6D 70 20 66  g position.♪◙♪◙♪◙  Usage: dump f
00000060  69 6C 65 73 70 65 63 20  5B 62 6C 6F 63 6B 20 5B  70 61 67 65 5D 5D 20 7C  20 5B 73 65 67 6D 65 6E  ilespec [block [page]] | [segmen
00000080  74 3A 5B 6F 66 66 73 65  74 5D 5D 20 5B 63 6F 75  6E 74 5D 0D 0A 09 20 57  68 65 72 65 20 61 20 62  t:[offset]] [count]♪◙○ Where a b
000000A0  6C 6F 63 6B 20 69 73 20  36 34 4B 20 62 79 74 65  73 20 61 6E 64 20 61 20  70 61 67 65 20 69 73 20  lock is 64K bytes and a page is 
000000C0  32 35 36 20 62 79 74 65  73 2E 0D 0A 09 20 53 65  67 6D 65 6E 74 3A 6F 66  66 73 65 74 20 61 72 65  256 bytes.♪◙○ Segment:offset are
000000E0  20 73 74 61 6E 64 61 72  64 20 38 30 38 36 20 6E  6F 74 61 74 69 6F 6E 20  69 6E 20 68 65 78 61 64   standard 8086 notation in hexad
00000100  65 63 69 6D 61 6C 2E 0D  0A 09 20 43 6F 75 6E 74  20 69 73 20 74 68 65 20  6E 75 6D 62 65 72 20 6F  ecimal.♪◙○ Count is the number o
00000120  66 20 62 79 74 65 73 20  74 6F 20 64 75 6D 70 20  69 6E 20 64 65 63 69 6D  61 6C 2E 0D 0A 0D 0A 20  f bytes to dump in decimal.♪◙♪◙ 
00000140  20 20 64 75 6D 70 20 62  3A 5C 63 61 6C 63 5C 64  61 74 61 2E 64 62 6D 20  31 20 31 36 0D 0A 09 50    dump b:\calc\data.dbm 1 16♪◙○P
00000160  6F 73 69 74 69 6F 6E 73  20 66 69 6C 65 20 74 6F  20 61 62 73 6F 6C 75 74  65 20 6F 66 66 73 65 74  ositions file to absolute offset
00000180  20 6F 66 20 31 30 30 30  3A 31 30 30 30 20 6F 72  20 36 39 36 33 32 2E 0D  0A 20 20 20 64 75 6D 70   of 1000:1000 or 69632.♪◙   dump
000001A0  20 62 69 67 66 69 6C 65  20 3A 34 46 30 20 32 35  36 0D 0A 09 50 6F 73 69  74 69 6F 6E 73 20 66 69   bigfile :4F0 256♪◙○Positions fi
000001C0  6C 65 20 74 6F 20 61 62  73 6F 6C 75 74 65 20 6F  66 66 73 65 74 20 6F 66  20 34 46 30 48 20 6F 72  le to absolute offset of 4F0H or
000001E0  20 31 32 36 34 20 61 6E  64 0D 0A 09 64 75 6D 70  73 20 32 35 36 20 62 79  74 65 73 2E 0D 0A 0D 0A   1264 and♪◙○dumps 256 bytes.♪◙♪◙
00000200  20 20 20 20 20 54 68 65  20 6F 72 69 67 69 6E 61  6C 20 73 6F 75 72 63 65  20 66 6F 72 20 64 75 6D       The original source for dum
00000220  70 20 77 61 73 20 66 6F  75 6E 64 20 6F 6E 20 4C  79 6E 6E 20 4C 6F 6E 67  27 73 20 42 42 53 20 69  p was found on Lynn Long's BBS i
00000240  6E 20 54 75 6C 73 61 2E  20 20 49 0D 0A 6D 6F 64  69 66 69 65 64 20 69 74  20 74 6F 20 69 6E 63 6C  n Tulsa.  I♪◙modified it to incl
00000260  75 64 65 20 66 69 6C 65  20 70 6F 73 69 74 69 6F  6E 69 6E 67 2E 20 20 49  74 20 68 61 73 20 70 72  ude file positioning.  It has pr
00000280  6F 76 65 6E 20 74 6F 20  62 65 20 61 20 67 72 65  61 74 20 74 6F 6F 6C 20  61 74 0D 0A 74 69 6D 65  oven to be a great tool at♪◙time
000002A0  73 20 77 68 65 6E 20 49  20 68 61 76 65 20 74 6F  20 77 6F 72 6B 20 77 69  74 68 20 62 69 6E 61 72  s when I have to work with binar
000002C0  79 20 66 69 6C 65 73 20  74 68 61 74 20 6F 66 74  65 6E 20 65 78 63 65 65  64 20 73 65 76 65 72 61  y files that often exceed severa
000002E0  6C 20 6D 69 6C 6C 69 6F  6E 0D 0A 63 68 61 72 61  63 74 65 72 73 2E 0D 0A  20 20 20 49 20 68 61 76  l million♪◙characters.♪◙   I hav
00000300  65 20 62 65 65 6E 20 75  73 69 6E 67 20 74 68 65  20 4C 61 74 74 69 63 65  20 27 43 27 20 63 6F 6D  e been using the Lattice 'C' com
00000320  70 69 6C 65 72 20 66 6F  72 20 61 62 6F 75 74 20  61 20 79 65 61 72 20 6E  6F 77 20 61 6E 64 20 68  piler for about a year now and h
00000340  61 76 65 0D 0A 62 65 65  6E 20 76 65 72 79 20 70  6C 65 61 73 65 64 20 77  69 74 68 20 69 74 2E 20  ave♪◙been very pleased with it. 
00000360  20 49 20 68 61 76 65 20  72 65 2D 77 72 69 74 74  65 6E 20 74 68 65 20 6C  65 76 65 6C 20 31 20 49   I have re-written the level 1 I
00000380  2F 4F 20 72 6F 75 74 69  6E 65 73 20 74 6F 20 74  61 6B 65 0D 0A 61 64 76  61 6E 74 61 67 65 20 6F  /O routines to take♪◙advantage o
000003A0  66 20 44 4F 53 20 32 2E  30 20 70 61 74 68 20 6E  61 6D 65 73 2C 20 65 74  63 2E 20 61 6E 64 20 6D  f DOS 2.0 path names, etc. and m
000003C0  6F 64 69 66 69 65 64 20  74 68 65 20 5F 6D 61 69  6E 20 6D 6F 64 75 6C 65  20 74 6F 20 61 6C 6C 6F  odified the _main module to allo
000003E0  77 0D 0A 6D 65 20 74 6F  20 6C 6F 61 64 20 61 6E  64 20 65 78 65 63 75 74  65 20 70 72 6F 67 72 61  w♪◙me to load and execute progra
00000400  6D 73 20 66 72 6F 6D 20  77 69 74 68 69 6E 20 27  63 27 2E 0D 0A 0D 0A 09  09 09 54 65 64 20 52 65  ms from within 'c'.♪◙♪◙○○○Ted Re
00000420  75 73 73 20 20 20 20 20  63 2F 6F 20 53 6F 75 74  68 20 54 65 78 61 73 20  53 6F 66 74 77 61 72 65  uss     c/o South Texas Software
00000440  2C 20 49 6E 63 2E 0D 0A  09 09 20 20 48 6F 6D 65  3A 20 37 31 33 2F 39 36  31 2D 33 39 32 36 09 20  , Inc.♪◙○○  Home: 713/961-3926○ 
00000460  20 34 35 34 34 20 50 6F  73 74 20 4F 61 6B 20 50  6C 61 63 65 2C 20 53 75  69 74 65 20 31 37 36 0D   4544 Post Oak Place, Suite 176♪
00000480  0A 09 09 20 20 4F 66 66  69 3A 20 37 31 33 2F 38  37 37 2D 38 32 30 35 09  20 20 48 6F 75 73 74 6F  ◙○○  Offi: 713/877-8205○  Housto
000004A0  6E 2C 20 54 78 20 37 37  30 32 37 0D 0A 0D 0A 2A  2F 0D 0A 23 69 6E 63 6C  75 64 65 20 3C 73 74 64  n, Tx 77027♪◙♪◙*/♪◙#include <std
000004C0  69 6F 2E 68 3E 0D 0A 23  69 6E 63 6C 75 64 65 20  3C 63 74 79 70 65 2E 68  3E 09 09 2F 2A 20 4C 61  io.h>♪◙#include <ctype.h>○○/* La
000004E0  74 74 69 63 65 20 63 68  61 72 61 63 74 65 72 20  74 79 70 65 20 6D 61 63  72 6F 73 20 2A 2F 0D 0A  ttice character type macros */♪◙
00000500  0D 0A 23 64 65 66 69 6E  65 20 46 41 49 4C 09 20  20 20 20 31 0D 0A 23 64  65 66 69 6E 65 20 53 55  ♪◙#define FAIL○    1♪◙#define SU
00000520  43 43 45 53 53 20 20 20  20 20 30 0D 0A 23 64 65  66 69 6E 65 20 54 52 55  45 09 20 20 28 2D 31 29  CCESS     0♪◙#define TRUE○  (-1)
00000540  0D 0A 23 64 65 66 69 6E  65 20 46 41 4C 53 45 09  20 20 20 20 30 0D 0A 23  64 65 66 69 6E 65 20 4E  ♪◙#define FALSE○    0♪◙#define N
00000560  55 4C 4C 09 20 20 20 20  30 09 09 2F 2A 20 6E 75  6C 6C 20 70 6F 69 6E 74  65 72 20 76 61 6C 75 65  ULL○    0○○/* null pointer value
00000580  20 2A 2F 0D 0A 23 64 65  66 69 6E 65 20 46 4F 52  45 56 45 52 20 20 20 20  20 66 6F 72 20 28 3B 3B   */♪◙#define FOREVER     for (;;
000005A0  29 0D 0A 23 64 65 66 69  6E 65 20 50 41 55 53 45  09 20 20 20 20 69 66 20  28 67 65 74 63 68 28 29  )♪◙#define PAUSE○    if (getch()
000005C0  3D 3D 27 5C 30 27 29 20  67 65 74 63 68 28 29 3B  0D 0A 23 64 65 66 69 6E  65 20 53 54 44 49 4E 09  =='\0') getch();♪◙#define STDIN○
000005E0  20 20 20 20 30 0D 0A 23  64 65 66 69 6E 65 20 53  54 44 4F 55 54 09 20 20  20 20 31 0D 0A 23 64 65      0♪◙#define STDOUT○    1♪◙#de
00000600  66 69 6E 65 20 53 54 44  45 52 52 09 20 20 20 20  32 0D 0A 0D 0A 23 64 65  66 69 6E 65 20 42 55 46  fine STDERR○    2♪◙♪◙#define BUF
00000620  53 49 5A 45 20 35 31 32  0D 0A 74 79 70 65 64 65  66 20 75 6E 73 69 67 6E  65 64 20 20 20 20 75 73  SIZE 512♪◙typedef unsigned    us
00000640  68 6F 72 74 3B 0D 0A 74  79 70 65 64 65 66 20 69  6E 74 09 20 20 20 20 76  6F 69 64 3B 0D 0A 0D 0A  hort;♪◙typedef int○    void;♪◙♪◙
00000660  69 6E 74 20 5F 66 6D 6F  64 65 20 3D 20 30 78 38  30 30 30 3B 09 09 2F 2A  20 4C 61 74 74 69 63 65  int _fmode = 0x8000;○○/* Lattice
00000680  20 27 63 27 20 2D 20 66  6F 72 63 65 73 20 62 69  6E 61 72 79 20 49 2F 4F  20 2A 2F 0D 0A 65 78 74   'c' - forces binary I/O */♪◙ext
000006A0  65 72 6E 20 73 68 6F 72  74 20 65 72 72 6E 6F 3B  09 09 2F 2A 20 44 4F 53  20 32 2E 30 20 65 72 72  ern short errno;○○/* DOS 2.0 err
000006C0  6F 72 20 6E 75 6D 62 65  72 20 2A 2F 0D 0A 6C 6F  6E 67 20 6C 73 65 65 6B  28 29 3B 0D 0A 0D 0A 63  or number */♪◙long lseek();♪◙♪◙c
000006E0  68 61 72 20 20 20 62 75  66 66 65 72 5B 42 55 46  53 49 5A 45 5D 3B 20 09  2F 2A 20 69 6E 70 75 74  har   buffer[BUFSIZE]; ○/* input
00000700  20 62 75 66 66 65 72 20  2A 2F 0D 0A 75 73 68 6F  72 74 20 62 6C 6F 63 6B  20 3D 20 30 3B 09 09 2F   buffer */♪◙ushort block = 0;○○/
00000720  2A 20 62 6C 6F 63 6B 20  6E 75 6D 62 65 72 20 28  20 36 34 6B 20 62 79 74  65 73 2F 62 6C 6F 63 6B  * block number ( 64k bytes/block
00000740  20 29 20 2A 2F 0D 0A 75  73 68 6F 72 74 20 70 61  67 65 20 3D 20 30 3B 09  09 2F 2A 20 70 61 67 65   ) */♪◙ushort page = 0;○○/* page
00000760  20 6E 75 6D 62 65 72 20  28 20 32 35 36 20 62 79  74 65 73 2F 70 61 67 65  20 29 20 2A 2F 0D 0A 75   number ( 256 bytes/page ) */♪◙u
00000780  73 68 6F 72 74 20 73 65  67 6D 65 6E 74 20 3D 20  30 3B 0D 0A 75 73 68 6F  72 74 20 6F 66 66 73 65  short segment = 0;♪◙ushort offse
000007A0  74 20 3D 20 30 3B 0D 0A  6C 6F 6E 67 20 20 20 66  69 6C 70 6F 73 20 3D 20  30 3B 09 09 2F 2A 20 62  t = 0;♪◙long   filpos = 0;○○/* b
000007C0  65 67 69 6E 6E 69 6E 67  20 66 69 6C 65 20 70 6F  73 69 74 69 6F 6E 20 2A  2F 0D 0A 6C 6F 6E 67 20  eginning file position */♪◙long 
000007E0  20 20 63 6F 75 6E 74 20  3D 20 30 78 37 46 46 46  46 46 46 46 4C 3B 09 2F  2A 20 6E 75 6D 62 65 72    count = 0x7FFFFFFFL;○/* number
00000800  20 6F 66 20 62 79 74 65  73 20 74 6F 20 64 75 6D  70 20 2A 2F 0D 0A 0D 0A  6D 61 69 6E 28 61 72 67   of bytes to dump */♪◙♪◙main(arg
00000820  63 2C 61 72 67 76 29 20  09 09 2F 2A 20 44 55 4D  50 20 45 4E 54 52 59 20  2A 2F 0D 0A 69 6E 74 20  c,argv) ○○/* DUMP ENTRY */♪◙int 
00000840  20 61 72 67 63 3B 0D 0A  63 68 61 72 20 2A 61 72  67 76 5B 5D 3B 0D 0A 7B  0D 0A 20 20 20 63 68 61   argc;♪◙char *argv[];♪◙{♪◙   cha
00000860  72 20 63 3B 0D 0A 20 20  20 75 73 68 6F 72 74 20  69 2C 20 6E 75 6D 69 6E  2C 20 74 6F 74 2C 20 66  r c;♪◙   ushort i, numin, tot, f
00000880  69 6C 65 2C 20 63 66 72  6F 6D 2C 20 66 6C 61 67  20 3D 20 30 3B 0D 0A 0D  0A 20 20 20 69 66 20 28  ile, cfrom, flag = 0;♪◙♪◙   if (
000008A0  61 72 67 63 20 3C 20 32  29 0D 0A 20 20 20 20 20  20 61 62 6F 72 74 28 20  22 55 73 61 67 65 3A 64  argc < 2)♪◙      abort( "Usage:d
000008C0  75 6D 70 20 66 69 6C 65  73 70 65 63 20 5B 62 6C  6F 63 6B 20 5B 70 61 67  65 5D 5D 20 7C 20 5B 73  ump filespec [block [page]] | [s
000008E0  65 67 3A 5B 6F 66 73 5D  5D 22 2C 20 30 2C 20 30  20 29 3B 0D 0A 0D 0A 20  20 20 69 66 20 28 28 66  eg:[ofs]]", 0, 0 );♪◙♪◙   if ((f
00000900  69 6C 65 20 3D 20 6F 70  65 6E 28 20 61 72 67 76  5B 31 5D 2C 20 30 20 29  29 20 3D 3D 20 2D 31 29  ile = open( argv[1], 0 )) == -1)
00000920  0D 0A 20 20 20 20 20 20  61 62 6F 72 74 28 20 22  63 61 6E 6E 6F 74 20 6F  70 65 6E 22 2C 20 61 72  ♪◙      abort( "cannot open", ar
00000940  67 76 5B 31 5D 2C 20 65  72 72 6E 6F 20 29 3B 0D  0A 0D 0A 20 20 20 69 66  20 28 61 72 67 63 20 3E  gv[1], errno );♪◙♪◙   if (argc >
00000960  20 32 29 20 7B 0D 0A 20  20 20 20 20 20 69 66 20  28 28 66 6C 61 67 20 3D  20 73 74 70 63 68 72 28   2) {♪◙      if ((flag = stpchr(
00000980  20 61 72 67 76 5B 32 5D  2C 20 27 3A 27 20 29 29  20 21 3D 20 4E 55 4C 4C  29 20 7B 0D 0A 09 20 69   argv[2], ':' )) != NULL) {♪◙○ i
000009A0  20 3D 20 73 74 63 68 5F  69 28 20 61 72 67 76 5B  32 5D 2C 20 26 73 65 67  6D 65 6E 74 20 29 3B 0D   = stch_i( argv[2], &segment );♪
000009C0  0A 09 20 73 74 63 68 5F  69 28 20 61 72 67 76 5B  32 5D 2B 69 2B 31 2C 20  26 6F 66 66 73 65 74 20  ◙○ stch_i( argv[2]+i+1, &offset 
000009E0  29 3B 0D 0A 20 20 20 20  20 20 7D 0D 0A 20 20 20  20 20 20 69 66 20 28 73  73 63 61 6E 66 28 20 61  );♪◙      }♪◙      if (sscanf( a
00000A00  72 67 76 5B 32 5D 2C 20  22 25 64 22 2C 20 26 62  6C 6F 63 6B 20 29 20 21  3D 20 31 29 0D 0A 09 20  rgv[2], "%d", &block ) != 1)♪◙○ 
00000A20  61 62 6F 72 74 28 20 22  69 6E 76 61 6C 69 64 20  62 6C 6F 63 6B 22 2C 20  61 72 67 76 5B 32 5D 2C  abort( "invalid block", argv[2],
00000A40  20 30 20 29 3B 0D 0A 20  20 20 7D 0D 0A 20 20 20  69 66 20 28 61 72 67 63  20 3E 20 33 29 0D 0A 20   0 );♪◙   }♪◙   if (argc > 3)♪◙ 
00000A60  20 20 20 20 20 69 66 20  28 73 73 63 61 6E 66 28  20 61 72 67 76 5B 33 5D  2C 20 22 25 64 22 2C 20       if (sscanf( argv[3], "%d", 
00000A80  26 70 61 67 65 20 29 20  21 3D 20 31 29 0D 0A 09  20 61 62 6F 72 74 28 20  22 69 6E 76 61 6C 69 64  &page ) != 1)♪◙○ abort( "invalid
00000AA0  20 70 61 67 65 22 2C 20  61 72 67 76 5B 33 5D 2C  20 30 20 29 3B 0D 0A 0D  0A 20 20 20 69 66 20 28   page", argv[3], 0 );♪◙♪◙   if (
00000AC0  20 66 6C 61 67 20 29 20  7B 0D 0A 20 20 20 20 20  20 66 69 6C 70 6F 73 20  3D 20 28 6C 6F 6E 67 29   flag ) {♪◙      filpos = (long)
00000AE0  73 65 67 6D 65 6E 74 2A  31 36 4C 20 2B 20 28 6C  6F 6E 67 29 6F 66 66 73  65 74 3B 0D 0A 20 20 20  segment*16L + (long)offset;♪◙   
00000B00  20 20 20 74 6F 74 20 3D  20 6F 66 66 73 65 74 3B  0D 0A 20 20 20 7D 0D 0A  20 20 20 65 6C 73 65 20     tot = offset;♪◙   }♪◙   else 
00000B20  7B 0D 0A 20 20 20 20 20  20 66 69 6C 70 6F 73 20  3D 20 28 62 6C 6F 63 6B  20 2A 20 36 35 35 33 36  {♪◙      filpos = (block * 65536
00000B40  4C 29 20 2B 20 28 70 61  67 65 20 2A 20 32 35 36  29 3B 0D 0A 20 20 20 20  20 20 74 6F 74 20 3D 20  L) + (page * 256);♪◙      tot = 
00000B60  70 61 67 65 20 2A 20 32  35 36 3B 0D 0A 20 20 20  20 20 20 73 65 67 6D 65  6E 74 20 3D 20 62 6C 6F  page * 256;♪◙      segment = blo
00000B80  63 6B 20 2A 20 34 30 39  36 3B 0D 0A 20 20 20 7D  0D 0A 0D 0A 20 20 20 69  66 20 28 6C 73 65 65 6B  ck * 4096;♪◙   }♪◙♪◙   if (lseek
00000BA0  28 20 66 69 6C 65 2C 20  66 69 6C 70 6F 73 2C 20  30 20 29 20 3D 3D 20 2D  31 4C 29 0D 0A 20 20 20  ( file, filpos, 0 ) == -1L)♪◙   
00000BC0  20 20 20 61 62 6F 72 74  28 20 22 70 6F 73 69 74  69 6F 6E 69 6E 67 20 74  6F 22 2C 20 61 72 67 76     abort( "positioning to", argv
00000BE0  5B 32 5D 2C 20 65 72 72  6E 6F 20 29 3B 0D 0A 0D  0A 20 20 20 69 66 20 28  61 72 67 63 20 3E 20 34  [2], errno );♪◙♪◙   if (argc > 4
00000C00  29 0D 0A 20 20 20 20 20  20 69 66 20 28 73 73 63  61 6E 66 28 20 61 72 67  76 5B 34 5D 2C 20 22 25  )♪◙      if (sscanf( argv[4], "%
00000C20  6C 64 22 2C 20 26 63 6F  75 6E 74 20 29 20 21 3D  20 31 29 0D 0A 09 20 61  62 6F 72 74 28 20 22 69  ld", &count ) != 1)♪◙○ abort( "i
00000C40  6E 76 61 6C 69 64 20 63  6F 75 6E 74 22 2C 20 61  72 67 76 5B 34 5D 2C 20  30 20 29 3B 0D 0A 0D 0A  nvalid count", argv[4], 0 );♪◙♪◙
00000C60  0D 0A 20 20 20 64 6F 20  7B 20 09 09 09 09 20 20  20 2F 2A 20 72 65 61 64  20 26 20 64 75 6D 70 20  ♪◙   do { ○○○○   /* read & dump 
00000C80  42 55 46 53 49 5A 45 20  62 79 74 65 73 20 2A 2F  0D 0A 20 20 20 20 20 20  6E 75 6D 69 6E 20 3D 20  BUFSIZE bytes */♪◙      numin = 
00000CA0  72 65 61 64 28 20 66 69  6C 65 2C 20 62 75 66 66  65 72 2C 20 42 55 46 53  49 5A 45 20 29 3B 0D 0A  read( file, buffer, BUFSIZE );♪◙
00000CC0  20 20 20 20 20 20 69 66  20 28 6E 75 6D 69 6E 20  3D 3D 20 2D 31 29 0D 0A  09 20 61 62 6F 72 74 28        if (numin == -1)♪◙○ abort(
00000CE0  20 22 63 61 6E 6E 6F 74  20 72 65 61 64 22 2C 20  61 72 67 76 5B 31 5D 2C  20 65 72 72 6E 6F 20 29   "cannot read", argv[1], errno )
00000D00  3B 0D 0A 20 20 20 20 20  20 63 66 72 6F 6D 3D 30  3B 0D 0A 20 20 20 20 20  20 77 68 69 6C 65 20 28  ;♪◙      cfrom=0;♪◙      while (
00000D20  63 66 72 6F 6D 20 3C 20  6E 75 6D 69 6E 29 20 7B  0D 0A 0D 0A 09 20 6F 68  77 28 73 65 67 6D 65 6E  cfrom < numin) {♪◙♪◙○ ohw(segmen
00000D40  74 29 3B 09 09 09 20 20  20 2F 2A 20 70 72 69 6E  74 20 6F 66 66 73 65 74  20 69 6E 20 68 65 78 20  t);○○○   /* print offset in hex 
00000D60  2A 2F 0D 0A 09 20 70 75  74 63 68 61 72 28 27 3A  27 29 3B 0D 0A 09 20 6F  68 77 28 63 66 72 6F 6D  */♪◙○ putchar(':');♪◙○ ohw(cfrom
00000D80  2B 74 6F 74 29 3B 0D 0A  09 20 70 75 74 63 68 61  72 28 27 20 27 29 3B 0D  0A 0D 0A 09 20 66 6F 72  +tot);♪◙○ putchar(' ');♪◙♪◙○ for
00000DA0  20 28 69 3D 30 3B 20 69  20 3C 20 31 36 3B 20 69  2B 2B 29 20 7B 09 20 20  20 2F 2A 20 70 72 69 6E   (i=0; i < 16; i++) {○   /* prin
00000DC0  74 20 31 36 20 62 79 74  65 73 20 69 6E 20 68 65  78 20 2A 2F 0D 0A 09 20  20 20 20 70 75 74 63 68  t 16 bytes in hex */♪◙○    putch
00000DE0  61 72 28 27 20 27 29 3B  0D 0A 09 20 20 20 20 6F  68 62 28 62 75 66 66 65  72 5B 63 66 72 6F 6D 2B  ar(' ');♪◙○    ohb(buffer[cfrom+
00000E00  2B 5D 29 3B 0D 0A 09 20  7D 0D 0A 0D 0A 09 20 70  75 74 63 68 61 72 28 27  20 27 29 3B 20 70 75 74  +]);♪◙○ }♪◙♪◙○ putchar(' '); put
00000E20  63 68 61 72 28 27 20 27  29 3B 20 70 75 74 63 68  61 72 28 27 20 27 29 3B  0D 0A 0D 0A 09 20 63 66  char(' '); putchar(' ');♪◙♪◙○ cf
00000E40  72 6F 6D 20 2D 3D 20 31  36 3B 0D 0A 09 20 66 6F  72 20 28 69 3D 30 3B 20  69 20 3C 20 31 36 3B 20  rom -= 16;♪◙○ for (i=0; i < 16; 
00000E60  69 2B 2B 29 20 7B 09 20  20 20 2F 2A 20 70 72 69  6E 74 20 31 36 20 62 79  74 65 73 20 69 6E 20 41  i++) {○   /* print 16 bytes in A
00000E80  53 43 49 49 20 2A 2F 0D  0A 09 20 20 20 20 63 20  3D 20 62 75 66 66 65 72  5B 63 66 72 6F 6D 5D 20  SCII */♪◙○    c = buffer[cfrom] 
00000EA0  26 20 30 78 37 66 3B 0D  0A 09 20 20 20 20 69 66  20 28 20 69 73 70 72 69  6E 74 28 63 29 20 29 09  & 0x7f;♪◙○    if ( isprint(c) )○
00000EC0  09 20 20 20 2F 2A 20 69  66 20 70 72 69 6E 74 61  62 6C 65 20 63 68 61 72  61 63 74 65 72 20 2A 2F  ○   /* if printable character */
00000EE0  0D 0A 09 20 20 20 20 20  20 20 70 75 74 63 68 61  72 28 63 29 3B 0D 0A 09  20 20 20 20 65 6C 73 65  ♪◙○       putchar(c);♪◙○    else
00000F00  0D 0A 09 20 20 20 20 20  20 20 70 75 74 63 68 61  72 28 27 2E 27 29 3B 20  20 20 20 20 20 20 20 20  ♪◙○       putchar('.');         
00000F20  20 20 20 20 20 20 2F 2A  20 65 6C 73 65 20 70 72  69 6E 74 20 70 65 72 69  6F 64 20 2A 2F 0D 0A 09        /* else print period */♪◙○
00000F40  20 20 20 20 63 66 72 6F  6D 2B 2B 3B 0D 0A 09 20  7D 0D 0A 0D 0A 09 20 70  75 74 63 68 61 72 28 27      cfrom++;♪◙○ }♪◙♪◙○ putchar('
00000F60  5C 72 27 29 3B 20 70 75  74 63 68 61 72 28 27 5C  6E 27 29 3B 20 20 20 20  20 2F 2A 20 70 72 69 6E  \r'); putchar('\n');     /* prin
00000F80  74 20 43 52 2F 4C 46 20  2A 2F 0D 0A 0D 0A 09 20  69 66 20 28 28 63 6F 75  6E 74 20 2D 3D 20 31 36  t CR/LF */♪◙♪◙○ if ((count -= 16
00000FA0  29 20 3C 3D 20 30 29 09  20 20 20 20 20 2F 2A 20  69 73 20 63 6F 75 6E 74  20 65 78 68 61 75 73 74  ) <= 0)○     /* is count exhaust
00000FC0  65 64 3F 20 2A 2F 0D 0A  09 20 20 20 20 65 78 69  74 28 30 29 3B 0D 0A 20  20 20 20 20 20 7D 20 09  ed? */♪◙○    exit(0);♪◙      } ○
00000FE0  09 09 09 20 20 20 2F 2A  20 65 6E 64 20 6F 66 20  77 68 69 6C 65 20 2A 2F  0D 0A 20 20 20 20 20 20  ○○○   /* end of while */♪◙      
00001000  74 6F 74 20 2B 3D 20 6E  75 6D 69 6E 3B 0D 0A 20  20 20 20 20 20 69 66 20  28 20 74 6F 74 20 3D 3D  tot += numin;♪◙      if ( tot ==
00001020  20 30 20 29 0D 0A 09 20  73 65 67 6D 65 6E 74 20  2B 3D 20 34 30 39 36 3B  0D 0A 20 20 20 7D 09 09   0 )♪◙○ segment += 4096;♪◙   }○○
00001040  09 09 09 20 20 20 2F 2A  20 65 6E 64 20 6F 66 20  64 6F 20 2A 2F 0D 0A 20  20 20 77 68 69 6C 65 20  ○○○   /* end of do */♪◙   while 
00001060  28 6E 75 6D 69 6E 20 3D  3D 20 42 55 46 53 49 5A  45 29 3B 0D 0A 7D 09 09  09 09 09 20 20 20 2F 2A  (numin == BUFSIZE);♪◙}○○○○○   /*
00001080  20 65 6E 64 20 6F 66 20  6D 61 69 6E 20 2A 2F 0D  0A 0D 0A 76 6F 69 64 20  6F 68 77 28 77 72 64 29   end of main */♪◙♪◙void ohw(wrd)
000010A0  09 09 09 20 20 20 20 20  2F 2A 20 20 20 20 20 20  70 72 69 6E 74 20 61 20  77 6F 72 64 20 69 6E 20  ○○○     /*      print a word in 
000010C0  68 65 78 20 20 20 20 20  2A 2F 0D 0A 75 73 68 6F  72 74 20 77 72 64 3B 0D  0A 7B 0D 0A 20 20 20 6F  hex     */♪◙ushort wrd;♪◙{♪◙   o
000010E0  68 62 28 20 77 72 64 3E  3E 38 20 29 3B 0D 0A 20  20 20 6F 68 62 28 20 77  72 64 20 29 3B 0D 0A 7D  hb( wrd>>8 );♪◙   ohb( wrd );♪◙}
00001100  0D 0A 0D 0A 76 6F 69 64  20 6F 68 62 28 62 79 74  29 09 09 09 20 20 20 20  20 2F 2A 20 20 20 20 20  ♪◙♪◙void ohb(byt)○○○     /*     
00001120  20 70 72 69 6E 74 20 61  20 62 79 74 65 20 69 6E  20 68 65 78 20 20 20 20  20 2A 2F 0D 0A 63 68 61   print a byte in hex     */♪◙cha
00001140  72 20 62 79 74 3B 0D 0A  7B 0D 0A 20 20 20 6F 6E  69 62 28 20 62 79 74 3E  3E 34 20 29 3B 0D 0A 20  r byt;♪◙{♪◙   onib( byt>>4 );♪◙ 
00001160  20 20 6F 6E 69 62 28 20  62 79 74 20 29 3B 0D 0A  7D 0D 0A 0D 0A 76 6F 69  64 20 6F 6E 69 62 28 6E    onib( byt );♪◙}♪◙♪◙void onib(n
00001180  69 62 29 09 09 09 20 2F  2A 09 20 70 72 69 6E 74  20 61 20 6E 69 62 62 6C  65 20 61 73 20 61 20 68  ib)○○○ /*○ print a nibble as a h
000011A0  65 78 20 63 68 61 72 61  63 74 65 72 20 20 20 2A  2F 0D 0A 63 68 61 72 20  6E 69 62 3B 0D 0A 7B 0D  ex character   */♪◙char nib;♪◙{♪
000011C0  0A 20 20 20 6E 69 62 20  26 3D 20 31 35 3B 0D 0A  20 20 20 70 75 74 63 68  61 72 28 28 6E 69 62 20  ◙   nib &= 15;♪◙   putchar((nib 
000011E0  3E 3D 20 31 30 29 20 3F  20 6E 69 62 2D 31 30 2B  27 41 27 3A 20 6E 69 62  2B 27 30 27 29 3B 0D 0A  >= 10) ? nib-10+'A': nib+'0');♪◙
00001200  7D 0D 0A 0D 0A 76 6F 69  64 20 61 62 6F 72 74 28  20 6D 73 67 31 20 2C 6D  73 67 32 20 2C 65 72 72  }♪◙♪◙void abort( msg1 ,msg2 ,err
00001220  6E 6F 29 09 20 20 20 2F  2A 20 20 70 72 69 6E 74  20 65 72 72 6F 72 20 6D  73 67 31 2C 20 6D 73 67  no)○   /*  print error msg1, msg
00001240  32 2C 20 61 6E 64 20 6E  62 72 20 2A 2F 0D 0A 63  68 61 72 20 2A 6D 73 67  31 2C 2A 6D 73 67 32 3B  2, and nbr */♪◙char *msg1,*msg2;
00001260  09 09 20 20 20 2F 2A 09  44 6F 65 73 20 6E 6F 74  20 63 6C 6F 73 65 20 66  69 6C 65 73 2E 20 20 2A  ○○   /*○Does not close files.  *
00001280  2F 0D 0A 73 68 6F 72 74  20 65 72 72 6E 6F 3B 0D  0A 7B 0D 0A 20 20 20 63  68 61 72 20 73 74 65 6D  /♪◙short errno;♪◙{♪◙   char stem
000012A0  70 5B 31 30 5D 3B 0D 0A  0D 0A 20 20 20 77 72 69  74 65 28 20 53 54 44 45  52 52 2C 20 22 45 52 52  p[10];♪◙♪◙   write( STDERR, "ERR
000012C0  3A 20 22 2C 20 35 20 29  3B 0D 0A 20 20 20 69 66  20 28 6D 73 67 31 29 0D  0A 20 20 20 20 20 20 77  : ", 5 );♪◙   if (msg1)♪◙      w
000012E0  72 69 74 65 28 20 53 54  44 45 52 52 2C 20 6D 73  67 31 2C 20 73 74 72 6C  65 6E 28 6D 73 67 31 29  rite( STDERR, msg1, strlen(msg1)
00001300  20 29 3B 0D 0A 20 20 20  69 66 20 28 6D 73 67 32  29 0D 0A 20 20 20 20 20  20 77 72 69 74 65 28 20   );♪◙   if (msg2)♪◙      write( 
00001320  53 54 44 45 52 52 2C 20  22 20 22 2C 20 31 20 29  3B 0D 0A 20 20 20 20 20  20 77 72 69 74 65 28 20  STDERR, " ", 1 );♪◙      write( 
00001340  53 54 44 45 52 52 2C 20  6D 73 67 32 2C 20 73 74  72 6C 65 6E 28 6D 73 67  32 29 20 29 3B 0D 0A 20  STDERR, msg2, strlen(msg2) );♪◙ 
00001360  20 20 69 66 20 28 65 72  72 6E 6F 29 09 7B 0D 0A  20 20 20 20 20 20 73 70  72 69 6E 74 66 28 20 73    if (errno)○{♪◙      sprintf( s
00001380  74 65 6D 70 2C 22 20 23  25 64 22 2C 20 65 72 72  6E 6F 20 29 3B 0D 0A 20  20 20 20 20 20 77 72 69  temp," #%d", errno );♪◙      wri
000013A0  74 65 28 20 53 54 44 45  52 52 2C 20 73 74 65 6D  70 2C 20 73 74 72 6C 65  6E 28 73 74 65 6D 70 29  te( STDERR, stemp, strlen(stemp)
000013C0  20 29 3B 0D 0A 20 20 20  7D 0D 0A 20 20 20 77 72  69 74 65 28 20 53 54 44  45 52 52 2C 20 22 5C 72   );♪◙   }♪◙   write( STDERR, "\r
000013E0  5C 6E 22 2C 20 32 20 29  3B 0D 0A 20 20 20 5F 65  78 69 74 28 20 46 41 49  4C 20 29 3B 0D 0A 7D 0D  \n", 2 );♪◙   _exit( FAIL );♪◙}♪
00001400  0A 2F 2A 2A 20 45 4E 44  20 44 55 4D 50 20 2A 2A  2F 0D 0A 1A 00 00 00 00  00 00 00 00 00 00 00 00  ◙/** END DUMP **/♪◙→............
00001420  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00001440  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
00001460  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  ................................
[ RETURN TO DIRECTORY ]