;
;Source for PCIN-Mode-Pictue done with GraphicsTileMaster (V0.0.0.x)
;
;Made changes for PCIN mode hi-res (Antic 4 - Antic 2) ... PF0-PF3 unchanged between cycles.  Display lists are unaltered
;$80 (128 decimal) is stored in PRIOR
;Altered Antic 4 display list for horizontal scrolling
;
BUF1	equ $A000       ;Screenbuffer for Fontscreen
BUF2	equ $A800       ;Screenbuffer for Fontscreen2
;GTIA
PRIOR	equ $D01B	;

PORTA	equ $D300
PORTB	equ $D301
;ANTIC
CHBASE	equ $D409	; Characterfont base
WSYNC	equ $D40A	; wait sync
VCOUNT	equ $D40B	; vertical line count (0-131 PAL, 0-156 NTSC)
NMIEN	equ $D40E	; Interupt enable
HSCROL  equ $D404
CHACT equ $02F3

CNT	equ $14

FONTORG	equ $E000	;Atari font
LOWEST	equ $2400	;lowest safe adress for prg
FONT	equ $2400	;own fonts for foreground
fontsForeground equ FONT    
FONT2	equ FONT+8*$400	;own fonts for background
fontsBackground equ FONT2    

        org FONT-4
        jmp startup
        nop
	ins "astrnaut.ipc",+10,1024
	ins "astrnaut.ipc",+2058,1024
	ins "astrnaut.ipc",+4106,1024
	ins "astrnaut.ipc",+6154,1024
	ins "astrnaut.ipc",+8202,1024
	ins "astrnaut.ipc",+10250,1024
	ins "astrnaut.ipc",+12298,1024
	ins "astrnaut.ipc",+14346,1024
	
	ins "astrnaut.ipc",+1034,1024
	ins "astrnaut.ipc",+3082,1024
	ins "astrnaut.ipc",+5130,1024
	ins "astrnaut.ipc",+7178,1024
	ins "astrnaut.ipc",+9226,1024
	ins "astrnaut.ipc",+11274,1024
	ins "astrnaut.ipc",+13322,1024
	ins "astrnaut.ipc",+15370,1024
	
	
	
	org BUF1
	ins "astrnaut.ipc",-960,960
	org BUF2
	ins "astrnaut.ipc",-960,960
	
	.get "astrnaut.ipc",1,9
	
startup
    
	mva #0 559
        jsr GR4TEXT
        jsr initDLI
;	jsr copyFont
	mva #34 559
	mva #15 HSCROL

   
	
chrready
	lda #>FONT	; activate Font
	sta CHBASE

main    lda cnt
sync	cmp cnt
        beq sync
        lsr ;Use bit 0 to select font
        bcs use_font2
        mva #$00 PRIOR
		mva #15 HSCROL
		mva #2 CHACT
        mva #<COLORS c_loop5+1 
        mva #>COLORS c_loop5+2 
        lda #>FONT
        sta $d409
	; DLI vorbereiten
	mva #1 tabIndex
	; DLI mode4
	lda #<ant2
	sta 560
	lda #>ant2
	sta 561
        jmp setclrs
use_font2
        mva #$80 PRIOR
		mva #14 HSCROL
		mva #0 CHACT
        mva #<COLORS2 c_loop5+1 
        mva #>COLORS2 c_loop5+2 
        lda #>FONT2
        sta $d409
	; DLI vorbereiten
	mva #8+1 tabIndex
	; DLI mode2
	lda #<ant4
	sta 560
	lda #>ant4
	sta 561
setclrs	ldy #0	; set colors 704-712
c_loop5	lda COLORS,y
	sta 704,y
	iny
	cpy #712-704+1
	bne c_loop5

	jmp main


GR4TEXT	lda #<ant4
	sta 560
	lda #>ant4
	sta 561

        lda #<BUF1
        sta 88
        lda #>BUF1
        sta 89

        ldy #0	; set colors 704-712
c_loop4	lda COLORS,y
	sta 704,y
	iny
	cpy #712-704+1
	bne c_loop4
	rts

COLORS	
	.sav [0] 9
COLORS2	
	.sav [0] 8
	.sav [0] 1
	
initDLI	mva 0 NMIEN
	mva <dli $200
	mva >dli $201
	mva #$c0 NMIEN
	rts

; displaylist interrupt
dli	pha
	txa
	pha
	ldx tabIndex	; index for font and 
	lda chbaseTab,x
	sta WSYNC
	sta CHBASE
	;lda priorTab,x
	;sta PRIOR
	inc tabIndex
	pla
	tax
	pla
	rti
tabIndex	dta 1
chbaseTab
	.rept 8
	dta >(fontsForeground + #*$400)
	.endr
	.rept 8
	dta >(fontsBackground + #*$400)
	.endr

;-----------------------------------------------------------------------------
.align $1000
// ANTIC PROGRAM
ant4	dta d'ppp'	;$70,$70,$70
	dta b($40+$10+4)	;$44                 1x40 Bytes
	dta a(BUF1)	;adr of screenbuf
	dta b($40+$10+4)		;1 Line characters
	dta a(BUF1+40)	;adr of screenbuf
	
	dta b(4+$80+$10+$40)	;1 Line with dli
	dta a(BUF1+80)	;adr of screenbuf
	dta b($40+$10+4)		;1 Line characters
	dta a(BUF1+120)	;adr of screenbuf
	dta b($40+$10+4)		;1 Line characters
	dta a(BUF1+160)	;adr of screenbuf
	
	dta b(4+$80+$10+$40)	;1 Line with dli
	dta a(BUF1+200)	;adr of screenbuf
	dta b($40+$10+4)	;1 Line characters
	dta a(BUF1+240)	;adr of screenbuf
	dta b($40+$10+4)		;1 Line characters
	dta a(BUF1+280)	;adr of screenbuf
	
	dta b(4+$80+$10+$40)	;1 Line with dli
	dta a(BUF1+320)	;adr of screenbuf
	dta b($40+$10+4)		;1 Line characters
	dta a(BUF1+360)	;adr of screenbuf
	dta b($40+$10+4)		;1 Line characters
	dta a(BUF1+400)	;adr of screenbuf
	
	dta b(4+$80+$10+$40)	;1 Line with dli
	dta a(BUF1+440)	;adr of screenbuf
	dta b($40+$10+4)		;1 Line characters
	dta a(BUF1+480)	;adr of screenbuf
	dta b($40+$10+4)		;1 Line characters
	dta a(BUF1+520)	;adr of screenbuf
	
	dta b(4+$80+$10+$40)	;1 Line with dli
	dta a(BUF1+560)	;adr of screenbuf
	dta b($40+$10+4)		;1 Line characters
	dta a(BUF1+600)	;adr of screenbuf
	dta b($40+$10+4)		;1 Line characters
	dta a(BUF1+640)	;adr of screenbuf
	
	dta b(4+$80+$10+$40)	;1 Line with dli
	dta a(BUF1+680)	;adr of screenbuf
	dta b($40+$10+4)		;1 Line characters
	dta a(BUF1+720)	;adr of screenbuf
	dta b($40+$10+4)		;1 Line characters
	dta a(BUF1+760)	;adr of screenbuf
	
	dta b(4+$80+$10+$40)	;1 Line with dli
	dta a(BUF1+800)	;adr of screenbuf
	dta b($40+$10+4)		;1 Line characters
	dta a(BUF1+840)	;adr of screenbuf
	dta b($40+$10+4)		;1 Line characters
	dta a(BUF1+880)	;adr of screenbuf
	
	
	dta b($40+$10+4)		;1 Line characters
	dta a(BUF1+920)	;adr of screenbuf
	dta $41,a(ant4)	;$41,$49,$40  jmp/load
// ANTIC PROGRAM2
ant2	dta d'ppp'	;$70,$70,$70
	dta b($40+$10+2)	;$44                 1x40 Bytes
	dta a(BUF2)	;adr of screenbuf
	dta b($40+$10+2)		;1 Line characters
	dta a(BUF2+40)	;adr of screenbuf
	
	dta b(2+$80+$10+$40)	;1 Line with dli
	dta a(BUF2+80)	;adr of screenbuf
	dta b($40+$10+2)		;1 Line characters
	dta a(BUF2+120)	;adr of screenbuf
	dta b($40+$10+2)		;1 Line characters
	dta a(BUF2+160)	;adr of screenbuf
	
	dta b(2+$80+$10+$40)	;1 Line with dli
	dta a(BUF2+200)	;adr of screenbuf
	dta b($40+$10+2)		;1 Line characters
	dta a(BUF2+240)	;adr of screenbuf
	dta b($40+$10+2)		;1 Line characters
	dta a(BUF2+280)	;adr of screenbuf
	
	dta b(2+$80+$10+$40)	;1 Line with dli
	dta a(BUF2+320)	;adr of screenbuf
	dta b($40+$10+2)		;1 Line characters
	dta a(BUF2+360)	;adr of screenbuf
	dta b($40+$10+2)		;1 Line characters
	dta a(BUF2+400)	;adr of screenbuf
	
	dta b(2+$80+$10+$40)	;1 Line with dli
	dta a(BUF2+440)	;adr of screenbuf
	dta b($40+$10+2)		;1 Line characters
	dta a(BUF2+480)	;adr of screenbuf
	dta b($40+$10+2)		;1 Line characters
	dta a(BUF2+520)	;adr of screenbuf
	
	dta b(2+$80+$10+$40)	;1 Line with dli
	dta a(BUF2+560)	;adr of screenbuf
	dta b($40+$10+2)		;1 Line characters
	dta a(BUF2+600)	;adr of screenbuf
	dta b($40+$10+2)		;1 Line characters
	dta a(BUF2+640)	;adr of screenbuf
	
	dta b(2+$80+$10+$40)	;1 Line with dli
	dta a(BUF2+680)	;adr of screenbuf
	dta b($40+$10+2)		;1 Line characters
	dta a(BUF2+720)	;adr of screenbuf
	dta b($40+$10+2)		;1 Line characters
	dta a(BUF2+760)	;adr of screenbuf
	
	dta b(2+$80+$10+$40)	;1 Line with dli
	dta a(BUF2+800)	;adr of screenbuf
	dta b($40+$10+2)		;1 Line characters
	dta a(BUF2+840)	;adr of screenbuf
	dta b($40+$10+2)		;1 Line characters
	dta a(BUF2+880)	;adr of screenbuf
	
	
	dta b($40+$10+2)		;1 Line characters
	dta a(BUF2+920)	;adr of screenbuf
	dta $41,a(ant2)	;$41,$49,$40  jmp/load

