Commit bf5bc87d authored by Robert Sprowson's avatar Robert Sprowson Committed by ROOL
Browse files

Use defines for SWI args

Substitute #defines from the central headers where possible.
Remove assumption of log2bpp being calculable from bits 27-31 of sprite words.

Version 0.24. Tagged as 'TreeView-0_24'
parent f3a5f77a
/* (0.23)
/* (0.24)
*
* This file is automatically maintained by srccommit, do not edit manually.
*
*/
#define Module_MajorVersion_CMHG 0.23
#define Module_MajorVersion_CMHG 0.24
#define Module_MinorVersion_CMHG
#define Module_Date_CMHG 22 Aug 2019
#define Module_Date_CMHG 01 May 2022
#define Module_MajorVersion "0.23"
#define Module_Version 23
#define Module_MajorVersion "0.24"
#define Module_Version 24
#define Module_MinorVersion ""
#define Module_Date "22 Aug 2019"
#define Module_Date "01 May 2022"
#define Module_ApplicationDate "22-Aug-19"
#define Module_ApplicationDate "01-May-22"
#define Module_ComponentName "TreeView"
#define Module_FullVersion "0.23"
#define Module_HelpVersion "0.23 (22 Aug 2019)"
#define Module_LibraryVersionInfo "0:23"
#define Module_FullVersion "0.24"
#define Module_HelpVersion "0.24 (01 May 2022)"
#define Module_LibraryVersionInfo "0:24"
......@@ -28,6 +28,8 @@
#include <stdlib.h>
#include <string.h>
#include <stdbool.h>
#include "Global/Sprite.h"
#include "Global/VduExt.h"
#include "Main.h"
......@@ -77,7 +79,7 @@ static SpriteArea *make_drag_sprite(PrivateTreeView *me, TreeNode *node, int *xs
char *text_ptr = NULL;
/* find pixel depth of screen */
EL(_swix(OS_ReadModeVariable, _INR(0,1) | _OUT(2), -1, 9, &log2bpp), e, fail);
EL(_swix(OS_ReadModeVariable, _INR(0,1) | _OUT(2), -1, VduExt_Log2BPP, &log2bpp), e, fail);
/* find the sprite area and ctrl block ptrs of the source sprite */
/* The sprite may not exist, which is OK */
......@@ -85,7 +87,7 @@ static SpriteArea *make_drag_sprite(PrivateTreeView *me, TreeNode *node, int *xs
e = rikslib_find_wimp_sprite(node->sprite, &src_area, &src_spr);
} else {
src_area = node->sprite_area;
e = _swix(OS_SpriteOp, _INR(0,2) | _OUT(2), 0x118, src_area, node->sprite, &src_spr);
e = _swix(OS_SpriteOp, _INR(0,2) | _OUT(2), 256+SpriteReason_SelectSprite, src_area, node->sprite, &src_spr);
}
/* find size of node text in PIXELS, if there is any */
......@@ -142,16 +144,14 @@ static SpriteArea *make_drag_sprite(PrivateTreeView *me, TreeNode *node, int *xs
area->num_sprites = 0;
area->sprite_offset = 16;
area->free_offset = 16;
EL(_swix(OS_SpriteOp, _INR(0,1), 0x109, area), e, fail);
EL(_swix(OS_SpriteOp, _INR(0,1), 256+SpriteReason_ClearSprites, area), e, fail);
DEBUG(DEBUG_LEVEL, ("Allocated sprite area at %p size %d\n", (void *)area, size));
/* create sprite, same bpp as the current screen mode */
EL(_swix(OS_SpriteOp, _INR(0,6), 0x10f, area, "temp", 0, xs, ys,
EL(_swix(OS_SpriteOp, _INR(0,6), 256+SpriteReason_CreateSprite, area, "temp", 0, xs, ys,
1 | (90<<1) | (90<<14) | ((log2bpp+1)<<27) ), e, fail);
/* get sprite pointer */
EL(_swix(OS_SpriteOp, _INR(0,2) | _OUT(2), 0x118, area, "temp", &sprite), e, fail);
/* add a mask */
// EL(_swix(OS_SpriteOp, _INR(0,2), 0x21d, area, sprite), e, fail);
EL(_swix(OS_SpriteOp, _INR(0,2) | _OUT(2), 256+SpriteReason_SelectSprite, area, "temp", &sprite), e, fail);
DEBUG(DEBUG_LEVEL, ("Destination sprite: %p size %d x %d\n", (void *)sprite, xs, ys));
......@@ -159,7 +159,7 @@ static SpriteArea *make_drag_sprite(PrivateTreeView *me, TreeNode *node, int *xs
if (save_area == NULL) {
int save_size;
EL(_swix(OS_SpriteOp, _INR(0,2) | _OUT(3), 0x23e, area, sprite, &save_size),
EL(_swix(OS_SpriteOp, _INR(0,2) | _OUT(3), 512+SpriteReason_ReadSaveAreaSize, area, sprite, &save_size),
e, fail);
if ((save_area = _mem_allocate(save_size)) == NULL) goto nomem;
save_area[0] = 0;
......@@ -167,7 +167,7 @@ static SpriteArea *make_drag_sprite(PrivateTreeView *me, TreeNode *node, int *xs
}
/* switch output to sprite */
EL(_swix(OS_SpriteOp, _INR(0,3) | _OUTR(0,3), 0x23c, area, sprite, save_area,
EL(_swix(OS_SpriteOp, _INR(0,3) | _OUTR(0,3), 512+SpriteReason_SwitchOutputToSprite, area, sprite, save_area,
&a, &b, &c, &d), e, fail);
_swix(ColourTrans_SetGCOL, _IN(0) | _INR(3,4), 0xe0e0e000, (1<<7), 0);
......@@ -177,7 +177,7 @@ static SpriteArea *make_drag_sprite(PrivateTreeView *me, TreeNode *node, int *xs
if (src_area != NULL) {
/* plot sprite */
EL(_swix(OS_SpriteOp, _INR(0,7), 0x234, src_area, src_spr, spr_x, spr_y, (1<<5)|8, 0, table), e, fail);
EL(_swix(OS_SpriteOp, _INR(0,7), 512+SpriteReason_PutSpriteScaled, src_area, src_spr, spr_x, spr_y, (1<<5)|8, 0, table), e, fail);
DEBUG(DEBUG_LEVEL, (" plotted sprite\n"));
}
......@@ -219,7 +219,7 @@ static SpriteArea *make_drag_sprite(PrivateTreeView *me, TreeNode *node, int *xs
#if Debug_On
char name[256];
snprintf(name, 256, "ram::0.$.drag-%dx%d", xs, ys);
_swix(OS_SpriteOp, _INR(0,2), 0x10c, area, name);
_swix(OS_SpriteOp, _INR(0,2), 256+SpriteReason_SaveSpriteFile, area, name);
#endif
_mem_free(table);
......@@ -262,7 +262,7 @@ _kernel_oserror *drag_start(PrivateTreeView *me, TreeNode *node, WimpMouseClickE
sprite = "package";
/* get 'package' size */
EL(_swix(Wimp_SpriteOp, _INR(0,2) | _OUTR(3,4), 0x128, 0, sprite, &xs, &ys), e, fail);
EL(_swix(Wimp_SpriteOp, _INR(0,2) | _OUTR(3,4), 256+SpriteReason_ReadSpriteSize, 0, sprite, &xs, &ys), e, fail);
box.xmin = mouse->mouse_x - xs / 2;
box.ymin = mouse->mouse_y - ys / 2;
......
......@@ -31,6 +31,10 @@
#include <string.h>
#include "Global/Services.h"
#include "Global/Sprite.h"
#include "Global/VduExt.h"
#include "Global/OsBytes.h"
#include "Interface/HighFSI.h"
#define _main_c
#include "TreeViewHdr.h"
......@@ -184,10 +188,10 @@ _kernel_oserror *initialise(const char *cmd_tail, int podule, void *pw) {
/* Load our private sprites */
e = _swix(OS_File, _INR(0,1) | _OUT(0) | _OUT(4),
17, "TreeView:Sprites", &type, &length);
OSFile_ReadNoPath, "TreeView:Sprites", &type, &length);
if (e == NULL && type != 1) {
/* Make an error since not there */
e = _swix(OS_File, _INR(0,2), 19, "TreeView:Sprites", 0);
e = _swix(OS_File, _INR(0,2), OSFile_MakeError, "TreeView:Sprites", 0);
}
if (e) goto tidyclose;
length += sizeof(Sprites->size); /* Prefixed area size */
......@@ -199,8 +203,8 @@ _kernel_oserror *initialise(const char *cmd_tail, int podule, void *pw) {
}
Sprites->size = length;
Sprites->sprite_offset = 16;
e = _swix(OS_SpriteOp, _INR(0,1), 256+9, Sprites);
if (e == NULL) e = _swix(OS_SpriteOp, _INR(0,2), 256+10, Sprites, "TreeView:Sprites");
e = _swix(OS_SpriteOp, _INR(0,1), 256+SpriteReason_ClearSprites, Sprites);
if (e == NULL) e = _swix(OS_SpriteOp, _INR(0,2), 256+SpriteReason_LoadSpriteFile, Sprites, "TreeView:Sprites");
/* Get registered with Window */
if (e == NULL) e = register_gadgets();
......@@ -257,9 +261,9 @@ _kernel_oserror *swi_handler(int swi_no, _kernel_swi_regs *r, void *pw) {
IGNORE(pw);
DEBUG(2, ("\nSWI: %d\n", swi_no));
switch (swi_no + TreeView_00) {
switch (swi_no) {
case TreeView_TreeView :
case TreeView_TreeView - TreeView_00:
/* method code is in r[2] */
DEBUG(2, ("TreeView_TreeView called with method code %d %s\n", r->r[2], debug_method(r->r[2])));
......@@ -306,7 +310,7 @@ _kernel_oserror *swi_handler(int swi_no, _kernel_swi_regs *r, void *pw) {
break;
case TreeView_Filter:
case TreeView_Filter - TreeView_00:
r->r[0] = _filter(r);
DEBUG(2, ("Returning %d from filter\n", r->r[0]));
break;
......@@ -357,8 +361,8 @@ void service_mode_change(void) {
void find_screen_eigs(unsigned int *xeig, unsigned int *yeig) {
unsigned int block[4];
block[0] = 4;
block[1] = 5;
block[0] = VduExt_XEigFactor;
block[1] = VduExt_YEigFactor;
block[2] = -1;
if (_swix(OS_ReadVduVariables, _INR(0,1), block, block) == NULL) {
if (xeig != NULL) *xeig = block[0];
......@@ -496,7 +500,7 @@ int inkey(int key_code) {
key_code |= 0x80;
if (_swix(OS_Byte, _INR(0,1) | _OUT(1), 121, key_code, &p) == NULL) {
if (_swix(OS_Byte, _INR(0,1) | _OUT(1), OsByte_ScanKeyboard, key_code, &p) == NULL) {
if (p) return 1;
}
......
......@@ -27,6 +27,7 @@
#include <string.h>
#include <limits.h>
#include "Global/OsBytes.h"
#include "Main.h"
#include "Redraw.h"
......@@ -237,7 +238,7 @@ void wimp_event_redraw(PrivateTreeView *me, WimpRedrawWindowRequestEvent *event)
DEBUG(DEBUGLEVEL, ("redraw %x %x\n", me->wimp_object, event->window_handle));
_swix(OS_Byte, _INR(0,2), 163, 242, 0); // reset dash pattern to default
_swix(OS_Byte, _INR(0,2), OsByte_SpriteECFInfo, 242, 0); // reset dash pattern to default
block.window_handle = event->window_handle;
wimp_redraw_window(&block, &more);
......
......@@ -27,6 +27,7 @@
#include <string.h>
#include <limits.h>
#include "Global/Sprite.h"
#include "Main.h"
#include "Redraw.h"
......@@ -182,7 +183,7 @@ static void make_sprite_icon(PrivateTreeView *me, TreeNode *n) {
DEBUG(DEBUGLEVEL, ("Sprite is in wimp area\n"));
} else {
area = n->sprite_area;
e = _swix(OS_SpriteOp, _INR(0,2) | _OUT(2), 0x118, area, sprite, &spr);
e = _swix(OS_SpriteOp, _INR(0,2) | _OUT(2), 256+SpriteReason_SelectSprite, area, sprite, &spr);
DEBUG(DEBUGLEVEL, ("Sprite is in user area %p\n", (void *)area));
}
if (e != NULL) {
......@@ -196,7 +197,7 @@ static void make_sprite_icon(PrivateTreeView *me, TreeNode *n) {
} else {
DEBUG(DEBUGLEVEL, ("Sprite eigen values: %d %d\n", sprxeig, spryeig));
}
if ((e = _swix(OS_SpriteOp, _INR(0,2)|_OUTR(3,4), 0x228, area, spr, &sprx, &spry))
if ((e = _swix(OS_SpriteOp, _INR(0,2)|_OUTR(3,4), 512+SpriteReason_ReadSpriteSize, area, spr, &sprx, &spry))
!= NULL) {
DEBUG(0, ("error from OS_SpriteOp: %s\n", e->errmess));
}
......
......@@ -27,6 +27,7 @@
#include <string.h>
#include <limits.h>
#include "Global/Sprite.h"
#include "Main.h"
#include "Redraw.h"
......@@ -280,7 +281,7 @@ static void make_sprite_icon(PrivateTreeView *me, TreeNode *n) {
DEBUG(DEBUGLEVEL, ("Sprite is in wimp area\n"));
} else {
area = n->sprite_area;
e = _swix(OS_SpriteOp, _INR(0,2) | _OUT(2), 0x118, area, sprite, &spr);
e = _swix(OS_SpriteOp, _INR(0,2) | _OUT(2), 256+SpriteReason_SelectSprite, area, sprite, &spr);
DEBUG(DEBUGLEVEL, ("Sprite is in user area %p\n", (void *)area));
}
if (e != NULL) {
......@@ -294,7 +295,7 @@ static void make_sprite_icon(PrivateTreeView *me, TreeNode *n) {
} else {
DEBUG(DEBUGLEVEL, ("Sprite eigen values: %d %d\n", sprxeig, spryeig));
}
if ((e = _swix(OS_SpriteOp, _INR(0,2)|_OUTR(3,4), 0x228, area, spr, &sprx, &spry))
if ((e = _swix(OS_SpriteOp, _INR(0,2)|_OUTR(3,4), 512+SpriteReason_ReadSpriteSize, area, spr, &sprx, &spry))
!= NULL) {
DEBUG(0, ("error from OS_SpriteOp: %s\n", e->errmess));
}
......
......@@ -29,6 +29,8 @@
*/
#include <ctype.h>
#include "Global/Sprite.h"
#include "Global/VduExt.h"
#include "Main.h"
#include "Utils.h"
......@@ -66,11 +68,11 @@ _kernel_oserror *rikslib_find_wimp_sprite(char *name, SpriteArea **area, SpriteC
ER(_swix(Wimp_BaseOfSprites, _OUTR(0,1), &wimp_rom, &wimp_ram), e);
/* try RAM area first */
e = _swix(OS_SpriteOp, _INR(0,2) | _OUT(2), 0x118, wimp_ram, name, sprite);
e = _swix(OS_SpriteOp, _INR(0,2) | _OUT(2), 256+SpriteReason_SelectSprite, wimp_ram, name, sprite);
if (e == NULL) {
*area = wimp_ram;
} else {
e = _swix(OS_SpriteOp, _INR(0,2) | _OUT(2), 0x118, wimp_rom, name, sprite);
e = _swix(OS_SpriteOp, _INR(0,2) | _OUT(2), 256+SpriteReason_SelectSprite, wimp_rom, name, sprite);
if (e == NULL) *area = wimp_rom;
}
......@@ -81,31 +83,11 @@ _kernel_oserror *rikslib_find_wimp_sprite(char *name, SpriteArea **area, SpriteC
_kernel_oserror *rikslib_sprite_eig_factors(SpriteCtrlBlock *spr, int *x, int *y) {
_kernel_oserror *e;
if ((spr->mode >> 27) > 0) {
/* new format sprite */
if (x != NULL) {
switch ((spr->mode >> 1) & 0xfff) {
case 45 : *x = 2; break;
case 90 : *x = 1; break;
default : *x = 0; break;
}
}
if (y != NULL) {
switch ((spr->mode >> 14) & 0xfff) {
case 45 : *y = 2; break;
case 90 : *y = 1; break;
default : *y = 0; break;
}
}
return NULL;
}
/* old format sprite */
if (x != NULL) {
ER(_swix(OS_ReadModeVariable, _INR(0,1) | _OUT(2), spr->mode, 4, x), e);
ER(_swix(OS_ReadModeVariable, _INR(0,1) | _OUT(2), spr->mode, VduExt_XEigFactor, x), e);
}
if (y != NULL) {
ER(_swix(OS_ReadModeVariable, _INR(0,1) | _OUT(2), spr->mode, 5, y), e);
ER(_swix(OS_ReadModeVariable, _INR(0,1) | _OUT(2), spr->mode, VduExt_YEigFactor, y), e);
}
return NULL;
......
......@@ -244,7 +244,7 @@ extern int _filter(_kernel_swi_regs *r);
#define PLOT_DOTTED_LINE_NO_END 24
#define PLOT_DOTTED_LINE_NO_FIRST 32
#define PLOT_DOTTED_LINE_CONT 48
#define PLOT_POINT 64
#define PLOT_TRIANGLE_FILL 80
#define PLOT_RECTANGLE_FILL 96
#define PLOT_ARC 160
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment