/************************************************************ * Dump an ADAM block in hex to stdout ************************************************************* * 1.00 12/1/94 Chris Braymen Creation under Borland C 3.1 *************************************************************/ #define TRUE 1 #define FALSE 0 #define BUFSIZE 1024 #define BDRESET 0x00 #define BDSTATUS 0x01 #define BDREAD 0x02 #define BDWRITE 0x03 #define BDVERIFY 0x04 #define BDFORMAT 0x05 #define FLOPPY1 0x00 #define HEAD0 0x00 #define HEAD1 0x01 #define ONESECTOR 0x01 #include #include #include #include #include #include "adamfcb.h" unsigned char buffer[BUFSIZE]; int blockNumber; char version[] = "v1.00"; // Prototypes int processArgs(int,char**); void showHex(void); #include "Readblk.c" int main(argc,argv) int argc; char *argv[]; { if(!processArgs(argc,argv)) { printf("HEXADAM %s - Public Domain from Bonafide Systems\n\n",version); printf("\nUsage: HEXADAM \n\n"); exit(0); } if(readBlock(blockNumber,buffer)) { printf("Error reading block %d\n",blockNumber); exit(0); } showHex(); return 0; } /******************************************************* * processArgs - process the command line args * sets global blockNumber ********************************************************/ processArgs(argc,argv) int argc; char *argv[]; { if(argc != 2) return(FALSE); blockNumber=atoi(argv[1]); if(blockNumber<0 || blockNumber > 319) return(FALSE); return(TRUE); } /********************************************************** * showHex **********************************************************/ void showHex() { int i,j,k; char myChars[18]; unsigned char *bufferPtr,*myCharsPtr; bufferPtr=buffer; for(i=0;i<1024/16;i++) { printf("%03x: ",i*16); myCharsPtr=myChars; for(j=0;j<2;j++) { for(k=0;k<8;k++) { printf("%02x ",*bufferPtr); if(isprint(*bufferPtr)) *myCharsPtr=*bufferPtr; else *myCharsPtr='.'; myCharsPtr++; bufferPtr++; } *myCharsPtr=' '; myCharsPtr++; putchar(' '); } putchar(' '); *myCharsPtr='\0'; puts(myChars); } }