Top secrets sources NedoPC pentevo

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?


;LINIT  - initialization (hook on "P"-channel and printer init)
;LPRINT - print ZX simbol (with token decode)
;LBYTE  - print simbol (without token decode)
;LCOPY  - print screen

                include ../../macros.a80

                ORG 0X5B00   ;23296
LINIT           JR INIT

LBYTE           JR OUTBYTE

LCOPY           LD HL,GRSET1
                CALL OUTSTR
                LD HL,0X4000
                LD C,0X03
LCOP5           LD B,0X08
LCOP4           PUSH BC
                PUSH HL
                LD HL,GRSET2
                CALL OUTSTR
                POP HL
                LD D,H
                LD E,L
                LD B,0X20
LCOP3           PUSH BC
                LD C,0X08
LCOP2           LD B,0X08
LCOP1           RLC (HL)
                RLA
                INC H
                DJNZ LCOP1
                CALL OUTBYTE
                LD H,D
                LD L,E
                DEC C
                JR NZ,LCOP2
                INC E
                PUSH DE
                POP HL
                POP BC
                DJNZ LCOP3
                POP BC
                DJNZ LCOP4
                LD A,H
                ADD A,0X08
                LD H,A
                DEC C
                JR NZ,LCOP5
                LD HL,GRSET3
OUTSTR          LD A,(HL)
                CP 0XFF
                RET Z
                CALL OUTBYTE
                INC HL
                JR OUTSTR

OUTBYTE         PUSH BC
                PUSH HL
                CALL LP01
                POP HL
                POP BC
                RET

INIT            LD DE,0XFFBF
                LD C,0XFD
                LD B,D          ;FF
                LD A,0XFE               ;for TS or TSFM
                OUT (C),A               ;select first chip
                LD A,7
                OUT (C),A
                LD B,E          ;BF
                LD A,0X7F
                OUT (C),A
                LD B,D          ;FF
                LD A,0X0F
                OUT (C),A
                LD B,E          ;BF
                LD A,0XFE
                OUT (C),A
                LD HL,(0X5C4F)
                LD DE,0X0F
                ADD HL,DE
                LD DE,LPRINT
                LD (HL),E
                INC HL
                LD (HL),D
                LD HL,INTX
                JR OUTSTR

LPRINT          CP 0X0D
                JR NZ,LP02
                CALL LP01
                LD A,0X0A
                JR LP01

LP02            CP 0X20
                RET C
                CP 0X7F
                JR C,LP01
                CP 0XA5
                JP NC,0X09F4
                CP 0X90
                JR C,LP03
                SUB 0X4F
                JR LP01

LP03            LD A,0X20
LP01            PUSH BC
                PUSH AF
                LD BC,0XFFFD
                LD A,0X0E
                OUT (C),A
                LD B,0XBF
                POP AF
                OUT (C),A
                LD B,0XFF
                LD A,0X0F
                OUT (C),A
LP04            CALL 0X1F54
                JR NC,LP05
                IN A,(C)
                RLA
                JR NC,LP04
                LD A,7
                OUT (C),A
                LD B,0XBF
                LD A,0XFF
                OUT (C),A
                PUSH IX
                POP IX
                LD A,0X7F
                OUT (C),A
                POP BC
                RET

LP05            RST 8
                DB 0X14                 ; BREAK into program

                DUPL 0X5BE0-$,0
;Command code for 9-pin EPSON-compatibility printers
;Printer initialization
INTX            DB 0X1B,0X40,0X07,0X07,0XFF,0XFF,0XFF,0XFF
;setup1 (before screen copy)
GRSET1          DB 0X1B,0X41,0X08,0XFF,0XFF,0XFF,0XFF,0XFF
;setup2 (every new line)
GRSET2          DB 0X0D,0X0A,0X1B,0X2A,0X05,0X00,0X01,0XFF
;setup2 (after complete screen copy)
GRSET3          DB 0X0D,0X0A,0X1B,0X32,0X07,0X07,0X07,0XFF