Showing preview only (1,310K chars total). Download the full file or copy to clipboard to get everything.
Repository: soundpaint/rp2040pio
Branch: main
Commit: d1598cf27692
Files: 210
Total size: 1.2 MB
Directory structure:
gitextract_vcqxfqub/
├── .gitignore
├── LICENSE
├── Makefile
├── README.md
├── defs.mak
└── java/
├── META-INF/
│ ├── MANIFEST.MF.CodeObserver
│ ├── MANIFEST.MF.Diagram
│ ├── MANIFEST.MF.DocTool
│ ├── MANIFEST.MF.FifoObserver
│ ├── MANIFEST.MF.GPIOObserver
│ ├── MANIFEST.MF.Monitor
│ ├── MANIFEST.MF.Observer
│ └── MANIFEST.MF.Server
├── Makefile.CodeObserver
├── Makefile.Diagram
├── Makefile.DocTool
├── Makefile.FifoObserver
├── Makefile.GPIOObserver
├── Makefile.Monitor
├── Makefile.Observer
├── Makefile.Server
├── examples/
│ ├── addition.mon
│ ├── apa102-mini.mon
│ ├── apa102-rgb555.mon
│ ├── auto-push-pull.mon
│ ├── autopull.mon
│ ├── blink.mon
│ ├── bmc-rx.mon
│ ├── bmc-tx.mon
│ ├── clocked-input.mon
│ ├── exec-example.mon
│ ├── ext-wave.mon
│ ├── hello.mon
│ ├── hub75.mon
│ ├── i2c.mon
│ ├── logic-analyser.mon
│ ├── manchester-rx.mon
│ ├── manchester-tx.mon
│ ├── manual-pull.mon
│ ├── pull-example1.mon
│ ├── pull-example2.mon
│ ├── pull-example3.mon
│ ├── pull-example4.mon
│ ├── pwm.mon
│ ├── somewhat-manual-pull.mon
│ ├── spi-cpha0-cs.mon
│ ├── spi-cpha0.mon
│ ├── spi-cpha1-cs.mon
│ ├── spi-cpha1.mon
│ ├── spi-tx-fast.mon
│ ├── squarewave-fast.mon
│ ├── squarewave-wrap.mon
│ ├── squarewave.hex
│ ├── squarewave.mon
│ ├── st7789-lcd.mon
│ ├── uart-rx-mini.mon
│ ├── uart-rx.mon
│ ├── uart-tx.mon
│ ├── ws2812-led.mon
│ ├── ws2812-parallel.mon
│ ├── ws2812.hex
│ └── ws2812.mon
├── media/
│ ├── add12x12.xcf
│ ├── cycle16x16.xcf
│ ├── del12x12.xcf
│ ├── floppy-blue16x16.xcf
│ ├── gpl-2.0-standalone.html
│ ├── led-gray16x16.xcf
│ ├── led-green-off16x16.xcf
│ ├── led-green-on16x16.xcf
│ ├── led-red-off16x16.xcf
│ ├── led-red-on16x16.xcf
│ ├── quit16x16_antialiased.xcf
│ ├── quit16x16_pixels.xcf
│ ├── swapv12x12.xcf
│ └── trash16x16.xcf
└── org/
└── soundpaint/
└── rp2040pio/
├── AddressSpace.java
├── Bit.java
├── Clock.java
├── CmdOptions.java
├── CollapsiblePanel.java
├── Constants.java
├── Decoder.java
├── Direction.java
├── EmulationServer.java
├── Emulator.java
├── FIFO.java
├── GPIO.java
├── GPIOIOBank0Registers.java
├── GPIOIOBank0RegistersImpl.java
├── GPIOPadsBank0Registers.java
├── GPIOPadsBank0RegistersImpl.java
├── IOUtils.java
├── IRQ.java
├── Instruction.java
├── LocalAddressSpace.java
├── MasterClock.java
├── Memory.java
├── PIO.java
├── PIOEmuRegisters.java
├── PIOEmuRegistersImpl.java
├── PIOGPIO.java
├── PIORegisters.java
├── PIORegistersImpl.java
├── PLL.java
├── ParseException.java
├── PicoEmuRegisters.java
├── PicoEmuRegistersImpl.java
├── PinState.java
├── RegisterSet.java
├── RemoteAddressSpaceClient.java
├── RemoteAddressSpaceServer.java
├── SM.java
├── SwingUtils.java
├── doctool/
│ ├── DocsBuilder.java
│ ├── ExampleScriptsDocsBuilder.java
│ ├── MonitorCommandsDocsBuilder.java
│ ├── RegistersDocs.java
│ └── RegistersDocsBuilder.java
├── monitor/
│ ├── Command.java
│ ├── CommandRegistry.java
│ ├── Monitor.java
│ ├── MonitorUtils.java
│ ├── ScriptInfo.java
│ └── commands/
│ ├── BreakPoints.java
│ ├── Clear.java
│ ├── Clock.java
│ ├── Enter.java
│ ├── Execute.java
│ ├── Fifo.java
│ ├── Gpio.java
│ ├── Help.java
│ ├── Interrupt.java
│ ├── Label.java
│ ├── Load.java
│ ├── PinCtrl.java
│ ├── Quit.java
│ ├── Read.java
│ ├── Registers.java
│ ├── Reset.java
│ ├── Save.java
│ ├── Script.java
│ ├── SideSet.java
│ ├── Sm.java
│ ├── Trace.java
│ ├── Unassemble.java
│ ├── Unload.java
│ ├── Version.java
│ ├── Wait.java
│ ├── Wrap.java
│ └── Write.java
├── observer/
│ ├── ActionPanel.java
│ ├── ConnectDialog.java
│ ├── GUIObserver.java
│ ├── LicenseView.java
│ ├── MenuBar.java
│ ├── Observer.java
│ ├── code/
│ │ ├── ActionPanel.java
│ │ ├── CodeObserver.java
│ │ ├── CodeSmViewPanel.java
│ │ └── CodeViewPanel.java
│ ├── diagram/
│ │ ├── AbstractSignal.java
│ │ ├── ActionPanel.java
│ │ ├── ClockSignal.java
│ │ ├── Constants.java
│ │ ├── CycleRuler.java
│ │ ├── Diagram.java
│ │ ├── DiagramModel.java
│ │ ├── DiagramViewPanel.java
│ │ ├── LegendPanel.java
│ │ ├── MenuBar.java
│ │ ├── RegisterBitSignal.java
│ │ ├── RegisterIntSignal.java
│ │ ├── ScriptDialog.java
│ │ ├── ScriptSelectionPanel.java
│ │ ├── Signal.java
│ │ ├── SignalDialog.java
│ │ ├── SignalFactory.java
│ │ ├── SignalFactoryPanel.java
│ │ ├── SignalFilter.java
│ │ ├── SignalLabelPanel.java
│ │ ├── SignalPanel.java
│ │ ├── SignalRendering.java
│ │ ├── SignalTypePanel.java
│ │ ├── SignalsDialog.java
│ │ ├── SignalsPropertiesPanel.java
│ │ ├── SmSelectionPanel.java
│ │ ├── TelemetryPanel.java
│ │ ├── ToolTip.java
│ │ ├── ValueFilterPanel.java
│ │ ├── ValueRenderingPanel.java
│ │ ├── ValueSourcePanel.java
│ │ └── ValuedSignal.java
│ ├── fifo/
│ │ ├── ActionPanel.java
│ │ ├── FifoEntriesViewPanel.java
│ │ ├── FifoObserver.java
│ │ └── FifoViewPanel.java
│ └── gpio/
│ ├── GPIOArrayPanel.java
│ ├── GPIOObserver.java
│ ├── GPIOPanel.java
│ ├── GPIOViewPanel.java
│ ├── PIOGPIOArrayPanel.java
│ └── PIOGPIOPanel.java
└── sdk/
├── GPIOSDK.java
├── PIOSDK.java
├── Panic.java
├── Program.java
├── ProgramParser.java
├── SDK.java
└── SMConfig.java
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
build
jar
rst-doc
*~
================================================
FILE: LICENSE
================================================
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License along
with this program; if not, write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License.
================================================
FILE: Makefile
================================================
# Global Makefile for RP2040 PIO emulator
#
# Copyright (C) 2021 Jürgen Reuter
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# For updates and more info or contacting the author, visit:
# <https://github.com/soundpaint/rp2040pio>
#
# Author's web site: www.juergen-reuter.de
ROOT_DIR=.
include defs.mak
all:
cd $(JAVA_DIR) ; make -f Makefile.Server all
cd $(JAVA_DIR) ; make -f Makefile.Monitor all
cd $(JAVA_DIR) ; make -f Makefile.Observer all
cd $(JAVA_DIR) ; make -f Makefile.Diagram all
cd $(JAVA_DIR) ; make -f Makefile.GPIOObserver all
cd $(JAVA_DIR) ; make -f Makefile.CodeObserver all
cd $(JAVA_DIR) ; make -f Makefile.FifoObserver all
cd $(JAVA_DIR) ; make -f Makefile.DocTool all
run: all
cd $(JAVA_DIR) ; make -f Makefile.Server run
tags:
- find $(JAVA_DIR) -name \*.java -exec etags {} \; -print
objclean:
rm -rf $(ROOT_BUILD_DIR)
rm -rf $(JAR_DIR)
rm -rf $(RST_DOC_DIR)
bkpclean:
- find $(JAVA_DIR) -name \*~ -exec /bin/rm -f {} \; -print
rm -f *~
coreclean:
rm -f core core.* vgcore.*
rm -f $(JAVA_DIR)/core $(JAVA_DIR)/core.* $(JAVA_DIR)/vgcore.*
clean: objclean
distclean: objclean bkpclean coreclean
tarball: distclean
@TGZ_DATE=`date +%Y-%m-%d_%H-%M-%S` ; \
PROJECT_NAME=rpi2040pio ; \
PROJECT_PATH=`basename \`pwd\`` ; \
TGZ_PREFIX=$$PROJECT_NAME\_$$TGZ_DATE ; cd .. ; \
tar cvf ./$$TGZ_PREFIX.tar.bz2 \
--exclude=untracked \
--exclude=.git \
--transform=s/$$PROJECT_PATH/$$TGZ_PREFIX/ \
--bzip2 $$PROJECT_PATH
# Local Variables:
# coding:utf-8
# mode:Makefile
# End:
================================================
FILE: README.md
================================================
# RP2040 PIO Emulator
An emulator of the RP2040 state machines.
This emulator is _not_ intended as a real-time emulation of the actual
hardware, but as a handy tool for understanding how the PIO works and
for testing and debugging when developing code for the PIO.
For detailed information, see [the full docs on readthedocs.io][1]
## Motivation
What is the purpose of an RP2040 emulator if you can easily use the
original? There are a number of good reasons for doing so:
* To be able to trace / single step a PIO program as an invaluable aid
for developing and debugging, which is not easily possible directly
on the RP2040 hardware.
* To inspect all of the PIO's internal state while developing and
debugging a PIO program. This feature applies even to those parts
of the PIO that are not accessible when running on real RP2040
hardware, such as:
* the contents of PIO registers X, Y, ISR and OSR,
* the current value of the ISR / OSR shift count or
* the number of an instruction's pending delays.
In contrast, the emulator has access to the PIO's complete internal
logical state (otherwise, the emulation could not correctly work).
* To debug your PIO program in the context of your IDE: The emulator
will typically run on your development host machine. That is, there
is no need to upload the PIO program to a real RPI2040 for each and
every tiny change, thus saving time and stress in the course of
small and frequent development cycles.
* To be able to automatically generate detailed timing diagrams
straight from an emulated run of a PIO program. Timing diagrams are
highly useful for debugging as well as for documentation, as proof
of concept or fact sheet. The selection of signals shown on the
diagram is freely configurable.
* To be able to debug a PIO program even if there is no RP2040
hardware at hand. (Fun fact: The RP2040 is still sold out at all of
the distributors easily accessible to me. That is, I still do not
own an RP2040 of my own, but solely have to rely on the specs and
other sources of documentation.)
* A motivation that applies to me personally: If I succeed in
implementing a (more or less) correctly working emulation of the
PIO, than I am somewhat confident that I have basically understood
how the PIO works and what capabilities it has when it comes to
writing PIO programs for it.
## Current Features
* The core PIO emulator is already running, though it has not yet been
extensively tested. That is, there are surely still many bugs in the
emulation, such that emulation may behave wrong, especially for
programs that use more exotic and therefore not well tested features
of the PIO.
* The emulator can be used to automatically generate timing diagrams.
However, configuration is still hard-wired in the source code (in the
```run()``` method of class ```org.soundpaint.rp2040pio.Main```).
With one of the next commits, flexible configuration and program
loading will be made possible through a configuration file and/or via
command line arguments, rather than having to recompile the source
code of the emulator. Since there are surely still lots of bugs in
the emulation, note that, as of now, the generated timing diagrams may
be faulty as well.
<p>
<figure>
<a href="doc/screenshots/squarewave_1.png">
<img src="doc/screenshots/squarewave_1.png" />
</a>
<br />
<figcaption>
Fig. 1: Timing Diagram Generated from Emulation of
<code>squarewave</code> Program
</figcaption>
</figure>
</p>
## Future Plans
A command line based monitor program will be provided to
interactively:
* load programs,
* list (unassemble) program code,
* modify programs,
* start / stop / synchronize state machines,
* single step / trace into programs,
* define break points,
* inspect current contents of state machine registers, GPIO pins, FIFO
registers, shift registers, etc.
* manipulate the current contents of registers and pins,
* generate timing diagrams,
and more.
Maybe, I will also provide a graphical user interface that depicts the
internal state of the PIO in a graphical and more vivid manner.
* Support for interaction with the PIO's outer world. In particular:
* Support specifying when and which logical values will be put onto
the GPIO pins from an external source.
* Support specifying when and which values will be shifted into the
TX FIFO or shifted out from the RX FIFO via DMA access onto the
PIO.
* Support specifying when and which operations are triggered by
DMA access onto the PIO memory-mapped registers.
* Support specifying when and which instructions are inserted by
DMA access onto the PIO memory-mapped SMx_INSTR registers.
* Support specifying when an interrupt is requested by DMA access
onto the PIO memory-mapped interrupt registers.
* Generate a warning whenever a race condition is detected. In
particular, generate a warning when multiple state machines
concurrently access the same resource, like writing simultaneously
to the same GPIO pin. Warnings can be reported in the monitor
program while debugging a program, as well as marked on the timing
diagram.
* Generate a warning upon FIFO overflow / underflow.
* Generate a warning when reading from or writing to a GPIO pin that
has pin direction that conflicts with the type of access.
* When generating a timing diagram, support alternative backends such
as PDF or SVG.
* If an alternative backend for timing diagrams provides tooltips, add
tooltips with additional info such as showing the complete
instruction (with all of its parameters) when hovering over the
instruction mnemonic in the timing diagram.
* Also add tooltips with descriptive / explanatory text for all
warnings, where appropriate.
<!-- References -->
[1]: https://rp2040pio-docs.readthedocs.io/
================================================
FILE: defs.mak
================================================
# Global Makefile definitions for RP2040 PIO emulator
#
# Copyright (C) 2021 Jürgen Reuter
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# For updates and more info or contacting the author, visit:
# <https://github.com/soundpaint/rp2040pio>
#
# Author's web site: www.juergen-reuter.de
JAVA_DIR=$(ROOT_DIR)/java
ROOT_BUILD_DIR=$(ROOT_DIR)/build
JAR_DIR=$(ROOT_DIR)/jar
RST_DOC_DIR=$(ROOT_DIR)/rst-doc
# Local Variables:
# coding:utf-8
# mode:Makefile
# End:
================================================
FILE: java/META-INF/MANIFEST.MF.CodeObserver
================================================
Manifest-Version: 1.0
Specification-Title: N.A.
Created-By: Jürgen Reuter
Implementation-Title: RP2040 PIO Emulator Code Observer
Specification-Vendor: Juergen Reuter
Implementation-Vendor: Juergen Reuter
Main-Class: org.soundpaint.rp2040pio.observer.code.CodeObserver
================================================
FILE: java/META-INF/MANIFEST.MF.Diagram
================================================
Manifest-Version: 1.0
Specification-Title: N.A.
Created-By: Jürgen Reuter
Implementation-Title: RP2040 PIO Emulator Diagram
Specification-Vendor: Juergen Reuter
Implementation-Vendor: Juergen Reuter
Main-Class: org.soundpaint.rp2040pio.observer.diagram.Diagram
================================================
FILE: java/META-INF/MANIFEST.MF.DocTool
================================================
Manifest-Version: 1.0
Specification-Title: N.A.
Created-By: Jürgen Reuter
Implementation-Title: RP2040 PIO Emulator Documentation Tool
Specification-Vendor: Juergen Reuter
Implementation-Vendor: Juergen Reuter
Main-Class: org.soundpaint.rp2040pio.doctool.DocsBuilder
================================================
FILE: java/META-INF/MANIFEST.MF.FifoObserver
================================================
Manifest-Version: 1.0
Specification-Title: N.A.
Created-By: Jürgen Reuter
Implementation-Title: RP2040 PIO Emulator FIFO Observer
Specification-Vendor: Juergen Reuter
Implementation-Vendor: Juergen Reuter
Main-Class: org.soundpaint.rp2040pio.observer.fifo.FifoObserver
================================================
FILE: java/META-INF/MANIFEST.MF.GPIOObserver
================================================
Manifest-Version: 1.0
Specification-Title: N.A.
Created-By: Jürgen Reuter
Implementation-Title: RP2040 PIO Emulator GPIO Observer
Specification-Vendor: Juergen Reuter
Implementation-Vendor: Juergen Reuter
Main-Class: org.soundpaint.rp2040pio.observer.gpio.GPIOObserver
================================================
FILE: java/META-INF/MANIFEST.MF.Monitor
================================================
Manifest-Version: 1.0
Specification-Title: N.A.
Created-By: Jürgen Reuter
Implementation-Title: RP2040 PIO Emulator Monitor
Specification-Vendor: Juergen Reuter
Implementation-Vendor: Juergen Reuter
Main-Class: org.soundpaint.rp2040pio.monitor.Monitor
================================================
FILE: java/META-INF/MANIFEST.MF.Observer
================================================
Manifest-Version: 1.0
Specification-Title: N.A.
Created-By: Jürgen Reuter
Implementation-Title: RP2040 PIO Emulator Command-Line Observer
Specification-Vendor: Juergen Reuter
Implementation-Vendor: Juergen Reuter
Main-Class: org.soundpaint.rp2040pio.observer.Observer
================================================
FILE: java/META-INF/MANIFEST.MF.Server
================================================
Manifest-Version: 1.0
Specification-Title: N.A.
Created-By: Jürgen Reuter
Implementation-Title: RP2040 PIO Emulation Server
Specification-Vendor: Juergen Reuter
Implementation-Vendor: Juergen Reuter
Main-Class: org.soundpaint.rp2040pio.EmulationServer
================================================
FILE: java/Makefile.CodeObserver
================================================
# Makefile for Java tree of RP2040 PIO emulator
#
# Copyright (C) 2021 Jürgen Reuter
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# For updates and more info or contacting the author, visit:
# <https://github.com/soundpaint/rp2040pio>
#
# Author's web site: www.juergen-reuter.de
ROOT_DIR=..
include ../defs.mak
BUILD_DIR=$(ROOT_BUILD_DIR)/CodeObserver
COMPILE_CLASSPATH=$(JAVA_DIR):$(BUILD_DIR)
RUN_CLASSPATH=.
PIO_DIR=$(JAVA_DIR)/org/soundpaint/rp2040pio
JAVA_SRC=$(wildcard $(PIO_DIR)/observer/code/CodeObserver.java)
JAVA_OBJ=$(patsubst $(JAVA_DIR)/%.java,$(BUILD_DIR)/%.class,$(JAVA_SRC))
MEDIA_SRC_DIR=$(JAVA_DIR)/media
MEDIA_OBJ_DIR=$(BUILD_DIR)/media
MEDIA_SRC=$(wildcard $(MEDIA_SRC_DIR)/*.png $(MEDIA_SRC_DIR)/*.html)
MEDIA_OBJ=$(patsubst $(MEDIA_SRC_DIR)/%,$(MEDIA_OBJ_DIR)/%,$(MEDIA_SRC))
EXAMPLES_SRC_DIR=$(JAVA_DIR)/examples
EXAMPLES_OBJ_DIR=$(BUILD_DIR)/examples
EXAMPLES_SRC=$(wildcard $(EXAMPLES_SRC_DIR)/*.hex) $(wildcard $(EXAMPLES_SRC_DIR)/*.mon)
EXAMPLES_OBJ=$(patsubst $(EXAMPLES_SRC_DIR)/%,$(EXAMPLES_OBJ_DIR)/%,$(EXAMPLES_SRC))
JAR_OBJ=$(JAR_DIR)/rp2040pio_codeobserver.jar
all: obj jar
obj: $(BUILD_DIR) $(JAVA_OBJ) \
$(MEDIA_OBJ_DIR) $(MEDIA_OBJ) \
$(EXAMPLES_OBJ_DIR) $(EXAMPLES_OBJ)
$(BUILD_DIR):
mkdir -p $@
$(MEDIA_OBJ_DIR):
echo BUILD_MEDIA_DIR=$(MEDIA_OBJ_DIR)
mkdir -p $@
$(EXAMPLES_OBJ_DIR):
echo BUILD_EXAMPLES_DIR=$(EXAMPLES_OBJ_DIR)
mkdir -p $@
$(JAR_DIR):
mkdir -p $@
jar: $(JAR_DIR) $(JAR_OBJ)
$(JAR_OBJ): $(JAVA_OBJ)
cd $(BUILD_DIR) ; \
jar -0cvfm ../$(JAR_OBJ) ../$(JAVA_DIR)/META-INF/MANIFEST.MF.CodeObserver .
$(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%
cp -pf $< $@
$(EXAMPLES_OBJ_DIR)/%.hex: $(EXAMPLES_SRC_DIR)/%.hex
cp -pf $< $@
$(EXAMPLES_OBJ_DIR)/%.mon: $(EXAMPLES_SRC_DIR)/%.mon
cp -pf $< $@
depend:
run: all
cd $(JAR_DIR) ; java -jar $(JAR_OBJ)
#cd $(BUILD_DIR) ; java -ea -cp $(RUN_CLASSPATH) org.soundpaint.rp2040pio.Main
objclean:
- rm -rf $(BUILD_DIR)
jarclean:
- rm -rf $(JAR_DIR)
clean: objclean jarclean
.SUFFIXES: $(SUFFIXES) .java .class
$(BUILD_DIR)%class: $(JAVA_DIR)%java
javac -Xlint:all -Xdiags:verbose -d $(BUILD_DIR) -cp $(COMPILE_CLASSPATH) $<
# Local Variables:
# coding:utf-8
# mode:Makefile
# End:
================================================
FILE: java/Makefile.Diagram
================================================
# Makefile for Java tree of RP2040 PIO emulator
#
# Copyright (C) 2021 Jürgen Reuter
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# For updates and more info or contacting the author, visit:
# <https://github.com/soundpaint/rp2040pio>
#
# Author's web site: www.juergen-reuter.de
ROOT_DIR=..
include ../defs.mak
BUILD_DIR=$(ROOT_BUILD_DIR)/Diagram
COMPILE_CLASSPATH=$(JAVA_DIR):$(BUILD_DIR)
RUN_CLASSPATH=.
PIO_DIR=$(JAVA_DIR)/org/soundpaint/rp2040pio
JAVA_SRC=$(wildcard $(PIO_DIR)/observer/diagram/Diagram.java)
JAVA_OBJ=$(patsubst $(JAVA_DIR)/%.java,$(BUILD_DIR)/%.class,$(JAVA_SRC))
MEDIA_SRC_DIR=$(JAVA_DIR)/media
MEDIA_OBJ_DIR=$(BUILD_DIR)/media
MEDIA_SRC=$(wildcard $(MEDIA_SRC_DIR)/*.png $(MEDIA_SRC_DIR)/*.html)
MEDIA_OBJ=$(patsubst $(MEDIA_SRC_DIR)/%,$(MEDIA_OBJ_DIR)/%,$(MEDIA_SRC))
EXAMPLES_SRC_DIR=$(JAVA_DIR)/examples
EXAMPLES_OBJ_DIR=$(BUILD_DIR)/examples
EXAMPLES_SRC=$(wildcard $(EXAMPLES_SRC_DIR)/*.hex) $(wildcard $(EXAMPLES_SRC_DIR)/*.mon)
EXAMPLES_OBJ=$(patsubst $(EXAMPLES_SRC_DIR)/%,$(EXAMPLES_OBJ_DIR)/%,$(EXAMPLES_SRC))
JAR_OBJ=$(JAR_DIR)/rp2040pio_diagram.jar
all: obj jar
obj: $(BUILD_DIR) $(JAVA_OBJ) \
$(MEDIA_OBJ_DIR) $(MEDIA_OBJ) \
$(EXAMPLES_OBJ_DIR) $(EXAMPLES_OBJ)
$(BUILD_DIR):
mkdir -p $@
$(MEDIA_OBJ_DIR):
echo BUILD_MEDIA_DIR=$(MEDIA_OBJ_DIR)
mkdir -p $@
$(EXAMPLES_OBJ_DIR):
echo BUILD_EXAMPLES_DIR=$(EXAMPLES_OBJ_DIR)
mkdir -p $@
$(JAR_DIR):
mkdir -p $@
jar: $(JAR_DIR) $(JAR_OBJ)
$(JAR_OBJ): $(JAVA_OBJ)
cd $(BUILD_DIR) ; \
jar -0cvfm ../$(JAR_OBJ) ../$(JAVA_DIR)/META-INF/MANIFEST.MF.Diagram .
$(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%
cp -pf $< $@
$(EXAMPLES_OBJ_DIR)/%.hex: $(EXAMPLES_SRC_DIR)/%.hex
cp -pf $< $@
$(EXAMPLES_OBJ_DIR)/%.mon: $(EXAMPLES_SRC_DIR)/%.mon
cp -pf $< $@
depend:
run: all
cd $(JAR_DIR) ; java -jar $(JAR_OBJ)
#cd $(BUILD_DIR) ; java -ea -cp $(RUN_CLASSPATH) org.soundpaint.rp2040pio.observer.diagram.Diagram
objclean:
- rm -rf $(BUILD_DIR)
jarclean:
- rm -rf $(JAR_DIR)
clean: objclean jarclean
.SUFFIXES: $(SUFFIXES) .java .class
$(BUILD_DIR)%class: $(JAVA_DIR)%java
javac -Xlint:all -Xdiags:verbose -d $(BUILD_DIR) -cp $(COMPILE_CLASSPATH) $<
# Local Variables:
# coding:utf-8
# mode:Makefile
# End:
================================================
FILE: java/Makefile.DocTool
================================================
# Makefile for Java tree of RP2040 PIO emulator
#
# Copyright (C) 2021 Jürgen Reuter
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# For updates and more info or contacting the author, visit:
# <https://github.com/soundpaint/rp2040pio>
#
# Author's web site: www.juergen-reuter.de
ROOT_DIR=..
include ../defs.mak
BUILD_DIR=$(ROOT_BUILD_DIR)/DocTool
COMPILE_CLASSPATH=$(JAVA_DIR):$(BUILD_DIR)
RUN_CLASSPATH=.
PIO_DIR=$(JAVA_DIR)/org/soundpaint/rp2040pio
JAVA_SRC=$(wildcard $(PIO_DIR)/doctool/RegistersDocsBuilder.java)
JAVA_OBJ=$(patsubst $(JAVA_DIR)/%.java,$(BUILD_DIR)/%.class,$(JAVA_SRC))
MEDIA_SRC_DIR=$(JAVA_DIR)/media
MEDIA_OBJ_DIR=$(BUILD_DIR)/media
MEDIA_SRC=$(wildcard $(MEDIA_SRC_DIR)/*.png $(MEDIA_SRC_DIR)/*.html)
MEDIA_OBJ=$(patsubst $(MEDIA_SRC_DIR)/%,$(MEDIA_OBJ_DIR)/%,$(MEDIA_SRC))
EXAMPLES_SRC_DIR=$(JAVA_DIR)/examples
EXAMPLES_OBJ_DIR=$(BUILD_DIR)/examples
EXAMPLES_SRC=$(wildcard $(EXAMPLES_SRC_DIR)/*.hex) $(wildcard $(EXAMPLES_SRC_DIR)/*.mon)
EXAMPLES_OBJ=$(patsubst $(EXAMPLES_SRC_DIR)/%,$(EXAMPLES_OBJ_DIR)/%,$(EXAMPLES_SRC))
JAR_OBJ=$(JAR_DIR)/rp2040pio_doctool.jar
RST_DOC_OBJ = \
$(RST_DOC_DIR)/example-scripts.rst \
$(RST_DOC_DIR)/monitor-commands.rst \
$(RST_DOC_DIR)/pico-emu-registers.rst \
$(RST_DOC_DIR)/pio-emu-registers.rst
all: obj jar doc
obj: $(BUILD_DIR) $(JAVA_OBJ) \
$(MEDIA_OBJ_DIR) $(MEDIA_OBJ) \
$(EXAMPLES_OBJ_DIR) $(EXAMPLES_OBJ)
$(BUILD_DIR):
mkdir -p $@
$(MEDIA_OBJ_DIR):
echo BUILD_MEDIA_DIR=$(MEDIA_OBJ_DIR)
mkdir -p $@
$(EXAMPLES_OBJ_DIR):
echo BUILD_EXAMPLES_DIR=$(EXAMPLES_OBJ_DIR)
mkdir -p $@
$(JAR_DIR):
mkdir -p $@
$(RST_DOC_DIR):
mkdir -p $@
jar: $(JAR_DIR) $(JAR_OBJ)
$(JAR_OBJ): $(JAVA_OBJ)
cd $(BUILD_DIR) ; \
jar -0cvfm ../$(JAR_OBJ) ../$(JAVA_DIR)/META-INF/MANIFEST.MF.DocTool .
$(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%
cp -pf $< $@
$(EXAMPLES_OBJ_DIR)/%.hex: $(EXAMPLES_SRC_DIR)/%.hex
cp -pf $< $@
$(EXAMPLES_OBJ_DIR)/%.mon: $(EXAMPLES_SRC_DIR)/%.mon
cp -pf $< $@
depend:
doc: $(RST_DOC_DIR) $(JAR_OBJ) $(RST_DOC_OBJ)
$(RST_DOC_OBJ): $(JAR_OBJ)
cd $(RST_DOC_DIR) ; java -jar $(JAR_OBJ)
run: all
cd $(JAR_DIR) ; java -jar $(JAR_OBJ)
#cd $(BUILD_DIR) ; java -ea -cp $(RUN_CLASSPATH) org.soundpaint.rp2040pio.Main
objclean:
- rm -rf $(BUILD_DIR)
jarclean:
- rm -rf $(JAR_DIR)
clean: objclean jarclean
.SUFFIXES: $(SUFFIXES) .java .class
$(BUILD_DIR)%class: $(JAVA_DIR)%java
javac -Xlint:all -Xdiags:verbose -d $(BUILD_DIR) -cp $(COMPILE_CLASSPATH) $<
# Local Variables:
# coding:utf-8
# mode:Makefile
# End:
================================================
FILE: java/Makefile.FifoObserver
================================================
# Makefile for Java tree of RP2040 PIO emulator
#
# Copyright (C) 2021 Jürgen Reuter
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# For updates and more info or contacting the author, visit:
# <https://github.com/soundpaint/rp2040pio>
#
# Author's web site: www.juergen-reuter.de
ROOT_DIR=..
include ../defs.mak
BUILD_DIR=$(ROOT_BUILD_DIR)/FifoObserver
COMPILE_CLASSPATH=$(JAVA_DIR):$(BUILD_DIR)
RUN_CLASSPATH=.
PIO_DIR=$(JAVA_DIR)/org/soundpaint/rp2040pio
JAVA_SRC=$(wildcard $(PIO_DIR)/observer/fifo/FifoObserver.java)
JAVA_OBJ=$(patsubst $(JAVA_DIR)/%.java,$(BUILD_DIR)/%.class,$(JAVA_SRC))
MEDIA_SRC_DIR=$(JAVA_DIR)/media
MEDIA_OBJ_DIR=$(BUILD_DIR)/media
MEDIA_SRC=$(wildcard $(MEDIA_SRC_DIR)/*.png $(MEDIA_SRC_DIR)/*.html)
MEDIA_OBJ=$(patsubst $(MEDIA_SRC_DIR)/%,$(MEDIA_OBJ_DIR)/%,$(MEDIA_SRC))
EXAMPLES_SRC_DIR=$(JAVA_DIR)/examples
EXAMPLES_OBJ_DIR=$(BUILD_DIR)/examples
EXAMPLES_SRC=$(wildcard $(EXAMPLES_SRC_DIR)/*.hex) $(wildcard $(EXAMPLES_SRC_DIR)/*.mon)
EXAMPLES_OBJ=$(patsubst $(EXAMPLES_SRC_DIR)/%,$(EXAMPLES_OBJ_DIR)/%,$(EXAMPLES_SRC))
JAR_OBJ=$(JAR_DIR)/rp2040pio_fifoobserver.jar
all: obj jar
obj: $(BUILD_DIR) $(JAVA_OBJ) \
$(MEDIA_OBJ_DIR) $(MEDIA_OBJ) \
$(EXAMPLES_OBJ_DIR) $(EXAMPLES_OBJ)
$(BUILD_DIR):
mkdir -p $@
$(MEDIA_OBJ_DIR):
echo BUILD_MEDIA_DIR=$(MEDIA_OBJ_DIR)
mkdir -p $@
$(EXAMPLES_OBJ_DIR):
echo BUILD_EXAMPLES_DIR=$(EXAMPLES_OBJ_DIR)
mkdir -p $@
$(JAR_DIR):
mkdir -p $@
jar: $(JAR_DIR) $(JAR_OBJ)
$(JAR_OBJ): $(JAVA_OBJ)
cd $(BUILD_DIR) ; \
jar -0cvfm ../$(JAR_OBJ) ../$(JAVA_DIR)/META-INF/MANIFEST.MF.FifoObserver .
$(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%
cp -pf $< $@
$(EXAMPLES_OBJ_DIR)/%.hex: $(EXAMPLES_SRC_DIR)/%.hex
cp -pf $< $@
$(EXAMPLES_OBJ_DIR)/%.mon: $(EXAMPLES_SRC_DIR)/%.mon
cp -pf $< $@
depend:
run: all
cd $(JAR_DIR) ; java -jar $(JAR_OBJ)
#cd $(BUILD_DIR) ; java -ea -cp $(RUN_CLASSPATH) org.soundpaint.rp2040pio.Main
objclean:
- rm -rf $(BUILD_DIR)
jarclean:
- rm -rf $(JAR_DIR)
clean: objclean jarclean
.SUFFIXES: $(SUFFIXES) .java .class
$(BUILD_DIR)%class: $(JAVA_DIR)%java
javac -Xlint:all -Xdiags:verbose -d $(BUILD_DIR) -cp $(COMPILE_CLASSPATH) $<
# Local Variables:
# coding:utf-8
# mode:Makefile
# End:
================================================
FILE: java/Makefile.GPIOObserver
================================================
# Makefile for Java tree of RP2040 PIO emulator
#
# Copyright (C) 2021 Jürgen Reuter
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# For updates and more info or contacting the author, visit:
# <https://github.com/soundpaint/rp2040pio>
#
# Author's web site: www.juergen-reuter.de
ROOT_DIR=..
include ../defs.mak
BUILD_DIR=$(ROOT_BUILD_DIR)/GPIOObserver
COMPILE_CLASSPATH=$(JAVA_DIR):$(BUILD_DIR)
RUN_CLASSPATH=.
PIO_DIR=$(JAVA_DIR)/org/soundpaint/rp2040pio
JAVA_SRC=$(wildcard $(PIO_DIR)/observer/gpio/GPIOObserver.java)
JAVA_OBJ=$(patsubst $(JAVA_DIR)/%.java,$(BUILD_DIR)/%.class,$(JAVA_SRC))
MEDIA_SRC_DIR=$(JAVA_DIR)/media
MEDIA_OBJ_DIR=$(BUILD_DIR)/media
MEDIA_SRC=$(wildcard $(MEDIA_SRC_DIR)/*.png $(MEDIA_SRC_DIR)/*.html)
MEDIA_OBJ=$(patsubst $(MEDIA_SRC_DIR)/%,$(MEDIA_OBJ_DIR)/%,$(MEDIA_SRC))
EXAMPLES_SRC_DIR=$(JAVA_DIR)/examples
EXAMPLES_OBJ_DIR=$(BUILD_DIR)/examples
EXAMPLES_SRC=$(wildcard $(EXAMPLES_SRC_DIR)/*.hex) $(wildcard $(EXAMPLES_SRC_DIR)/*.mon)
EXAMPLES_OBJ=$(patsubst $(EXAMPLES_SRC_DIR)/%,$(EXAMPLES_OBJ_DIR)/%,$(EXAMPLES_SRC))
JAR_OBJ=$(JAR_DIR)/rp2040pio_gpioobserver.jar
all: obj jar
obj: $(BUILD_DIR) $(JAVA_OBJ) \
$(MEDIA_OBJ_DIR) $(MEDIA_OBJ) \
$(EXAMPLES_OBJ_DIR) $(EXAMPLES_OBJ)
$(BUILD_DIR):
mkdir -p $@
$(MEDIA_OBJ_DIR):
echo BUILD_MEDIA_DIR=$(MEDIA_OBJ_DIR)
mkdir -p $@
$(EXAMPLES_OBJ_DIR):
echo BUILD_EXAMPLES_DIR=$(EXAMPLES_OBJ_DIR)
mkdir -p $@
$(JAR_DIR):
mkdir -p $@
jar: $(JAR_DIR) $(JAR_OBJ)
$(JAR_OBJ): $(JAVA_OBJ)
cd $(BUILD_DIR) ; \
jar -0cvfm ../$(JAR_OBJ) ../$(JAVA_DIR)/META-INF/MANIFEST.MF.GPIOObserver .
$(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%
cp -pf $< $@
$(EXAMPLES_OBJ_DIR)/%.hex: $(EXAMPLES_SRC_DIR)/%.hex
cp -pf $< $@
$(EXAMPLES_OBJ_DIR)/%.mon: $(EXAMPLES_SRC_DIR)/%.mon
cp -pf $< $@
depend:
run: all
cd $(JAR_DIR) ; java -jar $(JAR_OBJ)
#cd $(BUILD_DIR) ; java -ea -cp $(RUN_CLASSPATH) org.soundpaint.rp2040pio.Main
objclean:
- rm -rf $(BUILD_DIR)
jarclean:
- rm -rf $(JAR_DIR)
clean: objclean jarclean
.SUFFIXES: $(SUFFIXES) .java .class
$(BUILD_DIR)%class: $(JAVA_DIR)%java
javac -Xlint:all -Xdiags:verbose -d $(BUILD_DIR) -cp $(COMPILE_CLASSPATH) $<
# Local Variables:
# coding:utf-8
# mode:Makefile
# End:
================================================
FILE: java/Makefile.Monitor
================================================
# Makefile for Java tree of RP2040 PIO emulator
#
# Copyright (C) 2021 Jürgen Reuter
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# For updates and more info or contacting the author, visit:
# <https://github.com/soundpaint/rp2040pio>
#
# Author's web site: www.juergen-reuter.de
ROOT_DIR=..
include ../defs.mak
BUILD_DIR=$(ROOT_BUILD_DIR)/Monitor
COMPILE_CLASSPATH=$(JAVA_DIR):$(BUILD_DIR)
RUN_CLASSPATH=.
PIO_DIR=$(JAVA_DIR)/org/soundpaint/rp2040pio
JAVA_SRC=$(wildcard $(PIO_DIR)/monitor/Monitor.java)
JAVA_OBJ=$(patsubst $(JAVA_DIR)/%.java,$(BUILD_DIR)/%.class,$(JAVA_SRC))
MEDIA_SRC_DIR=$(JAVA_DIR)/media
MEDIA_OBJ_DIR=$(BUILD_DIR)/media
MEDIA_SRC=$(wildcard $(MEDIA_SRC_DIR)/*.png $(MEDIA_SRC_DIR)/*.html)
MEDIA_OBJ=$(patsubst $(MEDIA_SRC_DIR)/%,$(MEDIA_OBJ_DIR)/%,$(MEDIA_SRC))
EXAMPLES_SRC_DIR=$(JAVA_DIR)/examples
EXAMPLES_OBJ_DIR=$(BUILD_DIR)/examples
EXAMPLES_SRC=$(wildcard $(EXAMPLES_SRC_DIR)/*.hex) $(wildcard $(EXAMPLES_SRC_DIR)/*.mon)
EXAMPLES_OBJ=$(patsubst $(EXAMPLES_SRC_DIR)/%,$(EXAMPLES_OBJ_DIR)/%,$(EXAMPLES_SRC))
JAR_OBJ=$(JAR_DIR)/rp2040pio_monitor.jar
all: obj jar
obj: $(BUILD_DIR) $(JAVA_OBJ) \
$(MEDIA_OBJ_DIR) $(MEDIA_OBJ) \
$(EXAMPLES_OBJ_DIR) $(EXAMPLES_OBJ)
$(BUILD_DIR):
mkdir -p $@
$(MEDIA_OBJ_DIR):
echo BUILD_MEDIA_DIR=$(MEDIA_OBJ_DIR)
mkdir -p $@
$(EXAMPLES_OBJ_DIR):
echo BUILD_EXAMPLES_DIR=$(EXAMPLES_OBJ_DIR)
mkdir -p $@
$(JAR_DIR):
mkdir -p $@
jar: $(JAR_DIR) $(JAR_OBJ)
$(JAR_OBJ): $(JAVA_OBJ)
cd $(BUILD_DIR) ; \
jar -0cvfm ../$(JAR_OBJ) ../$(JAVA_DIR)/META-INF/MANIFEST.MF.Monitor .
$(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%
cp -pf $< $@
$(EXAMPLES_OBJ_DIR)/%.hex: $(EXAMPLES_SRC_DIR)/%.hex
cp -pf $< $@
$(EXAMPLES_OBJ_DIR)/%.mon: $(EXAMPLES_SRC_DIR)/%.mon
cp -pf $< $@
depend:
run: all
cd $(JAR_DIR) ; java -jar $(JAR_OBJ)
#cd $(BUILD_DIR) ; java -ea -cp $(RUN_CLASSPATH) org.soundpaint.rp2040pio.Main
objclean:
- rm -rf $(BUILD_DIR)
jarclean:
- rm -rf $(JAR_DIR)
clean: objclean jarclean
.SUFFIXES: $(SUFFIXES) .java .class
$(BUILD_DIR)%class: $(JAVA_DIR)%java
javac -Xlint:all -Xdiags:verbose -d $(BUILD_DIR) -cp $(COMPILE_CLASSPATH) $<
# Local Variables:
# coding:utf-8
# mode:Makefile
# End:
================================================
FILE: java/Makefile.Observer
================================================
# Makefile for Java tree of RP2040 PIO emulator
#
# Copyright (C) 2021 Jürgen Reuter
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# For updates and more info or contacting the author, visit:
# <https://github.com/soundpaint/rp2040pio>
#
# Author's web site: www.juergen-reuter.de
ROOT_DIR=..
include ../defs.mak
BUILD_DIR=$(ROOT_BUILD_DIR)/Observer
COMPILE_CLASSPATH=$(JAVA_DIR):$(BUILD_DIR)
RUN_CLASSPATH=.
PIO_DIR=$(JAVA_DIR)/org/soundpaint/rp2040pio
JAVA_SRC=$(wildcard $(PIO_DIR)/observer/Observer.java)
JAVA_OBJ=$(patsubst $(JAVA_DIR)/%.java,$(BUILD_DIR)/%.class,$(JAVA_SRC))
MEDIA_SRC_DIR=$(JAVA_DIR)/media
MEDIA_OBJ_DIR=$(BUILD_DIR)/media
MEDIA_SRC=$(wildcard $(MEDIA_SRC_DIR)/*.png $(MEDIA_SRC_DIR)/*.html)
MEDIA_OBJ=$(patsubst $(MEDIA_SRC_DIR)/%,$(MEDIA_OBJ_DIR)/%,$(MEDIA_SRC))
EXAMPLES_SRC_DIR=$(JAVA_DIR)/examples
EXAMPLES_OBJ_DIR=$(BUILD_DIR)/examples
EXAMPLES_SRC=$(wildcard $(EXAMPLES_SRC_DIR)/*.hex) $(wildcard $(EXAMPLES_SRC_DIR)/*.mon)
EXAMPLES_OBJ=$(patsubst $(EXAMPLES_SRC_DIR)/%,$(EXAMPLES_OBJ_DIR)/%,$(EXAMPLES_SRC))
JAR_OBJ=$(JAR_DIR)/rp2040pio_observer.jar
all: obj jar
obj: $(BUILD_DIR) $(JAVA_OBJ) \
$(MEDIA_OBJ_DIR) $(MEDIA_OBJ) \
$(EXAMPLES_OBJ_DIR) $(EXAMPLES_OBJ)
$(BUILD_DIR):
mkdir -p $@
$(MEDIA_OBJ_DIR):
echo BUILD_MEDIA_DIR=$(MEDIA_OBJ_DIR)
mkdir -p $@
$(EXAMPLES_OBJ_DIR):
echo BUILD_EXAMPLES_DIR=$(EXAMPLES_OBJ_DIR)
mkdir -p $@
$(JAR_DIR):
mkdir -p $@
jar: $(JAR_DIR) $(JAR_OBJ)
$(JAR_OBJ): $(JAVA_OBJ)
cd $(BUILD_DIR) ; \
jar -0cvfm ../$(JAR_OBJ) ../$(JAVA_DIR)/META-INF/MANIFEST.MF.Observer .
$(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%
cp -pf $< $@
$(EXAMPLES_OBJ_DIR)/%.hex: $(EXAMPLES_SRC_DIR)/%.hex
cp -pf $< $@
$(EXAMPLES_OBJ_DIR)/%.mon: $(EXAMPLES_SRC_DIR)/%.mon
cp -pf $< $@
depend:
run: all
cd $(JAR_DIR) ; java -jar $(JAR_OBJ)
#cd $(BUILD_DIR) ; java -ea -cp $(RUN_CLASSPATH) org.soundpaint.rp2040pio.Main
objclean:
- rm -rf $(BUILD_DIR)
jarclean:
- rm -rf $(JAR_DIR)
clean: objclean jarclean
.SUFFIXES: $(SUFFIXES) .java .class
$(BUILD_DIR)%class: $(JAVA_DIR)%java
javac -Xlint:all -Xdiags:verbose -d $(BUILD_DIR) -cp $(COMPILE_CLASSPATH) $<
# Local Variables:
# coding:utf-8
# mode:Makefile
# End:
================================================
FILE: java/Makefile.Server
================================================
# Makefile for Java tree of RP2040 PIO emulator
#
# Copyright (C) 2021 Jürgen Reuter
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
#
# For updates and more info or contacting the author, visit:
# <https://github.com/soundpaint/rp2040pio>
#
# Author's web site: www.juergen-reuter.de
ROOT_DIR=..
include ../defs.mak
BUILD_DIR=$(ROOT_BUILD_DIR)/EmulationServer
COMPILE_CLASSPATH=$(JAVA_DIR):$(BUILD_DIR)
RUN_CLASSPATH=.
PIO_DIR=$(JAVA_DIR)/org/soundpaint/rp2040pio
JAVA_SRC=$(wildcard $(PIO_DIR)/EmulationServer.java)
JAVA_OBJ=$(patsubst $(JAVA_DIR)/%.java,$(BUILD_DIR)/%.class,$(JAVA_SRC))
MEDIA_SRC_DIR=$(JAVA_DIR)/media
MEDIA_OBJ_DIR=$(BUILD_DIR)/media
MEDIA_SRC=$(wildcard $(MEDIA_SRC_DIR)/*.png $(MEDIA_SRC_DIR)/*.html)
MEDIA_OBJ=$(patsubst $(MEDIA_SRC_DIR)/%,$(MEDIA_OBJ_DIR)/%,$(MEDIA_SRC))
EXAMPLES_SRC_DIR=$(JAVA_DIR)/examples
EXAMPLES_OBJ_DIR=$(BUILD_DIR)/examples
EXAMPLES_SRC=$(wildcard $(EXAMPLES_SRC_DIR)/*.hex) $(wildcard $(EXAMPLES_SRC_DIR)/*.mon)
EXAMPLES_OBJ=$(patsubst $(EXAMPLES_SRC_DIR)/%,$(EXAMPLES_OBJ_DIR)/%,$(EXAMPLES_SRC))
JAR_OBJ=$(JAR_DIR)/rp2040pio_server.jar
all: obj jar
obj: $(BUILD_DIR) $(JAVA_OBJ) \
$(MEDIA_OBJ_DIR) $(MEDIA_OBJ) \
$(EXAMPLES_OBJ_DIR) $(EXAMPLES_OBJ)
$(BUILD_DIR):
mkdir -p $@
$(MEDIA_OBJ_DIR):
echo BUILD_MEDIA_DIR=$(MEDIA_OBJ_DIR)
mkdir -p $@
$(EXAMPLES_OBJ_DIR):
echo BUILD_EXAMPLES_DIR=$(EXAMPLES_OBJ_DIR)
mkdir -p $@
$(JAR_DIR):
mkdir -p $@
jar: $(JAR_DIR) $(JAR_OBJ)
$(JAR_OBJ): $(JAVA_OBJ)
cd $(BUILD_DIR) ; \
jar -0cvfm ../$(JAR_OBJ) ../$(JAVA_DIR)/META-INF/MANIFEST.MF.Server .
$(MEDIA_OBJ_DIR)/%: $(MEDIA_SRC_DIR)/%
cp -pf $< $@
$(EXAMPLES_OBJ_DIR)/%.hex: $(EXAMPLES_SRC_DIR)/%.hex
cp -pf $< $@
$(EXAMPLES_OBJ_DIR)/%.mon: $(EXAMPLES_SRC_DIR)/%.mon
cp -pf $< $@
depend:
run: all
cd $(JAR_DIR) ; java -jar $(JAR_OBJ)
#cd $(BUILD_DIR) ; java -ea -cp $(RUN_CLASSPATH) org.soundpaint.rp2040pio.Main
objclean:
- rm -rf $(BUILD_DIR)
jarclean:
- rm -rf $(JAR_DIR)
clean: objclean jarclean
.SUFFIXES: $(SUFFIXES) .java .class
$(BUILD_DIR)%class: $(JAVA_DIR)%java
javac -Xlint:all -Xdiags:verbose -d $(BUILD_DIR) -cp $(COMPILE_CLASSPATH) $<
# Local Variables:
# coding:utf-8
# mode:Makefile
# End:
================================================
FILE: java/examples/addition.mon
================================================
# Script: Addition
#
# Monitor script for addition example (see RP2040
# datasheet, Sect. 3.6.9. "Addition").
# To be executed on PIO 0, SM 0.
# Make a full reset of the emulator.
reset
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=8 --target=0
# The code.
# ; This program uses the two's complement identity x + y == ~(~x - y)
enter -a 0 -v 0x80a0 # pull
enter -a 1 -v 0xa02f # mov x, ~osr
enter -a 2 -v 0x80a0 # pull
enter -a 3 -v 0xa047 # mov y, osr
enter -a 4 -v 0x0006 # jmp test
# ; this loop is equivalent to the following C code:
# incr: ; while (y--)
enter -a 5 -v 0x0046 # jmp x-- test ; x--;
# test: ; This has the effect of subtracting y from x, eventually.
enter -a 6 -v 0x0085 # jmp y-- incr
enter -a 7 -v 0xa0c9 # mov isr, ~x
enter -a 8 -v 0x8020 # push
# Set up the program for execution on PIO 0, SM 0 with side-set 0.
side-set --pio=0 --sm=0 --count=0
sm --pio=0 --sm=0 --enable=true
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=9
# Set up FIFO with 2 example operands
fifo --tx --enqueue --value 0x0003
fifo --tx --enqueue --value 0x0005
# Result 0x3 + 0x5 = 0x8 should eventually appear in RX FIFO.
# Done.
quit
================================================
FILE: java/examples/apa102-mini.mon
================================================
# Script: APA102 Mini
# Group: APA102
#
# Monitor script for APA102 Mini example.
# To be executed on PIO 0, SM 0.
# pin_din is mapped to GPIO0 in this example.
# pin_clk is mapped to GPIO1 in this example.
# Make a full reset of the emulator.
reset
# We loosely follow the initialization sequence as shown in:
# https://github.com/raspberrypi/pico-examples
# /blob/master/pio/apa102/apa102.pio
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=1 --target=0
# Configure Side Set Count.
side-set --pio=0 --sm=0 --count=1 --opt=false
# The code.
# loop:
# .wrap_target
enter -a 00 -v 0x6001 # out pins, 1 side 0
enter -a 01 -v 0xb042 # nop side 1
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=2
########
# Init program (analoguous to apa102_mini_program_init() in apa102.pio).
########
# Set pin_din and pin_clk to 0, direction out.
gpio --pio=0 --gpio=0 --clear
gpio --pio=0 --gpio=0 --enable
gpio --pio=0 --gpio=1 --clear
gpio --pio=0 --gpio=1 --enable
# GPIO init pin_din and pin_clk.
gpio --pio=0 --gpio=0 --init
gpio --pio=0 --gpio=1 --init
# SM Config Set Out Pins(base=pin_din, count=1).
pinctrl --pio=0 --sm=0 --out-base=0 --out-count=1
# SM Config Set Side-Set Pins(pin_clk).
side-set --pio=0 --sm=0 --base=1
# SM Config Set Out Shift(left, autopull, threshold 32)
fifo --pio=0 --sm=0 --tx --shift-left
fifo --pio=0 --sm=0 --tx --auto=true
fifo --pio=0 --sm=0 --tx --threshold=32
# We only need TX, so get an 8-deep FIFO!
fifo --pio=0 --sm=0 --join --tx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0x00
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
########
# Put example values into FIFO.
fifo --enqueue --tx --value 0xa55a0ff0
fifo --enqueue --tx --value 0x1e3c78f0
# Done.
quit
================================================
FILE: java/examples/apa102-rgb555.mon
================================================
# Script: APA102 RGB555
# Group: APA102
#
# Monitor script for AP102 RGB555 example.
# To be executed on PIO 0, SM 0.
# output pin is mapped to GPIO0.
# Make a full reset of the emulator.
reset
# Since there is no initialization in
# https://github.com/raspberrypi/pico-examples
# /blob/master/pio/apa102/apa102.pio, we just do it
# on our own, extracting all relevant info from
# the PIO program itself.
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=14 --target=0
# Configure Side Set Count.
side-set --pio=0 --sm=0 --count=0 --opt=false
# The code.
# .wrap_target
# public pixel_out:
enter -a 00 -v 0x80e0 # pull ifempty
enter -a 01 -v 0xe022 # set x, 2
# colour_loop:
enter -a 02 -v 0x40e5 # in osr, 5
enter -a 03 -v 0x6065 # out null, 5
enter -a 04 -v 0x4063 # in null, 3
enter -a 05 -v 0x0042 # jmp x-- colour_loop
enter -a 06 -v 0x4048 # in y, 8
enter -a 07 -v 0xa0d6 # mov isr, ::isr
enter -a 08 -v 0x6061 # out null, 1
# public bit_run:
enter -a 09 -v 0xe03f # set x, 31
# bit_out:
enter -a 10 -v 0xe000 # set pins, 0
enter -a 11 -v 0xa606 # mov pins, isr [6]
enter -a 12 -v 0xe001 # set pins, 1
enter -a 13 -v 0x46c1 # in isr, 1 [6]
enter -a 14 -v 0x004a # jmp x-- bit_out
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=15
########
# Init program (based on comments and PIO code).
########
# SM Config Set Out Pins(base=pin, count=1).
pinctrl --pio=0 --sm=0 --out-base=0 --out-count=1
# SM Config Set Out Shift(right, no autopull)
fifo --pio=0 --sm=0 --tx --shift-right
fifo --pio=0 --sm=0 --tx --auto=false
# SM Config Set In Shift(right, no autopush)
fifo --pio=0 --sm=0 --rx --shift-right
fifo --pio=0 --sm=0 --rx --auto=false
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
# Set consecutive pins, here just a single one.
gpio --pio=0 --gpio=0 --clear # initialize out with 0
# Set consecutive pindirs, here just a single one.
gpio --pio=0 --gpio=0 --enable # set direction out
# GPIO Init
gpio --pio=0 --gpio=0 --init
# We only need TX, so get an 8-deep FIFO!
fifo --pio=0 --sm=0 --join --tx
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to program entry point.
registers --address=0x00
########
# End of SM initialization.
########
# Set brightness value. Only lowest most 5 bits can be freely chosen,
# i.e. valid brightness values are in the range 0…31. The upper 3 bits must be
# 1. That is, valid values for setting Y are values in the range 224…255.
# In this example program, we choose 245 (=0xf5).
registers --y=0xf5 # brightness bit pattern 10101, with three leading "1"s
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# See https://github.com/raspberrypi/pico-examples
# /blob/master/pio/apa102/apa102.pio ("APA102 command structure") for
# details on the encoding of the resulting 32 bit frames that are
# output to the GPIO pin.
# FIFO entries: Each entry contains 2 pixels, each consisting of 5+5+5
# bits for colors red, green, and blue, respectively. The first pixel
# is coded in the lower 16 bits, the next one in the upper 16 bits.
# Hence, the overall binary bit representation of a FIFO entry is:
# 0b0bbbbbgggggrrrrr0bbbbbgggggrrrrr.
fifo --enqueue --tx --value 0x03e0001f # red, then green
fifo --enqueue --tx --value 0x7fff7c00 # blue, then white
# Done.
quit
================================================
FILE: java/examples/auto-push-pull.mon
================================================
# Script: Auto-Push-Pull
# Group: Autopush and Autopull
#
# Monitor script for auto-push-pull example (see RP2040
# datasheet, Sect. 3.5.4. "Autopush and Autopull").
# To be executed on PIO 0, SM 0.
# Make a full reset of the emulator.
reset
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=1 --target=0
# Configure Side Set
side-set --pio=0 --sm=0 --count=0 --opt=false # no side-set
# The code.
# .wrap_target
enter -a 0 -v 0x6020 # out x, 32
enter -a 1 -v 0x4020 # in x,32
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=2
########
# Init program (analoguous to ws2812_program_init() in ws2812.pio.h as
# created by pioasm).
########
# Configure IN / OUT shift.
fifo --pio=0 --sm=0 --rx --shift-left # ISR shift left
fifo --pio=0 --sm=0 --rx --auto=true # auto push on
fifo --pio=0 --sm=0 --rx --threshold=32 # auto push threshold
fifo --pio=0 --sm=0 --tx --shift-left # OSR shift left
fifo --pio=0 --sm=0 --tx --auto=true # auto pull on
fifo --pio=0 --sm=0 --tx --threshold=32 # auto pull threshold
# Configure FIFO join: No join.
fifo --pio=0 --sm=0 --unjoin --tx
fifo --pio=0 --sm=0 --unjoin --rx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO.
fifo --enqueue --tx --value 0x0
fifo --enqueue --tx --value 0x1
fifo --enqueue --tx --value 0x2
fifo --enqueue --tx --value 0x3
# Done.
quit
================================================
FILE: java/examples/autopull.mon
================================================
# Script: Autopull
# Group: Autopush and Autopull
#
# Monitor script for auto pull example (see RP2040
# datasheet, Sect. 3.5.4. "Autopush and Autopull").
# To be executed on PIO 0, SM 0.
# Clock (side-set) output is mapped to GPIO 0.
# Data (OUT) ouput is mapped to GPIO 1.
# Make a full reset of the emulator.
reset
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=1 --target=0
# Configure Side Set
side-set --pio=0 --sm=0 --count=1 --opt=false # .side_set 1
# The code.
# .wrap_target
enter -a 0 -v 0x6101 # out pins, 1 side 0 [1] ; Shift out data bit and toggle clock low
enter -a 1 -v 0xb142 # nop side 1 [1] ; toggle clock high
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=2
########
# Init program (analoguous to ws2812_program_init() in ws2812.pio.h as
# created by pioasm).
########
# Connect GPIO pins 0 and 1 with PIO 0.
gpio --pio=0 --gpio=0 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=1 --init # tell GPIO to connect to PIO0
# Set direction out for these two pins.
gpio --pio=0 --gpio=0 --enable # set direction out
gpio --pio=0 --gpio=1 --enable # set direction out
# Configure out shift.
fifo --pio=0 --sm=0 --tx --shift-left # OSR shift left
fifo --pio=0 --sm=0 --tx --auto=true # auto pull on
fifo --pio=0 --sm=0 --tx --threshold=4 # auto pull threshold
# Configure FIFO join: Join TX.
fifo --pio=0 --sm=0 --join --tx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
# Configure clock (side-set) for GPIO 0.
side-set --pio=0 --sm=0 --base=0
# Configure data (OUT) to output a single bit to GPIO 1.
pinctrl --pio=0 --sm=0 --out-count=1 --out-base=1
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO.
fifo --enqueue --tx --value 0xffff0000 # bit pattern 11111111...00000000
fifo --enqueue --tx --value 0x0000ffff # bit pattern 00000000...11111111
fifo --enqueue --tx --value 0xaaaaaaaa # bit pattern 10101010...10101010
# Done.
quit
================================================
FILE: java/examples/blink.mon
================================================
# Script: PIO Blink
#
# Monitor script for PIO Blink example.
# To be executed on PIO 0, SM 0.
# For LED on OUT pin, mapped to GPIO0.
# Make a full reset of the emulator.
reset
# We loosely follow the initialization sequence as shown in:
# https://github.com/raspberrypi/pico-examples
# /blob/master/pio/pio_blink/blink.pio
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=7 --target=2
# Configure Side Set Count.
side-set --pio=0 --sm=0 --count=0 --opt=false
# The code.
enter -a 00 -v 0x80a0 # pull block
enter -a 01 -v 0x6040 # out y, 32
# .wrap_target
enter -a 02 -v 0xa022 # mov x, y
enter -a 03 -v 0xe001 # set pins, 1 ; turn LED on
# lp1:
enter -a 04 -v 0x0044 # jmp x-- lp1 ; (x + 1) cycles delay, x is 32 bit number
enter -a 05 -v 0xa022 # mov x, y
enter -a 06 -v 0xe000 # set pins, 0 ; turn LED off
# lp2:
enter -a 07 -v 0x0047 # jmp x-- lp2 ; delay for same number of cycles again
# .wrap ; blink forever
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=8
########
# Init program (analoguous to st7789_lcd_program_init() in st7789_lcd.pio).
########
# GPIO init OUT pin
gpio --pio=0 --gpio=0 --init # OUT pin on GPIO0
# Set consecutive pindirs, here just a single one for OUT pin.
gpio --pio=0 --gpio=0 --enable # set direction out
# SM Config Set Set Pins(base=0, count=1).
pinctrl --pio=0 --sm=0 --set-base=0 --set-count=1
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0x00
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
########
# Put LED blink period length (number of clock cycles per phase minus
# 3) into FIFO. For example, a value of 4 will result in overall
# blink cycle length of 2 * (4 + 3) = 14 clock cycles.
fifo --enqueue --tx --value 0x00000004
# Done.
quit
================================================
FILE: java/examples/bmc-rx.mon
================================================
# Script: Differential Manchester RX
# Group: Differential Manchester (BMC) TX and RX
#
# Monitor script for BMC RX example (see RP2040 datasheet,
# Sect. 3.6.6. "Differential Manchester (BMC) TX and RX"). To be
# executed on PIO 0, SM 0.
# Make a full reset of the emulator.
reset
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=9 --target=5
# Configure Side Set
side-set --pio=0 --sm=0 --count=0 --opt=false
# The code.
# public start:
# initial_high:
enter -a 0 -v 0x2ba0 # wait 1 pin, 0 [11]
enter -a 1 -v 0x00c4 # jmp pin high_0
# high_1:
enter -a 2 -v 0x4021 # in x, 1
enter -a 3 -v 0x0000 # jmp initial_high
# high_0:
enter -a 4 -v 0x4141 # in y, 1 [1]
# .wrap_target
# initial_low:
enter -a 5 -v 0x2b20 # wait 0 pin, 0 [11]
enter -a 6 -v 0x00c9 # jmp pin low_1
# low_0:
enter -a 7 -v 0x4041 # in y, 1
enter -a 8 -v 0x0000 # jmp initial_high
# low_1:
enter -a 9 -v 0x4121 # in x, 1 [1]
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=10
########
# Init program (analoguous to ws2812_program_init() in ws2812.pio.h as
# created by pioasm).
########
# Set consecutive pindirs, here just a single one.
gpio --pio=0 --gpio=0 --disable # set direction in
# Connect GPIO 0 with PIO 0
gpio --pio=0 --gpio=0 --init
# Configure side set base (for WAIT).
side-set --pio=0 --sm=0 --base=0
# SM Config Set JMP PIN (for JMP).
pinctrl --pio=0 --sm=0 --jmp-pin=0
# Configure in shift.
fifo --pio=0 --sm=0 --rx --shift-right
fifo --pio=0 --sm=0 --rx --auto=true # auto push
fifo --pio=0 --sm=0 --rx --threshold=32
# Join FIFO RX
fifo --join --rx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0
########
# End of SM initialization.
########
# Set X and Y to 1 and 0, to conveniently emit these to ISR/FIFO
registers --x=1
registers --y=0
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# While running the PIO program by triggering cycles, insert now and
# then either:
gpio --gpio=0 --set
# or:
gpio --gpio=0 --clear
# after an appropriate amount of cycles to change GPIO 0 input, as
# appropriate for testing / emulating external data input to the BMC
# RX PIO program.
# Done.
quit
================================================
FILE: java/examples/bmc-tx.mon
================================================
# Script: Differential Manchester TX
# Group: Differential Manchester (BMC) TX and RX
#
# Monitor script for BMC TX example (see RP2040 datasheet,
# Sect. 3.6.6. "Differential Manchester (BMC) TX and RX"). To be
# executed on PIO 0, SM 0.
# Make a full reset of the emulator.
reset
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=7 --target=0
# Configure Side Set
side-set --pio=0 --sm=0 --count=1 --opt=true
# The code.
# public start:
# initial_high:
enter -a 0 -v 0x7821 # out x, 1 side 1
enter -a 1 -v 0x0623 # jmp !x high_0 [6]
# high_1:
enter -a 2 -v 0x1700 # jmp initial_high side 0 [7]
# high_0:
enter -a 3 -v 0x0704 # jmp initial_low [7]
# initial_low:
enter -a 4 -v 0x7021 # out x, 1 side 0
enter -a 5 -v 0x0627 # jmp !x low_0 [6]
# low_1:
enter -a 6 -v 0x1f04 # jmp initial_low side 1 [7]
# low_0:
enter -a 7 -v 0x0700 # jmp initial_high [7]
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=8
########
# Init program (analoguous to ws2812_program_init() in ws2812.pio.h as
# created by pioasm).
########
# Set GPIO output value to 0.
gpio --pio=0 --gpio=0 --clear
# Set consecutive pindirs, here just a single one.
gpio --pio=0 --gpio=0 --enable # set direction out
# Connect GPIO 0 with PIO 0
gpio --pio=0 --gpio=0 --init
# Configure side set base.
side-set --pio=0 --sm=0 --base=0
# Configure out shift.
fifo --pio=0 --sm=0 --tx --shift-right
fifo --pio=0 --sm=0 --tx --auto=true # auto pull
fifo --pio=0 --sm=0 --tx --threshold=32
# Join FIFO TX
fifo --join --tx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0
########
# End of SM initialization.
########
# Unlike the initialization in differential_manchester.pio, we do
# *not* execute a blocking pull here since we feed in data for
# immediate consumption a few lines down from here.
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO.
fifo --enqueue --tx --value 0x115a88a5
fifo --enqueue --tx --value 0xf0f0f0f0
# Done.
quit
# Hint: In the Diagram Creator, you can select 16 as "Cycles" value,
# and start the "emulate" button with one of the two "OUT x, 01"
# instructions being the next instruction to be executed. Then, you
# can watch bit by bit producing the corresponding output level at
# GPIO0, with the bits shifted one by one out of OSR.
================================================
FILE: java/examples/clocked-input.mon
================================================
# Script: Clocked Input
#
# Monitor script for Clocked Input example.
# To be executed on PIO 0, SM 0.
# Data input pin is mapped to GPIO0.
# Clock input pin is mapped to GPIO1.
# Make a full reset of the emulator.
reset
# We loosely follow the initialization sequence as shown in:
# https://github.com/raspberrypi/pico-examples
# /blob/master/pio/clocked_input/clocked_input.pio
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=2 --target=0
# The code.
# .wrap_target
enter -a 00 -v 0x2021 # wait 0 pin 1
enter -a 01 -v 0x20a1 # wait 1 pin 1
enter -a 02 -v 0x4001 # in pins, 1
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=3
########
# Init program (analoguous to clocked_input_program_init() in
# clocked_input.pio).
########
# SM Config Set In Pins(base=pin).
pinctrl --pio=0 --sm=0 --in-base=0
# Set consecutive pindirs, here two pins 0 and 1 for data and clock.
gpio --pio=0 --gpio=0 --disable # set direction in
gpio --pio=0 --gpio=1 --disable # set direction in
# GPIO init pins.
gpio --pio=0 --gpio=0 --init
gpio --pio=0 --gpio=1 --init
# SM Config Set In Shift(left, autopush, threshold 8)
fifo --pio=0 --sm=0 --rx --shift-left
fifo --pio=0 --sm=0 --rx --auto=true
fifo --pio=0 --sm=0 --rx --threshold=8
# Join FIFO RX
fifo --join --rx
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0x00
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
########
# To see the clocked input in action, you currently have to manually
# provide some input at GPIO0 (data input) and GPIO1 (clock input).
# For that purpose, in the Monitor client application, use commands
# like "gpio --gpio=0 --clear" or "gpio --gpio=0 --set" to select
# value 0 or 1 as data value for GPIO0, and "gpio --gpio=1 --clear"
# or "gpio --gpio=1 --set" to control the clock signal on GPIO1.
#
# Whenever on GPIO1 (the clock input) a change from input value 0 to
# input value 1 is detected, on the next PIO clock cycle, the value
# that is then found as input on GPIO0 will be recorded as a bit. Bits
# are collected and packaged as bytes (=8 bits), and each byte, as soon
# as complete, will be pushed onto the RX FIFO.
# Done.
quit
================================================
FILE: java/examples/exec-example.mon
================================================
# Script: Exec Example
#
# Monitor script for EXEC'd instructions
# example.
#
# To be executed on PIO 0, SM 0.
# Make a full reset of the emulator.
reset
# The code.
# hang:
enter -a 0 -v 0x0000 # jmp hang
# execute:
enter -a 1 -v 0x60e0 # out exec, 32
enter -a 2 -v 0x0001 # jmp execute
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=3
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
# SM Config Set Out Shift(left, autopull, threshold 32)
fifo --pio=0 --sm=0 --tx --shift-left
fifo --pio=0 --sm=0 --tx --auto=true
fifo --pio=0 --sm=0 --tx --threshold=32
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0x00
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Force jump to program location 1.
execute --pio=0 --sm=0 --force=0x0001 # jmp 01
# Put PIO instruction opcodes into FIFO.
fifo --enqueue --tx --value 0x00006020 # out x, 32
fifo --enqueue --tx --value 0x12345678 # data to be OUTed
fifo --enqueue --tx --value 0x00004020 # in x, 32
fifo --enqueue --tx --value 0x00008020 # push
# Done.
quit
================================================
FILE: java/examples/ext-wave.mon
================================================
# Script: External Wave
# Group: Squarewave
#
# Monitor script for providing an external square wave signal put
# onto GPIO pad 23, that changes the pin's status each 3rd clock
# cycle.
# This script serves as an example how to automatically set GPIO
# pads in sync with another script that is executed in parallel.
# See chapter "Interfacing With External Data" in the RP2040 PIO
# Emulator documentation for details.
# We do *not* reset the emulator, but assume that this script is run
# with the emulator already properly set up. Furthermore, we assume
# that the emulator starts with clock cycle 0. Monitor scripts do not
# (yet) provide loops; hence we have to unroll any periodic activity
# for now.
# Set GPIO pin 23 to 1
gpio --gpio=23 --set
# Show effect
gpio
# Await *absolute* clock cycle 0x00000002.
#
# But (just for case that we are already beyond that cycle), as
# fallback, finally give up after 5 cycles, or, alternatively, after
# 300 seconds.
wait --address=0x58000014 --value=0x2 --cycles=5 --time=300000
# The PIO emulator performs instruction fetch & decode during clock
# cycle phase 0, and instruction execution during cycle phase 1.
# Therefore, the trace command of the monitor application displays the
# GPIO state immediately after clock phase 1 has settled,
# i.e. immediately after instruction execution has been completed. To
# avoid a race between the monitor showing the GPIO state after
# completion of cycle phase 1 and this external signal supplying
# script updating the GPIO state also immediately after completion of
# cycle phase 1, scripts like this one are advised to update signal
# state instead immediately after clock phase 0 has settled
# (i.e. after PIO instruction fetch & decode, but before instruction
# execution). For that purpose, we do another wait for the next cycle
# phase 0 to become settled.
wait --address=0x5800000c --value=1 --cycles=0 --time=0
# Now, clear GPIO pin 23 to 1
gpio --gpio=23 --clear
# Show effect
gpio
# Now wait again, but this time nor for an absolute amount of clock
# cycles, but for 3 clock cycles to pass. This can be done by
# specifying a value match condition that surely will never be occur,
# and additionally specify a timeout of 3 cycles, such that the wait
# command will be for sure terminated after the timeout (rather than
# by the value to be matched). Specifically, option "--mask=0" will
# mask out all bits, such that always a value of 0 will be received,
# such that waiting for "--value=1" will never succeed, such that
# finally the timeout will take effect after 3 cycles. Also, turn off
# the default milliseconds timeout of 100 seconds by setting it to 0.
wait --address=0x58000014 --mask=0 --value=1 --cycles=3 --time=0
wait --address=0x5800000c --value=1 --cycles=0 --time=0
# GPIO pin 23 := 1, and show effect.
gpio --gpio=23 --set
gpio
# Wait again 3 cycles
wait --address=0x58000014 --mask=0 --value=1 --cycles=3 --time=0
wait --address=0x5800000c --value=1 --cycles=0 --time=0
# GPIO pin 23 := 0, and show effect.
gpio --gpio=23 --clear
gpio
# Wait.
wait --address=0x58000014 --mask=0 --value=1 --cycles=3 --time=0
wait --address=0x5800000c --value=1 --cycles=0 --time=0
# GPIO pin 23 := 1, and show effect.
gpio --gpio=23 --set
gpio
# And so on, for some more cycles...
wait --address=0x58000014 --mask=0 --value=1 --cycles=3 --time=0
wait --address=0x5800000c --value=1 --cycles=0 --time=0
gpio --gpio=23 --clear
gpio
wait --address=0x58000014 --mask=0 --value=1 --cycles=3 --time=0
wait --address=0x5800000c --value=1 --cycles=0 --time=0
gpio --gpio=23 --set
gpio
# And the same with abbreviated syntax. Note that options "--cycles"
# and "--time" can be completely dropped if we choose to use the
# default values, which is ok, since we expect the wait to finish
# within a very short period of time.
wa -a 0x58000014 -m 0 -v 1 -c 3
wa -a 0x5800000c -v 1
g -g 23 -c
g
wa -a 0x58000014 -m 0 -v 1 -c 3
wa -a 0x5800000c -v 1
g -g 23 -s
g
# And some more cycles, this time without showing each change.
wa -a 0x58000014 -m 0 -v 1 -c 3
wa -a 0x5800000c -v 1
g -g 23 -c
wa -a 0x58000014 -m 0 -v 1 -c 3
wa -a 0x5800000c -v 1
g -g 23 -s
# And finally quit, when we are done.
q
# Done.
================================================
FILE: java/examples/hello.mon
================================================
# Script: Hello PIO
#
# Monitor script for Hello PIO example.
# To be executed on PIO 0, SM 0.
# pin is mapped to GPIO0 in this example.
# Make a full reset of the emulator.
reset
# We loosely follow the initialization sequence as shown in:
# https://github.com/raspberrypi/pico-examples
# /blob/master/pio/hello_pio/hello.pio
# The code.
# loop:
enter -a 00 -v 0x80a0 # pull
enter -a 01 -v 0x6001 # out pins, 1
enter -a 02 -v 0x0000 # jmp loop
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=3
########
# Init program (analoguous to hello_program_init() in hello.pio).
########
# SM Config Set Out Pins(base=pin, count=1).
pinctrl --pio=0 --sm=0 --out-base=0 --out-count=1
# GPIO init pin.
gpio --pio=0 --gpio=0 --init
# Set consecutive pindirs, here just a single one.
gpio --pio=0 --gpio=0 --enable # set direction out
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0x00
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
########
# Put example values into FIFO. Only the most significant bit of
# each FIFO word is output to the GPIO output pin. The value of
# all other bits is irrelevant.
fifo --enqueue --tx --value 0x80000000
fifo --enqueue --tx --value 0x00000000
fifo --enqueue --tx --value 0x80000000
fifo --enqueue --tx --value 0x80000000
# Done.
quit
================================================
FILE: java/examples/hub75.mon
================================================
# Script: HUB75
#
# Monitor script for HUB75 example.
# To be executed on PIO0, SM0 and SM1.
#
# This example consists of *two* PIO programs
# that are executed in parallel on two
# different state machines. The first PIO program
# is to be executed on SM0 and cares for output pins
# GPIO6…GPIO10, GPIO12 and GPIO13. The second PIO
# program is to be executed on SM1 and cares for
# GPIO0…GPIO5 and GPIO11. In particular:
#
# * SM1 RGB (rrggbb) out data pins, mapped to GPIO0…GPIO5.
# * SM0 Row Select out pins are A-E, mapped to GPIO6…GPIO10.
# * SM1 side-set pin 0 is clock_pin, mapped to GPIO11.
# * SM0 side-set pin 0 is Latch (aka Strobe), mapped to GPIO12.
# * SM0 side-set pin 1 is OEn, mapped to GPIO13.
# Make a full reset of the emulator.
reset
# We loosely follow the initialization sequence as shown in:
# https://github.com/raspberrypi/pico-examples
# /blob/master/pio/hub75/hub75.pio
#################################################
####
#### First of the two PIO programs ("hub75_row"):
####
#################################################
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=2 --target=0
# Configure Side Set Count.
side-set --pio=0 --sm=0 --count=2 --opt=false
# The code.
# .wrap_target
enter -a 00 -v 0x7705 # out pins, 5 [7] side 0x2
enter -a 01 -v 0x7f3b # out x, 27 [7] side 0x3
# pulse_loop:
enter -a 02 -v 0x0042 # jmp x-- pulse_loop side 0x0
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=2
########
# Init program (analoguous to hub75_row_program_init() in hub75.pio).
########
# Set consecutive pindirs (row_base_pin=6, count=5).
gpio --pio=0 --gpio=6 --enable # row "A": set direction out
gpio --pio=0 --gpio=7 --enable # row "B": set direction out
gpio --pio=0 --gpio=8 --enable # row "C": set direction out
gpio --pio=0 --gpio=9 --enable # row "D": set direction out
gpio --pio=0 --gpio=10 --enable # row "E": set direction out
# Set consecutive pindirs (base=latch_base_pin=12, count=2).
gpio --pio=0 --gpio=12 --enable # "STB": set direction out
gpio --pio=0 --gpio=13 --enable # "OEn": set direction out
# GPIO init row "A" pin.
gpio --pio=0 --gpio=6 --init # row "A" pin on GPIO6
# GPIO init row "B" pin.
gpio --pio=0 --gpio=7 --init # row "B" pin on GPIO7
# GPIO init row "C" pin.
gpio --pio=0 --gpio=8 --init # row "C" pin on GPIO8
# GPIO init row "D" pin.
gpio --pio=0 --gpio=9 --init # row "D" pin on GPIO9
# GPIO init row "E" pin.
gpio --pio=0 --gpio=10 --init # row "E" pin on GPIO10
# GPIO init Latch pin.
gpio --pio=0 --gpio=12 --init # Latch pin on GPIO12
# GPIO init Oen pin.
gpio --pio=0 --gpio=13 --init # Oen pin on GPIO13
# SM Config Set Out Pins(base=row_base_pin=6, count=5).
pinctrl --pio=0 --sm=0 --out-base=6 --out-count=5
# SM Config Set Side-Set Pins(base=latch_base_pin=12).
side-set --pio=0 --sm=0 --base=12
# SM Config Set Out Shift(right, autopull, threshold 32)
fifo --pio=0 --sm=0 --tx --shift-right
fifo --pio=0 --sm=0 --tx --auto=true
fifo --pio=0 --sm=0 --tx --threshold=32
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --pio=0 --sm=0 --address=0x00
########
# End of SM initialization.
########
# DO NOT YET ENABLE STATE MACHINE 0 OF PIO 0. Because, while
# initializing state machine 1, we execute a forced instruction,
# resulting in also executing the first cycle on SM0, if it were
# enabled already now. Instead, we enable SM0 together with SM1 after
# initialization of SM1.
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO. Lowest 5 bits define ouputs A, B, C,
# D, E. Upper 27 bits define number of cycles to set Latch and Oen
# both to 0, before continuing with next row. In this example, we
# choose 7 cycles to keep synchronized with the other PIO program that
# is executed on SM1.
fifo --pio=0 --sm=0 --enqueue --tx --value 0x000000f0 # row 16, wait 7 cycles
fifo --pio=0 --sm=0 --enqueue --tx --value 0x000000f1 # row 17, wait 7 cycles
fifo --pio=0 --sm=0 --enqueue --tx --value 0x000000f2 # row 18, wait 7 cycles
##########################################################
####
#### Second of the two PIO programs ("hub75_data_rgb888"):
####
##########################################################
# Configure Wrap.
wrap --pio=0 --sm=1 --wrap=18 --target=3
# Configure Side Set Count.
side-set --pio=0 --sm=1 --count=1 --opt=false
# The code.
# public entry_point:
# .wrap_target
# public shift0:
enter -a 03 -v 0x80a0 # pull side 0
enter -a 04 -v 0x40e1 # in osr, 1 side 0
enter -a 05 -v 0x6068 # out null, 8 side 0
enter -a 06 -v 0x40e1 # in osr, 1 side 0
enter -a 07 -v 0x6068 # out null, 8 side 0
enter -a 08 -v 0x40e1 # in osr, 1 side 0
enter -a 09 -v 0x6060 # out null, 32 side 0
# public shift1:
enter -a 10 -v 0x80a0 # pull side 0
enter -a 11 -v 0x50e1 # in osr, 1 side 1
enter -a 12 -v 0x7068 # out null, 8 side 1
enter -a 13 -v 0x50e1 # in osr, 1 side 1
enter -a 14 -v 0x7068 # out null, 8 side 1
enter -a 15 -v 0x50e1 # in osr, 1 side 1
enter -a 16 -v 0x7060 # out null, 32 side 1
enter -a 17 -v 0x507a # in null, 26 side 1
enter -a 18 -v 0xb016 # mov pins, ::isr side 1
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=1 --address=3 --count=16
########
# Init program (analoguous to hub75_data_rgb888_program_init()
# in hub75.pio).
########
# Set consecutive pindirs (rgb_base_pin=7, count=6).
gpio --pio=0 --gpio=0 --enable # "R0": set direction out
gpio --pio=0 --gpio=1 --enable # "G0": set direction out
gpio --pio=0 --gpio=2 --enable # "B0": set direction out
gpio --pio=0 --gpio=3 --enable # "R1": set direction out
gpio --pio=0 --gpio=4 --enable # "G1": set direction out
gpio --pio=0 --gpio=5 --enable # "B1": set direction out
# Set consecutive pindirs (clock_pin=11, count=1).
gpio --pio=0 --gpio=11 --enable # set direction out
# GPIO init RGB pins.
gpio --pio=0 --gpio=0 --init # R0
gpio --pio=0 --gpio=1 --init # G0
gpio --pio=0 --gpio=2 --init # B0
gpio --pio=0 --gpio=3 --init # R1
gpio --pio=0 --gpio=4 --init # G1
gpio --pio=0 --gpio=5 --init # B1
# GPIO init clock pins.
gpio --pio=0 --gpio=11 --init
# SM Config Set Out Pins(base=rgb_base_pin=0, count=6).
pinctrl --pio=0 --sm=1 --out-base=0 --out-count=6
# SM Config Set Side-Set Pins(base=clock_pin).
side-set --pio=0 --sm=1 --base=11
# SM Config Set Out Shift(right, autopull, threshold 24)
fifo --pio=0 --sm=1 --tx --shift-right
fifo --pio=0 --sm=1 --tx --auto=true
fifo --pio=0 --sm=1 --tx --threshold=24
# SM Config Set In Shift(left, no autopush, threshold 32)
fifo --pio=0 --sm=1 --rx --shift-left
fifo --pio=0 --sm=1 --rx --auto=false
fifo --pio=0 --sm=1 --rx --threshold=32
# We only need TX, so get an 8-deep FIFO!
fifo --pio=0 --sm=1 --join --tx
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=1 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=1 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=1 --clear-tx-stall
fifo --pio=0 --sm=1 --clear-tx-over
fifo --pio=0 --sm=1 --clear-rx-under
fifo --pio=0 --sm=1 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=1 --restart
# Restart clock.
clock --pio=0 --sm=1 --restart
# Set instruction pointer (PC) to address 3.
registers --pio=0 --sm=1 --address=0x03
########
# End of SM initialization.
########
execute --pio=0 --sm=1 --force=0x80a0
trace --cycles=1
# In file https://github.com/raspberrypi/pico-examples
# /blob/master/pio/hub75/hub75.c, the PULL instructions
# of the second PIO programs are periodically overwritten
# by different op-codes, while the PIO program is running.
# For demonstration purposes, do this here only once and
# *before* enabling the state machines, such that they do
# not start running before the program is patched, since
# we currently do all control from this script. We use n=3
# in this example.
enter -a 03 -v 0x6063 # out null, 3 side 0
enter -a 10 -v 0x6063 # out null, 3 side 0
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=1 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO. Upper byte is unused. Lower 3 bytes
# contain RGB pixels.
fifo --pio=0 --sm=1 --enqueue --tx --value 0x005a0ff0
fifo --pio=0 --sm=1 --enqueue --tx --value 0x00f05aa5
fifo --pio=0 --sm=1 --enqueue --tx --value 0x00a0ff05
fifo --pio=0 --sm=1 --enqueue --tx --value 0x0005aa5f
# Done.
quit
================================================
FILE: java/examples/i2c.mon
================================================
# Script: I²C
#
# Monitor script for I²C example.
# To be executed on PIO 0, SM 0.
# pin_sda is fed to GPIO 0.
# pin_scl is fed to GPIO 1.
# Make a full reset of the emulator.
reset
# We loosely follow the initialization sequence as shown in:
# https://github.com/raspberrypi/pico-examples
# /blob/master/pio/i2c/i2c.pio
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=17 --target=12
# Configure Side Set Count.
side-set --pio=0 --sm=0 --count=1 --opt=true
# The code.
# do_nack:
enter -a 00 -v 0x008c #jmp y-- entry_point # Continue if NAK was expected
enter -a 01 -v 0xc030 #irq wait 0 rel # Otherwise stop, ask for help
# do_byte:
enter -a 02 -v 0xe027 #set x, 7 # Loop 8 times
# bitloop:
enter -a 03 -v 0x6781 #out pindirs, 1 [7] # Serialise write data
enter -a 04 -v 0xba42 #nop side 1 [2] # SCL rising edge
enter -a 05 -v 0x24a1 #wait 1 pin, 1 [4] # Allow clock to be stretched
enter -a 06 -v 0x4701 #in pins, 1 [7] # Sample read data in middle
enter -a 07 -v 0x1743 #jmp x-- bitloop side 0 [7] ; SCL falling edge
# ; Handle ACK pulse
enter -a 08 -v 0x6781 #out pindirs, 1 [7] # On reads, we provide the ACK
enter -a 09 -v 0xbf42 #nop side 1 [7] # SCL rising edge
enter -a 10 -v 0x27a1 #wait 1 pin, 1 [7] # Allow clock to be stretched
enter -a 11 -v 0x12c0 #jmp pin do_nack side 0 [2] # Test SDA for ACK/NAK
# public entry_point:
# .wrap_target
enter -a 12 -v 0x6026 #out x, 6 # Unpack Instr count
enter -a 13 -v 0x6041 #out y, 1 # Unpack the NAK ignore bit
enter -a 14 -v 0x0022 #jmp !x do_byte # Instr == 0, data record.
enter -a 15 -v 0x6060 #out null, 32 # Instr > 0, OSR rem. invalid
# do_exec:
enter -a 16 -v 0x60f0 #out exec, 16 # Exec one instr / FIFO word
enter -a 17 -v 0x0050 #jmp x-- do_exec # Repeat n + 1 times
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=18
########
# Init program (analoguous to ws2812_program_init() in ws2812.pio.h as
# created by pioasm).
########
# I/O Mapping. Assume pin_sda=0 and pin_scl=1.
# SM Config Set Out Pins(base=pin_sda, count=1).
pinctrl --pio=0 --sm=0 --out-base=0 --out-count=1
# SM Config Set Set Pins(base=pin_sda, count=1).
pinctrl --pio=0 --sm=0 --set-base=0 --set-count=1
# SM Config Set In Pins(base=pin_sda).
pinctrl --pio=0 --sm=0 --in-base=0
# SM Config Set Side-Set Pins(pin_scl).
side-set --pio=0 --sm=0 --base=1
# SM Config Set JMP PIN (jmp_pin=pin_sda).
pinctrl --pio=0 --sm=0 --jmp-pin=0
# SM Config Set Out Shift(left, autopull, threshold 16)
fifo --pio=0 --sm=0 --tx --shift-left
fifo --pio=0 --sm=0 --tx --auto=true
fifo --pio=0 --sm=0 --tx --threshold=16
# SM Config Set In Shift(left, autopush, threshold 8)
fifo --pio=0 --sm=0 --rx --shift-left
fifo --pio=0 --sm=0 --rx --auto=true
fifo --pio=0 --sm=0 --rx --threshold=8
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
# TODO: Try to avoid glitch:
# gpio_pull_up(pin_scl)
# gpio_pull_up(pin_sda)
# Set pins for pin_sda, pin_scl
gpio --pio=0 --gpio=0 --set # pin_sda: high
gpio --pio=0 --gpio=1 --set # pin_scl: high
# Set pindirs for pin_sda, pin_scl
gpio --pio=0 --gpio=0 --enable # pin_sda: output
gpio --pio=0 --gpio=1 --enable # pin_scl: output
# GPIO init pin_sda.
gpio --pio=0 --gpio=0 --init
# Set GPIO Override Invert for pin_sda.
gpio --gpio=0 --override-oe --invert
# GPIO init pin_scl.
gpio --pio=0 --gpio=1 --init
# Set GPIO Override Invert for pin_scl.
gpio --gpio=1 --override-oe --invert
# Set pins for pin_sda, pin_scl
gpio --pio=0 --gpio=0 --clear # pin_sda: low
gpio --pio=0 --gpio=1 --clear # pin_scl: low
interrupt --pio=0 --sm=0 --disable --irq0
interrupt --pio=0 --sm=0 --disable --irq1
interrupt --pio=0 --sm=0 --value=false
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0c.
registers --address=0x0c
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO. Only the lowest 8 bits are used (8
# data bits, 1 stop bit).
# Instructions to put into FIFO for executing START/STOP/REPSTART:
#
# f780 set pindirs, 0 side 0 [7] ; SCL = 0, SDA = 0
# f781 set pindirs, 1 side 0 [7] ; SCL = 0, SDA = 1
# ff80 set pindirs, 0 side 1 [7] ; SCL = 1, SDA = 0
# ff81 set pindirs, 1 side 1 [7] ; SCL = 1, SDA = 1
# Instruction format to put into FIFO:
#
# | 15:10 | 9 | 8:1 | 0 |
# | Instr | Final | Data | NAK |
#
# Instr = 0 for data payload. For more details on this format, see:
# https://github.com/raspberrypi/pico-examples/tree/master/pio/i2c/i2c.pio.
# 0x0400: Instr = 1 => announce n + 1 = 2 instructions
# 0x0000: Instructions always align with FIFO word => add padding
fifo --enqueue --tx --value 0x04000000
# Now, the n + 1 = 2 instructions, one instruction per FIFO word
# 0xf780: Instruction "SCL = 0, SDA = 0"
# 0xa042: Instruction "nop"
fifo --enqueue --tx --value 0xf7800000
fifo --enqueue --tx --value 0xa0420000
# 0x014a: data byte 0xa5
# 0x0201: data byte 0x00, marked as final byte, but NAK => stop
fifo --enqueue --tx --value 0x014a0201
# Do *not* pull SCL input to 0 (no clock stretching).
# Otherwise, the program would get stuck at the
# "wait 1 pin, 1" instruction.
gpio --gpio=1 --set
# Done.
quit
================================================
FILE: java/examples/logic-analyser.mon
================================================
# Script: Logic Analyser
#
# Monitor script for Logic Analyser example.
# To be executed on PIO 0, SM 0.
# Make a full reset of the emulator.
reset
# We loosely follow the initialization sequence as shown in:
# https://github.com/raspberrypi/pico-examples
# /blob/master/pio/logic_analyser/logic_analyser.c
# Configure Side Set Count.
side-set --pio=0 --sm=0 --count=0 --opt=false
# The code.
# .wrap_target
enter -a 00 -v 0x4007 # in pins, pin_count ; in this example, pin_count=7
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=1
########
# Init program (analoguous to logic_analyser_init() in logic_analyser.c).
########
# SM Config Set In Pins(base=pin_base).
pinctrl --pio=0 --sm=0 --in-base=0
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=0 --target=0
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
# SM Config Set In Shift(right, autopush, threshold)
fifo --pio=0 --sm=0 --rx --shift-right
fifo --pio=0 --sm=0 --rx --auto=true
fifo --pio=0 --sm=0 --rx --threshold=28 # 4 samples á 7 bits
# We only need RX, so get an 8-deep FIFO!
fifo --pio=0 --sm=0 --join --rx
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0x00
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
########
# Put some values onto GPIO pins to be sampled.
# Bit pattern: 1010101 for GPIOs 0…6.
gpio --gpio=0 --set
gpio --gpio=1 --clear
gpio --gpio=2 --set
gpio --gpio=3 --clear
gpio --gpio=4 --set
gpio --gpio=5 --clear
gpio --gpio=6 --set
# Done.
quit
================================================
FILE: java/examples/manchester-rx.mon
================================================
# Script: Manchester Serial RX
# Group: Manchester Serial TX and RX
#
# Monitor script for Manchester Serial RX example (see RP2040
# datasheet, Sect. 3.6.5. "Manchester Serial TX and RX"). To be
# executed on PIO 0, SM 0.
# Make a full reset of the emulator.
reset
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=5 --target=3
# Configure Side Set
side-set --pio=0 --sm=0 --count=0 --opt=false
# The code.
# start_of_0:
enter -a 0 -v 0x2020 # wait 0 pin 0
enter -a 1 -v 0x4841 # in y, 1 [8]
enter -a 2 -v 0x00c0 # jmp pin start_of_0
# .wrap_target
# start_of_1:
enter -a 3 -v 0x20a0 # wait 1 pin 0
enter -a 4 -v 0x4821 # in x, 1 [8]
enter -a 5 -v 0x00c0 # jmp pin start_of_0
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=6
########
# Init program (analoguous to ws2812_program_init() in ws2812.pio.h as
# created by pioasm).
########
# Set consecutive pindirs, here just a single one.
gpio --pio=0 --gpio=0 --disable # set direction in
# Connect GPIO 0 with PIO 0
gpio --pio=0 --gpio=0 --init
# Configure side set base (for WAIT).
side-set --pio=0 --sm=0 --base=0
# SM Config Set JMP PIN (for JMP).
pinctrl --pio=0 --sm=0 --jmp-pin=0
# Configure in shift.
fifo --pio=0 --sm=0 --rx --shift-right
fifo --pio=0 --sm=0 --rx --auto=true # auto push
fifo --pio=0 --sm=0 --rx --threshold=32
# Join FIFO RX
fifo --join --rx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0
########
# End of SM initialization.
########
# Set X and Y to 1 and 0, to conveniently emit these to ISR/FIFO
registers --x=1
registers --y=0
# Assume idle low, first bit is 0. Wait until 0 detected.
execute --pio=0 --sm=0 --force=0x22a0
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# While running the PIO program by triggering cycles, insert now and
# then either:
gpio --gpio=0 --set
# or:
gpio --gpio=0 --clear
# after an appropriate amount of cycles to change GPIO 0 input, as
# appropriate for testing / emulating external data input to the
# Manchester Serial RX PIO program.
# Done.
quit
================================================
FILE: java/examples/manchester-tx.mon
================================================
# Script: Manchester Serial TX
# Group: Manchester Serial TX and RX
#
# Monitor script for Manchester Serial TX example (see RP2040
# datasheet, Sect. 3.6.5. "Manchester Serial TX and RX"). To be
# executed on PIO 0, SM 0.
# Make a full reset of the emulator.
reset
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=5 --target=0
# Configure Side Set
side-set --pio=0 --sm=0 --count=1 --opt=true
# The code.
# .wrap_target
# do_1:
enter -a 0 -v 0xb542 # nop side 0 [5]
enter -a 1 -v 0x1b04 # jmp get_bit side 1 [3]
# do_0:
enter -a 2 -v 0xbd42 # nop side 1 [5]
enter -a 3 -v 0xb342 # nop side 0 [3]
# public start:
# get_bit:
enter -a 4 -v 0x6021 # out x, 1
enter -a 5 -v 0x0022 # jmp !x do_0
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=6
########
# Init program (analoguous to ws2812_program_init() in ws2812.pio.h as
# created by pioasm).
########
# Set GPIO output value to 0.
gpio --pio=0 --gpio=0 --clear
# Set consecutive pindirs, here just a single one.
gpio --pio=0 --gpio=0 --enable # set direction out
# Connect GPIO 0 with PIO 0
gpio --pio=0 --gpio=0 --init
# Configure side set base.
side-set --pio=0 --sm=0 --base=0
# Configure out shift.
fifo --pio=0 --sm=0 --tx --shift-right
fifo --pio=0 --sm=0 --tx --auto=true # auto pull
fifo --pio=0 --sm=0 --tx --threshold=32
# Join FIFO TX
fifo --join --tx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO.
fifo --enqueue --tx --value 0x00000000
fifo --enqueue --tx --value 0x0ff0a55a
fifo --enqueue --tx --value 0x12345678
# Done.
quit
# Hint: In the Diagram Creator, you can select 12 as "Cycles" value,
# and start the "emulate" button with the "OUT x, 1" instruction
# being the next instruction to be executed. Then, you can watch bit
# by bit producing the corresponding output level at GPIO0, with the
# bits shifted one by one out of OSR.
================================================
FILE: java/examples/manual-pull.mon
================================================
# Script: Manual Pull
# Group: Autopush and Autopull
#
# Monitor script for manual pull example (see RP2040
# datasheet, Sect. 3.5.4. "Autopush and Autopull").
# To be executed on PIO 0, SM 0.
# Clock (side-set) output is mapped to GPIO 0.
# Data (OUT) ouput is mapped to GPIO 1.
# Make a full reset of the emulator.
reset
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=4 --target=0
# Configure Side Set
side-set --pio=0 --sm=0 --count=1 --opt=true # .side_set 1 opt
# The code.
# .wrap_target
enter -a 0 -v 0xe022 # set x, 2 ; X = bit count - 2
enter -a 1 -v 0x99a0 # pull side 1 [1] ; Stall here if no TX data
# bitloop:
enter -a 2 -v 0x7101 # out pins, 1 side 0 [1] ; Shift out data bit and toggle clock low
enter -a 3 -v 0x1942 # jmp x-- bitloop side 1 [1] ; Loop runs 3 times
enter -a 4 -v 0x7001 # out pins, 1 side 0 ; Shift out last bit before reloading X
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=5
########
# Init program (analoguous to ws2812_program_init() in ws2812.pio.h as
# created by pioasm).
########
# Connect GPIO pins 0 and 1 with PIO 0.
gpio --pio=0 --gpio=0 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=1 --init # tell GPIO to connect to PIO0
# Set direction out for these two pins.
gpio --pio=0 --gpio=0 --enable # set direction out
gpio --pio=0 --gpio=1 --enable # set direction out
# Configure out shift.
fifo --pio=0 --sm=0 --tx --shift-left # OSR shift left
fifo --pio=0 --sm=0 --tx --auto=false # no auto pull
# Configure FIFO join: Join TX.
fifo --pio=0 --sm=0 --join --tx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
# Configure clock (side-set) for GPIO 0.
side-set --pio=0 --sm=0 --base=0
# Configure data (OUT) to output a single bit to GPIO 1.
pinctrl --pio=0 --sm=0 --out-count=1 --out-base=1
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO.
fifo --enqueue --tx --value 0xaaaaaaaa # bit pattern 10101010...
fifo --enqueue --tx --value 0xffffffff # bit pattern 11111111...
# Done.
quit
================================================
FILE: java/examples/pull-example1.mon
================================================
# Script: Pull Example 1
# Group: Autopush and Autopull
#
# Monitor script for pull_example1 (see RP2040
# datasheet, Sect. 3.2.3.1. "Output Shift
# Register (OSR)").
# To be executed on PIO 0, SM 0.
#
# Each FIFO entries holds 4 bytes of output data.
# Each 2nd cycle, the next byte is output on pins
# GPIO0…GPIO7.
# Make a full reset of the emulator.
reset
# The code.
# loop:
enter -a 0 -v 0x6008 # out pins, 8
# public entry_point:
enter -a 1 -v 0x80a0 # pull
enter -a 2 -v 0x6108 # out pins, 8 [1]
enter -a 3 -v 0x6108 # out pins, 8 [1]
enter -a 4 -v 0x6008 # out pins, 8
enter -a 5 -v 0x0000 # jmp loop
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=6
################
# Init program.
################
# Connect GPIO pins 0…7 with PIO 0.
gpio --pio=0 --gpio=0 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=1 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=2 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=3 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=4 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=5 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=6 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=7 --init # tell GPIO to connect to PIO0
# Set direction out for these two pins.
gpio --pio=0 --gpio=0 --enable # set direction out
gpio --pio=0 --gpio=1 --enable # set direction out
gpio --pio=0 --gpio=2 --enable # set direction out
gpio --pio=0 --gpio=3 --enable # set direction out
gpio --pio=0 --gpio=4 --enable # set direction out
gpio --pio=0 --gpio=5 --enable # set direction out
gpio --pio=0 --gpio=6 --enable # set direction out
gpio --pio=0 --gpio=7 --enable # set direction out
# SM Config Set Out Pins(base=0, count=8).
pinctrl --pio=0 --sm=0 --out-base=0 --out-count=8
# SM Config Set Out Shift(left, no autopull)
fifo --pio=0 --sm=0 --tx --shift-left
fifo --pio=0 --sm=0 --tx --auto=false
# Configure FIFO join: Join TX.
fifo --pio=0 --sm=0 --join --tx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 1.
registers --address=1
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO.
# bit patterns 10101010, 11111111, 01010101, 00000000
fifo --enqueue --tx --value 0xaaff5500
# bit patterns 00010001, 11101110, 00110011, 11001100
fifo --enqueue --tx --value 0x11ee33cc
# bit patterns 01110111, 10001000, 11111111, 00000000
fifo --enqueue --tx --value 0x7788ff00
# Done.
quit
================================================
FILE: java/examples/pull-example2.mon
================================================
# Script: Pull Example 2
# Group: Autopush and Autopull
#
# Monitor script for pull_example2 (see RP2040
# datasheet, Sect. 3.2.3.1. "Output Shift
# Register (OSR)").
# To be executed on PIO 0, SM 0.
#
# Each FIFO entries holds 4 bytes of output data.
# Each 2nd cycle, the next byte is output on pins
# GPIO0…GPIO7.
# Make a full reset of the emulator.
reset
# The code.
# loop:
enter -a 0 -v 0x6008 # out pins, 8
# public entry_point:
enter -a 1 -v 0x0000 # jmp loop
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=2
################
# Init program.
################
# Connect GPIO pins 0…7 with PIO 0.
gpio --pio=0 --gpio=0 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=1 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=2 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=3 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=4 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=5 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=6 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=7 --init # tell GPIO to connect to PIO0
# Set direction out for these two pins.
gpio --pio=0 --gpio=0 --enable # set direction out
gpio --pio=0 --gpio=1 --enable # set direction out
gpio --pio=0 --gpio=2 --enable # set direction out
gpio --pio=0 --gpio=3 --enable # set direction out
gpio --pio=0 --gpio=4 --enable # set direction out
gpio --pio=0 --gpio=5 --enable # set direction out
gpio --pio=0 --gpio=6 --enable # set direction out
gpio --pio=0 --gpio=7 --enable # set direction out
# SM Config Set Out Pins(base=0, count=8).
pinctrl --pio=0 --sm=0 --out-base=0 --out-count=8
# SM Config Set Out Shift(left, autopull, threshold 32)
fifo --pio=0 --sm=0 --tx --shift-left
fifo --pio=0 --sm=0 --tx --auto=true
fifo --pio=0 --sm=0 --tx --threshold=32
# Configure FIFO join: Join TX.
fifo --pio=0 --sm=0 --join --tx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 1.
registers --address=1
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO.
# bit patterns 10101010, 11111111, 01010101, 00000000
fifo --enqueue --tx --value 0xaaff5500
# bit patterns 00010001, 11101110, 00110011, 11001100
fifo --enqueue --tx --value 0x11ee33cc
# bit patterns 01110111, 10001000, 11111111, 00000000
fifo --enqueue --tx --value 0x7788ff00
# Done.
quit
================================================
FILE: java/examples/pull-example3.mon
================================================
# Script: Pull Example 3
# Group: Autopush and Autopull
#
# Monitor script for pull_example3 (see RP2040
# datasheet, Sect. 3.2.3.1. "Output Shift
# Register (OSR)").
# To be executed on PIO 0, SM 0.
#
# Each FIFO entries holds 4 bytes of output data.
# Each 2nd cycle, the next byte is output on pins
# GPIO0…GPIO7.
# Make a full reset of the emulator.
reset
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=0 --target=0
# The code.
# public entry_point:
# .wrap_target
# loop:
enter -a 0 -v 0x6108 # out pins, 8 [1]
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=1
################
# Init program.
################
# Connect GPIO pins 0…7 with PIO 0.
gpio --pio=0 --gpio=0 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=1 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=2 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=3 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=4 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=5 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=6 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=7 --init # tell GPIO to connect to PIO0
# Set direction out for these two pins.
gpio --pio=0 --gpio=0 --enable # set direction out
gpio --pio=0 --gpio=1 --enable # set direction out
gpio --pio=0 --gpio=2 --enable # set direction out
gpio --pio=0 --gpio=3 --enable # set direction out
gpio --pio=0 --gpio=4 --enable # set direction out
gpio --pio=0 --gpio=5 --enable # set direction out
gpio --pio=0 --gpio=6 --enable # set direction out
gpio --pio=0 --gpio=7 --enable # set direction out
# SM Config Set Out Pins(base=0, count=8).
pinctrl --pio=0 --sm=0 --out-base=0 --out-count=8
# SM Config Set Out Shift(left, autopull, threshold 32)
fifo --pio=0 --sm=0 --tx --shift-left
fifo --pio=0 --sm=0 --tx --auto=true
fifo --pio=0 --sm=0 --tx --threshold=32
# Configure FIFO join: Join TX.
fifo --pio=0 --sm=0 --join --tx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO.
# bit patterns 10101010, 11111111, 01010101, 00000000
fifo --enqueue --tx --value 0xaaff5500
# bit patterns 00010001, 11101110, 00110011, 11001100
fifo --enqueue --tx --value 0x11ee33cc
# bit patterns 01110111, 10001000, 11111111, 00000000
fifo --enqueue --tx --value 0x7788ff00
# Done.
quit
================================================
FILE: java/examples/pull-example4.mon
================================================
# Script: Pull Example 4
# Group: Autopush and Autopull
#
# Monitor script like pull_example3 (see RP2040
# datasheet, Sect. 3.2.3.1. "Output Shift
# Register (OSR)"), but with an output of 1 byte
# every system cycle.
# To be executed on PIO 0, SM 0.
#
# Each FIFO entries holds 4 bytes of output data.
# Each 2nd cycle, the next byte is output on pins
# GPIO0…GPIO7.
# Make a full reset of the emulator.
reset
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=0 --target=0
# The code.
# public entry_point:
# .wrap_target
# loop:
enter -a 0 -v 0x6008 # out pins, 8
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=1
################
# Init program.
################
# Connect GPIO pins 0…7 with PIO 0.
gpio --pio=0 --gpio=0 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=1 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=2 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=3 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=4 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=5 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=6 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=7 --init # tell GPIO to connect to PIO0
# Set direction out for these two pins.
gpio --pio=0 --gpio=0 --enable # set direction out
gpio --pio=0 --gpio=1 --enable # set direction out
gpio --pio=0 --gpio=2 --enable # set direction out
gpio --pio=0 --gpio=3 --enable # set direction out
gpio --pio=0 --gpio=4 --enable # set direction out
gpio --pio=0 --gpio=5 --enable # set direction out
gpio --pio=0 --gpio=6 --enable # set direction out
gpio --pio=0 --gpio=7 --enable # set direction out
# SM Config Set Out Pins(base=0, count=8).
pinctrl --pio=0 --sm=0 --out-base=0 --out-count=8
# SM Config Set Out Shift(left, autopull, threshold 32)
fifo --pio=0 --sm=0 --tx --shift-left
fifo --pio=0 --sm=0 --tx --auto=true
fifo --pio=0 --sm=0 --tx --threshold=32
# Configure FIFO join: Join TX.
fifo --pio=0 --sm=0 --join --tx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO.
# bit patterns 10101010, 11111111, 01010101, 00000000
fifo --enqueue --tx --value 0xaaff5500
# bit patterns 00010001, 11101110, 00110011, 11001100
fifo --enqueue --tx --value 0x11ee33cc
# bit patterns 01110111, 10001000, 11111111, 00000000
fifo --enqueue --tx --value 0x7788ff00
# Done.
quit
================================================
FILE: java/examples/pwm.mon
================================================
# Script: PWM
#
# Monitor script for PWM example (see RP2040 datasheet,
# Sect. 3.6.8. "PWM"). To be executed on PIO 0, SM 0.
# Make a full reset of the emulator.
reset
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=6 --target=0
# Configure Side Set
side-set --pio=0 --sm=0 --count=1 --opt=true
# The code.
enter -a 0 -v 0x9080 # pull noblock side 0
enter -a 1 -v 0xa027 # mov x, osr
enter -a 2 -v 0xa046 # mov y, isr
# countloop:
enter -a 3 -v 0x00a5 # jmp x!=y noset
enter -a 4 -v 0x1806 # jmp skip side 1
# noset:
enter -a 5 -v 0xa042 # nop
# skip:
enter -a 6 -v 0x0083 # jmp y-- countloop
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=7
########
# Init program (analoguous to ws2812_program_init() in ws2812.pio.h as
# created by pioasm).
########
# Connect GPIO 0 with PIO 0
gpio --pio=0 --gpio=0 --init
# Set consecutive pindirs, here just a single one.
gpio --pio=0 --gpio=0 --enable # set direction out
# Configure side set base.
side-set --pio=0 --sm=0 --base=0
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Set PWM period. The RP foundation's pwm.c sample program puts the
# value into TX FIFO ("pio_sm_put_blocking"), then moves it to OSR by
# executing a "PULL" command, and finally moves it from OSR to ISR by
# executing an "OUT" command with target ISR. Thanks to our monitor
# application, we can achieve the same effect with just a single
# command, by directly assigning the value to the ISR register.
registers --isr=5
# Put example values into FIFO. Maximum valid value is the PWM period.
fifo --enqueue --tx --value 0x3
fifo --enqueue --tx --value 0x5
fifo --enqueue --tx --value 0x2
# Done.
quit
================================================
FILE: java/examples/somewhat-manual-pull.mon
================================================
# Script: Somewhat Manual Pull
# Group: Autopush and Autopull
#
# Monitor script for partial auto pull example (see RP2040
# datasheet, Sect. 3.5.4 "Autopush and Autopull").
# To be executed on PIO 0, SM 0.
# Clock (side-set) output is mapped to GPIO 0.
# Data (OUT) ouput is mapped to GPIO 1.
# Make a full reset of the emulator.
reset
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=1 --target=0
# Configure Side Set
side-set --pio=0 --sm=0 --count=1 --opt=false # .side_set 1
# The code.
# .wrap_target
enter -a 0 -v 0x6101 # out pins, 1 side 0 [1] ; Shift out data bit and toggle clock low
enter -a 1 -v 0x91e0 # pull ifempty side 1 [1] ; Stall here if no TX data
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=2
########
# Init program (analoguous to ws2812_program_init() in ws2812.pio.h as
# created by pioasm).
########
# Connect GPIO pins 0 and 1 with PIO 0.
gpio --pio=0 --gpio=0 --init # tell GPIO to connect to PIO0
gpio --pio=0 --gpio=1 --init # tell GPIO to connect to PIO0
# Set direction out for these two pins.
gpio --pio=0 --gpio=0 --enable # set direction out
gpio --pio=0 --gpio=1 --enable # set direction out
# Configure out shift.
fifo --pio=0 --sm=0 --tx --shift-left # OSR shift left
fifo --pio=0 --sm=0 --tx --auto=false # auto pull off
fifo --pio=0 --sm=0 --tx --threshold=4 # auto pull threshold
# Configure FIFO join: Join TX.
fifo --pio=0 --sm=0 --join --tx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
# Configure clock (side-set) for GPIO 0.
side-set --pio=0 --sm=0 --base=0
# Configure data (OUT) to output a single bit to GPIO 1.
pinctrl --pio=0 --sm=0 --out-count=1 --out-base=1
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO.
fifo --enqueue --tx --value 0xffff0000 # bit pattern 11111111...00000000
fifo --enqueue --tx --value 0x0000ffff # bit pattern 00000000...11111111
fifo --enqueue --tx --value 0xaaaaaaaa # bit pattern 10101010...10101010
# Done.
quit
================================================
FILE: java/examples/spi-cpha0-cs.mon
================================================
# Script: SPI CPHA0 with Chip Select
# Group: SPI
#
# Monitor script for SPI CPHA0 with Chip Select example.
# To be executed on PIO 0, SM 0.
# SCK is side-set pin 0.
# CSn is side-set pin 1 (n=1).
# MOSI is OUT pin (host-to-device).
# MISO is IN pin (device-to-host).
# MOSI and MISO mapped to same pin, so we get loopback.
# n_bits = 8 in this example.
# Make a full reset of the emulator.
reset
# We loosely follow the initialization sequence as shown in:
# https://github.com/raspberrypi/pico-examples
# /blob/master/pio/spi/spi.pio
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=8 --target=0
# Configure Side Set Count.
side-set --pio=0 --sm=0 --count=2 --opt=false
# The code.
# .wrap_target
# bitloop:
enter -a 00 -v 0x6101 # out pins, 1 side 0x0 [1]
enter -a 01 -v 0x4801 # in pins, 1 side 0x1
enter -a 02 -v 0x0840 # jmp x-- bitloop side 0x1
enter -a 03 -v 0x6001 # out pins, 1 side 0x0
enter -a 04 -v 0xa022 # mov x, y side 0x0
enter -a 05 -v 0x4801 # in pins, 1 side 0x1
enter -a 06 -v 0x08e0 # jmp !osre bitloop side 0x1
enter -a 07 -v 0xa142 # nop side 0x0 [1]
# public entry_point:
enter -a 08 -v 0x91e0 # pull ifempty side 0x2 [1]
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=9
########
# Init program (analoguous to ws2812_program_init() in ws2812.pio.h as
# created by pioasm).
########
# SM Config Set Out Pins(base=pin_mosi, count=1).
pinctrl --pio=0 --sm=0 --out-base=0 --out-count=1
# SM Config Set In Pins(base=pin_miso).
pinctrl --pio=0 --sm=0 --in-base=0
# SM Config Set Side-Set Pins(pin_sck): pin_sck=GPIO1, pin_csn=GPIO2.
side-set --pio=0 --sm=0 --base=1
# SM Config Set Out Shift(left, autopull, threshold n_bits)
fifo --pio=0 --sm=0 --tx --shift-left
fifo --pio=0 --sm=0 --tx --auto=true
fifo --pio=0 --sm=0 --tx --threshold=8
# SM Config Set In Shift(left, autopush, threshold n_bits)
fifo --pio=0 --sm=0 --rx --shift-left
fifo --pio=0 --sm=0 --rx --auto=true
fifo --pio=0 --sm=0 --rx --threshold=8
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
# Set Pins: pin_csn=1, pin_sck=0, pin_mosi=0.
gpio --pio=0 --gpio=0 --clear # pin_mosi=0
gpio --pio=0 --gpio=1 --clear # pin_sck=0
gpio --pio=0 --gpio=2 --set # pin_csn=1
# Set PinDirs: pin_csn=out, pin_sck=out, pin_mosi=out, pin_miso=in
gpio --pio=0 --gpio=0 --disable # pin_miso=in
gpio --pio=0 --gpio=0 --enable # pin_mosi=out
gpio --pio=0 --gpio=1 --enable # pin_sck=out
gpio --pio=0 --gpio=2 --enable # pin_csn=out
# GPIO Init
gpio --pio=0 --gpio=0 --init # pin_miso
gpio --pio=0 --gpio=0 --init # pin_mosi
gpio --pio=0 --gpio=1 --init # pin_sck
gpio --pio=0 --gpio=2 --init # pin_csn
# Optionally (for CPOL=1), set pin_sck Override Invert.
gpio --gpio=1 --override-out --invert
# TODO / NOT IMPLEMENTED:
# SPI is synchronous, so bypass input synchroniser to reduce input delay.
# hw_set_bits(&pio->input_sync_bypass, 1u << pin_miso);
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to program entry point.
registers --address=0x08
########
# End of SM initialization.
########
registers --x=6
registers --y=6
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO. Since we chose n_bits = 8 in this
# example, only the most upper bits per FIFO word are significant.
fifo --enqueue --tx --value 0xff000000
fifo --enqueue --tx --value 0x55000000
# Done.
quit
================================================
FILE: java/examples/spi-cpha0.mon
================================================
# Script: SPI CPHA0
# Group: SPI
#
# Monitor script for SPI CPHA0 example.
# To be executed on PIO 0, SM 0.
# SCK is side-set pin.
# MOSI is OUT pin.
# MISO is IN pin.
# MOSI and MISO mapped to same pin, so we get loopback.
# n_bits = 8 in this example.
# Make a full reset of the emulator.
reset
# We loosely follow the initialization sequence as shown in:
# https://github.com/raspberrypi/pico-examples
# /blob/master/pio/spi/spi.pio
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=1 --target=0
# Configure Side Set Count.
side-set --pio=0 --sm=0 --count=1 --opt=false
# The code.
# .wrap_target
enter -a 00 -v 0x6101 # out pins, 1 side 0 [1]
enter -a 01 -v 0x5101 # in pins, 1 side 1 [1]
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=2
########
# Init program (analoguous to ws2812_program_init() in ws2812.pio.h as
# created by pioasm).
########
# SM Config Set Out Pins(base=pin_mosi, count=1).
pinctrl --pio=0 --sm=0 --out-base=0 --out-count=1
# SM Config Set In Pins(base=pin_miso).
pinctrl --pio=0 --sm=0 --in-base=0
# SM Config Set Side-Set Pins(pin_sck).
side-set --pio=0 --sm=0 --base=1
# SM Config Set Out Shift(left, autopull, threshold n_bits)
fifo --pio=0 --sm=0 --tx --shift-left
fifo --pio=0 --sm=0 --tx --auto=true
fifo --pio=0 --sm=0 --tx --threshold=8
# SM Config Set In Shift(left, autopush, threshold n_bits)
fifo --pio=0 --sm=0 --rx --shift-left
fifo --pio=0 --sm=0 --rx --auto=true
fifo --pio=0 --sm=0 --rx --threshold=8
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
# MOSI, SCK output are low, MISO is input
gpio --pio=0 --gpio=0 --disable # MISO input
gpio --pio=0 --gpio=0 --init # MISO init
gpio --pio=0 --gpio=0 --enable # MOSI output
gpio --pio=0 --gpio=0 --clear # MOSI low
gpio --pio=0 --gpio=0 --init # MISO / MOSI init
gpio --pio=0 --gpio=1 --enable # SCK output
gpio --pio=0 --gpio=1 --clear # SCK low
gpio --pio=0 --gpio=1 --init # SCK init
# Optionally (for CPOL=1), set pin_sck Override Invert.
gpio --gpio=1 --override-out --invert
# TODO / NOT IMPLEMENTED:
# SPI is synchronous, so bypass input synchroniser to reduce input delay.
# hw_set_bits(&pio->input_sync_bypass, 1u << pin_miso);
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0x00
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO. Since we chose n_bits = 8 in this
# example, only the most upper bits per FIFO word are significant.
fifo --enqueue --tx --value 0xff000000
fifo --enqueue --tx --value 0x55000000
# Done.
quit
================================================
FILE: java/examples/spi-cpha1-cs.mon
================================================
# Script: SPI CPHA1 with Chip Select
# Group: SPI
#
# Monitor script for SPI CPHA1 with Chip Select example.
# To be executed on PIO 0, SM 0.
# SCK is side-set pin 0.
# CSn is side-set pin 1 (n=1).
# MOSI is OUT pin (host-to-device).
# MISO is IN pin (device-to-host).
# MOSI and MISO mapped to same pin, so we get loopback.
# n_bits = 8 in this example.
# Make a full reset of the emulator.
reset
# We loosely follow the initialization sequence as shown in:
# https://github.com/raspberrypi/pico-examples
# /blob/master/pio/spi/spi.pio
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=8 --target=0
# Configure Side Set Count.
side-set --pio=0 --sm=0 --count=2 --opt=false
# The code.
# .wrap_target
# bitloop:
enter -a 00 -v 0x6901 # out pins, 1 side 0x1 [1]
enter -a 01 -v 0x4001 # in pins, 1 side 0x0
enter -a 02 -v 0x0040 # jmp x-- bitloop side 0x0
enter -a 03 -v 0x6801 # out pins, 1 side 0x1
enter -a 04 -v 0xa822 # mov x, y side 0x1
enter -a 05 -v 0x4001 # in pins, 1 side 0x0
enter -a 06 -v 0x00e0 # jmp !osre bitloop side 0x0
# public entry_point:
enter -a 07 -v 0x91e0 # pull ifempty side 0x2 [1]
enter -a 08 -v 0xa142 # nop side 0x0 [1]
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=9
########
# Init program (analoguous to ws2812_program_init() in ws2812.pio.h as
# created by pioasm).
########
# SM Config Set Out Pins(base=pin_mosi, count=1).
pinctrl --pio=0 --sm=0 --out-base=0 --out-count=1
# SM Config Set In Pins(base=pin_miso).
pinctrl --pio=0 --sm=0 --in-base=0
# SM Config Set Side-Set Pins(pin_sck): pin_sck=GPIO1, pin_csn=GPIO2.
side-set --pio=0 --sm=0 --base=1
# SM Config Set Out Shift(left, autopull, threshold n_bits)
fifo --pio=0 --sm=0 --tx --shift-left
fifo --pio=0 --sm=0 --tx --auto=true
fifo --pio=0 --sm=0 --tx --threshold=8
# SM Config Set In Shift(left, autopush, threshold n_bits)
fifo --pio=0 --sm=0 --rx --shift-left
fifo --pio=0 --sm=0 --rx --auto=true
fifo --pio=0 --sm=0 --rx --threshold=8
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
# Set Pins: pin_csn=1, pin_sck=0, pin_mosi=0.
gpio --pio=0 --gpio=0 --clear # pin_mosi=0
gpio --pio=0 --gpio=1 --clear # pin_sck=0
gpio --pio=0 --gpio=2 --set # pin_csn=1
# Set PinDirs: pin_csn=out, pin_sck=out, pin_mosi=out, pin_miso=in
gpio --pio=0 --gpio=0 --disable # pin_miso=in
gpio --pio=0 --gpio=0 --enable # pin_mosi=out
gpio --pio=0 --gpio=1 --enable # pin_sck=out
gpio --pio=0 --gpio=2 --enable # pin_csn=out
# GPIO Init
gpio --pio=0 --gpio=0 --init # pin_miso
gpio --pio=0 --gpio=0 --init # pin_mosi
gpio --pio=0 --gpio=1 --init # pin_sck
gpio --pio=0 --gpio=2 --init # pin_csn
# Optionally (for CPOL=1), set pin_sck Override Invert.
gpio --gpio=1 --override-out --invert
# TODO / NOT IMPLEMENTED:
# SPI is synchronous, so bypass input synchroniser to reduce input delay.
# hw_set_bits(&pio->input_sync_bypass, 1u << pin_miso);
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to program entry point.
registers --address=0x07
########
# End of SM initialization.
########
registers --x=6
registers --y=6
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO. Since we chose n_bits = 8 in this
# example, only the most upper bits per FIFO word are significant.
fifo --enqueue --tx --value 0xff000000
fifo --enqueue --tx --value 0x55000000
# Done.
quit
================================================
FILE: java/examples/spi-cpha1.mon
================================================
# Script: SPI CPHA1
# Group: SPI
#
# Monitor script for SPI CPHA1 example.
# To be executed on PIO 0, SM 0.
# SCK is side-set pin.
# MOSI is OUT pin.
# MISO is IN pin.
# MOSI and MISO mapped to same pin, so we get loopback.
# n_bits = 8 in this example.
# Make a full reset of the emulator.
reset
# We loosely follow the initialization sequence as shown in:
# https://github.com/raspberrypi/pico-examples
# /blob/master/pio/spi/spi.pio
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=2 --target=0
# Configure Side Set Count.
side-set --pio=0 --sm=0 --count=1 --opt=false
# The code.
# .wrap_target
enter -a 00 -v 0x6021 # out x, 1 side 0
enter -a 01 -v 0xb101 # mov pins, x side 1 [1]
enter -a 02 -v 0x4001 # in pins, 1 side 0
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=3
########
# Init program (analoguous to ws2812_program_init() in ws2812.pio.h as
# created by pioasm).
########
# SM Config Set Out Pins(base=pin_mosi, count=1).
pinctrl --pio=0 --sm=0 --out-base=0 --out-count=1
# SM Config Set In Pins(base=pin_miso).
pinctrl --pio=0 --sm=0 --in-base=0
# SM Config Set Side-Set Pins(pin_sck).
side-set --pio=0 --sm=0 --base=1
# SM Config Set Out Shift(left, autopull, threshold n_bits)
fifo --pio=0 --sm=0 --tx --shift-left
fifo --pio=0 --sm=0 --tx --auto=true
fifo --pio=0 --sm=0 --tx --threshold=8
# SM Config Set In Shift(left, autopush, threshold n_bits)
fifo --pio=0 --sm=0 --rx --shift-left
fifo --pio=0 --sm=0 --rx --auto=true
fifo --pio=0 --sm=0 --rx --threshold=8
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
# MOSI, SCK output are low, MISO is input
gpio --pio=0 --gpio=0 --disable # MISO input
gpio --pio=0 --gpio=0 --init # MISO init
gpio --pio=0 --gpio=0 --enable # MOSI output
gpio --pio=0 --gpio=0 --clear # MOSI low
gpio --pio=0 --gpio=0 --init # MISO / MOSI init
gpio --pio=0 --gpio=1 --enable # SCK output
gpio --pio=0 --gpio=1 --clear # SCK low
gpio --pio=0 --gpio=1 --init # SCK init
# Optionally (for CPOL=1), set pin_sck Override Invert.
gpio --gpio=1 --override-out --invert
# TODO / NOT IMPLEMENTED:
# SPI is synchronous, so bypass input synchroniser to reduce input delay.
# hw_set_bits(&pio->input_sync_bypass, 1u << pin_miso);
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0x00
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO. Since we chose n_bits = 8 in this
# example, only the most upper bits per FIFO word are significant.
fifo --enqueue --tx --value 0xff000000
fifo --enqueue --tx --value 0x55000000
# Done.
quit
================================================
FILE: java/examples/spi-tx-fast.mon
================================================
# Script: SPI TX Fast
# Group: SPI
#
# Monitor script for SPI TX Fast example,
# as described in RP2040 datasheet,
# Sect. 3.5.1. "Side-set".
#
# To be executed on PIO 0, SM 0.
# Data output is fed to GPIO 0.
# Clock output is fed to GPIO 1.
# Make a full reset of the emulator.
reset
# Configure Side Set Count.
side-set --pio=0 --sm=0 --count=1 --opt=false
# The code.
# loop:
enter -a 0 -v 0x6001 # out pins, 1 side 0
enter -a 1 -v 0x1000 # jmp loop side 1
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=2
################
# Init program.
################
# Outputs GPIO0=data, GPIO1=clock.
# Initially drive output-high on clock output.
gpio --pio=0 --gpio=0 --enable # output
gpio --pio=0 --gpio=0 --init
gpio --pio=0 --gpio=1 --enable # output
gpio --pio=0 --gpio=1 --set # high
gpio --pio=0 --gpio=1 --init
# OUT shifts to right, autopull, threshold 32 (use all bits).
fifo --pio=0 --sm=0 --tx --shift-right
fifo --pio=0 --sm=0 --tx --auto=true
fifo --pio=0 --sm=0 --tx --threshold=32
# data on GPIO0
pinctrl --pio=0 --sm=0 --out-count=1 --out-base=0
# clock on GPIO1
side-set --pio=0 --sm=0 --base=1
# We only need TX, so get an 8-deep FIFO!
fifo --pio=0 --sm=0 --join --tx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO. Bits are serialized in LSB to MSB order.
fifo --enqueue --tx --value 0x00ff55aa
fifo --enqueue --tx --value 0xcc33ee11
# Done.
quit
================================================
FILE: java/examples/squarewave-fast.mon
================================================
# Script: Squarewave Fast
# Group: Squarewave
#
# Monitor script for Squarewave example ("fast" version).
# To be executed on PIO 0, SM 0.
# Make a full reset of the emulator.
reset
# We loosely follow the initialization sequence as shown in:
# https://github.com/raspberrypi/pico-examples
# /blob/master/pio/squarewave/squarewave.c
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=2 --target=1
# Configure Side Set Count.
side-set --pio=0 --sm=0 --count=0 --opt=false
# The code.
enter -a 0 -v 0xe081 # set pindirs, 1 ; Set pin to output
# .wrap_target
enter -a 1 -v 0xe001 # set pins, 1 ; Drive pin high
enter -a 2 -v 0xe000 # set pins, 0 ; Drive pin low
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=3
# Configure Clock Divider, here, for demonstration purposes,
# with average divisor 2.5. See RP2040 datasheet, Sect. 3.5.5.,
# Fig. 47, for the effect of a clock divider of value 2.5 onto
# the CLK_ENABLE signal.
#
# Note that the fast version in combination with divisor 2.5
# will result in an assymmetrical output signal (2+3 cycles), since
# there are no fractional clock cycles, but the divisor specifies
# the _average_ time division. To get a symmetrical signal, use
# instead a non-fractional divisor such as 1, 2 or 3.
clock --pio=0 --sm=0 --divider=2.5
# Set consecutive pindirs, here just a single one.
gpio --pio=0 --gpio=0 --enable # set direction out
# Connect GPIO 0 with PIO 0
gpio --pio=0 --gpio=0 --init
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
# Done.
quit
================================================
FILE: java/examples/squarewave-wrap.mon
================================================
# Script: Squarewave Wrap
# Group: Squarewave
#
# Monitor script for Squarewave example ("wrap" version).
# To be executed on PIO 0, SM 0.
# Make a full reset of the emulator.
reset
# We loosely follow the initialization sequence as shown in:
# https://github.com/raspberrypi/pico-examples
# /blob/master/pio/squarewave/squarewave.c
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=2 --target=1
# Configure Side Set Count.
side-set --pio=0 --sm=0 --count=0 --opt=false
# The code.
enter -a 0 -v 0xe081 # set pindirs, 1 ; Set pin to output
# .wrap_target
enter -a 1 -v 0xe101 # set pins, 1 [1] ; Drive pin high & delay for one cycle
enter -a 2 -v 0xe100 # set pins, 0 [1] ; Drive pin low & delay for one cycle
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=3
# Configure Clock Divider, here, for demonstration purposes,
# with average divisor 2.5. See RP2040 datasheet, Sect. 3.5.5.,
# Fig. 47, for the effect of a clock divider of value 2.5 onto
# the CLK_ENABLE signal.
clock --pio=0 --sm=0 --divider=2.5
# Set consecutive pindirs, here just a single one.
gpio --pio=0 --gpio=0 --enable # set direction out
# Connect GPIO 0 with PIO 0
gpio --pio=0 --gpio=0 --init
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
# Done.
quit
================================================
FILE: java/examples/squarewave.hex
================================================
# .program squarewave
# ; periodically turns off / on GPIO0
e081
e101
e000
0001
================================================
FILE: java/examples/squarewave.mon
================================================
# Script: Squarewave
# Group: Squarewave
#
# Monitor script for Squarewave example (base version).
# To be executed on PIO 0, SM 0.
# Make a full reset of the emulator.
reset
# We loosely follow the initialization sequence as shown in:
# https://github.com/raspberrypi/pico-examples
# /blob/master/pio/squarewave/squarewave.c
# Configure Side Set Count.
side-set --pio=0 --sm=0 --count=0 --opt=false
# The code.
enter -a 0 -v 0xe081 # set pindirs, 1 ; Set pin to output
# again:
enter -a 1 -v 0xe101 # set pins, 1 [1] ; Drive pin high & delay for one cycle
enter -a 2 -v 0xe000 # set pins, 0 ; Drive pin low
enter -a 3 -v 0x0001 # jmp again ; Set PC to label `again`
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=4
# Configure Clock Divider, here, for demonstration purposes,
# with average divisor 2.5. See RP2040 datasheet, Sect. 3.5.5.,
# Fig. 47, for the effect of a clock divider of value 2.5 onto
# the CLK_ENABLE signal.
clock --pio=0 --sm=0 --divider=2.5
# Set consecutive pindirs, here just a single one.
gpio --pio=0 --gpio=0 --enable # set direction out
# Connect GPIO 0 with PIO 0
gpio --pio=0 --gpio=0 --init
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
# Done.
quit
================================================
FILE: java/examples/st7789-lcd.mon
================================================
# Script: ST7789 LCD
#
# Monitor script for ST7789 LCD example.
# To be executed on PIO 0, SM 0.
# Data on OUT pin, mapped to GPIO0.
# Clock on side-set pin, mapped to GPIO1.
# Make a full reset of the emulator.
reset
# We loosely follow the initialization sequence as shown in:
# https://github.com/raspberrypi/pico-examples
# /blob/master/pio/st7789_lcd/st7789_lcd.pio
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=1 --target=0
# Configure Side Set Count.
side-set --pio=0 --sm=0 --count=1 --opt=false
# The code.
# .wrap_target
enter -a 00 -v 0x6001 # out pins, 1 side 0 ; stall here if no data (clock low)
enter -a 01 -v 0xb042 # nop side 1
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=2
########
# Init program (analoguous to st7789_lcd_program_init() in st7789_lcd.pio).
########
# GPIO init data_pin
gpio --pio=0 --gpio=0 --init # data_pin on GPIO0
# GPIO init clk_pin
gpio --pio=0 --gpio=1 --init # clk_pin on GPIO1
# Set consecutive pindirs, here just a single one for data_pin.
gpio --pio=0 --gpio=0 --enable # set direction out
# Set consecutive pindirs, here just a single one for clk_pin.
gpio --pio=0 --gpio=1 --enable # set direction out
# SM Config Set Side-Set Pins(base=clk_pin).
side-set --pio=0 --sm=0 --base=1
# SM Config Set Out Pins(base=data_pin, count=1).
pinctrl --pio=0 --sm=0 --out-base=0 --out-count=1
# Set FIFO Join TX
fifo --pio=0 --sm=0 --join --tx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
# SM Config Set Out Shift(left, autopull, threshold 8)
fifo --pio=0 --sm=0 --tx --shift-left
fifo --pio=0 --sm=0 --tx --auto=true
fifo --pio=0 --sm=0 --tx --threshold=8
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0x00
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO. Since we chose n_bits = 8 in this
# example, only the most upper bits per FIFO word are significant.
fifo --enqueue --tx --value 0xa5000000
fifo --enqueue --tx --value 0x0f000000
fifo --enqueue --tx --value 0x01000000
fifo --enqueue --tx --value 0x0e000000
# Done.
quit
================================================
FILE: java/examples/uart-rx-mini.mon
================================================
# Script: UART RX Mini
# Group: UART
#
# Monitor script for UART RX Mini example (see RP2040 datasheet,
# Sect. 3.6.4. "UART RX"). To be executed on PIO 0, SM 0.
# Make a full reset of the emulator.
reset
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=3 --target=0
# Configure Side Set
side-set --pio=0 --sm=0 --count=0 --opt=false
# The code.
# .wrap_target
enter -a 0 -v 0x2020 # wait 0 pin 0
enter -a 1 -v 0xea27 # set x, 7 [10]
# bitloop:
enter -a 2 -v 0x4001 # in pins, 1
enter -a 3 -v 0x0642 # jmp x-- bitloop [6]
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=4
########
# Init program (analoguous to ws2812_program_init() in ws2812.pio.h as
# created by pioasm).
########
# Set consecutive pindirs, here just a single one.
gpio --pio=0 --gpio=0 --disable # set direction in
# Connect GPIO 0 with PIO 0
gpio --pio=0 --gpio=0 --init
# Configure side set base (for WAIT and IN).
side-set --pio=0 --sm=0 --base=0
# Configure in shift.
fifo --pio=0 --sm=0 --rx --shift-right
fifo --pio=0 --sm=0 --rx --auto=true # auto push
fifo --pio=0 --sm=0 --rx --threshold=8
# Join FIFO RX
fifo --join --rx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# While running the PIO program by triggering cycles, insert now and
# then either:
gpio --gpio=0 --set
# or:
gpio --gpio=0 --clear
# after an appropriate amount of cycles to change GPIO 0 input, as
# appropriate for testing / emulating external data input to the
# UART RX Mini PIO program.
# Done.
quit
================================================
FILE: java/examples/uart-rx.mon
================================================
# Script: UART RX
# Group: UART
#
# Monitor script for UART RX example (see RP2040 datasheet,
# Sect. 3.6.4. "UART RX"). To be executed on PIO 0, SM 0.
# Make a full reset of the emulator.
reset
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=8 --target=0
# Configure Side Set
side-set --pio=0 --sm=0 --count=0 --opt=false
# The code.
# .wrap_target
# start:
enter -a 0 -v 0x2020 # wait 0 pin 0
enter -a 1 -v 0xea27 # set x, 7 [10]
# bitloop:
enter -a 2 -v 0x4001 # in pins, 1
enter -a 3 -v 0x0642 # jmp x-- bitloop [6]
enter -a 4 -v 0x00c8 # jmp pin good_stop
enter -a 5 -v 0xc014 # irq 4 rel
enter -a 6 -v 0x20a0 # wait 1 pin 0
enter -a 7 -v 0x0000 # jmp start
# good_stop:
enter -a 8 -v 0x8020 # push
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=8
########
# Init program (analoguous to ws2812_program_init() in ws2812.pio.h as
# created by pioasm).
########
# Set consecutive pindirs, here just a single one.
gpio --pio=0 --gpio=0 --disable # set direction in
# Connect GPIO 0 with PIO 0
gpio --pio=0 --gpio=0 --init
# TODO: Try to avoid glitch:
# gpio_pull_up(0)
# Configure side set base (for WAIT and IN).
side-set --pio=0 --sm=0 --base=0
# SM Config Set JMP PIN.
pinctrl --pio=0 --sm=0 --jmp-pin=0
# Configure in shift.
fifo --pio=0 --sm=0 --rx --shift-right
fifo --pio=0 --sm=0 --rx --auto=false # no auto push
fifo --pio=0 --sm=0 --rx --threshold=32
# Join FIFO RX
fifo --join --rx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# While running the PIO program by triggering cycles, insert now and
# then either:
gpio --gpio=0 --set
# or:
gpio --gpio=0 --clear
# after an appropriate amount of cycles to change GPIO 0 input, as
# appropriate for testing / emulating external data input to the
# UART RX Mini PIO program.
# Done.
quit
================================================
FILE: java/examples/uart-tx.mon
================================================
# Script: UART TX
# Group: UART
#
# Monitor script for UART TX example.
# To be executed on PIO 0, SM 0.
# Output is fed to GPIO 0.
# Make a full reset of the emulator.
reset
# We loosely follow the initialization sequence as shown in:
# https://github.com/raspberrypi/pico-examples
# /blob/master/pio/uart_tx/uart_tx.pio
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=3 --target=0
# Configure Side Set Count.
side-set --pio=0 --sm=0 --count=1 --opt=true
# The code.
enter -a 0 -v 0x9fa0 # pull side 1 [7]
enter -a 1 -v 0xf727 # set x, 7 side 0 [7]
enter -a 2 -v 0x6001 # out pins, 1
# bitloop:
enter -a 3 -v 0x0642 # jmp x-- bitloop [6]
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=4
########
# Init program (analoguous to ws2812_program_init() in ws2812.pio.h as
# created by pioasm).
########
# Tell PIO to initially drive output-high on GPIO 0.
gpio --pio=0 --gpio=0 --enable # output
gpio --pio=0 --gpio=0 --set # high
# Then map PIO onto that pin with the IO muxes.
gpio --pio=0 --gpio=0 --init
# OUT shifts to right, no autopull.
fifo --pio=0 --sm=0 --tx --shift-right
fifo --pio=0 --sm=0 --tx --auto=false
# We are mapping both OUT and side-set to the same pin, because
# sometimes we need to assert user data onto the pin (with OUT) and
# sometimes assert constant values (start/stop bit).
pinctrl --pio=0 --sm=0 --out-count=1 --out-base=0
side-set --pio=0 --sm=0 --base=0
# We only need TX, so get an 8-deep FIFO!
fifo --pio=0 --sm=0 --join --tx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO. Only the lowest 8 bits are used (8
# data bits, 1 stop bit).
fifo --enqueue --tx --value 0x000000a5
fifo --enqueue --tx --value 0x000000f0
# Done.
quit
================================================
FILE: java/examples/ws2812-led.mon
================================================
# Script: WS2812 LED
# Group: WS2812
#
# Monitor script for ws2812_led example,
# as described in RP2040 datasheet,
# Sect. 3.2.3.4. "Scratch Registers".
#
# To be executed on PIO 0, SM 0.
# Output is fed to GPIO 0.
# Make a full reset of the emulator.
reset
# This example uses timing T1=7, T2=8, T3=6.
# The code.
# public entry_point:
enter -a 0 -v 0x80a0 # pull
enter -a 1 -v 0xe037 # set x, 23 ; Loop over 24 bits
# bitloop:
enter -a 2 -v 0xe001 # set pins, 1 ; Drive pin high
enter -a 3 -v 0x6541 # out y, 1 [5] ; Shift 1 bit out, and write it to y
enter -a 4 -v 0x0066 # jmp !y skip ; Skip the extra delay if the bit was 0
enter -a 5 -v 0xa542 # nop [5]
# skip:
enter -a 6 -v 0xe500 # set pins, 0 [5]
enter -a 7 -v 0x0042 # jmp x-- bitloop ; Jump if x nonzero, and decrement x
enter -a 8 -v 0x0000 # jmp entry_point
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=9
################
# Init program.
################
# Connect GPIO 0 with PIO 0.
gpio --pio=0 --gpio=0 --init # tell GPIO to connect to PIO0
# Set consecutive pindirs, here just a single one.
gpio --pio=0 --gpio=0 --enable # set direction out
# SM Config Set Set Pins(base=GPIO0, count=1).
pinctrl --pio=0 --sm=0 --set-base=0 --set-count=1
# Configure out shift.
fifo --pio=0 --sm=0 --tx --shift-left
fifo --pio=0 --sm=0 --tx --auto=false # no auto pull
# Configure FIFO join: Join TX.
fifo --pio=0 --sm=0 --join --tx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO.
# Format of FIFO entry is: RRRRRRRRGGGGGGGGBBBBBBBB00000000.
fifo --enqueue --tx --value 0xaa118800 # RGB mode: end with byte 0x00
fifo --enqueue --tx --value 0x55881100 # RGB mode: end with byte 0x00
# Done.
quit
================================================
FILE: java/examples/ws2812-parallel.mon
================================================
# Script: WS2812 Parallel
# Group: WS2812
#
# Monitor script for ws2812_parallel example.
# To be executed on PIO 0, SM 0.
# Output is fed to GPIO 0.
# Make a full reset of the emulator.
reset
# We loosely follow the initialization sequence as shown in:
# https://github.com/raspberrypi/pico-examples
# /blob/master/pio/ws2812/generated/ws2812.pio.h
#
# This example uses timing T1=2, T2=5, T3=3.
# Note that, according to the discussion in
# https://github.com/raspberrypi/pico-feedback/issues/121,
# T1=T2=T3=2 may be a better choice.
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=3 --target=0
# Configure Side Set Count.
side-set --pio=0 --sm=0 --count=0 --opt=false
# The code.
# .wrap_target
enter -a 0 -v 0x6020 # out x, 32
enter -a 1 -v 0xa10b # mov pins, !null [1]
enter -a 2 -v 0xa401 # mov pins, x [4]
enter -a 3 -v 0xa103 # mov pins, null [1]
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=4
########
# Init program (analoguous to ws2812_program_init() in ws2812.pio.h as
# created by pioasm).
########
# Connect any of the GPIOs with PIO 0. In this example,
# we choose GPIO 0-3.
gpio --pio=0 --gpio=0 --init # tell GPIO0 to connect to PIO0
gpio --pio=0 --gpio=1 --init # tell GPIO1 to connect to PIO0
gpio --pio=0 --gpio=2 --init # tell GPIO2 to connect to PIO0
gpio --pio=0 --gpio=3 --init # tell GPIO3 to connect to PIO0
# Set consecutive pindirs, again 4 GPIOs, base=0.
gpio --pio=0 --gpio=0 --enable # set direction out
gpio --pio=0 --gpio=1 --enable # set direction out
gpio --pio=0 --gpio=2 --enable # set direction out
gpio --pio=0 --gpio=3 --enable # set direction out
# SM Config Set Out Shift(right, autopull, threshold=32)
fifo --pio=0 --sm=0 --tx --shift-right
fifo --pio=0 --sm=0 --tx --auto=true
fifo --pio=0 --sm=0 --tx --threshold=32
# SM Config Set Out Pins(base=0, count=4).
pinctrl --pio=0 --sm=0 --out-base=0 --out-count=4
# SM Config Set Set Pins(base=0, count=4).
pinctrl --pio=0 --sm=0 --set-base=0 --set-count=4
# Configure FIFO join: Join TX.
fifo --pio=0 --sm=0 --join --tx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO. Since we have configured only
# GPIOs 0…3, only the lowest 4 bits per FIFO word (=last hex digit)
# are relevant.
fifo --enqueue --tx --value 0x0000000a
fifo --enqueue --tx --value 0x00000005
fifo --enqueue --tx --value 0x00000001
fifo --enqueue --tx --value 0x0000000f
fifo --enqueue --tx --value 0x00000002
fifo --enqueue --tx --value 0x0000000e
# Done.
quit
================================================
FILE: java/examples/ws2812.hex
================================================
# .program ws2812
# ; .side_set 1
# ; .wrap_target
6221
1123
1400
a442
# ; .wrap
================================================
FILE: java/examples/ws2812.mon
================================================
# Script: WS2812
# Group: WS2812
#
# Monitor script for ws2812 example.
# To be executed on PIO 0, SM 0.
# Output is fed to GPIO 0.
# Make a full reset of the emulator.
reset
# We loosely follow the initialization sequence as shown in:
# https://github.com/raspberrypi/pico-examples
# /blob/master/pio/ws2812/generated/ws2812.pio.h
#
# This example uses timing T1=2, T2=5, T3=3.
# Note that, according to the discussion in
# https://github.com/raspberrypi/pico-feedback/issues/121,
# T1=T2=T3=2 may be a better choice.
# Configure Wrap.
wrap --pio=0 --sm=0 --wrap=3 --target=0
# Configure Side Set Count.
side-set --pio=0 --sm=0 --count=1 --opt=false
# The code.
# .wrap_target
# bitloop:
enter -a 0 -v 0x6221 # out x, 01 side 0 [2]
enter -a 1 -v 0x1123 # jmp !x, 03 side 1 [1]
# do_one:
enter -a 2 -v 0x1400 # jmp 00 side 1 [4]
# do_zero:
enter -a 3 -v 0xa442 # nop side 0 [4]
# .wrap
# Just for convience and verification, list the program that
# we just entered, as viewed by PIO 0, SM 0.
unassemble --pio=0 --sm=0 --address=0 --count=4
########
# Init program (analoguous to ws2812_program_init() in ws2812.pio.h as
# created by pioasm).
########
# Connect GPIO 0 with PIO 0.
gpio --pio=0 --gpio=0 --init # tell GPIO to connect to PIO0
# Set consecutive pindirs, here just a single one.
gpio --pio=0 --gpio=0 --enable # set direction out
# Configure side set base.
side-set --pio=0 --sm=0 --base=0
# Configure out shift.
fifo --pio=0 --sm=0 --tx --shift-left
fifo --pio=0 --sm=0 --tx --auto=true # auto pull
fifo --pio=0 --sm=0 --tx --threshold=24 # or 32 for rgbw
# Configure FIFO join: Join TX.
fifo --pio=0 --sm=0 --join --tx
# Configure Clock Divider, here as 1.0 (maximum speed).
# We choose maximum speed since we do not want to see gaps when
# tracing the code.
clock --pio=0 --sm=0 --divider=1.0
########
# Initialize SM (analoguous to function pio_sm_init() in Pico C SDK).
########
# Disable state machine 0 of PIO 0 while executing the following
# commands.
sm --pio=0 --sm=0 --enable=false
# Clear FIFOs.
fifo --pio=0 --sm=0 --clear
# Clear FIFO debug flags.
fifo --pio=0 --sm=0 --clear-tx-stall
fifo --pio=0 --sm=0 --clear-tx-over
fifo --pio=0 --sm=0 --clear-rx-under
fifo --pio=0 --sm=0 --clear-rx-stall
# Restart SM.
sm --pio=0 --sm=0 --restart
# Restart clock.
clock --pio=0 --sm=0 --restart
# Set instruction pointer (PC) to address 0.
registers --address=0
########
# End of SM initialization.
########
# Enable state machine 0 of PIO 0 to execute the program.
sm --pio=0 --sm=0 --enable=true
########
# End of program initialization.
# Next, we feed in example data.
########
# Put example values into FIFO.
fifo --enqueue --tx --value 0xaa118800 # RGB mode: end with byte 0x00
fifo --enqueue --tx --value 0x55881100 # RGB mode: end with byte 0x00
# Done.
quit
================================================
FILE: java/media/gpl-2.0-standalone.html
================================================
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>GNU General Public License v2.0 - GNU Project - Free Software Foundation (FSF)</title>
<link rel="alternate" type="application/rdf+xml"
href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.rdf" />
</head>
<body>
<h3 id="SEC1">GNU GENERAL PUBLIC LICENSE</h3>
<p>
Version 2, June 1991
</p>
<pre>
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
</pre>
<span id="SEC2"></span>
<h4 id="preamble">Preamble</h4>
<p>
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Lesser General Public License instead.) You can apply it to
your programs, too.
</p>
<p>
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
</p>
<p>
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
</p>
<p>
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
</p>
<p>
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
</p>
<p>
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
</p>
<p>
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
</p>
<p>
The precise terms and conditions for copying, distribution and
modification follow.
</p>
<span id="SEC3"></span>
<h4 id="terms">TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION</h4>
<p id="section0">
<strong>0.</strong>
This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
</p>
<p>
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
</p>
<p id="section1">
<strong>1.</strong>
You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
</p>
<p>
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
</p>
<p id="section2">
<strong>2.</strong>
You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
</p>
<dl>
<dt></dt>
<dd>
<strong>a)</strong>
You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
</dd>
<dt></dt>
<dd>
<strong>b)</strong>
You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
</dd>
<dt></dt>
<dd>
<strong>c)</strong>
If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
</dd>
</dl>
<p>
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
</p>
<p>
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
</p>
<p>
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
</p>
<p id="section3">
<strong>3.</strong>
You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
</p>
<!-- we use this doubled UL to get the sub-sections indented, -->
<!-- while making the bullets as unobvious as possible. -->
<dl>
<dt></dt>
<dd>
<strong>a)</strong>
Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
</dd>
<dt></dt>
<dd>
<strong>b)</strong>
Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
</dd>
<dt></dt>
<dd>
<strong>c)</strong>
Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
</dd>
</dl>
<p>
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
</p>
<p>
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
</p>
<p id="section4">
<strong>4.</strong>
You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
</p>
<p id="section5">
<strong>5.</strong>
You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
</p>
<p id="section6">
<strong>6.</strong>
Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
</p>
<p id="section7">
<strong>7.</strong>
If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
</p>
<p>
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
</p>
<p>
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
</p>
<p>
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
</p>
<p id="section8">
<strong>8.</strong>
If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
</p>
<p id="section9">
<strong>9.</strong>
The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
</p>
<p>
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
</p>
<p id="section10">
<strong>10.</strong>
If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
</p>
<p id="section11"><strong>NO WARRANTY</strong></p>
<p>
<strong>11.</strong>
BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
</p>
<p id="section12">
<strong>12.</strong>
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
</p>
<h4>END OF TERMS AND CONDITIONS</h4>
<span id="SEC4"></span>
<h4 id="howto">How to Apply These Terms to Your New Programs</h4>
<p>
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
</p>
<p>
To do so, attach the fo
gitextract_vcqxfqub/
├── .gitignore
├── LICENSE
├── Makefile
├── README.md
├── defs.mak
└── java/
├── META-INF/
│ ├── MANIFEST.MF.CodeObserver
│ ├── MANIFEST.MF.Diagram
│ ├── MANIFEST.MF.DocTool
│ ├── MANIFEST.MF.FifoObserver
│ ├── MANIFEST.MF.GPIOObserver
│ ├── MANIFEST.MF.Monitor
│ ├── MANIFEST.MF.Observer
│ └── MANIFEST.MF.Server
├── Makefile.CodeObserver
├── Makefile.Diagram
├── Makefile.DocTool
├── Makefile.FifoObserver
├── Makefile.GPIOObserver
├── Makefile.Monitor
├── Makefile.Observer
├── Makefile.Server
├── examples/
│ ├── addition.mon
│ ├── apa102-mini.mon
│ ├── apa102-rgb555.mon
│ ├── auto-push-pull.mon
│ ├── autopull.mon
│ ├── blink.mon
│ ├── bmc-rx.mon
│ ├── bmc-tx.mon
│ ├── clocked-input.mon
│ ├── exec-example.mon
│ ├── ext-wave.mon
│ ├── hello.mon
│ ├── hub75.mon
│ ├── i2c.mon
│ ├── logic-analyser.mon
│ ├── manchester-rx.mon
│ ├── manchester-tx.mon
│ ├── manual-pull.mon
│ ├── pull-example1.mon
│ ├── pull-example2.mon
│ ├── pull-example3.mon
│ ├── pull-example4.mon
│ ├── pwm.mon
│ ├── somewhat-manual-pull.mon
│ ├── spi-cpha0-cs.mon
│ ├── spi-cpha0.mon
│ ├── spi-cpha1-cs.mon
│ ├── spi-cpha1.mon
│ ├── spi-tx-fast.mon
│ ├── squarewave-fast.mon
│ ├── squarewave-wrap.mon
│ ├── squarewave.hex
│ ├── squarewave.mon
│ ├── st7789-lcd.mon
│ ├── uart-rx-mini.mon
│ ├── uart-rx.mon
│ ├── uart-tx.mon
│ ├── ws2812-led.mon
│ ├── ws2812-parallel.mon
│ ├── ws2812.hex
│ └── ws2812.mon
├── media/
│ ├── add12x12.xcf
│ ├── cycle16x16.xcf
│ ├── del12x12.xcf
│ ├── floppy-blue16x16.xcf
│ ├── gpl-2.0-standalone.html
│ ├── led-gray16x16.xcf
│ ├── led-green-off16x16.xcf
│ ├── led-green-on16x16.xcf
│ ├── led-red-off16x16.xcf
│ ├── led-red-on16x16.xcf
│ ├── quit16x16_antialiased.xcf
│ ├── quit16x16_pixels.xcf
│ ├── swapv12x12.xcf
│ └── trash16x16.xcf
└── org/
└── soundpaint/
└── rp2040pio/
├── AddressSpace.java
├── Bit.java
├── Clock.java
├── CmdOptions.java
├── CollapsiblePanel.java
├── Constants.java
├── Decoder.java
├── Direction.java
├── EmulationServer.java
├── Emulator.java
├── FIFO.java
├── GPIO.java
├── GPIOIOBank0Registers.java
├── GPIOIOBank0RegistersImpl.java
├── GPIOPadsBank0Registers.java
├── GPIOPadsBank0RegistersImpl.java
├── IOUtils.java
├── IRQ.java
├── Instruction.java
├── LocalAddressSpace.java
├── MasterClock.java
├── Memory.java
├── PIO.java
├── PIOEmuRegisters.java
├── PIOEmuRegistersImpl.java
├── PIOGPIO.java
├── PIORegisters.java
├── PIORegistersImpl.java
├── PLL.java
├── ParseException.java
├── PicoEmuRegisters.java
├── PicoEmuRegistersImpl.java
├── PinState.java
├── RegisterSet.java
├── RemoteAddressSpaceClient.java
├── RemoteAddressSpaceServer.java
├── SM.java
├── SwingUtils.java
├── doctool/
│ ├── DocsBuilder.java
│ ├── ExampleScriptsDocsBuilder.java
│ ├── MonitorCommandsDocsBuilder.java
│ ├── RegistersDocs.java
│ └── RegistersDocsBuilder.java
├── monitor/
│ ├── Command.java
│ ├── CommandRegistry.java
│ ├── Monitor.java
│ ├── MonitorUtils.java
│ ├── ScriptInfo.java
│ └── commands/
│ ├── BreakPoints.java
│ ├── Clear.java
│ ├── Clock.java
│ ├── Enter.java
│ ├── Execute.java
│ ├── Fifo.java
│ ├── Gpio.java
│ ├── Help.java
│ ├── Interrupt.java
│ ├── Label.java
│ ├── Load.java
│ ├── PinCtrl.java
│ ├── Quit.java
│ ├── Read.java
│ ├── Registers.java
│ ├── Reset.java
│ ├── Save.java
│ ├── Script.java
│ ├── SideSet.java
│ ├── Sm.java
│ ├── Trace.java
│ ├── Unassemble.java
│ ├── Unload.java
│ ├── Version.java
│ ├── Wait.java
│ ├── Wrap.java
│ └── Write.java
├── observer/
│ ├── ActionPanel.java
│ ├── ConnectDialog.java
│ ├── GUIObserver.java
│ ├── LicenseView.java
│ ├── MenuBar.java
│ ├── Observer.java
│ ├── code/
│ │ ├── ActionPanel.java
│ │ ├── CodeObserver.java
│ │ ├── CodeSmViewPanel.java
│ │ └── CodeViewPanel.java
│ ├── diagram/
│ │ ├── AbstractSignal.java
│ │ ├── ActionPanel.java
│ │ ├── ClockSignal.java
│ │ ├── Constants.java
│ │ ├── CycleRuler.java
│ │ ├── Diagram.java
│ │ ├── DiagramModel.java
│ │ ├── DiagramViewPanel.java
│ │ ├── LegendPanel.java
│ │ ├── MenuBar.java
│ │ ├── RegisterBitSignal.java
│ │ ├── RegisterIntSignal.java
│ │ ├── ScriptDialog.java
│ │ ├── ScriptSelectionPanel.java
│ │ ├── Signal.java
│ │ ├── SignalDialog.java
│ │ ├── SignalFactory.java
│ │ ├── SignalFactoryPanel.java
│ │ ├── SignalFilter.java
│ │ ├── SignalLabelPanel.java
│ │ ├── SignalPanel.java
│ │ ├── SignalRendering.java
│ │ ├── SignalTypePanel.java
│ │ ├── SignalsDialog.java
│ │ ├── SignalsPropertiesPanel.java
│ │ ├── SmSelectionPanel.java
│ │ ├── TelemetryPanel.java
│ │ ├── ToolTip.java
│ │ ├── ValueFilterPanel.java
│ │ ├── ValueRenderingPanel.java
│ │ ├── ValueSourcePanel.java
│ │ └── ValuedSignal.java
│ ├── fifo/
│ │ ├── ActionPanel.java
│ │ ├── FifoEntriesViewPanel.java
│ │ ├── FifoObserver.java
│ │ └── FifoViewPanel.java
│ └── gpio/
│ ├── GPIOArrayPanel.java
│ ├── GPIOObserver.java
│ ├── GPIOPanel.java
│ ├── GPIOViewPanel.java
│ ├── PIOGPIOArrayPanel.java
│ └── PIOGPIOPanel.java
└── sdk/
├── GPIOSDK.java
├── PIOSDK.java
├── Panic.java
├── Program.java
├── ProgramParser.java
├── SDK.java
└── SMConfig.java
SYMBOL INDEX (2005 symbols across 134 files)
FILE: java/org/soundpaint/rp2040pio/AddressSpace.java
class AddressSpace (line 29) | public abstract class AddressSpace
type AccessMethod (line 36) | private enum AccessMethod {
method checkAddressAligned (line 42) | protected static void checkAddressAligned(final int address)
method checkAddressNormalRWSpace (line 50) | private static void checkAddressNormalRWSpace(final int address)
method getEmulatorInfo (line 59) | public abstract String getEmulatorInfo() throws IOException;
method providesAddress (line 61) | public abstract boolean providesAddress(final int address)
method getRegisterSetId (line 64) | public abstract String getRegisterSetId(final int address) throws IOEx...
method getAddressLabel (line 66) | public abstract String getAddressLabel(final int address) throws IOExc...
method readAddress (line 68) | public abstract int readAddress(final int address) throws IOException;
method writeAddressMasked (line 70) | public abstract void writeAddressMasked(final int address, final int b...
method waitAddress (line 74) | public abstract int waitAddress(final int address, final int expectedV...
method writeAddress (line 80) | public void writeAddress(final int address, final int value)
method hwSetBits (line 111) | public void hwSetBits(final int address, final int mask) throws IOExce...
method hwClearBits (line 117) | public void hwClearBits(final int address, final int mask) throws IOEx...
method hwXorBits (line 123) | public void hwXorBits(final int address, final int mask) throws IOExce...
method hwWriteMasked (line 129) | public void hwWriteMasked(final int address, final int values,
FILE: java/org/soundpaint/rp2040pio/Bit.java
type Bit (line 30) | public enum Bit
method Bit (line 42) | private Bit(final int value, final char charLabel, final String level,
method getValue (line 53) | public int getValue() { return value; }
method getLevel (line 55) | public String getLevel() { return level; }
method fromValue (line 57) | public static Bit fromValue(final boolean value)
method fromValue (line 62) | public static Bit fromValue(final int value)
method fromValue (line 69) | public static Bit fromValue(final int value, final Bit defaultValue)
method toChar (line 76) | public String toChar(final Direction direction)
method inverse (line 82) | public Bit inverse()
method toString (line 87) | @Override
FILE: java/org/soundpaint/rp2040pio/Clock.java
type Clock (line 33) | public interface Clock
type Phase (line 35) | public enum Phase
type TransitionListener (line 43) | public static interface TransitionListener
method risingEdge (line 45) | void risingEdge(final long wallClock);
method fallingEdge (line 46) | void fallingEdge(final long wallClock);
method addTransitionListener (line 49) | void addTransitionListener(final TransitionListener listener);
method removeTransitionListener (line 50) | boolean removeTransitionListener(final TransitionListener listener);
method getWallClock (line 51) | long getWallClock();
FILE: java/org/soundpaint/rp2040pio/CmdOptions.java
class CmdOptions (line 36) | public class CmdOptions
class OptionDeclaration (line 38) | public abstract static class OptionDeclaration<T>
method OptionDeclaration (line 47) | private OptionDeclaration()
method OptionDeclaration (line 52) | private OptionDeclaration(final String typeName,
method getTypeName (line 71) | private String getTypeName()
method isMandatory (line 76) | private boolean isMandatory()
method getShortName (line 81) | private Character getShortName()
method getShortNameAsString (line 86) | private String getShortNameAsString()
method getLongName (line 92) | private String getLongName()
method getDefaultValueAsString (line 97) | private String getDefaultValueAsString()
method getDescription (line 102) | private String getDescription()
method define (line 107) | abstract OptionDefinition<T> define() throws ParseException;
method getOptionHelp (line 109) | private String getOptionHelp()
method getDefaultTypeName (line 119) | abstract String getDefaultTypeName();
method toString (line 121) | @Override
class FlagOptionDeclaration (line 166) | public static class FlagOptionDeclaration extends OptionDeclaration<Flag>
method FlagOptionDeclaration (line 168) | public FlagOptionDeclaration(final boolean mandatory,
method getDefaultTypeName (line 178) | String getDefaultTypeName() { return "FLAG"; }
method define (line 180) | OptionDefinition<Flag> define() throws ParseException
method createFlagOption (line 186) | public static FlagOptionDeclaration
class BooleanOptionDeclaration (line 197) | public static class BooleanOptionDeclaration
method BooleanOptionDeclaration (line 200) | public BooleanOptionDeclaration(final boolean mandatory,
method getDefaultTypeName (line 211) | String getDefaultTypeName() { return "BOOLEAN"; }
method define (line 213) | OptionDefinition<Boolean> define() throws ParseException
method createBooleanOption (line 219) | public static BooleanOptionDeclaration
class IntegerOptionDeclaration (line 230) | public static class IntegerOptionDeclaration
method IntegerOptionDeclaration (line 233) | public IntegerOptionDeclaration(final String typeName,
method getDefaultTypeName (line 245) | String getDefaultTypeName() { return "INTEGER"; }
method define (line 247) | OptionDefinition<Integer> define() throws ParseException
method createIntegerOption (line 253) | public static IntegerOptionDeclaration
class FloatOptionDeclaration (line 265) | public static class FloatOptionDeclaration
method FloatOptionDeclaration (line 268) | public FloatOptionDeclaration(final String typeName,
method getDefaultTypeName (line 280) | String getDefaultTypeName() { return "FLOAT"; }
method define (line 282) | OptionDefinition<Float> define() throws ParseException
method createFloatOption (line 288) | public static FloatOptionDeclaration
class StringOptionDeclaration (line 300) | public static class StringOptionDeclaration
method StringOptionDeclaration (line 303) | public StringOptionDeclaration(final String typeName,
method getDefaultTypeName (line 314) | String getDefaultTypeName() { return "STRING"; }
method define (line 316) | OptionDefinition<String> define() throws ParseException
method createStringOption (line 322) | public static StringOptionDeclaration
class ParseException (line 334) | public static class ParseException extends Exception
method ParseException (line 340) | public ParseException(final String message)
method ParseException (line 345) | public ParseException(final String message,
method ParseException (line 352) | public ParseException(final String message, final Throwable cause)
method ParseException (line 357) | public ParseException(final String message, final Throwable cause,
method ParseException (line 364) | public ParseException(final Throwable cause)
method ParseException (line 369) | public ParseException(final Throwable cause,
method getMessage (line 376) | @Override
class OptionDefinition (line 386) | private abstract static class OptionDefinition<T>
method OptionDefinition (line 392) | private OptionDefinition(final OptionDeclaration<T> declaration)
method parse (line 402) | abstract T parse(final String strValue) throws ParseException;
method parseAndSet (line 404) | private T parseAndSet(final String strValue) throws ParseException
method getDeclaration (line 410) | protected OptionDeclaration<T> getDeclaration()
method setParsedValue (line 415) | protected void setParsedValue(final T value)
method clear (line 423) | protected void clear()
method isParsed (line 428) | protected boolean isParsed()
method hasDefaultValue (line 433) | protected boolean hasDefaultValue()
method isDefined (line 438) | private boolean isDefined()
method isDefinedIfMandatory (line 443) | private boolean isDefinedIfMandatory()
method getValue (line 448) | protected T getValue()
method toString (line 453) | @Override
type Flag (line 460) | public static enum Flag
method Flag (line 466) | private Flag(final String displayValue)
method isOff (line 471) | public boolean isOff() { return this == OFF; }
method isOn (line 473) | public boolean isOn() { return this == ON; }
method toString (line 475) | @Override
class FlagOptionDefinition (line 479) | public static class FlagOptionDefinition extends OptionDefinition<Flag>
method FlagOptionDefinition (line 481) | public FlagOptionDefinition(final FlagOptionDeclaration declaration)
method parse (line 487) | @Override
class BooleanOptionDefinition (line 504) | public static class BooleanOptionDefinition extends OptionDefinition<B...
method BooleanOptionDefinition (line 506) | public BooleanOptionDefinition(final BooleanOptionDeclaration declar...
method parse (line 512) | @Override
class IntegerOptionDefinition (line 528) | public static class IntegerOptionDefinition extends OptionDefinition<I...
method IntegerOptionDefinition (line 530) | public IntegerOptionDefinition(final IntegerOptionDeclaration declar...
method parse (line 536) | @Override
class FloatOptionDefinition (line 553) | public static class FloatOptionDefinition extends OptionDefinition<Float>
method FloatOptionDefinition (line 555) | public FloatOptionDefinition(final FloatOptionDeclaration declaration)
method parse (line 561) | @Override
class StringOptionDefinition (line 574) | public static class StringOptionDefinition extends OptionDefinition<St...
method StringOptionDefinition (line 576) | public StringOptionDefinition(final StringOptionDeclaration declarat...
method parse (line 582) | @Override
method CmdOptions (line 596) | public CmdOptions(final String prgName,
method CmdOptions (line 606) | public CmdOptions(final String prgName,
method getPrgName (line 627) | private String getPrgName()
method getPrgSingleLineDescription (line 632) | private String getPrgSingleLineDescription()
method getPrgNotes (line 637) | private String getPrgNotes()
method getUsage (line 642) | public String getUsage()
method getOptionsHelp (line 647) | public String getOptionsHelp()
method getFullInfo (line 656) | public String getFullInfo()
method checkShortNamesAreUnique (line 674) | private void checkShortNamesAreUnique()
method checkLongNamesAreUnique (line 694) | private void checkLongNamesAreUnique()
method createDefinitions (line 715) | private OptionDefinition<?>[] createDefinitions() throws ParseException
method clear (line 726) | public void clear()
method updateDefinition (line 734) | private boolean
method parseLongOptionIdentifier (line 757) | private OptionDefinition<?> parseLongOptionIdentifier(final String opt...
method parseShortOptionIdentifier (line 792) | private OptionDefinition<?> parseShortOptionIdentifier(final boolean p...
method parseOptionIdentifier (line 824) | private OptionDefinition<?> parseOptionIdentifier(final String arg)
method isWhiteSpace (line 838) | private static boolean isWhiteSpace(final char ch)
method splitArgs (line 849) | public static String[] splitArgs(final String args) throws ParseException
method parse (line 905) | public void parse(final String argv[]) throws ParseException
method parse (line 910) | public void parse(final String argv[], final boolean includesCommand)
method getCommand (line 946) | public String getCommand()
method findDefinitionForDeclaration (line 951) | private OptionDefinition<?>
method checkForDeclaration (line 964) | private void checkForDeclaration(final OptionDeclaration<?> declaration)
method getValue (line 973) | public Flag getValue(final FlagOptionDeclaration declaration)
method getValue (line 981) | public Boolean getValue(final BooleanOptionDeclaration declaration)
method getValue (line 989) | public Integer getValue(final IntegerOptionDeclaration declaration)
method getValue (line 997) | public Float getValue(final FloatOptionDeclaration declaration)
method getValue (line 1005) | public String getValue(final StringOptionDeclaration declaration)
method isDefined (line 1013) | public boolean isDefined(final OptionDeclaration<?> declaration)
FILE: java/org/soundpaint/rp2040pio/CollapsiblePanel.java
class CollapsiblePanel (line 37) | public class CollapsiblePanel extends JPanel
method CollapsiblePanel (line 44) | public CollapsiblePanel(final Component component,
method createToggleButtonLine (line 70) | private Box createToggleButtonLine(final String label)
FILE: java/org/soundpaint/rp2040pio/Constants.java
type Constants (line 27) | public interface Constants
method getEmulatorId (line 62) | public static String getEmulatorId()
method getEmulatorVersion (line 67) | public static String getEmulatorVersion()
method getCmdLineCopyrightNotice (line 72) | public static String getCmdLineCopyrightNotice()
method getMonitorCopyrightNotice (line 77) | public static String getMonitorCopyrightNotice()
method getGuiCopyrightNotice (line 82) | public static String getGuiCopyrightNotice()
method getEmulatorIdAndVersionWithOs (line 87) | public static String getEmulatorIdAndVersionWithOs()
method getPIOBaseAddress (line 113) | public static int getPIOBaseAddress(final int pioNum)
method getPIOEmuBaseAddress (line 119) | public static int getPIOEmuBaseAddress(final int pioNum)
type GPIO_Function (line 254) | public enum GPIO_Function {
method GPIO_Function (line 272) | private GPIO_Function(final int value, final String label)
method getValue (line 278) | public int getValue() { return value; }
method fromValue (line 280) | public static GPIO_Function fromValue(final int value)
method fromValue (line 287) | public static GPIO_Function fromValue(final int value,
method toString (line 297) | @Override
method checkBit (line 304) | public static void checkBit(final int bit)
method checkMSBLSB (line 314) | public static void checkMSBLSB(final int msb, final int lsb)
method checkFIFOAddr (line 327) | public static void checkFIFOAddr(final int address, final String label)
method checkGpioPin (line 339) | public static void checkGpioPin(final int pin, final String label)
method checkGpioPinsCount (line 350) | public static void checkGpioPinsCount(final int count, final String la...
method checkPioNum (line 361) | public static void checkPioNum(final int pioNum, final String label)
method checkSmMemAddr (line 372) | public static void checkSmMemAddr(final int address, final String label)
method checkSmNum (line 384) | public static void checkSmNum(final int smNum)
method checkIntrNum (line 395) | public static void checkIntrNum(final int intrNum, final String label)
method checkBitCount (line 406) | public static int checkBitCount(final int bitCount, final String label)
method ctz (line 425) | public static int ctz(final int x)
method hwSetBits (line 436) | public static int hwSetBits(final int oldBits, final int newBits,
FILE: java/org/soundpaint/rp2040pio/Decoder.java
class Decoder (line 32) | public class Decoder
class DecodeException (line 34) | public static class DecodeException extends Exception
method DecodeException (line 41) | private DecodeException()
method DecodeException (line 46) | public DecodeException(final Instruction instruction, final int opCode)
method getInstruction (line 54) | public Instruction getInstruction() { return instruction; }
method getOpCode (line 56) | public int getOpCode() { return opCode; }
class Instructions (line 61) | private class Instructions
method Instructions (line 74) | public Instructions()
method Decoder (line 90) | public Decoder()
method reset (line 95) | public void reset()
method decode (line 102) | public Instruction decode(final short word,
FILE: java/org/soundpaint/rp2040pio/Direction.java
type Direction (line 30) | public enum Direction
method Direction (line 38) | private Direction(final int value, final String label)
method getValue (line 44) | public int getValue() { return value; }
method fromValue (line 46) | public static Direction fromValue(final int value)
method inverse (line 53) | public Direction inverse()
method toString (line 58) | @Override
FILE: java/org/soundpaint/rp2040pio/EmulationServer.java
class EmulationServer (line 32) | public class EmulationServer
method EmulationServer (line 62) | private EmulationServer(final PrintStream console, final String[] argv)
method parseArgs (line 74) | private CmdOptions parseArgs(final String argv[])
method checkValidity (line 101) | private void checkValidity(final CmdOptions options)
method printAbout (line 116) | private void printAbout()
method run (line 124) | private void run()
method main (line 142) | public static void main(final String argv[])
FILE: java/org/soundpaint/rp2040pio/Emulator.java
class Emulator (line 32) | public class Emulator
method Emulator (line 40) | private Emulator()
method Emulator (line 45) | public Emulator(final PrintStream console)
method getConsole (line 57) | public PrintStream getConsole()
method getMasterClock (line 62) | public MasterClock getMasterClock()
method getGPIO (line 67) | public GPIO getGPIO()
method getPIO0 (line 72) | public PIO getPIO0()
method getPIO1 (line 77) | public PIO getPIO1()
method reset (line 82) | public void reset()
method terminate (line 90) | public void terminate()
FILE: java/org/soundpaint/rp2040pio/FIFO.java
class FIFO (line 34) | public class FIFO implements Constants
type Mode (line 38) | private static enum Mode
method Mode (line 50) | private Mode(final boolean joinTX, final boolean joinRX,
method isJoinTX (line 59) | private boolean isJoinTX() { return joinTX; }
method isJoinRX (line 60) | private boolean isJoinRX() { return joinRX; }
method getTXSize (line 61) | private int getTXSize() { return txSize; }
method getRXSize (line 62) | private int getRXSize() { return rxSize; }
method incPtrTX (line 64) | private int incPtrTX(final int ptr)
method incPtrRX (line 71) | private int incPtrRX(final int ptr)
method fromJoins (line 79) | private static Mode fromJoins(final boolean joinTX, final boolean jo...
method FIFO (line 101) | public FIFO(final int smNum, final IRQ irq)
method reset (line 113) | public synchronized void reset()
method reset (line 118) | private void reset(final boolean joinTX, final boolean joinRX)
method setJoinRX (line 139) | public synchronized void setJoinRX(final boolean join)
method getJoinRX (line 145) | public boolean getJoinRX()
method getRXSize (line 150) | private int getRXSize()
method getRXReadPointer (line 155) | public synchronized int getRXReadPointer()
method fstatRxFull (line 160) | public synchronized boolean fstatRxFull()
method fstatRxEmpty (line 166) | public synchronized boolean fstatRxEmpty()
method getRXLevel (line 172) | public synchronized int getRXLevel()
method rxPush (line 182) | public synchronized boolean rxPush(final int value, final boolean stal...
method rxDMARead (line 201) | public synchronized int rxDMARead()
method isRXUnder (line 217) | public boolean isRXUnder()
method clearRXUnder (line 222) | public void clearRXUnder()
method isRXStall (line 227) | public boolean isRXStall()
method clearRXStall (line 232) | public void clearRXStall()
method setJoinTX (line 237) | public synchronized void setJoinTX(final boolean join)
method getJoinTX (line 243) | public boolean getJoinTX()
method getTXReadPointer (line 248) | public synchronized int getTXReadPointer()
method fstatTxFull (line 253) | public synchronized boolean fstatTxFull()
method fstatTxEmpty (line 259) | public synchronized boolean fstatTxEmpty()
method getTXLevel (line 265) | public synchronized int getTXLevel()
method txPull (line 272) | public synchronized int txPull(final boolean stallIfEmpty)
method txDMAWrite (line 290) | public synchronized void txDMAWrite(final int value)
method isTXOver (line 307) | public boolean isTXOver()
method clearTXOver (line 312) | public void clearTXOver()
method isTXStall (line 317) | public boolean isTXStall()
method clearTXStall (line 322) | public void clearTXStall()
method getMemValue (line 327) | public int getMemValue(final int address)
method setMemValue (line 333) | public void setMemValue(final int address, final int value)
FILE: java/org/soundpaint/rp2040pio/GPIO.java
class GPIO (line 33) | public class GPIO implements Constants
type Override (line 35) | private enum Override
method Override (line 47) | private Override(final Function<Bit, Bit> fnBit,
method apply (line 56) | public Bit apply(final Bit value)
method apply (line 61) | public Direction apply(final Direction value)
method fromValue (line 66) | public static Override fromValue(final int value)
method getValue (line 80) | public int getValue() { return ordinal(); }
class Terminal (line 83) | private static class Terminal
method Terminal (line 93) | private Terminal()
method Terminal (line 98) | private Terminal(final int num)
method reset (line 105) | public void reset()
method getPadIn (line 115) | private Bit getPadIn(final Bit outBeforeOverride,
method getInputAfterOverride (line 136) | private Bit getInputAfterOverride(final Bit outBeforeOverride,
method getIrqAfterOverride (line 143) | private Bit getIrqAfterOverride(final Bit outBeforeOverride,
method getOeAfterOverride (line 150) | private Direction getOeAfterOverride(final Direction oeBeforeOverride)
method getOutAfterOverride (line 155) | private Bit getOutAfterOverride(final Bit outBeforeOverride)
method GPIO (line 168) | private GPIO()
method GPIO (line 173) | public GPIO(final PrintStream console, final MasterClock masterClock)
method reset (line 191) | public void reset()
method getPIO0 (line 198) | public PIO getPIO0() { return pio0; }
method getPIO1 (line 200) | public PIO getPIO1() { return pio1; }
method getGPIO_PADIN (line 202) | public synchronized int getGPIO_PADIN()
method setGPIO_PADIN (line 212) | public synchronized void setGPIO_PADIN(final int bits, final int mask,
method setFunction (line 226) | public void setFunction(final int gpio, final GPIO_Function fn)
method getFunction (line 235) | private GPIO_Function getFunction(final int gpio)
method setCTRL (line 241) | public void setCTRL(final int gpio, final int value,
method getCTRL (line 274) | public int getCTRL(final int gpio)
method getSTATUS (line 286) | public int getSTATUS(final int gpio)
method getIrqToProc (line 303) | private Bit getIrqToProc(final int gpio)
method getIrqFromPad (line 312) | private Bit getIrqFromPad(final int gpio)
method getPinsToPeri (line 330) | public int getPinsToPeri(final int base, final int count)
method getInToPeri (line 341) | public Bit getInToPeri(final int gpio)
method getInFromPad (line 350) | private Bit getInFromPad(final int gpio)
method getOeToPad (line 358) | private Direction getOeToPad(final int gpio)
method getOeFromPeripheral (line 365) | private Direction getOeFromPeripheral(final int gpio)
method getOutToPad (line 391) | private Bit getOutToPad(final int gpio)
method getOutFromPeripheral (line 398) | private Bit getOutFromPeripheral(final int gpio)
method setInputSyncByPass (line 424) | public void setInputSyncByPass(final int bits, final int mask,
method getInputSyncByPass (line 431) | public int getInputSyncByPass()
FILE: java/org/soundpaint/rp2040pio/GPIOIOBank0Registers.java
class GPIOIOBank0Registers (line 47) | public abstract class GPIOIOBank0Registers extends RegisterSet
type Regs (line 49) | public enum Regs implements RegistersDocs<Regs>
method createBitsInfo (line 193) | private static List<BitsInfo> createBitsInfo(final int octett,
method getRegisterSetLabel (line 225) | public static String getRegisterSetLabel()
method getRegisterSetDescription (line 230) | public static String getRegisterSetDescription()
method Regs (line 241) | private Regs()
method Regs (line 246) | private Regs(final Regs ref)
method Regs (line 251) | private Regs(final Regs ref, final int smNum)
method Regs (line 256) | private Regs(final String info, final BitsInfo[] bitsInfos)
method Regs (line 261) | private Regs(final String info, final List<BitsInfo> bitsInfos)
method Regs (line 266) | private Regs(final String info, final int smNum,
method Regs (line 272) | private Regs(final String info, final int smNum,
method Regs (line 278) | private Regs(final RegisterDetails registerDetails)
method getInfo (line 283) | @Override
method getRegisterDetails (line 289) | @Override
method getRegs (line 298) | @Override
method getAddress (line 308) | public static int getAddress(final GPIOIOBank0Registers.Regs register)
method getGPIOAddress (line 316) | public static int getGPIOAddress(final int gpioNum,
method getIntr (line 335) | public static int getIntr(final int intrNum)
method getProcIntE (line 341) | public static int getProcIntE(final int pioNum, final int inteNum)
method getProcIntF (line 349) | public static int getProcIntF(final int pioNum, final int intfNum)
method getProcIntS (line 357) | public static int getProcIntS(final int pioNum, final int intsNum)
method getDormantWakeIntE (line 365) | public static int getDormantWakeIntE(final int inteNum)
method getDormantWakeIntF (line 371) | public static int getDormantWakeIntF(final int intfNum)
method getDormantWakeIntS (line 377) | public static int getDormantWakeIntS(final int intsNum)
method GPIOIOBank0Registers (line 383) | public GPIOIOBank0Registers()
FILE: java/org/soundpaint/rp2040pio/GPIOIOBank0RegistersImpl.java
class GPIOIOBank0RegistersImpl (line 40) | public class GPIOIOBank0RegistersImpl extends GPIOIOBank0Registers
method GPIOIOBank0RegistersImpl (line 50) | public GPIOIOBank0RegistersImpl(final GPIO gpio)
method getGPIO (line 58) | public GPIO getGPIO() { return gpio; }
method writeRegister (line 60) | @Override
method readRegister (line 190) | @Override
FILE: java/org/soundpaint/rp2040pio/GPIOPadsBank0Registers.java
class GPIOPadsBank0Registers (line 43) | public abstract class GPIOPadsBank0Registers extends RegisterSet
type Regs (line 45) | public enum Regs implements RegistersDocs<Regs>
method getRegisterSetLabel (line 121) | public static String getRegisterSetLabel()
method getRegisterSetDescription (line 126) | public static String getRegisterSetDescription()
method Regs (line 137) | private Regs()
method Regs (line 142) | private Regs(final Regs ref)
method Regs (line 147) | private Regs(final Regs ref, final int smNum)
method Regs (line 152) | private Regs(final String info, final BitsInfo[] bitsInfos)
method Regs (line 157) | private Regs(final String info, final List<BitsInfo> bitsInfos)
method Regs (line 162) | private Regs(final String info, final int smNum,
method Regs (line 168) | private Regs(final String info, final int smNum,
method Regs (line 174) | private Regs(final RegisterDetails registerDetails)
method getInfo (line 179) | @Override
method getRegisterDetails (line 185) | @Override
method getRegs (line 194) | @Override
method getAddress (line 198) | public static int getAddress(final GPIOPadsBank0Registers.Regs register)
method getGPIOAddress (line 206) | public static int getGPIOAddress(final int gpioNum)
method GPIOPadsBank0Registers (line 212) | public GPIOPadsBank0Registers()
FILE: java/org/soundpaint/rp2040pio/GPIOPadsBank0RegistersImpl.java
class GPIOPadsBank0RegistersImpl (line 40) | public class GPIOPadsBank0RegistersImpl extends GPIOPadsBank0Registers
method GPIOPadsBank0RegistersImpl (line 44) | public GPIOPadsBank0RegistersImpl(final GPIO gpio)
method getGPIO (line 52) | public GPIO getGPIO() { return gpio; }
method writeRegister (line 54) | @Override
method readRegister (line 107) | @Override
FILE: java/org/soundpaint/rp2040pio/IOUtils.java
class IOUtils (line 42) | public class IOUtils
method getStreamForResourcePath (line 48) | public static InputStream getStreamForResourcePath(final String resour...
method getReaderForResourcePath (line 65) | public static LineNumberReader
method list (line 77) | public static List<String> list(final String resourcePath) throws IOEx...
FILE: java/org/soundpaint/rp2040pio/IRQ.java
class IRQ (line 30) | public class IRQ implements Constants
method IRQ (line 39) | public IRQ()
method reset (line 44) | public void reset()
method setTxNFull (line 54) | public void setTxNFull(final int smNum, final boolean nFull)
method setRxNEmpty (line 64) | public void setRxNEmpty(final int smNum, final boolean nEmpty)
method writeRegIRQ (line 74) | public void writeRegIRQ(final int value)
method writeRegIRQ_FORCE (line 79) | public void writeRegIRQ_FORCE(final int value)
method get (line 84) | public Bit get(final int index)
method clear (line 95) | public void clear(final int index)
method set (line 106) | public void set(final int index)
method getIRQ (line 117) | public int getIRQ()
method getIRQ0_INTE (line 122) | public int getIRQ0_INTE()
method setIRQ0_INTE (line 127) | public void setIRQ0_INTE(final int value, final int mask, final boolea...
method setIRQ0_INTE (line 132) | private void setIRQ0_INTE(final int value)
method getIRQ1_INTE (line 137) | public int getIRQ1_INTE()
method setIRQ1_INTE (line 142) | public void setIRQ1_INTE(final int value, final int mask, final boolea...
method setIRQ1_INTE (line 147) | private void setIRQ1_INTE(final int value)
method getIRQ0_INTF (line 152) | public int getIRQ0_INTF()
method setIRQ0_INTF (line 157) | public void setIRQ0_INTF(final int value, final int mask, final boolea...
method setIRQ0_INTF (line 162) | private void setIRQ0_INTF(final int value)
method getIRQ1_INTF (line 167) | public int getIRQ1_INTF()
method setIRQ1_INTF (line 172) | public void setIRQ1_INTF(final int value, final int mask, final boolea...
method setIRQ1_INTF (line 177) | private void setIRQ1_INTF(final int value)
method readINTR (line 182) | public int readINTR()
method readIRQ0_INTS (line 187) | public int readIRQ0_INTS()
method readIRQ1_INTS (line 192) | public int readIRQ1_INTS()
FILE: java/org/soundpaint/rp2040pio/Instruction.java
class Instruction (line 36) | public abstract class Instruction
type ResultState (line 44) | public enum ResultState
method Instruction (line 66) | public Instruction()
method getDelay (line 71) | public int getDelay()
method getDelayDisplayValue (line 76) | private String getDelayDisplayValue()
method getOpCode (line 81) | public int getOpCode()
method getSideSetDisplayValue (line 86) | private String getSideSetDisplayValue()
method reset (line 92) | public void reset()
method resetParams (line 101) | abstract protected void resetParams();
method decode (line 103) | public Instruction decode(final short opCode,
method getDelayAndSideSetBits (line 124) | protected int getDelayAndSideSetBits(final int pinCtrlSidesetCount,
method decodeLSB (line 141) | abstract void decodeLSB(final int lsb) throws Decoder.DecodeException;
method executeSideSet (line 143) | private void executeSideSet(final SM.Status smStatus)
method executeOperation (line 156) | abstract ResultState executeOperation(final SM sm);
method execute (line 158) | public ResultState execute(final SM sm)
method getMnemonic (line 165) | public abstract String getMnemonic();
method getParamsDisplay (line 167) | abstract String getParamsDisplay();
method checkIRQIndex (line 169) | protected void checkIRQIndex(final int irqIndex)
method getIRQNum (line 177) | protected static int getIRQNum(final int smNum, final int index)
method getIRQNumDisplay (line 186) | protected static String getIRQNumDisplay(final int index)
method toString (line 192) | @Override
class Jmp (line 209) | public static class Jmp extends Instruction
type Condition (line 214) | public enum Condition
method Condition (line 230) | private Condition(final int code, final String mnemonic,
method fulfilled (line 239) | public boolean fulfilled(final SM.Status smStatus)
method toString (line 244) | @Override
method resetParams (line 254) | @Override
method setCondition (line 261) | public void setCondition(final Condition condition)
method setAddress (line 269) | public void setAddress(final int address)
method encode (line 280) | public int encode(final int pinCtrlSidesetCount,
method decodeLSB (line 290) | @Override
method executeOperation (line 297) | @Override
method getMnemonic (line 306) | @Override
method getParamsDisplay (line 312) | @Override
class Wait (line 322) | public static class Wait extends Instruction
type Source (line 327) | private enum Source
method Source (line 350) | private Source(final int code, final String mnemonic,
method getBit (line 359) | public Bit getBit(final Wait wait, SM sm)
method toString (line 364) | @Override
method resetParams (line 375) | @Override
method decodeLSB (line 383) | @Override
method executeOperation (line 396) | @Override
method getMnemonic (line 403) | @Override
method getParamsDisplay (line 409) | @Override
class In (line 421) | public static class In extends Instruction
type Source (line 426) | private enum Source
method Source (line 445) | private Source(final int code, final String mnemonic,
method getData (line 454) | public Integer getData(final SM sm)
method toString (line 459) | @Override
method resetParams (line 469) | @Override
method decodeLSB (line 476) | @Override
method shiftIn (line 488) | private void shiftIn(final SM sm, final SM.Status smStatus, final in...
method saturate (line 505) | private void saturate(final SM sm, final SM.Status smStatus,
method executeOperation (line 512) | @Override
method getMnemonic (line 554) | @Override
method getParamsDisplay (line 560) | @Override
class Out (line 567) | public static class Out extends Instruction
type Destination (line 572) | public enum Destination
method Destination (line 610) | private Destination(final int code, final String mnemonic,
method getConsumer (line 619) | public IntConsumer getConsumer(final SM sm)
method toString (line 626) | @Override
method resetParams (line 636) | @Override
method setDestination (line 643) | public void setDestination(final Destination dst)
method setBitCount (line 651) | public void setBitCount(final int bitCount)
method encode (line 662) | public int encode(final int pinCtrlSidesetCount,
method decodeLSB (line 672) | @Override
method outputOsr (line 679) | private void outputOsr(final SM sm, final SM.Status smStatus,
method shiftOsr (line 697) | private void shiftOsr(final SM sm, final SM.Status smStatus,
method saturate (line 711) | private void saturate(final SM sm, final SM.Status smStatus,
method executeOperation (line 718) | @Override
method getMnemonic (line 755) | @Override
method getParamsDisplay (line 761) | @Override
class Push (line 768) | public static class Push extends Instruction
method resetParams (line 773) | @Override
method decodeLSB (line 780) | @Override
method executeOperation (line 791) | @Override
method getMnemonic (line 799) | @Override
method getParamsDisplay (line 805) | @Override
class Pull (line 815) | public static class Pull extends Instruction
method resetParams (line 820) | @Override
method setIfEmpty (line 827) | public void setIfEmpty(final boolean ifEmpty)
method setBlock (line 832) | public void setBlock(final boolean block)
method encode (line 837) | public int encode(final int pinCtrlSidesetCount,
method decodeLSB (line 847) | @Override
method executeOperation (line 858) | @Override
method getMnemonic (line 866) | @Override
method getParamsDisplay (line 872) | @Override
class Mov (line 882) | public static class Mov extends Instruction
type Source (line 891) | private enum Source
method Source (line 911) | private Source(final int code, final String mnemonic,
method read (line 920) | public Integer read(final SM sm)
method toString (line 925) | @Override
type Destination (line 932) | private enum Destination
method Destination (line 968) | private Destination(final int code, final String mnemonic,
method write (line 977) | public void write(final SM sm, final int data)
method toString (line 982) | @Override
type Operation (line 989) | private enum Operation
method Operation (line 1000) | private Operation(final int code, final String mnemonic,
method apply (line 1009) | private int apply(final int data)
method toString (line 1014) | @Override
method resetParams (line 1025) | @Override
method isNop (line 1033) | private boolean isNop()
method decodeLSB (line 1041) | @Override
method executeOperation (line 1059) | @Override
method getMnemonic (line 1071) | @Override
method getParamsDisplay (line 1077) | @Override
class Irq (line 1086) | public static class Irq extends Instruction
method resetParams (line 1092) | @Override
method decodeLSB (line 1100) | @Override
method executeOperation (line 1113) | @Override
method getMnemonic (line 1128) | @Override
method getParamsDisplay (line 1134) | @Override
class Set (line 1147) | public static class Set extends Instruction
type Destination (line 1152) | public enum Destination
method Destination (line 1179) | private Destination(final int code, final String mnemonic,
method write (line 1188) | public void write(final SM sm, final int data)
method toString (line 1193) | @Override
method resetParams (line 1203) | @Override
method setDestination (line 1210) | public void setDestination(final Destination dst)
method setData (line 1218) | public void setData(final int data)
method encode (line 1229) | public int encode(final int pinCtrlSidesetCount,
method decodeLSB (line 1239) | @Override
method executeOperation (line 1253) | @Override
method getMnemonic (line 1260) | @Override
method getParamsDisplay (line 1266) | @Override
FILE: java/org/soundpaint/rp2040pio/LocalAddressSpace.java
class LocalAddressSpace (line 31) | public class LocalAddressSpace extends AddressSpace
method LocalAddressSpace (line 49) | public LocalAddressSpace(final Emulator emulator)
method getEmulatorInfo (line 76) | @Override
method getGPIOAddress (line 82) | public int getGPIOAddress(final GPIOIOBank0RegistersImpl.Regs register)
method getGPIOAddress (line 87) | public int getGPIOAddress(final GPIOPadsBank0RegistersImpl.Regs register)
method getPIO0Address (line 92) | public int getPIO0Address(final PIORegistersImpl.Regs register)
method getPIO1Address (line 97) | public int getPIO1Address(final PIORegistersImpl.Regs register)
method getPIO0Address (line 102) | public int getPIO0Address(final PIOEmuRegistersImpl.Regs register)
method getPIO1Address (line 107) | public int getPIO1Address(final PIOEmuRegistersImpl.Regs register)
method address2register (line 112) | private static int address2register(final RegisterSet registers,
method getProvidingRegisters (line 119) | private RegisterSet getProvidingRegisters(final int address)
method providesAddress (line 131) | @Override
method getRegisterSetId (line 137) | @Override
method getAddressLabel (line 150) | @Override
method writeAddressMasked (line 164) | @Override
method readAddress (line 194) | @Override
method timedOut (line 215) | private static boolean timedOut(final long startWallClock,
method waitAddress (line 225) | @Override
FILE: java/org/soundpaint/rp2040pio/MasterClock.java
class MasterClock (line 34) | public class MasterClock implements Clock, Constants
type Mode (line 36) | public enum Mode {
method fromValue (line 40) | public static Mode fromValue(final int value) {
class DrivingGear (line 50) | private class DrivingGear extends Thread
method DrivingGear (line 52) | public DrivingGear()
method runSingleStep (line 57) | private void runSingleStep()
method runTargetFrequency (line 88) | private void runTargetFrequency()
method run (line 97) | @Override
method MasterClock (line 138) | private MasterClock()
method MasterClock (line 143) | public MasterClock(final PrintStream console)
method reset (line 157) | public void reset()
method start (line 165) | private void start()
method terminate (line 171) | public void terminate()
method resetRef (line 179) | private void resetRef()
method getMilliSecondsAhead (line 187) | private long getMilliSecondsAhead()
method syncWithRealTime (line 203) | private void syncWithRealTime()
method setFrequency (line 216) | private void setFrequency(final int frequency)
method getRegisterWaitLock (line 226) | public Object getRegisterWaitLock()
method setMASTERCLK_FREQ (line 231) | public void setMASTERCLK_FREQ(final int frequency)
method getMASTERCLK_FREQ (line 239) | public int getMASTERCLK_FREQ()
method setMode (line 244) | public void setMode(final Mode mode)
method getMode (line 253) | public Mode getMode() { return mode; }
method setMASTERCLK_MODE (line 255) | public void setMASTERCLK_MODE(final int value)
method getMASTERCLK_MODE (line 260) | public int getMASTERCLK_MODE()
method addTransitionListener (line 265) | @Override
method removeTransitionListener (line 271) | @Override
method getWallClock (line 277) | @Override
method announceRisingEdge (line 283) | private void announceRisingEdge()
method announceFallingEdge (line 290) | private void announceFallingEdge()
method getPhase (line 297) | public Phase getPhase() { return phase; }
method triggerPhase0 (line 299) | public void triggerPhase0()
method cyclePhase0 (line 312) | private void cyclePhase0()
method triggerPhase1 (line 325) | public void triggerPhase1()
method cyclePhase1 (line 338) | private void cyclePhase1()
method awaitPhaseChange (line 352) | public void awaitPhaseChange() throws InterruptedException
method awaitPhaseChange (line 359) | public void awaitPhaseChange(final long millisTimeout)
FILE: java/org/soundpaint/rp2040pio/Memory.java
class Memory (line 30) | public class Memory implements Constants
method Memory (line 35) | public Memory()
method reset (line 41) | public void reset()
method set (line 50) | public void set(final int address, final int value,
method set (line 56) | private void set(final int address, final short value)
method get (line 62) | public short get(final int address)
FILE: java/org/soundpaint/rp2040pio/PIO.java
class PIO (line 35) | public class PIO implements Constants, Clock.TransitionListener
type PinDir (line 47) | public enum PinDir {
method PinDir (line 54) | private PinDir(final int value, final String label)
method getValue (line 60) | public int getValue() { return value; }
method fromValue (line 62) | public static PinDir fromValue(final int value)
method fromValue (line 71) | public static PinDir fromValue(final int value, final PinDir default...
type ShiftDir (line 81) | public enum ShiftDir {
method ShiftDir (line 88) | private ShiftDir(final int value, final String label)
method getValue (line 94) | public int getValue() { return value; }
method fromValue (line 96) | public static ShiftDir fromValue(final int value)
method PIO (line 106) | private PIO()
method PIO (line 111) | public PIO(final int index, final PrintStream console,
method reset (line 138) | public void reset()
method getIndex (line 147) | public int getIndex()
method getDBG_CFGINFO_IMEM_SIZE (line 152) | public int getDBG_CFGINFO_IMEM_SIZE()
method getDBG_CFGINFO_SM_COUNT (line 157) | public int getDBG_CFGINFO_SM_COUNT()
method getDBG_CFGINFO_FIFO_DEPTH (line 162) | public int getDBG_CFGINFO_FIFO_DEPTH()
method getConsole (line 167) | public PrintStream getConsole()
method getMasterClock (line 172) | public MasterClock getMasterClock()
method getGPIO (line 177) | public GPIO getGPIO()
method getPIOGPIO (line 182) | public PIOGPIO getPIOGPIO()
method getMemory (line 187) | public Memory getMemory()
method getSM (line 192) | public SM getSM(final int index)
method getIRQ (line 203) | public IRQ getIRQ()
method getSM_ENABLED (line 208) | public int getSM_ENABLED()
method setSM_ENABLED (line 213) | public void setSM_ENABLED(final int smEnabled)
method getCtrl (line 224) | public int getCtrl()
method setCtrl (line 229) | public void setCtrl(final int ctrl, final int mask)
method setSideSetCount (line 251) | public void setSideSetCount(final int count)
method smIsEnabled (line 264) | private boolean smIsEnabled(final int smNum)
method getDirection (line 277) | public Direction getDirection(final int gpio)
method getLevel (line 282) | public Bit getLevel(final int gpio)
method risingEdge (line 287) | @Override
method fallingEdge (line 298) | @Override
FILE: java/org/soundpaint/rp2040pio/PIOEmuRegisters.java
class PIOEmuRegisters (line 38) | public abstract class PIOEmuRegisters extends RegisterSet
type Regs (line 40) | public enum Regs implements RegistersDocs<Regs>
method getRegisterSetLabel (line 413) | public static String getRegisterSetLabel()
method getRegisterSetDescription (line 418) | public static String getRegisterSetDescription()
method Regs (line 435) | private Regs()
method Regs (line 440) | private Regs(final Regs ref)
method Regs (line 445) | private Regs(final Regs ref, final int smNum)
method Regs (line 450) | private Regs(final String info, final BitsInfo[] bitsInfos)
method Regs (line 455) | private Regs(final String info, final List<BitsInfo> bitsInfos)
method Regs (line 460) | private Regs(final String info, final int smNum,
method Regs (line 466) | private Regs(final String info, final int smNum,
method Regs (line 472) | private Regs(final RegisterDetails registerDetails)
method getInfo (line 477) | @Override
method getRegisterDetails (line 483) | @Override
method getRegs (line 492) | @Override
method getAddress (line 499) | public static int getAddress(final int pioNum,
method getSMAddress (line 509) | public static int getSMAddress(final int pioNum,
method getFIFOMemAddress (line 556) | public static int getFIFOMemAddress(final int pioNum, final int smNum,
method getMemoryAddress (line 567) | public static int getMemoryAddress(final int pioNum,
method getTXFAddress (line 577) | public static int getTXFAddress(final int pioNum, final int smNum)
method getRXFAddress (line 586) | public static int getRXFAddress(final int pioNum, final int smNum)
method PIOEmuRegisters (line 595) | public PIOEmuRegisters(final String id, final int baseAddress)
FILE: java/org/soundpaint/rp2040pio/PIOEmuRegistersImpl.java
class PIOEmuRegistersImpl (line 33) | public class PIOEmuRegistersImpl extends PIOEmuRegisters
method PIOEmuRegistersImpl (line 37) | public PIOEmuRegistersImpl(final PIO pio)
method getPIO (line 44) | public PIO getPIO() { return pio; }
method getPIOIndex (line 46) | public int getPIOIndex()
method getAddress (line 51) | public int getAddress(final PIOEmuRegisters.Regs register)
method getSMAddress (line 56) | public int getSMAddress(final PIOEmuRegisters.Regs register, final int...
method getFIFOMemAddress (line 61) | public int getFIFOMemAddress(final int smNum, final int address)
method getMemoryAddress (line 66) | public int getMemoryAddress(final int memoryAddress)
method setFIFOMemValue (line 71) | private void setFIFOMemValue(final int regsOffset, final int value,
method writeRegister (line 83) | @Override
method getClockEnable (line 303) | private int getClockEnable(final int smNum)
method getNextClockEnable (line 310) | private int getNextClockEnable(final int smNum)
method getFIFOMemValue (line 318) | private int getFIFOMemValue(final int regsOffset)
method getFIFOReadPointers (line 326) | private int getFIFOReadPointers()
method readRegister (line 338) | @Override
FILE: java/org/soundpaint/rp2040pio/PIOGPIO.java
class PIOGPIO (line 30) | public class PIOGPIO implements Constants
method PIOGPIO (line 37) | private PIOGPIO()
method PIOGPIO (line 42) | public PIOGPIO(final GPIO gpio)
method reset (line 54) | public void reset()
method getGPIO (line 63) | public GPIO getGPIO() { return gpio; }
method setLevel (line 65) | private void setLevel(final int gpioNum, final Bit level)
method getLevel (line 76) | public Bit getLevel(final int gpioNum)
method setDirection (line 82) | private void setDirection(final int gpioNum, final Direction direction)
method getDirection (line 93) | public Direction getDirection(final int gpioNum)
method getPins (line 99) | public int getPins(final int base, final int count)
method collateLevel (line 110) | private void collateLevel(final int gpioNum, final Bit bit)
method collatePins (line 119) | public void collatePins(final int pins, final int base, final int count)
method setPins (line 127) | public void setPins(final int pins, final int base, final int count)
method setPinsMask (line 136) | public void setPinsMask(final int pins, final int mask, final boolean ...
method getPinDirs (line 147) | public int getPinDirs(final int base, final int count)
method collatePinDir (line 159) | private void collatePinDir(final int gpioNum, final Direction direction)
method collatePinDirs (line 168) | public void collatePinDirs(final int pinDirs, final int base, final in...
method setPinDirs (line 176) | public void setPinDirs(final int pinDirs, final int base, final int co...
method setPinDirsMask (line 186) | public void setPinDirsMask(final int pinDirs, final int mask,
method applyCollatedWrites (line 199) | public void applyCollatedWrites()
FILE: java/org/soundpaint/rp2040pio/PIORegisters.java
class PIORegisters (line 38) | public abstract class PIORegisters extends RegisterSet
type Regs (line 40) | public enum Regs implements RegistersDocs<Regs>
method getRegisterSetLabel (line 398) | public static String getRegisterSetLabel()
method getRegisterSetDescription (line 403) | public static String getRegisterSetDescription()
method Regs (line 416) | private Regs()
method Regs (line 421) | private Regs(final Regs ref)
method Regs (line 426) | private Regs(final Regs ref, final int smNum)
method Regs (line 431) | private Regs(final String info, final BitsInfo[] bitsInfos)
method Regs (line 436) | private Regs(final String info, final List<BitsInfo> bitsInfos)
method Regs (line 441) | private Regs(final String info, final int smNum,
method Regs (line 447) | private Regs(final String info, final int smNum,
method Regs (line 453) | private Regs(final RegisterDetails registerDetails)
method getInfo (line 458) | @Override
method getRegisterDetails (line 464) | @Override
method getRegs (line 473) | @Override
method getAddress (line 480) | public static int getAddress(final int pioNum,
method getSMAddress (line 490) | public static int getSMAddress(final int pioNum,
method getMemoryAddress (line 516) | public static int getMemoryAddress(final int pioNum,
method getTXFAddress (line 526) | public static int getTXFAddress(final int pioNum, final int smNum)
method getRXFAddress (line 535) | public static int getRXFAddress(final int pioNum, final int smNum)
method PIORegisters (line 544) | public PIORegisters(final String id, final int baseAddress)
FILE: java/org/soundpaint/rp2040pio/PIORegistersImpl.java
class PIORegistersImpl (line 33) | public class PIORegistersImpl extends PIORegisters
method PIORegistersImpl (line 37) | public PIORegistersImpl(final PIO pio)
method getPIO (line 44) | public PIO getPIO() { return pio; }
method getPIOIndex (line 46) | public int getPIOIndex()
method getAddress (line 51) | public int getAddress(final PIORegisters.Regs register)
method getSMAddress (line 56) | public int getSMAddress(final PIORegisters.Regs register, final int sm...
method getMemoryAddress (line 61) | public int getMemoryAddress(final int memoryAddress)
method getTXFAddress (line 66) | public int getTXFAddress(final int smNum)
method getRXFAddress (line 71) | public int getRXFAddress(final int smNum)
method writeFDebug (line 80) | private void writeFDebug(final int value, final int mask)
method writeRegister (line 104) | @Override
method readFStat (line 243) | private int readFStat()
method readFDebug (line 264) | private int readFDebug()
method readFLevel (line 286) | private int readFLevel()
method getCfgInfo (line 299) | private int getCfgInfo()
method readRegister (line 307) | @Override
FILE: java/org/soundpaint/rp2040pio/PLL.java
class PLL (line 34) | public class PLL implements Clock.TransitionListener
method PLL (line 44) | private PLL()
method PLL (line 49) | public PLL(final PrintStream console)
method reset (line 58) | public void reset()
method getDivIntegerBits (line 68) | public int getDivIntegerBits()
method setDivIntegerBits (line 73) | public void setDivIntegerBits(final int divIntegerBits)
method getDivFractionalBits (line 99) | public int getDivFractionalBits()
method setDivFractionalBits (line 104) | public void setDivFractionalBits(final int divFractionalBits)
method setCLKDIV (line 128) | private void setCLKDIV(final int divIntegerBits, final int divFraction...
method setCLKDIV (line 141) | public void setCLKDIV(final int clkdiv)
method getCLKDIV (line 146) | public int getCLKDIV()
method getClockEnable (line 153) | public boolean getClockEnable()
method getNextClockEnable (line 158) | public boolean getNextClockEnable()
method prepareClockEnable (line 163) | private void prepareClockEnable()
method risingEdge (line 185) | @Override
method fallingEdge (line 191) | @Override
FILE: java/org/soundpaint/rp2040pio/ParseException.java
class ParseException (line 29) | public class ParseException extends IOException
method ParseException (line 33) | private ParseException()
method ParseException (line 38) | public ParseException(final String message)
method ParseException (line 43) | public ParseException(final String message, final Throwable cause)
method create (line 48) | public static ParseException create(final String message,
FILE: java/org/soundpaint/rp2040pio/PicoEmuRegisters.java
class PicoEmuRegisters (line 38) | public abstract class PicoEmuRegisters extends RegisterSet
type Regs (line 40) | public enum Regs implements RegistersDocs<Regs>
method getRegisterSetLabel (line 140) | public static String getRegisterSetLabel()
method getRegisterSetDescription (line 145) | public static String getRegisterSetDescription()
method Regs (line 160) | private Regs()
method Regs (line 165) | private Regs(final Regs ref)
method Regs (line 170) | private Regs(final Regs ref, final int smNum)
method Regs (line 175) | private Regs(final String info, final BitsInfo[] bitsInfos)
method Regs (line 180) | private Regs(final String info, final List<BitsInfo> bitsInfos)
method Regs (line 185) | private Regs(final String info, final int smNum,
method Regs (line 191) | private Regs(final String info, final int smNum,
method Regs (line 197) | private Regs(final RegisterDetails registerDetails)
method getInfo (line 202) | @Override
method getRegisterDetails (line 208) | @Override
method getRegs (line 217) | @Override
method getAddress (line 221) | public static int getAddress(final PicoEmuRegisters.Regs register)
method PicoEmuRegisters (line 229) | public PicoEmuRegisters()
FILE: java/org/soundpaint/rp2040pio/PicoEmuRegistersImpl.java
class PicoEmuRegistersImpl (line 35) | public class PicoEmuRegistersImpl extends PicoEmuRegisters
method PicoEmuRegistersImpl (line 39) | public PicoEmuRegistersImpl(final Emulator emulator)
method getEmulator (line 44) | public Emulator getEmulator() { return emulator; }
method writeRegister (line 46) | @Override
method readRegister (line 79) | @Override
FILE: java/org/soundpaint/rp2040pio/PinState.java
type PinState (line 30) | public enum PinState
method PinState (line 40) | private PinState(final Direction direction, final Bit level)
method getDirection (line 52) | public Direction getDirection() { return direction; }
method getLevel (line 54) | public Bit getLevel() { return level; }
method fromValues (line 56) | public static PinState fromValues(final Direction direction, final Bit...
method toString (line 81) | @Override
FILE: java/org/soundpaint/rp2040pio/RegisterSet.java
class RegisterSet (line 30) | public abstract class RegisterSet implements Constants
method RegisterSet (line 36) | private RegisterSet()
method RegisterSet (line 47) | protected RegisterSet(final String id, final int baseAddress)
method getId (line 64) | public String getId() { return id; }
method getBaseAddress (line 66) | public int getBaseAddress() { return baseAddress; }
method getSize (line 68) | public int getSize() { return size; }
method checkRegNum (line 70) | protected void checkRegNum(final int regNum)
method getRegs (line 82) | protected abstract <T extends Enum<T>> T[] getRegs();
method getRegisterLabel (line 84) | public <T extends Enum<T>> String getRegisterLabel(final int regNum)
method writeRegister (line 98) | public abstract void writeRegister(final int regNum,
method readRegister (line 103) | public abstract int readRegister(final int regNum) throws IOException;
method toString (line 105) | @Override
FILE: java/org/soundpaint/rp2040pio/RemoteAddressSpaceClient.java
class RemoteAddressSpaceClient (line 41) | public class RemoteAddressSpaceClient extends AddressSpace
class Response (line 45) | private static class Response
method Response (line 52) | private Response()
method Response (line 57) | private Response(final PrintStream console,
method getStatusCode (line 70) | public int getStatusCode()
method getStatusId (line 75) | public String getStatusId()
method getResult (line 80) | public String getResult()
method isOk (line 85) | public boolean isOk()
method getResultOrThrowOnFailure (line 90) | public String getResultOrThrowOnFailure(final String errorMessage)
method toString (line 108) | @Override
method RemoteAddressSpaceClient (line 127) | public RemoteAddressSpaceClient(final PrintStream console) throws IOEx...
method RemoteAddressSpaceClient (line 139) | public RemoteAddressSpaceClient(final PrintStream console, final Strin...
method RemoteAddressSpaceClient (line 150) | public RemoteAddressSpaceClient(final PrintStream console,
method getHost (line 164) | public String getHost() { return host; }
method getPort (line 171) | public int getPort() { return port; }
method connect (line 177) | public void connect(final String host)
method connect (line 187) | public void connect(final int port)
method connect (line 197) | public void connect(final String host, final int port)
method getResponse (line 215) | private synchronized Response getResponse(final String request)
method checkResponse (line 248) | private void checkResponse(final Response response) throws IOException
method getEmulatorInfo (line 255) | @Override
method getHelp (line 263) | public String getHelp() throws IOException
method quit (line 270) | public void quit() throws IOException
method providesAddress (line 278) | @Override
method getRegisterSetId (line 306) | @Override
method getAddressLabel (line 325) | @Override
method writeAddressMasked (line 343) | @Override
method parseIntResult (line 358) | private int parseIntResult(final int address, final String result)
method readAddress (line 378) | @Override
method waitAddress (line 390) | @Override
FILE: java/org/soundpaint/rp2040pio/RemoteAddressSpaceServer.java
class RemoteAddressSpaceServer (line 63) | public class RemoteAddressSpaceServer
method RemoteAddressSpaceServer (line 73) | private RemoteAddressSpaceServer()
method RemoteAddressSpaceServer (line 78) | public RemoteAddressSpaceServer(final PrintStream console,
method RemoteAddressSpaceServer (line 85) | public RemoteAddressSpaceServer(final PrintStream console,
method listen (line 107) | private void listen()
method getHelp (line 120) | private String getHelp()
type ResponseStatus (line 137) | private enum ResponseStatus
method ResponseStatus (line 152) | private ResponseStatus(final String id, final int code)
method getId (line 161) | public String getId() { return id; }
method getCode (line 163) | public int getCode() { return code; }
method getDisplayValue (line 165) | public String getDisplayValue()
method createResponse (line 171) | private String createResponse(final ResponseStatus status)
method createResponse (line 176) | private String createResponse(final ResponseStatus status,
method parseBoolean (line 186) | private boolean parseBoolean(final String unparsed)
method parseInt (line 201) | private int parseInt(final String unparsed)
method parseAddress (line 211) | private int parseAddress(final String unparsed)
method handleGetVersion (line 222) | private String handleGetVersion(final String[] args) throws IOException
method handleGetHelp (line 230) | private String handleGetHelp(final String[] args)
method handleQuit (line 238) | private String handleQuit(final String[] args)
method handleProvidesAddress (line 246) | private String handleProvidesAddress(final String[] args) throws IOExc...
method handleGetRegisterSetId (line 264) | private String handleGetRegisterSetId(final String[] args) throws IOEx...
method handleGetLabel (line 282) | private String handleGetLabel(final String[] args) throws IOException
method handleWriteAddress (line 300) | private String handleWriteAddress(final String[] args) throws IOException
method handleReadAddress (line 336) | private String handleReadAddress(final String[] args) throws IOException
method handleWait (line 354) | private String handleWait(final String[] args) throws IOException
method handleRequest (line 411) | private String handleRequest(final String request) throws IOException
method handleThrowable (line 454) | private void handleThrowable(final PrintWriter clientOut, final Throwa...
method serve (line 469) | private void serve(final Socket clientSocket)
FILE: java/org/soundpaint/rp2040pio/SM.java
class SM (line 34) | public class SM implements Constants
type IOMapping (line 47) | public enum IOMapping
method IOMapping (line 57) | private IOMapping(final Function<SM, Integer> baseGetter,
method collatePins (line 64) | public void collatePins(final SM sm, final int data)
method collatePinDirs (line 70) | public void collatePinDirs(final SM sm, final int data)
class Status (line 77) | public class Status
method Status (line 133) | public Status()
method reset (line 138) | private void reset()
method restart (line 195) | public void restart()
method jmpPin (line 222) | public Bit jmpPin()
method collatePins (line 233) | public void collatePins(final int pins, final int base, final int co...
method flushCollatePins (line 248) | private void flushCollatePins()
method collatePinDirs (line 271) | public void collatePinDirs(final int pins, final int base, final int...
method getFIFOStatus (line 276) | public int getFIFOStatus()
method isIsrCountBeyondThreshold (line 287) | public boolean isIsrCountBeyondThreshold()
method isOsrCountBeyondThreshold (line 293) | public boolean isOsrCountBeyondThreshold()
method consumePendingDelay (line 299) | private boolean consumePendingDelay()
method setPendingDelay (line 307) | private void setPendingDelay(final int delay)
method toString (line 319) | @Override
method SM (line 326) | private SM()
method SM (line 331) | public SM(final int num, final PrintStream console,
method getNum (line 368) | public int getNum() { return num; }
method getPIOGPIO (line 370) | public PIOGPIO getPIOGPIO() { return pioGpio; }
method getMemory (line 372) | public Memory getMemory() { return memory; }
method getStatus (line 374) | public Status getStatus() { return status; }
method getFIFO (line 376) | public FIFO getFIFO() { return fifo; }
method getPLL (line 378) | public PLL getPLL() { return pll; }
method reset (line 380) | public void reset()
method setCLKDIV (line 388) | public void setCLKDIV(final int clkdiv, final int mask, final boolean ...
method getCLKDIV (line 393) | public int getCLKDIV()
method resetCLKDIV (line 398) | public void resetCLKDIV()
method outEnSel (line 403) | public int outEnSel()
method inlineOutEn (line 408) | public boolean inlineOutEn()
method outSticky (line 413) | public boolean outSticky()
method setEXECCTRL (line 418) | public void setEXECCTRL(final int execctrl, final int mask, final bool...
method setEXECCTRL (line 423) | private void setEXECCTRL(final int execctrl)
method getEXECCTRL (line 453) | public int getEXECCTRL()
method setSHIFTCTRL (line 471) | public void setSHIFTCTRL(final int shiftctrl, final int mask,
method setSHIFTCTRL (line 477) | private void setSHIFTCTRL(final int shiftctrl)
method getSHIFTCTRL (line 503) | public int getSHIFTCTRL()
method setPINCTRL (line 518) | public void setPINCTRL(final int pinctrl, final int mask, final boolea...
method setPINCTRL (line 523) | private void setPINCTRL(final int pinctrl)
method getPINCTRL (line 543) | public int getPINCTRL()
method clockRisingEdge (line 555) | public void clockRisingEdge(final boolean smEnabled, final long wallCl...
method clockFallingEdge (line 589) | public void clockFallingEdge(final long wallClock)
method restart (line 604) | public void restart()
method getIRQ (line 609) | public Bit getIRQ(final int index)
method clearIRQ (line 614) | public void clearIRQ(final int index)
method setIRQ (line 619) | public void setIRQ(final int index)
method rxPush (line 628) | public boolean rxPush(final boolean ifFull, final boolean block)
method txPull (line 647) | public boolean txPull(final boolean ifEmpty, final boolean block)
method saturate (line 670) | public static int saturate(final int base, final int increment,
method getISRValue (line 677) | public int getISRValue() { return status.isrValue; }
method setISRValue (line 679) | public void setISRValue(final int value)
method setISRValue (line 684) | public void setISRValue(final int value, final int mask, final boolean...
method getISRShiftCount (line 689) | public int getISRShiftCount() { return status.isrShiftCount; }
method setISRShiftCount (line 691) | public void setISRShiftCount(final int value, final int mask,
method getOSRValue (line 698) | public int getOSRValue() { return status.osrValue; }
method setOSRValue (line 700) | public void setOSRValue(final int value)
method setOSRValue (line 705) | public void setOSRValue(final int value, final int mask, final boolean...
method getOSRShiftCount (line 710) | public int getOSRShiftCount() { return status.osrShiftCount; }
method setOSRShiftCount (line 712) | public void setOSRShiftCount(final int value, final int mask,
method setSideSetCount (line 719) | public void setSideSetCount(final int count)
method getInShiftDir (line 730) | public PIO.ShiftDir getInShiftDir()
method getOutShiftDir (line 735) | public PIO.ShiftDir getOutShiftDir()
method getX (line 740) | public int getX() { return status.regX; }
method setX (line 742) | public void setX(final int value)
method setX (line 747) | public void setX(final int value, final int mask, final boolean xor)
method decX (line 752) | private void decX()
method getY (line 757) | public int getY() { return status.regY; }
method setY (line 759) | public void setY(final int value)
method setY (line 764) | public void setY(final int value, final int mask, final boolean xor)
method decY (line 769) | private void decY()
method put (line 774) | public void put(final int data)
method putRXF (line 781) | public void putRXF(final int data)
method get (line 788) | public int get()
method getTXF (line 796) | public int getTXF()
method isRXFIFOFull (line 804) | public boolean isRXFIFOFull()
method isRXFIFOEmpty (line 809) | public boolean isRXFIFOEmpty()
method getRXFIFOLevel (line 814) | public int getRXFIFOLevel()
method isTXFIFOFull (line 819) | public boolean isTXFIFOFull()
method isTXFIFOEmpty (line 824) | public boolean isTXFIFOEmpty()
method getTXFIFOLevel (line 829) | public int getTXFIFOLevel()
method setBreakPoints (line 834) | public void setBreakPoints(final int breakPoints,
method getBreakPoints (line 841) | public int getBreakPoints()
method setTracePoints (line 846) | public void setTracePoints(final int tracePoints,
method getTracePoints (line 853) | public int getTracePoints()
method encodeJmp (line 858) | private int encodeJmp(final Instruction.Jmp.Condition condition,
method getPC (line 879) | public int getPC()
method setPC (line 884) | public void setPC(final int value)
method setPC (line 900) | public void setPC(final int value, final int mask, final boolean xor)
method updatePC (line 906) | private void updatePC()
method fetch (line 920) | private short fetch()
method getOpCode (line 941) | public int getOpCode()
method getPendingForcedInstruction (line 977) | public int getPendingForcedInstruction()
method getFORCED_INSTR (line 982) | public int getFORCED_INSTR()
method clearPendingForcedInstruction (line 990) | public void clearPendingForcedInstruction()
method getPendingExecdInstruction (line 995) | public int getPendingExecdInstruction()
method getEXECD_INSTR (line 1000) | public int getEXECD_INSTR()
method clearPendingExecdInstruction (line 1008) | public void clearPendingExecdInstruction()
method forceInstruction (line 1013) | public void forceInstruction(final int instruction)
method execInstruction (line 1033) | public void execInstruction(final int instruction)
method isExecStalled (line 1050) | public boolean isExecStalled()
method getINSTR_ORIGIN (line 1057) | public int getINSTR_ORIGIN()
method getTotalDelay (line 1072) | public int getTotalDelay()
method getPendingDelay (line 1077) | public int getPendingDelay()
method fetchAndDecode (line 1082) | private void fetchAndDecode() throws Decoder.DecodeException
method executeInstruction (line 1097) | private void executeInstruction()
method executeAsyncAutoPull (line 1131) | private void executeAsyncAutoPull()
method execute (line 1151) | private void execute()
method isStalled (line 1169) | public boolean isStalled()
method isDelayCycle (line 1174) | public boolean isDelayCycle()
method toString (line 1179) | @Override
FILE: java/org/soundpaint/rp2040pio/SwingUtils.java
class SwingUtils (line 35) | public class SwingUtils
method createImageIcon (line 37) | public static ImageIcon createImageIcon(final String iconFileName,
method createIconMenuItem (line 49) | public static JMenuItem createIconMenuItem(final String iconFileName,
method createIconButton (line 62) | public static JButton createIconButton(final String iconFileName,
method setPreferredWidthAsMaximum (line 75) | public static void setPreferredWidthAsMaximum(final Component component)
method setPreferredHeightAsMaximum (line 83) | public static void setPreferredHeightAsMaximum(final Component component)
FILE: java/org/soundpaint/rp2040pio/doctool/DocsBuilder.java
class DocsBuilder (line 34) | public class DocsBuilder
method fill (line 36) | public static String fill(final char ch, final int length)
method csvEncode (line 46) | public static String csvEncode(final String raw)
method createIdFromLabel (line 71) | public static String createIdFromLabel(final String registersSetLabel)
method writeToFile (line 93) | public static void writeToFile(final String rstFilePath,
method main (line 109) | public static void main(final String argv[])
FILE: java/org/soundpaint/rp2040pio/doctool/ExampleScriptsDocsBuilder.java
class ExampleScriptsDocsBuilder (line 37) | public class ExampleScriptsDocsBuilder
method ExampleScriptsDocsBuilder (line 39) | private ExampleScriptsDocsBuilder()
method listExampleScript (line 44) | private void listExampleScript(final StringBuilder s,
method listExampleScriptGroup (line 65) | private void listExampleScriptGroup(final StringBuilder s,
method listExampleScripts (line 86) | private void listExampleScripts(final Map<String, Map<String, ScriptIn...
method createDocs (line 110) | private String createDocs() throws IOException
method ExampleScriptsDocsBuilder (line 142) | public ExampleScriptsDocsBuilder(final String rstFilePath)
method main (line 149) | public static void main(final String argv[])
FILE: java/org/soundpaint/rp2040pio/doctool/MonitorCommandsDocsBuilder.java
class MonitorCommandsDocsBuilder (line 50) | public class MonitorCommandsDocsBuilder
method MonitorCommandsDocsBuilder (line 52) | private MonitorCommandsDocsBuilder()
method createCommandDocs (line 57) | private String createCommandDocs(final Command command)
method createCommandsOverview (line 93) | private String createCommandsOverview(final CommandRegistry commandReg...
method createDocs (line 124) | private String createDocs() throws IOException
method MonitorCommandsDocsBuilder (line 153) | public MonitorCommandsDocsBuilder(final String rstFilePath)
method main (line 160) | public static void main(final String argv[])
FILE: java/org/soundpaint/rp2040pio/doctool/RegistersDocs.java
type RegistersDocs (line 37) | public interface RegistersDocs<T>
type BitsType (line 39) | public enum BitsType
method BitsType (line 54) | private BitsType(final String id, final String description)
method isRelevant (line 60) | public boolean isRelevant()
method getId (line 65) | public String getId() { return id; }
method getDescription (line 67) | public String getDescription() { return description; }
class BitsRange (line 70) | public static class BitsRange
method BitsRange (line 75) | private BitsRange()
method BitsRange (line 80) | public BitsRange(final int msb, final int lsb)
method getMsb (line 101) | public int getMsb() { return msb; }
method getLsb (line 103) | public int getLsb() { return lsb; }
method toShortString (line 105) | public String toShortString()
method toString (line 113) | @Override
class BitsInfo (line 123) | public static class BitsInfo
method BitsInfo (line 131) | private BitsInfo()
method BitsInfo (line 136) | public BitsInfo(final String name,
method BitsInfo (line 146) | public BitsInfo(final String name,
method getMsb (line 178) | public int getMsb() { return bitsRange.msb; }
method getLsb (line 179) | public int getLsb() { return bitsRange.lsb; }
method getName (line 180) | public String getName() { return name; }
method getBitsRange (line 181) | public BitsRange getBitsRange() { return bitsRange; }
method getDescription (line 182) | public String getDescription() { return description; }
method getType (line 183) | public BitsType getType() { return type; }
method getResetValue (line 184) | public Integer getResetValue() { return resetValue; }
method renderName (line 186) | private static String renderName(final String name)
method renderName (line 191) | private static String renderName(final String name,
method renderBitsRange (line 197) | private String renderBitsRange()
method renderDescription (line 202) | private String renderDescription()
method renderType (line 207) | private String renderType()
method renderResetValue (line 212) | private String renderResetValue()
method toString (line 220) | public String toString(final String defaultName)
method toString (line 230) | @Override
class RegisterDetails (line 237) | public static class RegisterDetails
method checkSmNum (line 245) | private static void checkSmNum(final int smNum)
method RegisterDetails (line 252) | private RegisterDetails()
method RegisterDetails (line 257) | public RegisterDetails(final String info, final BitsInfo[] bitsInfos)
method RegisterDetails (line 262) | public RegisterDetails(final String info, final int smNum,
method RegisterDetails (line 268) | public RegisterDetails(final String info, final List<BitsInfo> bitsI...
method RegisterDetails (line 273) | public RegisterDetails(final String info, final int smNum,
method getInfo (line 285) | public String getInfo() { return info; }
method getSmNum (line 287) | public int getSmNum() { return smNum; }
method getBitsInfos (line 289) | public Iterable<BitsInfo> getBitsInfos()
method createCopyForDifferentSm (line 296) | public RegisterDetails createCopyForDifferentSm(final int smNum)
method getInfo (line 302) | String getInfo();
method getRegisterDetails (line 303) | RegisterDetails getRegisterDetails();
FILE: java/org/soundpaint/rp2040pio/doctool/RegistersDocsBuilder.java
class RegistersDocsBuilder (line 41) | public class RegistersDocsBuilder<T extends Enum<T> & RegistersDocs<T>>
method formatBitsRange (line 43) | private static String formatBitsRange(final RegistersDocs.BitsInfo bit...
method formatName (line 52) | private static String formatName(final RegistersDocs.BitsInfo bitsInfo)
method formatTableDescription (line 64) | private static String
method formatDescription (line 86) | private static String formatDescription(final RegistersDocs.BitsInfo b...
method formatType (line 106) | private static String formatType(final RegistersDocs.BitsInfo bitsInfo)
method formatResetValue (line 115) | private static String formatResetValue(final RegistersDocs.BitsInfo bi...
method createDetailTableLabels (line 123) | private String createDetailTableLabels(final List<T> regsList)
method createDetailTableIndices (line 133) | private String createDetailTableIndices(final List<T> regsList)
method formatRegNames (line 145) | private String formatRegNames(final List<T> regsList)
method formatOffsets (line 160) | private String formatOffsets(final List<T> regsList)
method createDetailTable (line 175) | private String createDetailTable(final String registersSetLabel,
method createDetailTableRef (line 221) | private String createDetailTableRef(final T reg)
method createOverviewTable (line 227) | private String createOverviewTable(final String registersSetLabel,
method createDocs (line 282) | private String createDocs(final String registersSetLabel,
method RegistersDocsBuilder (line 300) | private RegistersDocsBuilder()
method RegistersDocsBuilder (line 305) | public RegistersDocsBuilder(final Class<T> regsClass,
method main (line 317) | public static void main(final String argv[])
FILE: java/org/soundpaint/rp2040pio/monitor/Command.java
class Command (line 38) | public abstract class Command
method Command (line 66) | private Command()
method Command (line 71) | public Command(final PrintStream console, final String fullName,
method Command (line 78) | public Command(final PrintStream console, final String fullName,
method Command (line 85) | public Command(final PrintStream console, final String fullName,
method Command (line 93) | public Command(final PrintStream console, final String fullName,
method Command (line 101) | public Command(final PrintStream console, final String fullName,
method Command (line 108) | public Command(final PrintStream console, final String fullName,
method getFullName (line 148) | public String getFullName()
method getSingleLineDescription (line 153) | public String getSingleLineDescription()
method getNotes (line 158) | public String getNotes()
method getUsage (line 163) | public String getUsage()
method getOptionsHelp (line 168) | public String getOptionsHelp()
method getOptionDeclarationsIterator (line 173) | public Iterator<CmdOptions.OptionDeclaration<?>>
method parse (line 182) | public void parse(final String[] argv) throws CmdOptions.ParseException
method execute (line 192) | public boolean execute() throws IOException
method execute (line 205) | protected abstract boolean execute(final CmdOptions options)
method checkValidity (line 218) | protected void checkValidity(final CmdOptions options)
method getHelp (line 233) | public String getHelp()
method toString (line 238) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/CommandRegistry.java
class CommandRegistry (line 70) | public class CommandRegistry implements Iterable<Command>
method CommandRegistry (line 77) | private CommandRegistry()
method CommandRegistry (line 82) | public CommandRegistry(final PrintStream console,
method installCommands (line 98) | private Quit installCommands(final BufferedReader in, final SDK sdk,
method add (line 132) | private void add(final Command command)
method updateTokenHashes (line 153) | private void updateTokenHashes(final Command command)
method remove (line 169) | public void remove(final Command command)
method lookup (line 183) | public List<Command> lookup(final String partialName)
method iterator (line 191) | @Override
method createCommandParseException (line 197) | private ParseException createCommandParseException(final Command command,
method parseAndExecute (line 215) | public boolean parseAndExecute(final String commandLine, boolean dryRun)
FILE: java/org/soundpaint/rp2040pio/monitor/Monitor.java
class Monitor (line 50) | public class Monitor
method Monitor (line 85) | private Monitor()
method Monitor (line 90) | public Monitor(final BufferedReader in, final PrintStream console,
method parseArgs (line 116) | private CmdOptions parseArgs(final String argv[]) throws IOException
method checkValidity (line 140) | private void checkValidity(final CmdOptions options)
method printAbout (line 155) | private void printAbout()
method connect (line 164) | private AddressSpace connect() throws IOException
method run (line 179) | private int run(final boolean localEcho)
method session (line 205) | private int session(final BufferedReader in,
method main (line 236) | public static int main(final String argv[],
method main (line 252) | public static void main(final String argv[])
FILE: java/org/soundpaint/rp2040pio/monitor/MonitorUtils.java
class MonitorUtils (line 42) | public class MonitorUtils
method listExampleHexDumps (line 44) | public static boolean listExampleHexDumps(final PrintStream console)
method showExampleHexDump (line 59) | public static boolean showExampleHexDump(final PrintStream console,
method asBitArrayDisplay (line 76) | private static String asBitArrayDisplay(final PinState[] pinStates)
method gpioDisplay (line 94) | public static String gpioDisplay(final SDK sdk,
method gpioDisplay (line 106) | public static String gpioDisplay(final SDK sdk, final int pioNum)
FILE: java/org/soundpaint/rp2040pio/monitor/ScriptInfo.java
class ScriptInfo (line 35) | public class ScriptInfo
class ParseException (line 37) | public static class ParseException extends IOException
method createMessage (line 41) | private static String createMessage(final String innerMessage,
method ParseException (line 48) | private ParseException()
method ParseException (line 53) | public ParseException(final String innerMessage, final String scriptId)
method ScriptInfo (line 66) | public ScriptInfo(final String scriptId,
method getScriptId (line 83) | public String getScriptId() { return scriptId; }
method getScriptName (line 85) | public String getScriptName() { return scriptName; }
method getGroupName (line 87) | public String getGroupName() { return groupName; }
method getDescription (line 89) | public String getDescription() { return description; }
method checkHeaderAlreadyDefined (line 91) | private static void checkHeaderAlreadyDefined(final String header,
method checkHeaderDefined (line 102) | private static void checkHeaderDefined(final String header,
method createScriptInfo (line 116) | private static ScriptInfo createScriptInfo(final String scriptId)
method createScriptsInfo (line 160) | public static Map<String, Map<String, ScriptInfo>> createScriptsInfo()
FILE: java/org/soundpaint/rp2040pio/monitor/commands/BreakPoints.java
class BreakPoints (line 40) | public class BreakPoints extends Command
method BreakPoints (line 65) | public BreakPoints(final PrintStream console, final SDK sdk)
method checkValidity (line 76) | @Override
method execute (line 102) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Clear.java
class Clear (line 37) | public class Clear extends Command
method Clear (line 47) | public Clear(final PrintStream console)
method execute (line 57) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Clock.java
class Clock (line 41) | public class Clock extends Command
method Clock (line 81) | public Clock(final PrintStream console, final SDK sdk)
method checkValidity (line 93) | @Override
method getClkDivValue (line 161) | private int getClkDivValue(final int pioNum, final int smNum)
method getIntDivider (line 169) | private int getIntDivider(final int clkDivValue)
method getFracDivider (line 176) | private int getFracDivider(final int clkDivValue)
method getEnabled (line 183) | private boolean getEnabled(final int pioNum, final int smNum)
method displayStatus (line 192) | private void displayStatus(final int pioNum, final int smNum)
method setIntDivider (line 207) | private void setIntDivider(final int pioNum, final int smNum,
method setFracDivider (line 221) | private void setFracDivider(final int pioNum, final int smNum,
method setDivider (line 234) | private void setDivider(final int pioNum, final int smNum,
method restart (line 248) | private void restart(final int pioNum, final int smNum) throws IOExcep...
method execute (line 263) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Enter.java
class Enter (line 42) | public class Enter extends Command
method Enter (line 65) | public Enter(final PrintStream console, final SDK sdk,
method checkValidity (line 81) | @Override
method unassemble (line 94) | private void unassemble(final int pioNum, final PIOSDK pioSdk,
method enterWord (line 104) | private boolean enterWord(final int pioNum, final PIOSDK pioSdk,
method stripOffComment (line 120) | private static String stripOffComment(final String line)
method enterWords (line 128) | private void enterWords(final int pioNum, final PIOSDK pioSdk,
method execute (line 156) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Execute.java
class Execute (line 56) | public class Execute extends Command
method Execute (line 109) | public Execute(final PrintStream console, final SDK sdk)
method checkValidity (line 120) | @Override
method getPendingDelay (line 148) | private int getPendingDelay(final int pioNum, final int smNum)
method displayInstruction (line 158) | private void displayInstruction(final int pioNum, final int smNum,
method displayForcedInstruction (line 170) | private void displayForcedInstruction(final int pioNum, final int smNum,
method displayExecdInstruction (line 189) | private void displayExecdInstruction(final int pioNum, final int smNum,
method displayPendingDelay (line 208) | private void displayPendingDelay(final int pioNum, final int smNum,
method displayInstructions (line 220) | private void displayInstructions(final int pioNum, final int smNum,
method deleteExecdInstruction (line 233) | private void deleteExecdInstruction(final int pioNum, final int smNum,
method setExecdInstruction (line 245) | private void setExecdInstruction(final int pioNum, final int smNum,
method cancelForcedInstruction (line 259) | private void cancelForcedInstruction(final int pioNum, final int smNum,
method setForcedInstruction (line 271) | private void setForcedInstruction(final int pioNum, final int smNum,
method execute (line 288) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Fifo.java
class Fifo (line 46) | public class Fifo extends Command
type Type (line 138) | private enum Type
method Fifo (line 145) | public Fifo(final PrintStream console, final SDK sdk)
method checkValidity (line 160) | @Override
method getSMFReadPtr (line 250) | private int getSMFReadPtr(final int pioNum, final int smNum)
method getSMFLevel (line 259) | private int getSMFLevel(final int pioNum, final int smNum)
method shiftDirectionAsString (line 268) | private static String shiftDirectionAsString(final boolean isRight)
method getFDebug (line 273) | private boolean getFDebug(final int smNum, final int fDebugValue,
method getFTxStall (line 279) | private boolean getFTxStall(final int smNum, final int fDebugValue)
method getFTxOver (line 286) | private boolean getFTxOver(final int smNum, final int fDebugValue)
method getFRxUnder (line 293) | private boolean getFRxUnder(final int smNum, final int fDebugValue)
method getFRxStall (line 300) | private boolean getFRxStall(final int smNum, final int fDebugValue)
method displayFifo (line 307) | private void displayFifo(final int pioNum, final int smNum)
method setThreshold (line 397) | private void setThreshold(final int pioNum, final int smNum, final Typ...
method setShiftDir (line 417) | private void setShiftDir(final int pioNum, final int smNum, final Type...
method setAuto (line 438) | private void setAuto(final int pioNum, final int smNum, final Type type,
method writeFifoAddress (line 458) | private void writeFifoAddress(final int pioNum, final int smNum,
method clear (line 469) | private void clear(final int pioNum, final int smNum) throws IOException
method clearFDebug (line 476) | private void clearFDebug(final int pioNum, final int smNum,
method dequeue (line 487) | private void dequeue(final int pioNum, final int smNum, final Type type)
method enqueue (line 498) | private void enqueue(final int pioNum, final int smNum, final Type type,
method setFJoin (line 510) | private void setFJoin(final int pioNum, final int smNum,
method execute (line 533) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Gpio.java
class Gpio (line 48) | public class Gpio extends Command
type Policy (line 50) | private enum Policy
method Policy (line 56) | private Policy(final String displayValue)
method getDisplayValue (line 61) | public String getDisplayValue()
method fromValue (line 66) | public static Policy fromValue(final int value)
method Gpio (line 167) | public Gpio(final PrintStream console, final SDK sdk)
method checkValidity (line 181) | @Override
method displayGpio (line 269) | private void displayGpio(final Integer optPioValue, final boolean before)
method initGpio (line 281) | private void initGpio(final int pioNum, final int gpioNum) throws IOEx...
method setGpio (line 289) | private void setGpio(final Integer pioNum, final int gpioNum)
method clearGpio (line 309) | private void clearGpio(final Integer pioNum, final int gpioNum)
method enableGpio (line 329) | private void enableGpio(final int pioNum, final int gpioNum)
method disableGpio (line 341) | private void disableGpio(final int pioNum, final int gpioNum)
method setOverride (line 353) | private void setOverride(final String target, final String policy, fin...
method displayOverride (line 365) | private void displayOverride(final String target, final int gpioNum,
method displayOrSetOverride (line 378) | private void displayOrSetOverride(final String target, final String po...
method execute (line 394) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Help.java
class Help (line 36) | public class Help extends Command
method Help (line 44) | public Help(final PrintStream console, final CommandRegistry commands)
method execute (line 57) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Interrupt.java
class Interrupt (line 41) | public class Interrupt extends Command
type FlagsGroup (line 111) | private enum FlagsGroup
method FlagsGroup (line 118) | private FlagsGroup(final int lsb, final String label)
method getLSB (line 124) | public int getLSB() { return lsb; }
method getLabel (line 126) | public String getLabel() { return label; }
method fromOptions (line 128) | public static FlagsGroup fromOptions(final boolean txNFull,
method Interrupt (line 140) | public Interrupt(final PrintStream console, final SDK sdk)
method checkValidity (line 153) | @Override
method int2bin (line 239) | private static String int2bin(final int d)
method displayInterrupts (line 244) | private void displayInterrupts(final int pioNum) throws IOException
method disable (line 303) | private void disable(final int pioNum, final int smNum,
method enable (line 317) | private void enable(final int pioNum, final int smNum,
method force (line 331) | private void force(final int pioNum, final int smNum,
method unforce (line 345) | private void unforce(final int pioNum, final int smNum,
method setValue (line 359) | private void setValue(final int pioNum, final int irqNum, final Boolea...
method execute (line 376) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Label.java
class Label (line 36) | public class Label extends Command
method Label (line 49) | public Label(final PrintStream console, final SDK sdk)
method checkValidity (line 59) | @Override
method execute (line 74) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Load.java
class Load (line 43) | public class Load extends Command
method Load (line 105) | public Load(final PrintStream console, final SDK sdk)
method checkValidity (line 116) | @Override
method loadHexDump (line 149) | private boolean loadHexDump(final int pioNum,
method execute (line 169) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/PinCtrl.java
class PinCtrl (line 39) | public class PinCtrl extends Command
method PinCtrl (line 90) | public PinCtrl(final PrintStream console, final SDK sdk)
method checkValidity (line 103) | @Override
method displayPinCtrl (line 169) | private void displayPinCtrl(final int pioNum, final int smNum,
method setAny (line 205) | private void setAny(final int pioNum, final int smNum,
method setSetCount (line 220) | private void setSetCount(final int pioNum, final int smNum,
method setSetBase (line 229) | private void setSetBase(final int pioNum, final int smNum,
method setOutCount (line 238) | private void setOutCount(final int pioNum, final int smNum,
method setOutBase (line 247) | private void setOutBase(final int pioNum, final int smNum,
method setInBase (line 256) | private void setInBase(final int pioNum, final int smNum,
method setJmpPin (line 265) | private void setJmpPin(final int pioNum, final int smNum,
method execute (line 278) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Quit.java
class Quit (line 34) | public class Quit extends Command
method Quit (line 39) | public Quit(final PrintStream console)
method execute (line 48) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Read.java
class Read (line 37) | public class Read extends Command
method Read (line 50) | public Read(final PrintStream console, final SDK sdk)
method checkValidity (line 60) | @Override
method execute (line 76) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Registers.java
class Registers (line 39) | public class Registers extends Command
method Registers (line 80) | public Registers(final PrintStream console, final SDK sdk)
method checkValidity (line 92) | @Override
method displayRegisters (line 110) | private void displayRegisters(final int pioNum, final int smNum)
method setEmuRegister (line 149) | private void setEmuRegister(final int pioNum, final int smNum,
method execute (line 167) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Reset.java
class Reset (line 37) | public class Reset extends Command
method Reset (line 44) | public Reset(final PrintStream console, final SDK sdk)
method execute (line 57) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Save.java
class Save (line 42) | public class Save extends Command
method Save (line 92) | public Save(final PrintStream console, final SDK sdk)
method checkValidity (line 104) | @Override
method writeProgram (line 132) | private void writeProgram(final int pioNum,
method execute (line 163) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Script.java
class Script (line 44) | public class Script extends Command
method Script (line 85) | public Script(final PrintStream console, final CommandRegistry commands)
method getReaderForResourcePath (line 96) | private LineNumberReader getReaderForResourcePath(final String resourc...
method checkValidity (line 103) | @Override
method listExampleScriptGroup (line 134) | private void listExampleScriptGroup(final Map<String, ScriptInfo>
method listExampleScripts (line 146) | private void listExampleScripts() throws IOException
method showScript (line 169) | private boolean showScript(final LineNumberReader in, final String scr...
method executeScript (line 182) | private int executeScript(final LineNumberReader in,
method executeScript (line 209) | private boolean executeScript(final LineNumberReader in,
method execute (line 224) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/SideSet.java
class SideSet (line 39) | public class SideSet extends Command
method SideSet (line 79) | public SideSet(final PrintStream console, final SDK sdk)
method checkValidity (line 90) | @Override
method displaySideSet (line 124) | private void displaySideSet(final int pioNum, final int smNum,
method setSideSetCount (line 151) | private void setSideSetCount(final int pioNum, final int smNum,
method setSideSetBase (line 177) | private void setSideSetBase(final int pioNum, final int smNum,
method setSideSetOpt (line 191) | private void setSideSetOpt(final int pioNum, final int smNum,
method setSideSetPinDirs (line 245) | private void setSideSetPinDirs(final int pioNum, final int smNum,
method execute (line 263) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Sm.java
class Sm (line 40) | public class Sm extends Command
method Sm (line 69) | public Sm(final PrintStream console, final SDK sdk)
method checkValidity (line 80) | @Override
method displaySmStatus (line 98) | private void displaySmStatus(final int pioNum, final int smNum)
method setEnableStatus (line 107) | private void setEnableStatus(final int pioNum, final int smNum,
method restart (line 117) | private void restart(final int pioNum, final int smNum) throws IOExcep...
method execute (line 128) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Trace.java
class Trace (line 45) | public class Trace extends Command
method Trace (line 96) | public Trace(final PrintStream console, final SDK sdk)
method checkValidity (line 108) | @Override
method displayPcValues (line 147) | private void displayPcValues(final int pioNumFirst,
method displayGpioValues (line 161) | private void displayGpioValues(final boolean before) throws IOException
method displayGpioValues (line 169) | private void displayGpioValues(final int pioNumFirst, final int pioNum...
method execute (line 181) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Unassemble.java
class Unassemble (line 42) | public class Unassemble extends Command
method Unassemble (line 89) | public Unassemble(final PrintStream console, final SDK sdk)
method checkValidity (line 100) | @Override
method execute (line 122) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Unload.java
class Unload (line 42) | public class Unload extends Command
method Unload (line 94) | public Unload(final PrintStream console, final SDK sdk)
method checkValidity (line 105) | @Override
method unloadHexDump (line 147) | private boolean unloadHexDump(final int pioNum,
method execute (line 164) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Version.java
class Version (line 37) | public class Version extends Command
method Version (line 45) | public Version(final PrintStream console, final SDK sdk,
method execute (line 60) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Wait.java
class Wait (line 41) | public class Wait extends Command
method Wait (line 66) | public Wait(final PrintStream console, final SDK sdk)
method checkValidity (line 77) | @Override
method execute (line 107) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Wrap.java
class Wrap (line 39) | public class Wrap extends Command
method Wrap (line 70) | public Wrap(final PrintStream console, final SDK sdk)
method checkValidity (line 81) | @Override
method displayWrap (line 120) | private void displayWrap(final int pioNum, final int smNum,
method setWrap (line 137) | private void setWrap(final int pioNum, final int smNum,
method setWrapTarget (line 149) | private void setWrapTarget(final int pioNum, final int smNum,
method execute (line 166) | @Override
FILE: java/org/soundpaint/rp2040pio/monitor/commands/Write.java
class Write (line 37) | public class Write extends Command
method Write (line 53) | public Write(final PrintStream console, final SDK sdk)
method checkValidity (line 63) | @Override
method execute (line 83) | @Override
FILE: java/org/soundpaint/rp2040pio/observer/ActionPanel.java
class ActionPanel (line 36) | public class ActionPanel<T extends GUIObserver> extends JToolBar
method ActionPanel (line 52) | public ActionPanel(final T observer)
method addAdditionalButtons (line 68) | protected void addAdditionalButtons(final T observer)
FILE: java/org/soundpaint/rp2040pio/observer/ConnectDialog.java
class ConnectDialog (line 43) | public class ConnectDialog extends JDialog
class ActionPanel (line 47) | private class ActionPanel extends Box
method ActionPanel (line 54) | public ActionPanel()
method ConnectDialog (line 79) | private ConnectDialog()
method ConnectDialog (line 84) | public ConnectDialog(final GUIObserver observer, final int defaultPort)
method makeVisible (line 96) | public void makeVisible()
method createConnectionDetails (line 102) | private Box createConnectionDetails()
method createServerPortLine (line 116) | private Box createServerPortLine()
method apply (line 131) | private boolean apply()
FILE: java/org/soundpaint/rp2040pio/observer/GUIObserver.java
class GUIObserver (line 52) | public abstract class GUIObserver extends JFrame
method GUIObserver (line 95) | private GUIObserver()
method GUIObserver (line 100) | public GUIObserver(final String appTitle, final String appFullName,
method createStatusLine (line 126) | private Box createStatusLine()
method setStatus (line 134) | protected void setStatus(final String status)
method setStatus (line 139) | protected void setStatus(final String status, final boolean alert)
method createActionPanel (line 150) | protected ActionPanel<? extends GUIObserver> createActionPanel()
method createMenuBar (line 160) | protected MenuBar<? extends GUIObserver> createMenuBar()
method getAppTitle (line 165) | public String getAppTitle()
method getAppFullName (line 170) | public String getAppFullName()
method getConsole (line 175) | public PrintStream getConsole()
method getSDK (line 180) | protected SDK getSDK()
method getActionPanel (line 185) | protected ActionPanel<? extends GUIObserver> getActionPanel()
method getPort (line 190) | protected int getPort()
method getAdditionalOptionDeclarations (line 199) | protected List<CmdOptions.OptionDeclaration<?>>
method collectOptionDeclarations (line 205) | private List<CmdOptions.OptionDeclaration<?>> collectOptionDeclarations()
method parseArgs (line 215) | private CmdOptions parseArgs(final String argv[])
method checkValidity (line 248) | protected void checkValidity(final CmdOptions options)
method checkValidity0 (line 253) | private void checkValidity0(final CmdOptions options)
method printAbout (line 269) | private void printAbout()
method createRemoteAddressSpace (line 277) | private RemoteAddressSpaceClient
method openConnectDialog (line 295) | public void openConnectDialog()
method connect (line 300) | public void connect() throws IOException
method connect (line 305) | public void connect(final int port) throws IOException
method connect (line 310) | public void connect(final String host, final int port) throws IOException
method close (line 324) | public void close()
method startUpdating (line 331) | protected void startUpdating()
method updateView (line 341) | protected abstract void updateView();
method updateLoop (line 343) | private void updateLoop()
FILE: java/org/soundpaint/rp2040pio/observer/LicenseView.java
class LicenseView (line 35) | public class LicenseView extends JOptionPane
method LicenseView (line 40) | public LicenseView(final PrintStream console)
method getTitle (line 66) | public String getTitle()
FILE: java/org/soundpaint/rp2040pio/observer/MenuBar.java
class MenuBar (line 40) | public class MenuBar<T extends GUIObserver> extends JMenuBar
method MenuBar (line 48) | private MenuBar()
method MenuBar (line 53) | public MenuBar(final T observer)
method createAboutDialog (line 66) | private JDialog createAboutDialog()
method addAdditionalMenus (line 86) | protected void addAdditionalMenus(final T observer)
method createFileMenu (line 90) | private JMenu createFileMenu()
method addAdditionalFileMenuItems (line 122) | protected void addAdditionalFileMenuItems(final JMenu fileMenue,
method createHelpMenu (line 127) | private JMenu createHelpMenu()
FILE: java/org/soundpaint/rp2040pio/observer/Observer.java
class Observer (line 40) | public class Observer
method Observer (line 75) | private Observer()
method Observer (line 80) | public Observer(final PrintStream console, final String[] argv)
method parseArgs (line 92) | private CmdOptions parseArgs(final String argv[])
method checkValidity (line 118) | private void checkValidity(final CmdOptions options)
method printAbout (line 139) | private void printAbout()
method connect (line 147) | private AddressSpace connect()
method run (line 163) | private void run()
method update (line 190) | private void update(final int address, final String label, final int v...
method main (line 196) | public static void main(final String argv[])
FILE: java/org/soundpaint/rp2040pio/observer/code/ActionPanel.java
class ActionPanel (line 34) | public class ActionPanel extends Box
method ActionPanel (line 38) | public ActionPanel(final CodeObserver codeObserver)
FILE: java/org/soundpaint/rp2040pio/observer/code/CodeObserver.java
class CodeObserver (line 35) | public class CodeObserver extends GUIObserver
method CodeObserver (line 44) | private CodeObserver(final PrintStream console, final String[] argv)
method updateView (line 54) | @Override
method main (line 60) | public static void main(final String argv[])
FILE: java/org/soundpaint/rp2040pio/observer/code/CodeSmViewPanel.java
class CodeSmViewPanel (line 50) | public class CodeSmViewPanel extends JPanel
class EmptySelectionModel (line 73) | private static class EmptySelectionModel extends DefaultListSelectionM...
method EmptySelectionModel (line 77) | private EmptySelectionModel()
method setAnchorSelectionIndex (line 82) | @Override
method setLeadAnchorNotificationEnabled (line 85) | @Override
method setLeadSelectionIndex (line 88) | @Override
method setSelectionInterval (line 91) | @Override
class Instruction (line 95) | private static class Instruction
class InstructionRenderer (line 102) | private static class InstructionRenderer extends DefaultListCellRenderer
method InstructionRenderer (line 106) | public InstructionRenderer()
method getListCellRendererComponent (line 111) | @Override
method CodeSmViewPanel (line 147) | private CodeSmViewPanel()
method CodeSmViewPanel (line 152) | public CodeSmViewPanel(final PrintStream console, final SDK sdk,
method isClkEnabled (line 177) | private boolean isClkEnabled() throws IOException
method getPC (line 186) | private int getPC() throws IOException
method getBreakPoints (line 195) | private int getBreakPoints() throws IOException
method getPendingDelay (line 203) | private int getPendingDelay() throws IOException
method updateInstructions (line 212) | private void updateInstructions() throws IOException
method updateForcedOrExecdInstructionDisplay (line 281) | private void updateForcedOrExecdInstructionDisplay(final PIOSDK pioSdk,
method updateDelayDisplay (line 326) | private void updateDelayDisplay(final PIOSDK.InstructionInfo instructi...
method checkedUpdateInstructions (line 348) | private void checkedUpdateInstructions()
method smChanged (line 359) | public void smChanged(final int pioNum, final int smNum)
FILE: java/org/soundpaint/rp2040pio/observer/code/CodeViewPanel.java
class CodeViewPanel (line 44) | public class CodeViewPanel extends JPanel
method CodeViewPanel (line 56) | private CodeViewPanel()
method CodeViewPanel (line 61) | public CodeViewPanel(final PrintStream console, final SDK sdk,
method addPioButtons (line 109) | private void addPioButtons(final Box pioSelection)
method addSmButtons (line 126) | private void addSmButtons(final Box smSelection)
method updateView (line 144) | public void updateView()
FILE: java/org/soundpaint/rp2040pio/observer/diagram/AbstractSignal.java
class AbstractSignal (line 31) | public abstract class AbstractSignal<T> implements Signal
class SignalRecord (line 33) | private static class SignalRecord<T>
method SignalRecord (line 38) | private SignalRecord()
method SignalRecord (line 43) | private SignalRecord(final T value, final int notChangedSince)
method toString (line 49) | @Override
method AbstractSignal (line 61) | private AbstractSignal()
method AbstractSignal (line 66) | public AbstractSignal(final SignalRendering.SignalParams signalParams)
method getSignalParams (line 74) | public SignalRendering.SignalParams getSignalParams()
method reset (line 79) | @Override
method getLabel (line 85) | @Override
method record (line 88) | protected void record(final T value, final boolean enforceChanged)
method size (line 105) | @Override
method next (line 111) | public boolean next(final int cycle)
method getValue (line 116) | public T getValue(final int index)
method getNotChangedSince (line 124) | @Override
method changed (line 131) | public boolean changed(final int cycle)
method getToolTipText (line 136) | @Override
method getSignalHeight (line 142) | abstract protected double getSignalHeight();
method createToolTip (line 144) | @Override
method setVisible (line 174) | @Override
method getVisible (line 180) | @Override
method toString (line 186) | @Override
FILE: java/org/soundpaint/rp2040pio/observer/diagram/ActionPanel.java
class ActionPanel (line 40) | public class ActionPanel
method ActionPanel (line 65) | public ActionPanel(final Diagram diagram)
method getCycles (line 70) | public int getCycles()
method addAdditionalButtons (line 75) | @Override
method addButtonLoad (line 97) | private void addButtonLoad(final Diagram diagram)
method addCyclesControl (line 105) | private void addCyclesControl()
method addButtonClear (line 125) | private void addButtonClear(final Diagram diagram)
method addZoomControl (line 133) | private void addZoomControl(final Diagram diagram)
FILE: java/org/soundpaint/rp2040pio/observer/diagram/ClockSignal.java
class ClockSignal (line 30) | public class ClockSignal extends AbstractSignal<Void>
method ClockSignal (line 34) | public ClockSignal()
method ClockSignal (line 39) | public ClockSignal(final String label)
method record (line 44) | @Override
method getSignalHeight (line 50) | @Override
method getDisplayHeight (line 53) | @Override
method drawUpArrow (line 59) | private void drawUpArrow(final Graphics2D g, final double x, final dou...
method paintCycle (line 67) | @Override
FILE: java/org/soundpaint/rp2040pio/observer/diagram/Constants.java
type Constants (line 30) | public interface Constants
FILE: java/org/soundpaint/rp2040pio/observer/diagram/CycleRuler.java
class CycleRuler (line 31) | public class CycleRuler extends AbstractSignal<Void>
method CycleRuler (line 36) | public CycleRuler()
method CycleRuler (line 41) | public CycleRuler(final String label)
method record (line 46) | @Override
method getSignalHeight (line 52) | @Override
method getDisplayHeight (line 55) | @Override
method getToolTipText (line 61) | @Override
method paintCycle (line 67) | @Override
FILE: java/org/soundpaint/rp2040pio/observer/diagram/Diagram.java
class Diagram (line 62) | public class Diagram extends GUIObserver
method Diagram (line 75) | private Diagram(final PrintStream console, final String[] argv)
method createView (line 92) | private JPanel createView()
method getModel (line 105) | public DiagramModel getModel()
method createActionPanel (line 110) | @Override
method createMenuBar (line 116) | @Override
method modelChanged (line 122) | private void modelChanged()
method updateView (line 128) | @Override
method showScriptDialog (line 134) | public void showScriptDialog()
method createInternalSignals (line 143) | private void createInternalSignals() throws IOException
method configureModel (line 177) | private void configureModel() throws IOException
method clear (line 220) | public void clear()
method applyCycles (line 226) | private void applyCycles(final int count) throws IOException
method applyCycles (line 234) | public void applyCycles()
method setZoom (line 248) | public void setZoom(final int zoom)
method getInternalSignalByAddress (line 253) | public RegisterIntSignal getInternalSignalByAddress(final int address)
method pullSignals (line 258) | public void pullSignals(final List<Signal> signals)
method pushSignals (line 264) | public void pushSignals(final List<Signal> signals)
method main (line 270) | public static void main(final String argv[])
FILE: java/org/soundpaint/rp2040pio/observer/diagram/DiagramModel.java
class DiagramModel (line 37) | public class DiagramModel implements Iterable<Signal>
method DiagramModel (line 46) | private DiagramModel()
method DiagramModel (line 51) | public DiagramModel(final PrintStream console, final SDK sdk)
method iterator (line 68) | public Iterator<Signal> iterator()
method getInternalSignals (line 73) | public Collection<RegisterIntSignal> getInternalSignals()
method addInternalSignal (line 78) | public Signal addInternalSignal(final Diagram diagram,
method getInternalSignalByAddress (line 88) | public RegisterIntSignal getInternalSignalByAddress(final int address)
method addSignal (line 93) | public Signal addSignal(final Signal signal)
method addSignal (line 102) | public Signal addSignal(final Diagram diagram,
method addSignal (line 116) | public Signal addSignal(final Diagram diagram,
method addSignal (line 124) | public Signal addSignal(final Diagram diagram,
method addSignal (line 136) | public Signal addSignal(final Diagram diagram, final String label,
method addSignal (line 143) | public Signal addSignal(final Diagram diagram,
method addSignal (line 150) | public Signal addSignal(final Diagram diagram,
method addSignal (line 160) | public Signal addSignal(final Diagram diagram, final int address)
method addSignal (line 166) | public Signal addSignal(final Diagram diagram, final int address,
method resetSignals (line 174) | public void resetSignals()
method appendRecordToSignals (line 185) | private void appendRecordToSignals() throws IOException
method checkForUpdate (line 198) | private void checkForUpdate() throws IOException
method applyCycles (line 217) | public void applyCycles(final int count) throws IOException
method getSignalSize (line 229) | public int getSignalSize()
method pullSignals (line 234) | public void pullSignals(final List<Signal> targetSignals)
method pushSignals (line 242) | public void pushSignals(final List<Signal> newSignals)
FILE: java/org/soundpaint/rp2040pio/observer/diagram/DiagramViewPanel.java
class DiagramViewPanel (line 44) | public class DiagramViewPanel extends JPanel implements Scrollable
method DiagramViewPanel (line 55) | private DiagramViewPanel()
method DiagramViewPanel (line 60) | public DiagramViewPanel(final DiagramModel model)
method getPreferredScrollableViewportSize (line 80) | @Override
method getScrollableBlockIncrement (line 86) | @Override
method getScrollableUnitIncrement (line 94) | @Override
method getScrollableTracksViewportWidth (line 102) | @Override
method getScrollableTracksViewportHeight (line 108) | @Override
method modelChanged (line 114) | public void modelChanged()
method ensureCycleIsVisible (line 121) | public void ensureCycleIsVisible(final int cycle)
method getRightMostVisibleCycle (line 139) | public double getRightMostVisibleCycle()
method getLeftMostVisibleCycle (line 147) | public double getLeftMostVisibleCycle()
method setLeftMostVisibleCycle (line 154) | private void setLeftMostVisibleCycle(final double cycle)
method setZoom (line 165) | public void setZoom(final int zoom)
method rebuildToolTips (line 179) | public void rebuildToolTips()
FILE: java/org/soundpaint/rp2040pio/observer/diagram/LegendPanel.java
class LegendPanel (line 38) | public class LegendPanel extends JComponent
method LegendPanel (line 49) | private LegendPanel()
method LegendPanel (line 54) | public LegendPanel(final DiagramModel model)
method updatePreferredHeight (line 64) | private void updatePreferredHeight()
method updatePreferredSize (line 75) | public void updatePreferredSize()
method getPreferredSize (line 81) | @Override
method paintLabel (line 87) | private void paintLabel(final Graphics2D g,
method paintLabels (line 98) | private void paintLabels(final Graphics2D g)
method paintComponent (line 111) | @Override
FILE: java/org/soundpaint/rp2040pio/observer/diagram/MenuBar.java
class MenuBar (line 36) | public class MenuBar
method MenuBar (line 45) | public MenuBar(final Diagram diagram, final SDK sdk)
method addAdditionalFileMenuItems (line 55) | @Override
method addAdditionalMenus (line 70) | @Override
method createEditMenu (line 77) | private JMenu createEditMenu()
method createEmulationMenu (line 94) | private JMenu createEmulationMenu()
FILE: java/org/soundpaint/rp2040pio/observer/diagram/RegisterBitSignal.java
class RegisterBitSignal (line 36) | public class RegisterBitSignal extends ValuedSignal<Bit>
method RegisterBitSignal (line 40) | public RegisterBitSignal(final SignalRendering.SignalParams signalParams)
method RegisterBitSignal (line 45) | public RegisterBitSignal(final SignalRendering.SignalParams signalParams,
method getBit (line 59) | public int getBit()
method getDisplayHeight (line 64) | @Override
method sampleValue (line 70) | @Override
method getToolTipText (line 80) | @Override
method paintCycle (line 87) | @Override
FILE: java/org/soundpaint/rp2040pio/observer/diagram/RegisterIntSignal.java
class RegisterIntSignal (line 38) | public class RegisterIntSignal extends ValuedSignal<Integer>
method RegisterIntSignal (line 42) | public RegisterIntSignal(final SignalRendering valueRendering,
method RegisterIntSignal (line 48) | public RegisterIntSignal(final SignalRendering valueRendering,
method getDisplayHeight (line 60) | @Override
method sampleValue (line 66) | @Override
method getToolTipText (line 77) | @Override
method getRenderedValue (line 91) | private String getRenderedValue(final int cycle)
method paintValuedLabel (line 104) | private static void paintValuedLabel(final Graphics2D g,
method paintCycle (line 123) | @Override
FILE: java/org/soundpaint/rp2040pio/observer/diagram/ScriptDialog.java
class ScriptDialog (line 38) | public class ScriptDialog extends JDialog
class ActionPanel (line 42) | private class ActionPanel extends Box
method ActionPanel (line 49) | public ActionPanel()
method ScriptDialog (line 71) | private ScriptDialog()
method ScriptDialog (line 76) | public ScriptDialog(final Frame owner, final PrintStream console)
FILE: java/org/soundpaint/rp2040pio/observer/diagram/ScriptSelectionPanel.java
class ScriptSelectionPanel (line 60) | public class ScriptSelectionPanel extends Box
method ScriptSelectionPanel (line 72) | public ScriptSelectionPanel(final PrintStream console)
method createScriptFileChooser (line 90) | private JFileChooser createScriptFileChooser()
method getExampleScripts (line 101) | private String[] getExampleScripts()
method getExampleScriptStream (line 118) | private InputStream getExampleScriptStream(final String scriptName)
method showExampleScript (line 135) | private void showExampleScript(final String scriptName)
method executeScript (line 158) | private void executeScript(final String scriptId,
method executeExampleScript (line 183) | private void executeExampleScript(final String scriptName)
method executeFileScript (line 190) | private void executeFileScript(final String scriptFilePath)
method execute (line 207) | public void execute()
class ExampleSelectionPanel (line 219) | private class ExampleSelectionPanel extends JPanel
method execute (line 225) | private void execute()
method ExampleSelectionPanel (line 230) | private ExampleSelectionPanel()
class FileSelectionPanel (line 264) | private class FileSelectionPanel extends JPanel
method execute (line 270) | private void execute()
method FileSelectionPanel (line 275) | private FileSelectionPanel()
FILE: java/org/soundpaint/rp2040pio/observer/diagram/Signal.java
type Signal (line 31) | public interface Signal
method reset (line 33) | void reset();
method getLabel (line 34) | String getLabel();
method getDisplayHeight (line 35) | double getDisplayHeight();
method size (line 36) | int size();
method getToolTipText (line 37) | String getToolTipText(final int cycle);
method record (line 38) | void record() throws IOException;
method getNotChangedSince (line 39) | int getNotChangedSince(final int cycle);
method setVisible (line 40) | void setVisible(final boolean visible);
method getVisible (line 41) | boolean getVisible();
method paintCycle (line 42) | void paintCycle(final Graphics2D g, final double zoom,
method createToolTip (line 46) | void createToolTip(final List<ToolTip> toolTips,
FILE: java/org/soundpaint/rp2040pio/observer/diagram/SignalDialog.java
class SignalDialog (line 40) | public class SignalDialog extends JDialog
type SignalConsumer (line 44) | @FunctionalInterface
method accept (line 47) | void accept(final Integer index, final Signal signal,
class ActionPanel (line 51) | private class ActionPanel extends Box
method ActionPanel (line 58) | public ActionPanel()
method SignalDialog (line 86) | private SignalDialog()
method SignalDialog (line 91) | public SignalDialog(final Diagram diagram, final SDK sdk,
method apply (line 106) | private boolean apply()
method open (line 121) | public void open(final int index, final Signal editSignal)
FILE: java/org/soundpaint/rp2040pio/observer/diagram/SignalFactory.java
class SignalFactory (line 37) | public class SignalFactory
method createRuler (line 39) | public static CycleRuler createRuler(final String label)
method createClockSignal (line 44) | public static ClockSignal createClockSignal(final String label)
method createSignalLabel (line 49) | private static String createSignalLabel(final SDK sdk, final String la...
method createSignalLabel (line 58) | private static String createSignalLabel(final SDK sdk, final String la...
method createSignalLabel (line 65) | private static String createSignalLabel(final SDK sdk, final String la...
method createFromRegister (line 77) | public static RegisterBitSignal
method createInternal (line 95) | public static RegisterIntSignal
method createFromRegister (line 106) | public static RegisterIntSignal
FILE: java/org/soundpaint/rp2040pio/observer/diagram/SignalFactoryPanel.java
class SignalFactoryPanel (line 35) | public class SignalFactoryPanel extends JPanel
method SignalFactoryPanel (line 44) | private SignalFactoryPanel()
method SignalFactoryPanel (line 49) | public SignalFactoryPanel(final Diagram diagram, final SDK sdk,
method createSignal (line 66) | public Signal createSignal(final Signal ignoreSignal)
method load (line 78) | public void load(final Signal signal)
FILE: java/org/soundpaint/rp2040pio/observer/diagram/SignalFilter.java
type SignalFilter (line 32) | public enum SignalFilter
type FilterFunction (line 54) | @FunctionalInterface
method acceptCurrentSignalValue (line 57) | boolean acceptCurrentSignalValue(final SDK sdk,
method SignalFilter (line 65) | private SignalFilter(final String description,
method acceptCurrentSignalValue (line 73) | public boolean acceptCurrentSignalValue(final SDK sdk,
method toString (line 80) | @Override
FILE: java/org/soundpaint/rp2040pio/observer/diagram/SignalLabelPanel.java
class SignalLabelPanel (line 37) | public class SignalLabelPanel extends JPanel
method SignalLabelPanel (line 45) | private SignalLabelPanel()
method SignalLabelPanel (line 50) | public SignalLabelPanel(final Diagram diagram)
method getText (line 74) | public String getText()
method setSuggestedText (line 79) | public void setSuggestedText(final String label)
method load (line 87) | public void load(final Signal signal)
FILE: java/org/soundpaint/rp2040pio/observer/diagram/SignalPanel.java
class SignalPanel (line 45) | public class SignalPanel extends JComponent implements Constants
method SignalPanel (line 62) | private SignalPanel()
method SignalPanel (line 67) | public SignalPanel(final DiagramModel model) throws IOException
method getToolTipText (line 81) | @Override
method updatePreferredHeight (line 94) | private void updatePreferredHeight()
method updatePreferredWidth (line 105) | private void updatePreferredWidth()
method updatePreferredSize (line 112) | public void updatePreferredSize()
method getPreferredSize (line 119) | @Override
method setZoom (line 125) | public void setZoom(final int zoom)
method getZoom (line 133) | public double getZoom()
method paintGridLine (line 138) | private void paintGridLine(final Graphics2D g, final double x,
method paintSignalsCycle (line 146) | private void paintSignalsCycle(final Graphics2D g,
method x2cycle (line 163) | public int x2cycle(final double x)
method cycle2x (line 168) | public double cycle2x(final double cycle)
method paintDiagram (line 173) | private void paintDiagram(final Graphics2D g,
method paintError (line 196) | private void paintError(final Graphics2D g,
method paintComponent (line 205) | @Override
method createToolTips (line 216) | private final void createToolTips(final int cycle,
method rebuildToolTips (line 231) | public void rebuildToolTips(final Rectangle clipBounds)
FILE: java/org/soundpaint/rp2040pio/observer/diagram/SignalRendering.java
type SignalRendering (line 36) | public enum SignalRendering implements Constants
type ValueRenderer (line 72) | @FunctionalInterface
method renderValue (line 75) | String renderValue(final SignalParams signalParams,
class SignalParams (line 80) | public static class SignalParams
method SignalParams (line 95) | private SignalParams()
method SignalParams (line 100) | public SignalParams(final String label)
method SignalParams (line 117) | public SignalParams(final Diagram diagram,
method getDiagram (line 146) | public Diagram getDiagram() { return diagram; }
method getSDK (line 148) | public SDK getSDK() { return sdk; }
method getLabel (line 150) | public String getLabel() { return label; }
method getAddress (line 152) | public int getAddress() { return address; }
method getMsb (line 154) | public int getMsb() { return msb; }
method getLsb (line 156) | public int getLsb() { return lsb; }
method getBitSize (line 158) | public int getBitSize() { return bitSize; }
method getDisplayFilters (line 160) | public List<SignalFilter> getDisplayFilters() { return displayFilter...
method getPioNum (line 162) | public int getPioNum() { return pioNum; }
method getSmNum (line 164) | public int getSmNum() { return smNum; }
method isSmInstr (line 166) | public boolean isSmInstr() { return isSmInstr; }
method getInstructionFromOpCode (line 176) | private PIOSDK.InstructionInfo getInstructionFromOpCode(final int cy...
method formatBinary (line 245) | private static String formatBinary(final int value, final int bitSize)
method formatUnsigned (line 251) | private static String formatUnsigned(final int value)
method formatSigned (line 256) | private static String formatSigned(final int value)
method formatHex (line 261) | private static String formatHex(final int value, final int bitSize)
method formatOctal (line 269) | private static String formatOctal(final int value, final int bitSize)
method formatShortMnemonic (line 278) | public static String formatShortMnemonic(final int cycle,
method formatFullMnemonic (line 286) | public static String formatFullMnemonic(final int cycle,
method SignalRendering (line 299) | private SignalRendering(final String label, final String description,
method getLifeLineRenderer (line 311) | public ValueRenderer getLifeLineRenderer() { return lifeLineRenderer; }
method getToolTipRenderer (line 313) | public ValueRenderer getToolTipRenderer() { return toolTipRenderer; }
method createSignal (line 315) | public Signal createSignal(final Diagram diagram,
method toString (line 337) | @Override
FILE: java/org/soundpaint/rp2040pio/observer/diagram/SignalTypePanel.java
class SignalTypePanel (line 43) | public class SignalTypePanel extends JPanel
method SignalTypePanel (line 60) | private SignalTypePanel()
method SignalTypePanel (line 65) | public SignalTypePanel(final Diagram diagram, final SDK sdk,
method createAndAddCycleRulerRadio (line 99) | private void createAndAddCycleRulerRadio()
method createAndAddClockRadio (line 111) | private void createAndAddClockRadio()
method createAndAddValuedRadio (line 122) | private void createAndAddValuedRadio()
method createAndAddValuePanels (line 133) | private void createAndAddValuePanels()
method createAndAddValueSourcePanel (line 146) | private void createAndAddValueSourcePanel(final JTabbedPane valueTabs)
method createAndAddValueRenderingPanel (line 154) | private void createAndAddValueRenderingPanel(final JTabbedPane valueTabs)
method createAndAddValueFilterPanel (line 162) | private void createAndAddValueFilterPanel(final JTabbedPane valueTabs)
method createAndAddSmSelectionPanel (line 171) | private void createAndAddSmSelectionPanel()
method selectCycleRuler (line 181) | private void selectCycleRuler()
method selectClock (line 187) | private void selectClock()
method selectValued (line 193) | private void selectValued()
method setValueEnabled (line 199) | private void setValueEnabled(final boolean enabled)
method updateSmSelectionEnableStatus (line 208) | private void updateSmSelectionEnableStatus()
method updateSmSelectionInfo (line 217) | private void updateSmSelectionInfo()
method createSignal (line 224) | public Signal createSignal(final String label)
method load (line 251) | public void load(final Signal signal)
FILE: java/org/soundpaint/rp2040pio/observer/diagram/SignalsDialog.java
class SignalsDialog (line 47) | public class SignalsDialog extends JDialog
class ActionPanel (line 51) | private class ActionPanel extends Box
method ActionPanel (line 59) | public ActionPanel()
method SignalsDialog (line 89) | private SignalsDialog()
method SignalsDialog (line 94) | public SignalsDialog(final Diagram diagram, final SDK sdk)
method applyChanges (line 111) | private void applyChanges()
method open (line 116) | public void open()
FILE: java/org/soundpaint/rp2040pio/observer/diagram/SignalsPropertiesPanel.java
class SignalsPropertiesPanel (line 43) | public class SignalsPropertiesPanel extends Box
class IndexedButton (line 47) | private static class IndexedButton extends JButton
method IndexedButton (line 53) | public IndexedButton(final String text, final int index)
method getIndex (line 59) | public int getIndex() { return index; }
method SignalsPropertiesPanel (line 71) | public SignalsPropertiesPanel(final Diagram diagram, final SDK sdk)
method createActions (line 89) | private JPopupMenu createActions()
method addSignal (line 98) | private void addSignal()
method editSignal (line 105) | private void editSignal()
method deleteSignal (line 112) | private void deleteSignal()
method applyChanges (line 121) | public void applyChanges()
method swapSignals (line 131) | private void swapSignals(final int index)
method addOrSetSignal (line 148) | private void addOrSetSignal(final int index, final Signal signal,
method checkLabel (line 160) | private String checkLabel(final String label, final Signal ignoreSignal)
method rebuildGUI (line 178) | private void rebuildGUI()
method rebuildSignals (line 227) | private void rebuildSignals()
method popupActions (line 268) | private void popupActions(final JButton btActions)
method rebuild (line 273) | public void rebuild()
FILE: java/org/soundpaint/rp2040pio/observer/diagram/SmSelectionPanel.java
class SmSelectionPanel (line 42) | public class SmSelectionPanel extends JPanel
method SmSelectionPanel (line 62) | private SmSelectionPanel()
method SmSelectionPanel (line 67) | public SmSelectionPanel(final Diagram diagram, final SDK sdk)
method addPioSelection (line 93) | private void addPioSelection()
method addSmSelection (line 132) | private void addSmSelection()
method getPioNum (line 171) | public int getPioNum(final int sourcePioNum)
method getSmNum (line 177) | public int getSmNum(final int sourceSmNum)
method setButtonsEnabled (line 183) | private void setButtonsEnabled(final ButtonGroup buttons,
method updateSourceInfo (line 192) | public void updateSourceInfo(final int sourcePioNum, final int sourceS...
method setEnabled (line 202) | @Override
method selectPio (line 218) | private void selectPio(final int selectedPio)
method selectSm (line 229) | private void selectSm(final int selectedSm)
method load (line 240) | public void load(final ValuedSignal<?> signal,
FILE: java/org/soundpaint/rp2040pio/observer/diagram/TelemetryPanel.java
class TelemetryPanel (line 35) | public class TelemetryPanel extends JPanel
method TelemetryPanel (line 44) | private TelemetryPanel()
method TelemetryPanel (line 49) | public TelemetryPanel(final DiagramModel model,
method modelChanged (line 70) | public void modelChanged()
FILE: java/org/soundpaint/rp2040pio/observer/diagram/ToolTip.java
class ToolTip (line 27) | public class ToolTip
method ToolTip (line 35) | private ToolTip()
method ToolTip (line 40) | public ToolTip(final int x0, final int y0, final int x1, final int y1,
FILE: java/org/soundpaint/rp2040pio/observer/diagram/ValueFilterPanel.java
class ValueFilterPanel (line 42) | public class ValueFilterPanel extends JPanel
method ValueFilterPanel (line 52) | private ValueFilterPanel()
method ValueFilterPanel (line 57) | public ValueFilterPanel(final Diagram diagram, final SDK sdk,
method addNoDelayFilter (line 81) | private void addNoDelayFilter()
method addClkEnabledFilter (line 91) | private void addClkEnabledFilter()
method isSmSelectionRelevant (line 101) | public boolean isSmSelectionRelevant()
method createFilters (line 112) | public List<SignalFilter> createFilters()
method createFilters (line 119) | public static List<SignalFilter> createFilters(final boolean createNoD...
method setEnabled (line 132) | @Override
method load (line 140) | public void load(final ValuedSignal<?> signal)
FILE: java/org/soundpaint/rp2040pio/observer/diagram/ValueRenderingPanel.java
class ValueRenderingPanel (line 42) | public class ValueRenderingPanel extends JPanel
method ValueRenderingPanel (line 52) | private ValueRenderingPanel()
method ValueRenderingPanel (line 57) | public ValueRenderingPanel(final Diagram diagram, final SDK sdk,
method createAndAddRendering (line 75) | private void createAndAddRendering(final SignalRendering rendering)
method renderingSelected (line 93) | private void renderingSelected(final SignalRendering rendering)
method isSmSelectionRelevant (line 99) | public boolean isSmSelectionRelevant()
method createSignal (line 104) | public Signal createSignal(final String label,
method setEnabled (line 134) | @Override
method selectRendering (line 144) | private void selectRendering(final SignalRendering signalRendering)
method load (line 161) | public void load(final ValuedSignal<?> signal)
FILE: java/org/soundpaint/rp2040pio/observer/diagram/ValueSourcePanel.java
class ValueSourcePanel (line 65) | public class ValueSourcePanel extends JPanel
class BitsRangeCellRenderer (line 80) | private static class BitsRangeCellRenderer extends DefaultTableCellRen...
method setValue (line 84) | @Override
type RegistersSet (line 91) | private enum RegistersSet
method fromAddress (line 129) | private static RegistersSet fromAddress(final int address)
method RegistersSet (line 147) | private RegistersSet(final String id,
method toString (line 164) | @Override
method ValueSourcePanel (line 184) | private ValueSourcePanel()
method ValueSourcePanel (line 189) | public ValueSourcePanel(final Diagram diagram, final SDK sdk,
method initRegistersForSelectedRegisterSet (line 228) | public void initRegistersForSelectedRegisterSet()
method setupTableColumnRenderers (line 233) | private void setupTableColumnRenderers()
method createTableModel (line 240) | private DefaultTableModel createTableModel()
method addRegistersSetSelection (line 257) | private JComboBox<RegistersSet> addRegistersSetSelection()
method addRegisterSelection (line 288) | private JComboBox<RegistersDocs<? extends Enum<?>>> addRegisterSelecti...
method addBitsSelection (line 320) | private void addBitsSelection()
method registersSetSelected (line 336) | private void registersSetSelected(final RegistersSet registersSet)
method getSuggestedBitsRange (line 349) | private String getSuggestedBitsRange()
method getSuggestedBitsLabel (line 369) | private String getSuggestedBitsLabel()
method getSelectedRegister (line 410) | private RegistersDocs<? extends Enum<?>> getSelectedRegister()
method getSuggestedLabel (line 418) | private String getSuggestedLabel(final String suggestedBitsLabel)
method chooseBitsInfosRow (line 428) | private int chooseBitsInfosRow()
method updateSuggestedLabel (line 439) | public void updateSuggestedLabel()
method sourceChanged (line 454) | private void sourceChanged()
method ensureCellIsVisible (line 460) | private void ensureCellIsVisible(final int row, final int column)
method registerSelected (line 471) | private void registerSelected(final RegistersDocs<? extends Enum<?>> r...
method getSelectedRegisterSetPio (line 499) | public int getSelectedRegisterSetPio()
method getSelectedRegisterSm (line 508) | public int getSelectedRegisterSm()
method getSelectedRegisterAddress (line 514) | public int getSelectedRegisterAddress()
method getSelectedRegisterMsb (line 521) | public int getSelectedRegisterMsb()
method getSelectedRegisterLsb (line 530) | public int getSelectedRegisterLsb()
method setEnabled (line 540) | @Override
method selectionChanged (line 558) | private void selectionChanged(final ListSelectionEvent selection)
method resetInputs (line 565) | private void resetInputs()
method selectRegisterByAddress (line 571) | private void selectRegisterByAddress(final int address)
method selectBitsRange (line 598) | private void selectBitsRange(final int msb, final int lsb)
method load (line 620) | public void load(final ValuedSignal<?> signal)
FILE: java/org/soundpaint/rp2040pio/observer/diagram/ValuedSignal.java
class ValuedSignal (line 37) | public abstract class ValuedSignal<T> extends AbstractSignal<T>
method ValuedSignal (line 60) | protected ValuedSignal(final SignalRendering valueRendering,
method getValueRendering (line 72) | public SignalRendering getValueRendering()
method getSignalHeight (line 77) | @Override
method sampleValue (line 80) | abstract protected T sampleValue() throws IOException;
method passesAllFilters (line 82) | private boolean passesAllFilters(final List<SignalFilter> displayFilters)
method record (line 96) | @Override
FILE: java/org/soundpaint/rp2040pio/observer/fifo/ActionPanel.java
class ActionPanel (line 34) | public class ActionPanel extends Box
method ActionPanel (line 38) | public ActionPanel(final FifoObserver fifoObserver)
FILE: java/org/soundpaint/rp2040pio/observer/fifo/FifoEntriesViewPanel.java
class FifoEntriesViewPanel (line 52) | public class FifoEntriesViewPanel extends JPanel
type ColorScheme (line 79) | private static enum ColorScheme
type StateColor (line 84) | private static enum StateColor
method StateColor (line 96) | private StateColor(final Color fgTX, final Color bgTX,
method getFgColor (line 105) | public Color getFgColor(final ColorScheme colorScheme)
method getBgColor (line 110) | public Color getBgColor(final ColorScheme colorScheme)
method FifoEntriesViewPanel (line 143) | private FifoEntriesViewPanel()
method FifoEntriesViewPanel (line 148) | public FifoEntriesViewPanel(final PrintStream console, final SDK sdk,
method createTopLine (line 190) | private Box createTopLine()
method createEntriesLine (line 199) | private Box createEntriesLine()
method createBottomLine (line 224) | private Box createBottomLine()
method createFDebugLine (line 233) | private Box createFDebugLine()
method createFDebugLineCheck (line 245) | private void createFDebugLineCheck(final Box hBox, final String flagName,
method createShiftRegisters (line 256) | private Box createShiftRegisters()
method createShiftRegister (line 272) | private Box createShiftRegister(final String registerName,
method createAutoInfo (line 287) | private Box createAutoInfo(final String actionName,
method createShiftRegisterContents (line 300) | private Box createShiftRegisterContents(final JLabel lbLeftHandArrow,
method getShiftCtrl (line 317) | private int getShiftCtrl() throws IOException
method getSMFReadPtr (line 324) | private int getSMFReadPtr() throws IOException
method getSMFLevel (line 332) | private int getSMFLevel() throws IOException
method getSMFStat (line 340) | private int getSMFStat() throws IOException
method updateFifoContents (line 348) | private void updateFifoContents() throws IOException
method updateEntries (line 358) | private void updateEntries(final int entryOffs, final int entryCount,
method updateEntries (line 389) | private void updateEntries(final int shiftCtrl) throws IOException
method getFDebug (line 432) | private boolean getFDebug(final int smNum, final int fDebugValue,
method updateFDebugStatus (line 438) | private void updateFDebugStatus() throws IOException
method unsetShiftReg (line 461) | private void unsetShiftReg(final JLabel lbLeftHandArrow,
method updateShiftReg (line 476) | private void updateShiftReg(final BiFunction<Integer, Integer, Boolean>
method getThreshold (line 553) | private int getThreshold(final int shiftCtrl, final int bits, final in...
method updateShiftRegs (line 559) | private void updateShiftRegs(final int shiftCtrl) throws IOException
method checkedUpdate (line 589) | private void checkedUpdate()
method smChanged (line 605) | public void smChanged(final int pioNum, final int smNum)
method setAutoScroll (line 615) | public void setAutoScroll(final boolean autoScroll)
FILE: java/org/soundpaint/rp2040pio/observer/fifo/FifoObserver.java
class FifoObserver (line 35) | public class FifoObserver extends GUIObserver
method FifoObserver (line 44) | private FifoObserver(final PrintStream console, final String[] argv)
method updateView (line 54) | @Override
method main (line 60) | public static void main(final String argv[])
FILE: java/org/soundpaint/rp2040pio/observer/fifo/FifoViewPanel.java
class FifoViewPanel (line 43) | public class FifoViewPanel extends JPanel
method FifoViewPanel (line 58) | private FifoViewPanel()
method FifoViewPanel (line 63) | public FifoViewPanel(final PrintStream console, final SDK sdk,
method addPioButtons (line 115) | private void addPioButtons(final Box pioSelection)
method addSmButtons (line 132) | private void addSmButtons(final Box smSelection)
method updateView (line 150) | public void updateView()
FILE: java/org/soundpaint/rp2040pio/observer/gpio/GPIOArrayPanel.java
class GPIOArrayPanel (line 44) | public class GPIOArrayPanel extends JPanel
method GPIOArrayPanel (line 53) | private GPIOArrayPanel()
method GPIOArrayPanel (line 58) | public GPIOArrayPanel(final PrintStream console, final SDK sdk)
method addOverrideButtons (line 93) | private void addOverrideButtons(final Box overrideSelection)
method updateStatus (line 109) | public void updateStatus() throws IOException
method checkedUpdate (line 120) | public void checkedUpdate()
method overrideChanged (line 131) | private void overrideChanged(final GPIOSDK.Override override)
FILE: java/org/soundpaint/rp2040pio/observer/gpio/GPIOObserver.java
class GPIOObserver (line 35) | public class GPIOObserver extends GUIObserver
method GPIOObserver (line 44) | public GPIOObserver(final PrintStream console, final String[] argv)
method updateView (line 54) | @Override
method main (line 60) | public static void main(final String argv[])
FILE: java/org/soundpaint/rp2040pio/observer/gpio/GPIOPanel.java
class GPIOPanel (line 43) | public class GPIOPanel extends JPanel
method GPIOPanel (line 52) | private GPIOPanel()
method GPIOPanel (line 57) | public GPIOPanel(final PrintStream console, final SDK sdk, final int g...
method updateStatus (line 81) | public void updateStatus(final Direction direction, final Bit level)
method markAsUnknown (line 92) | public void markAsUnknown()
FILE: java/org/soundpaint/rp2040pio/observer/gpio/GPIOViewPanel.java
class GPIOViewPanel (line 38) | public class GPIOViewPanel extends JPanel
method GPIOViewPanel (line 68) | private GPIOViewPanel()
method GPIOViewPanel (line 73) | public GPIOViewPanel(final PrintStream console, final SDK sdk)
method updateView (line 93) | public void updateView()
FILE: java/org/soundpaint/rp2040pio/observer/gpio/PIOGPIOArrayPanel.java
class PIOGPIOArrayPanel (line 44) | public class PIOGPIOArrayPanel extends JPanel
method PIOGPIOArrayPanel (line 53) | private PIOGPIOArrayPanel()
method PIOGPIOArrayPanel (line 58) | public PIOGPIOArrayPanel(final PrintStream console, final SDK sdk)
method addPioButtons (line 93) | private void addPioButtons(final Box pioSelection)
method updateStatus (line 107) | public void updateStatus() throws IOException
method checkedUpdate (line 118) | public void checkedUpdate()
method pioChanged (line 129) | private void pioChanged(final int pioNum)
FILE: java/org/soundpaint/rp2040pio/observer/gpio/PIOGPIOPanel.java
class PIOGPIOPanel (line 38) | public class PIOGPIOPanel extends JPanel
method PIOGPIOPanel (line 46) | private PIOGPIOPanel()
method PIOGPIOPanel (line 51) | public PIOGPIOPanel(final PrintStream console, final int gpioNum)
method updateStatus (line 73) | public void updateStatus(final Direction direction, final Bit level)
method markAsUnknown (line 84) | public void markAsUnknown()
FILE: java/org/soundpaint/rp2040pio/sdk/GPIOSDK.java
class GPIOSDK (line 40) | public class GPIOSDK implements Constants
type Override (line 42) | public enum Override
method GPIOSDK (line 49) | public GPIOSDK(final AddressSpace memory)
method setFunction (line 57) | public void setFunction(final int gpioNum, final GPIO_Function fn)
method getDirectionFromStatus (line 77) | private static Direction getDirectionFromStatus(final int statusValue,
method getOutputLevelFromStatus (line 91) | private static Bit getOutputLevelFromStatus(final int statusValue,
method getInputLevelFromStatus (line 105) | private static Bit getInputLevelFromStatus(final int statusValue,
method getInputLevel (line 119) | public Bit getInputLevel(final int gpioNum, final Override override)
method getPinStates (line 130) | public PinState[] getPinStates(final Override override) throws IOExcep...
FILE: java/org/soundpaint/rp2040pio/sdk/PIOSDK.java
class PIOSDK (line 43) | public class PIOSDK implements Constants
method PIOSDK (line 51) | private PIOSDK()
method PIOSDK (line 56) | public PIOSDK(final int pioNum, final AddressSpace memory,
class InstructionInfo (line 75) | public static class InstructionInfo
method InstructionInfo (line 83) | private InstructionInfo()
method InstructionInfo (line 94) | public InstructionInfo(final int origin,
method InstructionInfo (line 117) | public InstructionInfo(final Exception e)
method getOrigin (line 126) | public int getOrigin() { return origin; }
method getMnemnonic (line 128) | public String getMnemnonic() { return mnemonic; }
method getFullStatement (line 130) | public String getFullStatement() { return fullStatement; }
method isDelayCycle (line 132) | public boolean isDelayCycle() { return isDelayCycle; }
method getDelay (line 134) | public int getDelay() { return delay; }
method equals (line 136) | @Override
method hashCode (line 145) | @Override
method getToolTipText (line 151) | public String getToolTipText()
method toString (line 156) | @Override
method getInstructionFromOpCode (line 163) | public InstructionInfo
method getInstructionFromOpCode (line 193) | public static synchronized InstructionInfo
method decodeInstrOrigin (line 224) | public static int decodeInstrOrigin(final int encoded)
method getInstrOrigin (line 233) | private int getInstrOrigin(final int smNum) throws IOException
method renderOrigin (line 242) | public static String renderOrigin(final int origin)
method getCurrentInstruction (line 259) | public InstructionInfo getCurrentInstruction(final int smNum,
method getMemoryInstruction (line 293) | public InstructionInfo getMemoryInstruction(final int smNum,
method getDefaultSmConfig (line 315) | public static SMConfig getDefaultSmConfig()
method smSetOutPins (line 320) | public void smSetOutPins(final int smNum,
method smSetSetPins (line 336) | public void smSetSetPins(final int smNum,
method smSetInPins (line 357) | public void smSetInPins(final int smNum, final int inBase) throws IOEx...
method smSetSideSetPins (line 367) | public void smSetSideSetPins(final int smNum, final int sideSetBase)
method reset (line 394) | public void reset()
method smSetConfig (line 400) | public void smSetConfig(final int smNum, final SMConfig smConfig)
method getIndex (line 425) | public int getIndex()
method gpioInit (line 430) | public void gpioInit(final int pin) throws IOException
method getDREQ (line 444) | public int getDREQ(final int smNum, final boolean isTX)
method allocateMemory (line 462) | private int allocateMemory(final int allocationMask, final int origin,
method getMemoryAllocation (line 492) | public int getMemoryAllocation() { return memoryAllocation; }
method canAddProgram (line 494) | public boolean canAddProgram(final Program program)
method canAddProgramAtOffset (line 504) | public boolean canAddProgramAtOffset(final Program program, final int ...
method writeProgram (line 523) | private void writeProgram(final Program program, final int addressOffset)
method addProgram (line 545) | public int addProgram(final String resourceId, final BufferedReader re...
method addProgram (line 551) | public int addProgram(final Program program) throws IOException
method addProgramAtOffset (line 563) | public int addProgramAtOffset(final String resourceId,
method addProgramAtOffset (line 570) | public int addProgramAtOffset(final Program program, final int offset)
method removeProgram (line 599) | public void removeProgram(final String resourceId,
method removeProgram (line 606) | public void removeProgram(final Program program, final int loadedOffset)
method clearInstructionMemory (line 651) | public void clearInstructionMemory() throws IOException
method smInit (line 666) | public void smInit(final int smNum, final int initialPC,
method smGetEnabled (line 689) | public boolean smGetEnabled(final int smNum)
method smSetEnabled (line 698) | public void smSetEnabled(final int smNum, final boolean enabled)
method setSmMaskEnabled (line 705) | public void setSmMaskEnabled(final int mask, final boolean enabled)
method smRestart (line 712) | public void smRestart(final int smNum) throws IOException
method restartSmMask (line 718) | public void restartSmMask(final int mask) throws IOException
method smClkDivRestart (line 733) | public void smClkDivRestart(final int smNum) throws IOException
method clkDivRestartSmMask (line 739) | public void clkDivRestartSmMask(final int mask) throws IOException
method enableSmMaskInSync (line 754) | public void enableSmMaskInSync(final int mask) throws IOException
method smGetPC (line 771) | public int smGetPC(final int smNum) throws IOException
method smExec (line 779) | public void smExec(final int smNum, final short instr) throws IOException
method smIsExecStalled (line 787) | public boolean smIsExecStalled(final int smNum) throws IOException
method smExecWaitBlocking (line 796) | public void smExecWaitBlocking(final int smNum, final short instr)
method smSetWrap (line 804) | public void smSetWrap(final int smNum, final int wrapTarget,
method smPut (line 820) | public void smPut(final int smNum, final int data) throws IOException
method smGet (line 826) | public int smGet(final int smNum) throws IOException
method smIsRXFIFOFull (line 832) | public boolean smIsRXFIFOFull(final int smNum) throws IOException
method smIsRXFIFOEmpty (line 841) | public boolean smIsRXFIFOEmpty(final int smNum) throws IOException
method smGetRXFIFOLevel (line 850) | public int smGetRXFIFOLevel(final int smNum) throws IOException
method smIsTXFIFOFull (line 862) | public boolean smIsTXFIFOFull(final int smNum) throws IOException
method smIsTXFIFOEmpty (line 871) | public boolean smIsTXFIFOEmpty(final int smNum) throws IOException
method smGetTXFIFOLevel (line 880) | public int smGetTXFIFOLevel(final int smNum) throws IOException
method smPutBlocking (line 892) | public void smPutBlocking(final int smNum, final int data) throws IOEx...
method smGetBlocking (line 901) | public int smGetBlocking(final int smNum) throws IOException
method smDrainTXFIFO (line 910) | public void smDrainTXFIFO(final int smNum) throws IOException
method smSetClkDiv (line 924) | public void smSetClkDiv(final int smNum, final float div) throws IOExc...
method smSetClkDivIntFrac (line 942) | public void smSetClkDivIntFrac(final int smNum,
method smClearFIFOs (line 970) | public void smClearFIFOs(final int smNum) throws IOException
method smSetPins (line 983) | public void smSetPins(final int smNum, int pins) throws IOException
method smSetPinsWithMask (line 1008) | public void smSetPinsWithMask(final int smNum, final int pinValues,
method smSetPinDirsWithMask (line 1032) | public void smSetPinDirsWithMask(final int smNum, final int pinDirs,
method smSetConsecutivePinDirs (line 1056) | public void smSetConsecutivePinDirs(final int smNum,
method smClaim (line 1091) | public void smClaim(final int smNum)
method listMaskBits (line 1097) | private String listMaskBits(final int mask) {
method claimSmMask (line 1108) | public void claimSmMask(final int mask)
method smUnclaim (line 1129) | public void smUnclaim(final int smNum)
method claimUnusedSm (line 1138) | public int claimUnusedSm(final boolean required)
method getPinStates (line 1159) | public PinState[] getPinStates() throws IOException
FILE: java/org/soundpaint/rp2040pio/sdk/Panic.java
class Panic (line 27) | public class Panic extends RuntimeException
method Panic (line 32) | public Panic(final String message)
method Panic (line 37) | public Panic(final String message, final Throwable cause)
method Panic (line 42) | public Panic(final String message, final Throwable cause,
method Panic (line 48) | public Panic(final Throwable cause)
method getMessage (line 53) | @Override
FILE: java/org/soundpaint/rp2040pio/sdk/Program.java
class Program (line 36) | public class Program implements Constants
method Program (line 48) | private Program()
method Program (line 65) | public Program(final String id, final int origin, final int wrap,
method checkId (line 130) | private void checkId(final String id)
method getId (line 141) | public String getId()
method getLength (line 146) | public int getLength()
method getInstruction (line 151) | public short getInstruction(final int index)
method getOrigin (line 168) | public int getOrigin()
method getAllocationMask (line 177) | public int getAllocationMask()
method getDefaultConfig (line 182) | public SMConfig getDefaultConfig(final int offset)
method toString (line 193) | @Override
FILE: java/org/soundpaint/rp2040pio/sdk/ProgramParser.java
class ProgramParser (line 36) | public class ProgramParser implements Constants
method ProgramParser (line 66) | private ProgramParser()
method ProgramParser (line 71) | private ProgramParser(final String resourceId, final BufferedReader re...
method parseException (line 93) | private ParseException parseException(final String message)
method parseException (line 98) | private ParseException parseException(final String message,
method parseDecimalInt (line 104) | private int parseDecimalInt(final String decInt) throws ParseException
method parseInstruction (line 113) | private void parseInstruction(final String word,
method checkProgramId (line 137) | private void checkProgramId(final String id) throws ParseException
method parseProgramDrct (line 150) | private void parseProgramDrct(final String unparsed) throws ParseExcep...
method parseOriginDrct (line 164) | private void parseOriginDrct(final String unparsed) throws ParseException
method parseWrapDrct (line 181) | private void parseWrapDrct(final String unparsed) throws ParseException
method parseWrapTargetDrct (line 198) | private void parseWrapTargetDrct(final String unparsed) throws ParseEx...
method parseSideSetArg (line 217) | private void parseSideSetArg(final String arg) throws ParseException
method parseSideSetDrct (line 235) | private void parseSideSetDrct(final String unparsed) throws ParseExcep...
method parseDirective (line 275) | private void parseDirective(final String directive) throws ParseException
method parseComment (line 295) | private void parseComment(final String comment) throws ParseException
method parse (line 305) | private Program parse() throws IOException
method parse (line 346) | public static Program parse(final String resourceId,
FILE: java/org/soundpaint/rp2040pio/sdk/SDK.java
class SDK (line 34) | public class SDK implements Constants
method SDK (line 50) | private SDK()
method SDK (line 55) | public SDK(final PrintStream console, final AddressSpace memory)
method getConsole (line 70) | public PrintStream getConsole() { return console; }
method getGPIOSDK (line 71) | public GPIOSDK getGPIOSDK() { return gpioSdk; }
method getPIO0SDK (line 72) | public PIOSDK getPIO0SDK() { return pio0Sdk; }
method getPIO1SDK (line 73) | public PIOSDK getPIO1SDK() { return pio1Sdk; }
method readAddress (line 75) | public int readAddress(final int address) throws IOException
method readAddress (line 80) | public int readAddress(final int address, final int msb, final int lsb)
method writeAddress (line 91) | public void writeAddress(final int address, final int value)
method writeAddressMasked (line 97) | public void writeAddressMasked(final int address, final int bits,
method wait (line 104) | public int wait(final int address, final int expectedValue)
method wait (line 110) | public int wait(final int address, final int expectedValue, final int ...
method wait (line 116) | public int wait(final int address, final int expectedValue, final int ...
method wait (line 123) | public int wait(final int address, final int expectedValue, final int ...
method awaitNextCycle (line 132) | public void awaitNextCycle() throws IOException
method hwSetBits (line 137) | public void hwSetBits(final int address, final int mask) throws IOExce...
method hwClearBits (line 142) | public void hwClearBits(final int address, final int mask) throws IOEx...
method hwXorBits (line 147) | public void hwXorBits(final int address, final int mask) throws IOExce...
method hwWriteMasked (line 152) | public void hwWriteMasked(final int address, final int values,
method getEmulatorInfo (line 161) | public String getEmulatorInfo() throws IOException
method providesAddress (line 166) | public boolean providesAddress(final int address) throws IOException
method getRegisterSetId (line 171) | public String getRegisterSetId(final int address) throws IOException
method getLabelForAddress (line 176) | public String getLabelForAddress(final int address) throws IOException
method getFullLabelForAddress (line 181) | public String getFullLabelForAddress(final int address) throws IOExcep...
method reset (line 188) | public void reset() throws IOException
method triggerCyclePhaseX (line 199) | private void triggerCyclePhaseX(final PicoEmuRegisters.Regs trigger,
method triggerCyclePhase0 (line 212) | public void triggerCyclePhase0(final boolean await) throws IOException
method triggerCyclePhase1 (line 217) | public void triggerCyclePhase1(final boolean await) throws IOException
method getWallClock (line 222) | public long getWallClock() throws IOException
FILE: java/org/soundpaint/rp2040pio/sdk/SMConfig.java
class SMConfig (line 34) | public class SMConfig implements Constants
type FIFOJoin (line 36) | public enum FIFOJoin {
type MoveStatusType (line 40) | public enum MoveStatusType {
method SMConfig (line 49) | private SMConfig()
method reset (line 54) | private void reset()
method getClkDiv (line 66) | public int getClkDiv() { return clkDiv; }
method getExecCtrl (line 67) | public int getExecCtrl() { return execCtrl; }
method getShiftCtrl (line 68) | public int getShiftCtrl() { return shiftCtrl; }
method getPinCtrl (line 69) | public int getPinCtrl() { return pinCtrl; }
method setOutPins (line 73) | public void setOutPins(final int outBase, final int outCount)
method setSetPins (line 94) | public void setSetPins(final int setBase, final int setCount)
method setInPins (line 114) | public void setInPins(final int inBase)
method setSideSetPins (line 127) | public void setSideSetPins(final int sideSetBase)
method setSideSet (line 141) | public void setSideSet(final int bitCount,
method setClkDiv (line 157) | public void setClkDiv(final float div)
method setClkDivIntFrac (line 170) | public void setClkDivIntFrac(final int divInt, final int divFrac)
method setWrap (line 189) | public void setWrap(final int wrapTarget, final int wrap)
method setJmpPin (line 211) | public void setJmpPin(final int pin)
method setInShift (line 224) | public void setInShift(final boolean shiftRight,
method setOutShift (line 244) | public void setOutShift(final boolean shiftRight,
method setFIFOJoin (line 264) | public void setFIFOJoin(final FIFOJoin join)
method setOutSpecial (line 270) | public void setOutSpecial(final boolean sticky, final boolean hasEnabl...
method setMoveStatus (line 290) | public void setMoveStatus(final MoveStatusType statusSel,
method getDefault (line 306) | public static SMConfig getDefault()
Condensed preview — 210 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (1,331K chars).
[
{
"path": ".gitignore",
"chars": 21,
"preview": "build\njar\nrst-doc\n*~\n"
},
{
"path": "LICENSE",
"chars": 18092,
"preview": " GNU GENERAL PUBLIC LICENSE\n Version 2, June 1991\n\n Copyright (C) 1989, 1991 Fr"
},
{
"path": "Makefile",
"chars": 2179,
"preview": "# Global Makefile for RP2040 PIO emulator\n#\n# Copyright (C) 2021 Jürgen Reuter\n#\n# This program is free software; you ca"
},
{
"path": "README.md",
"chars": 5884,
"preview": "# RP2040 PIO Emulator\n\nAn emulator of the RP2040 state machines.\nThis emulator is _not_ intended as a real-time emulatio"
},
{
"path": "defs.mak",
"chars": 1111,
"preview": "# Global Makefile definitions for RP2040 PIO emulator\n#\n# Copyright (C) 2021 Jürgen Reuter\n#\n# This program is free soft"
},
{
"path": "java/META-INF/MANIFEST.MF.CodeObserver",
"chars": 269,
"preview": "Manifest-Version: 1.0\nSpecification-Title: N.A.\nCreated-By: Jürgen Reuter\nImplementation-Title: RP2040 PIO Emulator Code"
},
{
"path": "java/META-INF/MANIFEST.MF.Diagram",
"chars": 261,
"preview": "Manifest-Version: 1.0\nSpecification-Title: N.A.\nCreated-By: Jürgen Reuter\nImplementation-Title: RP2040 PIO Emulator Diag"
},
{
"path": "java/META-INF/MANIFEST.MF.DocTool",
"chars": 267,
"preview": "Manifest-Version: 1.0\nSpecification-Title: N.A.\nCreated-By: Jürgen Reuter\nImplementation-Title: RP2040 PIO Emulator Docu"
},
{
"path": "java/META-INF/MANIFEST.MF.FifoObserver",
"chars": 269,
"preview": "Manifest-Version: 1.0\nSpecification-Title: N.A.\nCreated-By: Jürgen Reuter\nImplementation-Title: RP2040 PIO Emulator FIFO"
},
{
"path": "java/META-INF/MANIFEST.MF.GPIOObserver",
"chars": 269,
"preview": "Manifest-Version: 1.0\nSpecification-Title: N.A.\nCreated-By: Jürgen Reuter\nImplementation-Title: RP2040 PIO Emulator GPIO"
},
{
"path": "java/META-INF/MANIFEST.MF.Monitor",
"chars": 252,
"preview": "Manifest-Version: 1.0\nSpecification-Title: N.A.\nCreated-By: Jürgen Reuter\nImplementation-Title: RP2040 PIO Emulator Moni"
},
{
"path": "java/META-INF/MANIFEST.MF.Observer",
"chars": 268,
"preview": "Manifest-Version: 1.0\nSpecification-Title: N.A.\nCreated-By: Jürgen Reuter\nImplementation-Title: RP2040 PIO Emulator Comm"
},
{
"path": "java/META-INF/MANIFEST.MF.Server",
"chars": 252,
"preview": "Manifest-Version: 1.0\nSpecification-Title: N.A.\nCreated-By: Jürgen Reuter\nImplementation-Title: RP2040 PIO Emulation Ser"
},
{
"path": "java/Makefile.CodeObserver",
"chars": 2857,
"preview": "# Makefile for Java tree of RP2040 PIO emulator\n#\n# Copyright (C) 2021 Jürgen Reuter\n#\n# This program is free software; "
},
{
"path": "java/Makefile.Diagram",
"chars": 2860,
"preview": "# Makefile for Java tree of RP2040 PIO emulator\n#\n# Copyright (C) 2021 Jürgen Reuter\n#\n# This program is free software; "
},
{
"path": "java/Makefile.DocTool",
"chars": 3167,
"preview": "# Makefile for Java tree of RP2040 PIO emulator\n#\n# Copyright (C) 2021 Jürgen Reuter\n#\n# This program is free software; "
},
{
"path": "java/Makefile.FifoObserver",
"chars": 2857,
"preview": "# Makefile for Java tree of RP2040 PIO emulator\n#\n# Copyright (C) 2021 Jürgen Reuter\n#\n# This program is free software; "
},
{
"path": "java/Makefile.GPIOObserver",
"chars": 2857,
"preview": "# Makefile for Java tree of RP2040 PIO emulator\n#\n# Copyright (C) 2021 Jürgen Reuter\n#\n# This program is free software; "
},
{
"path": "java/Makefile.Monitor",
"chars": 2831,
"preview": "# Makefile for Java tree of RP2040 PIO emulator\n#\n# Copyright (C) 2021 Jürgen Reuter\n#\n# This program is free software; "
},
{
"path": "java/Makefile.Observer",
"chars": 2836,
"preview": "# Makefile for Java tree of RP2040 PIO emulator\n#\n# Copyright (C) 2021 Jürgen Reuter\n#\n# This program is free software; "
},
{
"path": "java/Makefile.Server",
"chars": 2837,
"preview": "# Makefile for Java tree of RP2040 PIO emulator\n#\n# Copyright (C) 2021 Jürgen Reuter\n#\n# This program is free software; "
},
{
"path": "java/examples/addition.mon",
"chars": 1316,
"preview": "# Script: Addition\n#\n# Monitor script for addition example (see RP2040\n# datasheet, Sect. 3.6.9. \"Addition\").\n# To be ex"
},
{
"path": "java/examples/apa102-mini.mon",
"chars": 2667,
"preview": "# Script: APA102 Mini\n# Group: APA102\n#\n# Monitor script for APA102 Mini example.\n# To be executed on PIO 0, SM 0.\n# pin"
},
{
"path": "java/examples/apa102-rgb555.mon",
"chars": 4086,
"preview": "# Script: APA102 RGB555\n# Group: APA102\n#\n# Monitor script for AP102 RGB555 example.\n# To be executed on PIO 0, SM 0.\n# "
},
{
"path": "java/examples/auto-push-pull.mon",
"chars": 2423,
"preview": "# Script: Auto-Push-Pull\n# Group: Autopush and Autopull\n#\n# Monitor script for auto-push-pull example (see RP2040\n# data"
},
{
"path": "java/examples/autopull.mon",
"chars": 2960,
"preview": "# Script: Autopull\n# Group: Autopush and Autopull\n#\n# Monitor script for auto pull example (see RP2040\n# datasheet, Sect"
},
{
"path": "java/examples/blink.mon",
"chars": 2497,
"preview": "# Script: PIO Blink\n#\n# Monitor script for PIO Blink example.\n# To be executed on PIO 0, SM 0.\n# For LED on OUT pin, map"
},
{
"path": "java/examples/bmc-rx.mon",
"chars": 3043,
"preview": "# Script: Differential Manchester RX\n# Group: Differential Manchester (BMC) TX and RX\n#\n# Monitor script for BMC RX exam"
},
{
"path": "java/examples/bmc-tx.mon",
"chars": 3264,
"preview": "# Script: Differential Manchester TX\n# Group: Differential Manchester (BMC) TX and RX\n#\n# Monitor script for BMC TX exam"
},
{
"path": "java/examples/clocked-input.mon",
"chars": 2887,
"preview": "# Script: Clocked Input\n#\n# Monitor script for Clocked Input example.\n# To be executed on PIO 0, SM 0.\n# Data input pin "
},
{
"path": "java/examples/exec-example.mon",
"chars": 1944,
"preview": "# Script: Exec Example\n#\n# Monitor script for EXEC'd instructions\n# example.\n#\n# To be executed on PIO 0, SM 0.\n\n# Make "
},
{
"path": "java/examples/ext-wave.mon",
"chars": 4233,
"preview": "# Script: External Wave\n# Group: Squarewave\n#\n# Monitor script for providing an external square wave signal put\n# onto G"
},
{
"path": "java/examples/hello.mon",
"chars": 2039,
"preview": "# Script: Hello PIO\n#\n# Monitor script for Hello PIO example.\n# To be executed on PIO 0, SM 0.\n# pin is mapped to GPIO0 "
},
{
"path": "java/examples/hub75.mon",
"chars": 9359,
"preview": "# Script: HUB75\n#\n# Monitor script for HUB75 example.\n# To be executed on PIO0, SM0 and SM1.\n#\n# This example consists o"
},
{
"path": "java/examples/i2c.mon",
"chars": 6280,
"preview": "# Script: I²C\n#\n# Monitor script for I²C example.\n# To be executed on PIO 0, SM 0.\n# pin_sda is fed to GPIO 0.\n# pin_scl"
},
{
"path": "java/examples/logic-analyser.mon",
"chars": 2337,
"preview": "# Script: Logic Analyser\n#\n# Monitor script for Logic Analyser example.\n# To be executed on PIO 0, SM 0.\n\n# Make a full "
},
{
"path": "java/examples/manchester-rx.mon",
"chars": 2938,
"preview": "# Script: Manchester Serial RX\n# Group: Manchester Serial TX and RX\n#\n# Monitor script for Manchester Serial RX example "
},
{
"path": "java/examples/manchester-tx.mon",
"chars": 2915,
"preview": "# Script: Manchester Serial TX\n# Group: Manchester Serial TX and RX\n#\n# Monitor script for Manchester Serial TX example "
},
{
"path": "java/examples/manual-pull.mon",
"chars": 3082,
"preview": "# Script: Manual Pull\n# Group: Autopush and Autopull\n#\n# Monitor script for manual pull example (see RP2040\n# datasheet,"
},
{
"path": "java/examples/pull-example1.mon",
"chars": 3387,
"preview": "# Script: Pull Example 1\n# Group: Autopush and Autopull\n#\n# Monitor script for pull_example1 (see RP2040\n# datasheet, Se"
},
{
"path": "java/examples/pull-example2.mon",
"chars": 3296,
"preview": "# Script: Pull Example 2\n# Group: Autopush and Autopull\n#\n# Monitor script for pull_example2 (see RP2040\n# datasheet, Se"
},
{
"path": "java/examples/pull-example3.mon",
"chars": 3350,
"preview": "# Script: Pull Example 3\n# Group: Autopush and Autopull\n#\n# Monitor script for pull_example3 (see RP2040\n# datasheet, Se"
},
{
"path": "java/examples/pull-example4.mon",
"chars": 3398,
"preview": "# Script: Pull Example 4\n# Group: Autopush and Autopull\n#\n# Monitor script like pull_example3 (see RP2040\n# datasheet, S"
},
{
"path": "java/examples/pwm.mon",
"chars": 2519,
"preview": "# Script: PWM\n#\n# Monitor script for PWM example (see RP2040 datasheet,\n# Sect. 3.6.8. \"PWM\"). To be executed on PIO 0,"
},
{
"path": "java/examples/somewhat-manual-pull.mon",
"chars": 2987,
"preview": "# Script: Somewhat Manual Pull\n# Group: Autopush and Autopull\n#\n# Monitor script for partial auto pull example (see RP20"
},
{
"path": "java/examples/spi-cpha0-cs.mon",
"chars": 4234,
"preview": "# Script: SPI CPHA0 with Chip Select\n# Group: SPI\n#\n# Monitor script for SPI CPHA0 with Chip Select example.\n# To be exe"
},
{
"path": "java/examples/spi-cpha0.mon",
"chars": 3431,
"preview": "# Script: SPI CPHA0\n# Group: SPI\n#\n# Monitor script for SPI CPHA0 example.\n# To be executed on PIO 0, SM 0.\n# SCK is sid"
},
{
"path": "java/examples/spi-cpha1-cs.mon",
"chars": 4234,
"preview": "# Script: SPI CPHA1 with Chip Select\n# Group: SPI\n#\n# Monitor script for SPI CPHA1 with Chip Select example.\n# To be exe"
},
{
"path": "java/examples/spi-cpha1.mon",
"chars": 3470,
"preview": "# Script: SPI CPHA1\n# Group: SPI\n#\n# Monitor script for SPI CPHA1 example.\n# To be executed on PIO 0, SM 0.\n# SCK is sid"
},
{
"path": "java/examples/spi-tx-fast.mon",
"chars": 2449,
"preview": "# Script: SPI TX Fast\n# Group: SPI\n#\n# Monitor script for SPI TX Fast example,\n# as described in RP2040 datasheet,\n# Sec"
},
{
"path": "java/examples/squarewave-fast.mon",
"chars": 1665,
"preview": "# Script: Squarewave Fast\n# Group: Squarewave\n#\n# Monitor script for Squarewave example (\"fast\" version).\n# To be execut"
},
{
"path": "java/examples/squarewave-wrap.mon",
"chars": 1393,
"preview": "# Script: Squarewave Wrap\n# Group: Squarewave\n#\n# Monitor script for Squarewave example (\"wrap\" version).\n# To be execut"
},
{
"path": "java/examples/squarewave.hex",
"chars": 79,
"preview": "# .program squarewave\n# ; periodically turns off / on GPIO0\ne081\ne101\ne000\n0001"
},
{
"path": "java/examples/squarewave.mon",
"chars": 1357,
"preview": "# Script: Squarewave\n# Group: Squarewave\n#\n# Monitor script for Squarewave example (base version).\n# To be executed on P"
},
{
"path": "java/examples/st7789-lcd.mon",
"chars": 2982,
"preview": "# Script: ST7789 LCD\n#\n# Monitor script for ST7789 LCD example.\n# To be executed on PIO 0, SM 0.\n# Data on OUT pin, mapp"
},
{
"path": "java/examples/uart-rx-mini.mon",
"chars": 2513,
"preview": "# Script: UART RX Mini\n# Group: UART\n#\n# Monitor script for UART RX Mini example (see RP2040 datasheet,\n# Sect. 3.6.4. \""
},
{
"path": "java/examples/uart-rx.mon",
"chars": 2818,
"preview": "# Script: UART RX\n# Group: UART\n#\n# Monitor script for UART RX example (see RP2040 datasheet,\n# Sect. 3.6.4. \"UART RX\")."
},
{
"path": "java/examples/uart-tx.mon",
"chars": 2780,
"preview": "# Script: UART TX\n# Group: UART\n#\n# Monitor script for UART TX example.\n# To be executed on PIO 0, SM 0.\n# Output is fed"
},
{
"path": "java/examples/ws2812-led.mon",
"chars": 2742,
"preview": "# Script: WS2812 LED\n# Group: WS2812\n#\n# Monitor script for ws2812_led example,\n# as described in RP2040 datasheet,\n# Se"
},
{
"path": "java/examples/ws2812-parallel.mon",
"chars": 3525,
"preview": "# Script: WS2812 Parallel\n# Group: WS2812\n#\n# Monitor script for ws2812_parallel example.\n# To be executed on PIO 0, SM "
},
{
"path": "java/examples/ws2812.hex",
"chars": 81,
"preview": "# .program ws2812\n# ; .side_set 1\n# ; .wrap_target\n6221\n1123\n1400\na442\n# ; .wrap\n"
},
{
"path": "java/examples/ws2812.mon",
"chars": 2846,
"preview": "# Script: WS2812\n# Group: WS2812\n#\n# Monitor script for ws2812 example.\n# To be executed on PIO 0, SM 0.\n# Output is fed"
},
{
"path": "java/media/gpl-2.0-standalone.html",
"chars": 20027,
"preview": "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\"\n \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">\n\n<html"
},
{
"path": "java/org/soundpaint/rp2040pio/AddressSpace.java",
"chars": 4473,
"preview": "/*\n * @(#)AddressSpace.java 1.00 21/03/03\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; yo"
},
{
"path": "java/org/soundpaint/rp2040pio/Bit.java",
"chars": 2750,
"preview": "/*\n * @(#)Bit.java 1.00 21/02/06\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can red"
},
{
"path": "java/org/soundpaint/rp2040pio/Clock.java",
"chars": 1570,
"preview": "/*\n * @(#)Clock.java 1.00 21/02/05\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can r"
},
{
"path": "java/org/soundpaint/rp2040pio/CmdOptions.java",
"chars": 31045,
"preview": "/*\n * @(#)CommadLineOptions.java 1.00 17/01/21\n *\n * Copyright (C) 2017, 2021 Jürgen Reuter\n *\n * This program is free s"
},
{
"path": "java/org/soundpaint/rp2040pio/CollapsiblePanel.java",
"chars": 2858,
"preview": "/*\n * @(#)CollapsiblePanel.java 1.00 21/06/05\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software"
},
{
"path": "java/org/soundpaint/rp2040pio/Constants.java",
"chars": 17596,
"preview": "/*\n * @(#)Constants.java 1.00 21/02/27\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you c"
},
{
"path": "java/org/soundpaint/rp2040pio/Decoder.java",
"chars": 4010,
"preview": "/*\n * @(#)Decoder.java 1.00 21/01/31\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can"
},
{
"path": "java/org/soundpaint/rp2040pio/Direction.java",
"chars": 1730,
"preview": "/*\n * @(#)Direction.java 1.00 21/03/19\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you c"
},
{
"path": "java/org/soundpaint/rp2040pio/EmulationServer.java",
"chars": 5430,
"preview": "/*\n * @(#)EmulationServer.java 1.00 21/03/27\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software;"
},
{
"path": "java/org/soundpaint/rp2040pio/Emulator.java",
"chars": 2178,
"preview": "/*\n * @(#)Emulator.java 1.00 21/03/19\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you ca"
},
{
"path": "java/org/soundpaint/rp2040pio/FIFO.java",
"chars": 8316,
"preview": "/*\n * @(#)FIFO.java 1.00 21/02/03\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can re"
},
{
"path": "java/org/soundpaint/rp2040pio/GPIO.java",
"chars": 13986,
"preview": "/*\n * @(#)GPIO.java 1.00 21/01/31\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can re"
},
{
"path": "java/org/soundpaint/rp2040pio/GPIOIOBank0Registers.java",
"chars": 15837,
"preview": "/*\n * @(#)GPIOIOBank0Registers.java 1.00 21/03/20\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free soft"
},
{
"path": "java/org/soundpaint/rp2040pio/GPIOIOBank0RegistersImpl.java",
"chars": 8068,
"preview": "/*\n * @(#)GPIOIOBank0RegistersImpl.java 1.00 21/03/20\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free "
},
{
"path": "java/org/soundpaint/rp2040pio/GPIOPadsBank0Registers.java",
"chars": 7405,
"preview": "/*\n * @(#)GPIOPadsBank0Registers.java 1.00 21/03/20\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free so"
},
{
"path": "java/org/soundpaint/rp2040pio/GPIOPadsBank0RegistersImpl.java",
"chars": 3876,
"preview": "/*\n * @(#)GPIOPadsBank0RegistersImpl.java 1.00 21/03/20\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is fre"
},
{
"path": "java/org/soundpaint/rp2040pio/IOUtils.java",
"chars": 3869,
"preview": "/*\n * @(#)IOUtils.java 1.00 21/04/08\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can"
},
{
"path": "java/org/soundpaint/rp2040pio/IRQ.java",
"chars": 4744,
"preview": "/*\n * @(#)IRQ.java 1.00 21/02/06\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can red"
},
{
"path": "java/org/soundpaint/rp2040pio/Instruction.java",
"chars": 33462,
"preview": "/*\n * @(#)Instruction.java 1.00 21/01/31\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you"
},
{
"path": "java/org/soundpaint/rp2040pio/LocalAddressSpace.java",
"chars": 8936,
"preview": "/*\n * @(#)LocalAddressSpace.java 1.00 21/03/25\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free softwar"
},
{
"path": "java/org/soundpaint/rp2040pio/MasterClock.java",
"chars": 8735,
"preview": "/*\n * @(#)MasterClock.java 1.00 21/02/05\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you"
},
{
"path": "java/org/soundpaint/rp2040pio/Memory.java",
"chars": 1941,
"preview": "/*\n * @(#)Memory.java 1.00 21/01/31\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can "
},
{
"path": "java/org/soundpaint/rp2040pio/PIO.java",
"chars": 7382,
"preview": "/*\n * @(#)PIO.java 1.00 21/01/31\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can red"
},
{
"path": "java/org/soundpaint/rp2040pio/PIOEmuRegisters.java",
"chars": 26385,
"preview": "/*\n * @(#)PIOEmuRegisters.java 1.00 21/03/06\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software;"
},
{
"path": "java/org/soundpaint/rp2040pio/PIOEmuRegistersImpl.java",
"chars": 15797,
"preview": "/*\n * @(#)PIOEmuRegistersImpl.java 1.00 21/03/06\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free softw"
},
{
"path": "java/org/soundpaint/rp2040pio/PIOGPIO.java",
"chars": 7248,
"preview": "/*\n * @(#)PIOGPIO.java 1.00 21/03/19\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can"
},
{
"path": "java/org/soundpaint/rp2040pio/PIORegisters.java",
"chars": 25869,
"preview": "/*\n * @(#)PIORegisters.java 1.00 21/02/25\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; yo"
},
{
"path": "java/org/soundpaint/rp2040pio/PIORegistersImpl.java",
"chars": 11940,
"preview": "/*\n * @(#)PIORegistersImpl.java 1.00 21/02/25\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software"
},
{
"path": "java/org/soundpaint/rp2040pio/PLL.java",
"chars": 5474,
"preview": "/*\n * @(#)PLL.java 1.00 21/02/05\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can red"
},
{
"path": "java/org/soundpaint/rp2040pio/ParseException.java",
"chars": 2004,
"preview": "/*\n * @(#)ParseException.java 1.00 21/02/16\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; "
},
{
"path": "java/org/soundpaint/rp2040pio/PicoEmuRegisters.java",
"chars": 10089,
"preview": "/*\n * @(#)PicoEmuRegisters.java 1.00 21/03/12\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software"
},
{
"path": "java/org/soundpaint/rp2040pio/PicoEmuRegistersImpl.java",
"chars": 3575,
"preview": "/*\n * @(#)PicoEmuRegistersImpl.java 1.00 21/03/12\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free soft"
},
{
"path": "java/org/soundpaint/rp2040pio/PinState.java",
"chars": 2565,
"preview": "/*\n * @(#)PinState.java 1.00 21/04/06\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you ca"
},
{
"path": "java/org/soundpaint/rp2040pio/RegisterSet.java",
"chars": 3677,
"preview": "/*\n * @(#)RegisterSet.java 1.00 21/03/05\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you"
},
{
"path": "java/org/soundpaint/rp2040pio/RemoteAddressSpaceClient.java",
"chars": 12915,
"preview": "/*\n * @(#)RemoteAddressSpaceClient.java 1.00 21/03/17\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free "
},
{
"path": "java/org/soundpaint/rp2040pio/RemoteAddressSpaceServer.java",
"chars": 16680,
"preview": "/*\n * @(#)RemoteAddressSpaceServer.java 1.00 21/03/03\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free "
},
{
"path": "java/org/soundpaint/rp2040pio/SM.java",
"chars": 35250,
"preview": "/*\n * @(#)SM.java 1.00 21/01/31\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can redi"
},
{
"path": "java/org/soundpaint/rp2040pio/SwingUtils.java",
"chars": 3146,
"preview": "/*\n * @(#)SwingUtils.java 1.00 21/04/07\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you "
},
{
"path": "java/org/soundpaint/rp2040pio/doctool/DocsBuilder.java",
"chars": 3715,
"preview": "/*\n * @(#)DocsBuilder.java 1.00 21/04/18\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you"
},
{
"path": "java/org/soundpaint/rp2040pio/doctool/ExampleScriptsDocsBuilder.java",
"chars": 6582,
"preview": "/*\n * @(#)ExampleScriptsDocsBuilder.java 1.00 21/06/10\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free"
},
{
"path": "java/org/soundpaint/rp2040pio/doctool/MonitorCommandsDocsBuilder.java",
"chars": 6996,
"preview": "/*\n * @(#)MonitorCommandsDocsBuilder.java 1.00 21/04/18\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is fre"
},
{
"path": "java/org/soundpaint/rp2040pio/doctool/RegistersDocs.java",
"chars": 8529,
"preview": "/*\n * @(#)RegistersDocs.java 1.00 21/04/15\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; y"
},
{
"path": "java/org/soundpaint/rp2040pio/doctool/RegistersDocsBuilder.java",
"chars": 12823,
"preview": "/*\n * @(#)RegistersDocsBuilder.java 1.00 21/04/15\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free soft"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/Command.java",
"chars": 7952,
"preview": "/*\n * @(#)Command.java 1.00 21/03/28\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/CommandRegistry.java",
"chars": 9406,
"preview": "/*\n * @(#)CommandRegistry.java 1.00 21/03/28\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software;"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/Monitor.java",
"chars": 9041,
"preview": "/*\n * @(#)Monitor.java 1.00 21/02/02\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/MonitorUtils.java",
"chars": 4147,
"preview": "/*\n * @(#)MonitorUtils.java 1.00 21/04/14\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; yo"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/ScriptInfo.java",
"chars": 6522,
"preview": "/*\n * @(#)ScriptInfo.java 1.00 21/06/20\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you "
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/BreakPoints.java",
"chars": 4661,
"preview": "/*\n * @(#)BreakPoints.java 1.00 21/04/04\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Clear.java",
"chars": 2265,
"preview": "/*\n * @(#)Clear.java 1.00 21/04/22\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can r"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Clock.java",
"chars": 11951,
"preview": "/*\n * @(#)Clock.java 1.00 21/05/29\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can r"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Enter.java",
"chars": 6386,
"preview": "/*\n * @(#)Enter.java 1.00 21/03/31\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can r"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Execute.java",
"chars": 13889,
"preview": "/*\n * @(#)Execute.java 1.00 21/04/04\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Fifo.java",
"chars": 26881,
"preview": "/*\n * @(#)Fifo.java 1.00 21/04/05\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can re"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Gpio.java",
"chars": 20609,
"preview": "/*\n * @(#)Gpio.java 1.00 21/04/06\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can re"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Help.java",
"chars": 2269,
"preview": "/*\n * @(#)Help.java 1.00 21/03/28\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can re"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Interrupt.java",
"chars": 18301,
"preview": "/*\n * @(#)Interrupt.java 1.00 21/06/08\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you c"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Label.java",
"chars": 2999,
"preview": "/*\n * @(#)Label.java 1.00 21/03/29\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can r"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Load.java",
"chars": 8844,
"preview": "/*\n * @(#)Load.java 1.00 21/03/31\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can re"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/PinCtrl.java",
"chars": 13043,
"preview": "/*\n * @(#)PinCtrl.java 1.00 21/06/01\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Quit.java",
"chars": 1685,
"preview": "/*\n * @(#)Quit.java 1.00 21/03/28\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can re"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Read.java",
"chars": 3096,
"preview": "/*\n * @(#)Read.java 1.00 21/03/29\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can re"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Registers.java",
"chars": 9488,
"preview": "/*\n * @(#)Registers.java 1.00 21/04/05\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you c"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Reset.java",
"chars": 2038,
"preview": "/*\n * @(#)Reset.java 1.00 21/03/31\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can r"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Save.java",
"chars": 7925,
"preview": "/*\n * @(#)Save.java 1.00 21/04/05\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can re"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Script.java",
"chars": 9978,
"preview": "/*\n * @(#)Script.java 1.00 21/03/31\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can "
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/SideSet.java",
"chars": 12430,
"preview": "/*\n * @(#)SideSet.java 1.00 21/04/03\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Sm.java",
"chars": 5623,
"preview": "/*\n * @(#)Sm.java 1.00 21/04/01\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can redi"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Trace.java",
"chars": 9311,
"preview": "/*\n * @(#)Trace.java 1.00 21/03/28\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can r"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Unassemble.java",
"chars": 7886,
"preview": "/*\n * @(#)Unassemble.java 1.00 21/03/28\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you "
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Unload.java",
"chars": 8400,
"preview": "/*\n * @(#)Unload.java 1.00 21/04/03\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can "
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Version.java",
"chars": 2270,
"preview": "/*\n * @(#)Version.java 1.00 21/03/29\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Wait.java",
"chars": 5009,
"preview": "/*\n * @(#)Wait.java 1.00 21/03/30\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can re"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Wrap.java",
"chars": 7513,
"preview": "/*\n * @(#)Wrap.java 1.00 21/04/04\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can re"
},
{
"path": "java/org/soundpaint/rp2040pio/monitor/commands/Write.java",
"chars": 3493,
"preview": "/*\n * @(#)Write.java 1.00 21/03/30\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can r"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/ActionPanel.java",
"chars": 2373,
"preview": "/*\n * @(#)ActionPanel.java 1.00 21/04/10\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/ConnectDialog.java",
"chars": 5139,
"preview": "/*\n * @(#)ConnectDialog.java 1.00 21/05/30\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; y"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/GUIObserver.java",
"chars": 12546,
"preview": "/*\n * @(#)GUIObserver.java 1.00 21/04/01\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/LicenseView.java",
"chars": 2364,
"preview": "/*\n * @(#)LicenseView.java 1.00 21/05/22\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/MenuBar.java",
"chars": 5526,
"preview": "/*\n * @(#)MenuBar.java 1.00 21/05/22\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/Observer.java",
"chars": 7218,
"preview": "/*\n * @(#)Observer.java 1.00 21/04/01\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you ca"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/code/ActionPanel.java",
"chars": 1755,
"preview": "/*\n * @(#)ActionPanel.java 1.00 21/04/24\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/code/CodeObserver.java",
"chars": 2200,
"preview": "/*\n * @(#)CodeObserver.java 1.00 21/04/24\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; yo"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/code/CodeSmViewPanel.java",
"chars": 14199,
"preview": "/*\n * @(#)CodeSmViewPanel.java 1.00 21/04/24\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software;"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/code/CodeViewPanel.java",
"chars": 5103,
"preview": "/*\n * @(#)CodeViewPanel.java 1.00 21/04/24\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; y"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/AbstractSignal.java",
"chars": 5663,
"preview": "/*\n * @(#)AbstractSignal.java 1.00 21/02/12\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; "
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/ActionPanel.java",
"chars": 5208,
"preview": "/*\n * @(#)ActionPanel.java 1.00 21/04/06\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/ClockSignal.java",
"chars": 2712,
"preview": "/*\n * @(#)ClockSignal.java 1.00 21/02/12\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/Constants.java",
"chars": 2006,
"preview": "/*\n * @(#)Constants.java 1.00 21/04/07\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you c"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/CycleRuler.java",
"chars": 2652,
"preview": "/*\n * @(#)CycleRuler.java 1.00 21/06/28\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you "
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/Diagram.java",
"chars": 9395,
"preview": "/*\n * @(#)Diagram.java 1.00 21/01/31\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/DiagramModel.java",
"chars": 7381,
"preview": "/*\n * @(#)DiagramModel.java 1.00 21/02/12\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; yo"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/DiagramViewPanel.java",
"chars": 5923,
"preview": "/*\n * @(#)DiagramViewPanel.java 1.00 21/06/26\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/LegendPanel.java",
"chars": 3581,
"preview": "/*\n * @(#)LegendPanel.java 1.00 21/06/26\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/MenuBar.java",
"chars": 4248,
"preview": "/*\n * @(#)MenuBar.java 1.00 21/04/07\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/RegisterBitSignal.java",
"chars": 4051,
"preview": "/*\n * @(#)RegisterBitSignal.java 1.00 21/02/12\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free softwar"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/RegisterIntSignal.java",
"chars": 6577,
"preview": "/*\n * @(#)RegisterIntSignal.java 1.00 21/07/23\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free softwar"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/ScriptDialog.java",
"chars": 2743,
"preview": "/*\n * @(#)ScriptDialog.java 1.00 21/04/09\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; yo"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/ScriptSelectionPanel.java",
"chars": 11536,
"preview": "/*\n * @(#)ScriptSelectionPanel.java 1.00 21/04/09\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free soft"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/Signal.java",
"chars": 1971,
"preview": "/*\n * @(#)Signal.java 1.00 21/02/12\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can "
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/SignalDialog.java",
"chars": 4518,
"preview": "/*\n * @(#)SignalDialog.java 1.00 21/06/29\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; yo"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/SignalFactory.java",
"chars": 4673,
"preview": "/*\n * @(#)SignalFactory.java 1.00 21/02/12\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; y"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/SignalFactoryPanel.java",
"chars": 2914,
"preview": "/*\n * @(#)SignalFactoryPanel.java 1.00 21/07/03\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free softwa"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/SignalFilter.java",
"chars": 3059,
"preview": "/*\n * @(#)SignalFilter.java 1.00 21/07/26\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; yo"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/SignalLabelPanel.java",
"chars": 3019,
"preview": "/*\n * @(#)SignalLabelPanel.java 1.00 21/07/03\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/SignalPanel.java",
"chars": 7706,
"preview": "/*\n * @(#)SignalPanel.java 1.00 21/04/07\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/SignalRendering.java",
"chars": 12340,
"preview": "/*\n * @(#)SignalRendering.java 1.00 21/07/25\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software;"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/SignalTypePanel.java",
"chars": 10040,
"preview": "/*\n * @(#)SignalTypePanel.java 1.00 21/06/30\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software;"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/SignalsDialog.java",
"chars": 3912,
"preview": "/*\n * @(#)SignalsDialog.java 1.00 21/04/07\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; y"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/SignalsPropertiesPanel.java",
"chars": 8953,
"preview": "/*\n * @(#)SignalsPropertiesPanel.java 1.00 21/04/07\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free so"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/SmSelectionPanel.java",
"chars": 9664,
"preview": "/*\n * @(#)SmSelectionPanel.java 1.00 21/07/10\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/TelemetryPanel.java",
"chars": 2695,
"preview": "/*\n * @(#)TelemetryPanel.java 1.00 21/06/27\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; "
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/ToolTip.java",
"chars": 1563,
"preview": "/*\n * @(#)ToolTip.java 1.00 21/04/07\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/ValueFilterPanel.java",
"chars": 5544,
"preview": "/*\n * @(#)ValueFilterPanel.java 1.00 21/07/11\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/ValueRenderingPanel.java",
"chars": 5705,
"preview": "/*\n * @(#)ValueRenderingPanel.java 1.00 21/07/10\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free softw"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/ValueSourcePanel.java",
"chars": 23984,
"preview": "/*\n * @(#)ValueSourcePanel.java 1.00 21/06/30\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/diagram/ValuedSignal.java",
"chars": 3946,
"preview": "/*\n * @(#)ValuedSignal.java 1.00 21/02/12\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; yo"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/fifo/ActionPanel.java",
"chars": 1756,
"preview": "/*\n * @(#)ActionPanel.java 1.00 21/04/28\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/fifo/FifoEntriesViewPanel.java",
"chars": 22366,
"preview": "/*\n * @(#)FifoEntriesViewPanel.java 1.00 21/04/28\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free soft"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/fifo/FifoObserver.java",
"chars": 2199,
"preview": "/*\n * @(#)FifoObserver.java 1.00 21/04/28\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; yo"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/fifo/FifoViewPanel.java",
"chars": 5706,
"preview": "/*\n * @(#)FifoViewPanel.java 1.00 21/04/28\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; y"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/gpio/GPIOArrayPanel.java",
"chars": 4760,
"preview": "/*\n * @(#)GPIOArrayPanel.java 1.00 21/04/10\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; "
},
{
"path": "java/org/soundpaint/rp2040pio/observer/gpio/GPIOObserver.java",
"chars": 2188,
"preview": "/*\n * @(#)GPIOObserver.java 1.00 21/04/10\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; yo"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/gpio/GPIOPanel.java",
"chars": 3359,
"preview": "/*\n * @(#)GPIOPanel.java 1.00 21/04/10\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you c"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/gpio/GPIOViewPanel.java",
"chars": 3457,
"preview": "/*\n * @(#)GPIOViewPanel.java 1.00 21/05/17\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; y"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/gpio/PIOGPIOArrayPanel.java",
"chars": 4559,
"preview": "/*\n * @(#)PIOGPIOArrayPanel.java 1.00 21/05/16\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free softwar"
},
{
"path": "java/org/soundpaint/rp2040pio/observer/gpio/PIOGPIOPanel.java",
"chars": 3068,
"preview": "/*\n * @(#)PIOGPIOPanel.java 1.00 21/05/16\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; yo"
},
{
"path": "java/org/soundpaint/rp2040pio/sdk/GPIOSDK.java",
"chars": 5796,
"preview": "/*\n * @(#)GPIOSDK.java 1.00 21/03/02\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can"
},
{
"path": "java/org/soundpaint/rp2040pio/sdk/PIOSDK.java",
"chars": 41384,
"preview": "/*\n * @(#)PIOSDK.java 1.00 21/02/25\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can "
},
{
"path": "java/org/soundpaint/rp2040pio/sdk/Panic.java",
"chars": 1899,
"preview": "/*\n * @(#)Panic.java 1.00 21/03/31\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can r"
},
{
"path": "java/org/soundpaint/rp2040pio/sdk/Program.java",
"chars": 6433,
"preview": "/*\n * @(#)Program.java 1.00 21/02/06\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can"
},
{
"path": "java/org/soundpaint/rp2040pio/sdk/ProgramParser.java",
"chars": 12022,
"preview": "/*\n * @(#)ProgramParser.java 1.00 21/02/16\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; y"
},
{
"path": "java/org/soundpaint/rp2040pio/sdk/SDK.java",
"chars": 7048,
"preview": "/*\n * @(#)SDK.java 1.00 21/02/02\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you can red"
},
{
"path": "java/org/soundpaint/rp2040pio/sdk/SMConfig.java",
"chars": 10828,
"preview": "/*\n * @(#)SMConfig.java 1.00 21/02/06\n *\n * Copyright (C) 2021 Jürgen Reuter\n *\n * This program is free software; you ca"
}
]
// ... and 13 more files (download for full content)
About this extraction
This page contains the full source code of the soundpaint/rp2040pio GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 210 files (1.2 MB), approximately 326.3k tokens, and a symbol index with 2005 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.