Download presentation
Presentation is loading. Please wait.
1
Lego RCX Assembler and a Case Study Luis Paris Dept. of Computer Science University of Mississippi
2
Supported Languages/Firmwares Java C, C++, Pascal Forth MindScript, NQC, Lego ASM TinyVM, leJOS brickOS pbForth Standard Lego RCX LanguageFirmware
3
RCX Internals Hitachi H8 microcontroller On-chip 16K ROM External 32K RAM I/O devices Three motor ports Three sensor ports IR communications port
4
RCX Virtual Machine Implemented by the Lego RCX firmware Virtual Machine CharacteristicsCharacteristics Byte Code Interpreter Sources and values Byte Code Command Set
5
Case Study: Lego RCX Assembler Motivation Project for CSCI-450 Programming Languages Lego Assembler hides output object file Result: Byte code nor object format can’t be studied Does not support definition listdefinition list Result: Programs hard to read and maintain Project: Create a Lego RCX AssemblerLego RCX Assembler More robust Runs standalone
6
Solution Strategy Two stages: Lexical/Syntax analysis (Parsing) Finite State Machine Library functions (scanf, string.tokenizer) Code generation (one-to-one) No one-to-many semantic analysis (as in compilers) Mnemonic to Opcode conversion Parameters to Byte Code conversion
7
Which language C/C++ or Java? Java is a powerful OOP language but… not really suitable for system programming No bit-fields support No operator overloading Both C/C++ support bit-fields However, C++ has unnecessary, confusing features (multiple inheritance)
8
Bit-fields After parsing ASM command “out 6, 23”: Variables contain: instr = “out”; param1 = 6; param2 = 23 Problem: encode “out param1, param2” into above data structure C/C++ can declare P1 and P2 as bit-fields as follows: Java can NOT declare bit-fields so it must merge P1 and P2: Therefore, Java programmer must perform bit shifting and masking operations; whereas the C/C++ compiler does it for us. then do:
9
Part 2: A Lego RCX pathfinder in Assembler using ScriptEd
10
PreLab Instructions Part 1: Click Start Run Type \\luis\lego\\\luis\lego\ Move “workshop” folder to your “desktop” Close \\luis\lego\ folder\\luis\lego\ Part 2: Open “workshop” folder in your desktop Install “LEGOMindstormsSDK25.exe” Install “bricxcc_setup_3377.exe” (if not installed) Download Lego RCX Firmware (if not installed)
11
Open the ScriptEd application Click Start LEGO Software All Programs MindStorms SDK Tools ScriptEd On the ScriptEd application, Click Open Port Select your Tower Port (COM1, or USB1) On the toolbar select LASM (2 nd combo box)
12
Download “pathfind.asm” file to RCX Part 1: On the ScriptEd application, Click File Open Browse to “workshop” folder In File name, type *.asm (instead of *.rcx2) Select “pathfind.asm” and open it Part 2: Click on Script Download Test your RCX
13
Part 3: A Lego RCX pathfinder in NQC using BricxCC
14
Open the BricxCC application Click Start All Programs Bricx Command Center Bricx Command Center On the “Searching for the Brick” window, Select your Tower Port (COM1, or USB1)
15
Compile & Download “pathfind.nqc” Part 1: On the BricxCC application, Click File Open Browse to “workshop” folder Select “pathfind.nqc” and open it Part 2: Click on Compile Download Test your RCX
16
References The Bricx Command Center (BricxCC) http://bricxcc.sourceforge.net/ http://bricxcc.sourceforge.net/ The Lego Mindstorms SDK 2.5 (ScriptEd) http://mindstorms.lego.com/eng/comm unity/resources/ http://mindstorms.lego.com/eng/comm unity/resources/
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.