source: thomson/code/3rdparty/sources3-lambinet/SCRPRN2.ASM@ ceffc47

main
Last change on this file since ceffc47 was ceffc47, checked in by Adrien Destugues <pulkomandy@…>, 10 years ago

Add that collection of 3rdparty source I had lying on my disk for some time...

git-svn-id: svn://localhost/thomson@51 85ae3b6b-dc8f-4344-a89d-598714f2e4e5

  • Property mode set to 100644
File size: 5.5 KB
Line 
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
49INTER 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
56QUIT PULS CC,X,PC sinon on sort.
57
58SCRPRT 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
68NEWLIN 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
75CONS1 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)
80CONS0 LDD #$4B40 $4B est le code
81 LBSR PUTESC pour le graphisme
82 LDB #$01 en simple densité
83 LBSR PUTCPR suivi de longueur
84NEWCAR LDA $E7C3 ($140=320 octets)
85 ORA #$01
86 STA $E7C3 <- RAMA
87CAR80 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
100INVMAT 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.
127TESTFL LEAX 1,X
128 DEC -15,S jusqu'en fin de
129 BNE NEWCAR ligne
130 LDD #$0A0D code de saut de
131 BSR PUTINT \ligne
132 LEAX $0118,X
133 CMPX #$5FB8 jusqu'en fin d'
134 LBLO NEWLIN écran
135FIN LDD #$1B40 réinitialisation
136 BSR PUTINT de l'imprimante.
137 PULS U,Y,A,B,DP
138 PULS X,CC,PC on sort...
139
140PUTESC PSHS B,A impression d'un
141 LDB #$1B code ESC ($1B) et
142 BSR PUTCPR de 2 autres codes.
143 PULS A,B
144PUTINT PSHS B impression de deux
145 TFR A,B codes (A puis B)
146 BSR PUTCPR
147 PULS B
148PUTCPR PSHS A impression d'un
149BOUCLE LDA $E7C3 Attente \caractere
150 ANDA #$40 passage du bit 6
151 BNE BOUCLE de $E7C3 à 0
152 TFR B,A
153 ANDA #$FE les bits 1 à 7 de
154 ANDB #$01 l'octet sont mis
155 STD -2,S de 1 à 7 en $E7C8
156 LDD $E7C8 et le bit 0 dans
157 ANDA #$01 le bit 0 de $E7C9.
158 ANDB #$FC
159 ADDD -2,S
160 STD $E7C8
161 ORB #$02 signal d'envoi de
162 STB $E7C9 caractère (bit1=1)
163 PULS A,PC
164
165********************************
166* Initialisation *
167********************************
168
169INIT PSHS A,X on installe la
170 LDX #INTER routine sur le
171 STX $67C1 déroutage d'analy-
172 LDA #$7E se d'instructions
173 STA $67C0 BASIC.
174 PULS A,X,PC
175
176
177 END
Note: See TracBrowser for help on using the repository browser.