Jump to content
IGNORED

Glossary


Ruffsta

Recommended Posts

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

  • 4 weeks later...

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" ...

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

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...