17694
UTILITAIRE -> Divers
© _Public_Domain_ (2020)
 
 
 
Typo
cpc
 
 

NOTICE / MANUAL

TXT (1)

NOTICE TEXTE n° 1 (10.61 Ko)

; ####################################################################################### ; # TYPO - FONTE DE 93 CARACTERES D'UNE MATRICE DE 4x8 UTILISABLES DANS LES 3 MODEs # ; # RETROPOKE.CANALBLOG.COM #### Philippe Moulin ##### DEBUT 08/07/2020 MAJ 15/07/2020 # ; # RSX COMPATIBLE AVEC LES TROIS MODES DE L'AMSTRAD ET SUR TOUS LES CPC (464,664,6128) # ; # RSXs TYPO, DEFTYPO, ENCRE # ; ####################################################################################### ; DECLARATION DES VARIABLES ; #BDF7 - #BE3F ZONE UTILISATEUR LIBRE # MATRICE EQU #BDF7 ; VARIABLE PROVISOIRE # ORG #A000 ; # ; ####################################################################################### FIXE_RSX ; IMPLANTATION DES RSX # ; LD A, #C9 ; EMPECHER D'Y REVENIR # ; LD (FIXE_RSX), A ; POUR EVITER LES PLANTAGES # LD BC, ADR_NOM_RSX ; 'BC' POINTE SUR 2 OCTETS ADR. NOM RSX # LD HL, QUATRE_OCTETS ; 'HL' POINTE SUR 4 OCTETS DE LIBRE # JP #BCD1 ; VECTEUR QUI FIXE LES RSX # ; # ADR_NOM_RSX DW NOM_RSX ; POINTE SUR L'ADRESSE DES NOMS DES RSX # JP RSX_TYPO ; LISTE DES SAUTS VERS LES RSX # JP RSX_DEFTYPO ; # JP RSX_ENCRE ; # ; # QUATRE_OCTETS DS 4 ; EMPLACEMENT DES 4 OCTETS RESERVES # NOM_RSX STR "TYPO" ; LISTE DES NOMS DES RSX # STR "DEFTYPO" ; CHAQUE NOM DOIT FINIR AVEC BIT_8 A 1 # STR "ENCRE" ; WINAPE LE FAIT AUTOMATIQUEMENT # DB 00 ; LA LISTE DOIT FINIR PAR UN OCTET ZERO # ; ####################################################################################### RSX_TYPO ; |TYPO, @a$ ; A$ DOIT ETRE DECLARE AVANT UTILISATION# DEC A ; VERIFIER LE NOMBRE DE PARAMETRE # RET NZ ; ERREUR IL NE FAUT QU'UN PARAMETRE # DEC A ; EQUIVAUT A ('A' = 255) # CALL #BBA5 ; RECHERCHER L'ADRESSE DE LA MATRICE # LD (HL), 0 ; METTRE LA 1ere LIGNE/8 A ZERO # INC HL ; ET PASSER SUR LA 2eme LIGNE/8 # LD (MATRICE), HL ; MEMORISER L'ADRESSE DE TRAVAIL # EX HL, DE ; 'HL'= ADR. DU DESCRIPTEUR DE CHAINE # LD A, (HL) ; 'A'= NOMBRE DE CARACTERE DE LA CHAINE # OR A ; SI LA CHAINE EST VIDE ON SORT # RET Z ; # LD B, A ; 'B' SERA UTILISE POUR DECOMPTER LA # INC HL ; LONGUEUR DE LA CHAINE # LD E, (HL) ; # INC HL ; # LD D, (HL) ; 'DE' POINTE SUR LE PREMIER CARACTERE # PUSH DE ; QUE L'ON TRANSMET AU REGISTRE 'IX' # POP IX ; # ; # FAIRE_TOUTE_LA_CHAINE ; # LD IY, (MATRICE) ; 'IY' POINTE SUR LA MATRICE 8x8 + 1 # LD A, (IX) ; 'A' CONTIENT LE 1er CARACTERE DE LA # INC IX ; CHAINE # CALL MATRICE4x8_DANS_HL ; CALCULER L'ADR. DE LA TABLE TYPO 4x8 # EX HL, DE ; ET PASSER L'ADRESSE DANS 'DE' # LD A, (IX) ; 'A' CONTIENT LE CARACTERE SUIVANT # INC IX ; # DEC B ; ON DECREMENTE LE NOMBRE DE CACARTERE # JR NZ, NB_PAIR ; SI IL N'Y A QU'UN CARACTERE FINAL # XOR A ; LE SUIVANT EST REMPLACE PAR UN ESPACE # INC B ; # ; # NB_PAIR ; # CALL MATRICE4x8_DANS_HL ; CALCULER L'ADR. DU 2eme CARACTERE 4x8 # PUSH BC ; ON A LES DEUX ADR. DES CARACTERES QUI # ; FAUT UNIR POUR N'EN FORMER PLUS QU'UN # LD B, 3 ; # FAIRE_3OCTETS ; UN CARACTERE EST CODE SUR 3 OCTETS # LD A, (DE) ; POUR UNIR LES 2 CARACTERES, IL FAUT # AND #F0 ; PRENDRE LE POIDS FORT DU 1er PUIS # LD C, A ; REMPLACER LE POIDS FORDS DU 2eme PAR # LD A, (HL) ; LE POIDS FAIBLE DE L'OCTET OBTENU # AND #F0 ; ET ADDITIONNER LES DEUX # RRA ; PAS TROUVE PLUS SIMPLE POUR DESCENDRE # RRA ; LE POIDS FORT EN POIDS FAIBLE # RRA ; # RRA ; # ADD A, C ; ON AJOUTE LE POIDS (FORT ET FAIBLE) # LD (IY), A ; ET ON L'INSCRIT DANS LA MATRICE 8x8 # INC IY ; IL FAUT S'OCCUPER DES DEUX POIDS # LD A, (DE) ; FAIBLES # AND #0F ; POIDS FAIBLE DU 1er CARACTERE # ADD A, A ; QUE L'ON MET EN POIDS FORT POUR LE # ADD A, A ; 2eme OCTETS # ADD A, A ; PAS TROUVE PLUS SIMPLE NON PLUS # ADD A, A ; # LD C, A ; # LD A, (HL) ; ON PREND LE POIDS FAIBLE DU 2eme # AND #0F ; CARACTERE # ADD A, C ; L'ADDITION FORME LE 2eme OCTET # LD (IY), A ; QUE L'ON INSCRIT DANS LA MATRICE 8x8 # INC IY ; ON REMET LES POINTEURS A JOUR # INC HL ; # INC DE ; # DJNZ, FAIRE_3OCTETS ; ET ON RECOMMENCE 3 FOIS # XOR A ; IL NE RESTE PLUS QU'A L'AFFICHER # LD (IY), A ; ON EFFACE LA 8eme LIGNE DU CARACTERE # DEC A ; ('A'=0 'A'=255) # CALL #BBFC ; VECTEUR GRAPHIQUE AFFICHE 'A' # POP BC ; ON RECUPERE LE NOMBRE DE CARACTERE # DJNZ, FAIRE_TOUTE_LA_CHAINE ; ET ON RECOMMENCE JUSQU'AU DERNIER # RET ; CARACTERE DE LA CHAINE # ; ####################################################################################### RSX_DEFTYPO ; A$="x=F99F66F9" |DEFTYPO, @A$ ; REDEFINI LES 6 LIGNES DU SYMBOLE 'x' # DEC A ; # RET NZ ; SI LE NOMBRE DE PARAMETRE EST ERRONE # EX HL, DE ; 'HL'= ADR. DU DESCRIPTEUR DE CHAINE # LD A, (HL) ; 'A'= NOMBRE DE CARACTERE DE LA CHAINE # CP A, 9 ; ON REGARDE LE NOMBRE DE CARACTERE QUI # RET NC ; DOIT ETRE DE 8 SINON ON SORT # INC HL ; # LD E, (HL) ; # INC HL ; # LD D, (HL) ; 'DE' POINTE SUR LE PREMIER CARACTERE # LD B, 3 ; 'B' SERVIRA DE BOUCLE # LD A, (DE) ; 'A' CONTIENT LE CARACTERE A REDEFINIR # INC DE ; IGNORER LE 2eme CARACTERE "=" # INC DE ; # CALL MATRICE4x8_DANS_HL ; 'HL' POINTE SUR LA MATRICE A REDEFINIR# ; # SYMBOL_3_OCTETS ; IL FAUT TRANSFORMER LES 6 VALEURS # LD A, (DE) ; HEXADECIMALES EN 3 OCTETS # INC DE ; # CALL TRANS_HEXA ; TRADUIT LE CARACTERE HEXADECIMAL EN # ADD A, A ; NOMBRE DECIMAL DE 0 A 15 # ADD A, A ; ON AJUSTE AU POIDS HAUT DE L'OCTET # ADD A, A ; "XXXX...." # ADD A, A ; IL FAUT 2 VALEURS HEXA. POUR OBTENIR # LD C, A ; UN OCTET DE 0 A 255 # LD A, (DE) ; # INC DE ; ON PREND LE DEUXIEME CARACTERE HEXA. # CALL TRANS_HEXA ; # ADD A, C ; 1er CARACTERE (POIDS HAUT DE L'OCTET) # LD (HL), A ; 2eme CARACTERE (POIDS BAS DE L'OCTET) # INC HL ; ET ON FAIT LES 3 OCTETS DU CARACTERE # DJNZ, SYMBOL_3_OCTETS ; # RET ; # ; ####################################################################################### RSX_ENCRE ; |ENCRE, PEN [,PAPER] ; DEFINI LES ENCRES GRAPHIQUES # DEC A ; ON REGARDE SI ON A 1 SEUL PAREMETRE # JR Z, PEN ; # DEC A ; SINON ON REGARDE SI ON EN A 2 # RET NZ ; ON SORT SI CE N'EST PAS LE CAS # ; # PAPER ; # LD A, E ; SI > 15 # CALL #BBE4 ; VECTEUR GRAPHIC_PAPER # LD E, (IX + 2) ; ET ON SIMULE POUR 1 SEUL PARAMETRE # ; # PEN ; # LD A, E ; # CALL #BBDE ; VECTEUR GRAPHIC_PEN # RET ; # ; ####################################################################################### ; SOUS ROUTINE MATRICE4x8_DANS_HL [CE> 'A' = CARACTERE A TROUVER) # MATRICE4x8_DANS_HL ; FAIRE CORRESPONDRE LE CARACTERE # LD HL, DEF_TYPO ; 'HL' POINTE SUR LE CARACTERE " " # SUB A, #20 ; ON AJUSTE LE NUMERO DU CARACTERE # RET Z ; SI C'EST UN ESPACE, 'HL' EST OK # CP A, #5D ; ON REGARDE SI LE CARACTERE EST TROUVE # RET NC ; NON ALORS 'HL' POINTE DEJA SUR " " # ; # CALCUL_MATRICE ; SINON IL FAUT CALCULER L'ADRESSE DU # INC HL ; CARACTERE ET COMME CHAQUE CARACTERE # INC HL ; OCCUPE 3 OCTETS # INC HL ; ON DEPLACE 'HL' DE 3 OCTETS # DEC A ; JUSQU'A TROUVER LE BON CARACTERE # JR NZ, CALCUL_MATRICE ; # RET ; # ; ####################################################################################### TRANS_HEXA ; SOUS ROUTINE QUI TRADUIT LE CARACTERE HEXADECIMAL EN NOMBRE DECIMAL # CP A, "G" ; SI 'A'<"F" # JR C, HEXA_MINUSCULE ; SI ON EST EN MINUSCULE, ON AJUSTE # SUB A, #20 ; POUR LE TRANSFORMER EN MAJUSCULE # ; # HEXA_MINUSCULE ; # CP A, ":" ; SI 'A'= de "A" a "F" # JR C, ENTRE_0ET9 ; IL FAUT AJUSTER POUR QUE CA # SUB A, 7 ; CONTINU AU DESSUS DE "9" # ; # ENTRE_0ET9 ; # SUB A, 48 ; ON AJUSTE LE TOUT POUR QUR LE # CP A, 16 ; CARACTERE "0" CORRESPONDE A ZERO # RET C ; SI LE CHIFFRE EST BON (0 a 15) # XOR A ; SINON ON LE TRANSFORME EN ZERO # RET ; # ; ####################################################################################### DEF_TYPO ; 59 SYMBOLES 4x8 PREDEFINIS ; ##### 93 CARACTERES * 3 OCTETS = 279 OCTETS ##### DB #00,#00,#00 ; " " DB #66,#66,#06 ; "!" DB #AA,#00,#00 ; """ DB #AF,#A5,#F5 ; "#" DB #23,#67,#36 ; "$" DB #09,#36,#C9 ; "%" DB #69,#6B,#A5 ; "&" DB #66,#C0,#00 ; "'" DB #24,#44,#42 ; "(" DB #42,#22,#24 ; ")" DB #0A,#E4,#EA ; "*" DB #04,#4E,#44 ; "+" DB #00,#06,#6C ; "," DB #00,#E0,#00 ; "-" DB #00,#06,#60 ; "." DB #22,#44,#88 ; "/" DB #EA,#AE,#EE ; "0" DB #4C,#44,#EE ; "1" DB #E2,#E8,#EE ; "2" DB #E2,#62,#EE ; "3" DB #88,#AE,#E2 ; "4" DB #E8,#E2,#EE ; "5" DB #E8,#EA,#EE ; "6" DB #E2,#64,#CC ; "7" DB #EA,#EA,#EE ; "8" DB #EA,#E2,#EE ; "9" DB #CC,#0C,#C0;; ":" DB #66,#06,#6C ; ";" DB #24,#84,#20 ; "<" DB #00,#60,#60 ; "=" DB #84,#24,#80 ; ">" DB #EA,#64,#04 ; "?" DB #40,#6A,#A6 ; (a accent) DB #EE,#EA,#EA ; A DB #CE,#AC,#AE ; B DB #EE,#E8,#8E ; C DB #CE,#EA,#AC ; D DB #EE,#8C,#8E ; E DB #EE,#8C,#88 ; F DB #EE,#8B,#AE ; G DB #AA,#EE,#AA ; H DB #EE,#E4,#4E ; I DB #EE,#2A,#E4 ; J DB #8A,#EC,#EA ; K DB #88,#8A,#EE ; L DB #AE,#EE,#AA ; M DB #EE,#EA,#AA ; N DB #EE,#EA,#AE ; O DB #EE,#EA,#E8 ; P DB #EE,#EA,#BF ; Q DB #EE,#AC,#EA ; R DB #EE,#8E,#2E ; S DB #EE,#E4,#44 ; T DB #AA,#AE,#EE ; U DB #AA,#EE,#44 ; V DB #AA,#EE,#EA ; W DB #AE,#44,#EA ; X DB #AA,#EE,#2E ; Y DB #EE,#24,#8E ; Z DB #E8,#88,#8E ; [ DB #44,#22,#11 ; \ DB #E2,#22,#2E ; ] DB #4E,#44,#44 ; (fleche)) DB #00,#00,#0F ; (trait) DB #21,#00,#00 ; (barre) DB #00,#6A,#A6 ; a DB #88,#CA,#AC ; b DB #00,#68,#86 ; c DB #22,#6A,#A6 ; d DB #06,#AC,#86 ; e DB #06,#8C,#88 ; f DB #04,#AE,#26 ; g DB #88,#CA,#AA ; h DB #40,#C4,#4E ; i DB #20,#62,#A4 ; j DB #88,#AA,#CA ; k DB #0C,#44,#4E ; l DB #00,#AE,#EA ; m DB #00,#CA,#AA ; n DB #00,#4A,#A4 ; o DB #CA,#AC,#88 ; p DB #04,#AA,#42 ; q DB #00,#CA,#CA ; r DB #00,#6C,#2C ; s DB #08,#C8,#A4 ; t DB #00,#AA,#A6 ; u DB #00,#AA,#E4 ; v DB #00,#AA,#EA ; w DB #00,#A4,#4A ; x DB #00,#A6,#2C ; y DB #0E,#24,#8E ; z DB #40,#6A,#C6 ; (e accent) DB #40,#AA,#A6 ; (u accent) FIN
 



Goto Top
CPC-POWER/CPCSOFTS, programmation par Kukulcan © 2007-2024 tous droits réservés.
Reproduction sans autorisation interdite. Tous les titres utilisés appartiennent à leurs propriétaires respectifs.
Hébergement Web, Mail et serveurs de jeux haute performance