Subject:
|
Re: Interesting Mindscript Bits
|
Newsgroups:
|
lugnet.robotics.spybotics
|
Date:
|
Sun, 4 Aug 2002 00:35:58 GMT
|
Viewed:
|
4992 times
|
| |
| |
Here's a few things I've gleaned:
Some new opcodes:
push n, m // n is ?, m is value to push
pop n // n is number of items to pop
sound n..ends // define a sound effect
tones n, f // n is time, f is frequency? (tone 223 for 10)
pauses n // n is time (wait 5)
freqs n,f1,f2 // n is time; f1 & f2 are frequency? (glide 6000..3000 for 60)
startg n,m // n is ?; m is ? (gate 3 in 7)
freqv n,f1,f2 // n is time; f1 & f2 are frequency? (vibrato 440..1740 for 20)
You can start/stop the 4 timers (source 19[0..3] = 0|1).
eeprom[n] == source 20 value n
Here's a LASM file showing the byte code values of some of the new opcodes:
;Main task
task 8
Main:
; push 2, 5 // 0xE3, 0x02, 0x05
; push 2, 6 // 0xE3, 0x02, 0x06
; push 2, 7 // 0xE3, 0x02, 0x07
; pop 2 // 0x01, 0x02
; pop 1 // 0x01, 0x01
; pauses 5 // 0x21, 0x05
; startg 7, 3 // 0x62, 0x07, 0x03
; freqs 10, 400, 500 // 0x45, 0x0A, 0x90, 0x01, 0xF4, 0x01
; freqv 10, 400, 500 // 0x55, 0x0A, 0x90, 0x01, 0xF4, 0x01
; tones 5, 400 // 0x33, 0x05, 0x24, 0x45
; tones 5, 0xff // 0x33, 0x05, 0xFF, 0x00
EndMain:
endt
Here's a MindScript program that doesn't do anything useful:
program SpybotMission
{
#include<Spybot.h>
var nBots = 2
var a0 = 0
timer tGameTimer
timer tStateTimer
timer tTickTimer
timer tFred
counter nBioTick
main
{
nBioTick += 1
start tGameTimer
start tStateTimer
start tTickTimer
start tFred
a0 = VLL
a0 = tStateTimer
a0 = eeprom[eMotorControl]
a0 = eeprom[eFirstToken]
a0 = eeprom[eLastToken]
eeprom[0x80] = 45
eeprom[0xff] = 50
a0 = world[nBots, iRange]
a0 = LED[iDisplay]
a0 = target[iRange]
a0 = message[iRxChannel]
a0 = link[iRxChannel]
a0 = ping[iMyID]
stop tGameTimer
stop tStateTimer
stop tTickTimer
stop tFred
}
}
And here's the LASM translation of the above MindScript program.
;Main task
task 8
Main:
senm 0,1,0 // sensor 0, raw mode, 0 slope
senm 1,4,0 // sensor 1, pct full scale mode, 0 slope
setv 31,2,2 // nBots = 2
setv 30,2,0 // a0 = 0
cnti 0 // nBioTick += 1
set 19,0,2,1 // 19[0] = 1 (start tGateTimer)
set 19,1,2,1 // 19[1] = 1 (start tStateTimer)
set 19,2,2,1 // 19[2] = 1 (start tTickTimer)
set 19,3,2,1 // 19[3] = 1 (start tFred)
setv 30,15,0 // a0 = VLL
setv 30,1,1 // a0 = tStateTimer
setv 30,20,0 // a0 = eeprom[0], eMotorControl = 0
setv 30,20,72 // a0 = eeprom[eFirstToken]
setv 30,20,126 // a0 = eeprom[eLastToken]
set 20,128,2,45 // eeprom[0x80] = 45
set 20,255,2,50 // eeprom[0xff] = 50
setv 30,45,31 // a0 = world[nBots, iRange]
setv 30,22,0 // a0 = LED[iDisplay]
setv 30,50,3 // a0 = target[iRange]
set 0,30,33,25 // a0 = message[iRxChannel]
setv 30,52,1 // a0 = link[iRxChannel]
setv 30,51,2 // a0 = ping[iMyID]
set 19,0,2,0 // stop tGameTimer
set 19,1,2,0 // stop tStateTimer
set 19,2,2,0 // stop tTickTimer
set 19,3,2,0 // stop tFred
EndMain:
endt
Using BricxCC to edit/compile/download MindScript & LASM along with NQC is
pretty cool, imho. :-)
John Hansen
|
|
Message is in Reply To:
| | Re: Interesting Mindscript Bits
|
| In the same vein, "C:\Program Files\LEGO Software\Products\Sp...nCore.lif" contains (after a binary header) the sourcecode of spybot program for mission "***mission_name***". For example, Critical Countdown mission program begins as : "{ //Critical (...) (22 years ago, 3-Aug-02, to lugnet.robotics.spybotics)
|
3 Messages in This Thread:
- Entire Thread on One Page:
- Nested:
All | Brief | Compact | Dots
Linear:
All | Brief | Compact
|
|
|
|