Subversion Repositories pentevo

Rev

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

  1.  
  2. ;LAST UPDATE: 23.01.2012 savelij
  3.  
  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
  8.  
  9. AY_PRN_SCR      LD H,0XEF
  10.                 CALL READCMOS
  11.                 AND PRINTER_AY
  12.                 JR NZ,AY_PRN_SCR1
  13.                 LD HL,0X0EAF
  14.                 LD (RADRRET_L),HL
  15.                 LD A,0XB0
  16.                 LD (RREG_B),A
  17.                 RET
  18.  
  19. AY_PRN_SCR1     LD HL,GRSET1
  20.                 CALL OUTSTR
  21.                 LD HL,0X4000
  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
  31.                 LD B,0X20
  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
  56.                 LD HL,0X0EDE
  57.                 LD (RADRRET_L),HL
  58.                 LD HL,GRSET3
  59. OUTSTR          LD A,(HL)
  60.                 CP 0XFF
  61.                 RET Z
  62.                 CALL AY_PRN_BYTE
  63.                 INC HL
  64.                 JR OUTSTR
  65.  
  66. AY_PRN_A_       LD H,0XEF
  67.                 CALL READCMOS
  68.                 AND PRINTER_AY
  69.                 JR NZ,AY_PRN_A_1
  70.                 LD A,(RREG_B)
  71.                 CP 3
  72.                 SBC A,A
  73.                 LD (RREG_A),A
  74.                 LD HL,0X0EF8
  75.                 LD (RADRRET_L),HL
  76.                 RET
  77.  
  78. AY_PRN_A_1      LD A,(RREG_A)   ;(0X80FD)
  79. AY_PRN_BYTE     PUSH BC
  80.                 PUSH HL
  81.                 CALL LP01
  82.                 POP HL
  83.                 POP BC
  84.                 RET
  85.  
  86. AY_PRN_INIT     LD H,0XEF
  87.                 CALL READCMOS
  88.                 AND PRINTER_AY
  89.                 JR NZ,AY_PRN_INIT1
  90.                 LD HL,0X0EDF
  91.                 LD (RADRRET_L),HL
  92.                 RET
  93.  
  94. AY_PRN_INIT1    LD DE,0XFFBF
  95.                 LD C,0XFD
  96.                 LD B,D          ;FF
  97.                 LD A,0XFE               ;for TS or TSFM
  98.                 OUT (C),A               ;select first chip
  99.                 LD A,7
  100.                 OUT (C),A
  101.                 LD B,E          ;BF
  102.                 LD A,0X7F
  103.                 OUT (C),A
  104.                 LD B,D          ;FF
  105.                 LD A,0X0F
  106.                 OUT (C),A
  107.                 LD B,E          ;BF
  108.                 LD A,0XFE
  109.                 OUT (C),A
  110.                 LD HL,INTX
  111.                 JR OUTSTR
  112.  
  113. EXIT_09F4       LD HL,0X09F4
  114.                 LD (RADRRET_L),HL
  115.                 LD SP,(INTERNAL_SP)
  116.                 RET
  117.  
  118. AY_PRN_TOKEN    LD H,0XEF
  119.                 CALL READCMOS
  120.                 AND PRINTER_AY
  121.                 JR Z,EXIT_09F4
  122.                 LD A,(RREG_A)
  123.                 CP 0X0D
  124.                 JR NZ,LP02
  125.                 CALL LP01
  126.                 LD A,0X0A
  127.                 JR LP01
  128.  
  129. LP02            CP 0X20
  130.                 RET C
  131.                 CP 0X7F
  132.                 JR C,LP01
  133.                 CP 0XA5
  134.                 JR NC,EXIT_09F4
  135.                 CP 0X90
  136.                 JR C,LP03
  137.                 SUB 0X4F
  138.                 JR LP01
  139.  
  140. LP03            LD A,0X20
  141. LP01            PUSH BC
  142.                 PUSH AF
  143.                 LD BC,0XFFFD
  144.                 LD A,0X0E
  145.                 OUT (C),A
  146.                 LD B,0XBF
  147.                 POP AF
  148.                 OUT (C),A
  149.                 LD B,0XFF
  150.                 LD A,0X0F
  151.                 OUT (C),A
  152. LP04            CALL BREAK_KEY
  153.                 JR NC,LP05
  154.                 IN A,(C)
  155.                 RLA
  156.                 JR NC,LP04
  157.                 LD A,7
  158.                 OUT (C),A
  159.                 LD B,0XBF
  160.                 LD A,0XFF
  161.                 OUT (C),A
  162.                 PUSH IX
  163.                 POP IX
  164.                 LD A,0X7F
  165.                 OUT (C),A
  166.                 POP BC
  167.                 RET
  168.  
  169. LP05            LD HL,0X1B7B
  170.                 LD (RADRRET_L),HL
  171.                 LD HL,REI_DI
  172.                 SET 2,(HL)
  173.                 LD SP,(INTERNAL_SP)
  174.                 RET
  175.  
  176. ;Command code for 9-pin EPSON-compatibility printers
  177. ;Printer initialization
  178. INTX            DB 0X1B,0X40,0X07,0X07,0XFF
  179. ;setup1 (before screen copy)
  180. GRSET1          DB 0X1B,0X41,0X08,0XFF
  181. ;setup2 (every new line)
  182. GRSET2          DB 0X0D,0X0A,0X1B,0X2A,0X05,0X00,0X01,0XFF
  183. ;setup2 (after complete screen copy)
  184. GRSET3          DB 0X0D,0X0A,0X1B,0X32,0X07,0X07,0X07,0XFF
  185.  
  186. BREAK_KEY       LD A,0X7F
  187.                 IN A,(0XFE)
  188.                 RRA
  189.                 RET C
  190.                 LD A,0XFE
  191.                 IN A,(0XFE)
  192.                 RRA
  193.                 RET
  194.