Difference between revisions of "Motorola 68000"
(Add links to ST source code) |
(Convert links list to table) |
||
Line 129: | Line 129: | ||
Sizecoding on the Atari ST is not very huge yet, so resources are sparse. Here are some bytetros with source code: | Sizecoding on the Atari ST is not very huge yet, so resources are sparse. Here are some bytetros with source code: | ||
− | + | {| class="wikitable" | |
− | + | |- | |
− | + | ! Prod name (Pouet link) !! Source code | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=64455 128b Palette Starfield by Gaston] || https://github.com/ggnkua/Atari_ST_Sources/blob/master/ASM/Gaston/starfield_128b_src/STARFLD.S | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=64468 Fractal Landscape bootsector by Gaston] || https://github.com/ggnkua/Atari_ST_Sources/blob/master/ASM/Gaston/fractal_boot_src/FRACTAL.S | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=22325 BIG scroller by NoCrew] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/NoCrew/bigscrol | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=16924 128byte drum machine by gwEm] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/Preromanbritain/128drum | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=17041 128byte Theremin by gwEm] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/Preromanbritain/theremin.128 | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=17370 128byte virtual 303 by gwEm] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/Preromanbritain/128b_303 | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=25051 88 Bytes by Sedma] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/Various/Sedma/SEDMA_ST | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=25052 Realtime Competition by Mystic Bytes] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/OUT2K5/mikro | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=24965 The Bootshitctor by KÜA software productions] || https://github.com/ggnkua/Atari_ST_Sources/KÜA%20software%20productions/boot | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=50496 BOOT MY PIGGY GAME by Lineout & KÜA software productions] || https://github.com/ggnkua/Atari_ST_Sources/KÜA%20software%20productions/piggy | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=53190 Keeping atari alive by D-Bug] || https://github.com/ggnkua/Atari_ST_Sources/D-Bug/OL09BOOT/OL09BOOT.S | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=53198 dla by Positivity] || https://github.com/ggnkua/Atari_ST_Sources/Positivity/dla/src | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=54952 quadratic splines by Positivity] || https://github.com/ggnkua/Atari_ST_Sources/Positivity/quad/QUAD.SRC | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=56279 TT-Noise by KÜA software productions] || https://github.com/ggnkua/Atari_ST_Sources/KÜA%20software%20productions/ttnoise | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=57063 Random Cell by Positivity] || https://github.com/ggnkua/Atari_ST_Sources/Positivity/cell/CELL.SRC | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=57921 128 byte Choonage by Psycho Hacking Force] || https://github.com/ggnkua/Atari_ST_Sources/ASM/PHF/128choon | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=58123 ShowMem by Positivity] || https://github.com/ggnkua/Atari_ST_Sources/ASM/Positivity/showmem | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=65455 Benoît by Orb] || https://github.com/ggnkua/Atari_ST_Sources/ASM/ORB/Benoit(ST) | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=65611 1 euro by Lineout & KÜA software productions & Psycho Hacking Force] || https://github.com/ggnkua/Atari_ST_Sources/KÜA%20software%20productions/BIER/source | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=67392 Έτη πολλα! by KÜA software productions] || https://github.com/ggnkua/Atari_ST_Sources/KÜA%20software%20productions/etipolla | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=68508 Sync128b by Dyno] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/Various/Dyno/sync128b | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=72891 128B Mandelbrot Set by Dyno] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/Various/Dyno/128b-Mandelbrot_Set | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=72893 64B Sierpinski Scroller by Dyno] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/Various/Dyno/64b-Sierpinski_Scroller | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=72894 32B Sierpinski Triangles by Dyno] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/Various/Dyno/32b-Sierpinski_Triangle | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=72895 32B Noise by Dyno] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/Various/Dyno/32b-Noise | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=78762 Fractal 128 by Orion_] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/Various/Cedric%20Bourse%20(orion_)/fract128 | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=81758 ImPerfect by Satantronic] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/Satantronic/IMPERFCT | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=84120 tunnelST by atariBDSM] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/atariBDSM/tunnelST | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=84238 Blues by tr1x] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/Various/tr1x/BLUES | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=84239 Shades by tr1x] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/Various/tr1x/SHADES | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=86138 Wobble by Gash] || https://github.com/ggnkua/Atari_ST_Sources/blob/master/ASM/Gash/wobble/wobble.s | |
+ | |- | ||
+ | |[https://www.pouet.net/prod.php?which=86127 MindBender by Defence Force] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/Defence Force/MindBender | ||
+ | |- | ||
+ | |[https://www.pouet.net/prod.php?which=86129 DER SPKR IMPERATIV by SMFX] || https://github.com/ggnkua/Atari_ST_Sources/blob/master/ASM/SMFX/imperati/imperativ.s | ||
+ | |} | ||
And some for the Atari Falcon | And some for the Atari Falcon | ||
− | + | {| class="wikitable" | |
− | + | |- | |
− | + | ! Prod name (pouet link) !! Source code | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=25220 NoBrains Mandelbrot Zoomer 128 by NoCrew] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/NoCrew/mandel | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=28781 128 bytes Plasma demo by NoCrew] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/NoCrew/plasma | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=28783 128 bytes Pyro demo by NoCrew] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/NoCrew/pyro | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=28784 128 bytes Sierspinksi by NoCrew] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/NoCrew/sierpins | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=28856 128 TRON][ by T.O.Y.S.] || https://github.com/ggnkua/Atari_ST_Sources/blob/master/ASM/T.O.Y.S/128TRON2/SOURCE/128TRON2.S | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=28762 Strange Things Happends In Sweden by Mind Design] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/Mind%20Design/Strange%20Things%20Happends%20InSweden | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=25221 Mixed Dots 128 by NoCrew] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/NoCrew/mixdots/src | |
− | + | |- | |
− | + | |[https://www.pouet.net/prod.php?which=25050 Realtime Competition Falcon by Sedma] || https://github.com/ggnkua/Atari_ST_Sources/tree/master/ASM/Various/Sedma/SEDMA_F | |
+ | |} | ||
== Commodore Amiga == | == Commodore Amiga == |
Revision as of 02:36, 10 October 2020
Contents
Introduction
Wanting to start sizecoding on a Motorola 68k platform in this day and age can be tough.
So here is a bit of help to get you started:
The Motorola 68k processor
The Motorola 68k processor...
Note: Assigment direction is source,dest instead of dest,source !!!
Registers
To be added.
Atari ST
The Atari ST systems consists of the M68k system with custom hardware for graphics and sound.
Setting up
Setting up your development platform for the Atari ST systems is quite easy, first get the following tools:
- Assembler: VASM - This assembler is able to assemble directly to a TOS executable
- Assembler: RMAC - Can assemble to TOS executable as well as a headerless absolute binary
- Emulator(s): -. Make sure to use the original TOS 1.62 Image for best compatibility.
Compiling to a TOS image
Vasm -Ftos source.s -o source.tos rmac -p -o source.tos source.s
ST executable format, and why you should write relocatable code
To be added
Video display
The Atari ST uses an interleaved planar memory layout to represent its paletted display modes (we'll concentrate on 320x200x16 colours here).
Paletted?
The Atari ST uses index values into a palette of colours. Index 0 is the background colour (that's also used for the border) and a maximum of 16 colours can be defined and indexed.
Planes?
Every plane contains one bit of a pixel's colour index value. The bits of the binary representation of a colour index like %1010 (% Bit3,Bit2,Bit1,Bit0) will end up in 4 different planes (bits most significant to least significant aka left to right): Plane4 Plane3 Plane2 Plane1.
So basicly Plane1 contains all of the Bit0s of all pixels, Plane2 all Bit1s, Plane3 all Bit2s and Plabe4 all Bit3s.
The first pixel on a plane is described by the leftmost (aka most significant) bit in a word, the second one by the second-leftmost etc. - just like this %0123456789abcdef with 0-f=pixels 1-16. %1000000000000000=$8000=pixel 1 in a plane word set. The 16th pixel will use the leftmost bit of the next word in this plane. etc.
Interleaved?
16 pixels worth of data are represented as a full graphicword, meaning all information to display 16 pixels are stored together, followed by the data to represent the next 16 pixels etc. One row worth of display data has 20 graphicwords (20*16 pixels=320 pixels).
16 pixels are stored in 4 words - which contain 4 of the aforementioned planes.
So a 320x200x16 colour display is a contiuous memory buffer containing:
Pixels 0-15, row 0:(Plane1.w Plane2.w Plane3.w Plane4.w)
Pixels 16-31, row 0:(Plane1.w Plane2.w Plane3.w Plane4.w)
Pixels 32-47, row 0:(Plane1.w Plane2.w Plane3.w Plane4.w)
......
Pixels 304-319, row 199:(Plane1.w Plane2.w Plane3.w Plane4.w)
To be refined soon.
Setting a palette
Here is some code that will help you setup a palette
pea palette(pc)
move.w #6,-(sp)
trap #14
; Palette data
palette:
dc.w $000,$100,$200,$311,$422,$533,$644,$755
dc.w $575,$464,$353,$242,$131,$020,$010,$000
Getting something on screen
Here is a bit of code to get you started:
;-----------------------
; Line-A Initialization
;-----------------------
; After calling this function, data register D0 and address register A0 point to a table ; with the starting address of the Line A variables.
; Address register A1 points to a table with the starting addresses for the three system ; font headers,
; and address register A2 points to a table that specifies the starting addresses of the; 15 Line A opcodes. There's no parameter required for this function, so all you have
; to do is call the word opcode label that you specified for the $A000 (Initialize)
; function.
dc.w $A000
movem.l (a0),a1-a4 ; A3=INTIN, A4=PTSIN
;---------
; For X&Y
;---------
frameloop:
move.w #200-1,d7 ; y
yLoop:
move.w #320-1,d6 ; x
xLoop:
; Putpixel
put_pixel:
move.b d6,d0 ; d0=x
eor d7,d0 ; d0=x^y
lsr.b #2,d0 ; d0>>=4
and #42,d0 ; d0&42
move.w d0,(a3) ; a3=color(d0)
movem.w d6/d7,(a4) ; a4=x,y`
dc.w $A001 ; put pixel command
dbra d6,xLoop ; decrease and branch
dbra d7,yLoop
; Wait loop
bra frameloop ; .s *
Sound
The Atari ST systems use the YM2149 chip to generate sound.\
For more information check out https://www.atarimagazines.com/v4n7/stsound.html
Make some noise
To be added soon.
Additional Resources
Sizecoding on the Atari ST is not very huge yet, so resources are sparse. Here are some bytetros with source code:
And some for the Atari Falcon
Commodore Amiga
The Commodore Amiga system consists of the M68k system with custom hardware for graphics and sound.
Setting up
- Assembler: -
- Emulator(s): WinUAE
Video display
No information yet
Sound
No information yet