First public commit.
This commit is contained in:
parent
2a48f52979
commit
4bac9d83ed
288 changed files with 18417 additions and 1076 deletions
51
lenser/a5200/viewer/viewer.s
Normal file
51
lenser/a5200/viewer/viewer.s
Normal file
|
|
@ -0,0 +1,51 @@
|
|||
; Atari 5200 image viewer -- self-contained, no OS.
|
||||
;
|
||||
; The 5200 has no operating system (only a small BIOS that jumps straight to the
|
||||
; cartridge), so this code programmes ANTIC and GTIA hardware registers directly.
|
||||
; ANTIC DMAs the bitmap and display list straight out of cartridge ROM, so nothing
|
||||
; needs copying to RAM -- the viewer only applies the GTIA colour registers, points
|
||||
; ANTIC at the display list, enables DMA, and holds.
|
||||
;
|
||||
; GTIA is at $C000 on the 5200 (not $D000 as on the 400/800); ANTIC is at $D400.
|
||||
;
|
||||
; #defines from viewer/assemble.py --
|
||||
; DLIST cartridge address of the display list
|
||||
; SCRIPT cartridge address of the GTIA register script -- (offset, value)
|
||||
; byte pairs applied as $C000+offset = value, terminated by $FF
|
||||
|
||||
* = $4000
|
||||
|
||||
start:
|
||||
sei
|
||||
cld
|
||||
ldx #$ff
|
||||
txs
|
||||
lda #$00
|
||||
sta $d40e ; NMIEN = 0 -- no interrupts
|
||||
sta $d400 ; DMACTL = 0 while we set up
|
||||
|
||||
; ---- apply the GTIA register script (offset, value pairs) ----
|
||||
ldx #$00
|
||||
sloop:
|
||||
lda SCRIPT,x
|
||||
cmp #$ff
|
||||
beq sdone
|
||||
tay ; Y = register offset within GTIA
|
||||
inx
|
||||
lda SCRIPT,x
|
||||
sta $c000,y ; GTIA register = value
|
||||
inx
|
||||
jmp sloop
|
||||
sdone:
|
||||
; ---- point ANTIC at the display list ----
|
||||
lda #<DLIST
|
||||
sta $d402 ; DLISTL
|
||||
lda #>DLIST
|
||||
sta $d403 ; DLISTH
|
||||
|
||||
; ---- enable DMA -- normal playfield + display-list DMA ----
|
||||
lda #$22
|
||||
sta $d400 ; DMACTL
|
||||
|
||||
; ---- hold the picture (forever / until a button / N seconds) ----
|
||||
#include "awyt5200.i"
|
||||
Loading…
Add table
Add a link
Reference in a new issue