|
Post by Peer on Jan 13, 2023 6:47:51 GMT -5
More digital archeology...
For reasons I won't go into here I was inspecting the code of the Test Rev. 4 cartridge and somehow ended up with a complete disassembly and analysis of the code. You can read all the details here:
Many Cheers, Peer
|
|
|
Post by VECTREXER on Jan 14, 2023 2:26:51 GMT -5
More digital archeology... For reasons I won't go into here I was inspecting the code of the Test Rev. 4 cartridge and somehow ended up with a complete disassembly and analysis of the code. You can read all the details here:
Many Cheers, Peer
If you create a new version of the Test Cart I would like to see a lot of different tests added. Which is also to say I would like to see the Test Cart future code laid out in such a way as to facilitate the addition of more tests in the future as well. Yes, your mentioned test additions would be nice to add for 50 Hz and extended Digital to Analog Convertor (DAC) testing. Would also like to see the following tests as well Light Pen Tests. 3D Imager Tests. Maybe other Tests as well test and stress all lines on the cart port for a full 32K test. PB6 and IRQ cartridge port lines tests. Possibly indicated by usage of an LED on the cartridge board. But at least test the lines and provide feed back in some manner. Dual Vectrex communication test. Used along with a test cable, provide for the ability to test 2 Vectrex consoles when using Alex Herbert's serial link communication library. As a functional test for other software that use the feature. Some tests might also benefit from additional notes and/or instructions on the screen. Such as a note for the controller joystick test. When only one joystick is connected the resulting test for the joystick will will show a the joystick connected to controller port 1 to be slightly off center. This will occur even when using a factory new joystick with perfect mechanical centering. However, when two joysticks in good condition are connected then both joysticks will show proper centering. This is a known point when testing. And when setting up a newly repaired joystick for proper electrical centering with the Vectrex. Accomplished using the two potentiometers located on the Vectrex controller's PC board. John Wolff (Mandtronix.com) makes a dongle for use in Vectrex controller port 2 during game play or testing to help with the issue. Nice to have this information in the test cart and presented to the Vectrex user. About the modular testing, for those with a smart cart of some sort (PiTrex, VecFever, VEXTREME, etc.) Might be nice to structure the test cart software internals so that other people can easily expand the code for their own needs. I am sure there is more I have forgotten to add here. When I rediscover my suggestions made in other posts I will try to update this reponse. Or add another response to the thread.
|
|
|
Post by Peer on Jan 14, 2023 2:58:09 GMT -5
Thanks a lot, VECTREXER, for your feedback and for your suggestions of additional tests! They all sound good, but, unfortunately I won't be able to code most of those myself due to lack of the respective hardware add-ons. I have a light-pen replica and a 3D-imager replica, but I have not yet dug into programming those. All the other hardware add-ons you mentioned, I do not own. But I will put the course code of the Test Rev. 4 online, once I have finished commenting and annotating all parts. I am through most parts, but there are still two of the subtests left. Likely I will also create a slightly modified version with only a few changes / improvements of the original tests, which I might call "Test Rev. 4.1". Then maybe others can take over and create a proper "Test Rev. 5" with all the additional hardware stuff tests. Many Cheers, Peer
|
|
|
Post by D-Type on Jan 14, 2023 3:50:47 GMT -5
Hi Peer, regarding the initial grid test, which you use to calibrate the overall X and Y screen size, what scale factor/timing does it use to draw the grid? You might recall some previous posts that concluded that the default X and Y size ratio is 13:15, depending on what lines you use on the overlay to calibrate against. But it's also useful to know what parameters were used to draw the grid so you know what to use when writing your own program. Also, are you disassembling by hand or using a program to assist? I recommend dasmfw for recreating 6809 source code, the results are excellent and it's much simpler to use that something like Ghidra. I'm currently using it to reverse engineer some 6502 code: github.com/phillipeaton/JETPAC_VIC-20_disassembly
|
|
|
Post by 8-Bit Waves on Jan 14, 2023 4:01:55 GMT -5
This is a neat project. I think those tests running at 50Hz would be great.
|
|
|
Post by D-Type on Jan 14, 2023 4:26:25 GMT -5
This is a neat project. I think those tests running at 50Hz would be great. Selectable between 50 and 60 would be better
|
|
|
Post by Peer on Jan 14, 2023 4:37:07 GMT -5
This is a neat project. I think those tests running at 50Hz would be great. Selectable between 50 and 60 would be better Oh boys, you are getting greedy...
|
|
|
Post by Peer on Jan 14, 2023 4:44:08 GMT -5
... Also, are you disassembling by hand or using a program to assist? I recommend dasmfw for recreating 6809 source code, the results are excellent and it's much simpler to use that something like Ghidra. I'm currently using it to reverse engineer some 6502 code: github.com/phillipeaton/JETPAC_VIC-20_disassemblyHehe, Malban , hope you read this: I am using Vide Which works absolutely great!!!
With dissy, you can save the disassembled binary as 6809 code. Dissy already flags all entry points of jumps and branch calls. And most valuable, dissy allows you to configure individual memory locations as either code or data, and data can be distinguished as bytes, word, ascii etc. And each time you change something, the disassembly is updated accordingly. And simply pausing the emulation at any time, you know in which part of the code you are, and vecxi shows you what currently happens on the screen. The rest is a bit of detective work and mental challenge, which I actually enjoy and find soothing and like to spend my time with. I had expected a slower pace, but I really made progress through the code pretty fast.
Still, thanks for pointing me to dasmfw. I will check that one out.
|
|
|
Post by Peer on Jan 14, 2023 9:17:52 GMT -5
Hi Peer, regarding the initial grid test, which you use to calibrate the overall X and Y screen size, what scale factor/timing does it use to draw the grid? You might recall some previous posts that concluded that the default X and Y size ratio is 13:15, depending on what lines you use on the overlay to calibrate against. But it's also useful to know what parameters were used to draw the grid so you know what to use when writing your own program. And now you are in for a treat: The outer boundary lines of the grid test are placed at Y-distances -77 and + 77 from the center, and at X-distances -64 and +64 from the center. Which translates to a Y:X ratio of 155:129 (you have to figure in the center point, so you get 2*77+1 : 2*64 + 1). So 13:15, or let's better say 15:13 (Y goes first in the Vectrex world) gets pretty close: 155 : 129 == 1.2015503 15 : 13 == 1.1538461 I think the aim of the designers / programmers was probably to get as closely as possible to 1.2, which would correspond to a desired ratio of 6 : 5. To avoid misinterpretation: We are talking about the four outer middle boundary segment lines, not about the four sides of the large chessboard grid.
|
|
|
Post by Peer on Jan 14, 2023 9:50:20 GMT -5
Added a section about the initial grid test and two new pictures of this test to the web page:
Also completed the cycle counts table.
|
|