home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / misc / volume15 / upm / part01 / upm.h < prev    next >
C/C++ Source or Header  |  1990-12-17  |  2KB  |  66 lines

  1. /*
  2.  
  3. upm.h - common data for upm.
  4.  
  5. (C) MCMXC - Nick Sayer - All rights reserved.
  6.  
  7. */
  8.  
  9. #include <stdio.h>
  10. #include "z80.h"
  11. extern char *sys_errlist[];
  12. extern int errno;
  13.  
  14. extern FILE *disks[16],*devices[5]; /* These are FILEs for CP/M devices */
  15.  
  16. extern WORD diskbufs[16]; /* These are pointers to disk paramater
  17.                              tables. See sel_dsk() */
  18.  
  19. /* Which devices[] go to which physical devices? */
  20. #define F_TTY 0
  21. #define F_LPT 1
  22. #define F_PTP 2
  23. #define F_PTR 2
  24. #define F_UL1 3
  25. #define F_UC1 3
  26. #define F_UP1 3
  27. #define F_UR1 3
  28. #define F_UR2 4
  29. #define F_UP2 4
  30.  
  31. /* Which command line args go to which physical devices? */
  32. #define F_TY 0
  33. #define F_LP 1
  34. #define F_PT 2
  35. #define F_U1 3
  36. #define F_U2 4
  37.  
  38. /*
  39.  
  40. When CP/M is run on a real system, the warm boot procedure reads
  41. in the CCP image from disk. Of course, we don't have a real disk,
  42. so the startup procedure for the emulator places the relocated
  43. image of the ccp into the following structure. Actually, the
  44. image size is 5.5K, so it incorporates BDOS as well.
  45.  
  46. */
  47.  
  48. #define SIZE_CCP_IMAGE 5632
  49. extern BYTE ccp_image[SIZE_CCP_IMAGE]; /* Save CCP for warm boot */
  50. extern WORD ccp_start; /* ... and where to put it */
  51.  
  52. /*
  53.  
  54. bios() implements the CP/M bios in C. The BIOS function to execute is
  55. determined by ((PC&0xff)/3). This assumes the BIOS starts on an even
  56. page boundary, which in most cases is a requirement anyway. This allows
  57. all sorts of silly things to happen if programs crunch up in strange
  58. ways, but that happens a lot with CP/M anyway. This routine takes no
  59. formal arguments, and has all sorts of side effects on the Z-80
  60. register pairs and the Z-80 memory space. The return value is non-zero
  61. if the EXIT BIOS entry (HALT at xx5D) is called.
  62.  
  63. */
  64.  
  65. extern char bios(); 
  66.