Ruffsta Posted December 27, 2005 Share Posted December 27, 2005 was thinking there should be a full glossary here to help newbies.. VSYNC = vertical sync lines VBLANK = vertical blank lines WSYNC NUSIZ0 NUSIZ1 COLUP0 COLUP1 COLUPF COLUBK CTRLPF PF0 PF1 PF2 RESP0 RESP1 RESM1 AUDC0 AUDC1 AUDF0 AUDF1 AUDV0 AUDV1 GRP0 GRP1 ENAM1 HMP0 HMP1 HMM1 VDELP0 VDELP1 HMOVE HMCLR CXCLR CXM1P CXP1FB CXM1FB CXPPMM INPT4 SWCHA SWCHB INTIM TIM8T TIM64T ADC AND ASL BCC BCS BEQ BIT BMI BNE BPL .byte CLC CLD CMP CPY DEC DEX EOR INC INX JMP LDA LDX LDY LSR NOP ORA ORG ROL SBC SEC SED STA STX TAY TXA i know some more, but i do not know all of them, so if someone could fill in the rest it would be greatly appreciated. Quote Link to comment Share on other sites More sharing options...
SeaGtGruff Posted December 28, 2005 Share Posted December 28, 2005 was thinking there should be a full glossary here to help newbies.. <snip - see below> i know some more, but i do not know all of them, so if someone could fill in the rest it would be greatly appreciated. 989943[/snapback] VSYNC = vertical sync lines VSYNC doesn't output any lines. You can call this "vertical sync pulse," but I think it's usually called just "vertical sync." When you turn this on (move a 2 to it), the Atari starts to send a vertical sync pulse to the TV or monitor. You leave it on for 3 scan lines (i.e., strobe WSYNC 3 times, or count cycles, or use the timer), then you turn it off (move a 0 to it). If you're crunched for time and need every cycle you can scrape up, you can perform other instructions while you're waiting for the 3 scan lines to finish. VBLANK = vertical blank lines Again, VBLANK doesn't output any lines. I think this is usually called just "vertical blank," or "vertical blanking," but I prefer to call it "video blanking," because you can turn it on and off anywhere and anytime, even in the middle of a scan line, so I think "video blanking" is a more accurate description, whereas "vertical blanking" implies that it's used exclusively during the vertical blanking interval. It's true that that's the way most 2600 programmers use it (for the VBI only), since the 2600 handles the horizontal blanking interval automatically, but VBLANK can be used to lengthen the HBI, or even to draw on the screen in black (but the timing issues prevent that from being a very useful thing to do, except perhaps in static screen displays such as a title screen). Brief descriptions for the rest of the register names and opcodes are as follows: WSYNC - wait for horizontal sync By the way, I like to think of this in terms of a "carriage return/line feed" or "end of line" when I'm counting scan lines in a program. If you count cycles exactly, you can perform instructions all the way across the scan line and you won't need to use WSYNC-- like typing a paragraph and letting the words wraparound to the next lines automatically. But due to the timing differences that are caused by using branch instructions or crossing page boundaries, it's frequently necessary to use WSYNC to ensure that the instructions for the next line will line up exactly. NUSIZ0 - number and size of player 0 and missile 0 NUSIZ1 - number and size of player 1 and missile 1 COLUP0 - color (or hue) and luminance of player 0 and missile 0 COLUP1 - color (hue) and luminance of player 1 and missile 1 COLUPF - color (hue) and luminance of the playfield and the ball COLUBK - color (hue) and luminance of the background CTRLPF - control settings for the playfield, ball, and object priorities PF0 - the graphics register for playfield 0 PF1 - the graphics register for playfield 1 PF2 - the graphics register for playfield 2 RESP0 - reset the horizontal position of player 0 RESP1 - reset the horizontal position of player 1 RESM1 - reset the horizontal position of missile 1 AUDC0 - audio control 0 AUDC1 - audio control 1 AUDF0 - audio frequency 0 AUDF1 - audio frequency 1 AUDV0 - audio volume 0 AUDV1 - audio volume 1 GRP0 - the graphics register for player 0 GRP1 - the graphics register for player 1 ENAM1 - enable control for missile 1 HMP0 - horizontal movement register for player 0 HMP1 - horizontal movement register for player 1 HMM1 - horizontal movement register for missile 1 VDELP0 - vertical delay for player 0 Actually, it might be more correct to call this "video delay for player 0," because it doesn't delay player 0 for a scan line, it really delays player 0 until player 1 gets updated. VDELP1 - vertical delay for player 1 Again, it might be more correct to call this "video delay for player 1," because it really delays player 1 until player 0 gets updated. HMOVE - horizontal movement command HMCLR - horizontal movement registers clear CXCLR - collision registers clear CXM1P - collision detection between missile 1 and player 0 or player 1 CXP1FB - collision detection between player 1 and the playfield or ball CXM1FB - collision detection between missile 1 and the playfield or ball CXPPMM - collision detection between the players or the missiles INPT4 - input port 4 SWCHA - switches for port A SWCHB - switches for port B INTIM - inspect or interrogate (?) the timer (check the value in the timer) TIM8T - set the timer to 8 times the number of indicated cycles TIM64T - set the timer to 64 times the number of indicated cycles The preceding list of registers is incomplete, and the descriptions I've given them may be kind of funky (I tried to expand the abbreviations, e.g., "INspect TIMer," but I don't think I've ever seen a clear explanation of what some the abbreviations stand for). For detailed information about the various registers, see the "Stella Programmer's Guide," found here: http://atarihq.com/danb/files/stella.pdf Most of the following are 6502 opcodes: ADC - add with carry AND - logical and ASL - arithmetic shift left BCC - branch on carry clear BCS - branch on carry set BEQ - branch on equal BIT - test bits BMI - branch on minus BNE - branch on not equal BPL - branch on plus .byte - define a byte of data (an assembler instruction, not a 6502 opcode) CLC - clear carry flag CLD - clear decimal flag CMP - compare accumulator CPY - compare Y register DEC - decrement DEX - decrement X register EOR - exclusive or INC - increment INX - increment X register JMP - jump LDA - load accumulator LDX - load X register LDY - load Y register LSR - logical shift right NOP - no operation ORA - logical or accumulator ORG - origin (an assembler instruction, not a 6502 opcode) ROL - rotate left SBC - subtract with carry SEC - set carry flag SED - set decimal flag STA - store accumulator STX - store X register TAY - transfer accumulator to Y register TXA - transfer X register to accumulator You can find information on the 6502 opcodes here: http://www.6502.org/tutorials/ Also, I've updated the HTML document by John Pickens to include the color clock counts for the Atari 2600. I hope that's okay with the powers that be (that HTML document has been reproduced on many web sites, so I figured it was probably okay). I'm attaching my slightly updated version to this post. The Atari 2600's color clock counts are in the column labeled "CLKS." Michael Rideout 6502_Opcodes.htm Quote Link to comment Share on other sites More sharing options...
Ruffsta Posted December 28, 2005 Author Share Posted December 28, 2005 cool! thank you.. i'm sure others will appreciate this topic Quote Link to comment Share on other sites More sharing options...
djmips Posted December 29, 2005 Share Posted December 29, 2005 INTIM = INterval TIMer Quote Link to comment Share on other sites More sharing options...
SeaGtGruff Posted December 29, 2005 Share Posted December 29, 2005 INTIM = INterval TIMer 990579[/snapback] Thank you! That makes better sense now. Michael Rideout Quote Link to comment Share on other sites More sharing options...
brpocock Posted January 23, 2006 Share Posted January 23, 2006 Also, I've updated the HTML document by John Pickens to include the color clock counts for the Atari 2600. I hope that's okay with the powers that be (that HTML document has been reproduced on many web sites, so I figured it was probably okay). I'm attaching my slightly updated version to this post. The Atari 2600's color clock counts are in the column labeled "CLKS." Michael Rideout 990006[/snapback] Looks good, but minor correction: It's missing "inc .a" and "dec .a" opcodes. Not sure if they belong with "inc/dec" (RAM) or with "inx/iny/dex/dey" ... Quote Link to comment Share on other sites More sharing options...
brpocock Posted January 23, 2006 Share Posted January 23, 2006 Looks good, but minor correction: It's missing "inc .a" and "dec .a" opcodes. Not sure if they belong with "inc/dec" (RAM) or with "inx/iny/dex/dey" ... 1005220[/snapback] D'oh, stupid me. They're absent on the pure 6502 and the 6507, of course. My cheatsheet on the wall has 65c02 opcodes and I didn't notice the asterisk. Sorry. Quote Link to comment Share on other sites More sharing options...
SeaGtGruff Posted January 23, 2006 Share Posted January 23, 2006 Also, I've updated the HTML document by John Pickens to include the color clock counts for the Atari 2600. I hope that's okay with the powers that be (that HTML document has been reproduced on many web sites, so I figured it was probably okay). I'm attaching my slightly updated version to this post. The Atari 2600's color clock counts are in the column labeled "CLKS." Michael Rideout 990006[/snapback] Looks good, 1005220[/snapback] Aside from the very minor changes that I made-- mostly just adding the Atari 2600 color clock counts, and "fixing" the links so they still work even if the page is saved to your computer-- the entire document is by John Pickens, although the copy that's posted on the 6502.org web site says "Updated by Bruce Clark": http://www.6502.org/tutorials/6502opcodes.html Michael Rideout Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.