home *** CD-ROM | disk | FTP | other *** search
/ RISC DISC 1 / RISC_DISC_1.iso / pd_share / code / oslib / h / osword < prev    next >
Encoding:
Text File  |  1994-09-07  |  20.6 KB  |  637 lines

  1. #ifndef osword_H
  2. #define osword_H
  3.  
  4. /* C header file for OSWord
  5.  * written by DefMod (Sep  7 1994) on Wed Sep  7 21:20:08 1994
  6.  * Copyright © Acorn Computers Ltd, 1994
  7.  */
  8.  
  9. /*************************************************************************
  10.  * This source file was written by Acorn Computers Limited. It is part   *
  11.  * of the OSLib library for writing applications for RISC OS. It may be  *
  12.  * used freely in the creation of programs for RISC OS.                  *
  13.  *************************************************************************/
  14.  
  15. #ifndef types_H
  16.    #include "types.h"
  17. #endif
  18.  
  19. #ifndef os_H
  20.    #include "os.h"
  21. #endif
  22.  
  23. /**********************************
  24.  * SWI names and SWI reason codes *
  25.  **********************************/
  26. #undef  OS_Word
  27. #define OS_Word                                 0x7
  28. #undef  XOS_Word
  29. #define XOS_Word                                0x20007
  30. #undef  WordV
  31. #define WordV                                   0x7
  32. #undef  OSWord_ReadLine
  33. #define OSWord_ReadLine                         0x0
  34. #undef  OSWord_ReadSystemClock
  35. #define OSWord_ReadSystemClock                  0x1
  36. #undef  OSWord_WriteSystemClock
  37. #define OSWord_WriteSystemClock                 0x2
  38. #undef  OSWord_ReadIntervalTimer
  39. #define OSWord_ReadIntervalTimer                0x3
  40. #undef  OSWord_WriteIntervalTimer
  41. #define OSWord_WriteIntervalTimer               0x4
  42. #undef  OSWord_ReadGCOL
  43. #define OSWord_ReadGCOL                         0x9
  44. #undef  OSWord_ReadCharDefinition
  45. #define OSWord_ReadCharDefinition               0xA
  46. #undef  OSWord_ReadPalette
  47. #define OSWord_ReadPalette                      0xB
  48. #undef  OSWord_WritePalette
  49. #define OSWord_WritePalette                     0xC
  50. #undef  OSWord_ReadCursorPosition
  51. #define OSWord_ReadCursorPosition               0xD
  52. #undef  OSWordRead_Clock
  53. #define OSWordRead_Clock                        0xE
  54. #undef  OSWordReadClock_LocalString
  55. #define OSWordReadClock_LocalString             0xE
  56. #undef  OSWordReadClock_LocalBCD
  57. #define OSWordReadClock_LocalBCD                0xE
  58. #undef  OSWordReadClock_ConvertBCDToString
  59. #define OSWordReadClock_ConvertBCDToString      0xE
  60. #undef  OSWordReadClock_UTC
  61. #define OSWordReadClock_UTC                     0xE
  62. #undef  OSWord_WriteClock
  63. #define OSWord_WriteClock                       0xF
  64. #undef  OSWordWriteClock_TimeLocalString
  65. #define OSWordWriteClock_TimeLocalString        0xF
  66. #undef  OSWordWriteClock_DateLocalString
  67. #define OSWordWriteClock_DateLocalString        0xF
  68. #undef  OSWordWriteClock_DateAndTimeLocalString
  69. #define OSWordWriteClock_DateAndTimeLocalString 0xF
  70. #undef  OSWord_Pointer
  71. #define OSWord_Pointer                          0x15
  72. #undef  OSWordPointer_Define
  73. #define OSWordPointer_Define                    0x15
  74. #undef  OSWordPointer_SetBBox
  75. #define OSWordPointer_SetBBox                   0x15
  76. #undef  OSWordPointer_Step
  77. #define OSWordPointer_Step                      0x15
  78. #undef  OSWordPointer_SetPosition
  79. #define OSWordPointer_SetPosition               0x15
  80. #undef  OSWordPointer_ReadPosition
  81. #define OSWordPointer_ReadPosition              0x15
  82. #undef  OSWordPointer_SetUnlinkedPosition
  83. #define OSWordPointer_SetUnlinkedPosition       0x15
  84. #undef  OSWordPointer_ReadUnlinkedPosition
  85. #define OSWordPointer_ReadUnlinkedPosition      0x15
  86. #undef  OSWord_WriteScreenBase
  87. #define OSWord_WriteScreenBase                  0x16
  88.  
  89. /************************************
  90.  * Structure and union declarations *
  91.  ************************************/
  92. typedef struct osword_line_block                osword_line_block;
  93. typedef struct osword_timer_block               osword_timer_block;
  94. typedef struct osword_gcol_block                osword_gcol_block;
  95. typedef struct osword_char_definition_block     osword_char_definition_block;
  96. typedef struct osword_palette_block             osword_palette_block;
  97. typedef struct osword_cursor_position_block     osword_cursor_position_block;
  98. typedef union  oswordreadclock_local_string_block oswordreadclock_local_string_block;
  99. typedef union  oswordreadclock_local_bcd_block  oswordreadclock_local_bcd_block;
  100. typedef union  oswordreadclock_convert_bcd_to_string_block oswordreadclock_convert_bcd_to_string_block;
  101. typedef union  oswordreadclock_utc_block        oswordreadclock_utc_block;
  102. typedef struct oswordwriteclock_block           oswordwriteclock_block;
  103. typedef struct oswordpointer_define_block       oswordpointer_define_block;
  104. typedef struct oswordpointer_bbox_block         oswordpointer_bbox_block;
  105. typedef struct oswordpointer_step_block         oswordpointer_step_block;
  106. typedef struct oswordpointer_position_block     oswordpointer_position_block;
  107. typedef struct osword_screen_base_block         osword_screen_base_block;
  108. typedef union  osword_block                     osword_block;
  109.  
  110. /********************
  111.  * Type definitions *
  112.  ********************/
  113. struct osword_line_block
  114.    {  short line;
  115.       byte size;
  116.       byte min_char;
  117.       byte max_char;
  118.    };
  119.  
  120. struct osword_timer_block
  121.    {  byte b [5];
  122.    };
  123.  
  124. struct osword_gcol_block
  125.    {  short x;
  126.       short y;
  127.       os_gcol gcol;
  128.    };
  129.  
  130. struct osword_char_definition_block
  131.    {  char c;
  132.       byte definition [8];
  133.    };
  134.  
  135. struct osword_palette_block
  136.    {  os_gcol gcol;
  137.       byte colour_number;
  138.       byte r;
  139.       byte g;
  140.       byte b;
  141.    };
  142.  
  143. struct osword_cursor_position_block
  144.    {  short xprev;
  145.       short yprev;
  146.       short x;
  147.       short y;
  148.    };
  149.  
  150. union oswordreadclock_local_string_block
  151.    {  byte op;
  152.       struct
  153.       {  char c [UNKNOWN];
  154.       }
  155.       string;
  156.    };
  157.  
  158. union oswordreadclock_local_bcd_block
  159.    {  byte op;
  160.       os_bcd_date_and_time date_and_time;
  161.    };
  162.  
  163. union oswordreadclock_convert_bcd_to_string_block
  164.    {  struct
  165.       {  byte op;
  166.          os_bcd_date_and_time date_and_time;
  167.       }
  168.       bcd;
  169.       struct
  170.       {  char c [UNKNOWN];
  171.       }
  172.       string;
  173.    };
  174.  
  175. union oswordreadclock_utc_block
  176.    {  byte op;
  177.       os_date_and_time utc;
  178.    };
  179.  
  180. struct oswordwriteclock_block
  181.    {  byte op;
  182.       char string [UNKNOWN];
  183.    };
  184.  
  185. #define oswordwriteclock_BLOCK(N) \
  186.    struct \
  187.       {  byte op; \
  188.          char string [N]; \
  189.       }
  190.  
  191. #define oswordwriteclock_SIZEOF_BLOCK(N) \
  192.    (offsetof (oswordwriteclock_block, string) + \
  193.          (N)*sizeof ((oswordwriteclock_block *) NULL)->string)
  194.  
  195. struct oswordpointer_define_block
  196.    {  byte reserved [2];
  197.       byte op;
  198.       byte shape_no;
  199.       byte width;
  200.       byte height;
  201.       byte xactive;
  202.       byte yactive;
  203.       byte *data;
  204.    };
  205.  
  206. struct oswordpointer_bbox_block
  207.    {  byte reserved [3];
  208.       byte op;
  209.       short x0;
  210.       short y0;
  211.       short x1;
  212.       short y1;
  213.    };
  214.  
  215. struct oswordpointer_step_block
  216.    {  byte op;
  217.       byte xstep;
  218.       byte ystep;
  219.    };
  220.  
  221. struct oswordpointer_position_block
  222.    {  byte reserved;
  223.       byte op;
  224.       short x;
  225.       short y;
  226.    };
  227.  
  228. struct osword_screen_base_block
  229.    {  byte reserved [3];
  230.       byte type;
  231.       byte *base;
  232.    };
  233.  
  234. union osword_block
  235.    {  osword_line_block line;
  236.       osword_timer_block timer;
  237.       osword_gcol_block gcol;
  238.       osword_char_definition_block char_definition;
  239.       osword_palette_block palette;
  240.       osword_cursor_position_block cursor_position;
  241.       oswordreadclock_local_string_block string;
  242.       oswordreadclock_local_bcd_block bcd;
  243.       oswordreadclock_convert_bcd_to_string_block convert_bcd_to_string;
  244.       oswordreadclock_utc_block utc;
  245.       oswordwriteclock_block write_clock;
  246.       oswordpointer_define_block pointer_define;
  247.       oswordpointer_bbox_block pointer_bbox;
  248.       oswordpointer_step_block pointer_step;
  249.       oswordpointer_position_block pointer_position;
  250.       osword_screen_base_block screen_base;
  251.    };
  252.  
  253. /************************
  254.  * Constant definitions *
  255.  ************************/
  256. #define oswordreadclock_OP_LOCAL_STRING         0
  257. #define oswordreadclock_OP_LOCAL_BCD            1
  258. #define oswordreadclock_OP_CONVERT_BCD_TO_STRING 2
  259. #define oswordreadclock_OP_UTC                  3
  260. #define oswordwriteclock_OP_TIME_LOCAL_STRING   8
  261. #define oswordwriteclock_OP_DATE_LOCAL_STRING   15
  262. #define oswordwriteclock_OP_LOCAL_STRING        24
  263. #define oswordpointer_OP_DEFINE                 0
  264. #define oswordpointer_OP_SET_BBOX               1
  265. #define oswordpointer_OP_STEP                   2
  266. #define oswordpointer_OP_SET_POSITION           3
  267. #define oswordpointer_OP_READ_POSITION          4
  268. #define oswordpointer_OP_SET_UNLINKED_POSITION  5
  269. #define oswordpointer_OP_READ_UNLINKED_POSITION 6
  270. #define osword_CHAR_DEFINITION_ECF1             ((char) '\x02')
  271. #define osword_CHAR_DEFINITION_ECF2             ((char) '\x03')
  272. #define osword_CHAR_DEFINITION_ECF3             ((char) '\x04')
  273. #define osword_CHAR_DEFINITION_ECF4             ((char) '\x05')
  274. #define osword_CHAR_DEFINITION_DOT_DASH_PATTERN ((char) '\x06')
  275.  
  276. /*************************
  277.  * Function declarations *
  278.  *************************/
  279.  
  280. #ifdef __cplusplus
  281.    extern "C" {
  282. #endif
  283.  
  284. /*************************************************************
  285.  * NOTE: The following functions provide direct access to    *
  286.  *       the SWI's noted in the function description.        *
  287.  *       Please read the relevant PRM section for more       *
  288.  *       information on their input/output parameters.       *
  289.  *************************************************************/
  290.  
  291. /* ------------------------------------------------------------------------
  292.  * Function:      osword_read_line()
  293.  *
  294.  * Description:   Reads a line from the input stream to memory (prefer
  295.  *                OS_ReadLine)
  296.  *
  297.  * Input:         line - value of R1 on entry
  298.  *
  299.  * Output:        used - value of R2 on exit
  300.  *                psr - processor status register on exit (X version only)
  301.  *
  302.  * Returns:       psr (non-X version only)
  303.  *
  304.  * Other notes:   Calls SWI 0x7 with R0 = 0x0.
  305.  */
  306.  
  307. extern os_error *xosword_read_line (osword_line_block *line,
  308.       int *used,
  309.       bits *psr);
  310. extern bits osword_read_line (osword_line_block *line,
  311.       int *used);
  312.  
  313. /* ------------------------------------------------------------------------
  314.  * Function:      osword_read_system_clock()
  315.  *
  316.  * Description:   Reads the system clock
  317.  *
  318.  * Input:         clock - value of R1 on entry
  319.  *
  320.  * Other notes:   Calls SWI 0x7 with R0 = 0x1.
  321.  */
  322.  
  323. extern os_error *xosword_read_system_clock (osword_timer_block *clock);
  324. extern void osword_read_system_clock (osword_timer_block *clock);
  325.  
  326. /* ------------------------------------------------------------------------
  327.  * Function:      osword_write_system_clock()
  328.  *
  329.  * Description:   Writes the system clock
  330.  *
  331.  * Input:         clock - value of R1 on entry
  332.  *
  333.  * Other notes:   Calls SWI 0x7 with R0 = 0x2.
  334.  */
  335.  
  336. extern os_error *xosword_write_system_clock (osword_timer_block *clock);
  337. extern void osword_write_system_clock (osword_timer_block *clock);
  338.  
  339. /* ------------------------------------------------------------------------
  340.  * Function:      osword_read_interval_timer()
  341.  *
  342.  * Description:   Reads the interval timer
  343.  *
  344.  * Input:         timer - value of R1 on entry
  345.  *
  346.  * Other notes:   Calls SWI 0x7 with R0 = 0x3.
  347.  */
  348.  
  349. extern os_error *xosword_read_interval_timer (osword_timer_block *timer);
  350. extern void osword_read_interval_timer (osword_timer_block *timer);
  351.  
  352. /* ------------------------------------------------------------------------
  353.  * Function:      osword_write_interval_timer()
  354.  *
  355.  * Description:   Writes the interval timer
  356.  *
  357.  * Input:         timer - value of R1 on entry
  358.  *
  359.  * Other notes:   Calls SWI 0x7 with R0 = 0x4.
  360.  */
  361.  
  362. extern os_error *xosword_write_interval_timer (osword_timer_block *timer);
  363. extern void osword_write_interval_timer (osword_timer_block *timer);
  364.  
  365. /* ------------------------------------------------------------------------
  366.  * Function:      osword_read_gcol()
  367.  *
  368.  * Description:   Reads the logical colour of a pixel (prefer OS_ReadPoint)
  369.  *
  370.  * Input:         gcol - value of R1 on entry
  371.  *
  372.  * Other notes:   Calls SWI 0x7 with R0 = 0x9.
  373.  */
  374.  
  375. extern os_error *xosword_read_gcol (osword_gcol_block *gcol);
  376. extern void osword_read_gcol (osword_gcol_block *gcol);
  377.  
  378. /* ------------------------------------------------------------------------
  379.  * Function:      osword_read_char_definition()
  380.  *
  381.  * Description:   Reads a character definition
  382.  *
  383.  * Input:         definition - value of R1 on entry
  384.  *
  385.  * Other notes:   Calls SWI 0x7 with R0 = 0xA.
  386.  */
  387.  
  388. extern os_error *xosword_read_char_definition (osword_char_definition_block *definition);
  389. extern void osword_read_char_definition (osword_char_definition_block *definition);
  390.  
  391. /* ------------------------------------------------------------------------
  392.  * Function:      osword_read_palette()
  393.  *
  394.  * Description:   Reads the palette (prefer OS_ReadPalette)
  395.  *
  396.  * Input:         entry - value of R1 on entry
  397.  *
  398.  * Other notes:   Calls SWI 0x7 with R0 = 0xB.
  399.  */
  400.  
  401. extern os_error *xosword_read_palette (osword_palette_block *entry);
  402. extern void osword_read_palette (osword_palette_block *entry);
  403.  
  404. /* ------------------------------------------------------------------------
  405.  * Function:      osword_write_palette()
  406.  *
  407.  * Description:   Writes the palette (prefer os_VDU_SET_PALETTE)
  408.  *
  409.  * Input:         entry - value of R1 on entry
  410.  *
  411.  * Other notes:   Calls SWI 0x7 with R0 = 0xC.
  412.  */
  413.  
  414. extern os_error *xosword_write_palette (osword_palette_block *entry);
  415. extern void osword_write_palette (osword_palette_block *entry);
  416.  
  417. /* ------------------------------------------------------------------------
  418.  * Function:      osword_read_cursor_position()
  419.  *
  420.  * Description:   Reads the current and previous graphics cursor positions
  421.  *                (prefer OS_ReadVduVariables)
  422.  *
  423.  * Input:         position - value of R1 on entry
  424.  *
  425.  * Other notes:   Calls SWI 0x7 with R0 = 0xD.
  426.  */
  427.  
  428. extern os_error *xosword_read_cursor_position (osword_cursor_position_block *position);
  429. extern void osword_read_cursor_position (osword_cursor_position_block *position);
  430.  
  431. /* ------------------------------------------------------------------------
  432.  * Function:      oswordreadclock_local_string()
  433.  *
  434.  * Description:   Reads the real-time clock as a string, converting to
  435.  *                local time
  436.  *
  437.  * Input:         string - value of R1 on entry
  438.  *
  439.  * Other notes:   Calls SWI 0x7 with R0 = 0xE.
  440.  */
  441.  
  442. extern os_error *xoswordreadclock_local_string (oswordreadclock_local_string_block *string);
  443. extern void oswordreadclock_local_string (oswordreadclock_local_string_block *string);
  444.  
  445. /* ------------------------------------------------------------------------
  446.  * Function:      oswordreadclock_local_bcd()
  447.  *
  448.  * Description:   Reads the real-time clock in BCD format, converting to
  449.  *                local time
  450.  *
  451.  * Input:         bcd - value of R1 on entry
  452.  *
  453.  * Other notes:   Calls SWI 0x7 with R0 = 0xE.
  454.  */
  455.  
  456. extern os_error *xoswordreadclock_local_bcd (oswordreadclock_local_bcd_block *bcd);
  457. extern void oswordreadclock_local_bcd (oswordreadclock_local_bcd_block *bcd);
  458.  
  459. /* ------------------------------------------------------------------------
  460.  * Function:      oswordreadclock_convert_bcd_to_string()
  461.  *
  462.  * Description:   Converts a BCD clock value into string format
  463.  *
  464.  * Input:         convert_bcd_to_String - value of R1 on entry
  465.  *
  466.  * Other notes:   Calls SWI 0x7 with R0 = 0xE.
  467.  */
  468.  
  469. extern os_error *xoswordreadclock_convert_bcd_to_string (oswordreadclock_convert_bcd_to_string_block *convert_bcd_to_String);
  470. extern void oswordreadclock_convert_bcd_to_string (oswordreadclock_convert_bcd_to_string_block *convert_bcd_to_String);
  471.  
  472. /* ------------------------------------------------------------------------
  473.  * Function:      oswordreadclock_utc()
  474.  *
  475.  * Description:   Reads the real-time clock in 5-byte format
  476.  *
  477.  * Input:         utc - value of R1 on entry
  478.  *
  479.  * Other notes:   Calls SWI 0x7 with R0 = 0xE.
  480.  */
  481.  
  482. extern os_error *xoswordreadclock_utc (oswordreadclock_utc_block *utc);
  483. extern void oswordreadclock_utc (oswordreadclock_utc_block *utc);
  484.  
  485. /* ------------------------------------------------------------------------
  486.  * Function:      oswordwriteclock_time_local_string()
  487.  *
  488.  * Description:   Writes the real-time clock with a time string, converting
  489.  *                from local time
  490.  *
  491.  * Input:         time - value of R1 on entry
  492.  *
  493.  * Other notes:   Calls SWI 0x7 with R0 = 0xF.
  494.  */
  495.  
  496. extern os_error *xoswordwriteclock_time_local_string (oswordwriteclock_block *time);
  497. extern void oswordwriteclock_time_local_string (oswordwriteclock_block *time);
  498.  
  499. /* ------------------------------------------------------------------------
  500.  * Function:      oswordwriteclock_date_local_string()
  501.  *
  502.  * Description:   Writes the real-time clock with a date string, converting
  503.  *                from local time
  504.  *
  505.  * Input:         date - value of R1 on entry
  506.  *
  507.  * Other notes:   Calls SWI 0x7 with R0 = 0xF.
  508.  */
  509.  
  510. extern os_error *xoswordwriteclock_date_local_string (oswordwriteclock_block *date);
  511. extern void oswordwriteclock_date_local_string (oswordwriteclock_block *date);
  512.  
  513. /* ------------------------------------------------------------------------
  514.  * Function:      oswordwriteclock_date_and_time_local_string()
  515.  *
  516.  * Description:   Writes the real-time clock with a time and date string,
  517.  *                converting from local time
  518.  *
  519.  * Input:         date_and_time - value of R1 on entry
  520.  *
  521.  * Other notes:   Calls SWI 0x7 with R0 = 0xF.
  522.  */
  523.  
  524. extern os_error *xoswordwriteclock_date_and_time_local_string (oswordwriteclock_block *date_and_time);
  525. extern void oswordwriteclock_date_and_time_local_string (oswordwriteclock_block *date_and_time);
  526.  
  527. /* ------------------------------------------------------------------------
  528.  * Function:      oswordpointer_define()
  529.  *
  530.  * Description:   Defines the pointer size, shape and active point (prefer
  531.  *                OSSpriteOp_SetPointerShape)
  532.  *
  533.  * Input:         define - value of R1 on entry
  534.  *
  535.  * Other notes:   Calls SWI 0x7 with R0 = 0x15, R1 += 0x2.
  536.  */
  537.  
  538. extern os_error *xoswordpointer_define (oswordpointer_define_block *define);
  539. extern void oswordpointer_define (oswordpointer_define_block *define);
  540.  
  541. /* ------------------------------------------------------------------------
  542.  * Function:      oswordpointer_set_bbox()
  543.  *
  544.  * Description:   Defines the mouse coordinate bounding box
  545.  *
  546.  * Input:         bbox - value of R1 on entry
  547.  *
  548.  * Other notes:   Calls SWI 0x7 with R0 = 0x15, R1 += 0x3.
  549.  */
  550.  
  551. extern os_error *xoswordpointer_set_bbox (oswordpointer_bbox_block *bbox);
  552. extern void oswordpointer_set_bbox (oswordpointer_bbox_block *bbox);
  553.  
  554. /* ------------------------------------------------------------------------
  555.  * Function:      oswordpointer_step()
  556.  *
  557.  * Description:   Defines the mouse multipliers
  558.  *
  559.  * Input:         step - value of R1 on entry
  560.  *
  561.  * Other notes:   Calls SWI 0x7 with R0 = 0x15.
  562.  */
  563.  
  564. extern os_error *xoswordpointer_step (oswordpointer_step_block *step);
  565. extern void oswordpointer_step (oswordpointer_step_block *step);
  566.  
  567. /* ------------------------------------------------------------------------
  568.  * Function:      oswordpointer_set_position()
  569.  *
  570.  * Description:   Sets the mouse position
  571.  *
  572.  * Input:         pos - value of R1 on entry
  573.  *
  574.  * Other notes:   Calls SWI 0x7 with R0 = 0x15, R1 += 0x1.
  575.  */
  576.  
  577. extern os_error *xoswordpointer_set_position (oswordpointer_position_block *pos);
  578. extern void oswordpointer_set_position (oswordpointer_position_block *pos);
  579.  
  580. /* ------------------------------------------------------------------------
  581.  * Function:      oswordpointer_read_position()
  582.  *
  583.  * Description:   Reads the unbuffered mouse position
  584.  *
  585.  * Input:         pos - value of R1 on entry
  586.  *
  587.  * Other notes:   Calls SWI 0x7 with R0 = 0x15, R1 += 0x1.
  588.  */
  589.  
  590. extern os_error *xoswordpointer_read_position (oswordpointer_position_block *pos);
  591. extern void oswordpointer_read_position (oswordpointer_position_block *pos);
  592.  
  593. /* ------------------------------------------------------------------------
  594.  * Function:      oswordpointer_set_unlinked_position()
  595.  *
  596.  * Description:   Sets the pointer position
  597.  *
  598.  * Input:         pos - value of R1 on entry
  599.  *
  600.  * Other notes:   Calls SWI 0x7 with R0 = 0x15, R1 += 0x1.
  601.  */
  602.  
  603. extern os_error *xoswordpointer_set_unlinked_position (oswordpointer_position_block *pos);
  604. extern void oswordpointer_set_unlinked_position (oswordpointer_position_block *pos);
  605.  
  606. /* ------------------------------------------------------------------------
  607.  * Function:      oswordpointer_read_unlinked_position()
  608.  *
  609.  * Description:   Reads the pointer position
  610.  *
  611.  * Input:         pos - value of R1 on entry
  612.  *
  613.  * Other notes:   Calls SWI 0x7 with R0 = 0x15, R1 += 0x1.
  614.  */
  615.  
  616. extern os_error *xoswordpointer_read_unlinked_position (oswordpointer_position_block *pos);
  617. extern void oswordpointer_read_unlinked_position (oswordpointer_position_block *pos);
  618.  
  619. /* ------------------------------------------------------------------------
  620.  * Function:      osword_write_screen_base()
  621.  *
  622.  * Description:   Writes the screen base address
  623.  *
  624.  * Input:         screen_base - value of R1 on entry
  625.  *
  626.  * Other notes:   Calls SWI 0x7 with R0 = 0x16, R1 += 0x3.
  627.  */
  628.  
  629. extern os_error *xosword_write_screen_base (osword_screen_base_block *screen_base);
  630. extern void osword_write_screen_base (osword_screen_base_block *screen_base);
  631.  
  632. #ifdef __cplusplus
  633.    }
  634. #endif
  635.  
  636. #endif
  637.