; ; Scrollings multiples avec rupture d'{cran ; par OffseT (Futurs') 25/12/93 ; Adapt{ le 02/04/95 pour Quasar CPC 8 ; Info ; Nbre ligne de l'{cran=(Reg4+1)*(Reg9+1)+Reg5 ; Registres utilis{s ; ; Reg1=Largeur d'{cran ; Reg2=Position X d'{cran ; =Position de la HBL ; Reg4=Nbre total de lignes de caract}res ; Reg5=Retard vid{o ; Reg6=Hauteur d'{cran ; Reg7=Position Y d'{cran ; =Position de la VBL ; Reg9=Nbre de lignes des caract}res Org &4000 Nolist ; ; Initialisations ; ; Interruptions di ld hl,(&38) ld (inter),hl ld hl,&c9fb ld (&38),hl ei ; Largeur de l'{cran ; (Valeurs communes aux deux {crans) ld bc,&bc00+2 out (c),c ld bc,&bd00+49 out (c),c ; Reg2=49 ld bc,&bc00+1 out (c),c ld bc,&bd00+50 ; Reg1=50 out (c),c ; ; Prog. principal ; Prog ld b,&f5 Synchro in a,(c) rra jp nc,synchro ; Format du premier {cran ld bc,&bc00+4 out (c),c ld bc,&bd00+19 out (c),c ; Reg4=19 ld bc,&bc00+9 out (c),c ld bc,&bd00+7 out (c),c ; Reg9=7 ld bc,&bc00+5 out (c),c Retard1 ld bc,&bd00+7 out (c),c ; Reg5=variable ld bc,&bc00+6 out (c),c ld bc,&bd00+21 ; Reg6=21 out (c),c ld bc,&bc00+7 out (c),c ld bc,&bd00+255 ; Reg7 hors champ out (c),c ld bc,&bc0c out (c),c Plot1 ld bc,&bd00+%00110000 out (c),c ; Page=&C000 & Taille=16Ko ld bc,&bc0d out (c),c Plot2 ld bc,&bd00+0 out (c),c ; Offset=variable halt hlat ; Format du deuxi}me {cran ; On ne touche pas aux registres 4 et 9 ; car c'est comme pour l'{cran 1 ld bc,&bc00+5 out (c),c Retard2 ld bc,&bd00 out (c),c ; Reg5=variable ld bc,&bc0c out (c),c Plot3 ld bc,&bd00+%00100000 out (c),c ; Page=&8000 & Taille=16Ko ld bc,&bc0d out (c),c Plot4 ld bc,&bd00+0 out (c),c ; Offset=variable halt halt halt ; Fin du deuxi}me {cran ld bc,&bc00+7 ; On remet le Reg7 out (c),c ; @ une valeur ld bc,&bd00+19 ; normale pour la out (c),c ; synchro VBL call reg5 call offset2 di ; Test clavier ld bc,&f40e out (c),c ld bc,&f6c0 out (c),c xor a out (c),a ld bc,&f792 out (c),c ld bc,&f645 ; Ligne 5 out (c),c ld b,&f4 in a,(c) ld bc,&f782 out (c),c ld bc,&f600 out (c),c ei rla jp c,prog ; Test espace ; ; Exit, on remet tout en standard ; di ld bc,&bc04 out (c),c ld bc,&bd00+38 out (c),c ; Reg4=38 ld bc,&bc09 out (c),c ld bc,&bd00+7 out (c),c ; Reg9=7 ld bc,&bc05 out (c),c ld bc,&bd00+0 out (c),c ; Reg5=0 ld bc,&bc0c out (c),c ld bc,&bd00+%00110000 out (c),c ; Page=&C000 ld bc,&bc0d out (c),c ld bc,&bd00+0 out (c),c ; Offset=0 ld bc,&bc06 out (c),c ld bc,&bd00+25 out (c),c ; Reg6=25 ld bc,&bc07 out (c),c ld bc,&bd00+30 out (c),c ; Reg7=30 ld bc,&bc02 out (c),c ld bc,&bd00+46 out (c),c ; Reg2=46 ld bc,&bc01 out (c),c ld bc,&bd00+40 out (c),c ; Reg1=40 ; Restitution des interruptions ld hl,(inter) ld (&38),hl ei ret ; ; Scrolling vertical ; Modif retard vid{o ; ({crans 1 et 2) ; Reg5 ld a,(retard1+1) dec a ld c,a and %00000111 ld (retard1+1),a cp c call nz,offset1 ld a,(retard2+1) inc a and %00000111 ld (retard2+1),a ret ; ; Scrolling vertical ; Modif. offset ({cran 1) ; Offset1 ld a,(plot1+1) ld h,a ld a,(plot2+1) ld l,a ld bc,50 add hl,bc ld a,h and %00110011 or %00110000 ld (plot1+1),a ld a,l ld (plot2+1),a ret ; ; Scrolling horizontal ; Modif. offset ({cran 2) Offset2 ld a,(plot4+1) ld l,a ld a,(plot3+1) ld h,a inc hl ld a,h and %00100011 ld (plot3+1),a ld a,l ld (plot4+1),a ret ; ; Data ; Inter dw &0000 ; ; S t halt halt ; Fin du deuxi}me {cran c ; Reg5=variable ldhl,(&38) l