mirror of
https://github.com/KarolS/millfork.git
synced 2024-12-27 19:30:04 +00:00
Merge pull request #76 from zbyti/master
ANTIC Display List Instruction Set constans & some refactor
This commit is contained in:
commit
70da293fce
@ -110,6 +110,8 @@ how to create a program made of multiple files loaded on demand
|
|||||||
|
|
||||||
### Other examples
|
### Other examples
|
||||||
|
|
||||||
|
* [Test OS module](a8/a8_os_test.mfk) – quick test for a8_os.mfk module
|
||||||
|
|
||||||
* [Rainbow example](a8/rainbow.mfk) – simple scrolling rasterbars
|
* [Rainbow example](a8/rainbow.mfk) – simple scrolling rasterbars
|
||||||
|
|
||||||
* [Quatari Landscape](a8/landscape.mfk) – part of Quatari 256B intro
|
* [Quatari Landscape](a8/landscape.mfk) – part of Quatari 256B intro
|
||||||
|
@ -2,9 +2,12 @@ const word dlAddr = $3000
|
|||||||
const word dliAddr = $3100
|
const word dliAddr = $3100
|
||||||
|
|
||||||
const array(byte) dl @ dlAddr = [
|
const array(byte) dl @ dlAddr = [
|
||||||
$70,$70,$70,
|
BLANK_8,BLANK_8,BLANK_8,
|
||||||
$42,$00,$40,2,2,2,2,$f0,2,2,2,2,
|
LMS|MODE_2,$00,$40,
|
||||||
$41,@word[dlAddr]
|
MODE_2,MODE_2,MODE_2,MODE_2,
|
||||||
|
BLANK_8|DLI,
|
||||||
|
MODE_2,MODE_2,MODE_2,MODE_2,
|
||||||
|
JVB,@word[dlAddr]
|
||||||
]
|
]
|
||||||
|
|
||||||
volatile word SDLST @ $230
|
volatile word SDLST @ $230
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
// idea @ilmenit
|
// idea @ilmenit
|
||||||
// https://demozoo.org/productions/280623/
|
// https://demozoo.org/productions/280623
|
||||||
|
// for 8bit AtariXL, OS Rev 2
|
||||||
|
|
||||||
alias prev_x = os_OLDCOL.lo
|
alias prev_x = os_OLDCOL.lo
|
||||||
alias cursor_x = os_COLCRS.lo
|
alias cursor_x = os_COLCRS.lo
|
||||||
@ -23,20 +24,17 @@ void main(){
|
|||||||
for i,0,to,79 {
|
for i,0,to,79 {
|
||||||
cursor_x = i
|
cursor_x = i
|
||||||
prev_x = i
|
prev_x = i
|
||||||
color = 13
|
|
||||||
prev_y = 1
|
prev_y = 1
|
||||||
|
|
||||||
while color != $ff {
|
for color,13,downto,0 {
|
||||||
cursor_y = color_height[color]
|
cursor_y = color_height[color]
|
||||||
if (pokey_random & 1) != 0 {
|
if pokey_random < $80 {
|
||||||
|
color_height[color] -= 1
|
||||||
|
}
|
||||||
|
if pokey_random < $80 {
|
||||||
color_height[color] += 1
|
color_height[color] += 1
|
||||||
} else {
|
|
||||||
if (pokey_random & 1) != 0 {
|
|
||||||
color_height[color] -= 1
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
drawto()
|
drawto()
|
||||||
color -= 1
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -4,6 +4,44 @@
|
|||||||
#warn a8_antic module should be used only on Atari computer-compatible targets
|
#warn a8_antic module should be used only on Atari computer-compatible targets
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// ANTIC Display List Instruction Set
|
||||||
|
// THE DISPLAY LIST CANNOT CROSS A 1K BYTE MEMORY BOUNDARY UNLESS A JUMP INSTRUCTION IS USED!
|
||||||
|
const byte LMS = $40 // Load memory scan 10-bit counter, $fff boundary.
|
||||||
|
const byte DLI = $80 // Display list interrupt - Interrupt CPU at beginning of last scan line.
|
||||||
|
const byte HSCROL = $10 // Enable horizontal scrolling.
|
||||||
|
const byte VSCROL = $20 // Enable vertical scrolling.
|
||||||
|
const byte JMP = 1 // Jump command - followed by two bytes indicating the new instruction pointer for the display list.
|
||||||
|
const byte JVB = $41 // Jump and wait for Vertical Blank - suspends the display list until vertical blank and then jumps.
|
||||||
|
|
||||||
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
//+ BASIC + colors + resolution + display mode + scan lines per row + screen memory + bytes per line + bits per pixel +
|
||||||
|
const byte MODE_2 = 2 //+ 0 + 2 + 40x24 + text + 8 + 960 B + 40 + 8 +
|
||||||
|
const byte MODE_3 = 3 //+ - + 2 + 40x24 + text + 10 + 760 B + 40 + 8 +
|
||||||
|
const byte MODE_4 = 4 //+ 12 + 5 + 40x24 + text + 8 + 960 B + 40 + 8 +
|
||||||
|
const byte MODE_5 = 5 //+ 13 + 5 + 40x12 + text + 16 + 480 B + 40 + 8 +
|
||||||
|
const byte MODE_6 = 6 //+ 1 + 5 + 20x24 + text + 8 + 480 B + 20 + 8 +
|
||||||
|
const byte MODE_7 = 7 //+ 2 + 5 + 20x12 + text + 16 + 240 B + 20 + 8 +
|
||||||
|
const byte MODE_8 = 8 //+ 3 + 4 + 40x24 + graphics + 8 + 240 B + 10 + 2 +
|
||||||
|
const byte MODE_9 = 9 //+ 4 + 2 + 80x48 + graphics + 4 + 480 B + 10 + 1 +
|
||||||
|
const byte MODE_A = $a //+ 5 + 4 + 80x48 + graphics + 4 + 960 B + 20 + 2 +
|
||||||
|
const byte MODE_B = $b //+ 6 + 2 + 160x96 + graphics + 2 + 1920 B + 20 + 1 +
|
||||||
|
const byte MODE_C = $c //+ 14 + 2 + 160x192 + graphics + 1 + 3840 B + 20 + 1 +
|
||||||
|
const byte MODE_D = $d //+ 7 + 4 + 160x96 + graphics + 2 + 3840 B + 40 + 2 +
|
||||||
|
const byte MODE_E = $e //+ 15 + 4 + 160x192 + graphics + 1 + 7680 B + 40 + 2 +
|
||||||
|
const byte MODE_F = $f //+8,9,10,11+ 2 + 320x192 + graphics + 1 + 7680 B + 40 + 1 +
|
||||||
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
|
const byte BLANK_1 = 0
|
||||||
|
const byte BLANK_2 = $10
|
||||||
|
const byte BLANK_3 = $20
|
||||||
|
const byte BLANK_4 = $30
|
||||||
|
const byte BLANK_5 = $40
|
||||||
|
const byte BLANK_6 = $50
|
||||||
|
const byte BLANK_7 = $60
|
||||||
|
const byte BLANK_8 = $70
|
||||||
|
|
||||||
|
//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
|
||||||
volatile byte antic_dmactl @$D400 // direct memory access control
|
volatile byte antic_dmactl @$D400 // direct memory access control
|
||||||
volatile byte antic_chactl @$D401 // character mode control
|
volatile byte antic_chactl @$D401 // character mode control
|
||||||
volatile word antic_dlist @$D402 // display list pointer
|
volatile word antic_dlist @$D402 // display list pointer
|
||||||
|
Loading…
Reference in New Issue
Block a user