* OPT PAGE NAM MICROMON09 TTL SCRUTATION CLAVIER & AFFICHEURS * OPT LLEN=120 * OPT S SPC 3 * REV 1.8 * *PROGRAMME MONITEUR POUR MC 6809 * *ASSEMBLE SUR EUROMAK LE 20 JUILLET 1982 SPC 3 ***************************************** *PROGRAMME REALISE PAR CLAUDE VICIDOMINI* ***************************************** *SAISI LE 21 JANVIER 2013 PAR F LE DUIGOU *FIN DE VERIFICATION LE 26 JANVIER 2013 SPC 1 *DEFINITION DES FONCTIONS: ***P - PUNCH CHARGE UNE ZONE MEMOIRE EN CASSETTE ***L - LOAD CHARGE LE CONTENU D'UNE CASSETTE EN MEMOIRE ***M - MEMORY EXAMINE ET CHANGE LE CONTENU D'UNE MEMOIRE ***AB- ABORT MET SOUS CONTROLE MONITEUR SANS INITIALISATION ***R - REGISTER DISPLAY * ORDRE DE VISUALISATION des REGISTRES:CC,A,B,DP,X,Y,U,PC,SP * LE CONTENU DES REGISTRES PEUT ETRE CHANGE A LA DEMANDE ***I - INCREMENT * INCREMENTE D'UN PAS LORS D'UNE FONCTION MEMOIRE * VISUALISE UN REGISTRE APRES L'AUTRE LORS D'UNE INTERRUPTION. * STOCKE EN MEMOIRE LA DONNEE RENTREE ***G - GO DEMARRE UN PROGRAMME APRES AVOIR PRECISE SON ADRESSE * PERMET D'EFFECTUER UN CALCUL D'OFFSET POUR UN ADRESSAGE * INDEXE OU POUR UN BRANCHEMENT RELATIF ***CN- CONTINUE PERMET DE CONTINUER LE DEROULEMENT D'UN PROGRAMME * APRES UN "ABORT". ***DN- DECREMENTATION: PERMET DE DECREMENTER D'UN PAS LORS D'UNE * FONCTION MEMOIRE OU DE VISUALISER LES REGISTRES DANS L'AUTRE * SENS. ***OF- OFFSET: CALCULE L'OFFSET LONG OU COURT LORS D'UNE * FONCTION MEMOIRE ET LE PLACE AUTOMATIQUEMENT DANS LA * MEMOIRE DE PROGRAMME, PUIS RETOURNE DANS LA FONCTION * MEMOIRE. *X-OF- POST OCTET: PERMET DE CALCULER L'OFFSET EN DECIMAL QU'IL FAUT * DONNER AU POST OCTET; LE PROGRAMME LE CALCULE EN HEXA ET LE * PLACE EN MEMOIRE. ***BP- BREAKPOINT: INSERE UN SWI2 A UNE ADRESSE SPECIFIEE, VISUALISE * LE CONTENU DES REGISTRES DU MPU, PUIS PLACE L'INSTRUCTION EN MEM * A LA PLACE DU SWI2 * * * * ******************************************************************** **LA PILE EST LOCALISEE A1 PARTIR DE L'ADRESSE $0780 "JUSQU'A $07CC" **LA RAM PART DE L'ADRESSE $0000 JUSQU'A $07AF **LE MONITEUR EST LOCALISE ENTRE $E000 ET $E7FF **LE PIA EST LOCALISE ENTRE $A004 ET $A007 ******************************************************************** ******************************************************************** * LE RESET EST SITUE A L'ADRESSE $E219. * LA ROUTINE DE NMI EST A L'ADRESSE $E27C. * LE SWI EST A L'ADRESSE $E2A7. * LE SWI2 EST A L'ADRESSE $E27C. * LES AUTRES INTERRUPS SONT DEFINIES DS "EMPLACEMENT DES REGISTRES" ******************************************************************** ORG $E000 * * SCRUTATION DU CLAVIER * * * 0 1 2 3 KEYTBL FCB $06,$05,$04,$03 * * 4 5 6 7 FCB $02,$01,$15,$14 * * 8 9 A B FCB $13,$12,$11,$25 * * C D E F FCB $24,$23,$22,$21 SPC 3 * CODAGE DES SEGMENTS * * * 0 1 2 3 DIGTBL FCB $7E,$06,$5B,$1F * * 4 5 6 7 FCB $27,$3D,$7D,$0E * * 8 9 A B FCB $7F,$3F,$6F,$75 * * C D E F FCB $78,$57,$79,$69 SPC 3 ************** GETKEY ROUTINE ************** *SCRUTE LES LIGNES ET LES COLONNES DU CLAVIER* ************ ALLUME LES AFFICHEURS *********** SPC 1 GETKEY PSHS Y,DP,B SETDP $A0 LDA #$A0 TFR A,DP FINCLA BSR DISPRE ALLUMER LES AFFICHEURS CLRA STA 0, DECREMENTE LDA ,X+ PRENDRE DONNEE DS X ET X+1 PREXIN PSHS B SAUVE AVANT STOCKAGE CMPA ,S+ MEMOIRE ABSENTE OU MEMOIRE MORTE? LBNE RPOINT OUI, ALLUMER PROMPT ET SCRUTER TFR X,D NON, AFFICHE CASE MEMOIRE LBSR L7SEG SUIVANTE OU PRECEDENTE STA 0 OU <0 ****** SPC 1 EXPOCT BSR INCREM POST OCTET EN MEM STA 0 CMPA #$10 TOUCHE DECREM? BEQ MOINS POSTOCTET<0 INX LBRA REMEMO SINON RETOUR MEM PLUS LDA #$6B STA 80? BHI ERREUR OUI, AFFICHE ERREUR BEQ COMPAB BRA INTR16 NON, VAL 16 BITS COMPAB CMPB #$00 BEQ INTR16 ERREUR LEAX -1,X EREURE TFR X,Y LBRA CLIGNO TSTSUI RORB CMPB #$80 B>80? BHI INTR16 OUI, VAL 16BITS BRA INTR08 NON, VAL 8BITS INTR05 ASLB BCC POSITIF LDD 10? BHI TSTPOC OUI, TESTER POST OCTET ASLA BCC POCPOS BRA INTR08 TSTPOC ASLA BCC EREURE POST INCORRECT BRA INTR08 VAL 8BITS POSSIBLE POCPOS ASL 720MICROSEC. TSTB BIT CARAC.=0? BMI AFSIGN OUI, AFFICHER SIGNE POUR 0 ASRA NON, AFFICHER SIGNE POUR 1 AFSIGN STA DISREG TSTB PULS PC,B,A SPC 2 ******** POSITIONNEMENT DU BIT DU CARACTERE ******** ***** TRANSMIS DANS LE LSB DE L'ACCUMULATEUR B ***** * * * BITLSB PSHS A BITCA1 BSR RECBIT RECONNAISSANCE BIT TRANSMIS BPL BITCA1 BIT CARAC. = 1 LDA #$08 RECONNAISSANCE BIT SUIVANTS CONROT BSR RECBIT BIT CARAC=0 RECON BITS SUIVANTS ANDCC #$FE CARRY=0 BMI BITCA0 BIT CARACTERE = 0 ? ORCC #$01 NON, METRE CARRY A 1 BITCA0 RORB OUI, DEPLACER LA CARRY DECA PAR ROTATIONS SUCCESSIVES BNE CONROT CARRY DANS LSB DE ACCB PULS PC,A SPC 2 ****** CHARGEMENT D'UN PROGRAMMA PROVENANT D'UNE CASSETTE ****** **************************************************************** SPC 2 EXLOAD LDD #$0000 STD SCNREG ACCES A DDRAB LDD #$FF7F STD DISREG PA ET PB EN SORTIE LDD #$0404 PB7 EN ENTREE STD SCNREG ACCES DRAB LDD #$FF04 ETEINDRE LES AFFICHEURS STD DISREG ET SELECTIONNER LE 1er DIGIT DETECS BSR BITLSB DETECTE CARACTERE DEBUT CHARGEMENT CMPB #$53 CARACTERE S TRANSMIS ? BNE DETECS NON, CONTINUER A CHERCHER CARACTERE BSR BITLSB OUI, CARACTERES SUIVANTS CMPB #$31 CARACTERE 1 TRANSMIS ? BEQ CARSUI OUI, CARACTERES SUIVANTS CMPB #$4A NON, CARACTERE FIN = J ? BNE DETECS NON, DETECTER CARACTERE DE FIN AFICHA LDA #$69 LDA #$69 OUI, AFFICHER FIN DU CHARGEMENT BRA DISFIN SPC 2 ****** MISE EN MEMOIRE, POINTEE PAR X DES CARAC TRANSMIS ****** *************************************************************** SPC 2 CARSUI BSR BITLSB CONVERSION INTERVALE STB 0 ? ANDA #$F0 PSHS B CMPA ,S+ COMPARE B A ACCA BNE RECYCL OUI, RECOMMENCER UN CYCLE BSR DEBCHA NON, TRANSMETTRE DEBUT CHARGEMENT LDA 0 COURT POSSIBLE SUITEB STD ,--Y STOCKE OFFSET DS MEM PROG BSR AFFIAD AFFICHE ADRESSE LBRA REMEMO RETOUR DS FCT MEMOIRE SPC 2 ****** CALCULE L'OFFSET SUR 16 BITS ****** **** D CONTIENT L'OFFSET,Y=ADRESSE DEP *** * * * CALOFS TFR X,Y Y=ADRESSE DE DEPART STY 0 *** * * * AFFIAR LDD #$6F41 AFFICHE AR DS DISBUF STD 0 NEGPOS=FF<0 RTS SPC 2 ** DETERMINE SI LE BRANCH SUR 16BITS PEUT SE FAIRE SUR 8BITS ** * * * PLUCOU ROLB BCS RETOU2 BRANCH COURT POSSIBLE RORB BRA SUITEB CONTINUE CALCUL BCOURT ROLB BCC RETOU2 RORB BRA SUITEB RETOU1 LEAY -2,Y BRA CLIGNO AFFICHE ERREUR, PUIS RETOUR MEMORY RETOU2 LEAY -4,Y LDA ,Y+ CMPA #$10 BEQ CLIGNE LDA ,Y CMPA #$16 BEQ CLIGNO CMPA #$17 BEQ CLIGNO ANDA #$8F CMPA #$8D BEQ CLIGNO LBRA RPOINT SI PAS BRANCH, RETOUR RESET CLIGNE LEAY -1,Y CLIGNO BSR AFFIAD AFFICHE ADRESSE OU EST L'ERREUR BSR ERROR PLACE ERREUR DS DISBUF LDY #$02FF AFCLIG LBSR DISPRE AFFICHE L'ERREUR BRA TEMPO TEMPORAIREMENT ERROR LDD #$7941 PLACE ER DANS LES 2 STD