Learn Multi platform 6502 Assembly Programming... For Monsters!

Platform Specific Lessons


Platform Specific Series - Now we know the basics, lets look at the details of the platforms we're covering!
    Lesson P1 - Bitmap Functions on the BBC

Lesson P2 - Bitmap Functions on the Atari 800 / 5200

Lesson P3 - Bitmap Functions on the Apple II

Lesson P4 - Bitmap Functions on the Atari Lynx

Lesson P5 - Bitmap Functions on the PC Engine (TurboGrafx-16)

Lesson P6 - Bitmap Functions on the NES / Famicom

Lesson P7 - Bitmap Functions on the SNES / Super Famicom

Lesson P8 - Bitmap Functions on the VIC-20

Lesson P9 - Bitmap Functions on the C64

Lesson P10 - Joystick Reading on the BBC

Lesson P11 - Joystick Reading on the Atari 800 / 5200

Lesson P12 - Joystick Reading on the Apple II

Lesson P13 - Joystick Reading on the Atari Lynx

Lesson P14 - Joystick Reading on the PC Engine (TurboGrafx-16)

Lesson P15 - Joystick Reading on the NES / Famicom and SNES

Lesson P16 - Joystick Reading on the VIC-20

Lesson P17 - Palette definitions on the BBC

Lesson P18 - Palette definitions on the Atari 800 / 5200

Lesson P19 - Palette definitions on the Atari Lynx

Lesson P20 - Palette definitions on the PC Engine (TurboGrafx-16)

Lesson P21 - Palette Definitions on the NES

Lesson P22 - Palette Definitions on the SNES / Super Famicom

Lesson P22 (z80) - Sound with the SN76489 on the BBC Micro

Lesson P23 - Sound on the Atari 800 / 5200

Lesson P23 (Z80) - Sound with the 'Beeper' on the Apple II

Lesson P24 - Sound on the Atari Lynx

Lesson P25 - Sound on the PC Engine (TurboGrafx-16)

Lesson P26 - Sound on the NES / Famicom

Lesson P27 - Sound on the SNES / Super Famicom: the SPC700

Lesson P28 - Sound on the SNES / Super Famicom: Writing ChibiSound

Lesson P29 - Sound on the on the VIC-20

Lesson P30 - Sound on the C64

Lesson P31 - Hardware Sprites on the Atari 800 / 5200

Lesson P32 - Hardware sprites on the Atari Lynx

Lesson P33 - Hardware Sprites on the PC Engine (TurboGrafx-16)

Lesson P34 - Hardware Sprites on the NES / Famicom

Lesson P35 - Hardware Sprites on the SNES / Super Famicom

Lesson P36 - Hardware Sprites on the C64

Lesson P37 - Screen settings with the CRTC on the BBC Micro!

Lesson P38 - Character Block Graphics on the PET

Lesson P39 - Key reading on the PET

Lesson P40 - Sound on the PET

Lesson P41 - Multiple layers on the SNES

Lesson P42 - Color maths on the Super Nintendo

Lesson P43 - Splitscreen scrolling and Sprite 0 Hit on the NES!

Lesson P44 - The NES Zapper!




Lesson P51 - Sound on the Atari 800 / 5200 (ChibiSound Pro)
Lets take another look at sound! We'll write a new multi-platform sound driver, which will give us control over the hardware, and allow us to write a music player which will work in a common way on all systems.

This will work on either Atari system, as only the pokey address changes!

A52_V1_ChibiSoundPro.asm

ChibiSound PRO!

ChibiSound is the sound driver that handles the particularities of a system, there is typically one driver per system, though the CPC and MSX drivers are essentially identical except for the AY register setting routines.

The original 'ChibiSound' gave us one channel, one Volume bit, six pitch bits, and the ability to turn noise on. Pitches were not matched across systems, so sound 32 won't sound the same on all systems.

The updated 'ChibiSound Pro' gives us all the channels provided by the hardware, 8 volume bits, 16 pitch bits, and the ability to turn noise on. Pitches were not matched across systems, however the 'ChibiOctave' lookup table provides values which ARE matched across all systems.

ChibiSound PRO is essentially a reduced subset of AY functionality, and was designed on the Z80 - it's 'PRO' suffix is a parody of the 'SoundBlaster PRO' - which could only do 8 bit sound so wasn't up to professional standards! (neither is ChibiSound PRO)

ChibiSound PRO provides a standard interface to the underlying hardware, it allows the following features to be set for each channel on the underlying hardware:

Function
Zero page entry
Notes:
Channel Number (bit 0-6)
Noise On/Off (bit 7)
H Multiple channels can be supported, but on single channel systems only Channel 0 will be sure to play.
If possible Channel 0 will be a center channel, Channels 1+ may be left/right

Noise bit turns the noise effect on (1) or off (0) - this can be set on any channel, if the underlying hardware only supports one noise channel, this will be resolved by the driver.
Volume L Set volume of the channel (0-255). Higher numbers are louder. O is off
Pitch DE Set the pitch of the channel (0-65535). Higher numbers are higher pitch.
Using DE does not standardize the resulting pitch - however a 'Lookup table' of notes 'ChibiOctave' provides a standardized way of getting the correct DE value to get a pitch correct note on the platform.
Chibisound PRO does not offer features like Envelope, LFE etc, as providing consistent functionality across different platforms would not be realistic.


The new driver is a big improvement on the old one but doesn't really deserve the PRO suffix!

It's a parody of the early 'Soundblaster Pro' sound cards, which could only do 8 bit digital sound, so weren't really of 'pro spec' either!

Pokey Sound

The Pokey is at memory mapped port $D200 on A800 and  $E800 on A5200

Group Name Description Address A80 Address A52 Bits Meaning
POKEY AUDF1 Audio frequency 1 control $D200 $E800 FFFFFFFF F=Frequency (0=highest tone)
POKEY AUDC1 Audio channel 1 control $D201 $E801 NNNNVVVV N=Noise (0=noise / 10=Square wave)
V=Volume
(15=loudest)
POKEY AUDF2 Audio frequency 2 control $D202 $E802 FFFFFFFF F=Frequency (0=highest tone)
POKEY AUDC2 Audio channel 2 control $D203 $E803 NNNNVVVV N=Noise (0=noise / 10=Square wave)
V=Volume
(15=loudest)
POKEY AUDF3 Audio frequency 3 control $D204 $E804 FFFFFFFF F=Frequency (0=highest tone)
POKEY AUDC3 Audio channel 3 control $D205 $E805 NNNNVVVV N=Noise (0=noise / 10=Square wave)
V=Volume
(15=loudest)
POKEY AUDF4 Audio frequency 4 control $D206 $E806 FFFFFFFF F=Frequency (0=highest tone)
POKEY AUDC4 Audio channel 4 control $D207 $E807 NNNNVVVV N=Noise (0=noise / 10=Square wave)
V=Volume
(15=loudest)
POKEY AUDCTL general audio control $D208 $E808 N1234HHS N=Noise bit depth 1234=Channel Clocks HH=highpass filters S=main clockspeed

We have a whopping 4 channels! that's beats the AY's channels by 1.

Unfortunately the range of octaves is a little more limited, but it's still pretty good!

The Chibisound Pro driver

Before we start using the Pokey, we need to set up AUDCTL, we do this by writing a zero to port $D208/$E808, to set up the hardware to a known state.

We have a symbol set up called POKEY - this will point to $D200 or $E800 depending on the system we're building for.

We want to select the correct address offset for the channel (0-3) we want to set.
First we set the frequency, ChibiSound PRO is designed to use 16 bits, but the pokey only uses an 8 bit frequency.

We store the frequency to the first channel register
Next we need to select an 'instrument'

If noise is on, we set the top 4 bits to %0000----, if not we make a square wave with %1010----

Noise is one if bit 7 of L is one
We need to get the 4 bit volume... we take the top 4 bits of H and shift them into the correct position.

We then OR in the 4 bits for the 'instrument' , and store the result to the second channel register.

That's all we need to do!
We have a lookup table to define the notes of the octave, we can calculate sharps or flats by taking two tones, and dividing them by two.





Lesson P52 - Sound on the SuperNintendo (ChibiSound Pro)
Lets take another look at sound! We'll write a new multi-platform sound driver, which will give us control over the hardware, and allow us to write a music player which will work in a common way on all systems.


SNS_V1_ChibiSoundPro.asm

ChibiSound PRO!

ChibiSound is the sound driver that handles the particularities of a system, there is typically one driver per system, though the CPC and MSX drivers are essentially identical except for the AY register setting routines.

The original 'ChibiSound' gave us one channel, one Volume bit, six pitch bits, and the ability to turn noise on. Pitches were not matched across systems, so sound 32 won't sound the same on all systems.

The updated 'ChibiSound Pro' gives us all the channels provided by the hardware, 8 volume bits, 16 pitch bits, and the ability to turn noise on. Pitches were not matched across systems, however the 'ChibiOctave' lookup table provides values which ARE matched across all systems.

ChibiSound PRO is essentially a reduced subset of AY functionality, and was designed on the Z80 - it's 'PRO' suffix is a parody of the 'SoundBlaster PRO' - which could only do 8 bit sound so wasn't up to professional standards! (neither is ChibiSound PRO)

ChibiSound PRO provides a standard interface to the underlying hardware, it allows the following features to be set for each channel on the underlying hardware:

Function
Zero page entry
Notes:
Channel Number (bit 0-6)
Noise On/Off (bit 7)
H Multiple channels can be supported, but on single channel systems only Channel 0 will be sure to play.
If possible Channel 0 will be a center channel, Channels 1+ may be left/right

Noise bit turns the noise effect on (1) or off (0) - this can be set on any channel, if the underlying hardware only supports one noise channel, this will be resolved by the driver.
Volume L Set volume of the channel (0-255). Higher numbers are louder. O is off
Pitch DE Set the pitch of the channel (0-65535). Higher numbers are higher pitch.
Using DE does not standardize the resulting pitch - however a 'Lookup table' of notes 'ChibiOctave' provides a standardized way of getting the correct DE value to get a pitch correct note on the platform.
Chibisound PRO does not offer features like Envelope, LFE etc, as providing consistent functionality across different platforms would not be realistic.


While we're writing a new Sound driver for the 65816 processor, we'll still use the same SPC700 driver from the original ChibiSound - You can find it HERE

That driver does the work of setting the registers on the SPC700 hardware, so we can do almost everything from the easier 65816 CPU!


The SPC700 Registers

Address Register Description Bits Meaning
c0 VOL (L) Left Volume -VVVVVVV Volume
c1 VOL (R) Right Volume -VVVVVVV Volume
c2 P (L) Pitch L PPPPPPPP Pitch
c3 P (H) Pitch H --PPPPPP Pitch
c4 SRCN Source number (references the source directory) SSSSSSSS Source
c5 ADSR (1) If bit7 is set, ADSR is enabled. If cleared GAIN is used. EDDDAAAA Enable, Dr, Ar
c6 ADSR (2) These two registers control the ADSR envelope. LLLRRRRR sL,sR
c7 GAIN This register provides function for software envelopes. GGGGGGGG G=Envelope bits
c8 -ENVX (auto updated) Readable current Envelope Value 0VVVVVVV Value
c9 -OUTX (auto updated) Readable current Waveform Value SVVVVVVV Signed Value
0C MVOL (L) Main Volume Left -VVVVVVV Volume
1C MVOL (R) Main Volume Right -VVVVVVV Volume
2C EVOL (L) Echo Volume Left -VVVVVVV Volume
3C EVOL (R) Echo Volume Right -VVVVVVV Volume
4C KON Key On CCCCCCCC Channel
5C KOF Key Off CCCCCCCC Channel
6C FLG DSP Flags. (used for MUTE,ECHO,RESET,NOISE CLOCK) RMENNNNN Reset (0=off) Mute (0=off) Echo (1=0ff) N=Noise clock
7C -ENDX (auto updated) read to see if channel done CCCCCCCC Channel
0D EFB Echo Feedback SFFFFFFF Signed Feedback
2D PMON Pitch modulation CCCCCCC- Channel (1-7)
3D NON Noise enable CCCCCCCC Channel (0=off)
4D EON Echo enable CCCCCCCC Channel (0=off)
5D DIR Offset of source directory (DIR*100h = memory offset) OOOOOOOO Offset $oo00
6D ESA Echo buffer start offset (ESA*100h = memory offset) OOOOOOOO Offset $oo00
7D EDL Echo delay, 4-bits, higher values require more memory. ----EEEE Echo delay
fF COEF 8-tap FIR Filter coefficients SCCCCCCC Signed Coeficcient
c = Channel 0-7… f = filter coefficient 0-7

The Chibisound Pro driver

Our chibisound driver uses a single sound sample, we'll need to define it's ADPCM wave.
We also need to define some bytes of ram, to record the state of the 'noise'

We also define two channel lookups, one is to select the 'base register' of a channels parameters,

the other is to set/clear the 'bit' relating to that channel (for KON/KOFF etc)
We have some functions to help us control the registers.

ProcessSoundCommandX_OR will turn on the bit for channel Y in reg A
ProcessSoundCommandX_XOR will turn off the bit for channel Y in reg A
as these registers contain bits for all channels, both of these use the cache at ChannelBuffer

ProcessSoundCommandXofchannel will deal with the channel registers $_0-$_9 , looking up the top nibble via the channel number in Y

Lets do some INIT!

We need to set up all the registers before the hardware will work for us well.

Many things like Echo and Moduclation we just set to zero, but others like master volume, and the source address of our samples we need to set to the correct values for our sounds to play.
we also need to INIT the channels.

we're only using one sample, and all these settings are the same all the time, so we'll set them all here.

If they weren't we'd want to set them for each note.
First we clear any previous key off commands with reg $5C

Next we load the channel number from z_L into Y... we can support up to 8 channels
Next we check the volume level in z_H

If it's zero we run the silence routine, by setting Key Off for this channel
We check the top bit of z_L ... this defines if noise is on or off

If noise is ON we need to shift our frequency (z_D) and volume (z_H)


we turn on the nose with reg $3D
we set the noise frequency with reg $6C
If noise is off, we clear noise with register $3D

we then load in our volume from z_H
We only need a 7 bit volume, we then set both L/R channels to the new volume
We set the 14 bit pitch of our channel with reg $03/2

We need to convert the 16 bit value in z_DE, but depending on our sample we may need to alter the amount of shifts we do, to get a good frequency range.
OK, we're ready to play our channel, so we set KEY ON for that channel!


We've only really used the SPC700 to simulate an AY sound chip here!
    
This is a bit of a waste of it's capabilities, but then again, the SPC700 is a bit of a pain, so we're even!!




Lesson P53 - Sound on the Apple II
Lets take another look at sound! We'll write a new multi-platform sound driver, which will give us control over the hardware, and allow us to write a music player which will work in a common way on all systems.

The Apple II only has beeper sound, so we'll have a challenge to play any music!


AP2_V1_ChibiSoundPro.asm

ChibiSound PRO!

ChibiSound is the sound driver that handles the particularities of a system, there is typically one driver per system, though the CPC and MSX drivers are essentially identical except for the AY register setting routines.

The original 'ChibiSound' gave us one channel, one Volume bit, six pitch bits, and the ability to turn noise on. Pitches were not matched across systems, so sound 32 won't sound the same on all systems.

The updated 'ChibiSound Pro' gives us all the channels provided by the hardware, 8 volume bits, 16 pitch bits, and the ability to turn noise on. Pitches were not matched across systems, however the 'ChibiOctave' lookup table provides values which ARE matched across all systems.

ChibiSound PRO is essentially a reduced subset of AY functionality, and was designed on the Z80 - it's 'PRO' suffix is a parody of the 'SoundBlaster PRO' - which could only do 8 bit sound so wasn't up to professional standards! (neither is ChibiSound PRO)

ChibiSound PRO provides a standard interface to the underlying hardware, it allows the following features to be set for each channel on the underlying hardware:

Function
Zero page entry
Notes:
Channel Number (bit 0-6)
Noise On/Off (bit 7)
H Multiple channels can be supported, but on single channel systems only Channel 0 will be sure to play.
If possible Channel 0 will be a center channel, Channels 1+ may be left/right

Noise bit turns the noise effect on (1) or off (0) - this can be set on any channel, if the underlying hardware only supports one noise channel, this will be resolved by the driver.
Volume L Set volume of the channel (0-255). Higher numbers are louder. O is off
Pitch DE Set the pitch of the channel (0-65535). Higher numbers are higher pitch.
Using DE does not standardize the resulting pitch - however a 'Lookup table' of notes 'ChibiOctave' provides a standardized way of getting the correct DE value to get a pitch correct note on the platform.
Chibisound PRO does not offer features like Envelope, LFE etc, as providing consistent functionality across different platforms would not be realistic.

Beeper sound!

The Apple II has a simple 'Beeper', when we read from $C030 , this will cause a sound 'blip'. by waiting for a short time before doing this again, we can make a tone.

The length of the wait will define the frequency, but playing continuous sound will use basically all our cpu power!

The Chibisound Pro driver

We'll need a few variables for our code.
Our hardware can only play one sound at a time, but our music player expects 3 channels, so we'll 'cache' the requested channels, and only play the loudest at a given time.

We also need a random data source, we'll use NoisePos as an offset for this
Finally we need to be able to configure the length of sounds that are played each iteration, ToneLength will define this (Default 16)
Before we use ChibiSoundPro we need to use the INIT routine.

This will clear the cache data, and set the default sound length to 16.
If we want a shorter sound (for example, if we're playing sound during interrupts) we can override this with chibisoundpro_setbeeperlength
When we want to set the sound a channel should play, we use chibisoundpro_set

this will set the virtual channels entry in the cache, for playing later.

Each channel uses 4 bytes
As we have no hardware maintaining the tone, We need to 'replay' the sound every tick.

First we scan the ChannelCache for the loudest of the virtual channels - this is the one we'll play this tick!
We check the volume - we can't actually change volume on this hardware, so if the channel isn't very loud we treat it as silent.

In this case, we just pause for a while, to ensure any music plays at a consistent rate.


Next we need to deal with the noise - this is enabled by bit 7 of L
We transfer this to X - if X=0 noise will be off, if any bit in it was set, it will be on.

We need some 'random' byte data for our noise source - we actually use our program code!... but we use Y as the offset within this for the next psuedo-random data.
Now we use the 16 bit pitch setting

We convert this to a 10 bit 'pitch' - which is effectively the length of our delay loop.

We bitshift it as required into DE, which will be our 16 bit loop counters.
It's time to actually make our tone!

We are going to 'blip' $C030 to make the sound, but if we want the sound to be noisy, sometimes we wont!

We use X register ANDed with our random data to define if this sound will be noisy or not!
We need to do our loops.

We need to delay a bit before the next sound blip - longer delays means lower pitch.

We also need to decide how 'long' we want to play this sound, we use the length count in H to do this, and we subtract the high byte of our pitch. This is so that whether the pitch of the tone is high or low, the length it plays will be roughly consistent.
We have a lookup table to define the notes of the octave, we can calculate sharps or flats by taking two tones, and dividing them by two.





Lesson P54 - Sound on the Atari Lynx
Lets take another look at sound! We'll write a new multi-platform sound driver, which will give us control over the hardware, and allow us to write a music player which will work in a common way on all systems.

We'll use the Lynx 4 channels to make some music!


LNX_V1_ChibiSoundPro.asm

ChibiSound PRO!

ChibiSound is the sound driver that handles the particularities of a system, there is typically one driver per system, though the CPC and MSX drivers are essentially identical except for the AY register setting routines.

The original 'ChibiSound' gave us one channel, one Volume bit, six pitch bits, and the ability to turn noise on. Pitches were not matched across systems, so sound 32 won't sound the same on all systems.

The updated 'ChibiSound Pro' gives us all the channels provided by the hardware, 8 volume bits, 16 pitch bits, and the ability to turn noise on. Pitches were not matched across systems, however the 'ChibiOctave' lookup table provides values which ARE matched across all systems.

ChibiSound PRO is essentially a reduced subset of AY functionality, and was designed on the Z80 - it's 'PRO' suffix is a parody of the 'SoundBlaster PRO' - which could only do 8 bit sound so wasn't up to professional standards! (neither is ChibiSound PRO)

ChibiSound PRO provides a standard interface to the underlying hardware, it allows the following features to be set for each channel on the underlying hardware:

Function
Zero page entry
Notes:
Channel Number (bit 0-6)
Noise On/Off (bit 7)
H Multiple channels can be supported, but on single channel systems only Channel 0 will be sure to play.
If possible Channel 0 will be a center channel, Channels 1+ may be left/right

Noise bit turns the noise effect on (1) or off (0) - this can be set on any channel, if the underlying hardware only supports one noise channel, this will be resolved by the driver.
Volume L Set volume of the channel (0-255). Higher numbers are louder. O is off
Pitch DE Set the pitch of the channel (0-65535). Higher numbers are higher pitch.
Using DE does not standardize the resulting pitch - however a 'Lookup table' of notes 'ChibiOctave' provides a standardized way of getting the correct DE value to get a pitch correct note on the platform.
Chibisound PRO does not offer features like Envelope, LFE etc, as providing consistent functionality across different platforms would not be realistic.

Atari Lynx sound.

There are a variety of memory mapped ports we'll need to use to control the sound

From To Name Description Bits Meaning
FD20 FD20
Audio Channel 0 – 2’s compliment Volume control
0-127
FD21 FD21
Audio Channel 0 – Shift register feedback enable
eg %00010000
FD22 FD22
Audio Channel 0 – Audio Output Value (Raw Data)

Eg $80
FD23 FD23
Audio Channel 0 –Lower 8 bits of shift register
Eg 0
FD24 FD24
Audio Channel 0 – Audio Timer Backup Value
eg 0-63
FD25 FD25
Audio Channel 0 – Audio Control Bits
FTIRCKKK eg %00011110
FD26 FD26
Audio Channel 0 – Audio Counter

FD27 FD27
Audio Channel 0 –Other Audio Bits
Eg 0
FD28 FD2F
Audio Channel 1 – Same as Channel 0


FD30 FD37
Audio Channel 2 – Same as Channel 0

FD38 FD3F
Audio Channel 3 – Same as Channel 0

FD40 FD40 ATTENREG0 LLLLRRRR – Audio Attenuation

FD41 FD41 ATTENREG1 LLLLRRRR – Audio Attenuation

FD42 FD42 ATTENREG2 LLLLRRRR – Audio Attenuation

FD43 FD43 ATTENREG3 LLLLRRRR – Audio Attenuation

FD44 FD44 MPAN Stereo attenuation selection

FD50 FD50 MSTEREO Stereo disable LLLLRRRR 0=all on 255=all off


The Chibisound Pro driver

Before we use ChibiSoundPro we need to use the INIT routine.

First we set the channels to on.

Then we configure the defaults for each of the 4 channels (8 bytes apart)
Whatever sound we're making we don't change these settings again.
When we want to set the sound a channel should play, we use chibisoundpro_set

We are supporting up to 4 channels, and each channel has 8 byte data ports from $FD20/28/30/38
First we set the volume, the Lynx uses a 7 bit volume
Next we set the frequency.

We only use 7 of the bits from out top byte of the DE pair
The final thing we need to do is set the shift register feedback.

A value of $01 will make a good clean tone
A value of $F0 will make a noise sound

Once we've done this, the channel setup is complete and the sound will play.
We have a lookup table to define the notes of the octave, we can calculate sharps or flats by taking two tones, and dividing them by two.




 

View Options
Default Dark
Simple (Hide this menu)
Print Mode (white background)

Top Menu
***Main Menu***
Youtube channel
Patreon
Email Newsletter
Merch Store
Amazon Affiliate Link
Forum
AkuSprite Editor
Dec/Bin/Hex/Oct/Ascii Table

Alt Tech
Archive.org
Bitchute
Odysee
Rumble
DailyMotion
Please note: I wlll upload more content to these alt platforms based on the views they bring in

Z80 Content
***Z80 Tutorial List***
Learn Z80 Assembly (2021)
Learn Z80 Assembly (old)
Hello World
Advanced Series
Multiplatform Series
Platform Specific Series
ChibiAkumas Series
Grime Z80
Z80 Downloads
Z80 Cheatsheet
Sources.7z
DevTools kit
Z80 Platforms
Amstrad CPC
Elan Enterprise
Gameboy & Gameboy Color
Master System & GameGear
MSX & MSX2
Sam Coupe
TI-83
ZX Spectrum
Spectrum NEXT
Camputers Lynx

6502 Content
***6502 Tutorial List***
Learn 6502 Assembly
Advanced Series
Platform Specific Series
Hello World Series
Grime 6502
6502 Downloads
6502 Cheatsheet
Sources.7z
DevTools kit
6502 Platforms
Apple IIe
Atari 800 and 5200
Atari Lynx
BBC Micro
Commodore 64
Commodore PET
Commander x16
Super Nintendo (SNES)
Nintendo NES / Famicom
PC Engine (Turbografx-16)
Vic 20

68000 Content
***68000 Tutorial List***
Learn 68000 Assembly
Hello World Series
Platform Specific Series
Grime 68000
68000 Downloads
68000 Cheatsheet
Sources.7z
DevTools kit
68000 Platforms
Amiga 500
Atari ST
Neo Geo
Sega Genesis / Mega Drive
Sinclair QL
X68000 (Sharp x68k)

8086 Content
Learn 8086 Assembly
Platform Specific Series
Hello World Series
8086 Downloads
8086 Cheatsheet
Sources.7z
DevTools kit
8086 Platforms
Wonderswan
MsDos

ARM Content
Learn ARM Assembly
Learn ARM Thumb Assembly
Platform Specific Series
ARM Downloads
ARM Cheatsheet
Sources.7z
DevTools kit
ARM Platforms
Gameboy Advance
Nintendo DS
Risc Os

Risc-V Content
Learn Risc-V Assembly
Risc-V Downloads
Risc-V Cheatsheet
Sources.7z
DevTools kit

PDP-11 Content
Learn PDP-11 Assembly
PDP-11 Downloads
PDP-11 Cheatsheet
Sources.7z
DevTools kit

TMS9900 Content
Learn TMS9900 Assembly
TMS9900 Downloads
TMS9900 Cheatsheet
Sources.7z
DevTools kit
TMS9900 Platforms
Ti 99

6809 Content
Learn 6809 Assembly
6809 Downloads
6809/6309 Cheatsheet
Sources.7z
DevTools kit
6809 Platforms
Dragon 32/Tandy Coco
Fujitsu FM7
TRS-80 Coco 3
Vectrex

65816 Content
Learn 65816 Assembly
65816 Downloads
65816 Cheatsheet
Sources.7z
DevTools kit
65816 Platforms
SNES

eZ80 Content
Learn eZ80 Assembly
eZ80 Downloads
eZ80 Cheatsheet
Sources.7z
DevTools kit
eZ80 Platforms
SNES

Work in Progress
ChibiAndroids

Misc bits
Ruby programming









Buy my Assembly programming book
on Amazon in Print or Kindle!


Buy my Assembly programming book



Available worldwide!
Search 'ChibiAkumas' on
your local Amazon website!
Click here for more info!

























































































































































Buy my Assembly programming book
on Amazon in Print or Kindle!


Buy my Assembly programming book



Available worldwide!
Search 'ChibiAkumas' on
your local Amazon website!
Click here for more info!












































































































Buy my Assembly programming book
on Amazon in Print or Kindle!


Buy my Assembly programming book



Available worldwide!
Search 'ChibiAkumas' on
your local Amazon website!
Click here for more info!



































































































Buy my Assembly programming book
on Amazon in Print or Kindle!


Buy my Assembly programming book



Available worldwide!
Search 'ChibiAkumas' on
your local Amazon website!
Click here for more info!












































































































Buy my Assembly programming book
on Amazon in Print or Kindle!


Buy my Assembly programming book



Available worldwide!
Search 'ChibiAkumas' on
your local Amazon website!
Click here for more info!












































































































Buy my Assembly programming book
on Amazon in Print or Kindle!


Buy my Assembly programming book



Available worldwide!
Search 'ChibiAkumas' on
your local Amazon website!
Click here for more info!



































































































Buy my Assembly programming book
on Amazon in Print or Kindle!


Buy my Assembly programming book



Available worldwide!
Search 'ChibiAkumas' on
your local Amazon website!
Click here for more info!












































































































Buy my Assembly programming book
on Amazon in Print or Kindle!


Buy my Assembly programming book



Available worldwide!
Search 'ChibiAkumas' on
your local Amazon website!
Click here for more info!












































































































Buy my Assembly programming book
on Amazon in Print or Kindle!


Buy my Assembly programming book



Available worldwide!
Search 'ChibiAkumas' on
your local Amazon website!
Click here for more info!












































































































Buy my Assembly programming book
on Amazon in Print or Kindle!


Buy my Assembly programming book



Available worldwide!
Search 'ChibiAkumas' on
your local Amazon website!
Click here for more info!