|
Post by Malban on May 6, 2020 14:28:42 GMT -5
... from the other thread...
I was intrigued, if my interrupt driven approach I came up with in "the other thread" actually can be of use.
YES IT CAN!
Here the link to an "interrupt driven Wangle"...
The screen is displayed the whole time - no "black out". When the "interception checker" is working - the current checked line is highlighted... so not all results are IMMEDIATELY displayed. But you actually can SEE the worker working - which I find nice!
A check of ALL lines in the interrupt takes about 6 seconds - sounds "long" but I find it better playable - since you can immediately continue playing... just when you have finished - you need to await the last update - to get the "YOU WIN".
I did not tweak any "vector performance" - and I am afraid the thing updates in over 30000 cycles. So to be on the save side, I set the WaitRecal to 50000 cycles. With a good overlay the flicker is barely visible!
If you play it in Vide... a) you need an analog joystick b) you must disable "Try autosync" in the configuration (due to the different timing parameters)
And a link to the source:
Cheers Malban
|
|
|
Post by playvectrex on Jun 4, 2020 19:32:10 GMT -5
I just read the interrupt driven approach from the other thread. Very cool to see it checking the structure in real-time continuously Also, nice Vectorblade flex ;D
|
|
|
Post by kokovec on Jun 16, 2020 22:29:06 GMT -5
Just tried it out on my Vectrex. Very cool. Although my Vectrex buzz never sounded so choppy.
|
|
|
Post by D-Type on May 14, 2021 16:49:24 GMT -5
Standing on the Shoulders of Giants, I did my own little Vectrex IRQ test in Forth, which emits an asterisk to the terminal at 50Hz. Once I'd fixed an issue with my Forth config that was stopping me from setting the IRQ vector, I was surprised to find that it worked first time! At the Forth command prompt, you install "irq-setup" (I use the "is" macro) and then "eirq" or "dirq" to enable/disable the interrupt. Once the interrupt is running, I'm typing "intensity", which is a simple screen intensity test word I have, it's a bit tricky to see when the terminal is full of stars. It's not perfect, without the IRQ running it says "Hello World", with the IRQ it gets truncated to "Hello" for some reason, but that's a problem for tomorrow. This interrupt is not that useful in it's current form, but one day it might turn into something more interesting Here's the code: asm: here equ _rti rti, ;c \ -- ; code eirq $ef # andcc, next ;c \ -- ; code dirq $10 # orcc, next ;c \ -- ;
: irq-handler \ For anything except the t2 timer we want to rti immediately VIA_int_flags c@ $20 and 0= if exit then
\ Set timer to value from default BIOS setting Vec_Rfrsh @ VIA_t2_lo !
$2a emit \ Asterisk to console _rti execute \ Return from Interrupt ;
: irq-setup \ -- ; \ Store "JMP $handler-addr" to IRQ vector $7e Vec_IRQ_Vector c! ['] irq-handler Vec_IRQ_Vector 1+ !
\ Set timer to value from default BIOS setting Vec_Rfrsh @ VIA_t2_lo !
\ Enable t2 interrupt generation in VIA VIA_int_enable c@ $20 or VIA_int_enable c! ;
\ Macro : is [compile] irq-setup ;
|
|