I must revise the last sentence of my last entry:
“… first two “devices” will be more or less “plug and play” …“
that was not the case!
Looking at the resulting source code after finally implementing the two different versions of veclink cables (which are known to me) they DO seem to have been easy to implement. But it certainly did not feel like being easy or plug and play.
- Malban does not have any of these cables in hardware and he can thus not link his own vectri and experiment.
(and remembering the experiences of previous hardware desasters, he does not want to build one or both by himself)
- Malban does not really have many sources to go on. He has got a couple of binaries which use one or the other cable – and his own documentation of a disassembled binary.
- Malban got a “picture” of how each version of the cables is wired.
That is about it.
Above that – even if Vide is outstanding (*cough*) at debugging vectrex binaries, Vide was never really built for debugging two vecxi instances at the same time which are connected via a “link” cable – which are trying to write single bits at the time and trying to synchronize all the time…
Anyway… the above image shows a working version of veclink V2, which is used by BerzerkArena.
BerzerkArena is an unfinished “prototype” done by Alex Herbert. I only recently got the binary image of a fellow vectrexian on the proboard forum.
Like the other known programs of Alex (YASI and Protector) BerzerkArena (though unfinished) is a very polished and IMHO outstanding vectrex game. The two player variant (there also is a single player game incorporated using a computer adversary) using a link cable plays very smoothly and is (to my knowledge) the only FPS game on the vectrex and must be very thrilling to play with another human.
In 1983 (that would have been 10 years before Doom!) that game would certainly have enspired most vectrex owners to buy a second vectrex and many, many more people to buy two vectri at once – YES in view of the used hardware (from 1983!) it IS that good a game!
Here another example, this time a show of veclink V1 used by a sample binary.
Both cable versions were (to my knowledge) conceived and realized by – again – Alex Herbert.
Version 1 uses all four joystick “buttons” of port 1 and uses the CA1 line (button 4) to synchronize. Looking at the description of the PSG and VIA and reading Alex late comments on version 1, it is revealed that version 1 is somewhat unstable, since button 4 (the CA1 line) does not always hold its desired voltage. So Alex did a revision 2 which only uses button 1-3 and leaves out the “unstable” button 4.
Reading his comments this one is much more stable. I strongly advise therefor – if anyone is interested in jumping on the train of doing veclink “games” – use the cable design veclink V2.
(The release version of Vide will include the wirings of the cables and example binaries – as will be (hopefully) provided for all emulated devices.)
Some technical changes to Vide:
- it is again possible (the feature was switched off some versions ago) to have more than one vecxi running at the same time
- new feature with the “bug” button on vecxi you set the (one) dissi instance to debug the “current” vecxi, you can switch dissi on the fly with this button from one vecxi to another (at the time of switching all breakpoints are removed from the late vecxi – where should they go?)
- all state windows follow the dissi switch accordingly
- the decision to only have ONE dissi was easy, since otherwise the cluttering of Vide with status windows would have been mega confusing
- following the path of “devices”, the lightpen can now also be inserted into port 0 (and works with the Engine Analyzer)
- devices keyboard0 and keyboard1 were added, both of them (the attached keys) can now be configured
- PSG emulation enhanced to respect “internal-storage” registers for both Input and Output of port A (see also new documentation for Vide, once it is somewhere available…)
- devices for veclink V1 and veclink V2 were added
- both devices have two ends (left and right)
- both devices are (java speaking) “statics”, meaning in Vide there is (of each version) only one cable (with two ends) available (if you emulated 4 vectri you still only have ONE veclink left and one veclink right (of each version)
- added IO to joystick buttons on analog window
- added tooltip to port A psg
- devices are NOT part of a savestate (anymore, they were when they were “physically” part of the vecxi emulation)!
- removed ZEROING “emulation”, did not fit the reality of Berzerk Arena
- emulation of veclink 1 requires a fast computer, otherwise the synchronization of two emulated vectri goes awry sometimes (“no link”). The emulation is sort of synchronized to (when a link cable is used) but the emulators run still in different threads. Ensuring the right timing for the connection if emulators run in different threads on slow computers… lets say … “I did not try to hard”…
- for emulation of veclink V1 the emulation of VIA had to be corrected, more explicitly the emulation of interrupt generation of CA1 interrupts. Befor it was just “if CA1 = 1 then IFL = 1“, now emulation also respects bit 0 of PCR of via that bit says (in layman’s terms):
“interrupt flag is set by transition low to high (bit == 1) or interrupt flag is set by transition high to low (bit == 0)”
only if that is correctly implemented veclink V1 does work!
- but implementing the above disabled lightpen emulation, since the old emulation was based on the simple CA1 interrupt generation
- the lightpen emulation now does not only respect the position of the beam but also the ~BLANK signal, otherwise not “enough” interrupts are generated (since the interrupt flag CA1 is always cleared by read or write of VIA Port A)…
- and documentation added (but not finished)
Thats all for today…
Thank you very much for VecLink emulation!
I can build you a veclink2 cable if you are able to send a wiring diagram. I can test on my hardware first too.
Thanks for the offer – and also thanks for the cable. The cable is working great and I have been able to test BerzerkArena and my own examples sources successfully!