* DISASSEMBLY BY DYNAMITE OF 1.VEGAS1.BIN * 13/03/2016 BY FLD * ******************************************************* * MONITEUR VEGAS 6809 VERSION 3 * ******************************************************* * * TABLE MONITEUR * * EF80-EF87 RESERVES MONITEUR * EF88 LECTEUR 0 D7-1 LECTEUR INSTALLE * D1,D9 00 SAUT DE PISTE 6MS * 01 " " " 12MS * 10 " " " 20MS * 11 " " " 30MS * EF89 LECTEUR 1 IDEM * EF8A LECTEUR 2 IDEM * EF8B LECTEUR 3 IDEM * EF8C-EF8F RESERVES MONITEUR * EF90-EF3A TABLE INIT. CRT * EF4A SCROLLING 0 OFF, 1 ON * EFA5-EFA9 RESERVES MONITEUR * EFAB LIGNE COURANTE * EFAC CARACTERE COURANT * EFAD-EFAE TONALITE CLOCHE * EFB1 RESERVES MONITEUR * EFB2-EFB3 TEMPS DEMARAGE MOTEUR LECTEUR * EFB4-EFB5 VITESSE SPOOLING IMPRIMANTE * EFB6 NB SECTEURS PAR FACE SD ($0A) * EFB7 NB SECTEURS PAR FACE DD ($12) * EFB8-EFF1 RESERVES MONITEUR * * VECTEURS D'INTERRUPTION * * EFF2-EFF3 IRQ UTILISATEUR * EFF4-EFF5 IRQ FLEX (SPOOLING) * EFF6-EFF7 SWI3 FLEX * EFF8-EFF9 SWI2 * EFFA-EFFB SWI * EFFC-EFFD NMI * EFFE-EFFF FIRQ * * CARACTERES DE CONTROLE * * ^G 07 CLOCHE (UTILISE LE CONTENU DE EFAD-EFAE) * ^H 08 CURSEUR A GAUCHE * ^I 09 CURSEUR A DROITE * ^J 10 CURSEUR EN BAS * ^K 11 CURSEUR EN HAUT * ^L 12 CURSEUR EN HAUT A GAUCHE + EFFACEMENT * ^M 13 RETOUR CHARIOT * ^R 18 POSITIONNE CURSEUR (CONTENU EN EFAB-EFAC) * ^T 20 CURSEUR ON * ^U 21 CURSEUR OFF * ^V 22 SCROLL ON * ^W 23 SCROLL OFF * ^ 27 ESCAPE (FLEX) * ^ 28 CURSEUR EN HAUT A GAUCHE ( SANS EFF.) * * POINT D'ENTREE SS PROG MONITEUR * * F800 ENTREE A CHAUD MONITEUR $F8ED * F803 ENTREE CLAVIER $F9E8 * F806 ENTREE CLAVIER SANS ECHO $F9D8 * F809 SORTIE ECRAN $F9EA * F80C TEST CLAVIER $F9CF * F80F INIT DES E/S $F992 * F812 LECTURE SECTEUR $FC83 * F815 ECRITURE SECTEUR $FD4B * F818 VERIFICATION SECTEUR $FDAC * F81B PISTE 0 $FDC0 * F81E SELECTION LECTEUR $FDCD * F821 TEST PRET $FE03 * F824 TEST PRET $FE03 * F827 INIT LECTEUR $FC1E * F82A INIT A CHAUD $FC56 * F82D SEEK SAUT DE PISTE $FCEF * F830 IRQ CONTROLE (FLEX SEULEMENT) $FE6E * F833 TIMER OFF (FLEX SEULEMENT) $FED8 * F836 TIMER ON (FLEX SEULEMENT) $FEDD * F839 TIMER INIT (FLEX SEULEMENT) $FEE8 * F840 INITIALISATION MANETTE $F884 * F843 TEST MANETTE $F890 * * * UTILISER DE PREFERENCE * LES POINTS D'ENTREE FLEX * ASCII CODE EQUATES EOT EQU $04 CR EQU $0D LF EQU $0A ******************************************************* * EQUIVALENCES DES ADRESSES EXTERNES * ******************************************************* * ADRESSES EN RAM * ******************************************************* ADCMD EQU $C100 ADRESSE RESERVEE POUR COMMANDES FLEX ASPOOL EQU $C700 ADRESSE RESERVEE POUR LE SPOOLER LC8BE EQU $C8BE LCC34 EQU $CC34 SPOOLING ACTIF WARMS EQU $CD03 POINT D'ENTREE A CHAUD DU FLEX TABLE2 EQU $ED80 TABLE DE TRADUCTION DES CLAVIERS TABLE3 EQU $EE80 TABLE DE TRADUCTION DES CLAVIERS STACKSY EQU $EF7F ORIGINE DE LA PILE SYSTEME TRKBUF EQU $EF80 BUFFER MEMORISATION DES PISTES ACTIVES VLECT0 EQU $EF88 SAUT DE PISTE LECTEUR 0 VLECT1 EQU $EF89 SAUT DE PISTE LECTEUR 1 ACTDRV EQU $EF8C LECTEUR ACTIF TRKJMP EQU $EF8D MASQUE DE SAUT DE PISTE MEMDP1 EQU $EF8E MEMORISATION DP PENDANT LECT. SECTEUR TBLCRT EQU $EF90 TABLE INITIALISATION CRT SCROLL EQU $EFA4 SCROLLING ON / OFF BUFCUH EQU $EFA5 BUFFER DE POSITION CURSEUR BUFCUL EQU $EFA6 BUFFER DE POSITION CURSEUR BUFUPH EQU $EFA7 BUFFER DE POSITION POUR UPDATE BUFUPL EQU $EFA8 BUFFER DE POSITION POUR UPDATE BUFOFH EQU $EFA9 BUFFER DE POSITION OFFSET BUFOFL EQU $EFAA BUFFER DE POSITION OFFSET LIGN EQU $EFAB POSITION LIGNE COURANTE CARACT EQU $EFAC POSITION CARACTERE COURANT SOUND EQU $EFAD TONALITE CLOCHE TSOUND EQU $EFAF DUREE SON CLOCHE INDMOT EQU $EFB1 INDICATEUR MOTEUR FLOPPY DEMAND EQU $EFB2 TEMPS DEMARRAGE MOTEUR LECTEURS VSPOOL EQU $EFB4 VITESSE SPOOLING IMPRIMANTE NSECT1 EQU $EFB6 NB DE SECTEURS PAR FACE SD ($0A) NSECT2 EQU $EFB7 NB DE SECTEURS PAR FACE DD ($12) FCURSO EQU $EFB8 FLAG CURSEUR VISIBLE CBLINK EQU $EFB9 FLAG CURSEUR CLIGNOTANT HEURE EQU $EFBA HEURE AFFICHABLE LEFCB EQU $EFCB LEFCC EQU $EFCC MEMHTR EQU $EFCD MEM HORLOGE REG R2 (SECONDES) * $EFCE MEM HORLOGE REG R3 (10 SECONDES) * $FECF MEM HORLOGE REG R4 (MINUTES) * $FED0 MEM HORLOGE REG R5 (10 MINUTES) * $FED1 MEM HORLOGE REG R6 (HEURES) * $FED2 MEM HORLOGE REG R7 (10 HEURES) * $FED3 MEM HORLOGE REG R8 (JOURS) * $FED4 MEM HORLOGE REG R9 (10 JOURS) * $FED5 MEM HORLOGE REG R10 (JOUR SEMAINE) * $FED6 MEM HORLOGE REG R11 (MOIS) * $FED7 MEM HORLOGE REG R12 (10 MOIS) IRQUTI EQU $EFF2 IRQ UTILISATEUR IRQFLX EQU $EFF4 IRQ FLEX (SPOOLING) SWI3 EQU $EFF6 SWI3 FLEX SWI2 EQU $EFF8 SWI2 SWI EQU $EFFA SWI NMI EQU $EFFC NMI FIRQ EQU $EFFE FIRQ ******************************************************* * EQUIVALENCES DES ADRESSES EXTERNES * ******************************************************* * CICUITS * ******************************************************* * CONTROLEUR D'ECRAN SY6545 FLGCU0 EQU $F000 REGISTRE DE CONTROLE FLGCU1 EQU $F001 REGISTRE DE CONTROLE DVIDEO EQU $F200 DONNEE VIDEO A AFFICHER * ACIA ACIAAC EQU $F506 ACIA A - CONTOL REGISTER ACIABC EQU $F50C ACIA B - CONTOL REGISTER * CONTROLEUR DE DISQUETTES STRCR EQU $F600 REGISTRE DE STATUS/COMMAND TR EQU $F601 REGISTRE DE PISTE SCR EQU $F602 REGISTRE DE SECTEUR DR EQU $F603 REGISTRE DE DONNEES * HORLOGE TEMPS REEL HORLO EQU $F640 INTERH EQU $F64F * PIA-A DISQUE PIA1DA EQU $F680 REGISTRE DE DONNEES PIA1CA EQU $F681 REGISTRE DE CONTROLE * PIA-B CLAVIER PIA1DB EQU $F682 REGISTRE DE DONNEES PIA1CB EQU $F683 REGISTRE DE CONTROLE * TEMPORISATEUR 1,2 ET 3 TMRCR1 EQU $F6C8 REGISTRE DE CONTROLE TMRCR2 EQU $F6C9 REGISTRE DE CONTROLE TMRT1L EQU $F6CA PRESET TIMER 1 (UTILISATEUR) TMRT2L EQU $F6CC PRESET TIMER 2 TMRT3L EQU $F6CE PRESET TIMER 3 * PIA-A MANETTES PIA2DA EQU $F6D0 REGISTRE DE DONNEES PIA2CA EQU $F6D1 REGISTRE DE CONTROLE ******************************************************* * DEBUT DU PROGRAMME DU MONITEUR * * ADRESSES $F800 * ******************************************************* ORG $F800 HOTMON JMP HOTMO2 ENTREE A CHAUD MONITEUR $F8ED JMP CLAV1 ENTREE CLAVIER $F9E8 JMP CLAV2 ENTREE CLAVIER SANS ECHO $F9D8 JMP SORECR SORTIE ECRAN $F9EA JMP TSTCLA TEST CLAVIER $F9CF JMP INIES INIT DES E/S $F992 JMP LECSEC LECTURE SECTEUR $FC83 JMP ECRSEC ECRITURE SECTEUR $FD4B JMP VERSEC VERIFICATION SECTEUR $FDAC JMP PIST0 PISTE 0 $FDC0 JMP SELECT SELECTION LECTEUR $FDCD JMP TETRDY TEST PRET $FE03 JMP TETRDY TEST PRET $FE03 JMP LECINI INIT LECTEUR $FC1E JMP HOTINI INIT A CHAUD $FC56 JMP SEEK SAUT DE PISTE $FCEF JMP CTRIRQ IRQ CONTROLE (FLEX SEULEMENT) $FE6E JMP TMROFF TIMER OFF (FLEX SEULEMENT) $FED8 JMP TMRON TIMER ON (FLEX SEULEMENT) $FEDD JMP TMRINIT TIMER INIT (FLEX SEULEMENT) $FEE8 STU [0,S] STU [A,S] JMP IPIA2A INITIALISATION MANETTE $F884 JMP TSTMAN TEST MANETTE $F890 ******************************************************* * ADRESSE DES SEQUENCES DE TRAITEMENT DES CODES ESCAPE* * CARACTERES DE CONTROLES * ******************************************************* TABLE5 FDB CTRLNA $FAF2 01 FDB CTRLNA $FAF2 02 FDB CTRLNA $FAF2 03 FDB CTRLNA $FAF2 04 FDB CTRLNA $FAF2 05 FDB CTRLNA $FAF2 06 FDB CTRL07 $FAF3 07 CTRL-G BELL FDB CTRL08 $FB0A 08 CTRL-H BACKSPACE FDB CTRL09 $FB22 09 CTRL-I HORIZONTAL TAB FDB CTRL10 $FB2F 10 CTRL-J LINE FEED FDB CTRL11 $FB35 11 CTRL-K VERTICAL TAB FDB CTRL12 $FB41 12 CTRL-L FORM FEED FDB CTRL13 $FB70 13 CTRL-M CARIAGE RETURN FDB CTRL14 $FB76 14 CTRL-N SHIFT OUT FDB CTRL15 $FB89 15 CTRL-O SHIFT IN FDB CTRL16 $FBA6 16 CTRL-P POS CURS.->EFAB-EFAC FDB CTRLNA $FAF2 17 CTRL-Q FDB UPDCRT $FA2D 18 CTRL-R CURSEUR EN EFAB-EFAC FDB CTRLNA $FAF2 19 CTRL-S FDB CTRL20 $FBD7 20 CTRL-T CURSEUR ON FDB CTRL21 $FBE7 21 CTRL-U CURSEUR OFF FDB CTRL22 $FBF1 22 CTRL-V SCROLL ON FDB CTRL23 $FBF7 23 CTRL-W SCROLL OFF FDB CTRL24 $FBFB 24 CTRL-X SET BLINKING FDB CTRL25 $FC09 25 CTRL-Y SET NOT BLINKING FDB CTRLNA $FAF2 26 CTRL-Z FDB CTRLNA $FAF2 27 ESC FDB CTRL28 $FC15 28 HOME CURSEUR + SANS EFF FDB CTRL09 $FB22 29 CTRL-I HORIZONTAL TAB FDB CTRLNA $FAF2 30 FDB CTRLNA $FAF2 31 ******************************************************* * INITIALISATION PIA 2 PORT A MANETTES * ******************************************************* IPIA2A CLR PIA2CA EFFACEMENT REG DE DIRECTION (ENTREE) CLR PIA2DA EFFACEMENT REG DE CONTROLE (SORTIE) LDA #4 %00000100 STA PIA2CA SELECTION REGISTRE DE DONNEES RTS ******************************************************* * TEST MANETTES * ******************************************************* TSTMAN RTS ******************************************************* * DESACTIVATION DES INTERRUPTIONS DE L'HORLOGE * ******************************************************* SHORL1 LDX #HORLO INITIALISATION DU MM58174 CLR 0,X CLR 15,X INITIALISATION A ZERO DU REGISTRE F LDA 15,X LECTURE 3 FOIS DU REGISTRE LDA 15,X LDA 15,X LDA #1 STA 14,X RTS ******************************************************* * SERIAL PORT MASTER RESET * ******************************************************* INISER LDA #3 STA ACIAAC MASTER RESET STA ACIABC MASTER RESET RTS * SOUS PROG ECRITURE TABLE INITAB STA A,X INCA BNE INITAB RTS ******************************************************* * INITIALISATION * ******************************************************* * POINT D'ENTREE A FROID DU SYSTEME * * APRES EXECUTION AUTOMATIQUE PAR LE 6809 * * DU SAUT A L'ADRESSE CONTENUE DANS $FFE-$FFFF * ******************************************************* START ORCC #$10 MASQUE DES INTERUPTIONS IRQ MASQ LDS #STACKSY POINTEUR DE PILE SYSTEME $EF7F JSR INITIRQ BSR IPIA2A INITIALISATION PIA 2A MANETTES BSR INISER BSR SHORL1 DESACTIVATION INTERRUPTIONS HORLOGE CLR LCC34 * INITIALISATION TABLES CLAVIER LDX #TABLE3 $EE80 CLRA BSR INITAB ECRITURE TABLE 3 LDX #TABLE2 $ED80 CLRA BSR INITAB * INITIALISATION DES TABLES PAR DEFAULT DU MONITEUR LDX #VLECT0 1ER LECTEUR $EF88 LDY #TABLE1 LOOP1 LDA 0,Y+ STA 0,X+ CMPX #LEFCB $EF88+43 BNE LOOP1 JSR INIES INIT ES JSR LECINI INIT FLOPPY ANDCC #$EF RETIRE IRQ MASQ LDA #$0C FORM FEED JSR SORECR EFFACE ECRAN * ENTREE A CHAUD MONITEUR HOTMO2 LDX #TEXTE1 POINTE SUR LE TEXTE HOTMO3 JSR PSTRNG AFFICHE LE TEXTE JSR CLAV1 ATTEND UN CARACTERE AU CLAVIER PSHS A LDA #$20 ESPACE IMPRIME UN ESPACE JSR SORECR PULS A ANDA #$5F FILTRE LE CARACTERE TFR A,B LDX #KEYCOD HOTMO4 CMPB 0,X+ BEQ HOTMO6 LEAX 2,X CMPX #TABLE1 BNE HOTMO4 HOTMO5 LDX #ETOILE BRA HOTMO3 HOTMO6 JSR [0,X] BRA HOTMO5 ******************************************************* * $F91A : COMMANDE MONITEUR "F" * * LANCEMENT A CHAUD DU FLEX * ******************************************************* CMDF JMP WARMS TEXTE1 FCC CR,LF,"VEGASMON COPYRIGHT " FCC "MICROKIT V3.3" ETOILE FCC CR,LF,"*",EOT KEYCOD FCB $44 = D FDB CMDD $FEE9 FCB $47 = G FDB CMDG $FF0C FCB $4D = M FDB CMDM $FF13 FCB $46 = F FDB CMDF $F91A TABLE1 FCB $83 $EF88 VLECT0 FCB $83 $EF89 VLECT1 FCB $00 $EF8A VLECT2 FCB $00 $EF8B VLECT3 FCB $00 $EF8C ACTDRV FCB $00 $EF8D TRKJMP FCB $00 $EF8E MEMDP1 FCB $00 $EF8F FCB $7F $EF90 TBLCRT R0=HORIZONTAL TOTAL FCB $50 $EF91 TBLCR2 R1=HOR DISPAY (CAR/LIG) FCB $5F $EF92 R2=HORIZONTAL SYNC POS FCB $09 $EF93 R3=H & V SYNC WIDTH FCB $1D $EF94 R4=VERTICAL TOTAL FCB $0C $EF95 R5=VERTICAL TITAL ADJUST FCB $19 $EF96 TBLCR3 R6=VERT. DISP (LIG/ECRAN) FCB $1A $EF97 R7=VERTICAL SYNC POSITION FCB $48 $EF98 R8=MODE CONTROL * BIT 7=0-> UPDATE DURING H & V BLANKING * BIT 6=0-> PIN34=MEMORY ADDRESS * BIT 5=1-> NO CURSOR DELAY * BIT 4=0-> NO DELAY DISPLAY ENABLE SKEW * BIT 3=1-> TRANSPARENT MEMORY ADDRESS * BIT 2=0-> VIDEO DISPLAY RAW/COLUMN * BIT 0/1=0-> NO INTERLACE FCB $09 $EF99 R9=LINE PER CAR -1 (10) FCB $68 $EF9A R10=CURSOR START LINE (8) * CURSOR BLINKING 1/32 FIELD RATE FCB $09 $EF9B R11=CURSOR END LINE (9) FCB $00 $EF9C R12=DISP. START ADD HIGH FCB $00 $EF9D R13=DISP. START ADD LOW FCB $00 $EF9E R14=DISP. CURSOR POS HIGH FCB $00 $EF9F R15=DISP. CURSOR POS LOW FCB $00 $EFA0 R16=LIGHT PEN POS HIGH FCB $00 $EFA1 R17=LIGHT PEN POS LOW FCB $00 $EFA2 R18=UPDATE ADDRESS HIGH FCB $00 $EFA3 R19=UPDATE ADDRESS LOW FCB $01 $EFA4 SCROLL FLAG ACTIF FCB $00 $EFA5 BUFCUH FCB $00 $EFA6 BUFCUL FCB $00 $EFA7 BUFUPH FCB $00 $EFA8 BUFUPL FCB $00 $EFA9 BUFOFH FCB $00 $EFAA BUFOFL FCB $00 $EFAB LIGN POSITION LIGNE COURANTE FCB $00 $EFAC CARACT POSITION CAR COURANT FCB $01 $EFAD SOUND TONALITE CLOCHE FCB $5D $EFAE FCB $01 $EFAF TSOUND DUREE SON CLOCHE FCB $E0 $EFB0 FCB $78 $EFB1 INDMOT INDICATEUR MOTEUR FLOPPY FCB $00 $EFB2 DEMAND TEMPS DEM MOTEUR LECTEUR FCB $00 $EFB3 FCB $27 $EFB4 VSPOOL VITESSE SPOOL IMPRIMANTE FCB $10 $EFB5 FCB $0A $EFB6 NSECT1 NB DE SECTEURS/FACE SD FCB $10 $EFB7 NSECT2 NB DE SECTEURS/FACE DD FCB $01 $EFB8 FCURSO FLAG CURSEUR VISIBLE FCB $01 $EFB9 FLAG CURSEUR CLIGNOTANT FCB $31 $EFBA FCB $32 $EFBB FCB $3A $EFBC FCB $31 $EFBD FCB $32 $EFBE FCB $3A $EFBF FCB $31 $EFC0 FCB $32 $EFC1 FCB $20 $EFC2 FCB $31 $EFC3 FCB $32 $EFC4 FCB $2F $EFC5 FCB $31 $EFC6 FCB $32 $EFC7 FCB $2F $EFC8 FCB $38 $EFC9 FCB $34 $EFCA * INITIALISATION DES E/S INIES LDX #$A181 CHARGE CR1 et CR2 DUTMR1 STX TMRCR1 ECRITURE REGISTRE DE CONTROLE TMR1 * TIMER 1 * 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 * TIMER 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 LDX SOUND CHARGE LA TONALITE DU BIP STX TMRT2L CRIURE DU REGISTRE DU TIMER 2 LDX TSOUND CHARGE LA DUREE DU BIP STX TMRT3L ECRITURE DU BUFFER DU TIMER 3 LDA #0 STA TMRCR1 REINITIALISE LE REGISTRE DE CONTOLE 1 LDB #0 LDX #TBLCRT CHARGE X AVEC $EF90 LF9AC STB FLGCU0 INITIALISE LE 1ER REGISTRE DU CRT LDA 0,X+ CHARGE DANS A LE CONTENU POINTE X+ STA FLGCU1 SAUVEGARDE A DANS LE REGISTRE INCB INCREMENTE B CMPB #$14 BOUCLE SI INFERIEUR A 20 BNE LF9AC LOOP LDA #$1F REGISTRE 31 (DUMMY) STA FLGCU0 LDA FLGCU1 * INITIALISE LE PIA DU DISQUE CLR PIA1CB CLR PIA1DB LDA #$0C BIN %00001100 STA PIA1CB SUVEGARDE DANS LE CR DU PIA RTS ******************************************************* * TEST CLAVIER * ******************************************************* TSTCLA PSHS A LDA PIA1CB LECTURE DU CR DU PIA ANDA #$80 MASQUE PULS A,PC ******************************************************* * CLAVIER SANS ECHO * ******************************************************* CLAV2 BSR TSTCLA BEQ CLAV2 LDA PIA1DB PSHS X LDX #TABLE2 CONVERSION DU CODE PIA EN CODE ASCII LDA A,X PULS X,PC ******************************************************* * CLAVIER SANS ECHO + INIT DE L'AFFICHAGE * ******************************************************* CLAV1 BSR CLAV2 ******************************************************* * INITIALISATION DES FONCTION D'AFFICHAGE DU SY6545 * ******************************************************* SORECR PSHS A,B,X,Y LDX #TABLE3 CONVERSION DU CODE ASCII ENIMPRIMABLE LDA A,X CMPA #0 BEQ JUMP1 CODE ZERO A IGNORER ORCC #$10 CMPA #$20 LBCS TSTCTR BSR SOREC1 ANDCC #$EF JUMP1 PULS A,B,X,Y,PC SOREC2 STA DVIDEO SAUVEGARDE DANS REGISTRE A AFFICHER TST FLGCU1 BSR SOREC3 LDB #$1F CHARGE LA VALEUR $1F STB FLGCU0 SAUVEGARDE DANS LE REGISTRE D'ADRESSE NOP NOP NOP SOREC3 TST FLGCU0 LECTURE STATUS REGISTER DU CONTROLEUR BPL SOREC3 TEST DU BIT 7 UPDATE READY RTS SOREC1 BSR SOREC2 INC CARACT INC. LA POSITION CAR DANS LA LIGNE LDA CARACT CMPA #$50 LIGNE COMPLETE ? BNE UPDCRT NON JUMP CLR CARACT PASSE AU 1ER CAR INC LIGN SAUTE LIGNE BRA TSCROL ******************************************************* * UPDATE DU CRT AVEC POSITION LIGN ET CARACT * ******************************************************* UPDCRT LDX BUFOFH LDA #$50 LDB LIGN MUL CALCUL POSITION LEAX D,X CORRIGE AVEC OFFSET LDA CARACT LEAX A,X AJOUTE POSITION DANS LIGNE STX BUFCUH MEMORISE LDB #$0E =14 CODE POSITION CURSEUR LDA BUFCUH JSR UPDCR1 COPIE DANS LE CRT LDA BUFCUL JSR UPDCR1 STX BUFUPH JSR TSCRO6 COPIE DANS LE CRT RTS ******************************************************* * TEST DU SCROLL SI DERNIERE LIGNE * ******************************************************* TSCROL LDA LIGN CHARGE LA LIGNE COURANTE CMPA #$18 COMPARE AVEC LE NB LIGNE DE L'ECRAN BNE UPDCRT UPDATE CRT SI PAS EN BAS DE L'ECRAN LDB SCROLL TEST DU REGISTRE DE SCROLL BNE TSCRO2 SCROLL SI REGISTRE A 1 CLR LIGN PASSE EN PREMIERE LIGNE BRA UPDCRT UPDATE CRT TSCRO2 DECA AJUSTE LE NUMERO DE LIGNE STA LIGN SAUVEGARDE LE NUMERO DE LIGNE LDX BUFOFH CHARGE OFFSET POUR AFFICHAGE CURSEUR LDA #$50 NB CARACTERES PAR LIGNE LEAX A,X AJOUTE CARACTERES LIGNE A L'OFFSET STX BUFOFH SAUVEGARDE NOUVEAU OFFSET TSCRO3 LDB FLGCU0 CHARGE STATUS REG DU CRT ANDB #$20 TEST VERTICAL BLANKING BNE TSCRO3 LOOP TSCRO4 LDB FLGCU0 CHARGE STATUS REG DU CRT ANDB #$20 TEST VERTICAL BLANKING BEQ TSCRO4 LOOP LDB #$0C REGISTRE POUR DISPLAY START LDA BUFOFH CHARGE LA PARTIE HAUTE DE LA POSITION ANDA #7 AJUSTE OFFSET POUR AFF CURSEUR STA BUFOFH SAUVEGARDE OFFSET POUR AFF CURSEUR JSR UPDCR1 CHARGEMENT DU REGISTRE LDA BUFOFL CHARGE LA PARTIE BASSE JSR UPDCR1 CHARGEMENT DU REGISTRE LDD #$0730 BSR TSCRO5 POSITION POUR AFFICHAGE HEURE LDA #$20 LDY #$0050 JSR EFFDAT EFFACE Y CAR BRA AFFHEU AFFICHAGE HEURE * POSITIONNE CURSEUR TSCRO5 LDX BUFOFH POSITION OFFSET LEAX D,X STX BUFUPH LA PARTIE HAUTE DE LA POSITION TSCRO6 LDB #$12 =R18 POSITION AFFICHAGE PROCHAIN CAR LDA BUFUPH LA PARTIE HAUTE DE LA POSITION JSR UPDCR1 CHARGEMENT DU REGISTRE LDA BUFUPL LA PARTIE BASSE JSR UPDCR1 CHARGEMENT DU REGISTRE RTS ******************************************************* * AFFICHAGE HEURE SUR ECRAN * ******************************************************* AFFHEU LDD #$0780 = 1920 = 24 * 80 BSR TSCRO5 POSITIONNE CURSEUR LDA #$20 CHARGE ESPACE LDY #$003F CHARGE 63 JSR EFFDAT EFFACE ANCIENNE DATE LDX #HEURE POINTE SUR L’HEURE AFFHE1 LDA 0,X+ AFFICHE 1 CAR JSR SOREC2 CMPX #HEURE+17 BNE AFFHE1 LOOP JMP UPDCRT TERMINE ******************************************************* * INTERPRETATION DES CODES DE CTRL * ******************************************************* TSTCTR LDX #TABLE5-2 ASLA LEAX A,X JSR [0,X] ANDCC #$EF PULS A,B,X,Y,PC ******************************************************* * SORTIE A L'ECRAN D'UNE CHAINE * ******************************************************* PSTRNG LDA 0,X+ CMPA #4 BEQ PSTRN1 JSR SORECR BRA PSTRNG PSTRN1 RTS ******************************************************* * CONTROL 02,03,04,05,05 NON AFFECTE * ******************************************************* CTRLNA RTS ******************************************************* * BELL (CTRL G) * ******************************************************* CTRL07 LDA TMRCR2 ANDA #4 BEQ CTRL07 LDX TMRT3L LDX SOUND STX TMRT2L LDX TSOUND STX TMRT3L LFB07 RTS ******************************************************* * BACKSPACE - CURSEUR A GUAUCHE (CTRL H) * ******************************************************* CTRL08 LDA CARACT POSITION CURSEUR BEQ LFB14 JUMP SI 0 DECA SINON DECREMENTE LFB0E STA CARACT MEMORISE JMP UPDCRT UPDATE CRT LFB14 TST LIGN BEQ LFB07 HAUT DE PAGE -> RIEN FAIRE DEC LIGN SINON DECREMENTE LDA #$4F =79 DERNIER CAR DE LIGNE BRA LFB0E RETOUR ******************************************************* * HORIZONTAL TAB - CURSEUR A DROITE (CTRL I) * ******************************************************* CTRL09 LDA CARACT POSITION CURSEUR CMPA #$4F =79 DERNIER CAR DE LIGNE BEQ LFB2A DEJA AU BOUT DE LIGNE INCA INCREMENTE CAR BRA LFB0E RETOUR LFB2A CLR CARACT DEBUT LIGNE ******************************************************* * LINE FEED - CURSEUR EN BAS (CTRL J) * ******************************************************* CTRL10 INC LIGN INCREMENTE JMP TSCROL TEST SCROLING ******************************************************* * VERTICAL TAB - CURSEUR EN HAUT (CTRL K) * ******************************************************* CTRL11 LDA LIGN NUMERO LIGNE BEQ LFB07 HAUT DE PAGE -> RIEN FAIRE DECA DECREMENTE LIGNE STA LIGN JMP UPDCRT UPDATE CRT ******************************************************* * FORM FEED - EFFACEMENT (CTRL L) * ******************************************************* CTRL12 LDA #$20 CHARGEMENT DU CARACTERE BLANC LDY #$0800 PRESET DU REGISTRE X A 2048 (RAM) JSR EFFDAT EFFACE LDX #$0000 STX LIGN EFFACEMENT NUMERO DE LIGNE STX BUFCUH BUFFER DE POSITION CURSEUR STX BUFUPH BUFFER DE POSITION POUR UPDATE STX BUFOFH BUFFER DE POSITION OFFSET CLRA LDB #$0C =R12 DISPLAY START BSR UPDCR1 BSR UPDCR1 BSR UPDCR1 BSR UPDCR1 INCB INCB BSR UPDCR1 ******************************************************* * UPDATE LE REGISTRE CRT ET INCREMENTE * ******************************************************* UPDCR1 STB FLGCU0 STA FLGCU1 INCB RTS ******************************************************* * CARIAGE RETURN - RETOUR CHARIOT (CTRL M) * ******************************************************* CTRL13 CLR CARACT JMP UPDCRT UPDATE CRT ******************************************************* * SHIFT OUT - (CTRL N) * ******************************************************* CTRL14 LDA #$50 SUBA CARACT LDY #$0000 LEAY A,Y LDA #$20 JSR EFFDAT JMP UPDCRT UPDATE CRT ******************************************************* * SHIFT IN - (CTRL O) * ******************************************************* CTRL15 LDA #$50 SUBA CARACT LDY #$0000 LDA #$50 LEAY A,Y LDB #$17 SUBB LIGN MUL LEAY D,Y LDA #$20 JSR EFFDAT JMP UPDCRT UPDATE CRT ******************************************************* * MEMORISE POSITION CURSEUR EN EFAB - EFAC (CTRL P) * ******************************************************* CTRL16 LDA CARACT STA LEFCC LDA LIGN STA LEFCB CLR CARACT JSR UPDCRT CTRL17 LDA #$20 LDY #$0050 BSR EFFDAT EFFACE Y CAR LDA LEFCC STA CARACT LDA LEFCB STA LIGN JMP UPDCRT UPDATE CRT ******************************************************* * EFFACE Y CARATERES SUR LA LIGNE * ******************************************************* EFFDAT JSR SOREC2 LEAY -1,Y BNE EFFDAT RTS ******************************************************* * CURSEUR ON (CTRL-T ) * ******************************************************* CTRL20 LDA #1 STA FCURSO LDA #$68 -> BLINK AT 1/32 LDB CBLINK CURSOR BLINKING ? BNE LFBE3 LDA #8 -> NO BLINKING LFBE3 BRA LFBEA ******************************************************* * CURSEUR OFF (CTRL-U ) * ******************************************************* CTRL21 CLR FCURSO LDA #$28 -> NO CURSOR LFBEA LDB #$0A =R10 JMP UPDCR1 ******************************************************* * ACTIVE LE SCROLLING (CTRL-V) * ******************************************************* CTRL22 LDA #1 STA SCROLL RTS ******************************************************* * DESACTIVE LE SCROLING (CTRL-W) * ******************************************************* CTRL23 CLR SCROLL LFBF8 RTS ******************************************************* * SET CURSOR BLINKING (CTRL-X) * ******************************************************* CTRL24 LDA #1 STA CBLINK CURSOR BLINKING TST FCURSO CURSOR ON ? BEQ LFBF8 NO LDA #$68 -> BLINK AT 1/32 BRA LFBEA ******************************************************* * SET CURSOR NOT BLINKING (CTRL-Y) * ******************************************************* CTRL25 CLR CBLINK CURSOR NOT BLINKING TST FCURSO CURSOR ON ? BEQ LFBF8 NO LDA #8 -> NO BLINKING BRA LFBEA ******************************************************* * HOME * ******************************************************* CTRL28 CLR LIGN CLR CARACT JMP UPDCRT ******************************************************* * INITIALISATION DES FONCTIONS DE BASES DU CONTROLEUR * * DE DISQUETTES FD1791 / MB 8876 * ******************************************************* * INITIALISATION FLOPPY * ******************************************************* LECINI LDX #TRKBUF LDB #$D0 %11010000 STB STRCR SAUVEGARDE DANS LE CONTROL REGISTER * BIT7654=1101 FORCE INTERRUPT * BIT3210=0 TERMINATE WITH NO INTERRUPT LDB #8 LECIN1 CLR 0,X+ INITIALISE 8 MEMOIRES $EF80 A $EF88 DECB BNE LECIN1 LOOP LEAX 4,X INITIALISE 8 MEMOIRES $EF8C A $EF8F LDB #4 LECIN2 CLR 0,X+ DECB BNE LECIN2 LOOP BSR HOTINI INIT A CHAUD ORCC #$10 SET MASK IRQ JSR SHORL1 DESACTIVATION INTERRUPT DE L'HORLOGE ANDCC #$EF CLEAR IRQ MASK LDA #9 PROGRAM INTERRUPTION REPETITIVES STA INTERH APPLIQUE INT A HORLOGE TEMPO MOTEUR LDA #$78 STA INDMOT INDICATEUR MOTEUR FLOPPY LDX #$0000 LECIN3 LEAX -1,X TEMPORISATION BNE LECIN3 LDB #$0B STB STRCR APPLIQUE LA COMMANDE RTS ******************************************************* * INITIALISATION FLOPPY A CHAUD * ******************************************************* HOTINI LDA #$FF STA PIA1DA PIA1 EN SORTIE LDA #4 STA PIA1CA SELECTIONNE CR LDA #$18 STA PIA1DA MOTEUR ON FACE 0 RTS ******************************************************* * DEMARRAGE DU MOTEUR * ******************************************************* DEMOT LDA PIA1DA CHARGE REGISTRE DATA PIA LECTEUR BITA #8 TEST DU MOTEUR BNE DEMO1 MOTEUR EN MARCHE ? ORA #8 NON, DEMARRE LE MOTEUR STA PIA1DA APPLIQUE LA COMMANDE PSHS X LDX DEMAND CHARGE LA TEMPO DE DEMARRAGE DU MOTEUR DEMO2 LEAX -1,X COMPTE BNE DEMO2 PULS X DEMO1 LDA #$78 STA INDMOT INDICATEUR MOTEUR FLOPPY RTS ******************************************************* * FONCTIONS DE BASES DU CONTROLEUR DE DISQUETTES * * FD1791 / MB 8876 * ******************************************************* ******************************************************* * LECTURE SECTEUR * ******************************************************* LECSEC ORCC #$10 SET MASK IRQ BSR SEEK SEEK SECTEUR A / PISTE B BSR LECSE1 TEST DE SPOOLING? SWI3 SI BESOIN BSR DEMOT DEMARRE MOTEUR LDA #$80 COMMANDE LECTURE SECTEUR (6MS DELAY) STA STRCR APPLIQUE LA COMMANDE JSR DELAY DELAY EN FONCTION DE LA DENSITE TFR DP,B SAUVE LE DP DANS B STB MEMDP1 PUIS B DANS MEMDP1 LDB #$F6 CHARGE L'ADRESSE HAUTE DU CONTROLEUR TFR B,DP DANS LE DP SETDP $F6 LECSE2 LDB