DRUCK ASM;--------------------------------- ; ; Universeller ; Druckertreiber f}r M001 ; M003 ; M021 ; ;- ohne Filter ;- ohne Hardcopy-Funktion ;- ohne Druckerinitialisierung ; ; ; ` ML-Soft 08.07.92 ;DRUCK.ASM bis 20.11.93 ;--------------------------------- ;M001: PIO1AD EQU 04H ;PIO-A Daten PIO1BD EQU 05H ;PIO-B Daten PIO1AS EQU 06H ;PIO-A Steuer PIO1BS EQU 07H ;PIO-B Steuer ;M003: SIOD EQU 08H ;SIO-A Daten SIOS EQU 0AH ;SIO-A Steuer CTCS EQU 0CH ;CTC Kanal 0 ;M021: PIO8AD EQU 90H ;PIO-A Daten PIO8BD EQU 91H ;PIO-B Daten PIO8AS EQU 92H ;PIO-A Steuer PIO8BS EQU 93H ;PIO-B Steuer ARGN EQU 0B781H HCADR EQU 0B799H CURSO EQU 0B7A0H UOUT1 EQU 0B7BEH INTV1 EQU 0B7E2H INTV1L EQU 0B7E4H PV1 EQU 0F003H CRT EQU 00H KBD EQU 04H KBDZ EQU 0EH WAIT EQU 14H AHEX EQU 1CH OSTR EQU 23H MODU EQU 26H V24OUT EQU 47H LF EQU 0AH CLS EQU 0CH CR EQU 0DH ESC EQU 1BH ;------- DW 7F7FH DB 'DRUCK',1 ;Module suchen, Anzeige: LD BC,780H ;Schacht 7 MSPR: IN A,(C) ;Kennbyte lesen LD HL,M001 LD E,1 CP 0EFH ;M001? JP Z,MS LD HL,M003 LD E,3 CP 0EEH ;M003? JP Z,MS MSSU: INC B ;Schacht + 1 JR NZ,MSPR LD A,0CFH ;B Bitbetrieb OUT (PIO8BS),A XOR A ;alles Ausg{nge OUT (PIO8BS),A LD A,55H OUT (PIO8BD),A IN A,(PIO8BD) CP 55H ;M021? JR Z,MS21 ERROR: CALL PV1 DB OSTR DB CR,LF DB ' Kein Treiber aktiv!' DB 7,CR,LF NOP RET MS21: LD HL,M021 ;Sprungadresse LD E,21H ;Modulnummer MS: CALL PV1 DB OSTR DB CR,LF DB ' Druck }ber M0',0 LD A,E CALL PV1 DB AHEX ;Modul CALL PV1 DB OSTR DB ' (ja/nein)? _',8 NOP KEYM: CALL KEY CP 'N' JR NZ,KEYM1 LD A,B AND A JR Z,ERROR JR MSSU KEYM1: CP 'J' JR NZ,KEYM JP (HL) ;Ansprung ;Druckertreiber M003: M003: CALL PV1 DB OSTR DB CR,LF DB ' Kanal 1 oder 2? _',8 NOP KKEY: CALL KEY SUB '1' JR C,KKEY ;<1 CP 3 JR NC,KKEY ;>2 LD (KAN),A LD IY,(INTV1) ;V.24- LD A,8 ;Param. LD (INTV1L),A LD (IY+2),4 ;WR 4 LD (IY+3),4 LD (IY+4),3 ;WR 3 LD (IY+5),20H LD (IY+6),5 ;WR 5 LD (IY+7),2AH CALL PV1 DB OSTR DB CR,LF DB ' Bautrate:',CR,LF DB ' (1) 9600 ' DB ' (5) 600',CR,LF DB ' (2) 4800 ' DB ' (6) 300',CR,LF DB ' (3) 2400 ' DB ' (7) 150',CR,LF DB ' (4) 1200 ' DB ' (8) 110',CR,LF DB ' Nummer: _',8 NOP BKEY: CALL KEY SUB '1' JR C,BKEY ;< 1 CP 9 JR NC,BKEY ;> 8 PUSH AF ;Baudrate merk. CALL PV1 DB OSTR DB CR,LF DB ' Parit{t ' DB '(ja/nein)? _',8 NOP PKEY: CALL KEY CP 'N' JR Z,STB CP 'J' JR NZ,PKEY SET 0,(IY+3) ;Parit{t CALL PV1 DB OSTR DB CR,LF DB ' gerade oder ' DB 'ungerade? _',8 NOP EKEY: CALL KEY CP 'U' JR Z,STB CP 'G' JR NZ,EKEY SET 1,(IY+3) ;gerade STB: CALL PV1 DB OSTR DB CR,LF DB ' 1 oder 2 ' DB 'Stoppbits? _',8 NOP TKEY: CALL KEY CP '1' JR Z,ONE CP '2' JR NZ,TKEY SET 3,(IY+3) ;2 Stopbits ONE: POP AF ;Baudrate LD H,A CP 2 JR C,CMD1 CP 5 JR C,CMD2 CMD1: LD A,47H ;CTC - Z{hler JR CTC CMD2: LD A,7 ;CTC - Zeitgeber CTC: LD (IY),A LD A,H ADD A,A LD DE,BTAB ADD A,E LD E,A LD A,D ADC A,0 LD D,A LD A,(DE) LD (IY+1),A ;Zeitkonst. CTC INC DE LD A,(DE) OR (IY+3) LD (IY+3),A ;Teiler SIO CALL PV1 DB OSTR DB CR,LF DB ' 7 oder 8 Bits' DB ' je Zeichen? _',8 NOP CKEY: CALL KEY CP '7' JR Z,SEVEN CP '8' JR NZ,CKEY SET 6,(IY+7) ;8 Bit SEVEN: LD L,B ;Modulschacht LD D,1 ;einschalten LD A,2 ;2 Parameter CALL PV1 DB MODU LD A,(KAN) ADD A,CTCS LD C,A DI LD B,2 LD HL,(INTV1) OTIR ;CTC init. DEC C DEC C ;SIOS LD B,6 OTIR ;SIO init. LD HL,PCH3 LD (UOUT1),HL EI PRE: CALL PV1 DB OSTR DB CR,LF DB ' Druck erfolgt }ber ' DB 'USER-Out 2!',CR,LF NOP RET ;Tabelle f}r Baudraten: BTAB: DW 5BH ;9600 DW 0B6H ;4800 DW 02EH ;2400 DW 5BH ;1200 DW 0B6H ;600 DW 40B6H ;300 DW 0C05BH ;150 DW 0C07CH ;110 ;Tastaturabfrage: KEY: CALL PV1 DB KBD JR NC,KEY ;keine Taste CP 20H JR C,KEY ;<20H CP 60H JR C,KEYA SUB 20H ;-> gro~ KEYA: PUSH AF CALL PV1 DB CRT LD A,8 CALL PV1 DB CRT POP AF RET ;Druckertreiber M001: M001: LD L,B ;Modulschacht LD D,1 ;einschalten LD A,2 ;2 Parameter CALL PV1 DB MODU DI LD A,0CFH ;A Bitbetrieb OUT (PIO1AS),A XOR A ;alles Ausg{nge OUT (PIO1AS),A LD A,0CFH ;B Bitbetrieb OUT (PIO1BS),A LD A,0FEH ;Bit 0 Ausgang OUT (PIO1BS),A LD A,1 ;STROBE passiv OUT (PIO1BD),A LD HL,PCH1 LD (UOUT1),HL EI JP PRE ;------- ;Druckertreiber M021: M021: DI LD A,0CFH ;A Bitbetrieb OUT (PIO8AS),A LD A,7FH ;Bit 7 Ausgang OUT (PIO8AS),A LD A,80H ;STROBE passiv OUT (PIO8AD),A LD HL,PCH8 LD (UOUT1),HL EI JP PRE PCH1: PUSH AF BUSY1: IN A,(PIO1BD) BIT 2,A ;BUSY? JR NZ,BUSY1 POP AF PUSH AF OUT (PIO1AD),A ;Zeichen XOR A OUT (PIO1BD),A ;STROBE- LD A,1 OUT (PIO1BD),A ;Impuls POP AF RET PCH3: PUSH BC PUSH AF LD A,(KAN) ADD A,SIOS BUSY3: IN A,(C) BIT 2,A ;bereit? JR NZ,PR31 ;ja LD A,1 PUSH BC CALL PV1 DB WAIT POP BC JR BUSY3 PR31: DEC C DEC C ;SIOD POP AF OUT (C),A POP BC RET KAN: DB 0 ;SIO-Kanal PCH8: PUSH AF BUSY8: IN A,(PIO8AD) BIT 6,A ;BUSY? JR NZ,BUSY8 POP AF PUSH AF OUT (PIO8BD),A ;Zeichen XOR A OUT (PIO8AD),A ;STROBE- LD A,80H OUT (PIO8AD),A ;Impuls POP AF RET ;------- < BUSY8:; PCH8:: KAN:3 PR31:# BUSY OUT (PIO8AD),A ;STROBE- LD A,80H OUT (PIO8AD),A ;Impuls POP AF RET ;------- < BUSY8:; PCH8:: KAN:3 PR31:# BUSY