9102
DEMO -> Other
© Amstrad Cent Pour Cent (1993)
 
 
 
Scrolling Hard Vertical
cpc
 
 

Last Update : Thursday 26 October 2017 at 22 h 44

Manual n° 1

Real size : 2441 * 1735 px = 613.19 Ko

Manual n° 2

Real size : 2437 * 1731 px = 435.92 Ko

Manual n° 3

; ; SCROLLING HARD VERTICAL ; ; (c)Pict/Logon System Mai 1993 ; ; Assemble avec DAMS ; ; charge en banque #c4 (#4000) ; ;WRITE DIRECT "SCROLL.BIN" ORG #3000 ;ENT $ ; largeur en mots de l'ecran: r1 EQU 32 ; initialisation mode et texte LD a,1 CALL #bc0e CALL #bb4e ; ; Dessin de la matrice ; des blocs ; (6 blocs de 4 caracteres ; de hauteur) ; LD b,6*4 LD hl,tabchr lpaff1 PUSH bc LD b,4 ; lpaff2 ; ; on affiche une ligne de chaque bloc LD a,(hl) INC hl CALL #bb5a DJNZ lpaff2 POP bc ; ; on passe au debut de ; la ligne suivante grace ; aux codes de controle ; LD a,10 CALL #bb5a LD a,13 CALL #bb5a DJNZ lpaff1 ; ; On sauve les blocs ; LD b,24*8 LD hl,#c000 LD de,matrix lcopy PUSH bc LD bc,8 LDIR LD bc,#800-8 ADD hl,bc ; JP nc,nocarry LD bc,#c050 ADD hl,bc nocarry POP bc DJNZ lcopy ; ; Affiche le message ; en bas de l'ecran ; XOR a CALL #bc0e LD h,15 LD l,2 CALL #bb75 LD hl,mess LD e,2 affmess LD a,e PUSH hl CALL #bb90 POP hl INC e LD a,(hl) OR a JP z,messaff INC hl CALL #bb5a JP affmess messaff ; ; Configure le format ; de l'ecran ; LD bc,#bc01 OUT (C),C LD BC,#BD00+r1 OUT (C),C LD bc,#bc02 OUT (c),c LD bc,#bd00+43 OUT (c),c ; ; On interrompt le ; firmware ; DI LD hl,(#38) LD (syst+1),hl LD hl,#c9fb LD (#38),hl ; ; Passe en Banque #c0 ; qui est en fait une ; partie de l'ecran. ; LD bc,#7fc0 OUT (c),c ; ; Efface l'ecran en #4000 ; LD hl,#4000 LD (hl),0 PUSH hl POP de PUSH de POP bc INC de DEC bc LDIR ; ; Change les couleurs ; des encres ; LD hl,mess LD bc,#7f00+13 colorlp OUT (c),c DEC hl LD a,(hl) OUT (c),a DEC c JP nz,colorlp ; ; Boucle principale ; BCLP DI ; ; on attend la synchro Verticale ; LD B,#F5 vs IN A,(C) RRA JP NC,vs ; ; Aussitot apres,on configure ; les registres pour la rupture ; On affiche 256 lignes ; LD BC,#BC06 OUT (C),C LD BC,#BD20 OUT (C),C LD BC,#BC07 OUT (C),C LD BC,#BD7F OUT (C),C ; ; On passe en mode 1 ; et on initialise le ; diviseur d'interruption ; LD BC,#7F9d EI ; ; On met en noir l'encre 1 ; afin de cacher l'effet de ; saccade creer par le decalage ; de l'ecran ; LD de,#0154 OUT (c),c OUT (c),d OUT (c),e ; Gestion Scroll Vertical ; on envoie l'adresse Hard ; de l'ecran aux registres ; du CRTC OFFSET LD HL,#1000 LD BC,#BC0C OUT (C),C INC B OUT (C),H DEC b INC c OUT (C),C INC B OUT (C),L ; ; On fait monter l'ecran ; d'une ligne grace au ; registre 5,et toutes ; les 8 lignes,on change ; l'adresse Hard de l'ecran ; charup LD de,r1 VERTY LD A,8 speed SUB 1 AND 7 LD (VERTY+1),A JP nz,ver ADD HL,de ver ; ; On s'assure que l'adresse ; hard de l'ecran scrollant ; ne deborde pas ; LD c,a LD a,h AND %11 OR #10 LD h,a LD (OFFSET+1),HL ; ; On envoie la valeur de ; decalage au registre 5 ; du crtc ; LD a,c xor1 XOR 0 LD BC,#BC05 OUT (C),C INC B OUT (C),A ; ; on attend quelques lignes ; LD bc,260 tempo DEC bc LD a,b OR c JP nz,tempo ; ; puis on initialise ; le reg 4 du CRTC ; LD BC,#BC04 OUT (C),C LD BC,#BD1B OUT (C),C ; ; ainsi que l'adresse ; du second ecran OFFSET2 LD HL,#3000 LD BC,#BC0C OUT (C),C INC B OUT (C),H DEC b INC c OUT (C),C INC B OUT (C),L ; ; Il Taut alors ; complementer le ; registre 5 ; VERTICA1 LD A,(VERTY+1) LD BC,#BC05 OUT (C),C INC B xor2 XOR 7 OUT (C),A ; ; puis on affiche ; le 1er raster ; LD bc,3 temp1 DEC bc LD a,b OR c JP nz,temp1 LD hl,raster1 LD a,10 LD bc,#7f01 OUT (c),c rastlp1 LD c,(hl) OUT (c),c INC hl LD e,12 tempr1 DEC e JP nz,tempr1 NOP NOP DEC a JP nz,rastlp1 ; ; On a plus qu'a attendre ; N1 HALT N2 HALT N3 HALT N4 HALT ; ; ...attendre encore... ; LD bc,324 temp2 DEC bc LD a,b OR c JP nz,temp2 ; ; ;et afficher le 2nd raster ; LD hl,raster2 LD a,10 LD bc,#7f01 OUT (c),c rastlp2 LD c,(hl) OUT (c),c INC hl LD e,12 tempr2 DEC e JP nz,tempr2 NOP NOP DEC a JP nz,rastlp2 N5 HALT ; ; Passe en mode 0 ; LD bc,#7f8c OUT (c),c ; ; Reconfigure les ; registres du CRTC ; pour le 2eme ecran ; LD BC,#BC04 OUT (C),C LD BC,#BD07 OUT (C),C LD BC,#BC07 OUT (C),C LD BC,#BD05 OUT (C),C LD BC,#BC06 OUT (C),C LD BC,#BD05 OUT (C),C ; ; Gestion de l'affichage ; ; ; les blocs font 32 lignes ; de hauteur ctmat LD a,#1f INC a AND #1f LD (ctmat+1),a JP nz,cnty ; ;les caracteres font 8 blocs de hauteur ; ctchr LD a,7 INC a AND 7 LD (ctchr+1),a JP nz,chline ; ; gestion du texte ; ctxt LD hl,toffset LD a,(hl) INC hl OR a JP nz,charok LD hl,toffset LD a,(hl) INC hl ; charok LD (ctxt+1),hl CP 32 JP nz,nospace ; ; si c'est un caractere ; d'espacement,on affiche ; des octets null (qui sont ; en fait dans le ler bloc) ; LD hl,matrix LD (chline+1),hl ; ; et on s'arrange pour qu'il ; fasse 4 blocs de haut ; LD a,4 LD (ctchr+1),a JP chline ; ; sinon On trouve quelle ; matrice lui correspond ; (on multiplie par 64, ; ce qui est la taille ; de la metrics d'un ; caractere) ; nospace SUB 47 LD h,0 LD l,a ADD hl,hl ADD hl,hl ADD hl,hl ADD hl,hl ADD hl,hl ADD hl,hl LD de,tabchar ADD hl,de LD (chline+1),hl ; ; on copie l'adresee ; des blocs dans un buffer ; chline LD hl,tabchar LD bc,matrix PUSH iy LD iy,buffer LD a,8 nline LD d,(hl) LD e,0 EX de,hl ADD hl,bc EX de,hl INC hl LD (iy+1),d LD (iy+0),e INC iy INC iy DEC a JP nz,nline POP iy LD (chline+1),hl ; ; On descend sur l'ecran ; d'une ligne pour compenser ; l'effet de scrolling ; cnty LD hl,#4000 LD a,h ADD a,8 LD h,a AND #38 JP nz,noca LD a,h SUB #40 LD h,a LD a,l ADD a,r1*2 LD l,a JP nc,noca INC h LD a,h AND 7 JP nz,noca LD a,h SUB 8 LD h,a noca LD (cnty+1),hl ; ; on affiche une ligne de ; chacun des blocs du ; caractere grace a la pile ; qui pointe sur is buffer ; decrit plus haut ; EX de,hl DI LD (stack+1),sp LD sp,buffer LD a,8 mlp POP hl LDI LDI LDI LDI ; LDI LDI LDI LDI PUSH hl POP hl DEC a JP nz,mlp stack LD sp,0 ; ; Test de la barre espace ; scan LD BC,#F40E OUT (C),C LD BC,#F6C0 OUT (C),C XOR a OUT (c),a LD BC,#F792 OUT (C),C DEC b LD C,#45 OUT (C),C LD B,#F4 IN A,(C) LD BC,#F782 OUT (C),C DEC b LD C,#00 OUT (C),C EI AND #80 JP NZ,BCLP ; ; Fin du programme: ; on restaure les registres ; du CRTC,les banques de ; memoire et le systems ; sys DI LD bc,#7fc4 LD de,#014b OUT (c),c OUT (c),d OUT (c),e LD BC,#BC04 OUT (C),C INC B LD C,38 OUT (C),C LD BC,#BC02 OUT (C),C INC B LD C,46 OUT (C),C LD BC,#BC01 OUT (C),C INC B LD C,40 OUT (C),C LD BC,#BC07 OUT (C),C INC B LD C,30 OUT (C),C LD bc,#bc06 OUT (c),c INC b LD c,25 OUT (c),c syst LD HL,#0000 LD (#38),hl EI RET ; ; table des couleurs ; du raster du haut ; raster1 DEFB #44,#44 DEFB #55 DEFB #57 DEFB #5f,#5f DEFB #53,#4b,#5b DEFB #4b ; ; table des couleurs ; du raster du bas ; raster2 DEFB #43,#4b,#43 DEFB #4a,#4a DEFB #4e DEFB #4c DEFB #5c,#5c ; ; Table des couleurs ; des encres ; DEFB #54,#4b,#55,#57 DEFB #5f,#53,#5B,#54 DEFB #4b,#43,#4a,#4e DEFB #4c,#5c ; ; Message du bas de l'ecran ; mess DEFM "Logon System" ; DEFB 0 ; ; Message scrollant ; toffset ; was text DEFM "100/" DEFB 0 ; ; Matrices des blocs ; tabchr v EQU 128 DEFB v,v,v,v DEFB v,v,v,v DEFB v,v,v,v DEFB v,v,v,v p EQU 143 DEFB p,p,p,p DEFB p,p,p,p DEFB p,p,p,p DEFB p,p,p,p q EQU 212 DEFB p,p,p,q DEFB p,p,q,v DEFB p,q,v,v DEFB q,v,v,v s EQU 213 DEFB s,p,p,p DEFB v,s,p,p DEFB v,v,s,p DEFB v,v,v,s t EQU 214 DEFB v,v,v,t DEFB v,v,t,p DEFB v,t,p,p DEFB t,p,p,p u EQU 215 DEFB u,v,v,v DEFB p,u,v,v DEFB p,p,u,v DEFB p,p,p,u ; ; Matrices des caracteres ; tabchar ; ;% (Attention,on prend en ; fait le code ASCII du ; caractere "/"-slash-) ; DEFB 0,4,1,5,0,0,4,0 DEFB 0,1,0,1,0,4,2,0 DEFB 0,3,1,2,4,2,0,0 DEFB 0,0,0,4,2,0,0,0 DEFB 0,0,4,2,4,1,5,0 DEFB 0,4,2,0,1,0,1,0 DEFB 0,2,0,0,3,1,2,0 DEFB 0,0,0,0,0,0,0,0 ;0 DEFB 0,4,1,1,1,1,5,0 DEFB 0,1,1,0,0,1,1,0 DEFB 0,1,1,0,4,1,1,0 DEFB 0,1,1,4,2,1,1,0 DEFB 0,1,1,2,0,1,1,0 DEFB 0,1,1,0,0,1,1,0 DEFB 0,3,1,1,1,1,2,0 DEFB 0,0,0,0,0,0,0,0 ;1 DEFB 0,0,4,1,1,0,0,0 DEFB 0,0,1,1,1,0,0,0 DEFB 0,0,0,1,1,0,0,0 DEFB 0,0,0,1,1,0,0,0 DEFB 0,0,0,1,1,0,0,0 DEFB 0,0,0,1,1,0,0,0 DEFB 0,1,1,1,1,1,1,0 DEFB 0,0,0,0,0,0,0,0 ;espace ; ; Buffer pour les blocs ; matrix DEFS 64*24 ; buffer pour l'affichage ; des lignes buffer DEFS 2*8,0 end


Goto Top
CPC-POWER/CPCSOFTS, programming by Kukulcan © 2007-2019 all rights reserved.
Reproduction forbidden without any express authorization. All the game titles used belong to their respective owners.