Applications
Application Commands
The advantages of using an SD card with zOS/ZPUTA is it allows for application applets to be stored on disk and run as needed. These applications are more akin to MSDOS commands as they utilise core API functionality within zOS/ZPUTA but otherwise manage their own run and memory environments.
Listed below are all the current application applets built for zOS/ZPUTA.
ed
Usage: | ed <file> |
Parameters: | <file> - Filename, including relative or absolute pathname. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
A Basic WYSIWYG File Editor.
This is a What You See Is What You Get visual editor. It doesnt offer many features but is great for quickly editting or adding files. It is designed around the VT100 terminal and thus uses its control sequences to obtain a visual editor. In order to use this editor you must be using a VT100 emulator program such as Minicom on the serial connection of the ZPU/K64F.
The commands and control keys for the editor are:
Command / Key | Description |
---|---|
CTRL C | Ignored. |
CTRL Q | Quit. If changes have been made to the file you will be warned. To ignore the warning, press CTRL-Q 3 times. |
CTRL S | Save. Save the file contents to disk. |
CTRL F | Find. Search for a word in the document. |
CTRL H BACKSPACE |
Backspace, delete character to the left of cursor. |
DELETE | Delete, delete character under cursor, shifting characters on the right, left by 1. |
HOME | Go to start of line. |
END | Go to end of line |
PAGE UP | Scroll up by 1 page. |
PAGE DOWN | Scroll down by 1 page. |
ARROW UP | Move cursor up 1 row. If at top of screen but not top of document, scroll screen down 1 row. |
ARROW DOWN | Move cursor down 1 row. If at bottom of screen but not bottom of document, scroll screen up 1 row. |
ARROW RIGHT | Move cursor right by 1. If at end of line, wrap around to beginning of next line. |
ARROW LEFT | Move cursor left by 1. If at beginning of line, wrap around to end of previous line. |
CTRL L | Refresh/re-draw screen. |
ESCAPE | Ignored. |
kilo
Usage: | kilo <file> |
Parameters: | <file> - Filename, including relative or absolute pathname. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
A simple WYSIWYG File Editor.
This is a What You See Is What You Get visual editor. It offers a bit more functionality than ‘ed’, for example syntax highlighting of recognised source files and highlighting of matched words in the find function. It is also designed around the VT100 terminal and thus uses its control sequences to obtain a visual editor. In order to use this editor you must be using a VT100 emulator program such as Minicom on the serial connection of the ZPU/K64F.
The commands and control keys for the editor are:
Command / Key | Description |
---|---|
CTRL C | Ignored. |
CTRL Q | Quit. If changes have been made to the file you will be warned. To ignore the warning, press CTRL-Q 3 times. |
CTRL S | Save. Save the file contents to disk. |
CTRL F | Find. Search for a word in the document. |
CTRL H BACKSPACE |
Backspace, delete character to the left of cursor. |
DELETE | Delete, delete character under cursor, shifting characters on the right, left by 1. |
HOME | Go to start of line. |
END | Go to end of line |
PAGE UP | Scroll up by 1 page. |
PAGE DOWN | Scroll down by 1 page. |
ARROW UP | Move cursor up 1 row. If at top of screen but not top of document, scroll screen down 1 row. |
ARROW DOWN | Move cursor down 1 row. If at bottom of screen but not bottom of document, scroll screen up 1 row. |
ARROW RIGHT | Move cursor right by 1. If at end of line, wrap around to beginning of next line. |
ARROW LEFT | Move cursor left by 1. If at beginning of line, wrap around to end of previous line. |
CTRL L | Refresh/re-draw screen. |
ESCAPE | Ignored. |
mbasic
Usage: | mbasic [<file>] |
Parameters: | <file> - Filename of a basic program, including relative or absolute pathname. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
An Interactive Mini-Basic Interpreter.
This is a fully interactive BASIC interpreter which utilises an enhanced version of Malcom McLean’s original Mini-Basic which provides a full screen editor, a command processor with the required interactive commands and a readline based text entry for easy editting of commands. The BASIC program once captured is sent to the BASIC interpreter when the ‘run’ command is issued. The BASIC interpreter has been enhanced to include additional commands for use in an embedded environment.
Please consult Malcolm McLean’s Mini-Basic homepage for the standard BASIC language manual, this document only details the enhancements.
The original Mini-Basic was designed to run within Windows or Linux and take a file containing a BASIC program and run it. Within an embedded environment this is not so convenient as you want to be able to enter lines or commands and get feedback immediately. This is generally the case in an environment such as this where you are programming or controlling hardware under development.
When I was looking around for a BASIC interpreter for zOS/ZPUTA one of the requirements was size and the other being the limited libraries provided by GCC for the ZPU, also GCC being an old version it only worked with C99/C++98. I came across a BASIC interpreter called MY_BASIC which seemed to fit the bill but its compiled size is over 250K and wouldnt compile with zpu-elf-gcc. A further search turned up Tiny Basic which is small and useable but not so easy to expand. Malcolm McLean’s Mini-Basic on the other hand was small, well written and easily extendable hence deciding to work with it and add the missing interactive features.
The concept of MiniBasic in this environment is the integration of ‘ed’ above to give a full visual editor to enter your code, a readline processor to give command line recall and editting along with direct BASIC entry outside of the editor and a command processor to add the missing commands such as RUN, LIST, NEW, LOAD, SAVE, QUIT etc.
On starting MiniBasic, you are greeted by a familiar ‘Ready’ prompt. You can now enter BASIC directly on the command line or invoke the full screen editor using the ‘EDIT’ command. When finished, save-quit and issue the ‘RUN’ command. Use this development loop to create the desired program.
The sections below list the commands and functions available within each section of the Mini-Basic Interpreter.
Command Line Entry
Command line entry, after the ‘Ready’ prompt uses a basic version of readline with history and so has the following key commands/combinations. Readline is also invoked whenever the BASIC interpreter requires input.
Command / Key | Description |
---|---|
CTRL A HOME |
Move cursor to start of line. |
CTRL B ARROW LEFT |
Move cursor to left by 1 character. |
CTRL C | Kill any running program. |
CTRL D | Ignored. |
CTRL E END |
Move cursor to end of line. |
CTRL F ARROW RIGHT |
Move cursor to right by 1 character. |
DELETE | Delete, delete character under cursor, shifting characters on the right, left by 1. |
PAGE UP | Ignored. |
PAGE DOWN | Ignored. |
CTRL K | Clear the line. |
CTRL P ARROW UP |
Recall the previous command or line entered (ie. history buffer) |
CTRL N ARROW DOWN |
Recall the next command or line entered (ie. history buffer) |
In addition to the key commands, readline also understands some typed commands, namely:
Command | Action |
---|---|
!<number> | Recall and execute given historised command identified by <number>. |
hist[ory] | List the history buffer. |
Sat in front of readline is another command processor which interprets the BASIC commands not handled by the BASIC interpreter. To the user, this command interpreter and readline appear the same as they are entered at the same prompt.
The list of BASIC commands understood by the command processor are:
Command | Description |
---|---|
edit | Invoke the full screen editor with the BASIC program, control keys specified below. |
run | Execute the BASIC program. |
list [[<start>] <end>] | List the BASIC program to the terminal. Without options the whole program is listed. If <start> is provided then the listing commences at this line number, if <end> is provided then the listing stops at this line number. |
new | Delete the BASIC program stored in memory and reset environment. |
load "<file.bas>" | Load a BASIC program from SD disk into memory. If a program is already in memory it will be overwritten. |
save "<file.bas>" | Save the BASIC program in memory onto the SD disk using the filename given. |
help | Print out the commands understood by this command processor. |
quit | Clear memory and exit to zOS/ZPUTA. If an unsaved BASIC program is held in memory the command will abort with a warning. |
The BASIC interpreter has also been enhanced to include the following necessary embedded commands:
Command | Description |
---|---|
POKE <width>, <addr>, <data> | Write <data> into memory address <addr> using the given <width> (32, 16 or 8bit). For 32 and 16bit writes the address must be word or half-word aligned. Example: 10 POKE 32, 0x20028000, 0xaa55aa55 |
… and embedded functions:
Function | Description |
---|---|
PEEK(<width>, <addr>) | Read memory address <addr> and return the value found according to the <width> specification. Width = 32, 16 or 8. For 32 or 16bit reads the address must be word or half-word aligned, Example: 20 PRINT PEEK(32, 0x20028000) |
Last but not least is the visual editor, ‘ed’. This is a variant of the application ‘ed’ which has been adapted to blend in better with an interactive BASIC session. Its commands may differ, so listed below is all the control keys understood by the inbuilt ‘ed’.
Command / Key | Description |
---|---|
CTRL C | Ignored. |
CTRL Q | Quit. If changes have been made to the file you will be warned. To ignore the warning, press CTRL-Q 3 times. |
CTRL S | Save. Save the file contents to disk. |
CTRL F | Find. Search for a word in the document. |
CTRL H BACKSPACE |
Backspace, delete character to the left of cursor. |
DELETE | Delete, delete character under cursor, shifting characters on the right, left by 1. |
HOME | Go to start of line. |
END | Go to end of line |
PAGE UP | Scroll up by 1 page. |
PAGE DOWN | Scroll down by 1 page. |
ARROW UP | Move cursor up 1 row. If at top of screen but not top of document, scroll screen down 1 row. |
ARROW DOWN | Move cursor down 1 row. If at bottom of screen but not bottom of document, scroll screen up 1 row. |
ARROW RIGHT | Move cursor right by 1. If at end of line, wrap around to beginning of next line. |
ARROW LEFT | Move cursor left by 1. If at beginning of line, wrap around to end of previous line. |
CTRL L | Refresh/re-draw screen. |
ESCAPE | Ignored. |
tbasic
Usage: | tbasic |
Parameters: | |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Tiny Basic
This is an interactive BASIC originally written by RodionGork and enhanced by Miskatino for use on STM32 and Arduino Micro development boards.
I’ve ported it to the zOS/ZPUTA environment so that it compiles with both the ZPU and K64F processor architectures. I still need to change the PIN drivers so that they address ZPU SoC and K64F GPIO pins but otherwise is fully functional.
The full manual for Tiny Basic can be found here.
tranZPUterSW Commands
When zOS is compiled for the tranZPUter SW board a set of applications are compiled which can be used to monitor, probe, change or interface with the host machine. ie. download the current memory state for debugging or capture the video frame buffer.
tzload
Usage: | tzload |
Parameters: | See the synopsis below. |
Architecture: | K64F |
Host: | zOS |
Description: | Upload and Download files to the tranZPUter memory, grab a video frame or set a new frame. |
TZLOAD v1.2
Commands:-
-h | --help This help text.
-d | --download <file> File into which memory contents from the tranZPUter are stored.
-u | --upload <file> File whose contents are uploaded into the traZPUter memory.
-U | --uploadset <file>:<addr>,...,<file>:<addr>
Upload a set of files at the specified locations. --mainboard specifies mainboard is target, default is tranZPUter.
-V | --video The specified input file is uploaded into the video frame buffer or the specified output file is filled with the video frame buffe.
Options:-
-a | --addr Memory address to read/write.
-l | --size Size of memory block to read. This option is only used when reading tranZPUter memory, for writing, the file size is used.
-s | --swap Read tranZPUter memory and store in <infile> then write out <outfile> to the same memory location.
-f | --fpga Operations will take place in the FPGA memory. Default without this flag is to target the tranZPUter memory.
-m | --mainboard Operations will take place on the MZ80A mainboard. Default without this flag is to target the tranZPUter memory.
-M | --mempage Operations on mainboard will page in all DRAM banks prior to operation. ie. MZ-700 will page in lower and upper DRAM banks so 0000:FFFF = DRAM
-z | --mzf File operations are to process the file as an MZF format file, --addr and --size will override the MZF header values if needed.
-v | --verbose Output more messages.
Examples:
tzload --download monitor.rom -a 0x000000 # Load the file monitor.rom into the tranZPUter memory at address 0x000000.
tzdump
Usage: | tzdump |
Parameters: | See the synopsis below. |
Architecture: | K64F |
Host: | zOS |
Description: | Dump tranZPUter memory to screen. |
TZDUMP v1.1
Commands:-
-h | --help This help text.
-a | --start Start address.
Options:-
-e | --end End address (alternatively use --size).
-s | --size Size of memory block to dump (alternatively use --end).
-f | --fpga Operations will take place in the FPGA memory. Default without this flag is to target the tranZPUter memory.
-m | --mainboard Operations will take place on the MZ80A mainboard. Default without this flag is to target the tranZPUter memory.
-v | --verbose Output more messages.
Examples:
tzdump -a 0x000000 -s 0x200 # Dump tranZPUter memory from 0x000000 to 0x000200.
tzmtest
Usage: | tzmtest |
Parameters: | See the synopsis below. |
Architecture: | K64F |
Host: | zOS |
Description: | Test tranZPUter memory and FPGA BRAM. |
TZMTEST v1.0
Commands:-
-h | --help This help text.
-a | --start Start address.
Options:-
-e | --end End address (alternatively use --size).
-s | --size Size of memory block to test (alternatively use --end).
-f | --fpga Operations will take place in the FPGA memory. Default without this flag is to target the tranZPUter memory.
-i | --iter Number of test iterations, default = 1.
-t | --test Specify test as a bit value, bit 0 = R/W inc ascending test, 1 = R/W inc walking test, 2 = W ascending then R,
bit 3 = W walking then R, bit 4 = echo and stick bit test.
-v | --verbose Output more messages.
Examples:
tzmtest -a 0x000000 -s 0x20000 # Test 128K tranZPUter memory from 0x000000 to 0x020000.
tzclear
Usage: | tzclear |
Parameters: | See the synopsis below. |
Architecture: | K64F |
Host: | zOS |
Description: | Clear tranZPUter memory. |
TZCLEAR v1.1
Commands:-
-h | --help This help text.
-a | --start Start address.
Options:-
-e | --end End address (alternatively use --size).
-s | --size Size of memory block to clear (alternatively use --end).
-b | --byte Byte value to place into each cleared memory location, defaults to 0x00.
-f | --fpga Operations will take place in the FPGA memory. Default without this flag is to target the tranZPUter memory.
-m | --mainboard Operations will take place on the MZ80A mainboard. Default without this flag is to target the tranZPUter memory.
-v | --verbose Output more messages.
Examples:
tzclear -a 0x000000 -s 0x200 -b 0xAA # Clears memory locations in the tranZPUter memory from 0x000000 to 0x000200 using value 0xAA.
tzclk
Usage: | tzclk |
Parameters: | See the synopsis below. |
Architecture: | K64F |
Host: | zOS |
Description: | Set the Z80 alternative CPU frequency. |
TZCLK v1.0
Commands:-
-h | --help This help text.
-f | --freq Desired CPU clock frequency.
Options:-
-e | --enable Enable the secondary CPU clock.
-d | --disable Disable the secondary CPU clock.
-v | --verbose Output more messages.
Examples:
tzclk --freq 4000000 --enable # Set the secondary CPU clock frequency to 4MHz and enable its use on the tranZPUter board.
tzreset
Usage: | tzreset |
Parameters: | See the synopsis below. |
Architecture: | K64F |
Host: | zOS |
Description: | Reset the tranZPUter. |
TZRESET v1.0
Commands:-
-h | --help This help text.
-r | --reset Perform a hardware reset.
-l | --load Reload the default ROMS.
-m | --memorymode <val> Set the memory mode.
Options:-
-v | --verbose Output more messages.
Examples:
tzreset -r # Resets the Z80 and associated tranZPUter logic.
tzio
tzio | Z80 I/O Port read/write tool. |
TZIO v1.1
Commands:-
-h | --help This help text.
-o | --out <port> Output to I/O address.
-i | --in <port> Input from I/O address.
Options:-
-b | --byte Byte value to send to the I/O port in the --out command, defaults to 0x00.
-m | --mainboard Operations will take place on the MZ80A mainboard. Default without this flag is to target the tranZPUter I/O domain.
-v | --verbose Output more messages.
Examples:
tzio --out 0xf8 --byte 0x10 # Setup the FPGA Video mode at address 0xf8.
tzflupd
tzflupd | K64F FlashRAM update tool. Update the running zOS/ZPUTA kernel with a later version. |
TZFLUPD v1.1
Commands:-
-h | --help This help text.
-f | --file Binary file to upload and flash into K64F.
Options:-
-v | --verbose Output more messages.
Examples:
tzflupd -f zOS_22012021_001.bin --verbose # Upload and program the zOS_22012021_001.bin file into the K64F flash memory.
Performance Testing Commands
One of the key questions with ZPU hardware or indeed any CPU is how it’s performance compares to other CPU’s. It is also a key indicator if design changes, such as CPU Cache algorithms are beneficial for general processing purposes.
To this end I have ported two well known Performance benchmark programs to the zOS/ZPUTA environment, namely Dhrystone and CoreMark. Dhrystone was the original defacto indicator of performance and it ascertains a Dhrystone MIPS value which can then be compared against a VAX 11/780 which benchmarks at 1DMIPS. This gives a reasonable indicator of CPU performance.
A later addition to the performance testing came about with CoreMark which tries to overcome the deficiencies in Dhrystone testing. CoreMark is generally used now in preference to Dhrystone.
Interestingly, running CoreMark, the 120MHz K64F ARM Cortex-M4 (Score 86) is about 4 times faster than the ZPU Evo (Score 22) showing the advantages of more advanced architectures, caching algorithms
and silicon fabrication as opposed to a standard programmed FPGA. No doubt on better FPGA’s than I’ve been using the ZPU Evo will narrow the gap but the price is prohibitive (ie. Arria/Stratix FPGA’s).
dhry
Usage: | dhry |
Parameters: | |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Run the Dhrystone Test v2.1 to ascertain the performance of the CPU and memory subsystem. This is useful to compare CPU models. |
coremark
Usage: | coremark |
Parameters: | |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Run the CoreMark Test v1.0 to ascertain a more recent performance analysis of the CPU and memory subsystem. This is useful to compare CPU models. |
Disk IO Commands
This is a set of low level disk utilities working just above the SD SPI interface. The commands are issued direct to the SD card and data read/written accordingly. Generally, these commands
are used in testing or repairing an SD card.
ddump
Usage: | ddump [<pd#> <sect>] |
Parameters: | [<pd#> <sect>] All parameters are optional. If no parameter given then the previous or default will be used. <pd#> - Physical disk Id, ie. 0 for first drive. <sect> - LBA sector number to dump. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Dump a requested disk sector to screen as a hex listing. |
dinit
Usage: | dinit <pd#> [<card type>] |
Parameters: | <pd#> - Physical disk Id, ie. 0 for first drive. <card type> - Optional card type, 1 = MMC ver 3, 2 = SD ver 1, 4 = SD ver 2. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Initialize the SD disk system, required whenever there is a card change, performed automatically on boot. |
dstat
Usage: | dstat <pd#> |
Parameters: | <pd#> - Physical disk Id, ie. 0 for first drive. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Show the disk status (ie. initialised). |
dioctl
Usage: | dioctl <pd#> |
Parameters: | <pd#> - Physical disk Id, ie. 0 for first drive. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Currently ioctl isnt fully implemented, only CTRL_SYNC exists which flushes any data held in memory to the SD disk. |
Disk Buffer Commands
This is a set of low level SD disk commands which work with a buffer, enabling fetching and manipulation of data on the SD card. Generally, these commands are used in testing or repairing an SD card.
bdump
Usage: | bdump <ofs> |
Parameters: | <ofs> - Offset within the disk buffer to start dumping from. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Dump the in-memory disk buffer, which was filled with the bread, bfill, bedit commands. |
bedit
Usage: | bedit <ofs> [<data>] … |
Parameters: | <ofs> - Offset within the disk buffer to make edit changes.<data> … - space seperated list of bytes to place into the disk buffer. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Edit the in-memory disk buffer to make changes prior to SD card update with bwrite. |
bfill
Usage: | bfill <val> |
Parameters: | <val> - 8bit value with which to fill the disk buffer. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Fill the in-memory disk buffer with a fixed 8bit value <val>. |
blen
Usage: | blen <len> |
Parameters: | <len> - Set the size of the disk buffer and the bread/bwrite block size to value <len>. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Set the read/write length for fread/fwrite command, also sets the in-memory buffer size. |
bread
Usage: | bread <pd#> <sect> [<num>] |
Parameters: | <pd#> - Physical disk Id, ie. 0 for first drive. <sect> - LBA sector number to read. <num> - Number of sectors to read. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Read a sector(s) into the in-memory disk buffer to view/change. |
bwrite
Usage: | bwrite <pd#> <sect> [<num>] |
Parameters: | <pd#> - Physical disk Id, ie. 0 for first drive. <sect> - LBA sector number to read. <num> - Number of sectors to write. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Write contents of the in-memory disk buffer to the SD card disk for the given number of sector(s). |
Filesystem Commands
These are the Fat Filesystem level commands operating directly with Elm-Chan FatFS libraries. They format, mount, read, write and manipulate files stored within the Microsoft FAT32/exFAT filesystem. The commands are very similar to MSDOS commands just preceeded with an ‘f’ to differentiate them from the other commands within zOS/ZPUTA.
falloc
Usage: | falloc <fsz> <opt> |
Parameters: | <fsz> - Expand file to this size. <opt> - 0 to preallocate, 1 to allocate immediately. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Allocate contiguous blocks to the open file (ie. preallocate space.) The file contents are wiped so do not use this to expand an existing file. |
fattr
Usage: | fattr <atrr> <mask> <name> |
Parameters: | <attr> - Logical OR of one or more of the following attributes: 0x1 = Read Only, 0x2 = Hidden, 0x4 - System, 0x20 = Archived. <mask> - Attribute mask that specifies which attribute is changed. <name> - Filename to change. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Change a files attribute/mode, similar to chmod on Unix. |
fcat
Usage: | fcat <name> |
Parameters: | <name> - Absolute or relative path and filename. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Output the contents of file to the console. |
fcd
Usage: | fcd <path> |
Parameters: | <path> - Absolute or relative path. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Change current directory to the one given. |
fclose
Usage: | fclose |
Parameters: | |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Close a file previously opened by the fopen command. |
fconcat
Usage: | fconcat <src fn1> <src fn2> <dst fn> |
Parameters: | <src fn1> - Source filename 1, including absolute or relative path. <src fn2> - Source filename 1, including absolute or relative path. <dst fn> - Destination file to be created, including absolute or relative path. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Combine the two given source files into the destination file. |
fcp
Usage: | fcp <src file> <dst file> |
Parameters: | <src file> - Source file, including absolute or relative path. <dst file> - Destination file, including absolute or relative path. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Copy (duplicate) a file. |
fdel
Usage: | fdel <filename> |
Parameters: | <filename> - Filename, including absolute or relative path. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Delete the given file from the SD disk. |
fdir
Usage: | fdir [<path>] |
Parameters: | <path> - Optional Absolute or relative path. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Show the current directory contents or the contents of the directory referenced by <path>. |
fdrive
Usage: | fdrive <path> |
Parameters: | <path> - Absolute or relative path. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Change the current drive to the one given. |
fdump
Usage: | fdump <name> [<width>] |
Parameters: | <name> - Filename, including absolute or relative path. <width> - Optional word width, 8, 16 or 32 bit. Defaults to 8 bit. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Dump the ientire contents of a file to the terminal as a hex dump with the optional given word length. |
fexec
Usage: | fexec <name> <ldAddr> <xAddr> <mode> |
Parameters: | <name> - Filename, including absolute or relative path. <ldAddr> - Load address in memory. <xAddr> - Execution address of the loaded file. <mode> - Execution mode, 0 = Call and return, 1 = Jump with no return. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Load and execute a given program file. Use this to test programs or to run non-standard applications. |
finit
Usage: | finit <ld#> [<mount>] |
Parameters: | <ld#> - Logical drive number, ie. 0 [<mount>] - Optional mount point for the logical drive. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Force initialise the volume and optionally mount it on a given mount point. This is normally used when an SD card is changed and the dinit command is used or a physical drive has more than one volume on it. |
finspect
Usage: | finspect <start pos> <len> |
Parameters: | <start pos> - Position in open file where to read. <len> - Length of data to read from the file. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Read part of a file opened with fopen and examine a portion of its contents. The contents are dumped out in 8bit hex format. |
flabel
Usage: | flabel <label> |
Parameters: | <label> - Upto 8 characters. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Set volume label to the <label> given. |
fload
Usage: | fload <name> [<addr>] |
Parameters: | <name> - Filename, including absolute or relative path. [<addr>] - Optional address where to load the data. If this value isnt given, the file is loaded into the application start address specified at OS build time. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Load a file into memory. |
fmkdir
Usage: | fmkdir <dir name> |
Parameters: | <dir name> - An absolute or relative pathname for a directory. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Create a new directory using the <dir name> given. |
fmkfs
Usage: | fmkfs <ld#> <type> <au> |
Parameters: | <ld#> - Logical drive number, ie. 0 <type> - 0x01 = FAT, 0x02 = FAT32, 0x04 = exFAT.<au> - Allocation unit size. 0 = default at OS build time. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Create FAT volume on the given Logical drive. |
fopen
Usage: | fopen <mode> <file> |
Parameters: | <mode> - Mode to open the file, it is a logical OR of the following values: 0x00 = Open Existing, 0x01 = Read, 0x02 = Write, 0x04 = Create New, 0x08 = Create always, 0x10 = Open always, 0x30 = Open for append. <file> - Filename, including absolute or relative path. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Open a file within the system using the given modes. The opened file can then be operated upon by commands such as fread, finspect, fwrite etc. |
fread
Usage: | fread <len> |
Parameters: | <len> - Length of data to read. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Read part of a file from the current position into the in-memory buffer. Read <len> bytes. |
frename
Usage: | frename <orig name> <new name> |
Parameters: | <orig name> - Original name of file, including absolute or relative path. <new name> - New name of file, including absolute or relative path. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Rename a file from <original> to <new>. |
fsave
Usage: | fsave <name> <addr> <len> |
Parameters: | <name> - Filename, including absolute or relative path. <addr> - Address within memory as start position of the save operation. <len> - Length in bytes to write into the file from <addr>. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Save a section of memory from <addr> of <len bytes into a file |
fseek
Usage: | fseek <ofs> |
Parameters: | <ofs> - Position in bytes to place the read/write pointer within the file previously open with fopen. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Move the filepointer within a file previously opened with fopen. This is used to move to a position within a file to enable a read/write operation at that position. |
fshowdir
Usage: | fshowdir |
Parameters: | |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Show the current directory. |
fstat
Usage: | fstat [<path>] |
Parameters: | [<path>] - Absolute or relative drive and path, ie: 0:/ |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Show information about the given <path>. |
ftime
Usage: | ftime <y> <m> <d> <h> <M> <s> <fn> |
Parameters: | <y> = Year YYYY <m> - Month MM <d> - Day DD <h> - Hour hh <M> - Minute mm <s> - Second ss <fn> - Filename, including absolute or relative path. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Change timestamp of a given file. |
ftrunc
Usage: | ftrunc |
Parameters: | |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Truncate the file at current file position, ie. if a file is 1000 bytes long, an fseek is made to 500 followed by ftrunc, the file will be shortened to 500 bytes. |
fwrite
Usage: | fwrite <len> |
Parameters: | <len> - Length in bytes of data from the in-memory disk buffer to write to the opened file. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Write part of the in-memory disk buffer into the file opened with fopen. |
fxtract
Usage: | fxtract <src> <dst> <start pos> <len> |
Parameters: | <src> - Source file, including absolute or relative path. <dst> - Destination file, including absolute or relative path. <start pos> - Startimg position within the source file to commence reading. <len> - Length of bytes to read from source file and write to destination file. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Extract a portion of a source file and write it into the destination file. |
Memory Commands
These are low level memory editting, viewing, searching, testing and checking memory performance commands. Generally they are intended for testing or debugging both hardware and software. If you write an application and it crashes, these are the first commands to turn to in understanding why it crashed.
mclear
Usage: | mclear <start> <end> [<word>] |
Parameters: | <start> - Start address to perform clear. <end> - End address to finish clear. [<word>] - Optional value (default is 0) to fill memory with. This is a 32bit word. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Clear/fill memory with a fixed value. |
mcopy
Usage: | mcopy <start> <end> <dst addr> |
Parameters: | <start> - Start address to start copying. <end> - End address to finish copying. <dst addr> - Destination address to write the copied data. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Copy a block of memory to a given destination, |
mdiff
Usage: | mdiff <start> <end> <cmp addr> |
Parameters: | <start> - Start address to start comparison. <end> - End address to finish comparison. <cmp addr> - Location at which to start comparison of data, ie <start> == <cmp addr> for <end> - <start> bytes. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Compare a block of memory with another block. |
mdump
Usage: | mdump [<start> [<end>] [<size>]] |
Parameters: | <start> - Start address of memory to dump (optional). <end> - End address of memory dump. <size> - Number of bytes to dump out. All parameters are optional, if <start> isnt given then the last location dumped will be taken. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Dump a block of memory to screen in hex format. |
mperf
Usage: | mperf <start> <end> [<width>] [<size>] |
Parameters: | <start> - Start address for memory performance test. <end> - End address of memory performance test. <width> - Width of data to read/write. <size> - Number of bytes of memory to iterate over for the test. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Test memory performance. This gives a value for the CPU <-> Memory, not actual memory performance. As the ZPU is stack based, it uses memory to perform a memory action, so it will never realise full memory bandwidth, hence the need for extended instructions such as LDIR. |
msrch
Usage: | msrch <start> <end> <value> |
Parameters: | <start> - Start address for memory search. <end> - End address of memory search. <value> - Value to search memory for (32 bit). |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Search memory for a given value. This app is currently a work in progress and will be expanded to search for multiple values and strings in due course. |
mtest
Usage: | mtest [<start> [<end>] [iter] [test mask] |
Parameters: | <start> - Start address for memory test. <end> - End address of memory test. <iter> - Number of iterations to perform in the test.. <test mask> - a 32bit mask to indicate which tests to perform. Test mask values are: 0x00001000 - Perform 8 bit tests. 0x00002000 - perform 16 bit tests. 0x00004000 - Perform 32 bit tests. The lower bits specify which tests to perform. 0x00000001 - 8bit R/W ascending test pattern. 0x00000002 - 8bit R/W walking test pattern. 0x00000004 - 8bit Read ascending test pattern. 0x00000008 - 8bit Write walking bit pattern. 0x00000010 - 8bit echo and sticky bit test. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Test memory with several types of tests to locate bad or sticky bits. |
meb
Usage: | meb <addr> <byte> […] |
Parameters: | <addr> - Address to edit. <byte> […] - Optional list of bytes to write. If no bytes provided then enter interactive editting mode. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Edit/change memory at the byte level. |
meh
Usage: | meh <addr> <h-word> […] |
Parameters: | <addr> - Address to edit. <h-word> […] - Optional list of 16bit half-words to write. If no bytes provided then enter interactive editting mode. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Edit/change memory at the half-word (16bit) level. ] |
mew
Usage: | mew <addr> <word> […] |
Parameters: | <addr> - Address to edit. <word> […] - Optional list of 32bit words to write. If no bytes provided then enter interactive editting mode. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Edit/change memory at the word (32bit) level. ] |
Hardware Commands
These are hardware testing commands normally used to verify a hardware change on the ZPU SoC. They are of little general use.
hr
Usage: | hr |
Parameters: | |
Architecture: | ZPU |
Host: | zOS, ZPUTA |
Description: | Display the ZPU SoC real-time Register Information. This app is used for debugging. |
ht
Usage: | ht |
Parameters: | |
Architecture: | ZPU |
Host: | zOS, ZPUTA |
Description: | Display the real-time Timer information from the ZPU SoC. This app is used for debugging. |
Program Execution Commands
These are program control commands for executing a program loaded into memory. Eventually a debugger will be added for completeness.
call
Usage: | call <addr> |
Parameters: | <addr> - Address in memory to execute code. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Call function @ <addr> and expect it to return with a return code. |
jmp
Usage: | jmp <addr> |
Parameters: | <addr> - Address in memory to execute code. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Execute code @ <addr> and no return is expected, a reset will be required to continue with the OS normal activities. |
Miscellaneous Commands
These are the remaining commands which dont have a home in the other groups. One command of note is ‘time’, this is needed to set or query the RTC which is present on both the ZPU and the K64F.
restart
Usage: | restart |
Parameters: | |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Restart the OS, useful if the system goes into an unknown state. |
reset
Usage: | reset |
Parameters: | |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | Issue the equivalent of a cold start reset of the system. |
help
Usage: | help [<cmd %>|<group %>] |
Parameters: | <cmd %> - Command filter pattern to filter out only the required commands. <group %> - Group filter pattern to filter out commands which belong to a group. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | The in-built help screen. The default action is to list out all commands currently understood within the OS including applications. If a filter pattern is given then only those commands or group of commands matching the pattern are displated. |
info
Usage: | info |
Parameters: | |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | A simple application to display the configuration information of the underlying CPU and SoC. |
time
Usage: | time [<y> <m> <d> <h> <M> <s>] |
Parameters: | <y> - Year YYYY <m> - Month MM <d> - Day DD <h> - Hour hh <M> - Minute mm <s> - Second ss. |
Architecture: | ZPU, K64F |
Host: | zOS, ZPUTA |
Description: | If no parameters are given then show the current time and date. If parameters given, validate and set the RTC to the given date and time. |