#include <stdio.h>
#include <stdlib.h>
#include <dos.h>

typedef struct
{
  unsigned char int20h[2];
  unsigned mem_top;
  unsigned char reserv1;
  unsigned char call_dsp[5];
  void far *term_adr;
  void far *cbrk_adr;
  void far *crit_err;
  unsigned parn_psp;
  unsigned char file_tab[20];
  unsigned env_seg;
  void far *ss_sp;
  unsigned max_open;
  void far *file_tba;
  unsigned char reserv2[24];
  unsigned char disp[3];
  unsigned char reserv3[9];
  unsigned char fcb1[16];
  unsigned char fcb2[20];
  unsigned char p_size;
  unsigned char parm[127];
} PSP;

void main(void)
{
  PSP far *psp_ptr;

  // Конструируем указатель на PSP
  psp_ptr = (PSP far *)MK_FP(_psp, 0);

  printf("PSP расположен по адресу:    %Fp\n"
	 "Доступно памяти, байт:       %ld\n"
	 "PSP родительской программы:  %Fp\n"
	 "\n",
	 psp_ptr,
	 (long)(psp_ptr->mem_top)*16L,
	 MK_FP(psp_ptr->parn_psp, 0));
}

