* 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