Rev 761 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
507 | savelij | 1 | |
1186 | savelij | 2 | ; LAST UPDATE: 16.02.2025 savelij |
550 | savelij | 3 | |
1186 | savelij | 4 | ; LINIT - initialization (hook on "P"-channel and printer init) |
5 | ; LPRINT - print ZX simbol (with token decode) |
||
6 | ; LBYTE - print simbol (without token decode) |
||
7 | ; LCOPY - print screen |
||
507 | savelij | 8 | |
1186 | savelij | 9 | AY_PRN_SCR LD H,CMOS.CRCHIGH |
507 | savelij | 10 | CALL READCMOS |
1186 | savelij | 11 | AND CMOS_ED.M_PRINTER_AY |
507 | savelij | 12 | JR NZ,AY_PRN_SCR1 |
1186 | savelij | 13 | LD HL,0x0EAF |
553 | savelij | 14 | LD (RADRRET_L),HL |
1186 | savelij | 15 | LD A,0xB0 |
553 | savelij | 16 | LD (RREG_B),A |
507 | savelij | 17 | RET |
18 | |||
19 | AY_PRN_SCR1 LD HL,GRSET1 |
||
20 | CALL OUTSTR |
||
1186 | savelij | 21 | LD HL,0x4000 |
507 | savelij | 22 | LD C,3 |
23 | LCOP5 LD B,8 |
||
24 | LCOP4 PUSH BC |
||
25 | PUSH HL |
||
26 | LD HL,GRSET2 |
||
27 | CALL OUTSTR |
||
28 | POP HL |
||
29 | LD D,H |
||
30 | LD E,L |
||
1186 | savelij | 31 | LD B,0x20 |
507 | savelij | 32 | LCOP3 PUSH BC |
33 | LD C,8 |
||
34 | LCOP2 LD B,8 |
||
35 | LCOP1 RLC (HL) |
||
36 | RLA |
||
37 | INC H |
||
38 | DJNZ LCOP1 |
||
39 | CALL AY_PRN_BYTE |
||
40 | LD H,D |
||
41 | LD L,E |
||
42 | DEC C |
||
43 | JR NZ,LCOP2 |
||
44 | INC E |
||
45 | PUSH DE |
||
46 | POP HL |
||
47 | POP BC |
||
48 | DJNZ LCOP3 |
||
49 | POP BC |
||
50 | DJNZ LCOP4 |
||
51 | LD A,H |
||
52 | ADD A,8 |
||
53 | LD H,A |
||
54 | DEC C |
||
55 | JR NZ,LCOP5 |
||
1186 | savelij | 56 | LD HL,0x0EDE |
553 | savelij | 57 | LD (RADRRET_L),HL |
507 | savelij | 58 | LD HL,GRSET3 |
59 | OUTSTR LD A,(HL) |
||
1186 | savelij | 60 | CP 0xFF |
507 | savelij | 61 | RET Z |
62 | CALL AY_PRN_BYTE |
||
63 | INC HL |
||
64 | JR OUTSTR |
||
65 | |||
1186 | savelij | 66 | AY_PRN_A_ LD H,CMOS.CRCHIGH |
507 | savelij | 67 | CALL READCMOS |
1186 | savelij | 68 | AND CMOS_ED.M_PRINTER_AY |
550 | savelij | 69 | JR NZ,AY_PRN_A_1 |
553 | savelij | 70 | LD A,(RREG_B) |
507 | savelij | 71 | CP 3 |
72 | SBC A,A |
||
553 | savelij | 73 | LD (RREG_A),A |
1186 | savelij | 74 | LD HL,0x0EF8 |
553 | savelij | 75 | LD (RADRRET_L),HL |
507 | savelij | 76 | RET |
77 | |||
585 | savelij | 78 | AY_PRN_A_1 LD A,(RREG_A) |
507 | savelij | 79 | AY_PRN_BYTE PUSH BC |
80 | PUSH HL |
||
81 | CALL LP01 |
||
82 | POP HL |
||
83 | POP BC |
||
84 | RET |
||
85 | |||
1186 | savelij | 86 | AY_PRN_INIT LD H,CMOS.CRCHIGH |
550 | savelij | 87 | CALL READCMOS |
1186 | savelij | 88 | AND CMOS_ED.M_PRINTER_AY |
550 | savelij | 89 | JR NZ,AY_PRN_INIT1 |
1186 | savelij | 90 | LD HL,0x0EDF |
553 | savelij | 91 | LD (RADRRET_L),HL |
550 | savelij | 92 | RET |
93 | |||
1186 | savelij | 94 | AY_PRN_INIT1 LD DE,0xFFBF |
95 | LD C,0xFD |
||
507 | savelij | 96 | LD B,D ;FF |
1186 | savelij | 97 | LD A,0xFE ;for TS or TSFM |
507 | savelij | 98 | OUT (C),A ;select first chip |
99 | LD A,7 |
||
100 | OUT (C),A |
||
101 | LD B,E ;BF |
||
1186 | savelij | 102 | LD A,0x7F |
507 | savelij | 103 | OUT (C),A |
104 | LD B,D ;FF |
||
1186 | savelij | 105 | LD A,0x0F |
507 | savelij | 106 | OUT (C),A |
107 | LD B,E ;BF |
||
1186 | savelij | 108 | LD A,0xFE |
507 | savelij | 109 | OUT (C),A |
110 | LD HL,INTX |
||
111 | JR OUTSTR |
||
112 | |||
1186 | savelij | 113 | EXIT_09F4 LD HL,0x09F4 |
553 | savelij | 114 | LD (RADRRET_L),HL |
507 | savelij | 115 | RET |
116 | |||
1186 | savelij | 117 | AY_PRN_TOKEN LD H,CMOS.CRCHIGH |
507 | savelij | 118 | CALL READCMOS |
1186 | savelij | 119 | AND CMOS_ED.M_PRINTER_AY |
550 | savelij | 120 | JR Z,EXIT_09F4 |
553 | savelij | 121 | LD A,(RREG_A) |
1186 | savelij | 122 | CP 0x0D |
507 | savelij | 123 | JR NZ,LP02 |
124 | CALL LP01 |
||
1186 | savelij | 125 | LD A,0x0A |
507 | savelij | 126 | JR LP01 |
127 | |||
1186 | savelij | 128 | LP02 CP 0x20 |
507 | savelij | 129 | RET C |
1186 | savelij | 130 | CP 0x7F |
507 | savelij | 131 | JR C,LP01 |
1186 | savelij | 132 | CP 0xA5 |
550 | savelij | 133 | JR NC,EXIT_09F4 |
1186 | savelij | 134 | CP 0x90 |
507 | savelij | 135 | JR C,LP03 |
1186 | savelij | 136 | SUB 0x4F |
507 | savelij | 137 | JR LP01 |
138 | |||
1186 | savelij | 139 | LP03 LD A,0x20 |
507 | savelij | 140 | LP01 PUSH BC |
141 | PUSH AF |
||
1186 | savelij | 142 | LD BC,0xFFFD |
143 | LD A,0x0E |
||
507 | savelij | 144 | OUT (C),A |
1186 | savelij | 145 | LD B,0xBF |
507 | savelij | 146 | POP AF |
147 | OUT (C),A |
||
1186 | savelij | 148 | LD B,0xFF |
149 | LD A,0x0F |
||
507 | savelij | 150 | OUT (C),A |
151 | LP04 CALL BREAK_KEY |
||
152 | JR NC,LP05 |
||
153 | IN A,(C) |
||
154 | RLA |
||
155 | JR NC,LP04 |
||
156 | LD A,7 |
||
157 | OUT (C),A |
||
1186 | savelij | 158 | LD B,0xBF |
159 | LD A,0xFF |
||
507 | savelij | 160 | OUT (C),A |
161 | PUSH IX |
||
162 | POP IX |
||
1186 | savelij | 163 | LD A,0x7F |
507 | savelij | 164 | OUT (C),A |
165 | POP BC |
||
166 | RET |
||
167 | |||
1186 | savelij | 168 | LP05 LD HL,0x1B7B |
553 | savelij | 169 | LD (RADRRET_L),HL |
170 | LD HL,REI_DI |
||
507 | savelij | 171 | SET 2,(HL) |
172 | RET |
||
173 | |||
1186 | savelij | 174 | ; Command code for 9-pin EPSON-compatibility printers |
175 | ; Printer initialization |
||
176 | INTX DB 0x1B,0x40,0x07,0x07,0xFF |
||
177 | ; setup1 (before screen copy) |
||
178 | GRSET1 DB 0x1B,0x41,0x08,0xFF |
||
179 | ; setup2 (every new line) |
||
180 | GRSET2 DB 0x0D,0x0A,0x1B,0x2A,0x05,0x00,0x01,0xFF |
||
181 | ; setup2 (after complete screen copy) |
||
182 | GRSET3 DB 0x0D,0x0A,0x1B,0x32,0x07,0x07,0x07,0xFF |
||
573 | savelij | 183 | |
1186 | savelij | 184 | BREAK_KEY LD A,0x7F |
185 | IN A,(0xFE) |
||
573 | savelij | 186 | RRA |
187 | RET C |
||
1186 | savelij | 188 | LD A,0xFE |
189 | IN A,(0xFE) |
||
573 | savelij | 190 | RRA |
191 | RET |