English Amiga Board


Go Back   English Amiga Board > Coders > Coders. Language

 
 
Thread Tools
Old 21 February 2024, 19:02   #1
lifeschool
Local Moderator
 
lifeschool's Avatar
 
Join Date: Oct 2009
Location: Lancashire, UK
Age: 48
Posts: 1,635
CanDo General Help Thread

I thought I'd start this thread in case anyone out there wants to try out the multi-media creator CanDo.

There are quite a few things I discovered by trial and error, so if anyone wants advice or can share tips, that would be great.

Installing:
I found V3.0 on the EAB file server, or it could be on Archive.org. There may be other places like PlanetEmu etc. Once installed, run it, then quit. Then run the V3.008 update patch from Aminet.

The update patch switches off the interlaced interface, so you might want to press the Config button, Screen, Cando - and click Interlace, and Save it - to switch it back on again.


Quote:
Originally Posted by fstltna View Post
I'm using CanDo 3.0 and its just like i remember. But I can't remember how to return values from routines. For example:
Code:
Let X=RandomX
Where RandomX is my routine.
Any answers?
Also, my tutorial is for CanDo 1.x/2.x - is there one for the 3.0 version?


I still need the tutorial if anyone has it, but found the answer to my question myself.

At the end of your routine you put:
Code:
ExitScript <Return value>
Then you call the routine like this:
Code:
Return = Do "myroutine"
FYI....

This quote is from an old post. I tried to use the return command but it seems this doesn't appear in the Lexicon, and comes up with an error. I'm looking for a reliable way to loop the inputs so that the game checks for joystick inputs every few jiffies, but otherwise keeps the game rolling. I want to call the joystick function but I dont know how to do this, as the function is not a routine I can access?

I can force the game to run in a while loop, but doing so locks me out of the interface, and the buttons, so there is no way to break out of it - causing the game to lock up.


In an ideal world I would put

Wait Until Joystick Arg2<>Nothing

But I cant get my head around it.


--

FYI - Some handy shortcut keys


Main Window:

RAmiga + 1 = Config
RAmiga + 2 = Routines
RAmiga + 3 = IFF Screen Grab
RAmiga + 8 = Clear Window
RAmiga + 9 = Clear Variables
RAmiga + 0 = Clear Buffers


Routine Editor:

RAmiga + 1 = Expression Calculator
RAmiga + 2 = Switch Events
RAmiga + 3 = Lexicon Assistant (very useful!!!)
RAmiga + 4 = Run Script
RAmiga + 6 = Routines
RAmiga + 7 = Run Debugger

CTRL + F4 = Break (?)
CTRL + F9 = Raise/Lower Script Editor Window

Last edited by lifeschool; 21 February 2024 at 19:32.
lifeschool is offline  
Old 20 June 2024, 05:13   #2
FerociousAmiga
Registered User
 
FerociousAmiga's Avatar
 
Join Date: Jun 2019
Location: DFW
Posts: 115
Thanks, didn't realize AmiNet had CanDo update. But any chance do you have the English CanDo v3 manual?

EDIT
NV, found it!
https://www.retro-commodore.eu/amiga...e/?rceu_page=4

Last edited by FerociousAmiga; 20 June 2024 at 05:22.
FerociousAmiga is offline  
Old 20 June 2024, 19:14   #3
lifeschool
Local Moderator
 
lifeschool's Avatar
 
Join Date: Oct 2009
Location: Lancashire, UK
Age: 48
Posts: 1,635
Yes, those two are the manuals I have as well.

There is nothing about V3 commands in those books, but here is the ful V3 commands list:
Note: I think it is Alt+3 (or something) to bring up this text within the package.

AbortDoubleClick
Integer = Absolute({Number})
Real = ACos({Number})
AdjustPeriod {Period} ,{Channel}
AdjustVolume {Volume} ,{Channel}
Variable = Alias({VarName})
Logical = AnimationStatus
Ansi = AnsiPressed
Logical = AnyChangedBuffers
AreaCircle {X}, {Y}, {Radius}
AreaCopy {X}, {Y}, {Width}, {Height}, {DestX}, {DestY}
AreaEllipse {X}, {Y}, {XRadius}, {YRadius}
AreaPalette {X}, {Y}, {Width}, {Height} [,{Rows} [,{LowColor} [,{HighColor}]]]
AreaPolygon {X1}, {Y1}, {X2}, {Y2}, {X3}, {Y3} [,up to six points]
AreaRectangle {X}, {Y}, {Width}, {Height}
AreaScroll {X}, {Y}, {Width}, {Height}, {DeltaX}, {DeltaY}
Argument = Arg1
Integer = ArgCount
Arguments <Varname>[={default}] [,<Varname>[={default}] ...]
Integer = Ascii({String})
Angle = ASin({Number})
Name = AskForFileName({Def} [,{Title} [,{X} [,{Y} [,{W} [,{H}]]]]])
Nothing = AskForHelp({FileName} ,{NodeName}[, {PubScreen}]
Select = AskForResponse({Message} [,{Title} [,{Choices}]])
FuncVar = AssignFunction({RoutineName})
NewFuncVar = AssignFunctionValue({FunctionVar})
Angle = ATan({Number})
AttachObject {ObjectName} [,{Arg1} [,up to ten arguments]]
Audio {Logical} [,{Channel}]
Integer = AvailableChipMemory
Integer = AvailableFastMemory
Integer = AvailableMemory
BreakPoint
BrushAnims {Logical}
BufferType = BufferType({BufferName})
String = BumpRevision({CurrentRevision})
String = CanDoLegalNotice
CardName = CardName
Result = Case({Index}, {Expression1} [,up to ten expressions] )
CauseError {errorcode}
String = CenterString({String}, {Length} [,{Fillstring}])
String = Char({Integer})
String = CharsToBegOfLine
String = CharsToEndOfLine
HexString = CharsToHex({String})
string = CheckBreakFlags
Clear <flags>
ClearClipRegions
ClearWindow [{ColorReg}]
ClipBrush {X}, {Y}, {Width}, {Height}, {BrushBufferName} [,<memflag>]
ClipIconImage {IconBufferName}, {BrushBufferName} [,{AltBrushBufferName}]
ClipPicture {PictureBufferName} [,<memflag>]
Integer = ClipTransparentColor
Close {BufferName}
ClosePendingWindow
ColorReg = ColorOfPixel({X}, {Y})
CopyDocumentTo {document}
Value = Cos({Angle})
Value = CosH({Value})
CreateBrush {BufferName}, {Width}, {Height}, {Depth}
Text = CurrentListenTo
String = CurrentSongName
Integer = CurrentSongTempo
Integer = CurrentSongType
Integer = CurrentSongVolume
Text = CurrentSpeakTo
CycleColors {FromColorReg},{ToColorReg}[,<directionflags>]
String = DeckName
FilePath = DefaultTool({IconBufferName})
RadianAngle = DegToRad({DegreeAngle})
Delay {Minutes}, {Seconds}, {Jiffies}
Delete <flags>[,{Count}]
DeleteArrayEntry <ArrayVar>, {ArrayIndex}
DetachObject {ObjectName}
DisableObject {ObjectName}
Dispose <VarName1> [,<VarName2> [,up to ten VarNames]]
DisposeAll
Do {RoutineName} [,{Argument1} [,up to ten arguments]]
value = Do({RoutineName} [,{Arg1} [,up to ten arguments]])
DocBufName = DocumentName
DoObjectScript {ObjectName},<ScriptType> [,{Argument1} [,up to ten arguments]]
DoOnError {RoutineName} [{Argument1} [,up to ten arguments]]
Dos {DOSCommandLine} [,<STDOUT>]
DrawBorder {X}, {Y}, {Width}, {Height}, <borderflags> [,{Pen1} [,{Pen2}]]
DrawCircle {X}, {Y}, {Radius}
DrawEllipse {X}, {Y}, {XRadius}, {YRadius}
DrawLine {X1}, {Y1}, {X2}, {Y2}
DrawPixel {X}, {Y}
DrawPolygon {X1}, {Y1}, {X2}, {Y2}, {X3}, {Y3} [,up to six points]
DrawRectangle {X}, {Y}, {Width}, {Height}
DrawTo {X}, {Y}
String = DupeString({String}, {Count})
Echo [{String} [,<NOLINE>]]
Else
ElseIf {Logical}
EnableObject {ObjectName} [, {Switch}]
EndIf
EndLoop
Integer = ErrorCode
Integer = ErrorLineNumber
String = ErrorObjectName
String = ErrorObjectType
Logical = Errors
String = ErrorScriptName
String = ErrorScriptType
String = ErrorSourceLine
String = ErrorText
Result = Evaluate({Expression})
Result = EvaluateExpression({Expression})
Logical = Exists({FilePath})
ExitLoop
ExitScript [{Result}]
Value = Exp({Value})
Logical = False
FastFeedback {Logical}
FileName = FileOf({FilePath})
FileReadChars {FileReadBufferName}, <VarName>, {Count} [,<HEX>]
FileReadLine {FileReadBufferName}, <VarName>
Integer = FileSize({FilePath})
String = FileType({FilePath})
FileWriteChars {FileWriteBufferName}, {String} [,{Count} [,<HEX>]
FileWriteLine {FileWriteBufferName}, {String}
FillToBorder {X}, {Y}, {ColorReg}
FilterDocument {pattern}
Integer = FindChars({SourceString}, {SearchString} [,{StartAtChar}])
Integer = FindWord({SourceString}, {SearchString} [,{StartAtWord} [,{WordDelimiters}]])
ArrayIndex = FirstArrayIndex(<ArrayVar>)
FirstCard [{Arg1} [,up to ten arguments]]
FloodFill {X}, {Y}
Flush {BufferName}
FlushAll
String = FormatValue({Value}, {FormatString})
Value = Fraction({Number})
FrameNumber = FrameOfAnimation({BAnimBufferName})
Variable = GetArgs({String}, [,{Index}])
GetAttr {DocumentObject}, <Switch>, <AttrReturned>
GetBrushAnimCoordinates {BAnimBufferName}, <XVarName>, <YVarName>
GetBufferInfo {BufferName}, <Var1>[, <Var2>[, <Var3>[, <Var4>]]]
Text = GetChars({String}, {StartingChar}, {NumberOfChars})
RecordVar = GetDBObjects
GetDiskInfo {FilePath}, <NumberOfBlocksVar> [,<NumberUsedVar> [,<BytesPerBlockVar>]]
GetFileInfo {FilePath}, <SizeInBytesVar> [,<NumberOfBlocksVar> [,<AttributesVar>
GetFontInfo <Source>, <FontName>[, <FontSize>]
GetInsertedLineColors <Foreground>, <AltForeground>
GetLineAttribute <Attribute>, <color>
GetPropPosition {ObjectName}, <HorizPosVarName> [,<VertPosVarName>]
GetPropRange {ObjectName}, <LowHorizVarName>, <HighHorizVarName> [,<LowVertVarName>, <HighVertVarName>]
GetPropVisibleRange {ObjectName}, <DisplayHorizVarName> [,<DisplayVertVarName>]
GetRGB {ColorReg}, <RedVar>, <GreenVar>, <BlueVar>
ColorReg = GetScreenPen({Entry})
GetTextDimensions {String}, <WidthVarName>, <HeightVarName> [,<BaselineVarName>]
GetTextExtent <string>, <width>, <height>
GetTextFit <string>, <width>, <numchars>
GetViewOffset <XVarName>, <YVarName>
GetWindowLimits <MinWidthVarName>, <MinHeightVarName>, <MaxWidthVarName>, <MaxHeightVarName>
String = GetWord({String}, {WordNum} [, {WordDelimiters}])
Global <VarName1>, [<VarName2>,... [up to 10 VarNames]]
GotoCard {CardName} [,{Arg1} [,up to ten arguments]]
GotoEndLoop
String = HexToChars({HexString})
Integer = HexToInteger({HexString})
Logical = HiRes
String = IconHighlight({IconBufferName})
String = IconType({IconBufferName})
If {Logical}
IfError
Result = IfThen({Logical}, {TrueExpression} [,{FalseExpression}])
Real = Infinity
String = Input({Prompt})
InsertArrayEntry <ArrayVar>, {ArrayIndex}
InsertBufferList
InsertChangedBufferList
String = InsertChars({SourceString}, {DestinationString} [,{StartAtChar}])
InsertDeviceList [<flags>]
InsertDirectoryList [<flags>]
InsertDocument {SourceDocumentName} [,{StartingLine} [,{LineCount}]]
InsertEffectsList {Flags}
InsertMessagePortList
InsertPubScreenList
InsertRecordNames <RecordVar>
InsertStartingMessage
InsertToolTypeList {IconBufferName}
InsertVariableNames
InstallClipRegion {X}, {Y}, {Width}, {Height} [,<methodflags>]
Integer = Integer({Expression})
Integer = IntegerFrom({ObjectName})
HexString = IntegerToHex({Integer})
Logical = Interlace
Integer = IntuitionVersion
Logical = IsAlias(<VarName>)
String = KeyPressed
Integer = LargestChunkOfMemory
ArrayIndex = LastArrayIndex(<ArrayVar>)
LastCard [{Argument1} [,up to ten arguments]]
String = LeftJustify({String}, {Width} [,{Fillstring}])
Integer = LengthOfLine
Let <VarName>={Expression} [,<VarName>={Expression}, [...up to 10 VarNames with Expressions]]
String = LibraryVersion
Integer = Limit({MinLimit}, {MaxLimit}, {TestInteger})
Integer = LinesInDocument
ListenTo {ARexxPortName}
LoadBrush {FilePath} [,{BrushBufferName} [,<loadflags>]]
LoadBrushAnim {FilePath} [,{BAnimBufferName} [,<loadflags>]]
LoadDocument {FilePath} [,{DocumentBufferName} [,<loadflags>]]
LoadIcon {FilePath} [,{IconBufferName} [,<loadflags>]]
LoadPalette {FilePath} [,{PaletteBufferName} [,<loadflags>]]
LoadPicture {FilePath} [,{PictureBufferName} [,<loadflags>]]
LoadShape {BrushFile}[, {ShapeBuffer}[, <Options>]]
LoadSound {FilePath} [,{SoundBufferName} [,<loadflags>]]
LoadSubDeck {FilePath} [,{SubDeckBufferName} [,<ASNEEDED>]]
Result = LoadVariable({FilePath})
Local <VarName1>[={value1}] [,<VarName2>[={value2}] ...]
LockPalette [{FirstColor}[, {LastColor}]]
Value = Log10({Value})
Value = LogE({Value})
Logical = Logical({Expression})
Loop [<LoopVar>, {Var1}[, {Var2}[, {Var3}]
String = LowerCase({String})
MakeDocument {DocumentBufferName}
MakeIcon {IconBufferName}, <flags>, {BrushBufferName} [,{AltBrushBufferName}]
Integer = Match({ToLocate}, {MatchingData1} [,up to ten matching datas])
Integer = Max({Integer1}, {Integer2} [,up to ten integers])
Integer = MaxInteger
Value = MaxValue
Integer = MessageErrorCode
Text = MessageReturned
Integer = Min({Integer1}, {Integer2} [,up to ten integers])
Integer = MinInteger
Value = MinValue
Integer = MouseX
Integer = MouseY
MoveBrushAnim {BAnimBufferName}, {XVel}, {YVel} [, {XAccel}, {YAccel}[, {Frames} [,<flag>]]]
MoveBrushAnimTo {BAnimBufferName}, {DestX}, {DestY} [,{Frames} [,<flag>]]
MoveCursor <directionflags> [,{Count}]
MoveCursorTo <flags> [,{Count}]
MoveObject {ObjectName}, {X}, {Y}
MovePen {X}, {Y}
MoveScreen {DeltaX}, {DeltaY}
MoveWindow {DeltaX}, {DeltaY}
NewLine
ArrayIndex = NextArrayIndex(<ArrayVar>, {ArrayIndex})
NextCard [{Argument1} [,up to ten arguments]]
Logical = No
Nop
Real = NotANumber
Nothing = Nothing
Logical = NTSC
Integer = NumberOfArrayEntries(<ArrayVar>)
Integer = NumberOfChars({String})
Integer = NumberOfWords({String} [,{WordDelimiters}])
Logical = ObjectAttached({ObjectName})
String = ObjectName
Logical = ObjectState({ObjectName})
Logical = Off
Logical = On
Result = OpenDeck({DeckName} [,{string1}... [up to 10 Arguments]]
OpenFile {FilePath}, {FileIOBufferName}, <IOflags>, <AccessFlags>
OpenRequester {SubDeckBufferName}, {CardName} [,{Arg1} [,up to ten arguments]]
OpenWindow {SubDeckBufferName}, {CardName} [,{Arg1} [,up to ten arguments]]
PathName = ParentOf({PathName})
FilePath = PathAndFile({PathName}, {FileName})
PathName = PathOf({FilePath})
Boolean = PatternMatch({String}, {Pattern})
ColorReg = PenA
ColorReg = PenB
ColorReg = PenO
Perform {String}
PerformDocument {Document}
Real = Pi
PlaySong {filename or filepattern} [, WAIT CONTINUOUS]
PlaySound {SoundBufferName} [,<audioflags> [,{PeriodRate}]]
PlaySoundSequence {DocumentBufferName} [,<audioflags> [,{PeriodRate}]]
Pointer {Logical}
Integer = PositionOfWord({String}, {WordNum} [,{WordDelimiters}])
PositionOnLine {LineNumber}
Integer = PreviousArrayIndex(<ArrayVar>, {ArrayIndex})
PreviousCard [{Arg1} [,up to ten arguments]]
PrintScreen [{x} [,{y} [,{width} [,{height}]]]]
PrintText {String} [, {X}, {Y}]
PrintWindow [{x} [,{y} [,{width} [,{height}]]]]
Boolean = PubScreenExists({ScreenName})
String = QualifiersPressed
Quit [{Result}]
DegreeAngle = RadToDeg({RadianAngle})
RamScram
Integer = Random({MinimumInteger}, {MaximumInteger})
Integer = RawKeyCode
RayTo {X}, {Y}
Real = Real({expression})
ReattachObject {ObjectName} [,{Arg1} [,up to ten arguments]]
RecreateMask {BufferName} [,{TransparencyColor}]
RefreshObject {ObjectName}
RemoveBrushAnim {BAnimBufferName}
String = RemoveChars({String}, {StartAtChar}, {NumberOfChars})
RenderTo <TypeOfRender> [,{BufferName}]
Replace {SearchString}, {ReplaceString} [,<flags>]
ReplaceAttribute <Switches>, {Old} ,{New}
ReplyARexxWith <flag> [,{Message or ErrorCode}]
ResetBrushAnimFrame {BAnimBufferName} [,{FrameNumber}]
ResizeWindow {Width}, {Height}
ReverseDocument
String = RightJustify({String}, {Length} [,{Fillstring}])
Value = Round({Value} [,{DigitPlace}])
lifeschool is offline  
Old 20 June 2024, 19:15   #4
lifeschool
Local Moderator
 
lifeschool's Avatar
 
Join Date: Oct 2009
Location: Lancashire, UK
Age: 48
Posts: 1,635
SaveAllChangedBuffers
SaveBrush {BrushBufferName} [,{SaveFilePath}]
SaveDocument {DocumentBufferName} [,{FilePath} [,<flags>]]
SaveIcon {IconBufferName} [,{SaveFilePath}]
SavePicture {PictureBufferName} [,{SaveFilePath}]
SaveVariable <VarName>, {FilePath}
Integer = ScreenAddress
Integer = ScreenColors
Integer = ScreenHeight
Integer = ScreenModeID
String = ScreenTitle
ScreenTitleBar {Logical}
ScreenTo <flags>
Integer = ScreenWidth
Integer = ScreenX
Integer = ScreenY
ArrayIndex = SearchArray(<ArrayVar>, {DataToSearchFor} [,{KeyString} [,{StartAtIndex}]])
SearchFor {SearchString} [,<flags>]
SearchForAttribute <Switch> ,{Value}
Logical = SearchFound
SendMessage {Message} [,<flags>]
SendToParentDeck [{Argument1} [,up to ten arguments]]
SendToSubDeck {SubDeckBufferName} [,{Argument1} [,up to ten arguments]]
SetAreaDrawMode <flags>
SetAttr {ObjectName}, <Switch>, {value}
SetAutoFileRequester {Logical}
SetAutoLoadFlags <flags>
SetBrushAnimFlags {BufferName}, <flags> [,{PlayTicks}]
SetBusyPointer [{BrushBuffer} [,{XHotSpot}, {YHotSpot}]
SetChannel {ChannelNumber}
SetClipTransparentColor {ColorReg}
SetCurrentDirectory {PathName}
SetDBObjects <RecordVar>
SetDefaultTool {IconBufferName}, {ToolString}
SetDrawMode <drawflags>
SetEffect <efxmode> ,{Argument1} [,{Argument2}]
SetExpression <flags>
SetFileBufferSize {KiloBytes}
SetFileRequestMode <type>,<flags>
SetFileRequestPattern {Initial} [,{Accept} [,{Reject}]]
SetIconHighlight {IconBufferName}, <flags> [,{AltBrushBufferName}]
SetIconImage {IconBufferName}, {BrushBufferName} [,{AltBrushBufferName}]
SetInsertedLineColors {foreground}, {altforeground}
SetInteger {ObjectName}, {Integer}
SetLineAttribute <Switch>, {color}[, {number of lines}]
SetObjectState {ObjectName}, {Logical}
SetPen {PenAColorReg} [,{PenBColorReg} [,{PenOColorReg}]]
SetPointer [{BrushBufferName} [,{XHotSpot}, {YHotSpot}]]
SetPrintFont {FontName}, {PointSize}
SetPrintStyle <styleflags> [,{ExtraPen1} [,{ExtraPen2}]]
SetPromotion ON|OFF
SetPropPosition {ObjectName}, {HorizPos} [,{VertPos}]
SetPropRange {ObjectName}, {LowHoriz}, {HighHoriz} [,{LowVert}, {HighVert}]
SetPropVisibleRange {ObjectName}, {DisplayHoriz} [,{DisplayVert}]
SetRGB {ColorReg}, {RedValue}, {GreenValue}, {BlueValue}
SetScreenTitle {String}
SetSearchArrayFlags <flags>
SetSongTempo {tempo}
SetSongVolume {volume}
SetStandardOut {FileWriteBufferName}
SetSystemRequesterTo <WINDOW | WORKBENCH | NOWHERE>
SetText {ObjectName},{String}
SetToolTypeList {IconBufferName}, {DocumentBufferName}
SetViewOffset {X}, {Y}
SetVolume {Integer} [,{ChannelNumber}]
SetWindowBrushAnimTPS {TicksPerSecond}
SetWindowLimits {MinWidth}, {MinHeight}, {MaxWidth}, {MaxHeight}
SetWindowTitle {String}
SetWordDelimiters {WordDelimiters}
ShowBrush {BrushBufferName}, {X}, {Y} [,<paletteflags> [,{MinTermValue}]]
ShowBrushAnim {BAnimBufferName}, {XCoor}, {YCoor} [,{NTimes}]
ShowBrushEfx {buffer}, {dx}, {dy}, {efx}, {speed} [, {dw}, {dh}[, {sx}, {sy}, {sw}, {sh}]]
ShowPalette {PaletteBufferName}
ShowPaletteEfx {Efx}, {Duration} [, {Buffer}]
ShowPicture {PictureBufferName}
Integer = Sign({Value})
Value = Sin({Angle})
Value = SinH({Value})
Integer = SizeOfDocument
Song <switches>
SortArray <ArrayVar>, <flags> [,{KeyString}]
SortDocument <flags> [,{StartingColumn}]
SpeakTo {ARexxPortName}
SplitLine [{Count}]
Value = SquareRoot({Value})
Logical = StartedFromWorkbench
Static <VarName1>[={value1}] [,<VarName2>[={value2}] ...]
StopScript [{Result}]
String = String({Expression})
Logical = Supervised
SystemControl <Option> [, {Value}]
Value = Tan({Angle})
Value = TanH({Value})
String = TextFrom({ObjectName})
String = TextFromDocument({DocumentName})
String = TheCharacter
Integer = TheColumnNumber
Logical = TheCommandLine
PathName = TheCurrentDirectory
String = TheDate
String = TheDrawMode
String = TheLine
Integer = TheLineNumber
String = TheMessage
Name = TheOriginDirectory
String = TheTime
String = TheWord
String = TheWordDelimiters
Integer = TimeLeftOnChannel({ChannelNumber})
Integer = TotalAllocatedMemory
Transparent {Logical}
Logical = TransparentStatus
String = TrimString({String})
Logical = True
Type {String} [,<flag>]
UnlockPalette [{FirstCol}[, {LastCol}]]
Until {Logical}
Integer = UnusedAllocatedMemory
String = UpperCase({String})
UseColoredLines {boolean}
Boolean = UsingColoredLines
Logical = ValidReal({Real})
String = VarType(<Var>)
Logical = VerifyExpression({String})
While {Logical}
Value = Whole({Expression})
Integer = WindowAddress
Integer = WindowBorderBottom
Integer = WindowBorderLeft
Integer = WindowBorderRight
Integer = WindowBorderTop
Integer = WindowColors
Integer = WindowHeight
String = WindowName
String = WindowOnFrontScreen
String = WindowTitle
WindowTo <flags>
Integer = WindowWidth
Integer = WindowX
Integer = WindowY
Integer = WorkbenchColors
Integer = WorkbenchHeight
Integer = WorkbenchWidth
WorkWithDocument {DocumentBufferName}
Logical = Yes
lifeschool is offline  
Old Today, 17:06   #5
lifeschool
Local Moderator
 
lifeschool's Avatar
 
Join Date: Oct 2009
Location: Lancashire, UK
Age: 48
Posts: 1,635
btw, in case anyone is reading this, here are some quick tips.

1. Use the Settings Options to move the most common tools to the top of the main view screen, and also the script editor. The most common tools on the main screen are: Text, Button, Routines, Variables, GamePort, Timer, Document, Field and Prop Gadget. If you put these examples to the top of the list, it will save a lot of time. Same with the script. Things like Routines, Cards, Text , Picture, Paint, Objects, Variables, Co-Ords etc, need to be near the top. File Req can also be at the top, as this is used to insert file paths, and saves a lot of time to use it.

2. If you press Right-Amiga and 3, it brings up the Lexicon Assistant. Here you can look at all the commands. Double click on them to add the syntax to your code. It certainly saves time looking through the manual. Enter search terms like this example: #?show#? - this will list all the commands with the term 'show' in them e.g. ShowBrush.

3. Press Right-Amiga and 4 to run the script page on its own. This will perform the page script outside of your main program, which can be faster, and shows up any bugs more quickly sometimes, than using the main browse function. Although if the code relies on other things to be running, or variables to be set up, your code might not run fully in this mode. The package will come up with a warning about possible crashes, but in my experience, I have never known the script launch function to cause any crashes. It simply comes up with an error in the code.

3. Don't ignore the Error tool on the main screen. Click this and enter something, e.g. PrintText "Something Went Wrong!", 150, 200. This will then appear instead of the computer crashing and the app shutting down. And often this means you dont lose your work when something unexpected happens.

4. The GamePort timer is buggy, and if you continue to edit code while the gameport timer is switched on, the app will eventually come up with errors and corrupt the code, and then crash. Instead, if you have to use the gameport timer, make sure to only switch it on when you have saved your code, and want to text it. Then quickly switch it off again as soon as you return to the editor. To be abolutely sure, I now always reset the Amiga after using the gameport timer, and load everything up cleanly, as it's not worth the risk of corrupted code and looping crash instances, each time you load up your code. Similarly, never save the code with the gameport timer enabled, unless it is for a separate test (make another revision e.g. 1.1D, and after the test, load up V1.1C, without the timer enabled) or for a final release.

5. If you are using the mouse, the left mouse button will only work if you are clicking on a button. The right mouse button will only work if you assign a dropdrown menu, or use the Right Mouse Button tool on the main screen. If you want to auto-track the mouse, it is best to use the normal Timer tool. Read in mouseX and mouseY to a variable within the timer routine, executed every 4 or 5 jiffies. If you add a full screen button, you can then assign hit points to a bitmap area, and trigger things using a context hover and click system. The Timer tool can be manually disabled, so it isn't running when you launch the code. Or you can use DetachObject and then ReattacheObject later, to switch timers on and off.

6. If you want to look at code, while looking at a page of code, click the Routines tool in the script editor. Double click on the routines listed to show them on the screen, on top of your existed editor window. In this way, it is possibe to look up some code in one routine, close the window, and return to the routine where you want to insert it. You can stack a huge number of code screens, but it becomes difficult to navigate above 2 or 3.

7. Objects with transparent images will flicker if you move them, but solid images with no transparency, wont. Buttons can't do transparencies. So if you want to transparent image on the screen, you'll have to show it or load it as a brush, and move that around with MoveBrush, rather than MoveObject.

8. Be careful with While Loops, because if the loop cannot end, the software will simply soft-lock forever. The only way I have found to get around this, is to toggle back to Workbench (Right-control+M), and then run the ShutDownADeck tool in the WBUtilities drawer. 90% of the time, if you run this, the loop will terminate and return you to the console. If not, the whole package will quit.

9. Make a new file each time you make a change. I know this sounds boring, but if the tool crashes, it means you wont lose too much. The package can quit and crash more often if you use Fields, the Prop_Gadget, and the GamePort timer. I think it tries to save your file to a crash directory, but I dont know where this is. Why would you want to load up code which makes the computer crash again? Instead, load up a previous version which works, and try to find why the crash happens in the first place. On rare occasions with the Gameport Timer, it introduced a crash bug early on, say V5, and by V8 the code is trashed. All you can do is load up V5, and add in all the routines you saved from V8, and then save it as V8.1.

10. The more buttons you add, the slower and less responsive the final code will be. After 5 buttons there is a notable slow down. With 10 buttons, it is slower. After that, it starts to affect input lag. So you will either have to use context driven buttons (one huge one instead of smaller ones), or stick to brushes. If a brush looks like a button, and performs the same functions (e.g. because there is an invisible button behind it), then you can have brushes instead.

11. Remember, when you move a brush or button, it will leave the previous position on screen as well. Clearing the screen (or using flood fill) takes ages, so instead, either draw a box over the affected area, or draw a picture or brush on top of it before you move the button or brush. The movement will cause flicker if you try to do this quickly, but if you use non-transparent brushes and screens, things will at least look reasonable.

12. CanDo can often be a bit fussy when it comes to using big screen modes. Most of the time, the app will refuse to launch in a big screen mode. The only way is to click the screen options tool (the one next to the cards stack) and load up your background using this tool instead. The background can be blank, as long as it is in the right aspect, e.g. 640 x 512 @ 16 cols, or 1280 x 1024 @ 4 cols. The screen will then maintain this aspect once it has loaded, and anything you put on the screen will use this mode.

13. There is no way (I dont think) to remove the HAM Bleed if you place one HAM image over another. Even if you use matts, it still does it. The only way is to move the overlay image around until you find a position where the effect of the HAM bleed is not so bad. Or, simply make a new picture, with both images merged onto the same picture, without using any overlays.

Last edited by lifeschool; Today at 17:29.
lifeschool is offline  
 


Currently Active Users Viewing This Thread: 2 (1 members and 1 guests)
Pyromania
Thread Tools

Similar Threads
Thread Thread Starter Forum Replies Last Post
Help with CanDo routines fstltna support.Apps 2 10 March 2023 19:18
Cando 3.0 Crash bigpoppa206 support.Apps 2 13 January 2019 11:19
Looking for CANDO... astuermer support.Apps 3 09 November 2018 20:23
CanDo v3.0 otro request.Apps 29 24 July 2014 17:05
Looking for manuals for Scala IC400 and CanDO. mugo request.Apps 5 09 November 2010 15:42

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT +2. The time now is 17:48.

Top

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
Page generated in 0.12168 seconds with 13 queries