1 | ***************************************
|
---|
2 |
|
---|
3 | ** ** *** ** ** * * *** *** * * * ***
|
---|
4 | * * * * * * ** * * * * * ** * *
|
---|
5 | ** * ** ** ** * ** *** ** * * ** *
|
---|
6 | * * * * * * * * * * * * * * *
|
---|
7 | ** ** * * ** ** * * * * * * * * *
|
---|
8 |
|
---|
9 | ***************************************
|
---|
10 | * *
|
---|
11 | * Par Michel SAINT-BRIANT / ASCI 1991 *
|
---|
12 | * *
|
---|
13 | ***************************************
|
---|
14 |
|
---|
15 | * Cette petite routine installée en
|
---|
16 | * résident permet à tout programme BASIC
|
---|
17 | * 512 d'émuler une imprimante compatible
|
---|
18 | * IBM Proprinter (toutes les imprimantes
|
---|
19 | * pour ordinateur de type PC.
|
---|
20 |
|
---|
21 | ****************************************
|
---|
22 | * *
|
---|
23 | * Ecrit spécialement pour les lecteurs *
|
---|
24 | * *
|
---|
25 | * de MICRONEWS (NANCY le 10/10/91) *
|
---|
26 | * *
|
---|
27 | ****************************************
|
---|
28 |
|
---|
29 | ORG $7800
|
---|
30 |
|
---|
31 | ************** ^^^^ ****************
|
---|
32 | * En fonction de certains programmes
|
---|
33 | * qui utilisent la RAM en $7800 on
|
---|
34 | * peut modifier cette valeur (jusqu'à
|
---|
35 | * $9C00/$9D00 -> Attention à la pile!)
|
---|
36 | ************************************
|
---|
37 |
|
---|
38 | ************************************
|
---|
39 | * Déroutage de l'analyse des instruc-
|
---|
40 | * tions BASIC. On cherche les codes
|
---|
41 | * $FF,$A4,$AB correspondant à SCREEN-
|
---|
42 | * PRINT et on les remplacera par un
|
---|
43 | * TROFF inoffensif de code $91 après
|
---|
44 | * avoir incrémenté de 2 le pointeur d'
|
---|
45 | * instructions BASIC en $61C7.
|
---|
46 | ************************************
|
---|
47 |
|
---|
48 |
|
---|
49 | INTER PSHS CC,X
|
---|
50 | CMPA #$FF Ordre BASIC 2ème
|
---|
51 | BNE QUIT \série
|
---|
52 | LDX $61C7
|
---|
53 | LDX 1,X
|
---|
54 | CMPX #$A4AB si=SCREENPRINT
|
---|
55 | BEQ SCRPRT alors>SCRPRT
|
---|
56 | QUIT PULS CC,X,PC sinon on sort.
|
---|
57 |
|
---|
58 | SCRPRT LDX $61C7 pointeur=
|
---|
59 | LEAX 2,X pointeur+2
|
---|
60 | STX $61C7
|
---|
61 | LDA #$91 En sortie on va
|
---|
62 | PSHS DP,B,A,Y,U \simuler un
|
---|
63 | LDX #$4078 \TROFF
|
---|
64 | LDB #$14 on éteint le cur-
|
---|
65 | JSR $E803 seur (pollution!)
|
---|
66 | LDD #$1B40 <-Ajouter ici d'
|
---|
67 | LBSR PUTINT éventuels codes
|
---|
68 | NEWLIN ORCC #$50 de commandes pour
|
---|
69 | LDA #$28 impression spéci-
|
---|
70 | STA -15,S ales (dble frappe
|
---|
71 | LDD #$3318 condensé,etc...)
|
---|
72 | LBSR PUTESC
|
---|
73 | TST $605F est-ce en 40 col?
|
---|
74 | BEQ CONS0
|
---|
75 | CONS1 LDD #$4C80 $4C est le code
|
---|
76 | LBSR PUTESC pour le graphisme
|
---|
77 | LDB #$2 en double densité
|
---|
78 | LBSR PUTCPR suivi de longueur
|
---|
79 | BRA NEWCAR ($280=640 octets)
|
---|
80 | CONS0 LDD #$4B40 $4B est le code
|
---|
81 | LBSR PUTESC pour le graphisme
|
---|
82 | LDB #$01 en simple densité
|
---|
83 | LBSR PUTCPR suivi de longueur
|
---|
84 | NEWCAR LDA $E7C3 ($140=320 octets)
|
---|
85 | ORA #$01
|
---|
86 | STA $E7C3 <- RAMA
|
---|
87 | CAR80 LDA -$78,X lit le caractère
|
---|
88 | LDB -$50,X (les 8 lignes et
|
---|
89 | STD -14,S les stocke en
|
---|
90 | LDA -$28,X dessous de la pi-
|
---|
91 | LDB ,X le en sécurité)
|
---|
92 | STD -12,S
|
---|
93 | LDA $28,X
|
---|
94 | LDB $50,X
|
---|
95 | STD -10,S
|
---|
96 | LDA $78,X
|
---|
97 | LDB $A0,X
|
---|
98 | STD -8,S
|
---|
99 | LDA #$08 inversion de la
|
---|
100 | INVMAT ROL -14,S matrice 8x8 du
|
---|
101 | ROLB caractère-écran
|
---|
102 | ROL -13,S pour en faire
|
---|
103 | ROLB la matrice 8x8
|
---|
104 | ROL -12,S du caractère-
|
---|
105 | ROLB imprimante
|
---|
106 | ROL -11,S >> C >>>
|
---|
107 | ROLB / \
|
---|
108 | ROL -10,S / \
|
---|
109 | ROLB ROL= <-xxxxxxxx-<
|
---|
110 | ROL -9,S <<<<<<<<
|
---|
111 | ROLB
|
---|
112 | ROL -8,S rotation à gauche
|
---|
113 | ROLB le carry (C) va en
|
---|
114 | ROL -7,S b0,b0 en b1,b1 >b2
|
---|
115 | ROLB etc...b6>b7 et b7
|
---|
116 | BSR PUTCPR va dans le carry C
|
---|
117 | DECA
|
---|
118 | BNE INVMAT
|
---|
119 | LDA $E7C3 est-on sur RAMA?
|
---|
120 | BITA #$01
|
---|
121 | BEQ TESTFL test de fin de li-
|
---|
122 | TST $605F test mode \gne.
|
---|
123 | BEQ TESTFL si 80 col alors
|
---|
124 | ANDA #$FE on passe en RAMB
|
---|
125 | STA $E7C3 et on imprime le
|
---|
126 | BRA CAR80 caractère suivant.
|
---|
127 | TESTFL LEAX 1,X
|
---|
128 | DEC -15,S jusqu'en fin de
|
---|
129 | BNE NEWCAR ligne
|
---|
130 | LEAX $0118,X
|
---|
131 | CMPX #$5FB8 jusqu'en fin d'
|
---|
132 | BHS FIN écran
|
---|
133 | LDD #$0A0D code de saut de
|
---|
134 | BSR PUTINT \ligne
|
---|
135 | LBRA NEWLIN
|
---|
136 | FIN LDD #$1B40 réinitialisation
|
---|
137 | BSR PUTINT de l'imprimante.
|
---|
138 | PULS U,Y,A,B,DP
|
---|
139 | PULS X,CC,PC on sort...
|
---|
140 |
|
---|
141 | PUTESC PSHS B,A impression d'un
|
---|
142 | LDB #$1B code ESC ($1B) et
|
---|
143 | BSR PUTCPR de 2 autres codes.
|
---|
144 | PULS A,B
|
---|
145 | PUTINT PSHS B impression de deux
|
---|
146 | TFR A,B codes (A puis B)
|
---|
147 | BSR PUTCPR
|
---|
148 | PULS B
|
---|
149 | PUTCPR PSHS A impression d'un
|
---|
150 | BOUCLE LDA $E7C3 Attente \caractere
|
---|
151 | ANDA #$40 passage du bit 6
|
---|
152 | BNE BOUCLE de $E7C3 à 0
|
---|
153 | TFR B,A
|
---|
154 | ANDA #$FE les bits 1 à 7 de
|
---|
155 | ANDB #$01 l'octet sont mis
|
---|
156 | STD -2,S de 1 à 7 en $E7C8
|
---|
157 | LDD $E7C8 et le bit 0 dans
|
---|
158 | ANDA #$01 le bit 0 de $E7C9.
|
---|
159 | ANDB #$FC
|
---|
160 | ADDD -2,S
|
---|
161 | STD $E7C8
|
---|
162 | ORB #$02 signal d'envoi de
|
---|
163 | STB $E7C9 caractère (bit1=1)
|
---|
164 | PULS A,PC
|
---|
165 |
|
---|
166 | ********************************
|
---|
167 | * Initialisation *
|
---|
168 | ********************************
|
---|
169 |
|
---|
170 | INIT PSHS A,X on installe la
|
---|
171 | LDX #INTER routine sur le
|
---|
172 | STX $67C1 déroutage d'analy-
|
---|
173 | LDA #$7E se d'instructions
|
---|
174 | STA $67C0 BASIC.
|
---|
175 | PULS A,X,PC
|
---|
176 |
|
---|
177 |
|
---|
178 | END
|
---|