
                     * 16/10/2012 BY FLD
                     *******************************************************
                     * EQUIVALENCES DES ADRESSES EXTERNES                  *
                     *******************************************************
                     * ADRESSES EN RAM                                     *
                     *******************************************************
               C100  ADCMD   EQU    $C100     ADRESSE RESERVEE POUR COMMANDES FLEX
               C700  ASPOOL  EQU    $C700     ADRESSE RESERVEE POUR LE SPOOLER
               CC2B  MEMEND  EQU    $CC2B     ADRESSE DE FIN DE LA MEMOIRE VIVE
               CC34  ZCC34   EQU    $CC34     REGISTRE RESERVE INCONNU 
               CD03  HOTDOS  EQU    $CD03     POINT D'ENTREE A CHAUD DU FLEX
               ED80  TABLE2  EQU    $ED80     TABLE DE TRADUCTION DES CLAVIERS
               EE80  TABLE3  EQU    $EE80     TABLE DE TRADUCTION DES CLAVIERS
               EF7F  STACKSY EQU    $EF7F     ORIGINE DE LA PILE SYSTEME
               EF80  TRKBUF  EQU    $EF80     BUFFER DE MEMORISATION DES PISTES ACTIVES
               EF88  VLECT0  EQU    $EF88     SAUT DE PISTE LECTEUR 0
               EF89  VLECT1  EQU    $EF89     SAUT DE PISTE LECTEUR 1
               EF8C  ACTDRV  EQU    $EF8C     LECTEUR ACTIF
               EF8D  MEM2    EQU    $EF8D     MASQUE DE SAUT DE PISTE
               EF8E  MEM3    EQU    $EF8E     MEMORISATION DP PENDANT LECTURE SECTEUR
               EF90  TBLCRT  EQU    $EF90     TABLE INITIALISATION CRT
               EF91  TBLCR2  EQU    $EF91     NB CARACTERES PAR LIGNE
               EF96  TBLCR3  EQU    $EF96     NB LIGNES SUR L'ECRAN
               EFA4  SCROLL  EQU    $EFA4     SCROLLING ON / OFF
               EFA5  MEM5    EQU    $EFA5     BUFFER DE POSITION CURSEUR
               EFA6  MEM6    EQU    $EFA6     BUFFER DE POSITION CURSEUR
               EFA7  MEM7    EQU    $EFA7     BUFFER DE POSITION POUR UPDATE
               EFA8  MEM8    EQU    $EFA8     BUFFER DE POSITION POUR UPDATE
               EFA9  MEM9    EQU    $EFA9     BUFFER DE POSITION OFFSET
               EFAA  ACTDR0  EQU    $EFAA     BUFFER DE POSITION OFFSET
               EFAB  LIGN    EQU    $EFAB     POSITION LIGNE COURRANTE
               EFAC  CARACT  EQU    $EFAC     POSITION CARACTERE COURRANT
               EFAD  SOUND   EQU    $EFAD     TONALITE CLOCHE
               EFAF  TSOUND  EQU    $EFAF     DUREE SON CLOCHE
               EFB1  INDMOT  EQU    $EFB1     INDICATEUR MOTEUR FLOPPY
               EFB2  DEMAND  EQU    $EFB2     TEMPS DEMARRAGE MOTEUR LECTEURS
               EFB4  VSPOOL  EQU    $EFB4     VITESSE SPOOLING IMPRIMANTE
               EFB6  NSECT1  EQU    $EFB6     NB DE SECTEURS PAR FACE SD ($0A)
               EFB7  NSECT2  EQU    $EFB7     NB DE SECTEURS PAR FACE DD ($12)
               EFB8  ACTDR2  EQU    $EFB8
               EFF2  IRQUTI  EQU    $EFF2     IRQ UTILISATEUR
               EFF4  IRQFLX  EQU    $EFF4     IRQ FLEX (SPOOLING)
               EFF6  SWI3    EQU    $EFF6     SWI3 FLEX
               EFF8  SWI2    EQU    $EFF8     SWI2
               EFFA  SWI     EQU    $EFFA     SWI
               EFFC  NMI     EQU    $EFFC     NMI
               EFFE  FIRQ    EQU    $EFFE     FIRQ
                     *******************************************************
                     * EQUIVALENCES DES ADRESSES EXTERNES                  *
                     *******************************************************
                     * CICUITS                                             *
                     *******************************************************
                     * CONTROLEUR D'ECRAN SY6545
               F000  FLGCU0  EQU    $F000     REGISTRE DE CONTROLE
               F001  FLGCU1  EQU    $F001     REGISTRE DE CONTROLE
               F200  DVIDEO  EQU    $F200     DONNEE VIDEO A AFFICHER
                     * CONTROLEUR DE DISQUETTES
               F600  STRCR   EQU    $F600     REGISTRE DE STATUS/COMMAND
               F601  TR      EQU    $F601     REGISTRE DE PISTE
               F602  SCR     EQU    $F602     REGISTRE DE SECTEUR
               F603  DR      EQU    $F603     REGISTRE DE DONNEES
                     * HORLOGE TEMPS REEL
               F640  HORLO   EQU    $F640
               F64E  HORMA   EQU    $F64E
               F64F  INTERH  EQU    $F64F
                     * PIA-A DISQUE
               F680  PIA1DA  EQU    $F680     REGISTRE DE DONNEES
               F681  PIA1CA  EQU    $F681     REGISTRE DE CONTROLE
                     * PIA-B CLAVIER
               F682  PIA1DB  EQU    $F682     REGISTRE DE DONNEES
               F683  PIA1CB  EQU    $F683     REGISTRE DE CONTROLE
                     * TEMPORISATEUR 1,2 ET 3
               F6C8  TMRCR1  EQU    $F6C8     REGISTRE DE CONTROLE
               F6C9  TMRCR2  EQU    $F6C9     REGISTRE DE CONTROLE
               F6CA  TMRT1L  EQU    $F6CA     PRESET TIMER 1 (UTILISATEUR)
               F6CC  TMRT2L  EQU    $F6CC     PRESET TIMER 2
               F6CE  TMRT3L  EQU    $F6CE     PRESET TIMER 3
                     * PIA-A MANETTES
               F6D0  PIA2DA  EQU    $F6D0     REGISTRE DE DONNEES
               F6D1  PIA2CA  EQU    $F6D1     REGISTRE DE CONTROLE
                     *******************************************************
                     * DEBUT DU PROGRAMME DU MONITEUR                      *
                     * ADRESSES $F800                                      *
                     *******************************************************
  F800                       ORG    $F800
  F800 7E   F92D     HOTMON  JMP    >HOTMO2   ENTREE A CHAUD MONITEUR $F800
  F803 7E   FA17             JMP    >CLAV1    ENTREE CLAVIER                 $F803
  F806 7E   FA03             JMP    >CLAV2    ENTREE CLAVIER SANS ECHO       $F806
  F809 7E   FA19             JMP    >SORECR   SORTIE ECRAN                  $F809
  F80C 7E   F9F9             JMP    >TSTCLA   TEST CLAVIER                  $F80C
  F80F 7E   F9B8             JMP    >INIES    INIT DES E/S                   $F80F
  F812 7E   FC9A             JMP    >LECSEC   LECTURE SECTEUR               $F812
  F815 7E   FD63             JMP    >ECRSEC   ECRITURE SECTEUR              $F815
  F818 7E   FDC4             JMP    >VERSEC   VERIFICATION SECTEUR          $F818
  F81B 7E   FDD8             JMP    >PIST0    PISTE 0                        $F81B
  F81E 7E   FDE8             JMP    >SELECT   SELECTION LECTEUR             $F81E
  F821 7E   FE1E             JMP    >TETRDY   TEST PRET                     $F821
  F824 7E   FE1E             JMP    >TETRDY   TEST PRET                     $F824
  F827 7E   FC2A             JMP    >LECINI   INIT LECTEUR                  $F827
  F82A 7E   FC6D             JMP    >HOTINI   INIT A CHAUD                  $F82A
  F82D 7E   FD07             JMP    >SEEK     SAUT DE PISTE                   $F82D
  F830 7E   FE86             JMP    >CTRIRQ   IRQ CONTROLE (FLEX SEULEMENT) $F830
  F833 7E   FE8A             JMP    >TMROFF   TIMER OFF (FLEX SEULEMENT)    $F833
  F836 7E   FE90             JMP    >TMRON    TIMER ON (FLEX SEULEMENT)      $F836
  F839 7E   FE9C             JMP    >TMRINIT  TIMER INIT (FLEX SEULEMENT)    $F839
  F83C EFF4                  FDB    $EFF4
  F83E EFF6                  FDB    $EFF6
 >F840 7E   F884             JMP    >IPIA2A   INITIALISATION MANETTE        $F840
               F844  TABLE5  EQU    *+1
 >F843 7E   F890             JMP    >TSTMAN   TEST MANETTE                  $E843
                     *******************************************************
                     * ADRESSE DES SEQUENCES DE TRAITEMENT DES CODES ESCAPE*
                     * CARACTERES DE CONTROLES                             *
                     *******************************************************
  F846 FB15                  FDB    $FB15     01
  F848 FB15                  FDB    $FB15     02
  F84A FB15                  FDB    $FB15     03
  F84C FB15                  FDB    $FB15     04
  F84E FB15                  FDB    $FB15     05
  F850 FB15                  FDB    $FB15     06
  F852 FB16                  FDB    $FB16     CTRL G 07- BELL
  F854 FB2D                  FDB    $FB2D     CTRL H 08- CURSEUR A GAUCHE 
  F856 FB3A                  FDB    $FB3A     CTRL I 09- CURSEUR A DROITE
  F858 FB4F                  FDB    $FB4F     CTRL J 10- CURSEUR EN BAS
  F85A FB59                  FDB    $FB59     CTRL K 11- CURSEUR EN HAUT
  F85C FB66                  FDB    $FB66     CTRL L 12- CURSEUR EN HAUT A GAUCHE + EFFACEMENT
  F85E FBA4                  FDB    $FBA4     CTRL M 13- RETOUR CHARIOT
  F860 FBAB                  FDB    $FBAB     CTRL N 14
  F862 FBD2                  FDB    $FBD2     CTRL O 15
  F864 FB15                  FDB    $FB15     CTRL P 16
  F866 FB15                  FDB    $FB15     CTRL Q 17
  F868 FC06                  FDB    $FC06     CTRL R 18- POSITIONNE LE CURSEUR (CONTENU EFAB - EFAC)
  F86A FB15                  FDB    $FB15     CTRL S 19
  F86C FC0A                  FDB    $FC0A     CTRL T 20- CORSEUR ON
  F86E FC0F                  FDB    $FC0F     CTRL U 21- CURSEUR OFF
  F870 FC16                  FDB    $FC16     CTRL V 22- SCROLL ON
  F872 FC1C                  FDB    $FC1C     CTRL W 23- SCROLL OFF
  F874 FB15                  FDB    $FB15     CTRL X 24
  F876 FB15                  FDB    $FB15     CTRL Y 25
  F878 FB15                  FDB    $FB15     CTRL Z 26
  F87A FB15                  FDB    $FB15     CTRL   27 - ESCAPE FLEX
  F87C FC20                  FDB    $FC20     CTRL   28 - CURSEUR EN HAUT A GAUCHE + SANS EFF
  F87E FB15                  FDB    $FB15     CTRL   29
  F880 FB15                  FDB    $FB15     CTRL   30
  F882 FB15                  FDB    $FB15     CTRL   31
                     *******************************************************
                     * INITIALISATION PIA 2 PORT A MANETTES                *
                     *******************************************************
  F884 7F   F6D0     IPIA2A  CLR    >PIA2DA   EFFACEMENT REGISTRE DE DIRECTION (ENTREE)
  F887 7F   F6D1             CLR    >PIA2CA   EFFACEMENT REGISTRE DE CONTROLE (MISE EN SORTIE)
  F88A 86   04               LDA    #$04      %00000100
  F88C B7   F6D1             STA    >PIA2CA   SELECTION REGISTRE DE DONNEES
  F88F 39                    RTS
                     *******************************************************
                     * TEST MANETTES                                       *
                     *******************************************************
  F890 BE   CC2B     TSTMAN  LDX    >MEMEND
  F893 30   1C               LEAX   -$04,X    pOSITIONNE X 4 OCTETS SOUS MEMEND
  F895 A6   84               LDA    ,X        CHARGE A AVEC MEMEND-4
  F897 6F   80               CLR    ,X+       EFFACE MEMEND-4
  F899 A6   84               LDA    ,X        CHARGE A AVEC MEMEND-3
  F89B 26   16               BNE    TSTMA1    SAUTE SI NON NUL
  F89D B6   F6D1             LDA    >PIA2CA   CHARGE LE REGISTRE DE CONTROLE
  F8A0 84   C0               ANDA   #$C0      MASQUE %11000000
  F8A2 26   03               BNE    TSTMA2    TEST SI UN BP A ETE PRESSE CA1 OU CA2
  F8A4 A7   84       TSTMA6  STA    ,X        MEMORISE EN MEMEND-3
  F8A6 39                    RTS              RETOUR
  F8A7 44            TSTMA2  LSRA             SHIFT A GAUCHE 
  F8A8 44                    LSRA             6 FOIS POUR POSITIONNER
  F8A9 44                    LSRA             LE TEST DE CA2 EN BIT 0
  F8AA 44                    LSRA
  F8AB 44                    LSRA
  F8AC 44                    LSRA
  F8AD A7   84               STA    ,X        MEMORISE EN MEMEND-3
  F8AF B6   F6D0             LDA    >PIA2DA   CHARGE L'ETAT DES JOYSTICKS DANS L'ACCU
  F8B2 39                    RTS
  F8B3 81   01       TSTMA1  CMPA   #$01      TEST DE CA2
  F8B5 26   0B               BNE    TSTMA3    SAUTE SI CA2 A ZERO
  F8B7 B6   F6D0             LDA    >PIA2DA   CHARGE L'ETAT DES JOYSTICKS DANS L'ACCU 
  F8BA 44                    LSRA             SE POSITIONNE SUR LE JOYSTICK 2
  F8BB 44                    LSRA
  F8BC 44                    LSRA
  F8BD 44                    LSRA
  F8BE 8D   10               BSR    TSTMA5
  F8C0 20   E2               BRA    TSTMA6
  F8C2 81   02       TSTMA3  CMPA   #$02      TEST DE CA1
  F8C4 26   07               BNE    TSTMA4    SAUTE SI CA1 A ZERO
  F8C6 B6   F6D0             LDA    >PIA2DA   CHARGE L'ETAT DES JOYSTICKS DANS L'ACCU
  F8C9 8D   05               BSR    TSTMA5
  F8CB 20   D7               BRA    TSTMA6
  F8CD 4F            TSTMA4  CLRA
  F8CE 20   D4               BRA    TSTMA6
  F8D0 C6   04       TSTMA5  LDB    #$04
  F8D2 44            TSTMA8  LSRA
  F8D3 24   03               BCC    TSTMA7
  F8D5 5A                    DECB
  F8D6 26   FA               BNE    TSTMA8
  F8D8 1F   98       TSTMA7  TFR    B,A
  F8DA 39                    RTS
                     *******************************************************
                     * DESACTIVATION DES INTERRUPTIONS DE L'HORLOGE        *
                     *******************************************************
  F8DB 7F   F64F     SHORL1  CLR    >INTERH   INITIALISATION A ZERO DU REGISTRE F
  F8DE B6   F64F             LDA    >INTERH   LECTURE 3 FOIS DU REGISTRE
  F8E1 B6   F64F             LDA    >INTERH
  F8E4 B6   F64F             LDA    >INTERH
  F8E7 39                    RTS
                     *******************************************************
                     * INITIALISATION                                      *
                     *******************************************************
                     * POINT D'ENTREE A FROID DU SYSTEME                   *
                     * APRES EXECUTION AUTOMATIQUE PAR LE 6809             *
                     * DU SAUT A L'ADRESSE CONTENUE DANS $FFE-$FFFF        *
                     *******************************************************
                     * INITIALISATION DU POINTEUR DE PILE SYSTEME
  F8E8 10CE EF7F     START   LDS    #STACKSY  POINTEUR DE PILE SYSTEME $EF7F
                     * INITIALISATION DES INTERRUPTIONS
  F8EC BD   FF81             JSR    >INITIRQ  NITIALISATION DES INTERRUPTIONS
                     * INITIALISATION HORLOGE
  F8EF 7F   F640             CLR    >HORLO    INITIALISATION DU MM58174 
  F8F2 8D   E7               BSR    SHORL1    DESACTIVATION DES INTERRUPTIONS DE L'HORLOGE
  F8F4 86   01               LDA    #$01
  F8F6 B7   F64E             STA    >HORMA    DEMARRAGE DE L'HORLOGE 
  F8F9 7F   CC34             CLR    >ZCC34    $CC33 EST LE TYPE DE CPU
                     * INITIALISATION TABLES CLAVIER
  F8FC 1C   EF               ANDCC  #$EF
  F8FE 8E   EE80             LDX    #TABLE3   INITIALISATION DE 0 A 255 DE $EE80 A $EF7F
  F901 4F                    CLRA
  F902 A7   86       LOOP3   STA    A,X
  F904 4C                    INCA
  F905 26   FB               BNE    LOOP3
  F907 8E   ED80             LDX    #TABLE2   INITIALISATION DE 0 A 128 DE $ED80 A $EDFF
  F90A 4F                    CLRA
  F90B A7   86       LOOP4   STA    A,X
  F90D 4C                    INCA
  F90E 81   80               CMPA   #$80
  F910 26   F9               BNE    LOOP4
                     * INITIALISATION DES TABLES PAR DEFAULT DU MONITEUR
                     * $EF90  =$7F   TBLCRT
                     * $EF91  =$50   TBLCR2
                     * $EF92  =$5F
                     * $EF93  =$09
                     * $EF94  =$1D
                     * $EF95  =$0C
                     * $EF96  =$18   TBLCR3
                     * $EF97  =$1A
                     * $EF98  =$48
                     * $EF99  =$09
                     * $EF9A  =$60
                     * $EF9B  =$09
                     * $EF9C  =$00
                     * $EF9D  =$00
                     * $EF9E  =$00
                     * $EF9F  =$00
                     * $EFA0  =$00
                     * $EFA1  =$00
                     * $EFA2  =$00
                     * $EFA3  =$00
                     * $EFA4  =$01   SCROLL
                     * $EFA5  =$00   MEM5
                     * $EFA6  =$00   MEM6
                     * $EFA7  =$00   MEM7
                     * $EFA8  =$00   MEM8
                     * $EFA9  =$00   MEM9 
                     * $EFAA  =$01   ACTDR0
                     * $EFAB  =$00   LIGN
                     * $EFAC  =$00   CARACT
                     * $EFAD  =$015D SOUND
                     * $EFAF  =$01E0 TSOUND
                     * $EFB1  =$00   INDMOT
                     * $EFB2  =$0000 DEMAND
                     * $EFB4  =$2710 VSPOOL
                     * $EFB6  =$0A   NSECT1
                     * $EFB7  =$12   NSECT2
                     * $EFB8  =$00   ACTDR2
  F912 8E   EF90             LDX    #TBLCRT   CHARGEMENT $EF90
  F915 108E F990             LDY    #TABLE1   CHARGEMENT TABLE1
  F919 A6   A0       LOOP1   LDA    ,Y+
  F91B A7   80               STA    ,X+
  F91D 8C   EFB8             CMPX   #ACTDR2   TBLCRT + $28 (40)
  F920 26   F7               BNE    LOOP1
                     * INITIALISATION PIA MANETTE ET E/S
  F922 BD   F884             JSR    >IPIA2A   INITIALISATION PIA 2A DES MANETTES
  F925 BD   F9B8             JSR    >INIES    INITIALISATION DES E/S
  F928 86   0C               LDA    #$0C      SAUTE UNE PAGE FORM FEED
  F92A BD   FA19             JSR    >SORECR
                     * ENTREE A CHAUD MONITEUR
  F92D 8E   F95D     HOTMO2  LDX    #TEXTE1   POINTE SUR LE TEXTE
  F930 BD   FB09     HOTMO3  JSR    >PSTRNG   AFFICHE LE TEXTE
  F933 BD   FA17             JSR    >CLAV1    ATTEND UN CARACTERE AU CLAVIER
  F936 34   02               PSHS   A
  F938 86   20               LDA    #$20      ESPACE IMPRIME UN ESPACE
  F93A BD   FA19             JSR    >SORECR
  F93D 35   02               PULS   A
  F93F 84   5F               ANDA   #$5F      FILTRE LE CARACTERE
  F941 1F   89               TFR    A,B
  F943 8E   F984             LDX    #KEYCOD
  F946 E1   80       HOTMO4  CMPB   ,X+
  F948 27   0C               BEQ    HOTMO6
  F94A 30   02               LEAX   $02,X
  F94C 8C   F990             CMPX   #TABLE1
  F94F 26   F5               BNE    HOTMO4
  F951 8E   F980     HOTMO5  LDX    #ETOILE
  F954 20   DA               BRA    HOTMO3
  F956 AD   94       HOTMO6  JSR    [,X]
  F958 20   F7               BRA    HOTMO5
                     *******************************************************
                     * $F95A : COMMANDE MONITEUR "F"                       *
                     * LANCEMENT A CHAUD DU FLEX                           *
                     ******************************************************* 
  F95A 7E   CD03             JMP    >HOTDOS
  F95D 0D            TEXTE1  FCB    $0D
  F95E 0A                    FCB    $0A
  F95F 4D 4F 4E 49           FCC    "MONITEUR 80  COPYRIGHT MICROKIT"
  F963 54 45 55 52   
  F967 20 38 30 20   
  F96B 20 43 4F 50   
  F96F 59 52 49 47   
  F973 48 54 20 4D   
  F977 49 43 52 4F   
  F97B 4B 49 54      
  F97E 0D                    FCB    $0D
  F97F 0A                    FCB    $0A
  F980 0D            ETOILE  FCB    $0D
  F981 0A                    FCB    $0A
  F982 2A                    FCC    "*"
  F983 04                    FCB    $04
  F984 44 FE 9D      KEYCOD  FCB    $44,$FE,$9D CHOIX "D"
  F987 47 FE C1              FCB    $47,$FE,$C1 CHOIX "G"
  F98A 4D FE C8              FCB    $4D,$FE,$C8 CHOIX "M"
  F98D 46 F9 5A              FCB    $46,$F9,$5A CHOIX "F"
  F990 7F 50 5F 09   TABLE1  FCB    $7F,$50,$5F,$09,$1D,$0C,$18,$1A
  F994 1D 0C 18 1A   
  F998 48 09 60 09           FCB    $48,$09,$60,$09,$00,$00,$00,$00
  F99C 00 00 00 00   
  F9A0 00 00 00 00           FCB    $00,$00,$00,$00,$01,$00,$00,$00
  F9A4 01 00 00 00   
  F9A8 00 00 00 00           FCB    $00,$00,$00,$00,$00,$01,$5D,$01
  F9AC 00 01 5D 01   
  F9B0 E0 00 00 00           FCB    $E0,$00,$00,$00,$27,$10,$0A,$12
  F9B4 27 10 0A 12   
                     * INITIALISATION DES E/S
  F9B8 86   A1       INIES   LDA    #$A1      BIN %1010001 
  F9BA B7   F6C8             STA    >TMRCR1   CONTROL REGISTER 3
                     * BIT 7=1 OUTPUT 3 ACTIVE
                     * BIT 6=0 INTERRUPTION MASQUEE
                     * BIT 543=100 MODE SINGLE SHOT
                     * BIT 2=0 MODE DE COMPTAGE 16 BITS
                     * BIT 1=0 SIGNAL HORLOGE EXTERNE
                     * BIT 0=1 FREQUENCE DIVISEE PAR 8 
  F9BD 86   81               LDA    #$81      BIN %10000001
  F9BF B7   F6C9             STA    >TMRCR2   CONTROL REGISTER 2
                     * BIT 7=1 OUTPUT 2 ACTIVE
                     * BIT 6=0 INTERRUPTION MASQUEE
                     * BIT 543=000 MODE CONTINUE
                     * BIT 2=0 MODE DE COMPTAGE 16 BITS
                     * BIT 1=0 SIGNAL HORLOGE EXTERNE
                     * BIT 0=1 PRESELECTION TIMER 1
                     * ZF9C4 EQU *+2 ligne  supprimer
  F9C2 BE   EFAD             LDX    >SOUND    CHARGE LA TONALITE DU BIP
                     * ZF9C6 EQU *+1 ligne  supprimer
  F9C5 BF   F6CC             STX    >TMRT2L   ECRIURE DU REGISTRE DU TIMER 2
  F9C8 BE   EFAF             LDX    >TSOUND   CHARGE LA DUREE DU BIP
  F9CB BF   F6CE             STX    >TMRT3L   ECRITURE DU BUFFER DU TIMER 3
  F9CE 86   00               LDA    #$00
  F9D0 B7   F6C8             STA    >TMRCR1   REINITIALISE LE REGISTRE DE CONTOLE 1
                     * INITIALISATION DU CONTROLEUR D'ECRAN
                     * REGITRE 0 TOTAL HORIZONTAL-1=$7F (127)
                     * REGITRE 1 CARACTERES PAR LIGNE =$50 (80)
                     * REGITRE 2 POSITION DE H SYNC=$5F (95)
                     * REGITRE 3 LARGEUR DE HSYNC=$09
                     * REGITRE 4 NOMBRE DE LIGNES =$1D (29)
                     * REGITRE 5 LIGNES SUPPLEMENTAIRES A SCANNER=$0C (12)
                     * REGITRE 6 NOMBRE DE LIGNES AFFICHEES =$18 (24)
                     * REGITRE 7 NUMERO DE LIGNE POUR SYNCHO VERTICALE=$1A (26)
                     * REGITRE 8 MODE DE CONTROLE=$48 (%00101000)
                     * BIT7=0 UPDATE PENDANT STROBE
                     * BIT6=0 UPDATE STROBE 
                     * bIT5=1 CURSEUR DELAY 
                     * BIT4=0 DISPLAY ENABLE DELAY
                     * BIT3=1 DISPLAY MODE MEMOIRE TRANSPARENTE
                     * BIT2=0 ADRESSE VIDEO RAM BINAIRE
                     * BIT10=00 NON INTERLACE
                     * REGITRE 9 LIGNES A SCANNER=$09
                     * REGITRE 10 CURSEUR CLIGNOTANT AU 1/32 =$60
                     * REGITRE 11 TAILLE DU CURSEUR =$09
                     * REGITRE 12 DEBUT ADRESSAGE =$00
                     * REGITRE 13 DEBUT ADRESSAGE =$00
                     * REGITRE 14 POSITION DU CURSUR =$00
                     * REGITRE 15 POSITION DU CURSEUR =$00
                     * REGITRE 16 REGISTRE LIGHT PEN =$00
                     * REGITRE 17 REGISTRE LIGHT PEN =$00
                     * REGITRE 18 POSITION DU PROCHAIN CARACTERE =$00
                     * REGITRE 19 POSITION DU PROCHAIN CARACTERE =$00
  F9D3 C6   00               LDB    #$00
  F9D5 8E   EF90             LDX    #TBLCRT   CHARGE X AVEC $EF90
  F9D8 F7   F000     ZF9D8   STB    >FLGCU0   INITIALISE LE 1ER REGISTRE DU CRT
  F9DB A6   80               LDA    ,X+       CHARGE DANS A LE CONTENU POINTE PAR X+
  F9DD B7   F001             STA    >FLGCU1   SAUVEGARDE A DANS LE REGISTRE
  F9E0 5C                    INCB             INCREMENTE B
  F9E1 C1   14               CMPB   #$14      BOUCLE SI INFERIEUR A 20
  F9E3 26   F3               BNE    ZF9D8
  F9E5 86   1F               LDA    #$1F      REGISTRE 31 (DUMMY)
  F9E7 B7   F000             STA    >FLGCU0
  F9EA B6   F001             LDA    >FLGCU1
                     * INITIALISE LE PIA DU DISQUE
  F9ED 7F   F683             CLR    >PIA1CB
  F9F0 7F   F682             CLR    >PIA1DB
  F9F3 86   0C               LDA    #$0C      BIN %00001100
  F9F5 B7   F683             STA    >PIA1CB   SUVEGARDE DANS LE CR DU PIA
  F9F8 39                    RTS
                     *******************************************************
                     * TEST CLAVIER                                        *
                     ******************************************************* 
  F9F9 34   02       TSTCLA  PSHS   A
  F9FB B6   F683             LDA    >PIA1CB   LECTURE DU CR DU PIA
  F9FE 84   80               ANDA   #$80      MASQUE
  FA00 35   02               PULS   A
  FA02 39                    RTS
                     *******************************************************
                     * CLAVIER SANS ECHO                                   *
                     ******************************************************* 
  FA03 7D   F683     CLAV2   TST    >PIA1CB
  FA06 2A   FB               BPL    CLAV2
  FA08 B6   F682             LDA    >PIA1DB
  FA0B 34   10               PSHS   X
  FA0D 8E   ED80             LDX    #TABLE2   CONVERSION DU CODE LU SUR PIA EN CODE ASCII
  FA10 84   7F               ANDA   #$7F
  FA12 A6   86               LDA    A,X
  FA14 35   10               PULS   X
  FA16 39                    RTS
                     *******************************************************
                     * CLAVIER SANS ECHO + INIT DE L'AFFICHAGE             *
                     ******************************************************* 
  FA17 8D   EA       CLAV1   BSR    CLAV2
                     *******************************************************
                     * INITIALISATION DES FONCTION D'AFFICHAGE DU SY6545   *
                     *******************************************************
  FA19 34   36       SORECR  PSHS   Y,X,B,A
  FA1B 8E   EE80             LDX    #TABLE3   CONVERSION DU CODE ASCII EN CODE IMPRIMABLE
  FA1E A6   86               LDA    A,X
  FA20 81   00               CMPA   #$00
  FA22 27   08               BEQ    JUMP1     CODE ZERO A IGNORER
  FA24 81   20               CMPA   #$20
  FA26 1025 00D4             LBCS   ZFAFE
  FA2A 8D   03               BSR    SOREC1
  FA2C 35   36       JUMP1   PULS   Y,X,B,A
  FA2E 39            JUMP2   RTS
  FA2F F6   EFAC     SOREC1  LDB    >CARACT   CHARGE LA POSITION DU CARACTERE A AFFICHER
  FA32 F1   EF91             CMPB   >TBLCR2   COMPARE AVEC NB CARACTERE PAR LIGNE
  FA35 27   F7               BEQ    JUMP2     RETOUR SI LIGNE PLEINE
  FA37 B7   F200             STA    >DVIDEO   SAUVEGARDE DANS LE REGISTRE A AFFICHER
  FA3A F6   F000     SOREC2  LDB    >FLGCU0   LECTURE DU STATUS REGISTER DU CONTROLEUR
  FA3D C5   80               BITB   #$80      TEST DU BIT 7 UPDATE READY
  FA3F 27   F9               BEQ    SOREC2
  FA41 C6   1F               LDB    #$1F      CHARGE LA VALEUR $1F 
  FA43 F7   F000             STB    >FLGCU0   SAUVEGARDE DANS LE REGISTRE D'ADRESSE
  FA46 7F   F000             CLR    >FLGCU0   EFFACEMENT
  FA49 F6   F000     SOREC3  LDB    >FLGCU0   LECTURE DU STATUS REGISTER DU CONTROLEUR
  FA4C C5   80               BITB   #$80      TEST DU BIT 7 UPDATE READY
  FA4E 27   F9               BEQ    SOREC3
  FA50 86   20               LDA    #$20      CHARGE UN ESPACE POUR AFFICHAGE DU CURSEUR
  FA52 B7   F200             STA    >DVIDEO   SAUVEGARDE DANS LE REGISTRE A AFFICHER
  FA55 7C   EFAC             INC    >CARACT   INCREMENTE LA POSITION DU CARACTERE DANS LA LIGNE
  FA58 BE   EFA9     SOREC4  LDX    >MEM9     CHARGE L'OFFSET POUR L'AFFICHAGE CURSEUR
  FA5B B6   EF91             LDA    >TBLCR2   NB CARACTERES PAR LIGNE
  FA5E F6   EFAB             LDB    >LIGN     NB DE LIGNES
  FA61 3D                    MUL
  FA62 30   8B               LEAX   D,X
  FA64 B6   EFAC             LDA    >CARACT   POSITION DU CARACTERE SUIVANT
  FA67 30   86               LEAX   A,X       CALCUL DE LA POSITION DU CURSEUR
  FA69 B6   EFAC             LDA    >CARACT   CHARGE LA POSITION DU CARACTERE SUIVANT
  FA6C B1   EF91             CMPA   >TBLCR2   NB CARACTERES PAR LIGNE
  FA6F 27   11               BEQ    SOREC5    SAUTE SI DERNIER CARACTERE DE LA LIGNE
  FA71 BF   EFA5             STX    >MEM5
  FA74 C6   0E               LDB    #$0E      REGISTE POUR AFFICHAGE CURSEUR
  FA76 B6   EFA5             LDA    >MEM5     CHARGE LA PARTIE HAUTE DE LA POSITION
  FA79 BD   FB9C             JSR    >UPDCRT   CHARGEMENT DU REGISTRE
  FA7C B6   EFA6             LDA    >MEM6     CHARGE LA PARTIE BASSE
  FA7F BD   FB9C             JSR    >UPDCRT   CHARGEMENT DU REGISTRE
  FA82 BF   EFA7     SOREC5  STX    >MEM7
  FA85 C6   12               LDB    #$12      REGISTRE POUR UPDTE ADRESSE
  FA87 B6   EFA7             LDA    >MEM7     CHARGE LA PARTIE HAUTE DE LA POSITION
  FA8A BD   FB9C             JSR    >UPDCRT   CHARGEMENT DU REGISTRE
  FA8D B6   EFA8             LDA    >MEM8     CHARGE LA PARTIE BASSE
  FA90 BD   FB9C             JSR    >UPDCRT   CHARGEMENT DU REGISTRE
  FA93 39                    RTS
                     *******************************************************
                     * TEST DU SCROLL SI DERNIERE LIGNE                    *
                     ******************************************************* 
  FA94 B6   EFAB     TSCROL  LDA    >LIGN     CHARGE LA LIGNE COURRANTE
  FA97 B1   EF96             CMPA   >TBLCR3   COMPARE AVEC LE NB LIGNE DE L'ECRAN
  FA9A 26   0A               BNE    TSCRO1    SAUTE SI PAS EN BAS DE L'ECRAN
  FA9C F6   EFA4             LDB    >SCROLL   TEST DU REGISTRE DE SCROLL
  FA9F 26   06               BNE    TSCRO2    SCROLL SI REGISTRE A 1
  FAA1 7F   EFAB             CLR    >LIGN     PASSE EN PREMIERE LIGNE
  FAA4 8D   B2               BSR    SOREC4    POSITIONNE LE CURSEUR
  FAA6 39            TSCRO1  RTS
  FAA7 4A            TSCRO2  DECA             AJUSTE LE NUMERO DE LIGNE
  FAA8 B7   EFAB             STA    >LIGN     SAUVEGARDE LE NUMERO DE LIGNE
  FAAB BE   EFA9             LDX    >MEM9     CHARGE L'OFFSET POUR L'AFFICHAGE CURSEUR
  FAAE B6   EF91             LDA    >TBLCR2   NB CARACTERES PAR LIGNE
  FAB1 30   86               LEAX   A,X       AJOUTE LES CARACTERES D'UNE LIGNE A L'OFFSET
  FAB3 BF   EFA9             STX    >MEM9     SAUVEGARDE NOUVEAU OFFSET
  FAB6 C6   0C               LDB    #$0C      REGISTRE POUR DISPLAY START
  FAB8 B6   EFA9             LDA    >MEM9     CHARGE LA PARTIE HAUTE DE LA POSITION
  FABB 84   07               ANDA   #$07      AJUSTE L'OFFSET POUR L'AFFICHAGE CURSEUR
  FABD B7   EFA9             STA    >MEM9     SAUVEGARDE L'OFFSET POUR L'AFFICHAGE CURSEUR
  FAC0 BD   FB9C             JSR    >UPDCRT   CHARGEMENT DU REGISTRE
  FAC3 B6   EFAA             LDA    >ACTDR0   CHARGE LA PARTIE BASSE
  FAC6 BD   FB9C             JSR    >UPDCRT   CHARGEMENT DU REGISTRE
  FAC9 8D   03               BSR    TSCRO3
  FACB 8D   8B               BSR    SOREC4    POSITIONNE LE CURSEUR
  FACD 39                    RTS
  FACE BE   EFA9     TSCRO3  LDX    >MEM9     CHARGE L'OFFSET POUR L'AFFICHAGE
  FAD1 B6   EF96             LDA    >TBLCR3   NB LIGNE DE L'ECRAN
  FAD4 4A                    DECA             POSITIONNE AVANT DERNIERE LIGNE
  FAD5 F6   EF91             LDB    >TBLCR2   NB CARACTERES PAR LIGNE
  FAD8 3D                    MUL
  FAD9 30   8B               LEAX   D,X       CALCUL POSITION UPDATE
  FADB BF   EFA7             STX    >MEM7
  FADE C6   12               LDB    #$12      REGISTRE POUR UPDTE ADRESSE
  FAE0 B6   EFA7             LDA    >MEM7     CHARGE LA PARTIE HAUTE DE LA POSITION
  FAE3 BD   FB9C             JSR    >UPDCRT   CHARGEMENT DU REGISTRE
  FAE6 B6   EFA8             LDA    >MEM8     CHARGE LA PARTIE BASSE
  FAE9 BD   FB9C             JSR    >UPDCRT   CHARGEMENT DU REGISTRE
  FAEC 86   20               LDA    #$20      CHARGE UN ESPACE POUR AFFICHAGE DU CURSEUR
  FAEE B7   F200             STA    >DVIDEO   SAUVEGARDE DANS LE REGISTRE A AFFICHER
  FAF1 B6   EF91             LDA    >TBLCR2   NB CARACTERES PAR LIGNE
  FAF4 BD   FBC3     ZFAF4   JSR    >ZFBC3
  FAF7 F6   F001             LDB    >FLGCU1
  FAFA 4A                    DECA
  FAFB 26   F7               BNE    ZFAF4
  FAFD 39                    RTS
                     *******************************************************
                     * INTERPRETATION DES CODES DE CTRL                    *
                     ******************************************************* 
                     * INTERPRETATION DES CODES DE CTRL
  FAFE 8E   F844     ZFAFE   LDX    #TABLE5
  FB01 48                    ASLA
  FB02 30   86               LEAX   A,X
  FB04 AD   94               JSR    [,X]
  FB06 35   36               PULS   Y,X,B,A
  FB08 39                    RTS
                     *******************************************************
                     * SORTIE A L'ECRAN D'UNE CHAINE                       *
                     *******************************************************
  FB09 A6   80       PSTRNG  LDA    ,X+
  FB0B 81   04               CMPA   #$04
  FB0D 27   05               BEQ    PSTRN1
  FB0F BD   FA19             JSR    >SORECR
  FB12 20   F5               BRA    PSTRNG
  FB14 39            PSTRN1  RTS
  FB15 39                    RTS
                     *******************************************************
                     * BELL (CTRL G)                                       *
                     ******************************************************* 
  FB16 B6   F6C9     ZFB16   LDA    >TMRCR2
  FB19 84   04               ANDA   #$04
  FB1B 27   F9               BEQ    ZFB16
  FB1D BE   F6CE             LDX    >TMRT3L
  FB20 BE   EFAD             LDX    >SOUND
  FB23 BF   F6CC             STX    >TMRT2L
  FB26 BE   EFAF             LDX    >TSOUND
  FB29 BF   F6CE             STX    >TMRT3L
  FB2C 39                    RTS
                     *******************************************************
                     * CURSEUR A GUAUCHE (CTRL H)                          *
                     *******************************************************
  FB2D B6   EFAC             LDA    >CARACT
  FB30 27   07               BEQ    ZFB39
  FB32 4A                    DECA
  FB33 B7   EFAC             STA    >CARACT
  FB36 BD   FA58             JSR    >SOREC4
  FB39 39            ZFB39   RTS
                     *******************************************************
                     * CURSEUR A DROITE (CTRL I)                           *
                     *******************************************************
  FB3A B6   EFAC             LDA    >CARACT
  FB3D 4C                    INCA
  FB3E B1   EF91             CMPA   >TBLCR2
  FB41 26   05               BNE    ZFB48
  FB43 4A                    DECA
  FB44 B7   EFAC             STA    >CARACT
  FB47 39                    RTS
  FB48 B7   EFAC     ZFB48   STA    >CARACT
  FB4B BD   FA58             JSR    >SOREC4
  FB4E 39                    RTS
                     *******************************************************
                     * CURSEUR EN BAS (CTL J)                              *
                     *******************************************************
  FB4F 7C   EFAB             INC    >LIGN
  FB52 BD   FA94             JSR    >TSCROL
  FB55 BD   FA58             JSR    >SOREC4
  FB58 39                    RTS
                     *******************************************************
                     * CURSEUR EN HAUT (CTRL K)                            *
                     *******************************************************
  FB59 B6   EFAB             LDA    >LIGN
  FB5C 27   01               BEQ    ZFB5F
  FB5E 4A                    DECA
  FB5F B7   EFAB     ZFB5F   STA    >LIGN
  FB62 BD   FA58             JSR    >SOREC4
  FB65 39                    RTS
                     *******************************************************
                     * CURSEUR EN HAUT A GAUCHE + EFFACEMENT (CTRL L)      *
                     *******************************************************
  FB66 86   20               LDA    #$20      CHARGEMENT DU CARACTERE BLANC
  FB68 B7   F200             STA    >DVIDEO   SAUVEGARDE DANS LE REGISTRE A AFFICHER
  FB6B 8E   0800             LDX    #$0800    PRESET DU REGISTRE X A 2048 (TAILLE RAM)
  FB6E 8D   53       ZFB6E   BSR    ZFBC3     UPDATE DU BUS EN ADRESSAGE TRANSPARENT
  FB70 B6   F001             LDA    >FLGCU1   LECTURE REGISTRE DUMY
  FB73 30   1F               LEAX   -$01,X    DECREMENTE X
  FB75 26   F7               BNE    ZFB6E     BOUCLE
  FB77 7F   EFAB             CLR    >LIGN     EFFACEMENT NUMERO DE LIGNE
  FB7A 7F   EFAC             CLR    >CARACT   EFFACEMENT NUMERO CARACTERE
  FB7D 8E   0000             LDX    #$0000    EFFACEMENT DES MEMOIRES
  FB80 BF   EFA5             STX    >MEM5     BUFFER DE POSITION CURSEUR
  FB83 BF   EFA7             STX    >MEM7     BUFFER DE POSITION POUR UPDATE
  FB86 BF   EFA9             STX    >MEM9     BUFFER DE POSITION OFFSET
  FB89 86   00               LDA    #$00
  FB8B C6   0C               LDB    #$0C
  FB8D 8D   0D               BSR    UPDCRT
  FB8F 8D   0B               BSR    UPDCRT
  FB91 8D   09               BSR    UPDCRT
  FB93 8D   07               BSR    UPDCRT
  FB95 5C                    INCB
  FB96 5C                    INCB
  FB97 8D   03               BSR    UPDCRT
  FB99 8D   01               BSR    UPDCRT
  FB9B 39                    RTS
                     *******************************************************
                     * UPDATE LE REGISTRE CRT                              *
                     *******************************************************
  FB9C F7   F000     UPDCRT  STB    >FLGCU0
  FB9F B7   F001             STA    >FLGCU1
  FBA2 5C                    INCB
  FBA3 39                    RTS
                     *******************************************************
                     * RETOUR CHARIOT (CTRL M)                             *
                     *******************************************************
  FBA4 7F   EFAC             CLR    >CARACT
  FBA7 BD   FA58             JSR    >SOREC4
  FBAA 39                    RTS
                     *******************************************************
                     * FONCTION NON DOCUMENTEE (CTRL N) SHIFT OUT          *
                     ******************************************************* 
  FBAB B6   EFAC             LDA    >CARACT
  FBAE 4C                    INCA
  FBAF C6   20               LDB    #$20
  FBB1 F7   F200             STB    >DVIDEO
  FBB4 8D   0D       ZFBB4   BSR    ZFBC3
  FBB6 F6   F001             LDB    >FLGCU1
  FBB9 4C                    INCA
  FBBA B1   EF91             CMPA   >TBLCR2   NB CARACTERES PAR LIGNE
  FBBD 26   F5               BNE    ZFBB4
  FBBF BD   FA58             JSR    >SOREC4
  FBC2 39                    RTS
  FBC3 8D   05       ZFBC3   BSR    ZFBCA
  FBC5 C6   1F               LDB    #$1F      STOCKAGE DONNEE DANS LE DUMMY REGISTER
  FBC7 F7   F000             STB    >FLGCU0
                     * ATTENTE ACTUALISATION
  FBCA F6   F000     ZFBCA   LDB    >FLGCU0   LECTURE DU STATUS REGISTER DU CONTROLEUR
  FBCD C5   80               BITB   #$80      TEST DU BIT 7 UPDATE READY
  FBCF 27   F9               BEQ    ZFBCA
  FBD1 39                    RTS
                     *******************************************************
                     * FONCTION NON DOCUMENTEE (CTRL O) SHIFT IN           *
                     *******************************************************
  FBD2 B6   EFAC             LDA    >CARACT
  FBD5 C6   20               LDB    #$20
  FBD7 F7   F200             STB    >DVIDEO
  FBDA 8D   E7       ZFBDA   BSR    ZFBC3
  FBDC F6   F001             LDB    >FLGCU1
  FBDF 4C                    INCA
  FBE0 B1   EF91             CMPA   >TBLCR2   NB CARACTERES PAR LIGNE
  FBE3 26   F5               BNE    ZFBDA
  FBE5 B6   EFAB             LDA    >LIGN
  FBE8 4C                    INCA
  FBE9 B1   EF96             CMPA   >TBLCR3
  FBEC 27   17               BEQ    ZFC05
  FBEE 86   17               LDA    #$17
  FBF0 B0   EFAB             SUBA   >LIGN
  FBF3 F6   EF91             LDB    >TBLCR2
  FBF6 3D                    MUL
  FBF7 1F   01               TFR    D,X
  FBF9 8D   C8       ZFBF9   BSR    ZFBC3
  FBFB F6   F001             LDB    >FLGCU1
  FBFE 30   1F               LEAX   -$01,X
  FC00 26   F7               BNE    ZFBF9
  FC02 BD   FA58             JSR    >SOREC4
  FC05 39            ZFC05   RTS
                     *******************************************************
                     * POSITIONNE LE CURSEUR(CONTENU EFAB - EFAC)(CTRL R)  *
                     *******************************************************
  FC06 BD   FA58             JSR    >SOREC4
  FC09 39                    RTS
                     *******************************************************
                     * CURSEUR ON                                          *
                     *******************************************************
  FC0A 86   60               LDA    #$60
  FC0C 8D   03               BSR    ZFC11
  FC0E 39                    RTS
                     *******************************************************
                     * CURSEUR OFF                                         *
                     *******************************************************
  FC0F 86   20               LDA    #$20
  FC11 C6   0A       ZFC11   LDB    #$0A
  FC13 8D   87               BSR    UPDCRT
  FC15 39                    RTS
                     *******************************************************
                     * ACTIVE LE SCROLLING                                 *
                     ******************************************************* 
  FC16 86   01               LDA    #$01
  FC18 B7   EFA4             STA    >SCROLL
  FC1B 39                    RTS
                     *******************************************************
                     * DESACTIVE LE SCROLING                               *
                     *******************************************************
  FC1C 7F   EFA4             CLR    >SCROLL
  FC1F 39                    RTS
                     * HOME 
  FC20 7F   EFAB             CLR    >LIGN
  FC23 7F   EFAC             CLR    >CARACT
  FC26 BD   FA58             JSR    >SOREC4
  FC29 39                    RTS
                     *******************************************************
                     * INITIALISATION DES FONCTIONS DE BASES DU CONTROLEUR *
                     * DE DISQUETTES FD1791 / MB 8876                      *
                     ******************************************************* 
                     * INITIALISATION FLOPPY                               *
                     *******************************************************
  FC2A 8E   EF80     LECINI  LDX    #TRKBUF
  FC2D C6   D0               LDB    #$D0      %11010000
  FC2F F7   F600             STB    >STRCR    SAUVEGARDE DANS LE CONTROL REGISTER
                     * BIT7654=1101 FORCE INTERRUPT
                     * BIT3210=0 TERMINATE WITH NO INTERRUPT 
  FC32 C6   10               LDB    #$10
  FC34 6F   80       LECIN1  CLR    ,X+       INITIALISE LES 16 MEMOIRES $EF80 A $EF90
  FC36 5A                    DECB
  FC37 26   FB               BNE    LECIN1    LOOP
  FC39 C6   83               LDB    #$83      CHARGE LES SAUTS DE PISTES 20ms
  FC3B F7   EF88             STB    >VLECT0   MEMORISE POUR LECTEUR 0
  FC3E F7   EF89             STB    >VLECT1   MEMORISE POUR LECTEUR 
  FC41 86   FF               LDA    #$FF
  FC43 B7   F680             STA    >PIA1DA   PIA1 EN SORTIE
  FC46 86   04               LDA    #$04
  FC48 B7   F681             STA    >PIA1CA   SELECTIONNE CR
  FC4B 86   18               LDA    #$18
  FC4D B7   F680             STA    >PIA1DA   MOTEUR ON FACE 0, SD
  FC50 1A   10               ORCC   #$10      SET MASK IRQ
  FC52 BD   F8DB             JSR    >SHORL1   DESACTIVATION DES INTERRUPTIONS DE L'HORLOGE
  FC55 1C   EF               ANDCC  #$EF      CLEAR IRQ MASK
  FC57 86   0C               LDA    #$0C      INTERRUPTION TOUTES LES 60 SEC REPETITIVES
  FC59 B7   F64F             STA    >INTERH   APPLIQUE INT A L'HORLOGE TEMPO MOTEUR
  FC5C 86   02               LDA    #$02
  FC5E B7   EFB1             STA    >INDMOT   INDICATEUR MOTEUR FLOPPY
  FC61 C6   0B               LDB    #$0B      RESTORE COMMAND AVEC STEP RATE 30 MS
  FC63 F7   F600             STB    >STRCR    APPLIQUER RESTORE
  FC66 8E   0000             LDX    #$0000
  FC69 30   1F       LECIN2  LEAX   -$01,X    TEMPORISATION
  FC6B 26   FC               BNE    LECIN2
                     *******************************************************
                     * INITIALISATION FLOPPY A CHAUD                       *
                     *******************************************************
  FC6D 86   FF       HOTINI  LDA    #$FF
  FC6F B7   F680             STA    >PIA1DA   PIA1 EN SORTIE
  FC72 86   04               LDA    #$04
  FC74 B7   F681             STA    >PIA1CA   SELECTIONNE CR
  FC77 86   18               LDA    #$18
  FC79 B7   F680             STA    >PIA1DA   MOTEUR ON FACE 0
  FC7C 39                    RTS
                     *******************************************************
                     * DEMARRAGE DU MOTEUR                                 *
                     *******************************************************
  FC7D B6   F680     DEMOT   LDA    >PIA1DA   CHARGE REGISTRE DATA PIA LECTEUR
  FC80 85   08               BITA   #$08      TEST DU MOTEUR
  FC82 26   10               BNE    DEMOT1    MOTEUR EN MARCHE ?
  FC84 8A   08               ORA    #$08      NON, DEMARRE LE MOTEUR
  FC86 B7   F680             STA    >PIA1DA   APPLIQUE LA COMMANDE
  FC89 34   10               PSHS   X
  FC8B BE   EFB2             LDX    >DEMAND   CHARGE LA TEMPO DE DEMARRAGE DU MOTEUR
  FC8E 30   1F       DEMOT2  LEAX   -$01,X    INITIALISE LE COMPTEUR
  FC90 26   FC               BNE    DEMOT2
  FC92 35   10               PULS   X
  FC94 86   02       DEMOT1  LDA    #$02
  FC96 B7   EFB1             STA    >INDMOT   INDICATEUR MOTEUR FLOPPY 
  FC99 39                    RTS
                     *******************************************************
                     * FONCTIONS DE BASES DU CONTROLEUR DE DISQUETTES      *
                     *  FD1791 / MB 8876                                   *
                     ******************************************************* 
                     *******************************************************
                     * LECTURE SECTEUR                                     *
                     *******************************************************
  FC9A 1A   10       LECSEC  ORCC   #$10      SET MASK IRQ
  FC9C 8D   69               BSR    SEEK      SEEK SECTEUR A / PISTE B
 >FC9E BD   FCFE             JSR    >LECSE1   TEST DE SPOOLING? SWI3 SI BESOIN
  FCA1 8D   DA               BSR    DEMOT     DEMARRE MOTEUR
  FCA3 86   8C               LDA    #$8C      COMMANDE DE LECTURE SECTEUR (30MS DELAY)
  FCA5 B7   F600             STA    >STRCR    APPLIQUE LA COMMANDE
  FCA8 BD   FE40             JSR    >DELAY    DELAY EN FONCTION DE LA DENSITE
  FCAB 1F   B9               TFR    DP,B      SAUVE LE DP DANS B
  FCAD F7   EF8E             STB    >MEM3     PUIS B DANS MEM3
  FCB0 C6   F6               LDB    #$F6      CHARGE L'ADRESSE HAUTE DU CONTOLEUR
  FCB2 1F   9B               TFR    B,DP      DANS LE DP
  FCB4 D6   00       LECSE2  LDB    <$0000    POINTE SUR LE REGISTRE DE CONTROLE
  FCB6 C5   12               BITB   #$12      TEST SEEK ERROR ET DRQ
  FCB8 27   FA               BEQ    LECSE2    ATTENTE DONNEE PRESENTE
  FCBA 96   03       LECSE3  LDA    <$0003    CHARGE LA DONNEE
  FCBC A7   80               STA    ,X+       STOCKE EN MEMOIRE ET INCREMENTE
  FCBE D6   00       LECSE4  LDB    <$0000    POINTE SUR LE REGISTRE DE CONTROLE
  FCC0 C5   02               BITB   #$02      TEST DRQ
  FCC2 26   F6               BNE    LECSE3    OK DONNEE SUIVANTE
  FCC4 D6   00               LDB    <$0000    POINTE SUR LE REGISTRE DE CONTROLE
  FCC6 C5   02               BITB   #$02      TEST DRQ
  FCC8 26   F0               BNE    LECSE3    OK DONNEE SUIVANTE
  FCCA D6   00               LDB    <$0000    POINTE SUR LE REGISTRE DE CONTROLE
  FCCC C5   02               BITB   #$02      TEST DRQ
  FCCE 26   EA               BNE    LECSE3    OK DONNEE SUIVANTE
  FCD0 D6   00               LDB    <$0000    POINTE SUR LE REGISTRE DE CONTROLE
  FCD2 C5   02               BITB   #$02      TEST DRQ
  FCD4 26   E4               BNE    LECSE3    OK DONNEE SUIVANTE
  FCD6 D6   00               LDB    <$0000    POINTE SUR LE REGISTRE DE CONTROLE
  FCD8 C5   02               BITB   #$02      TEST DRQ
  FCDA 26   DE               BNE    LECSE3    OK DONNEE SUIVANTE
  FCDC C5   01               BITB   #$01      TEST BUSY
  FCDE 26   DE               BNE    LECSE4    OUI, TOUJOURS EN ATTENTE
  FCE0 8D   14               BSR    LECSE5    ATTENTE PLUS BUSY
  FCE2 C5   10               BITB   #$10      TEST CRC ERROR
  FCE4 27   06               BEQ    LECSE6    NON, PAS ERREUR, OK
  FCE6 96   80               LDA    <$0080    CHARGE REGISTRE DATA PIA LECTEUR
  FCE8 88   10               EORA   #$10      INVERSE LA DENSITE
  FCEA 97   80               STA    <$0080    STOCKE REGISTRE DATA PIA LECTEUR
  FCEC B6   EF8E     LECSE6  LDA    >MEM3     REPREND DP
  FCEF 1F   8B               TFR    A,DP      REPLACE DP
  FCF1 C5   1C               BITB   #$1C      TEST SI ERREUR CRC? NOT FOUND OU DATA LOST
  FCF3 1C   EF               ANDCC  #$EF      EFFACE BIT ENTIER DU CC
  FCF5 39                    RTS
  FCF6 F6   F600     LECSE5  LDB    >STRCR    ATTENTE PLUS BUSY
  FCF9 C5   01               BITB   #$01      TEST BUSY
  FCFB 26   F9               BNE    LECSE5    ATTENTE
  FCFD 39                    RTS
  FCFE 7D   CC34     LECSE1  TST    >ZCC34    TEST SI SPOOLING ACTIF ?
  FD01 27   03               BEQ    ZFD06     NON, SAUTE
  FD03 113F                  SWI3             INTERRUPTION SPOOLING
  FD05 12                    NOP
  FD06 39            ZFD06   RTS              RETOUR
                     *******************************************************
                     * SEEK SECTEUR CONTENU DANS A ET PISTE CONTENUE DANS B*
                     *******************************************************
  FD07 F7   F602     SEEK    STB    >SCR      COPIE B DANS LE REGISTRE DE PISTE
  FD0A 34   04               PSHS   B         SAUVEGARDE B DANS LA PILE
  FD0C F6   F680             LDB    >PIA1DA   CHARGE LE REGISTRE PIA DU FLOPPY
  FD0F C4   10               ANDB   #$10      TEST DU BIT DE DOUBLE DENSITE
  FD11 26   09               BNE    SEEK1     SAUT SI SD
                     * DOUBLE DENSITE
  FD13 35   04               PULS   B         REPRISE DE B
  FD15 F1   EFB7             CMPB   >NSECT2   COMPARE AU NB DE SECTEUR PAR FACE EN DD
  FD18 23   13               BLS    SEEK2     OK FACE 0
  FD1A 20   07               BRA    SEEK3     FACE 2
                     * SIMPLE DENSITE
  FD1C 35   04       SEEK1   PULS   B         REPRISE DE B
  FD1E F1   EFB6             CMPB   >NSECT1
  FD21 23   0A               BLS    SEEK2
  FD23 F6   F680     SEEK3   LDB    >PIA1DA   CHARGE LE REGISTRE PIA DU FLOPPY
  FD26 CA   04               ORB    #$04      ACTIVE LA FACE 1
  FD28 F7   F680             STB    >PIA1DA   APPLIQUE LA COMMANDE
  FD2B 20   08               BRA    SEEK4
  FD2D F6   F680     SEEK2   LDB    >PIA1DA   CHARGE LE REGISTRE PIA DU FLOPPY
  FD30 C4   FB               ANDB   #$FB      ACTIVE LA FACE 0
  FD32 F7   F680             STB    >PIA1DA   APPLIQUE LA COMMANDE
  FD35 C6   96       SEEK4   LDB    #$96      CHARGE UNE TEMPO
  FD37 5A            SEEK5   DECB
  FD38 26   FD               BNE    SEEK5
  FD3A 5F                    CLRB
  FD3B 34   10               PSHS   X         SAUVE X DANS LA PILE
  FD3D B7   F603             STA    >DR       STOCKE LE SECTEUR DANS LE REGITRE 
  FD40 BD   FE40             JSR    >DELAY
  FD43 86   1B               LDA    #$1B      COMMANDE DE SEEK SECTEUR 
  FD45 F6   EF8C     SEEK6   LDB    >ACTDRV   CHARGE LE LECTEUR ACTIF
  FD48 8E   EF88             LDX    #VLECT0
  FD4B 3A                    ABX              CALCULE LE LECTEUR ACTIF
  FD4C E6   84               LDB    ,X        CHARGE LE SAUT DE PISTE DU LECTEUR ACTIF
  FD4E CA   FC               ORB    #$FC      CONSTRUIT LE MASQUE DE SAUT DE PISTE
  FD50 F7   EF8D             STB    >MEM2     MEMORISE LE MASQUE DE SAUT DE PISTE
  FD53 B4   EF8D             ANDA   >MEM2     CONSTRUIT LA COMMANDE SEEK AVEC SAUT DE PISTE
  FD56 B7   F600             STA    >STRCR    APPLIQUE LA COMMANDE
  FD59 BD   FE40             JSR    >DELAY
  FD5C 35   10               PULS   X         RECUPERE X
  FD5E 8D   96               BSR    LECSE5    ATTENTE PLUS BUSY
  FD60 C4   40               ANDB   #$40      TEST DU BIT WRITE PROTECT
  FD62 39                    RTS
                     ******************************************************* 
                     * ECRITURE D'UN SECTEUR                               *
                     *******************************************************
  FD63 1A   10       ECRSEC  ORCC   #$10      SET MASK IRQ
  FD65 8D   A0               BSR    SEEK      SEEK SECTEUR A / PISTE B
  FD67 26   56               BNE    ECRSE1    SAUTE SI ERREUR
  FD69 8D   93               BSR    LECSE1    TEST DE SPOOLING? SWI3 SI BESOIN
  FD6B BD   FC7D             JSR    >DEMOT    DEMARRE MOTEUR
  FD6E 86   AC               LDA    #$AC      COMMANDE DE ECRITURE SECTEUR (30MS DELAY)
  FD70 B7   F600             STA    >STRCR    APPLIQUE LA COMMANDE
  FD73 BD   FE40             JSR    >DELAY    DELAY EN FONCTION DE LA DENSITE
  FD76 1F   B9               TFR    DP,B      SAUVE LE DP DANS B
  FD78 F7   EF8E             STB    >MEM3     PUIS B DANS MEM3
  FD7B C6   F6               LDB    #$F6      CHARGE L'ADRESSE HAUTE DU CONTOLEUR
  FD7D 1F   9B               TFR    B,DP      DANS LE DP
  FD7F A6   80               LDA    ,X+       LIT LA MEMOIRE ET INCREMENTE
  FD81 D6   00       ECRSE2  LDB    <$0000    POINTE SUR LE REGISTRE DE CONTROLE
  FD83 C5   12               BITB   #$12      TEST SEEK ERROR ET DRQ
  FD85 27   FA               BEQ    ECRSE2    ATTENTE DONNEE A ECRIRE
  FD87 97   03       ECRSE3  STA    <$0003    ECRITLA DONNEE
  FD89 A6   80               LDA    ,X+       CHARGE LA DONNEE SUIVANTE
  FD8B D6   00       ECRSE4  LDB    <$0000    POINTE SUR LE REGISTRE DE CONTROLE
  FD8D C5   02               BITB   #$02      TEST DRQ
  FD8F 26   F6               BNE    ECRSE3
  FD91 D6   00               LDB    <$0000    POINTE SUR LE REGISTRE DE CONTROLE
  FD93 C5   02               BITB   #$02      TEST DRQ
  FD95 26   F0               BNE    ECRSE3    OK DONNEE SUIVANTE
  FD97 D6   00               LDB    <$0000    POINTE SUR LE REGISTRE DE CONTROLE
  FD99 C5   02               BITB   #$02      TEST DRQ
  FD9B 26   EA               BNE    ECRSE3    OK DONNEE SUIVANTE
  FD9D D6   00               LDB    <$0000    POINTE SUR LE REGISTRE DE CONTROLE
  FD9F C5   02               BITB   #$02      TEST DRQ
  FDA1 26   E4               BNE    ECRSE3    OK DONNEE SUIVANTE
  FDA3 D6   00               LDB    <$0000    POINTE SUR LE REGISTRE DE CONTROLE
  FDA5 C5   02               BITB   #$02      TEST DRQ
  FDA7 26   DE               BNE    ECRSE3    OK DONNEE SUIVANTE
  FDA9 C5   01               BITB   #$01      TEST BUSY
  FDAB 26   DE               BNE    ECRSE4    OUI, TOUJOURS EN ATTENTE
  FDAD 17   FF46             LBSR   LECSE5    NON, PAS ERREUR, OK
  FDB0 C5   10               BITB   #$10      TEST SI ERREUR NOT FOUND 
  FDB2 27   06               BEQ    ECRSE5    NON, PAS ERREUR, OK
  FDB4 96   80               LDA    <$0080    CHARGE REGISTRE DATA PIA LECTEUR
  FDB6 88   10               EORA   #$10      INVERSE LA DENSITE
  FDB8 97   80               STA    <$0080    STOCKE REGISTRE DATA PIA LECTEUR
  FDBA B6   EF8E     ECRSE5  LDA    >MEM3     REPREND DP
  FDBD 1F   8B               TFR    A,DP      REPLACE DP
  FDBF C5   5C       ECRSE1  BITB   #$5C      TEST SI ERREUR OU WRITE PROTECT
  FDC1 1C   EF               ANDCC  #$EF      EFFACE BIT ENTIER DU CC
  FDC3 39                    RTS
                     *******************************************************
                     * VERIFICATION D'UN SECTEUR                           *
                     *******************************************************
  FDC4 1A   10       VERSEC  ORCC   #$10      SET MASK IRQ
  FDC6 BD   FCFE             JSR    >LECSE1   TEST DE SPOOLING? SWI3 SI BESOIN
  FDC9 86   8C               LDA    #$8C      COMMANDE DE LECTURE SECTEUR (30MS DELAY)
  FDCB B7   F600             STA    >STRCR    APPLIQUE LA COMMANDE
  FDCE 8D   70               BSR    DELAY     DELAY EN FONCTION DE LA DENSITE
  FDD0 BD   FCF6             JSR    >LECSE5   ATTENTE PLUS BUSY
  FDD3 1C   EF               ANDCC  #$EF      EFFACE BIT ENTIER DU CC
  FDD5 C5   58               BITB   #$58      TEST WRITE PROTECT, ERREUR CRC ET SEEK ERREUR
  FDD7 39                    RTS
                     *******************************************************
                     * RESTORE PISTE 0                                     *
                     *******************************************************
  FDD8 34   10       PIST0   PSHS   X         SAUVE X DANS LA PILE
  FDDA 8D   0C               BSR    SELECT    SELECTIONNE LE LECTEUR ACTIF
  FDDC 8D   5A               BSR    RESTO1    CALCULE LA PISTE ACTIVE
  FDDE 6F   84               CLR    ,X        MET LA MEMOIRE DE PISTE ACTIVE A ZERO
  FDE0 86   0B               LDA    #$0B      COMMANDE DE RESTORE
  FDE2 B7   F600             STA    >STRCR    APPLIQUE LA COMMANDE
  FDE5 7E   FD45             JMP    >SEEK6
                     *******************************************************
                     * SELECTION DU LECTEUR                                *
                     *******************************************************
  FDE8 A6   03       SELECT  LDA    $03,X     CHARGE LE NUMERO DE LECTEUR DANS LE FCB
  FDEA 81   03               CMPA   #$03      SUPERIEUR A 3 ?
  FDEC 23   05               BLS    SELEC1    NON, DRIVE OK
  FDEE C6   0F       SELEC3  LDB    #$0F
  FDF0 1A   01               ORCC   #$01
  FDF2 39                    RTS
  FDF3 8E   EF88     SELEC1  LDX    #VLECT0
  FDF6 30   86               LEAX   A,X       CALCULE LE SAUT DE PISTE DU LECTEUR ACTIF 
  FDF8 E6   84               LDB    ,X        CHARGE LE SAUT DE PISTE APPLICABLE
  FDFA C4   80               ANDB   #$80      TEST SI PRESENT
  FDFC 27   F0               BEQ    SELEC3    LECTEUR NON CONNECTE
  FDFE 8D   38               BSR    RESTO1    CALCUL PISTE ACTIVE DU LECTEUR ACTIF 
  FE00 F6   F601             LDB    >TR       PREND LA PISTE ACTIVE DANS LE CONTROLEUR
  FE03 E7   84               STB    ,X        SAUVEGARDE LA PISTE ACTIVE
  FE05 B7   EF8C             STA    >ACTDRV   SAUVEGARDE LE LECTEUR ACTIF
  FE08 B6   F680             LDA    >PIA1DA   CHARGE LE REGISTRE PIA DU FLOPPY
  FE0B 84   FC               ANDA   #$FC      EFFACE LE LECTEUR ACTIF
  FE0D BA   EF8C             ORA    >ACTDRV   APPLIQUE LE NOUVEAU LECTEUR ACTIF
  FE10 B7   F680             STA    >PIA1DA   APPLIQUE LA COMMANDE
  FE13 8D   23               BSR    RESTO1    CALCUL PISTE ACTIVE DU LECTEUR ACTIF 
  FE15 A6   84               LDA    ,X        PREND LA PISTE ACTIVE EN MEMOIRE
  FE17 B7   F601             STA    >TR       ET LA DONNE AU CONTROLEUR
  FE1A 8D   24               BSR    DELAY
  FE1C 20   16               BRA    SELEC4    TERMINE
                     *******************************************************
                     * TEST READY                                          *
                     *******************************************************
  FE1E A6   03       TETRDY  LDA    $03,X     HARGE LE NUMERO DE LECTEUR DANS LE FCB
  FE20 34   10               PSHS   X         SAUVE X DANS LA PILE
  FE22 8E   EF88             LDX    #VLECT0
  FE25 30   86               LEAX   A,X       CALCULE LE SAUT DE PISTE DU LECTEUR ACTIF
  FE27 E6   84               LDB    ,X        CHARGE LE SAUT DE PISTE APPLICABLE
  FE29 35   10               PULS   X         REMET x 
  FE2B C4   80               ANDB   #$80      TEST SI LECTEUR PRESENT
  FE2D 26   05               BNE    SELEC4    OK, LECTEUR PRESENT
  FE2F C6   80               LDB    #$80      CODE ERREUR
  FE31 1A   01               ORCC   #$01      MET LA CARRY A 1
  FE33 39                    RTS
  FE34 5F            SELEC4  CLRB             OK, DRIVE READY
  FE35 1C   FE               ANDCC  #$FE      EFFACE LA CARRY
  FE37 39                    RTS
                     *******************************************************
                     * CALCUL PISTE ACTIVE DU LECTEUR ACTIF                *
                     *******************************************************
  FE38 8E   EF80     RESTO1  LDX    #TRKBUF   CHARGE L'ORIGINE DU BUFFER
  FE3B F6   EF8C             LDB    >ACTDRV   CHARGE LE NUMERO DE DRIVE ACTIF
  FE3E 3A                    ABX              CALCULE LA POSITION DE MEMOIRE DE PISTE
  FE3F 39                    RTS
                     *******************************************************
                     * DELAY DE 2 OU 6 BOUCLES EN FONCTION DE LA DENSITE   *
                     *******************************************************
  FE40 F6   F680     DELAY   LDB    >PIA1DA   CHARGE LE REGISTRE PIA DU FLOPPY
  FE43 C5   10               BITB   #$10      TEST DU BIT DE DOUBLE DENSITE
  FE45 26   04               BNE    DELA1     SI SIMPLE DENSITE
  FE47 C6   02               LDB    #$02      SI DOUBLE DENSITE, DELAY DE 2 BOUCLES
  FE49 20   02               BRA    DELA2     SAUTE
  FE4B C6   06       DELA1   LDB    #$06      SI SIMPLE DENDITE, DELAY DE 6 BOUCLES
  FE4D 5A            DELA2   DECB             DECREMENTE
  FE4E 26   FD               BNE    DELA2     BOUCLE
  FE50 39                    RTS
                     *******************************************************
                     * SOUS PROGRAMME GENERE PAR UNE INTERRUPTION IRQ      *
                     *  RELIEE AU TIMER ET AU CLAVIER                      *
                     *******************************************************  
  FE51 B6   F683     IRQVEC  LDA    >PIA1CB   CHARGE LE REGISTRE DE CONTROL PIA CLAVIER
  FE54 85   40               BITA   #$40      TEST LE FLAG IRQ
  FE56 27   1D               BEQ    IRQVE1    IRQ EN PLROVENANCE DU CLAVIER ?
                     * OUI, IRQ EN PLROVENANCE DU CLAVIER
                     * C'EST LA TEMPO DE MARCHE DU MOTEUR DU FLOPPY
  FE58 B6   F682             LDA    >PIA1DB   CHARGE LE CARACTERE EN ATTENTE
  FE5B 1A   10               ORCC   #$10      MASQUE LE BIT 8
  FE5D BD   F8DB             JSR    >SHORL1   DESACTIVATION DES INTERRUPTIONS DE L'HORLOGE
  FE60 1C   EF               ANDCC  #$EF      EFFACE LA CONDITION DE RETOUR D'IRQ DU CC
  FE62 86   0C               LDA    #$0C
  FE64 B7   F64F             STA    >INTERH   RECHARGE LA DEMANDE D'INTERRUPTION A 60SEC
  FE67 7A   EFB1             DEC    >INDMOT   DECREMENTE LA MEMOIRE DE MOTEUR DE FLOPPY
  FE6A 26   08               BNE    IRQVE2    TERMINE
  FE6C B6   F680             LDA    >PIA1DA   CHARGE LE REGISTRE DU PIA FLOPPY
  FE6F 84   F7               ANDA   #$F7      ARRET DU MOTEUR
  FE71 B7   F680             STA    >PIA1DA   APPLIQUE LA COMMANDE
  FE74 3B            IRQVE2  RTI              TERMINE
                     * IRQ NE VIENT PAS DU CLAVIER
  FE75 B6   F6C9     IRQVE1  LDA    >TMRCR2   CHARGE LE REGISTRE DE CONTROL DU TIMER
  FE78 85   80               BITA   #$80      LRQ MASQUEE ?
  FE7A 27   06               BEQ    IRQVE3    OUI, PAS D'IRQ SPOOLING
  FE7C BE   F6CA             LDX    >TMRT1L   REINITIALISE LE COMPTEUR
  FE7F 7E   C700             JMP    >ASPOOL   TRANSFER AU SP DE SPOOLING
  FE82 6E   9F EFF4  IRQVE3  JMP    [IRQFLX]VOIR LES IRQ FLEX
                     *******************************************************
                     * REDIRECTION VERS LE SP IRQ UTILISATEUR              *
                     *  ADRESSE $EFF2  INITIALISE A RTI                    *
                     ******************************************************* 
  FE86 6E   9F EFF2  CTRIRQ  JMP    [IRQUTI]  SAUTE VERS UNE ROUTINE IRQ UTILISATEUR
                     *******************************************************
                     *   CONTROLE DE TIMER QUI GENERE LES INTERRUPTION     *
                     *   POUR LE SPOOLING                                  *
                     ******************************************************* 
                     * ARRET TIMER                                         *
                     *******************************************************
  FE8A 86   00       TMROFF  LDA    #$00
  FE8C B7   F6C8             STA    >TMRCR1   ARRET DES INTERRUPTION
  FE8F 39                    RTS
                     *******************************************************
                     * DEMARRAGE TIMER                                     *
                     *******************************************************
  FE90 86   40       TMRON   LDA    #$40      AUTORISE L'INTERRUPTION PAR IRQ
  FE92 B7   F6C8             STA    >TMRCR1   APPLIQUE LA COMMANDE
  FE95 BE   EFB4             LDX    >VSPOOL   INIT A $2710 + 10000 NS
  FE98 BF   F6CA             STX    >TMRT1L   APPLIQUE LA COMMANDE
  FE9B 39                    RTS
  FE9C 39            TMRINIT RTS              TIMER INIT AU DEMARRAGE DU SYSTEME
                     *******************************************************
                     * $FE9D : COMMANDE MONITEUR "D"                       *
                     * POINT DE DEMARRAGE DU FLEX A FROID                  *
                     *******************************************************
  FE9D BD   FC2A             JSR    >LECINI   INITIALISATION DU LECTEUR
  FEA0 8E   EF89             LDX    #VLECT1   CHARGEMENT DU TIMING DE SAUT DE PISTE 
  FEA3 BD   FDD8             JSR    >PIST0    SE POSITIONNE EN PISTE 0
  FEA6 8E   0000             LDX    #$0000    BOUCLE D'ATTENTE
  FEA9 30   1F       MOND1   LEAX   -$01,X
  FEAB 26   FC               BNE    MOND1
  FEAD F6   F600     MOND2   LDB    >STRCR    CHARGE LE CR DU CONTROLEUR DE FLOPPY
  FEB0 C5   01               BITB   #$01      TEST LE BIT 1 BUSY
  FEB2 26   F9               BNE    MOND2     BOUCLE TANT QUE BUSY
  FEB4 86   00               LDA    #$00      PISTE 0
  FEB6 C6   01               LDB    #$01      SECTEUR 1
  FEB8 8E   C100             LDX    #ADCMD    ADRESSE COMMANDE FLEX
  FEBB BD   FC9A             JSR    >LECSEC   LECTURE DU SECTEUR
  FEBE 7E   C100             JMP    >ADCMD    SAUT POUR EXECUTION DU BOOT LOADER
                     *******************************************************
                     * $FEC1 : COMMANDE MONITEUR "G"                       *
                     * LANCEMENT DU PROGRAMME A L'ADRESSE INDIQUEE         *
                     *******************************************************
  FEC1 8D   49               BSR    BADDR     CHARGE UNE ADRESSE AU CLAVIER
  FEC3 29   02               BVS    MONG1     TEST SI ERREUR OVERFLOW
  FEC5 AD   84               JSR    ,X        NON, GO A L'ADRESSE
  FEC7 39            MONG1   RTS
                     *******************************************************
                     * $FEC8 : COMMANDE MONITEUR "M"                       *
                     * MODIFIE UNE CASE MEMOIRE                            *
                     *******************************************************
  FEC8 8D   42               BSR    BADDR     CHARGE UNE ADRESSE AU CLAVIER 
  FECA 28   01               BVC    MONM1     TEST SI ERREUR OVERFLOW
  FECC 39                    RTS
  FECD 86   20       MONM1   LDA    #$20      CARACTERE ESPACE
  FECF BD   FA19             JSR    >SORECR   SORT UN ESPACE A L'ECRAN
  FED2 A6   84               LDA    ,X        CHARGE DANS A LE CONTENU DU REGISTRE POINTE PAR X
 >FED4 BD   FF56             JSR    >MONM2    AFFICHE A A L'ACRAN
  FED7 86   20               LDA    #$20      CARACTERE ESPACE
  FED9 BD   FA19             JSR    >SORECR   SORT UN ESPACE A L'ECRAN
  FEDC 8D   3F               BSR    BADDR1    LECTURE UN NOMBRE EXA 8 BITS
  FEDE 28   19               BVC    MONM5     SAUTE SI PAS ERREUR OVERFLOW
  FEE0 81   5E               CMPA   #$5E      COMPARE A FLECHE VERS LE HAUT
  FEE2 26   08               BNE    MONM6     NON, SAUTE
  FEE4 30   1F               LEAX   -$01,X    REMONTE LE POINTEUR
  FEE6 8D   19               BSR    MONMA     LINE FEED
  FEE8 8D   64               BSR    MONM9     AFFICHE NOUVELLE ADRESSE
  FEEA 20   E1               BRA    MONM1
  FEEC 81   0A       MONM6   CMPA   #$0A      COMPARE A RETOUR CHARIOT
  FEEE 26   08               BNE    MONM7     NON, SAUTE
  FEF0 30   01               LEAX   $01,X     AVANCE LE POINTEUR
  FEF2 8D   12               BSR    MONM8     SAUTE UNE LIGNE
  FEF4 8D   58               BSR    MONM9     AFFICHE NOUVELLE ADRESSE
  FEF6 20   D5               BRA    MONM1     RECOMMENCE
  FEF8 39            MONM7   RTS
  FEF9 A7   80       MONM5   STA    ,X+       MODIFIE LA CASE MEMOIRE POINTEE
  FEFB 8D   04               BSR    MONMA     LINE FEED
  FEFD 8D   4F               BSR    MONM9     AFFICHE NOUVELLE ADRESSE
  FEFF 20   CC               BRA    MONM1     RECOMMENCE
  FF01 86   0A       MONMA   LDA    #$0A      LINE FEED
  FF03 BD   FA19             JSR    >SORECR
  FF06 86   0D       MONM8   LDA    #$0D      RETOUR CHARIOT
  FF08 BD   FA19             JSR    >SORECR
  FF0B 39                    RTS
                     *******************************************************
                     * SOUS PROGRAMME LECTURE ADRESSE 16 BITS HEXA         *
                     *******************************************************
  FF0C 8D   0F       BADDR   BSR    BADDR1    LECTURE 2 CARACTERES HEXA
  FF0E 29   3B               BVS    BADDR3    RETOUR SANS RIEN FAIRE SI ERREUR
  FF10 1F   01               TFR    D,X       CHARGE DANS X
  FF12 8D   09               BSR    BADDR1    LECTURE 2 CARACTERES HEXA
  FF14 29   35               BVS    BADDR3    RETOUR SANS RIEN FAIRE SI ERREUR
  FF16 34   10               PSHS   X
  FF18 A7   61               STA    $01,S
  FF1A 35   10               PULS   X         REPREND LE RESULTAT DANS X
  FF1C 39                    RTS
  FF1D 8D   11       BADDR1  BSR    BADDR2    LECTURE 1 CARACTERE HEXA
  FF1F 29   2A               BVS    BADDR3    RETOUR SANS RIEN FAIRE SI ERREUR
  FF21 48                    ASLA             DECALE
  FF22 48                    ASLA             4
  FF23 48                    ASLA             FOIS
  FF24 48                    ASLA
  FF25 1F   89               TFR    A,B       TRANSFERE DANS B
  FF27 8D   07               BSR    BADDR2    LECTURE 1 CARACTERE HEXA
  FF29 29   20               BVS    BADDR3    RETOUR SANS RIEN FAIRE SI ERREUR
  FF2B 34   04               PSHS   B         SAUVE B DANS LA PILE
  FF2D AB   E0               ADDA   ,S+       Y AJOUTE A POUR OBTENIR UN NOMBRE 8 BITS
  FF2F 39                    RTS
  FF30 BD   FA17     BADDR2  JSR    >CLAV1    LECTURE CLAVIER
  FF33 81   30               CMPA   #$30      COMPARE A "0"
  FF35 25   14               BCS    BADDR3    TROP PETIT
  FF37 81   39               CMPA   #$39      COMPARE A "9"
  FF39 22   03               BHI    BADDR4    PLUS GRAND
  FF3B 80   30               SUBA   #$30      RETIRE $30 DONNE CODE VALEUR
  FF3D 39                    RTS
  FF3E 84   5F       BADDR4  ANDA   #$5F      MASQUE LES BITS 7 ET 8
  FF40 81   41               CMPA   #$41      COMPARE A "A"
  FF42 25   07               BCS    BADDR3    TROP PETIT
  FF44 81   46               CMPA   #$46      COMPARE A "F"
  FF46 22   03               BHI    BADDR3    TROP GRAND
  FF48 80   37               SUBA   #$37      RETIRE $37 DONNE VALEUR
  FF4A 39                    RTS
  FF4B 1A   02       BADDR3  ORCC   #$02      CODE OVERFLOW
  FF4D 39                    RTS
                     *******************************************************
                     * SOUS PROGRAMME ECRITURE ADRESSE 16 BITS HEXA        *
                     *******************************************************
  FF4E 34   10       MONM9   PSHS   X
  FF50 35   02               PULS   A
  FF52 8D   02               BSR    MONM2
  FF54 35   02               PULS   A
  FF56 34   02       MONM2   PSHS   A         SAUVE A
  FF58 44                    LSRA             PREND LES
  FF59 44                    LSRA             4
  FF5A 44                    LSRA             BITS DE GAUCHE
  FF5B 44                    LSRA
  FF5C 8D   04               BSR    MONM3     SORT A L'ECRAN 1ER CARACTERE
  FF5E 35   02               PULS   A         REPREND A
  FF60 84   0F               ANDA   #$0F      PREND LES 4 BITS DE DROITE
  FF62 8B   30       MONM3   ADDA   #$30      AJOUTE $30 POUR CODE ASCII
  FF64 81   39               CMPA   #$39      COMPARE A "9"
  FF66 2F   02               BLE    MONM4     OK, ON PEUT IMPRIMER
  FF68 8B   07               ADDA   #$07      AJOUTE 7
  FF6A 7E   FA19     MONM4   JMP    >SORECR
  FF6D 6E   9F EFF6  SWI3VE  JMP    [SWI3]
  FF71 6E   9F EFF8  SWI2VE  JMP    [SWI2]
  FF75 6E   9F EFFA  SWIVEC  JMP    [SWI]
  FF79 6E   9F EFFC  NMIVEC  JMP    [NMI]
  FF7D 6E   9F EFFE  FIRQVE  JMP    [FIRQ]
                     *******************************************************
                     * INITIALISATION DES INTERRUPTIONS SYSTEME            *
                     *******************************************************
                     * TOUTES LES INTERRUPTIONS SONT INITIALISEES          *
                     * SUR LE MEME VECTEUR $FE74SUR UN RTI                 *
                     *******************************************************
  FF81 8E   FE74     INITIRQ LDX    #IRQVE2   CHARGEMENT DU VECTEUR
  FF84 BF   EFF2             STX    >IRQUTI
  FF87 BF   EFF4             STX    >IRQFLX
  FF8A BF   EFF6             STX    >SWI3
  FF8D BF   EFF8             STX    >SWI2
  FF90 BF   EFFA             STX    >SWI
  FF93 BF   EFFC             STX    >NMI
  FF96 BF   EFFE             STX    >FIRQ
  FF99 39                    RTS
  FF9A 00   00               NEG    <$0000
  FF9C 00   00               NEG    <$0000
  FF9E 00   00               NEG    <$0000
  FFA0 00   00               NEG    <$0000
  FFA2 00   00               NEG    <$0000
  FFA4 00   00               NEG    <$0000
  FFA6 00   00               NEG    <$0000
  FFA8 00   00               NEG    <$0000
  FFAA 00   00               NEG    <$0000
  FFAC 00   00               NEG    <$0000
  FFAE 00   00               NEG    <$0000
  FFB0 00   00               NEG    <$0000
  FFB2 00   00               NEG    <$0000
  FFB4 00   00               NEG    <$0000
  FFB6 00   00               NEG    <$0000
  FFB8 00   00               NEG    <$0000
  FFBA 00   00               NEG    <$0000
  FFBC 00   00               NEG    <$0000
  FFBE 00   00               NEG    <$0000
  FFC0 00   00               NEG    <$0000
  FFC2 00   00               NEG    <$0000
  FFC4 00   00               NEG    <$0000
  FFC6 00   00               NEG    <$0000
  FFC8 00   00               NEG    <$0000
  FFCA 00   00               NEG    <$0000
  FFCC 00   00               NEG    <$0000
  FFCE 00   00               NEG    <$0000
  FFD0 00   00               NEG    <$0000
  FFD2 00   00               NEG    <$0000
  FFD4 00   00               NEG    <$0000
  FFD6 00   00               NEG    <$0000
  FFD8 00   00               NEG    <$0000
  FFDA 00   00               NEG    <$0000
  FFDC 00   00               NEG    <$0000
  FFDE 00   00               NEG    <$0000
  FFE0 00   00               NEG    <$0000
  FFE2 00   00               NEG    <$0000
  FFE4 00   00               NEG    <$0000
  FFE6 00   00               NEG    <$0000
  FFE8 00   00               NEG    <$0000
  FFEA 00   00               NEG    <$0000
  FFEC 00   00               NEG    <$0000
  FFEE 00   00               NEG    <$0000
  FFF0 00   00               NEG    <$0000
                     *******************************************************
                     * VECTEURS D'INTERRUPTION HARDWARE                    *
                     *******************************************************
  FFF2 FF6D                  FDB    SWI3VE
  FFF4 FF71                  FDB    SWI2VE
  FFF6 FF7D                  FDB    FIRQVE
  FFF8 FE51                  FDB    IRQVEC
  FFFA FF75                  FDB    SWIVEC
  FFFC FF79                  FDB    NMIVEC
  FFFE F8E8                  FDB    START
                     *******************************************************
                             END    HOTMON

0 ERROR(S) DETECTED

SYMBOL TABLE:

ACTDR0 EFAA   ACTDR2 EFB8   ACTDRV EF8C   ADCMD  C100   ASPOOL C700   
BADDR  FF0C   BADDR1 FF1D   BADDR2 FF30   BADDR3 FF4B   BADDR4 FF3E   
CARACT EFAC   CLAV1  FA17   CLAV2  FA03   CTRIRQ FE86   DELA1  FE4B   
DELA2  FE4D   DELAY  FE40   DEMAND EFB2   DEMOT  FC7D   DEMOT1 FC94   
DEMOT2 FC8E   DR     F603   DVIDEO F200   ECRSE1 FDBF   ECRSE2 FD81   
ECRSE3 FD87   ECRSE4 FD8B   ECRSE5 FDBA   ECRSEC FD63   ETOILE F980   
FIRQ   EFFE   FIRQVE FF7D   FLGCU0 F000   FLGCU1 F001   HORLO  F640   
HORMA  F64E   HOTDOS CD03   HOTINI FC6D   HOTMO2 F92D   HOTMO3 F930   
HOTMO4 F946   HOTMO5 F951   HOTMO6 F956   HOTMON F800   INDMOT EFB1   
INIES  F9B8   INITIR FF81   INTERH F64F   IPIA2A F884   IRQFLX EFF4   
IRQUTI EFF2   IRQVE1 FE75   IRQVE2 FE74   IRQVE3 FE82   IRQVEC FE51   
JUMP1  FA2C   JUMP2  FA2E   KEYCOD F984   LECIN1 FC34   LECIN2 FC69   
LECINI FC2A   LECSE1 FCFE   LECSE2 FCB4   LECSE3 FCBA   LECSE4 FCBE   
LECSE5 FCF6   LECSE6 FCEC   LECSEC FC9A   LIGN   EFAB   LOOP1  F919   
LOOP3  F902   LOOP4  F90B   MEM2   EF8D   MEM3   EF8E   MEM5   EFA5   
MEM6   EFA6   MEM7   EFA7   MEM8   EFA8   MEM9   EFA9   MEMEND CC2B   
MOND1  FEA9   MOND2  FEAD   MONG1  FEC7   MONM1  FECD   MONM2  FF56   
MONM3  FF62   MONM4  FF6A   MONM5  FEF9   MONM6  FEEC   MONM7  FEF8   
MONM8  FF06   MONM9  FF4E   MONMA  FF01   NMI    EFFC   NMIVEC FF79   
NSECT1 EFB6   NSECT2 EFB7   PIA1CA F681   PIA1CB F683   PIA1DA F680   
PIA1DB F682   PIA2CA F6D1   PIA2DA F6D0   PIST0  FDD8   PSTRN1 FB14   
PSTRNG FB09   RESTO1 FE38   SCR    F602   SCROLL EFA4   SEEK   FD07   
SEEK1  FD1C   SEEK2  FD2D   SEEK3  FD23   SEEK4  FD35   SEEK5  FD37   
SEEK6  FD45   SELEC1 FDF3   SELEC3 FDEE   SELEC4 FE34   SELECT FDE8   
SHORL1 F8DB   SOREC1 FA2F   SOREC2 FA3A   SOREC3 FA49   SOREC4 FA58   
SOREC5 FA82   SORECR FA19   SOUND  EFAD   STACKS EF7F   START  F8E8   
STRCR  F600   SWI    EFFA   SWI2   EFF8   SWI2VE FF71   SWI3   EFF6   
SWI3VE FF6D   SWIVEC FF75   TABLE1 F990   TABLE2 ED80   TABLE3 EE80   
TABLE5 F844   TBLCR2 EF91   TBLCR3 EF96   TBLCRT EF90   TETRDY FE1E   
TEXTE1 F95D   TMRCR1 F6C8   TMRCR2 F6C9   TMRINI FE9C   TMROFF FE8A   
TMRON  FE90   TMRT1L F6CA   TMRT2L F6CC   TMRT3L F6CE   TR     F601   
TRKBUF EF80   TSCRO1 FAA6   TSCRO2 FAA7   TSCRO3 FACE   TSCROL FA94   
TSOUND EFAF   TSTCLA F9F9   TSTMA1 F8B3   TSTMA2 F8A7   TSTMA3 F8C2   
TSTMA4 F8CD   TSTMA5 F8D0   TSTMA6 F8A4   TSTMA7 F8D8   TSTMA8 F8D2   
TSTMAN F890   UPDCRT FB9C   VERSEC FDC4   VLECT0 EF88   VLECT1 EF89   
VSPOOL EFB4   ZCC34  CC34   ZF9D8  F9D8   ZFAF4  FAF4   ZFAFE  FAFE   
ZFB16  FB16   ZFB39  FB39   ZFB48  FB48   ZFB5F  FB5F   ZFB6E  FB6E   
ZFBB4  FBB4   ZFBC3  FBC3   ZFBCA  FBCA   ZFBDA  FBDA   ZFBF9  FBF9   
ZFC05  FC05   ZFC11  FC11   ZFD06  FD06   




