home *** CD-ROM | disk | FTP | other *** search
/ Columbia Kermit / kermit.zip / archimedes / ararthur.h < prev    next >
C/C++ Source or Header  |  2020-01-01  |  2KB  |  68 lines

  1. /* > h.arthur
  2. ** Fake arthur.h for Acorn C compilers V4 or greater
  3. ** which no longer supply it.
  4. ** Even if you have arthur.h, this must be used instead as the
  5. ** functions defined in the original are no longer present in
  6. ** the C library.
  7. */
  8.  
  9. #ifndef _FAKE_ARTHUR
  10. #define _FAKE_ARTHUR
  11.  
  12. #include "swis.h"
  13. #include "kernel.h"
  14. #include "bbc.h"                  /* From RISC OS Lib */
  15.  
  16. /* Map structure names */
  17.  
  18. #define error   _kernel_oserror
  19. #define reg_set _kernel_swi_regs
  20.  
  21. /* Define structures */
  22. /* These two conveniently map directly to _kernel_swi_regs structures
  23.  * thus simplifying osfile() and osgbpb() functions.
  24.  */
  25.  
  26. typedef struct {
  27.     int action;         /* specifies action of osgbpb */
  28.     int file_handle;    /* file handle, but may be used as a char *
  29.                          * pointing to wildcarded dir-name */
  30.     char *data_addr;    /* memory address of data */
  31.     int number;         /* number of entries to read */
  32.     int seq_point;      /* starting entry number */
  33.     int buf_len;        /* output buffer length */
  34.     char *wild_fld;     /* points to wildcarded filename to match */
  35.     int reserved[3];    /* space to allow treatment as reg_set */
  36. } osgbpb_block;
  37.  
  38. typedef struct
  39. {
  40.     int action;         /* action or object type if output data */
  41.     char *name;         /* pointer to filename or pathname */
  42.     int loadaddr;       /* load address */
  43.     int execaddr;       /* exec address */
  44.     int start;          /* start address/length */
  45.     int end;            /* end address/attributes */
  46.     int reserved[4];    /* space to allow treatment as reg_set */
  47. } osfile_block;
  48.  
  49. /* Map function names */
  50.  
  51. #define swix(N,R) _kernel_swi(N, R, R)
  52. #define osbyte(X) _kernel_swi(OS_Byte, X, X)
  53. #define osfind(X) _kernel_swi(OS_Find, X, X)
  54. #define osfile(X) _kernel_swi(OS_File, (reg_set*)X, (reg_set*)X)
  55. #define osgbpb(X) _kernel_swi(OS_GBPB, (reg_set*)X, (reg_set*)X)
  56. #define vdu(X)     bbc_vdu(X)
  57. #define mode(X)    bbc_mode(X)
  58.  
  59. /* Define functions */
  60.  
  61. /* old OS_Word returns error block, new OS_Word returns integer */
  62.  
  63. #define osword(N,P) \
  64.   ( (_kernel_osword(N,P)<0) ? _kernel_last_oserror() : NULL )
  65.  
  66.  
  67. #endif /* _FAKE_ARTHUR */
  68.