[ceffc47] | 1 | ****************************************
|
---|
| 2 | * *
|
---|
| 3 | * ECHOCAR.ASM *
|
---|
| 4 | * *
|
---|
| 5 | * Contacthoms No 13 page 10 *
|
---|
| 6 | * *
|
---|
| 7 | *--------------------------------------*
|
---|
| 8 | * *
|
---|
| 9 | * Programme en assembleur pour avoir *
|
---|
| 10 | * l'écho de la souris à l'écran. *
|
---|
| 11 | * *
|
---|
| 12 | ****************************************
|
---|
| 13 |
|
---|
| 14 | TITLE ECHO DU CARACTERE
|
---|
| 15 |
|
---|
| 16 | GETL EQU $E818 Acq. coor. X,Y
|
---|
| 17 | SELMEM EQU $E7C3 Select. for/color
|
---|
| 18 | NBCOL EQU $605F 40 ou 80 colonnes
|
---|
| 19 | MEMECR EQU $4000 Adr deb mem écran
|
---|
| 20 | *
|
---|
| 21 | *
|
---|
| 22 | *
|
---|
| 23 | ORG $DF00
|
---|
| 24 | ECHO00 EQU *
|
---|
| 25 | PSHS X,Y,U,D
|
---|
| 26 | *
|
---|
| 27 | * Acquisition coordonnées point visé
|
---|
| 28 | *
|
---|
| 29 | ECHO10 EQU *
|
---|
| 30 | JSR GETL
|
---|
| 31 | BCS ECHO99
|
---|
| 32 | *
|
---|
| 33 | * Le point visé est-il le même ?
|
---|
| 34 | *
|
---|
| 35 | TFR Y,D
|
---|
| 36 | ANDB #$F8
|
---|
| 37 | PSHS D
|
---|
| 38 | TFR X,D
|
---|
| 39 | ANDB #$F8
|
---|
| 40 | PSHS D
|
---|
| 41 | CMPD XPREC,PCR
|
---|
| 42 | BNE ECHO20 NON: inverse
|
---|
| 43 | LDD 2,S
|
---|
| 44 | CMPD YPREC,PCR
|
---|
| 45 | BNE ECHO20 NON: inv mm point
|
---|
| 46 | LEAS 4,S
|
---|
| 47 | BRA ECHO10 Attend changement
|
---|
| 48 | *
|
---|
| 49 | * Remise point prec en vidéo normal
|
---|
| 50 | *
|
---|
| 51 | ECHO20 EQU *
|
---|
| 52 | LDX XPREC,PCR
|
---|
| 53 | BMI ECHO30 Première fois
|
---|
| 54 | LDY YPREC,PCR
|
---|
| 55 | BSR INVERS
|
---|
| 56 | *
|
---|
| 57 | * Met le point en vidéo inverse
|
---|
| 58 | *
|
---|
| 59 | ECHO30 EQU *
|
---|
| 60 | LDX 0,S
|
---|
| 61 | STX XPREC,PCR
|
---|
| 62 | LDY 2,S
|
---|
| 63 | STY YPREC,PCR
|
---|
| 64 | BSR INVERS
|
---|
| 65 | LEAS 4,S
|
---|
| 66 | ECHO99 EQU *
|
---|
| 67 | PULS X,Y,U,D,PC
|
---|
| 68 | *
|
---|
| 69 | * Met un caractère en vidéo inverse
|
---|
| 70 | *
|
---|
| 71 | * Entrée x,y coordonnées point
|
---|
| 72 | * du début du caractère.
|
---|
| 73 | *
|
---|
| 74 | INVERS EQU *
|
---|
| 75 | PSHS X,Y,U,D
|
---|
| 76 | *
|
---|
| 77 | * Calcul adresse début du caractère
|
---|
| 78 | * dans écran.
|
---|
| 79 | *
|
---|
| 80 | LDU #MEMECR
|
---|
| 81 | TFR Y,D
|
---|
| 82 | LDA #40
|
---|
| 83 | MUL
|
---|
| 84 | LEAU D,U
|
---|
| 85 | TFR X,D
|
---|
| 86 | LSRA
|
---|
| 87 | RORB
|
---|
| 88 | LSRA
|
---|
| 89 | RORB
|
---|
| 90 | LSRB
|
---|
| 91 | LDA #01
|
---|
| 92 | ORA >SELMEM Force plan forme
|
---|
| 93 | TST NBCOL 40 ou 80 colonnes
|
---|
| 94 | BPL INVE20
|
---|
| 95 | LSRB
|
---|
| 96 | BCC INVE20 Pair-->forme
|
---|
| 97 | LDA #$FE 80 col mais col
|
---|
| 98 | ANDA >SELMEM Impair-->couleur
|
---|
| 99 | INVE20 EQU *
|
---|
| 100 | LEAU B,U U=adr deb caract
|
---|
| 101 | STA >SELMEM
|
---|
| 102 | *
|
---|
| 103 | * Met le caractère en vidéo inverse
|
---|
| 104 | *
|
---|
| 105 | LDA #8
|
---|
| 106 | INVE70 EQU *
|
---|
| 107 | COM ,U
|
---|
| 108 | LEAU 40,U
|
---|
| 109 | DECA
|
---|
| 110 | BNE INVE70
|
---|
| 111 | *
|
---|
| 112 | * Fin
|
---|
| 113 | *
|
---|
| 114 | INVE99 EQU *
|
---|
| 115 | PULS X,Y,U,D,PC
|
---|
| 116 | *
|
---|
| 117 | *
|
---|
| 118 | XPREC FDB -1
|
---|
| 119 | YPREC FDB -1
|
---|
| 120 | END
|
---|
| 121 |
|
---|
| 122 | ****************************************
|
---|
| 123 | * *
|
---|
| 124 | * PROGRAMME BASIC D'ACCOMPAGNEMENT: *
|
---|
| 125 | * *
|
---|
| 126 | * 10 BANK0:CLEAR,&HDFEF *
|
---|
| 127 | * 20 LOADM"ECHOCAR.BIN" *
|
---|
| 128 | * 30 CLS:LOCATE0,0,0 *
|
---|
| 129 | * 40 ATTRB1:PRINT"EN 40 COLONNES" *
|
---|
| 130 | * 50 GOSUB 100 *
|
---|
| 131 | * 60 CONSOLE,,,,1 *
|
---|
| 132 | * 70 ATTRB1:PRINT"EN 80 COLONNES" *
|
---|
| 133 | * 80 GOSUB 100 *
|
---|
| 134 | * 90 CONSOLE,,,,0:SCREEN4,6,6:END *
|
---|
| 135 | * 100 BANK0 *
|
---|
| 136 | * 110 DO *
|
---|
| 137 | * 120 EXEC &HDF00 *
|
---|
| 138 | * 130 IF MTRIG(0) THEN EXIT *
|
---|
| 139 | * 140 LOOP *
|
---|
| 140 | * 150 IF MTRIG(0) THEN 150 *
|
---|
| 141 | * 160 RETURN *
|
---|
| 142 | * *
|
---|
| 143 | ****************************************
|
---|
| 144 |
|
---|
| 145 | * Un appui (prolongé !) sur le bouton
|
---|
| 146 | * gauche de la souris vous fait passer
|
---|
| 147 | * en 80 colonnes.
|
---|