Old BBS Messages

Old BBS messages can be fun and interesting, so here are some I've come across.

Job Postings

Seeking Awesome Programmer

Catapult Entertainment, Inc. is looking for a top-notch, real-time,
low-level programmer to join a world-class software team creating the first
real-time nationwide video game network. Seeking a motivated,
self-directed, product-focused, can-do programmer experienced in C and
assembly level coding.  Experience with communications and modem
programming desired but not required. Openings for consultants and
full-time employees.

Catapult Entertainment is an equal-opportunity employer.

Contact:

Stacey Chaney
e-mail: sta...@catapent.com
voice: 408-366-1735 x223
fax: 408-366-1729

Catapult Entertainment
20823 Stevens Creek Blvd. Suite 300
Cupertino, CA 95104

Seeking Awesome Programmer - Source

Super Famicom Development Group

FAQ (famidev.txt)

SFDG FAQ - Super Famicom Development Group Frequently Asked Questions
~~~~~~~~   ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

By Carl Mueller: carl@busop.cit.wayne.edu.
Modified by Charles Doty: cdoty@host.yab.com on May. 23,1996.
-----------------------------------------------------------------------------
Q.  What exactly is the Super Famicom?

A.  The Super Famicom is the Japanese version of the American SNES
    (Super Nintendo Entertainment System).  As far as hardware goes,
    they are generally the same and play the same games (SF games can
    be played on the SNES and vice versa).  The Super Famicom however
    has a different appearance than the SNES, but other than cosmetic
    differences, they are virtually the same system.
-----------------------------------------------------------------------------
Q.  What exactly do people use to develope games on the SNES?

A.  _Professional_ developers, to my knowledge, use a PC and a special
    65816 assembler called SNASM which assembles and allows debugging of
    65816 code, also included is a device which (I believe) plugs into
    the SNES and you download code from your PC to the SNES through a
    SCSI interface.  This developers kit is available through Nintendo,
    but to my knowledge is *extremely* expensive (say around $5000), and
    Nintendo won't sell it to you unless you belong to a gaming company.
-----------------------------------------------------------------------------
Q.  What about the demos I've seen floating about, how were those made?

A.  There are also console "backup" devices like the Super Magicom (SNES/
    Super Famicom backup), Super MagicDrive (Sega Genesis backup), and
    MultiGame Hunter (Genesis and SNES backup) to name a few.  People
    download their own code to these devices using 65816 cross assemblers
    (apparently availabe to most major platforms), and the SNES runs it.
    You have to have a pretty good knowledge of the SNES hardware, and of
    course be an expert 65816 assembler.
-----------------------------------------------------------------------------
Q.  Where can I get some files which explain the technicial details of
    the SNES, like memory locations and such?

A.  An limited FTP site is available.  ftp teeri.oulu.fi.  
    Development files should be located in \pub\console\nintendo.
    A Console programming WWW page is available at
    http://www.yab.com~/cdoty/console.html.
    Also, you should be able to find utilities such as assemblers and
    disassemblers.
-----------------------------------------------------------------------------
Q.  What the heck is an 65816 ?

A.  It's a microprocessor made by Western Design which is a basically a
    souped up 16-bit version of the 6502 (used in older computers like the
    Commodore 64, etc) and is currently (and probably for enternity) only
    used in the Apple IIgs system, and of course the SNES/Super Famicom
    systems.  It has 16-bit internal registers and an 8-bit bus.
-----------------------------------------------------------------------------
Q.  How do I start working for Nintendo, then ?

A.  Probably the best way to land a job programming for the SNES would be
    to prove yourself an 65816 expert, and send them a demo of a game
    written perferably on a DIFFERENT platform (say like the Apple IIgs
    might be a good computer to show a demo on), Nintendo may not like the
    fact that you've been coding on their system without any licenses.
    Or, you can try to get a job at a company that produces SNES games
    by showing them your game, and getting them to LEGALLY license it.
----------------------------------------------------------------------------
Q.  Where do I get a copy of this "Developers Manual" everyone seems to
    be talking about?

A.  You don't.  Nintendo distributes their developers manual only to
    licensed game programmers and is apparently very strict about it
    being copied or information being let out from it.  Plus, if you
    paid $5,000 for a developers kit, would you be so quick to send
    out copies of the manual?

Well, that's it so far.  I may not be the best person to write this FAQ,
but so far I'm the only one who has been willing to do it.  If you wish
to make modifications, let me know.  Your free to make additions/modifcations  
to this document.  Just send the revised document to my mail box and I will
replace this one.

SNES Math (snesmath.txt)

From:     vic@physci.psu.edu (Vic Ricker)
To:       "Super Famicom Development Group" <famidev@busop.cit.wayne.edu>
Subject:  Re: Multiplying/Dividing?
Date:     Sun, 26 Dec 93 16:29:09 EST

Take a look at this:


    Address: $4202/$4203
       Name: WRMPYA/WRMPYB
Description: Multiplier and multiplicand


  D7   D6   D5   D4   D3   D2   D1   D0

|           MULTIPLICAND-A              |       $4202
|_______________________________________|

  D7   D6   D5   D4   D3   D2   D1   D0

|            MULTIPLIER-B               |       $4203
|_______________________________________|


These registers perform absolute multiplication by multiplying
multiplicand A by multiplier B and return product C which can be read
from $4216/$4217 RDMPY.

Set register A, then B.  After the B register is set, it will take 8
machine cycles for the multiplication to be completed.

* The A register will not be destroyed by the multiplication process.
^^^ does not refer to the accumulator. it means the multiplicand

Also, there is 8/16 multiply that shares the mode 7 matrix registers:
set 16 bit multiplier to $211b and 8 bit multiplicand to $211c the 24
bit product will be placed in $2134-$2136.

The shift-add routine is a great way to multiply.  I'm suprised that
so many so-called assembly programmers don't know how to do it.
Regardless of how fast it is, the hardware stuff blows it away.

There is also a hardware divide:

$4204/4205 is the 16 bit dividend, $4206 is the 8bit divisor, the
quotient will be put in $4214, and the remainder in $4216/4217.

ANy questions, lemme know.
From:     D Burton Technician <D.Burton@teesside.ac.uk>
To:       "Super Famicom Development Group" <famidev@busop.cit.wayne.edu>
Subject:  Re: sound
Date:     Fri, 17 Dec 93 09:37:41 GMT

> Any info on the structure & size of the header block?
>

the header is as follows :-

	dw length_of_block,transfer_address

	db start_of_data
	.....
	db end_of_data

this is repeated for however many blocks u wanna load into the spc(often just
one big block)
then the final header reads:-

	dw $0000,program_execution_address

the zero length field tells it to get ready to run the module..

> So the data is broken up into 9 byte blocks then. How is this 1 byte range
> related to the data that follows? Is it a multiplier or, exponent or
> value from a table? The 4 bit data an 'error' relative to the range?
> Any other info on the samples?
>
the first byte contains :-
	bit 0   - last block of sample
	bit 1   - loop block  flag
	bit 2,3 - the filter number used
	bit 4-7 - the range value (only 0-12 used)..

the big question is how is the data compressed - the manual diagram simply
shows the 4 bit data being shifted right by the range number of places, and
then talks of the number being in the range -7 to +8.. I have been simply
dividing the 16 bit numbers down and rounding up where necessary and this
gives a quite accurate conversion, the problem I seem to be having is
generating the range values from the 16 values I have..

> I checked out hbt-fasm, which someone described as bad. Does bad refer to
> its interface or the fact that it doesn't disassemble things correctly?
> I do not have access to the spc-700 instruction set, or an amiga on a
> regular basis and will build an opcode matrix from it and convert it to
> the pc (providied that it disassembles correctly). Does it?.
>
I have not had much to do with hbt-fasm so dont really know what is wrong
with it, my own SPC dissassembler has no real super duper i/face, but
it does what I wanted it to.
From:     lca@gnu.ai.mit.edu (.oO| Spaceman Spiff |Oo.)
To:       "Super Famicom Development Group" <famidev@busop.cit.wayne.edu>
Subject:  Re: Samples on de SNEZ
Date:     Tue, 11 Jan 94 14:34:35 EST


>
>
> A while back someone mentioned that the SPC700 chip was the same sound chip
> as in the <****> computer (forget which one), and that they had made a
> really simple disassembler for it.  If someone could point me towards any
> docs (books) on the spc700, or possibly if it isn't too much trouble, the
> intruction set of the spc700 I would appreciate it.... I'm not looking for
> "programming the spc700 on the snes" Maybe just a <****> book with a chapter
> on programming sound using the spc700.... I realize that no one person out
> there knows how to do the music, sample formats, etc, but I think if we had
> a spc700 disassembler that a couple of us so inclined could start to work
> on the whole sound driver problem....
>
>       thanks in advance....
>
>                   -jeremy
>
>
Welp music doesn't seem to be too bad. There is a really good musik ripper
on rhe Amiga that rips music out of SMC or BIN formats. I forgett the name,
since I don't have an Amiga :( .. oh well .. anyhoo here is some sample
source for playing a .SPC on the spc700 in the snez .. it's pretty
choppy but it's what I use.

        REP     #$30    ; X,Y FIXED -> 16 BIT MODE
        SEP     #$20    ; ACCUMULATOR ->  8 BIT MODE

        LDA     #$00
        JSL     $1C8000
        LDA     #$01
        JSL     $1C8000
        LDA     #$17
        LDY     #$0001
        JSL     $1C8000
        LDA     #$13
        LDY     #$003F
        JSL     $1C8000
        LDY     #$0004  ;<- Here Change your favourite TECHNO MuZaK
        JSL     $1C8000

        ...
        ...
        ...
                        ;<- Here Your Source!
        ...
        ...
        ...


        ORG     $1C8000
MUSIC  .BIN     C:\SNEZ\DEMUZAK.SPC

-=-=-=-=-=-=-=-=-=-=-=

or you could do it this way

-=-=-=-=-=-=-=-=-=-=-=

        PHB
        REP     #$30    ;A,X,Y 16 BIT
        JSL     $1F8000
        PLB

        PHB
        REP     #$30    ;A,X,Y 16 BIT
        LDA     #$01    ;<- CHANGE MUSIC
        JSL     $1F8004
        LDA     #$C0
        JSL     $1F8008
        PLB

        CLC
        JSL     $1F8014 ;STOP MUSIC
        ORG     $1B8000
        .BIN    C:\SNEZ\DEMUZIK.SPC

-=-=-=-=-=-=-=-=

Anhyhoo .. that's the same shit but a little clearer. Now the only propblem
with all this is you can't use your own musak .. 'cuz I don't know anyonwe
who knows the format or even if a composer exists. But, my original
post refered to samples and sound effects. 'cuz I don't knowe  ANYONE
wjho knows who those work 100% .. oh well .. ttyl

-=SPiFF=-

DMA (dma.txt)

From:     LAY@uk.tele.nokia.fi
To:       "Super Famicom Development Group" <famidev@busop.cit.wayne.edu>
Subject:  RE: Assorted questions...

>> 2) I asked a question before about HDMA, and I got replies saying that
>>    it has something to do with the horizontal interrupt or horizontal
>>    blank time (I forget which).  Later on I saw people talking about
>>    HDMA "channels".  Could someone please tell me what the "channels"
>>    are used for, or are they another name for a register or a memory
>>    storage location?

It's probably best to start by explaning "normal" DMA. The SNES
supports 8 DMA channels which allow data to be copied to VRAM
extremely quickly, bypassing the 65c816 processor. Each channel
consists of the following registers.

    Byte    $43?0    DMA channel ? control register
    Byte    $43?1    DMA channel ? destination
    Word    $43?2    DMA channel ? source address offset
    Byte    $43?4    DMA channel ? source address bank
    Word    $43?5    DMA channel ? transfer bytes

    where ? is 0..7

A value of $01 written to the DMA channel control register at
$43?0 indicates that we're using "normal" DMA. The graphics
register destination is formed by using $21 as the high byte
of the address and using the byte specified at $43?1 as the
low byte. Hence you can DMA to any of the graphics registers
between $2100..$21FF.

There is also a DMA control register.

    Byte    $420B    DMA control register

Here bit 0 enables channel 0, bit 1 enables channel 1 etc...

For example, suppose I wanted to copy a 32 x 32 character
screen map (ie. $800 bytes) from location $18000 in ROM into
location $0000 of VRAM. I could do this using DMA channel 0
with the following code (A is 8-bits, X & Y are 16-bits).

    ldx.w #$0000    ; set VRAM pointer to $0000
    stx $2116
    lda #$01        ; control value for "normal" DMA
    sta $4300
    lda #$18        ; dma to $2118
    sta $4301
    ldx.w #$8000    ; source offset
    stx $4302
    lda #$01        ; source bank
    sta $4304
    ldx.w #$0800    ; number of bytes
    stx $4305
    lda #$01        ; enable DMA channel 0
    sta $420B

And that's all there is to it. After completion of the last
instruction "sta $420B" the $800 bytes at $18000 will have
been copied into VRAM at location $0000.

HDMA allows you to use any combination of these DMA channels
to modify graphics registers just before the start of every
horizontal scan line.

To use HDMA you have to write a value of $00 or $02 to the
DMA channel control register at $43?0 to indicate "horizontal"
DMA. Writing $00 indicates a byte is to be DMA'd each scan
line, writing $02 indicates a word. The DMA channel destination
at $43?1 works just as before with "normal" DMA. The source
address offset and bank registers at $43?2 & $43?4 will point
to a HDMA table. The transfer bytes register at $43?5 is not
used.

The format of the HDMA table depends on the value you have
written to the DMA channel control register. If you have
written $00 then a byte will be written to the selected
graphics register each scan line. The table should have the
following format.

hdma_table
    Byte n ; number of bytes that follow (7-bit value 0..127)
    Byte value_1, value_2, value_3 ... value_n
    Byte n ; number of bytes that follow (7-bit value 0..127)
    Byte value_1, value_2, value_3 ... value_n
    .
    etc
    .
    Byte 0 ; ends list

The table is made up of a number of entries. The first byte
in each entry is a count on the number of bytes that follow.
The table is terminated by a 0 entry.

If you have written $02 to the DMA channel control register
then a word will be written to the selected graphics register
each scan line. The table should have the following format.

hdma_table
    Byte n ; # times to repeat next word (7-bit value 0..127)
    Word value
    Byte n ; # times to repeat next word (7-bit value 0..127)
    Word value
    .
    etc
    .
    Byte 0 ; ends list

The table is made up of a number of entries. The first byte of
each entry indicates the number of times the following word is
to be repeated. The table is terminated by a 0 entry.

The only other thing you'll need to know is that there is a
HDMA control register.

    Byte    $420C    HDMA control register

This is the same format as the DMA control register at $420B,
ie. bit 0 enables HDMA channel 0, bit 1 enables channel 1 etc...

For example, suppose halfway down the screen I want to scroll
graphics plane 0 left by 128 pixels.

    lda #$02        ; word format HDMA (count, word)
    sta $4300
    lda #$0D        ; plane 0 x-scroll at $210D
    sta $4301
    ldx.w #hdma_table&$FFFF ; hdma table offset
    stx $4302
    lda #hdma_table/$10000 ; hdma table bank
    sta $4304
    lda #$01        ; enable HDMA channel 0
    sta $420c

    .
    .
    .

hdma_table
    dc.b 112       ; for first 112 scan lines
    dc.w 0         ; set plane 0 x-scroll to 0
    dc.b 1         ; on next scan line
    dc.w 128       ; set plane 0 x-scroll to 128
    dc.b 0

You can use HDMA channels in combination, ie. you could use HDMA
channel 0 to select a colour register and HDMA channel 1 to write
the RGB data for that colour register.

I don't have access to any of the official Nintendo documentation
so I may not have entirely understood everything about HDMA but
this is a much as I've been able to work out. Maybe there are other
(H)DMA modes too?

I'll should have put a simple HDMA demo with source code on the
busop.cit.wayne.edu ftp site (in pub/famidev/incoming/hdmademo.zip).

Hope that helps.

Paul.

fastrom.txt

From:     LAY@uk.tele.nokia.fi
To:       "Super Famicom Development Group" <FAMIDEV@BUSOP.CIT.WAYNE.EDU>
Subject:  The need for speed revisited...
Date:     Wed, 16 Feb 1994 11:00:49 GMT

I unsubscribed from this mailing list after my suggestion that
maybe the processor would run faster when executing from RAM
brought responses such as "if you want something to run that
fast you should use a PC" which quickly turned into a whole
barrage of "my Amiga is faster than your PC" mails. Just the
sort of comments I was hoping to get from this mailing
list... )-: However I'm changing jobs and I don't know whether
I'll have internet access at my new job, so I'd better make
the most of it...

So, for anyone like myself who wants to get the most out
of their SNES I thought I'd let you know that I've managed to
run the program in FASTROM which has resulted in a 33% speed
improvement - the 65816 runs at 3.58Mhz rather than 2.68Mhz.
This is possible because the ROMs have a faster access time
- hence the reason I thought it may be possible with RAM which
typically has faster access times than ROM.

So how's it done?

The SNES lets you access ROM through bank $00 onwards and bank
$80 onwards such that locations $008000 and $808000, $008001 and
$808001, $008002 and $808002 etc... all access the same locations.
When accessing bank $00 onwards the 65816 runs at 2.68Mhz. However,
when accessing bank $80 onwards the 65816 can run at 2.68Mhz or
3.58Mhz depending on how you set bit 0 of $420D.

So all you have to do is assemble your program so that it
starts at $808000, make sure you set the programming and
data banks to $80 (K and D) and set bit 0 of $420D. You'll
also need to mask off the bank part of the run/reset vector
and vertical blank interrupt locations.

Paul.

PS. I also see that the source code for an early version of my
GIF2SNES program has made it onto the ftp site by a somewhat
indirect route (UK->NZ->AUS->USA). If someone wanted
this source code let me know and I'll post the latest fully
optimising version.

Sprite RAM Information (ram.txt)

From:     vic@physci.psu.edu (Vic Ricker)
To:       "Super Famicom Development Group" <famidev@busop.cit.wayne.edu>
Subject:  Re:  some programming questions
Date:     Tue, 9 Nov 93 20:20:35 EST

>Hi Folks.

>I need help with a few SNES programming questions...

>(1) Can anyone tell me how to make noises come out of my SNES?

Insert your favorite cart, power up the TV, switch the snes power to
ON.. :-)

>(3) Is the sprite position table held in RAM or VRAM? And how
>    do the 5 address bits in $2101 relate to this location?

The sprite images are stored in VRAM.  The palettes for the sprites
are stored in CGRAM.  The coordinates and char attributes are stored
in OAM.

The format of each OBJ is:

OBJ H position: 8 bits
OBJ V position: 8 bits
V flip: 1 bit
H flip: 1 bit
OBJ priority: 2 bits
color palette: 3 bits
character name: 9 bits

there are 128 of these in sequence making 512 bytes then 32 bytes
follow in the format:
size: 1 bit
x msb: 1 bit

there are 128 of these (one for every OBJ) making 32 more bytes.

$2101 is OBJSEL

it chooses the size of sprites to use and also sets the address of the
images in VRAM.  the top 3 bits chose the size:

000 means 8x8 and 16x16 sprites
001 8x8 and 32x32
010 8x8 and 64x64
011 16x16 and 32x32
100 16x16 and 64x64
101 32x32 and 64x64

the other bits are the address in vram of the sprite images.


$2102-$2103 is OAMADDL/H
the lower 9 bits are the address for accessing the OAM. (like $2116
for VRAM)
the high bit (15) enables priority rotation (causes OBJ's to change
priority as to keep them from disappearing totally when time out and range
over occur.)

$2104 is OAMDATA

it is the write register for the OAM. (like $2118-$2119 for VRAM)


$2138 is *OAMDATA

it is the read register for the OAM.


Hope this gives you enough to play with.  Most is from memory, I hope
its all correct. :-)

Lemme know if you have questions.

Famicon CPU G65SC802 / G65SC816 Instructionset

********************************************************
*                                                      *
* Famicon CPU G65SC802 / G65SC816 Instructionset       *
*                                                      *
* Compiled by Carnivore/BeerMacht on 23-Aug-92         *
* using BeerMon V0.43                                  *
*                                                      *
* FreeWare!                                            *
*                                                      *
********************************************************


>_00060000  e2 30        sep #$30       a,x,y:8bit   ;â0
>_00060002  69 12        adc #$12                    ;i.
>_00060004  65 12        adc $12                     ;e.
>_00060006  75 12        adc $12,x                   ;u.
>_00060008  72 12        adc ($12)                   ;r.
>_0006000a  61 12        adc ($12,x)                 ;a.
>_0006000c  71 12        adc ($12),y                 ;q.
>_0006000e  67 12        adc [$12]                   ;g.
>_00060010  77 12        adc [$12],y                 ;w.
>_00060012  6d 34 12     adc $1234                   ;m4.
>_00060015  7d 34 12     adc $1234,x                 ;}4.
>_00060018  79 34 12     adc $1234,y                 ;y4.
>_0006001b  6f 56 34 12  adc $123456                 ;oV4.
>_0006001f  7f 56 34 12  adc $123456,x               ;V4.
>_00060023  63 12        adc $12,s                   ;c.
>_00060025  73 12        adc ($12,s),y               ;s.
>_00060027  29 12        and #$12                    ;).
>_00060029  25 12        and $12                     ;%.
>_0006002b  35 12        and $12,x                   ;5.
>_0006002d  32 12        and ($12)                   ;2.
>_0006002f  21 12        and ($12,x)                 ;!.
>_00060031  31 12        and ($12),y                 ;1.
>_00060033  27 12        and [$12]                   ;'.
>_00060035  37 12        and [$12],y                 ;7.
>_00060037  2d 34 12     and $1234                   ;-4.
>_0006003a  3d 34 12     and $1234,x                 ;=4.
>_0006003d  39 34 12     and $1234,y                 ;94.
>_00060040  2f 56 34 12  and $123456                 ;/V4.
>_00060044  3f 56 34 12  and $123456,x               ;?V4.
>_00060048  23 12        and $12,s                   ;#.
>_0006004a  33 12        and ($12,s),y               ;3.
>_0006004c  0a           asl a                       ;.
>_0006004d  06 12        asl $12                     ;..
>_0006004f  16 12        asl $12,x                   ;..
>_00060051  0e 34 12     asl $1234                   ;.4.
>_00060054  1e 34 12     asl $1234,x                 ;.4.
>_00060057  89 12        bit #$12                    ;..
>_00060059  24 12        bit $12                     ;$.
>_0006005b  34 12        bit $12,x                   ;4.
>_0006005d  2c 34 12     bit $1234                   ;,4.
>_00060060  3c 34 12     bit $1234,x                 ;<4.
>_00060063  c9 12        cmp #$12                    ;É.
>_00060065  c5 12        cmp $12                     ;Å.
>_00060067  d5 12        cmp $12,x                   ;Õ.
>_00060069  d2 12        cmp ($12)                   ;Ō.
>_0006006b  c1 12        cmp ($12,x)                 ;Á.
>_0006006d  d1 12        cmp ($12),y                 ;Ņ.
>_0006006f  c7 12        cmp [$12]                   ;Į.
>_00060071  d7 12        cmp [$12],y                 ;Ũ.
>_00060073  cd 34 12     cmp $1234                   ;Í4.
>_00060076  dd 34 12     cmp $1234,x                 ;Ý4.
>_00060079  d9 34 12     cmp $1234,y                 ;Ų4.
>_0006007c  cf 56 34 12  cmp $123456                 ;ÏV4.
>_00060080  df 56 34 12  cmp $123456,x               ;ßV4.
>_00060084  c3 12        cmp $12,s                   ;Ã.
>_00060086  d3 12        cmp ($12,s),y               ;Ó.
>_00060088  e0 12        cpx #$12                    ;ā.
>_0006008a  e4 12        cpx $12                     ;ä.
>_0006008c  ec 34 12     cpx $1234                   ;ė4.
>_0006008f  c0 12        cpy #$12                    ;Ā.
>_00060091  c4 12        cpy $12                     ;Ä.
>_00060093  cc 34 12     cpy $1234                   ;Ė4.
>_00060096  3a           dec a                       ;:
>_00060097  c6 12        dec $12                     ;Æ.
>_00060099  d6 12        dec $12,x                   ;Ö.
>_0006009b  ce 34 12     dec $1234                   ;Î4.
>_0006009e  de 34 12     dec $1234,x                 ;Þ4.
>_000600a1  49 12        eor #$12                    ;I.
>_000600a3  45 12        eor $12                     ;E.
>_000600a5  55 12        eor $12,x                   ;U.
>_000600a7  52 12        eor ($12)                   ;R.
>_000600a9  41 12        eor ($12,x)                 ;A.
>_000600ab  51 12        eor ($12),y                 ;Q.
>_000600ad  47 12        eor [$12]                   ;G.
>_000600af  57 12        eor [$12],y                 ;W.
>_000600b1  4d 34 12     eor $1234                   ;M4.
>_000600b4  5d 34 12     eor $1234,x                 ;]4.
>_000600b7  59 34 12     eor $1234,y                 ;Y4.
>_000600ba  4f 56 34 12  eor $123456                 ;OV4.
>_000600be  5f 56 34 12  eor $123456,x               ;_V4.
>_000600c2  43 12        eor $12,s                   ;C.
>_000600c4  53 12        eor ($12,s),y               ;S.
>_000600c6  1a           inc a                       ;.
>_000600c7  e6 12        inc $12                     ;æ.
>_000600c9  f6 12        inc $12,x                   ;ö.
>_000600cb  ee 34 12     inc $1234                   ;î4.
>_000600ce  fe 34 12     inc $1234,x                 ;þ4.
>_000600d1  a9 12        lda #$12                    ;Đ.
>_000600d3  a5 12        lda $12                     ;Ĩ.
>_000600d5  b5 12        lda $12,x                   ;ĩ.
>_000600d7  b2 12        lda ($12)                   ;ē.
>_000600d9  a1 12        lda ($12,x)                 ;Ą.
>_000600db  b1 12        lda ($12),y                 ;ą.
>_000600dd  a7 12        lda [$12]                   ;§.
>_000600df  b7 12        lda [$12],y                 ;·.
>_000600e1  ad 34 12     lda $1234                   ;­4.
>_000600e4  bd 34 12     lda $1234,x                 ;―4.
>_000600e7  b9 34 12     lda $1234,y                 ;đ4.
>_000600ea  af 56 34 12  lda $123456                 ;ŊV4.
>_000600ee  bf 56 34 12  lda $123456,x               ;ŋV4.
>_000600f2  a3 12        lda $12,s                   ;Ģ.
>_000600f4  b3 12        lda ($12,s),y               ;ģ.
>_000600f6  a2 12        ldx #$12                    ;Ē.
>_000600f8  a6 12        ldx $12                     ;Ķ.
>_000600fa  b6 12        ldx $12,y                   ;ķ.
>_000600fc  ae 34 12     ldx $1234                   ;Ū4.
>_000600ff  be 34 12     ldx $1234,y                 ;ū4.
>_00060102  a0 12        ldy #$12                    ; .
>_00060104  a4 12        ldy $12                     ;Ī.
>_00060106  b4 12        ldy $12,x                   ;ī.
>_00060108  ac 34 12     ldy $1234                   ;Ž4.
>_0006010b  bc 34 12     ldy $1234,x                 ;ž4.
>_0006010e  46 12        lsr $12                     ;F.
>_00060110  56 12        lsr $12,x                   ;V.
>_00060112  4e 34 12     lsr $1234                   ;N4.
>_00060115  5e 34 12     lsr $1234,x                 ;^4.
>_00060118  09 12        ora #$12                    ;..
>_0006011a  05 12        ora $12                     ;..
>_0006011c  15 12        ora $12,x                   ;..
>_0006011e  12 12        ora ($12)                   ;..
>_00060120  01 12        ora ($12,x)                 ;..
>_00060122  11 12        ora ($12),y                 ;..
>_00060124  07 12        ora [$12]                   ;..
>_00060126  17 12        ora [$12],y                 ;..
>_00060128  0d 34 12     ora $1234                   ;.4.
>_0006012b  1d 34 12     ora $1234,x                 ;.4.
>_0006012e  19 34 12     ora $1234,y                 ;.4.
>_00060131  0f 56 34 12  ora $123456                 ;.V4.
>_00060135  1f 56 34 12  ora $123456,x               ;.V4.
>_00060139  03 12        ora $12,s                   ;..
>_0006013b  13 12        ora ($12,s),y               ;..
>_0006013d  2a           rol a                       ;*
>_0006013e  26 12        rol $12                     ;&.
>_00060140  36 12        rol $12,x                   ;6.
>_00060142  2e 34 12     rol $1234                   ;.4.
>_00060145  3e 34 12     rol $1234,x                 ;>4.
>_00060148  6a           ror a                       ;j
>_00060149  66 12        ror $12                     ;f.
>_0006014b  76 12        ror $12,x                   ;v.
>_0006014d  6e 34 12     ror $1234                   ;n4.
>_00060150  7e 34 12     ror $1234,x                 ;~4.
>_00060153  e9 12        sbc #$12                    ;é.
>_00060155  e5 12        sbc $12                     ;å.
>_00060157  f5 12        sbc $12,x                   ;õ.
>_00060159  f2 12        sbc ($12)                   ;ō.
>_0006015b  e1 12        sbc ($12,x)                 ;á.
>_0006015d  f1 12        sbc ($12),y                 ;ņ.
>_0006015f  e7 12        sbc [$12]                   ;į.
>_00060161  f7 12        sbc [$12],y                 ;ũ.
>_00060163  ed 34 12     sbc $1234                   ;4.
>_00060166  fd 34 12     sbc $1234,x                 ;ý4.
>_00060169  f9 34 12     sbc $1234,y                 ;ų4.
>_0006016c  ef 56 34 12  sbc $123456                 ;ïV4.
>_00060170  ff 56 34 12  sbc $123456,x               ;ĸV4.
>_00060174  e3 12        sbc $12,s                   ;ã.
>_00060176  f3 12        sbc ($12,s),y               ;ó.
>_00060178  85 12        sta $12                     ;..
>_0006017a  95 12        sta $12,x                   ;..
>_0006017c  92 12        sta ($12)                   ;..
>_0006017e  81 12        sta ($12,x)                 ;..
>_00060180  91 12        sta ($12),y                 ;..
>_00060182  87 12        sta [$12]                   ;..
>_00060184  97 12        sta [$12],y                 ;..
>_00060186  8d 34 12     sta $1234                   ;.4.
>_00060189  9d 34 12     sta $1234,x                 ;.4.
>_0006018c  99 34 12     sta $1234,y                 ;.4.
>_0006018f  8f 56 34 12  sta $123456                 ;.V4.
>_00060193  9f 56 34 12  sta $123456,x               ;.V4.
>_00060197  83 12        sta $12,s                   ;..
>_00060199  93 12        sta ($12,s),y               ;..
>_0006019b  86 12        stx $12                     ;..
>_0006019d  96 12        stx $12,y                   ;..
>_0006019f  8e 34 12     stx $1234                   ;.4.
>_000601a2  84 12        sty $12                     ;..
>_000601a4  94 12        sty $12,x                   ;..
>_000601a6  8c 34 12     sty $1234                   ;.4.
>_000601a9  64 12        stz $12                     ;d.
>_000601ab  74 12        stz $12,x                   ;t.
>_000601ad  9c 34 12     stz $1234                   ;.4.
>_000601b0  9e 34 12     stz $1234,x                 ;.4.
>_000601b3  14 12        trb $12                     ;..
>_000601b5  1c 34 12     trb $1234                   ;.4.
>_000601b8  04 12        tsb $12                     ;..
>_000601ba  0c 34 12     tsb $1234                   ;.4.
>_000601bd  c2 30        rep #$30       a,x,y:16bit  ;Â0
>_000601bf  69 34 12     adc #$1234                  ;i4.
>_000601c2  29 34 12     and #$1234                  ;)4.
>_000601c5  89 34 12     bit #$1234                  ;.4.
>_000601c8  c9 34 12     cmp #$1234                  ;É4.
>_000601cb  e0 34 12     cpx #$1234                  ;ā4.
>_000601ce  c0 34 12     cpy #$1234                  ;Ā4.
>_000601d1  49 34 12     eor #$1234                  ;I4.
>_000601d4  a9 34 12     lda #$1234                  ;Đ4.
>_000601d7  a2 34 12     ldx #$1234                  ;Ē4.
>_000601da  a0 34 12     ldy #$1234                  ; 4.
>_000601dd  09 34 12     ora #$1234                  ;.4.
>_000601e0  e9 34 12     sbc #$1234                  ;é4.
>_000601e3  e2 30        sep #$30       a,x,y:8bit   ;â0
>_000601e5  90 fe        bcc $601e5                  ;.þ
>_000601e7  b0 fc        bcs $601e5                  ;°ü
>_000601e9  f0 fa        beq $601e5                  ;ðú
>_000601eb  30 f8        bmi $601e5                  ;0ø
>_000601ed  d0 f6        bne $601e5                  ;Ðö
>_000601ef  10 f4        bpl $601e5                  ;.ô
>_000601f1  80 f2        bra $601e5                  ;.ō
>_000601f3  50 f0        bvc $601e5                  ;Pð
>_000601f5  70 ee        bvs $601e5                  ;pî
>_000601f7  18           clc                         ;.
>_000601f8  d8           cld                         ;Ø
>_000601f9  58           cli                         ;X
>_000601fa  b8           clv                         ;ļ
>_000601fb  ca           dex                         ;Ę
>_000601fc  88           dey                         ;.
>_000601fd  e8           inx                         ;č
>_000601fe  c8           iny                         ;Č
>_000601ff  ea           nop                         ;ę
>_00060200  f4 34 12     pea $1234                   ;ô4.
>_00060203  d4 12        pei ($12)                   ;Ô.
>_00060205  62 fd ff     per $60205                  ;býĸ
>_00060208  48           pha                         ;H
>_00060209  8b           phb                         ;.
>_0006020a  0b           phd                         ;.
>_0006020b  4b           phk                         ;K
>_0006020c  08           php                         ;.
>_0006020d  da           phx                         ;Ú
>_0006020e  5a           phy                         ;Z
>_0006020f  68           pla                         ;h
>_00060210  ab           plb                         ;Ŧ
>_00060211  2b           pld                         ;+
>_00060212  28           plp                         ;(
>_00060213  fa           plx                         ;ú
>_00060214  7a           ply                         ;z
>_00060215  38           sec                         ;8
>_00060216  f8           sed                         ;ø
>_00060217  78           sei                         ;x
>_00060218  aa           tax                         ;Š
>_00060219  a8           tay                         ;Ļ
>_0006021a  5b           tcd                         ;[
>_0006021b  7b           tdc                         ;{
>_0006021c  3b           tsc                         ;;
>_0006021d  ba           tsx                         ;š
>_0006021e  8a           txa                         ;.
>_0006021f  9a           txs                         ;.
>_00060220  9b           txy                         ;.
>_00060221  98           tya                         ;.
>_00060222  fb           xce                         ;û
>_00060223  00 12        brk #$12                    ;..
>_00060225  82 fd ff     brl $60225                  ;.ýĸ
>_00060228  02 12        cop #$12                    ;..
>_0006022a  dc 34 12     jml ($1234)                 ;Ü4.
>_0006022d  4c 34 12     jmp $1234                   ;L4.
>_00060230  6c 34 12     jmp ($1234)                 ;l4.
>_00060233  7c 34 12     jmp ($1234,x)               ;|4.
>_00060236  5c 56 34 12  jmp $123456                 ;\V4.
>_0006023a  22 56 34 12  jsl $123456                 ;"V4.
>_0006023e  20 34 12     jsr $1234                   ; 4.
>_00060241  fc 34 12     jsr ($1234,x)               ;ü4.
>_00060244  54 34 12     mvn $1234                   ;T4.
>_00060247  44 34 12     mvp $1234                   ;D4.
>_0006024a  c2 30        rep #$30    a,x,y:16bit     ;Â0
>_0006024c  40           rti                         ;@
>_0006024d  6b           rtl                         ;k
>_0006024e  60           rts                         ;`
>_0006024f  e2 30        sep #$30       a,x,y:8bit   ;â0
>_00060251  db           stp                         ;Û
>_00060252  cb           wai                         ;Ë
>_00060253  eb           xba                         ;ë

- EOT -

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++