Jump to content
IGNORED

How does a real console & TV behave with a "no kernel" program?


JeffJetton

Recommended Posts

Hello all,

 

Newbie 2600 programmer here. I've been playing around with creating very simple code examples as a way of helping me to figure out how all this stuff works and fits together.

 

I've found that, if I don't do any sort of VSYNC or other typical kernel responsibilities (VBLANKs, etc.), I can get a "bare bones" program (similar to Tjoppen's minimal demo but not as tricky) to run in Stella just fine. I can get it to run in Javatari (on 8bitworkshop) too, with a bit of resetting/fiddling. Auto-recognition of NTSC/PAL fails, of course. That's to be expected, I guess.

 

But, out of curiosity, what if I were to try to run it on a real VCS? I know the TIA will take care of the horizontal beam movement without any help from me. But what about the vertical movement? Will the TV just keep scanning downward until it blows up or something? :-P

 

Thanks,

 

- Jeff

Edited by JeffJetton
Link to comment
Share on other sites

Yup, without vertical sync the TV will keep scanning down until it reaches its "natural" limit and starts over. Whatever you draw with the Atari will show up at some slower-than-usual frame rate, assuming the TV shows it at all. Some more modern TVs will suppress any signal that doesn't have VSYNC.

Edited by TheHoboInYourRoom
Link to comment
Share on other sites

SpiceWare pointed me to his Jitter program / ROM to explore screen roll and timings. Figured it'd be good to know how tolerant different RF connections are (VCRs, TVs, LCDs with RF tuner, etc..)

http://atariage.com/forums/blog/148/entry-12666-jitter-3-recovery-time/

Very cool. I'll check it out!

Edited by JeffJetton
  • Like 1
Link to comment
Share on other sites

The limit can be different from set to set as well, so there's no guarantee that your program could draw a stable picture on any given TV.

Well specifically, I'm working with very basic programs that either don't display anything (other than the background), like this:

 

MyLoop  lda #$CE
        sta COLUBK

        jmp MyLoop

 

Or that display the same thing on every scanline, like this:

 

SetCols lda #$06
        sta COLUBK
        lda #$46
        sta COLUPF

        lda #%10110111
        sta PF1

        jmp SetCols

I'm assuming that, if these rolled, it wouldn't really make much of a difference, eh?

Link to comment
Share on other sites

I'm assuming that, if these rolled, it wouldn't really make much of a difference, eh?

Indeed not.

 

Oh, a good thing to know for the future is that the TIA's registers latch the values written to them, so they won't change until you write different values. So, your example programs could write their values once and then fall into infinite loops.

Link to comment
Share on other sites

Oh, a good thing to know for the future is that the TIA's registers latch the values written to them, so they won't change until you write different values. So, your example programs could write their values once and then fall into infinite loops.

I figured. But since I'm doing absolutely nothing after setting them, there wasn't really anywhere else I could think of to jump to. :D

 

Not sure if this sort of thing is kosher (a jmp jumping to itself):

 

InfLoop jmp InfLoop

Is it?

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...