; Atari 7800 image viewer -- programs MARIA, then holds. ; ; MARIA DMAs the display-list list (DLL), the per-line display lists (DLs) and the ; bitmap straight out of cartridge ROM, so the viewer only loads MARIA's colour ; registers, points it at the DLL, turns DMA on, and loops. MARIA registers live ; in zero page ($20-$3F). ; ; #defines from viewer/assemble.py -- ; SCRIPT address of the colour register script -- (reg, value) byte pairs ; written as $0000+reg = value, terminated by $FF ; DLL address of the display-list list * = $4000 reset: sei cld ldx #$ff txs lda #$00 sta $3c ; CTRL = 0 -- DMA off while we set up ; ---- load MARIA colour registers from the script ---- ldx #$00 sloop: lda SCRIPT,x cmp #$ff beq sdone tay ; Y = MARIA register ($20..$3F) inx lda SCRIPT,x sta $0000,y inx jmp sloop sdone: ; ---- point MARIA at the display-list list ---- lda #>DLL sta $2c ; DPPH lda #