11th of May 2020 – Vide 2.6 RC01

Spreading my own resources a bit thin lately.
a) Investigating the crash bug in Vectorblade still shows no results
b) helping some other vectrex coders
c) preparing a Vide release
(d) playing games)

Anyway – I have a new Vide Release candidate – it has been over a year since last official changes to Vide. Still – there is no “big thing” here. It is rather a maintenance release.
Following are my own notes regarding the changes:

(The “C Warnings” are not new in this release, only discovered and documented!)

  • C: WARNING – code like below does not work – even though dp_VIA_port_b is declared as volatile, it is not read again!
    dp_VIA_port_b = 0x01;
    if ((dp_VIA_port_b & 0x40) == 0x40)


    Implementation of “volatile” is compiler dependend, to be on the save side explicit memory barriers should be set, like:
    asm volatile (“” ::: “memory”); // memory barrier

    before the if clause in above example!
  • C: WARNING – Code MIGHT be build wrongly if the second parameter of a function is 8 bit and the first is 16 bit, example:
    —–
    extern void foo(unsigned long int x, unsigned int b);
    static unsigned int v;
    void bar(void)
    {
    foo(v, 0);
    }

    —–
    This is a gcc bug, documented in:
    https://gitlab.com/dfffffff/gcc6809/-/issues/6“,
    also documented methods to circumvent (usage of compile parameters!)!
    For new C – projects the command line parameters
    “-fno-ipa-reference -ftree-ter” are added per default!
  • C: linkage changed (Peer) – only library/calls which are needed are linked, removed option to use RUM INLINED
  • C: new CRT0, which always has 48k support enabled
    (old assembler sources (YM-song data…) generated might have a line
    .bank rom(BASE=0x0000,SIZE=0x8000,FSFX=_rom)
    these must be exchanged with
    .bank rom(BASE=0x0000,SIZE=0xc000,FSFX=_rom)
  • C: assert functionality added (Peer)
    in “main” just add
    #inlude <assert.h>
    Per default asserts are active, do switch them off use either in code: “#define NDEBUG”,
    or add the CCFLAG parameter (in project) “-D NDEBUG”.
    Active asserts use precious cycles!
    If an asserts fires, a message with the assert parameters are output.
    On a button press the program continues (at your own risk)!
  • misc: fixed download link for YM files (https now)
  • vecxi: added mouse Analog -> coordinate input method (Graham)
    Note mouse coordinates in window map to scale +-127, to get 1:1, either change the scale of drawing…
    Or “zoom” in using configuration “emulated vectrex integrator max” (smaller values)
  • vedi: Add cmd A to editor (on OSX this has to be done manually for all field… I am certain I missed a few!)
  • vedi: add cmd A/X/C/V to search
  • vedi: all (in Vide added) tabs are now spaces
  • dissi/vecxi: added “nmi”
  • vecci: added hotkeys (standard) for delete (del) copy(meta c)/cut(meta x)/paste(meta v) undo(meta z)/redo(meta shift z) selectAll (meta a) and mode switch (M)
    -> needs new config settings
    Win -> meta = CTRL
    Max -> meta = Command
  • vecxi: added “super” save to debug when “SHIFT” is pressed during save (takes quiet some time, depending on the backstep configuration)
  • all: added more debug info to startup and search of VIDE_HOME
  • util: added some vecVefer conversion modes (8)
  • test: for testing purposes added a vectrex color mode (Jason)
  • vecci: added (text-)import filter for synced lists
  • vecci: added import filter for Gyrock lists
  • vecci: added template for smartlist with NO SHIFT REGISTER usage
  • vedi: added “*.md” files to be editable
  • vedi: pretty print asm if then else elseif ifdef … Only 1 space “insert”
  • vecxi: added “faulty” VIA mode
  • vedi: if resulting binary is too large – it prints the size!
  • -vecxi: Changes done in Vide for 100% cycle exact execution of VB
    (it still is not 100%!)
  • -vecxi: T1 timer one shot, was not “reset” with latch values after reaching 0, including one cycle “duration” of reset (reloaded value is shown “false” in vecxi since it shows “value+”)
    the real VIA shows hi ff, lo 0 and than the “real” value appears next round – >there is a delay of one cycle!
  • -vecxi: t2 needs one cycle to START the actual timer, befor it counts down
  • -vecxi: values read with “lda” kind of instructions are read AFTER all instruction cycles are processed (however strange that may be)
  • -vecxi: STB direct, value is written after 3 of 4 cycles (STA after 4 !?!?!?)
  • -vecxi: Info (still): falsly shown in Vide:
    – State of CB1 (also interrupt flag CB1), vectrex has NO CB1
    – half carry is “uncertain” emulated
  • dissi: load in dissi different configured disassemblings
  • vedi: file not found exception when trying to edit file properties
  • dissi: UNOWN data types were possible in dissi (not disassembled)
  • dissi: strings could be “closed” with any negative value (instead of only 0x80) – during a string scan!
  • vedi: include in subdirectories were not parsed correctly (sometimes)
  • vecci: corrected VBSmartlist generation
  • vecxi: analog joystick vertical in relative mode had wrong directions
  • vecxi: better reconnect to joysticks that time out
  • vedi: lower/upper character independency added in label jumping
  • ym/vedi: ym menu was not enabled correctly
  • vecxi: soft reset no does not delete/initialize RAM
  • vecx: joystick buttons must only be set, when PSG regs are in output mode

Oops

Just received a new gcc.lib from Peer.
This is NOT YET included!
Beware!
The only function implemented in the downloadable version of gcc.lib is memcpy.


Download: Windows 32


Download: Windows 64


Download: Mac OSX


Download: Ubuntu Linux 32


Download: Ubuntu Linux 64


Download: Debian Linux 64


Download: Java (JRE 1.8)


Vectorblade Status

Still bug hunting for the crash. Starting to reduce code complexity in order to circle in.

I (we) have decided to not implement the Major Havoc stuff. This gives us some free space for additionional “nonsense” :-). I started using the space, by adding different Fighter “skins” for each type of shot, that can be fired:

On the other hand… except about 50 small screws for the cartridges – I have EVERYTHING I need to finish Vectorblade:

  • Instruction
  • Diary
  • Button
  • Box
  • Overlay
  • Overlay protection
  • Cartridge shell
  • PCB
  • Flash, chips and solder
  • Shipping boxes
  • “Fill material”
  • only about 50 screws 🙂

Now – I didn’t think this would be the case… I just have to FINISH Vectorblade (mostly finding the BUG).

Tagged on:

Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.