Subversion Repositories pentevo

Rev

Rev 550 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. ;LINIT  - initialization (hook on "P"-channel and printer init)
  3. ;LPRINT - print ZX simbol (with token decode)
  4. ;LBYTE  - print simbol (without token decode)
  5. ;LCOPY  - print screen
  6.  
  7. AY_PRN_SCR      LD H,0XEF
  8.                 CALL READCMOS
  9.                 AND PRINTER_AY
  10.                 JR NZ,AY_PRN_SCR1
  11.                 LD A,0XB0
  12.                 LD (REG_B),A
  13.                 RET
  14.  
  15. AY_PRN_SCR1     LD HL,GRSET1
  16.                 CALL OUTSTR
  17.                 LD HL,0X4000
  18.                 LD C,3
  19. LCOP5           LD B,8
  20. LCOP4           PUSH BC
  21.                 PUSH HL
  22.                 LD HL,GRSET2
  23.                 CALL OUTSTR
  24.                 POP HL
  25.                 LD D,H
  26.                 LD E,L
  27.                 LD B,0X20
  28. LCOP3           PUSH BC
  29.                 LD C,8
  30. LCOP2           LD B,8
  31. LCOP1           RLC (HL)
  32.                 RLA
  33.                 INC H
  34.                 DJNZ LCOP1
  35.                 CALL AY_PRN_BYTE
  36.                 LD H,D
  37.                 LD L,E
  38.                 DEC C
  39.                 JR NZ,LCOP2
  40.                 INC E
  41.                 PUSH DE
  42.                 POP HL
  43.                 POP BC
  44.                 DJNZ LCOP3
  45.                 POP BC
  46.                 DJNZ LCOP4
  47.                 LD A,H
  48.                 ADD A,8
  49.                 LD H,A
  50.                 DEC C
  51.                 JR NZ,LCOP5
  52.                 LD HL,0X0EDE
  53.                 LD (ADRRET_L),HL
  54.                 LD HL,GRSET3
  55. OUTSTR          LD A,(HL)
  56.                 CP 0XFF
  57.                 RET Z
  58.                 CALL AY_PRN_BYTE
  59.                 INC HL
  60.                 JR OUTSTR
  61.  
  62. AY_PRN_A_       LD H,0XEF
  63.                 CALL READCMOS
  64.                 AND PRINTER_AY
  65.                 JR Z,AY_PRN_A_1
  66.                 LD A,(REG_B)
  67.                 CP 3
  68.                 SBC A,A
  69.                 LD (REG_A),A
  70.                 RET
  71.  
  72. AY_PRN_A_1      LD A,(0X80FD)
  73. AY_PRN_BYTE     PUSH BC
  74.                 PUSH HL
  75.                 CALL LP01
  76.                 POP HL
  77.                 POP BC
  78.                 RET
  79.  
  80. AY_PRN_INIT     LD DE,0XFFBF
  81.                 LD C,0XFD
  82.                 LD B,D          ;FF
  83.                 LD A,0XFE               ;for TS or TSFM
  84.                 OUT (C),A               ;select first chip
  85.                 LD A,7
  86.                 OUT (C),A
  87.                 LD B,E          ;BF
  88.                 LD A,0X7F
  89.                 OUT (C),A
  90.                 LD B,D          ;FF
  91.                 LD A,0X0F
  92.                 OUT (C),A
  93.                 LD B,E          ;BF
  94.                 LD A,0XFE
  95.                 OUT (C),A
  96.                 LD HL,INTX
  97.                 JR OUTSTR
  98.  
  99. EXIT_09F4       LD HL,0X09F4
  100.                 LD (ADRRET_L),HL
  101.                 LD SP,(INTERNAL_SP)
  102.                 RET
  103.  
  104. AY_PRN_TOKEN    LD H,0XEF
  105.                 CALL READCMOS
  106.                 AND PRINTER_AY
  107.                 JR NZ,EXIT_09F4
  108.                 LD A,(REG_A)
  109.                 CP 0X0D
  110.                 JR NZ,LP02
  111.                 CALL LP01
  112.                 LD A,0X0A
  113.                 JR LP01
  114.  
  115. LP02            CP 0X20
  116.                 RET C
  117.                 CP 0X7F
  118.                 JR C,LP01
  119.                 CP 0XA5
  120.                 JR NC,EXIT_09F4         ;JP NC,0X09F4
  121.                 CP 0X90
  122.                 JR C,LP03
  123.                 SUB 0X4F
  124.                 JR LP01
  125.  
  126. LP03            LD A,0X20
  127. LP01            PUSH BC
  128.                 PUSH AF
  129.                 LD BC,0XFFFD
  130.                 LD A,0X0E
  131.                 OUT (C),A
  132.                 LD B,0XBF
  133.                 POP AF
  134.                 OUT (C),A
  135.                 LD B,0XFF
  136.                 LD A,0X0F
  137.                 OUT (C),A
  138. LP04            CALL BREAK_KEY
  139.                 JR NC,LP05
  140.                 IN A,(C)
  141.                 RLA
  142.                 JR NC,LP04
  143.                 LD A,7
  144.                 OUT (C),A
  145.                 LD B,0XBF
  146.                 LD A,0XFF
  147.                 OUT (C),A
  148.                 PUSH IX
  149.                 POP IX
  150.                 LD A,0X7F
  151.                 OUT (C),A
  152.                 POP BC
  153.                 RET
  154.  
  155. LP05            LD HL,0X1B7B
  156.                 LD (ADRRET_L),HL
  157.                 LD HL,EI_DI
  158.                 SET 2,(HL)
  159.                 LD SP,(INTERNAL_SP)
  160.                 RET
  161.  
  162. ;Command code for 9-pin EPSON-compatibility printers
  163. ;Printer initialization
  164. INTX            DB 0X1B,0X40,0X07,0X07,0XFF
  165. ;setup1 (before screen copy)
  166. GRSET1          DB 0X1B,0X41,0X08,0XFF
  167. ;setup2 (every new line)
  168. GRSET2          DB 0X0D,0X0A,0X1B,0X2A,0X05,0X00,0X01,0XFF
  169. ;setup2 (after complete screen copy)
  170. GRSET3          DB 0X0D,0X0A,0X1B,0X32,0X07,0X07,0X07,0XFF
  171.  
  172.