BUILDSNA
SNASET CPC_TYPE,4 ; 6128+
bankset 0
org #38
ei : ret
org #100
run #100
ld sp,#100
ld bc,#7F80+%1101 ; MODE 1
call UnlockAsic
ld bc,#7FB8 : out (c),c ; Activer le mapping de l'ASIC en #4000
ld hl,#0030 : ld (#6802),hl ; split en #C000
ld a,167 : ld (#6801),a ; split ligne 168
ld hl,#C000
junk ld a,r : ld (hl),a : inc l : jr nz,junk : inc h : jr nz,junk
; installer interruptions
ld hl,interrupt199 : ld (#39),hl
ld a,#C3 : ld (#38),a ; JP
ld a,199 : ld (#6800),a
ei
;**************************
splitScreen
;**************************
; mettre ici la logique du programme, blablabla
jr splitScreen
interrupt167 push af : xor a : ld (#6804),a : push hl ; reset du SSR pour avoir le HUD en bas stable
ld hl,interrupt199 : ld (#39),hl ; change interrupt vector
ld a,199 : ld (#6800),a
pop hl,af
ei : ret
interrupt199 push af,hl
.ssr ld hl,SSR_list : inc l : ld (.ssr+1),hl : ld a,(hl) : ld (#6804),a
ld hl,interrupt167 : ld (#39),hl ; change interrupt vector
ld a,167 : ld (#6800),a
pop hl,af
ei : ret
align 256
SSR_list
x=0
repeat 256
vx=cos(x*360/256)*2+2.5
vy=sin(x*360/256)*4+4.5
if vx<0 : vx=0 : endif
if vy<0 : vy=0 : endif
if vx>3 : vx=3 : endif
if vy>7 : vy=7 : endif
x=x+4
defb #80|(vy<<4)|(vx<<1) ; SSR en accord avec décalage vertical et horizontal
rend
UnlockAsic
ld bc,#BCFF
out (c),c
out (c),0
ld hl,%1001000011101010
.loop
out (c),c
ld a,h:rlca:ld h,l:ld l,a
srl c:res 3,c
and #88
or c
ld c,a
cp #4D
jr nz,.loop
ld a,#CD
out (c),a : out (c),a
ret
|