home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug039.arc / CPMADR.C < prev    next >
Text File  |  1979-12-31  |  3KB  |  62 lines

  1. /* program to experiment with cpm addresses */
  2.  
  3. main()
  4. {
  5. int    wb,cs,ci,co,lo,po,ro,hd,sd,st,ss;
  6. int    sdma,rd,wd,rl,strn,dphadr,seldrv,logdrv;
  7. int    xtbl,diradr,dpbadr,dava,davb;
  8. int    spt,bsh,blm,exm,dsm,mdb,drm,al0;
  9. char    drv;
  10. wb=getadr(1);
  11. cs=wb+3;   ci=cs+3; co=ci+3; lo=co+3; po=lo+3;
  12. ro=po+3;   hd=ro+3; sd=hd+3; st=sd+3; ss=st+3; sdma=ss+3;
  13. rd=sdma+3; wd=rd+3; rl=wd+3; strn=rl+3;
  14.  
  15. Printf("\n\nCP/M Data Program Version 1.0 by C. B. Mueller 12/15/82\n\n");
  16. printf("This program will print CP/M information based on your system");
  17. printf(" size\nand attributes of the drive that it is run on.\n\n");
  18. printf("%x = CCP Start Address\n",wb-0x1603);
  19. printf("%x = BDOS Start Address\n",wb-0xE03);
  20. printf("%x = BIOS start Address (Cold Boot)\n\n",wb-3);
  21. printf("BIOS ENTRY ADDRESS\n");
  22. printf("%x = Warm Boot\t\t%x = Select Disk\n",wb,sd);
  23. printf("%x = Console Stat\t\t%x = Set Track Number\n",cs,st);
  24. printf("%x = Console Input\t\t%x = Set Sector number\n",ci,ss);
  25. printf("%x = Console Output\t\t%x = Set DMA Address\n",co,sdma);
  26. printf("%x = List Output\t\t%x = Read Disk\n",lo,rd);
  27. printf("%x = Punch Output\t\t%x = Write Disk\n",po,wd);
  28. printf("%x = Reader Output\t\t%x = Return List Status\n",ro,rl);
  29. printf("%x = Home Drive\t\t%x = Sector Translate\n\n",hd,strn);
  30.  
  31. logdrv=peek(4);
  32. if(logdrv==0)drv='A';
  33. else
  34. drv='B';
  35. dphadr=call(sd,0,0,logdrv,0);
  36. printf("DRIVE %c DISK PARAMETER HEADER TABLES\n",drv);
  37. printf("Disk Parmater Header Address = %x\n",dphadr);
  38. printf("Translation Table Address    = %x\n",xtbl=getadr(dphadr));
  39. printf("Directory Buffer Address     = %x\n",diradr=getadr(dphadr+8));
  40. printf("Disk Parameter Block Address = %x\n",dpbadr=getadr(dphadr+10));
  41. printf("Disk Allocation Vector       = %x\n\n",dava=getadr(dphadr+14));
  42. printf("DISK %c PARAMETER BLOCK TABLES\n");
  43. printf("Logical Sectors per Track   = %dD\n",spt=peek(dpbadr));
  44. printf("Block Shift Factor          = %dD\n",bsh=peek(dpbadr+2));
  45. printf("Block Mask                  = %x\n",blm=peek(dpbadr+3));
  46. printf("Extent Mask                 = %x\n",exm=peek(dpbadr+4));
  47. printf("Max Disk Blocks             = %dD\n",dsm=(getadr(dpbadr+5)+1));
  48. printf("Max Directory Entries       = %dD\n",drm=(peek(dpbadr+7)+1));
  49. printf("Directory Block Alloc       = %x\n",al0=peek(dpbadr+9));
  50. exit();
  51. }
  52.  
  53. getadr(lobyte)
  54. int lobyte;
  55. {
  56. int    lsbyte,msbyte,adr;
  57.  
  58. lsbyte=peek(lobyte);
  59. msbyte=peek(lobyte+1);
  60. adr = (msbyte * 0x100)+lsbyte;
  61. return(adr);
  62. }