; ************************************************************************************************ ; Programme: ASCII4.TXT version PEP813 sous Windows ; ; version 4 ; ; 1- remplace certains caractères ASCII comme 9, 10, 13 qui influencent la sortie par des espaces. ; 2- à l'affichage, il affiche 5 caractères par ligne. ; 3- mise en colonnes avec affichage sur 3 positions ; 4- avance ou recule s'il y a lieu ; 5- accepte un seul caractère comme réponse ; 6- le programme recommence ; ; Ce programme affiche une liste partielle des 256 caractères ASCII. ; ; auteur: Bernard Martin ; code permanent: non applicable ; courriel: martin.bernard@uqam.ca ; date: été 2020 ; cours: INF2171 ; ************************************************************************************************ ; ; affichage du message de bienvenue ; STRO demandei,d ; message d'entête début: STRO demande1,d ; question à l'utilisateur ; ; saisie du caractère de départ ; CHARI caract,d ; limite inférieure demandée à partir de la ligne d'entrée LDA avcaract,d CPA "\n",i BREQ fini relire: CHARI entrée,d ; se débarrasser du ENTREE LDA aventrée,d CPA 10,i ; est-ce un ENTREE ? BRNE relire ; sinon, relire le tampon d'entrée STRO demande2,d ; message de demande pour la limite supérieure ; ; saisie du caractère de terminaison ; CHARI limite,d ; limite supérieure relire2: CHARI entrée,d ; se débarrasser du ENTREE LDA aventrée,d CPA 10,i ; ENTREE ? BRNE relire2 STRO liste,d ; message à afficher LDA avcaract,d CPA avlimite,d ; direction positive ? BRLE boucle ; oui LDX -1,i ; on doit reculer STX pas,d ; ; on affiche un par un les caractères ; boucle: LDA avcaract,d ; lire la combinaison "avcaract" et "caract" pour le caractère de départ CHARO '(',i ; affiche le symbole ( CPA 100,i ; nécessite 0, 1 ou 2 zéros de tête BRGE pos CHARO '0',i CPA 10,i BRGE pos CHARO '0',i pos: DECO avcaract,d ; affiche en décimal (2 octets, soit la combinaison "avcaract" et "caract") CHARO ')',i ; affiche le symbole ) CHARO '=',i ; affiche le symbole = ; ; les caractères 9, 10, 13, 127, 128 à 159 et 173 sont remplacés par l'espace ; CPA 9,i BREQ espace CPA 10,i BREQ espace CPA 13,i BREQ espace CPA 127,i BREQ espace CPA 173,i BREQ espace CPA 127,i BRLE correct CPA 159,i BRLE espace correct: CHARO caract,d ; affiche la valeur ASCII (1 octet) BR suite espace: CHARO ' ',i ; espace de remplacement suite: CHARO ' ',i ; affiche un ESPACE LDX compteur,d ; 5 caractères par ligne CPX 5,i BRNE passaut ; CHARO '\n',i ; affiche un saut de ligne LDX 0,i passaut: ADDX 1,i ; compteur+1 STX compteur,d LDA avcaract,d ; caractère ASCII CPA avlimite,d ; limite supérieure atteinte ? BREQ termine ; oui, on termine ADDA pas,d ; caractère suivant STBYTEA caract,d ; on le conserve BR boucle ; on recommence ; ; affichage d'une chaine de caractères indiquant la fin du traitement ; termine: LDX 1,i ; initialisation des variables STX compteur,d STX pas,d BR début ; fini: STRO final,d ; message de terminaison STOP ; ; variables ; N.B. Il est préférable d'afficher un long message sur plusieurs lignes car la largeur ; de la fenêtre d'output de PEP/8 n'est que de 52 caractères par défaut. demandei:.ASCII "Bienvenue au programme d'affichage" .ASCII "\ndes caractères ASCII." .ASCII "\nFaire uniquement le caractère ENTREE pour terminer.\x00" demande1:.ASCII "\n\nPar quel caractère,dois-je commencer ? \x00" demande2:.ASCII "\n\nPar quel caractère,dois-je terminer ? \x00" liste: .ASCII "\n\nListe des caractères ASCII:\n\n\x00" final: .ASCII "\n\nFin normale du programme.\x00" avcaract:.BLOCK 1 ; #1h caractère de remplissage pour la combinaison "avcaract" et "caract" caract: .BLOCK 1 ; #1h avlimite:.BLOCK 1 ; #1h caractère de remplissage pour la combinaison "avlimite" et "limite" limite: .BLOCK 1 ; #1h aventrée:.BLOCK 1 entrée: .BLOCK 1 ; #1h capture du ENTREE compteur:.WORD 1 pas: .WORD 1 .END