============================================================================================================================================== 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 ................................