CSBwin/User Questions

From DmWiki
Jump to navigationJump to search

General

DSA Editor Box

What's the DSA Group ID & Master vs. Slave

Both the numeric value and what's a slave?

SHORT ANSWER: Ignore these things.

LONG ANSWER: You can only send 12 different messages to a DSA. S0 S1 . . . T3. What would a person do if he wanted to force the player to press 13 switches in the proper sequence? Punt? Cry? No! The plan was that he could add 'Slave' DSA's in neighboring cells, each of which could receive 12 additional messages. In this way you could expand the number of possible messages. But I think it was never needed nor implemented. Subsequent features have made it easier to handle this problem without resorting to slave DSAs.

What's the State of Machine push buttons?

ANSWER: An instance of a DSA is like an instance of a switch. It is placed in one of the dungeon cells and acts like its definition. For example, you might provide a definition of a DSA that displays some text. You would plant 'instances' of that DSA at various places in the dungeon and each 'instance' would display different text, depending on its location or whatever. But there is only one 'definition'. This is analogous to a 'Coin Slot'. The definition of a coin slot provides a graphic and each instance of a coin slot opens a different door or closes a different pit or whatever.

OK. A DSA is a state machine. The state must be remembered. Where shall we put the number that represents the DSAs state? The 'State of Machine' dialog provides you with a choice. You can store the machine's state 'Local' in each 'instance' of the DSA so that each instance can have a different state. The disadvantage of this is that the number must be 31 or less. I doubt anyone has found that to be a limitation because the state can be any number during execution of the DSA; it is only between executions that the limit applies. A second option is to store the state in the 'Definition' of the DSA. The downside (or, perhaps in some cases, the upside) of this is that all 'instances' of the DSA share the same state. This might be used to your advantage if you wanted a DSA that could receive more than 12 different messages. The number can be any size. The third option is to store the state in Parameter B of the instance of the DSA. This allows numbers as large as 1023 and is the same as 'Local' except that parameter B can no longer be used as a parameter. No problem. Use parameter C instead!

Memory Related

Parameters

What are parameters: C,D,etc?

Stack

Array

Global Variables

How do they work?

Global variables seem to be set up in four-banks of (up-to) 16 variables each in Edit/Global Info, the Edit Database and Global Variables in the Database Type pull-down menu, thus allowing a maximum of 64 global variables. For each of the four banks you choose the number of variables.

Assuming that I set each of the four to having two each:

  • Are the valid GV indices: 0,1, 16,17, 32,33 48,49 ?
  • What happens if I read/write to an invalid GV?

Variables

Q: Where are they?

What memory does the &Vn@ and &Vn! instructions access?


Filter Related

Instruction Related

L$

This is stated to push the location of the current master cell. What is it?

Case - syntax

I'm not understanding the syntax, could someone please provide some examples?

IfElse - syntax

I'm not understanding the syntax, could someone please provide some examples?

Flow Control and nextState

The nextState modifier of an instruction is ignore for all instructions other than the first in the sequence. How does this work with the various Flow-Control instructions, say &J*. Does the DSA keep the same state it was in (assuming no &SETNEWSTATE instructions in the called routine)?