10323
UTILITY -> Other
© _Public_Domain_ (1989)
 
 
 
RSX Affiche
cpc
 
 

Last Update : Sunday 24 November 2013 at 21 h 46

Manual n° 1

; ------------------------------------------------------------------------------ ; AFFICHE.MAX ; ; Programme d'affichage d'un ecran suivant un mode et une adresse choisie par ; des parametres. ; Syntaxe - ├╣AFFICHE,<numero du mode>,<adresse d'implantation> ; L'ecran a afficher doit auparavant etre stocke dans la memoire a partir de ; l'adresse d'implantation sous la forme d'un ecran non compile ; Le mode d'affichage permet l'affichage dans le bon sens et dans le mauvais ; sens comme l'indique le liste suivante : ; 0 - Affichage dans le bon sens de haut en bas ; 1 - Affichage dans le bon sens de bas en haut ; 2 - Affichage dans le bon sens de droite a gauche ; 3 - Affichage dans le bon sens de gauche a droite ; 4 - Affichage dans le mauvais sens de haut en bas ; 5 - Affichage dans le mauvais sens de bas en haut ; 6 - Affichage dans le mauvais sens de droite a gauche ; 7 - Affichage dans le mauvais sens de gauche a droite ; ; (C) J.P.B SYSTEM 1989 ** All rights reserved ; ; ------------------------------------------------------------------------------ ORG &A100 LD HL,RESER LD BC,ADDR JP INITRSX RESER DEFS 04 BUFFER1 DEFS 01 BUFFER2 DEFS 01 STOCKE1 DEFS 01 STOCKE2 DEFS 01 STOCKE3 DEFS 01 ADDR DEFW NAME JR PROG NAME DEFM "AFFICH","E"+&80 DEFM &00 PROG CP &02 ; Verifie le nombre de parametres JR NZ,ERROR1 LD A,(IX+&01) CP &C0 ; Teste le poids fort de l'adresse JR NC,ERROR2 ; SI (A)>&C0 LD A,(IX+&03) CP &00 ; Teste le poids fort du mode d'affichage JR NZ,ERROR3 LD A,(IX+&02) AND A,&F8 JR NZ,ERROR3 ; Fin de la detection des erreurs LD A,(IX+&02) CP &00 JP Z,AFFI0 CP &01 JP Z,AFFI1 CP &02 JP Z,AFFI2 CP &03 JP Z,AFFI3 CP &04 JP Z,AFFI4 CP &05 JP Z,AFFI5 CP &06 JP Z,AFFI6 JP AFFI7 ERROR3 LD HL,ECRIT3 JR CONT1 ERROR2 LD HL,ECRIT2 JR CONT1 ERROR1 LD HL,ECRIT1 CONT1 LD A,(HL) CP &FF RET Z CALL ECRIRE INC HL JR CONT1 ECRIT1 DEFM "Nombre de parametres errone ." DEFM &FF ECRIT2 DEFM "Erreur dans l'adresse d'implantation ." DEFM &FF ECRIT3 DEFM "Erreur dans le numero du mode d'affichage ." DEFM &FF ; ---------------------------------------------------------------PROGRAMME AFFI0 AFFI0 LD D,(IX+&01) ; Initialisation des pointeurs LD E,(IX+&00) LD HL,&C000 ; HL=Ecran DE=Memoire LD B,25 ; Programme principal des 25 lignes CPT30 PUSH BC LD A,L LD (BUFFER1),A PUSH HL PUSH DE CALL TRANS10 POP DE POP HL PUSH DE ; Incremente le pointeur ecran pour LD DE,&0050 ; Passer a la ligne suivante ADD HL,DE POP DE EX DE,HL ; Incremente le pointeur memoire pour PUSH DE ; Passer a la ligne suivante LD DE,&0050 ADD HL,DE POP DE EX DE,HL POP BC DJNZ CPT30 RET TRANS10 LD B,8 ; Transfere d'un groupe de 8 lignes CPT20 PUSH BC PUSH HL PUSH DE PUSH AF PUSH BC CALL TEMPO0 POP BC POP AF CALL TRANS0 ; Transfere une ligne horizontale POP DE POP HL LD A,D ; Passe a la ligne suivante en memoire ADD A,8 LD D,A LD A,(BUFFER1) ; Remet a zero les poids faibles LD L,A LD E,A LD A,H ; Passe a la ligne suivante dans l'ecran ADD A,&8 LD H,A POP BC DJNZ CPT20 RET TRANS0 LD B,&50 CPT10 LD A,(DE) LD (HL),A INC HL INC DE DJNZ CPT10 RET TEMPO0 LD BC,&0200 TEMPO10 DEC BC LD A,B OR C JR NZ,TEMPO10 RET ; ---------------------------------------------------------------PROGRAMME AFFI1 AFFI1 LD H,(IX+&01) ; Initialisation des pointeurs LD L,(IX+&00) ; HL=Ecran DE=Memoire LD DE,&3FCF ADD HL,DE EX DE,HL LD HL,&FFCF LD B,25 ; Programme principal des 25 lignes CPT31 PUSH BC LD A,L LD (BUFFER1),A PUSH HL PUSH DE CALL TRANS11 POP DE POP HL PUSH DE ; Decremente le pointeur ecran pour LD DE,&0050 ; Passer a la ligne superieure CPT41 DEC DE DEC HL LD A,D OR E JR NZ,CPT41 POP DE EX DE,HL ; Decremente le pointeur memoire pour PUSH DE ; Passer a la ligne superieure LD DE,&0050 CPT51 DEC DE DEC HL LD A,D OR E JR NZ,CPT51 POP DE EX DE,HL POP BC DJNZ CPT31 RET TRANS11 LD B,8 ; Transfere d'un groupe de 8 lignes CPT21 PUSH BC PUSH HL PUSH DE PUSH AF PUSH BC CALL TEMPO1 POP BC POP AF CALL TRANS1 ; Transfere une ligne horizontale POP DE POP HL LD A,D ; Passe a la ligne precedente en &4000 SUB 8 LD D,A LD A,(BUFFER1) ; Remet a zero les poids faibles LD L,A LD E,A LD A,H ; Passe a la ligne precedentes en memoire SUB 8 LD H,A POP BC DJNZ CPT21 RET TRANS1 LD B,&50 CPT11 LD A,(DE) LD (HL),A DEC HL DEC DE DJNZ CPT11 RET TEMPO1 LD BC,&0200 TEMPO11 DEC BC LD A,B OR C JR NZ,TEMPO11 RET ; ---------------------------------------------------------------PROGRAMME AFFI2 AFFI2 LD HL,&C000 ; Initialisation des pointeurs LD D,(IX+&01) LD E,(IX+&00) LD A,&4F ; Nombre de colonnes dans un ecran standard SUITE2 PUSH AF LD L,A ; Selectionne la colonne courante LD E,A LD H,&C0 LD D,(IX+&01) LD B,25 ; Nombre de lignes courante ENCORE2 PUSH BC PUSH BC PUSH AF CALL TEMX2 POP AF POP BC LD A,H LD (STOCKE1),A LD A,D LD (STOCKE2),A LD B,8 ; Nombre de lignes octets comprises dans une ligne courante TOURNE2 PUSH BC LD A,(DE) LD (HL),A LD A,H ; Passe 800 octets plus bas dans la ligne courante ADD A,8 ; Operation sur DE et HL LD H,A LD A,D ADD A,8 LD D,A POP BC DJNZ TOURNE2 LD A,(STOCKE1) LD H,A LD A,(STOCKE2) LD D,A PUSH DE ; Passe a la ligne suivante LD DE,&0050 ADD HL,DE POP DE EX DE,HL PUSH DE LD DE,&0050 ADD HL,DE POP DE EX DE,HL POP BC DJNZ ENCORE2 POP AF CP &00 JR NZ,TOTO2 RET TOTO2 DEC A JR SUITE2 TEMX2 LD BC,&0010 TEMX12 DEC BC LD A,B OR C JR NZ,TEMX12 RET ; ---------------------------------------------------------------PROGRAMME AFFI3 AFFI3 LD HL,&C000 LD D,(IX+&01) LD E,(IX+&00) XOR A ; Initialise le nombre de colonnes dans un ecran standard SUITE3 PUSH AF LD L,A ; Selectionne la colonne courante LD E,A LD H,&C0 LD D,(IX+&01) LD B,25 ; Nombre de lignes courante ENCORE3 PUSH BC PUSH BC PUSH AF CALL TEMX2 POP AF POP BC LD A,H LD (STOCKE1),A LD A,D LD (STOCKE2),A LD B,8 ; Nombre de lignes octets comprises dans une lignes courante TOURNE3 PUSH BC LD A,(DE) LD (HL),A LD A,H ; Passe 800 octets plus bas dans la ligne courante ADD A,8 ; Operation sur DE et HL LD H,A LD A,D ADD A,8 LD D,A POP BC DJNZ TOURNE3 LD A,(STOCKE1) LD H,A LD A,(STOCKE2) LD D,A PUSH DE ; Passe a la ligne suivante LD DE,&0050 ADD HL,DE POP DE EX DE,HL PUSH DE LD DE,&0050 ADD HL,DE POP DE EX DE,HL POP BC DJNZ ENCORE3 POP AF CP &4F JR NZ,TOTO3 RET TOTO3 INC A JR SUITE3 ; ---------------------------------------------------------------PROGRAMME AFFI4 AFFI4 LD H,(IX+&01) ; Initialisation des pointeurs LD L,(IX+&00) ; HL=Ecran DE=Memoire LD DE,&3FCF ADD HL,DE EX DE,HL LD HL,&C000 LD B,25 ; Programme principal des 25 lignes CPT34 PUSH BC LD A,L LD (BUFFER1),A LD A,E LD (BUFFER2),A PUSH HL PUSH DE CALL TRANS14 POP DE POP HL PUSH DE ; Incremente le pointeur ecran pour LD DE,&0050 ; Passer a la ligne suivante ADD HL,DE POP DE PUSH AF EX DE,HL ; Decremente le pointeur memoire pour PUSH DE ; Passer a la ligne suivante LD DE,&0050 ENRE14 DEC HL DEC DE LD A,D OR E JR NZ,ENRE14 POP DE EX DE,HL POP AF POP BC DJNZ CPT34 RET TRANS14 LD B,8 ; Transfere d'un groupe de 8 lignes CPT24 PUSH BC PUSH HL PUSH DE CALL TRANS4 ; Transfere une ligne horizontale POP DE POP HL LD A,D ; Passe a la ligne precedente en memoire SUB &08 LD D,A LD A,(BUFFER1) ; Remet a zero les poids faibles LD L,A LD A,(BUFFER2) LD E,A LD A,H ; Passe a la ligne suivante en memoire ADD A,&8 LD H,A POP BC DJNZ CPT24 RET TRANS4 LD B,&50 CPT14 LD A,(DE) ; Aquisition d'un octet puis symetrie.max ! CALL SYMETRY LD (HL),A ; Une fois que tout les bits sont inverses c'est fini INC HL DEC DE DJNZ CPT14 RET ; ---------------------------------------------------------------PROGRAMME AFFI5 AFFI5 LD HL,&FFCF ; Initialisation des pointeurs LD D,(IX+&01) ; HL=Ecran DE=Memoire LD E,(IX+&00) LD B,25 ; Programme principal des 25 lignes CPT35 PUSH BC LD A,L LD (BUFFER1),A LD A,E LD (BUFFER2),A PUSH HL PUSH DE CALL TRANS15 POP DE POP HL PUSH DE ; Decremente le pointeur ecran pour LD DE,&0050 ; Passer a la ligne superieure CPT45 DEC DE DEC HL LD A,D OR E JR NZ,CPT45 POP DE EX DE,HL ; Incremente le pointeur memoire pour PUSH DE ; Passer a la ligne suivante LD DE,&0050 ADD HL,DE POP DE EX DE,HL POP BC DJNZ CPT35 RET TRANS15 LD B,8 ; Transfere d'un groupe de 8 lignes CPT25 PUSH BC PUSH HL PUSH DE CALL TRANS5 ; Transfere une ligne horizontale POP DE POP HL LD A,D ; Passe a la ligne precedente en memoire ADD &08 LD D,A LD A,(BUFFER1) ; Remet a zero les poids faibles LD L,A LD A,(BUFFER2) LD E,A LD A,H ; Passe a la ligne suivante en memoire SUB A,&8 LD H,A POP BC DJNZ CPT25 RET TRANS5 LD B,&50 CPT15 LD A,(DE) ; Aquisition d'un octet puis symetrie.max ! CALL SYMETRY LD (HL),A ; Une fois que tout les bits sont inverses c'est fini DEC HL INC DE DJNZ CPT15 RET ; ---------------------------------------------------------------PROGRAMME AFFI6 AFFI6 XOR A LD (STOCKE3),A LD H,(IX+&01) LD L,(IX+&00) LD DE,&3FFF ADD HL,DE EX DE,HL LD HL,&C000 LD A,&4F ; Nombre de colonnes dans un ecran standard SUITE6 PUSH AF LD L,A ; Selectionne la colonne courante LD L,A ADD A,&31 PUSH HL LD HL,STOCKE3 ADD A,(HL) INC (HL) INC (HL) POP HL LD E,A ; Incremente le compteur de 2 unites ; a chaque colonne suivante LD H,&C0 ; Reinitialise les pointeurs avant LD A,(IX+&01) ADD A,&3F LD D,A ; de commencer la colonne suivante LD B,25 ; Nombre de lignes courante ENCORE6 PUSH BC LD A,H LD (STOCKE1),A LD A,D LD (STOCKE2),A LD B,8 ; Nombre de lignes octets comprises dans une ligne courante TOURNE6 PUSH BC LD A,(DE) CALL SYMETRY LD (HL),A ; Une fois que tout les bits sont inverses c'est fini LD A,H ; Passe 800 octets plus bas dans la ligne courante ADD A,8 ; Operation sur DE et HL LD H,A LD A,D SUB A,8 LD D,A POP BC DJNZ TOURNE6 LD A,(STOCKE1) LD H,A LD A,(STOCKE2) LD D,A PUSH DE LD DE,&0050 ADD HL,DE POP DE PUSH HL LD HL,&0050 DECRE6 DEC HL DEC DE LD A,H OR L JR NZ,DECRE6 POP HL POP BC DJNZ ENCORE6 POP AF CP &00 JR NZ,TOTO6 RET TOTO6 DEC A JR SUITE6 ; ---------------------------------------------------------------PROGRAMME AFFI7 AFFI7 XOR A LD (STOCKE3),A LD H,(IX+&01) LD L,(IX+&00) LD DE,&7FFF ADD HL,DE EX DE,HL LD HL,&C000 LD A,&00 ; Nombre de colonnes dans un ecran standard SUITE7 PUSH AF LD L,A ; Selectionne la colonne courante ADD A,&CF PUSH HL LD HL,STOCKE3 SUB A,(HL) INC (HL) INC (HL) POP HL LD E,A ; Decremente le compteur de 2 unites ; a chaque colonne suivante LD H,&C0 ; Reinitialise les pointeurs avant LD A,(IX+&01) ADD A,&3F LD D,A ; de commencer la colonne suivante LD B,25 ; Nombre de lignes courante ENCORE7 PUSH BC LD A,H LD (STOCKE1),A LD A,D LD (STOCKE2),A LD B,8 ; Nombre de lignes octets comprises comprises dans une lignes courante TOURNE7 PUSH BC LD A,(DE) CALL SYMETRY LD (HL),A ; Une fois que tout les bits sont inverses c'est fini LD A,H ; Passe 800 octets plus bas dans la ligne courante ADD A,8 ; Operation sur DE et HL LD H,A LD A,D SUB A,8 LD D,A POP BC DJNZ TOURNE7 LD A,(STOCKE1) LD H,A LD A,(STOCKE2) LD D,A PUSH DE LD DE,&0050 ADD HL,DE POP DE PUSH HL LD HL,&0050 DECRE7 DEC HL DEC DE LD A,H OR L JR NZ,DECRE7 POP HL POP BC DJNZ ENCORE7 POP AF CP &4F ; Regarde si la derniere colonne a ete faite JR NZ,TOTO7 RET TOTO7 INC A JR SUITE7 ; --------------------------------------------------------PROGRAMME SYMETRIE.MAX SYMETRY PUSH BC LD C,&00 ; Initialise C LD B,&08 ; Repete 8 fois la boucle de tournage TEST2 BIT 0,A ; Test le bit 0 JR Z,METTRE0 SET 0,C SUITE1 RLC C ; Decale pour passer au bit suivant SRL A ; Fait de meme sur l'original DJNZ TEST2 RRC C ; Remet C en forme LD A,C POP BC RET METTRE0 RES 0,C JR SUITE1 ; ----------------------------------------------------------LISTE DES ETIQUETTES ECRIRE EQU &BB5A INITRSX EQU &BCD1


Goto Top
CPC-POWER/CPCSOFTS, programming by Kukulcan © 2007-2021 all rights reserved.
Reproduction forbidden without any express authorization. All the game titles used belong to their respective owners.
Hébergement Web, Mail et serveurs de jeux haute performance