; Monite14.txt
;
;                   Moniteur interactif pour 8031 V1.4
;                   ----------------------------------
;
;                       (C) E+E CHAMOUARD 1993-2021
;
; Ce programme constitue un moniteur pour carte a base de 8031 et compatibles.
;
; Il permet :
;   - le test des fonctions hardware de la carte en fournissant des acces aux
;     differents registres, memoires,... connectes au 8031,
;   - le transfert d'un programme et son execution,
; via une liaison serie avec un PC.
;
; Cette seconde fonctionnalite est utilisee par mon assembleur pour telecharger
;   les programmes en cours de mise au point vers la plateforme MCS51.
;
; La liaison serie est en mode :
;   - 7 bits,
;   - parite paire,
;   - pas de controle de flux,
;   - vitesse 57600 bauds.
;
; La vitesse peut-etre changee en mofiant l'adresse 45h du programme (qui 
;   a l'origine a la valeur 07h) selon les valeurs definies dans la bibliotheque
;   de gestion de liaison serie "LibCom1". La valeur 07h correspond a la 
;   constante ComSpeed_11_57600 soit une liaison a 57600 bauds avec un 8031
;   fonctionnant avec une horloge a 11,06 MHz.
;
; Tout programme de communication doit etre capable de communiquer avec le 8031,
;   par exemple "HyperTerminal".
;
; Cette version permet une execution dans une memoire uniquement programme (donc
;   avec /PSEN decouple de /RD).
; Par rapport a la version 1.1, cette version attend que la liaison 
;   serie soit disponible avant de reprogrammer sa vitesse. Elle
;   evite donc une erreur potentielle de transmission du dernier
;   caractere d'une application qui redonnerait immediatement la
;   la main au moniteur.
;
; Pour permettre une execution transparente d'un programme, le moniteur redirige 
;   les interruptions vers les adresse 2000h+xx. Il suffit donc d'assembler le 
;   programme sous test a partir de l'adresse 2000h. Un fois au point, on 
;   reassemble a l'adresse 0000h. On a donc :
;   - l'interruption IE0Trt     redirigee vers l'adresse 2003h,
;   - l'interruption TF0Trt     redirigee vers l'adresse 200bh,
;   - l'interruption IE1Trt     redirigee vers l'adresse 2013h,
;   - l'interruption TF1Trt     redirigee vers l'adresse 201bh,
;   - l'interruption RITITrt    redirigee vers l'adresse 2023h,
;   - l'interruption TF2EXF2Trt redirigee vers l'adresse 202bh.
;
; Pour toujours le meme souci de transparence vis a vis du programme a tester, la 
;   liaison serie est utilisee dans un mode simple sans interuption. Le 
;   programme n'utilise d'ailleurs aucune des interuptions du 8031 qu'il inhibe.
;
; Versions a venir :
;   - lecture/ecriture des registres interne du 8031,
;   - appel d'un sous-programme avec arguments,
;   - utilitaires de programmation d'une E2PROM.
;
; Toutes les commandes peuvent etre entrees en minuscules ou en majuscules. Elles 
;   doivent etre terminees par un retour chariot (code 0bh ou CR). Toutes les 
;   commandes sont acquitees par le 8031, soit par repetition des parametres de
;   la commande, soit par la fourniture de la reponse. Les reponses sont terminees
;   par un CR,LF (carriage return + line feed).
;
; Tous les parametres des commandes sont en hexadecimal. Les 0 ne doivent pas etre
;   omis (0000 est valide pour une adresse et 000, 00 ou 0 ne le sont pas).
;
; Liste des commandes :
;
; "TEST" :
;   le 8031 repond "Moniteur 8031 Vx.y" ou Vx.y est le numero de version du moniteur
; "MRXXXX" : (Memory Read)
;   le 8031 repond "XXXX:YY" avec YY le contenu de l'adresse memoire XXXX, ou
;                  "Erreur de donnee" si XXXX n'est pas une adresse en hexa.
; "MWXXXXYY" : (Memory Write)
;   le 8031 repond "XXXX:YY" avec YY ce qui a ete stocke a l'adresse XXXX, ou
;                  "Erreur de donnee" si XXXX n'est pas une adresse en hexa, ou
;                  "Erreur de donnee" si YY n'est pas une donnee en hexa.
; "CRXXXX" : (Code Read)
;   le 8031 repond "XXXX:YY" avec YY ce qui est stocke a l'adresse XXXX en 
;                     espace programme, ou
;                  "Erreur de donnee" si XXXX n'est pas une adresse en hexa.
; "IRXX" : (Internal memory Read)
;   le 8031 repond "XX:YY" avec YY le contenu de la memoire interne XX, ou
;                  "Erreur de donnee" si XX n'est pas une adresse interne en hexa.
; "IWXX" : (Internal memory Write)
;   le 8031 repond "XX:YY" avec YY ce qui a ete stocke a l'adresse XX en 
;                     memoire interne, ou
;                  "Erreur de donnee" si XX n'est pas une adresse interne en hexa,
;                  "Erreur de donnee" si YY n'est pas une donnee en hexa.
; "TCXXXXxxyyxxyyxxyyxxyyxxyyxxyyxxyyxxyy" : (TeleChargement)
;   le 8031 repond "XXXX:xxyyxxyyxxyyxxyyxxyyxxyyxxyyxxyy" avec xxyyxx...yy les 16
;                     octets qui ont ete stockes a partir de l'adresse XXXX, ou
;                  "Erreur de donnee" si XXXX n'est pas une adresse en hexa,
;                  "Erreur de donnee" si au moins une donnee n'est pas en hexa.
; "MDXXXX" : (Memory Dump)
;   le 8031 repond "XXXX:xxyyxxyyxxyyxxyyxxyyxxyyxxyyxxyy" avec xxyyxx...yy les 16
;                     octets stockes a partir de l'adresse XXXX, ou
;                  "Erreur de donnee" si XXXX n'est pas une adresse en hexa.
; "GOXXXX" : (program GO)
;   le 8031 repond l'adresse XXXX a laquelle il continue l'execution, ou
;                  "Erreur de donnee" si XXXX n'est pas une adresse en hexa.
; 
; Si aucune des commande si dessus n'est reconnue, le 8031 repond
;                  "Commande inconnue".
