Downloads

Firmware:

New firmware update 03/13/2026: vetus-1-0-3.zip. This update is for version 1.0.3.

Vetus Pars 1.0.3

Fixed:

  • Search by type has been revamped. It will now list all of the saved chips of whichever type is selected in alphabetical order
  • Addressing has been optimized for significantly faster operation. Longer tests should be noticeably faster.
  • WHILE will now properly nest within other loops. Syntax remains unchanged.
  • MAX nested loops has been increased to an overkilling 32
  • BREAK LOOP is now more stable and should work inside or outside any kind of loop. This OpCode will end only the loop that immediately contains it.
  • Jump has been improved to work better with loops. Jumping from inside of a loop now properly ends any loop the jump command is called from and nested within. eg. LOOP LOOP JUMP 0x5 ENDLOOP ENDLOOP would end both loops and go to line 5.
  • Now, by JUMPing into a loop or series of loops you will continue inside of that loop starting at the line you jumped to until the loop finishes. For obvious reasons it’s best to NOT jump into loops but it will not structurally break your code if you do so (be mindful of variables)
  • The 16 bit address OpCodes have been increased to 32 bit. Where as before when defining an address you would use 0x0 as the first argument to show you were defining the first 8 bits of the address, and for the next 8 bits the first argument would be 0x8; we now can use 0x10 (16) as the first argument to define the pins for a 24 bit address and 0x18 (24) as the first argument to define the last 8 pins of a 32 bit address. For ex: DEFADDR 0x0 0x04030201 0x08070605 – would define pins 1 – 8 as addresses 0-7, DEFADDR 0x8 0x0C0B0A09 0x100F0E0D – would define pins 9 – 16 as address bits 8 – 15, DEFADDR 0x10 0x14131211 0x18171615 would define pins 17 – 24 as address bits 16 – 23, DEFADDR 0x18 0x1C1B1A19 0x201F1E1D would define pins 25 – 32 as address bits 24 – 31. Then of course, you would use the number of address bits you need as the first argument of SetAddress and GetAddress just as before only now you can have up to 32.

Added on Mar 13, 2026.

*Please note that the Windows version 1.0.2 has been replaced with 1.0.2a. If you are unable to save chip files please download version 1.0.2a and that should resolve your issue.

Vetus GUI – Test Uploading/Writing

What’s new? Well, a fair bit. First of all, the UI of VetusGUI has been made a little better looking. Hopefully, you agree. It has also been made more useful for those who want more control of testing and the tests in the board. Here is a run down of what’s been changed and how to use the new features. The link is below the update notes. You SHOULD read the notes if you plan to make your own tests.

UI Fixes

  • The UI is now laid out a little better and everything you need for chips is on one screen.
  • After loading chips from Vetus you now have the option to delete or load a selected chip.
  • Tooltips have been added
  • The code window now has line numbers for easier determination of jump locations.
  • The code window now has color coded tags. Opcodes are now blue, comments are green and so on.
  • A toggle has been added to darken the code window and whiten the normal text for easier viewing.
  • You can now add comments to your code use /* comment here */ type tags. Do not comment past the code window. If you need more space then use enter to go to the next line. Comment one line at a time but you only need to use /* */ once.
  • You can now copy, cut, paste and select all using the mouse.
  • There is now a button near the code window for error checking. It gives a basic test for syntax. It should be useful.
  • Code formatting such as indentations and spaces will be preserved through file saving and on the code box in VetusGUI. At the moment is still not possible to format code imported from Vertus Pars.

Variables

Variables are now at your disposal. You can use a variable for a value or a register. Variables do not use code space so your 256 opcode lines are not affected. To declare a variable you need to use the keyword “DIM” (call me nostalgic) like so: DIM MYVAR 0xFF now you can use MYVAR wherever you would normally want to use 0xFF. Yeah, that’s not really a variable because it doesn’t vary. Fear not. To use a register as a variable you simply need to declare it like you would to get a value from it. For example, DIM MYREG #R5. will allow you to use MYREG where you would normally use register 5 like a normal variable, setting and retrieving the value via the variable name only.

Functions

You can now create your own functions in VetusGUI and the newest firmware update has been reworked to allow for them. At the moment, the functions can help you do several things. First, they can help you have cleaner code. If you have something you need to do over and over again it’s much better if you only have to write the whole thing once. This is also save on code space. As of right now, Vetus gives you 256 lines of opcodes to work with. For m most test that should be enough, but adding functions makes it even better because the firmware has been updated so that the function code is only saved once unlike if you had the same code multiple times. And finally, you can return values by sending results to a register.

How do they work?

To create a function you simply need to use the FUNC tag after ENDTEST. You must also give it a name. So, for function myFunc you would use FUNC myFunc. That’s it. When using functions you don’t need to make sure you add all of the arguments like with other opcodes. After you’ve created the function name, on the next line you create your function using any of the other opcodes available. Once you’ve finished you end the function with ENDFUNC. And that’s all you need to do. After you’ve created a function you can use it anywhere in your code by using CALL. Using myFunc again as an example, CALL myFunc. And there you have it. That’s all there is to it. Below is a sample of what using a function might look like.

DIM TIMES #R0

REGLOD TIMES 0x5 0x0

LOOP TIMES 0x0 0x0
     CALL shiftLED
ENDLOOP 0x0 0x0 0x0

ENDTEST 0x0 0x0 0x0

FUNC shiftLED
     LEDON 0x0 0x0 0x0
     DELMS 0x12C 0x0 0x0
     LEDOFF 0x0 0x0 0x0
     DELMS 0x12C 0x0 0x0
ENDFUNC

And that right there is how both the variables and functions work. You can test the code above and it should give you 5 blinks before failing.

Test Code Files

Documentation

Previous Updates:

New firmware update 02/05/2026: vetus-1-0-2.zip. This update is for version 1.0.2.

Vetus Pars 1.0.2

Fixed:

  • You can now delete one chip at a time. When you delete a chip, the last chip in the list will be move to replace the deleted chip.
  • This version is required for code that uses the new functions system. As such it should be considered mandatory so that is compatible with code written from this point forward.
  • various bug fixes and tweaks.

Added on Feb.5, 2026. This version is required for code that uses FUNC, ENDFUNC, or CALL.

New firmware update: vetus_fw_101.zip. This update is for version 1.0.1. 

Vetus Pars 1.0.1

Fixed:

  • a scrolling bug that locked the unit when trying to open chips list when more then 32 are saved.

Update:

  • menu now scrolls via page. You can now scroll through 10 chips then the menu will flip and show the next 10 items.
  • Deleting single chips are now implemented. When Vetus GUI is updated (soon) you will be able to delete one chip at a time. Whatever
    chip you delete will be replaced by the last chip in the list before the chip was deleted.