V24K6313ASM; Treiber V24K6313.KCC ; ; BA00 C000 BA0A ; ; ` ml 10.08.91 ;------------------------------------ ARGN EQU 0B781H ARG4 EQU 0B788H HCADR EQU 0B799H STBT EQU 0B7A2H OUTAB EQU 0B7B9H UOUT1 EQU 0B7BEH UOUT2 EQU 0B7C4H PV1 EQU 0F003H CRT EQU 00H WAIT EQU 14H ERRM EQU 19H MODU EQU 26H PADR EQU 34H ; SIOD EQU 08H ;SIO-A Daten SIOS EQU 0AH ;SIO-A Steuer CTC EQU 0CH ;CTC Kan. 0 ;------------------------------------ ORG 0BA00H ; ;Initialisierungsdaten CTC ; ; 9600Bd, 8Bit, 1Stopp-Bit ; BA00: DEFB 47H DEFB 5BH ; ;Initialisierungsdaten SIO ; DEFB 04H ;WR 4 DEFB 04H DEFB 03H ;WR 3 DEFB 20H DEFB 05H ;WR 5 DEFB 6AH ; BA08: DEFB 8 ;Einstellung: ; ----------- ;Bit 0 Hardcopy/Protokoll ;Bit 1 USER Kanal ;Bit 2 SIO-Kanal ;Bit 3 SHFT-CLR BA09: DEFB 8 ;Modulschacht ;------- START: JP 0BA5CH ; ;Initialisierungsdaten Drucker: ; BA0D: DEFB 1BH DEFB 43H DEFB 00H DEFB 0BH DEFB 1BH DEFB 4EH DEFB 05H DEFB 1BH DEFB 4DH DEFB 0AH DEFB 0DH DEFB 09H ; BA19: DEFB 09H ;letztes Zei. ;------- DEFW 7F7FH DEFM 'V24K6313' DEFB 1 LD A,(ARGN) CP 4 JR C,BA5C ;keine 4 Arg.! LD A,L LD (BA09),A ;Modulschacht LD A,E DEC A AND 1 ;SIO-Kanal LD A,(BA08) RES 2,A JR Z,BA3D SET 2,A BA3D: LD B,A LD A,C SUB 2 ;USER Kanal RES 1,B JR Z,BA47 SET 1,B BA47: LD A,(ARG4) ;SHIFT-CLR RES 0,B RES 3,B AND A JR Z,BA58 SET 3,B ;Protokoll DEC A JR Z,BA58 SET 0,B ;Hardcopy BA58: LD A,B LD (BA08),A ;Einstellung BA5C: LD A,(BA09) LD B,A ;Modulschacht LD C,80H IN A,(C) ;Strukturbyte CP 0EEH ;M003 ? JR Z,BA6D CALL PV1 DEFB ERRM ;ERROR ! RET ; BA6D: LD L,B BA6E: LD A,2 ;UP-Nr.! LD D,1 LD E,D BA73: CALL PV1 DEFB MODU ;M003 aktiv CALL BAA6 ;Pointer setzen BIT 3,A JR Z,BA84 ;kein SHIFT-CLR LD HL,BACD ;Hardcopy LD (HCADR),HL BA84: CALL BAC0 ;Kanalauswahl LD A,CTC PUSH BC ADD C LD B,2 LD C,A ;Portadr. CTC LD HL,BA00 DI OTIR ;Init CTC POP BC LD A,SIOS ADD C LD C,A ;Portadr. SIO LD B,6 OTIR ;Init SIO EI LD HL,BA0D LD B,12 JP BB62 ;Init Drucker ; ;Pointer fuer Ausgabe setzen ; BAA6: LD HL,BAF9 ;UP 00 (CRT) LD DE,BAFB BAAC: LD A,(BA08) LD (OUTAB),HL BIT 1,A ;USER-Kanal? JR NZ,BABB LD (UOUT1),DE RET BABB: LD (UOUT2),DE RET ; ;Kanalauswahl SIO ; BAC0: PUSH AF LD A,(BA08) BIT 2,A ;SIO-Kanal? LD C,1 JR NZ,BACB DEC C BACB: POP AF RET ; ;Aufruf durch SHIFT-CLR ; BACD: PUSH HL PUSH DE LD A,(BA08) BIT 0,A ;Hardcopy? JP NZ,BB6A LD HL,(OUTAB) INC (HL) DEC (HL) JR NZ,BAF0 ;Prot. -> off LD DE,BAF5 ;Prot. on LD HL,BA6E+1 ;UP 02 (UOT1) BIT 1,A ;USER Kanal? JR Z,BAEA LD L,BA73+1 ;UP 03 (UOT2) BAEA: CALL BAAC ;Pointer neu BAED: POP DE POP HL RET BAF0: CALL BAA6 ;Pointer setzen JR BAED ; BAF5: PUSH AF CALL PV1 BAF9: DEFB CRT POP AF BAFB: PUSH AF LD A,(STBT) BIT 3,A JR Z,BB14 ;Steuerz. druck. POP AF PUSH AF CP 7EH JR NC,BB0D ;wenn > 7EH CP 20H JR NC,BB2E ;Druck Zeichen BB0D: LD A,'_' ;bei Steuerzei. BB0F: CALL BB2D ;Druck Zeichen POP AF RET BB14: POP AF CP 0FH JR Z,BB25 ;SHIFT-CLR CP 0DH JR NZ,BB2D ;Druck Zeichen PUSH AF CALL BB2D ;Druck Zeichen LD A,9 ;CR ohne LF! JR BB0F ; BB25: LD A,(BA19) ;letztes Zeich. CP 1BH ;ESC? LD A,0FH RET NZ ;ESC+0FH drucken BB2D: PUSH AF BB2E: PUSH BC CALL BAC0 ;Kanalauswahl LD A,SIOS ADD C LD C,A ;Portadr. SIO IN A,(C) BIT 2,A ;Puffer leer JR NZ,BB45 LD A,1 CALL PV1 DEFB WAIT POP BC JR BB2E BB45: POP BC POP AF PUSH BC PUSH AF CALL BAC0 ;Kanalauswahl LD A,SIOD ADD C LD C,A ;Portadr. SIO POP AF OUT (C),A ;Ausgabe POP BC LD (BA19),A ;letztes Zei. RET ;----------------------- ; ;Initialisierung Drucker fuer Hardcopy ; BB58: DEFB 0DH DEFB 09H DEFB 1BH DEFB 4AH DEFB 18H DEFB 1BH DEFB 2AH DEFB 05H DEFB 40H DEFB 01H ; BB62: LD A,(HL) INC HL CALL BB2D ;Druck Zeichen DJNZ BB62 RET ; BB6A: PUSH AF PUSH BC LD H,0 ;Pixelzeile 0 BB6E: PUSH HL LD HL,BB58 LD B,10 CALL BB62 ;Init Drucker POP HL LD L,0 ;Spalte 0 BB7A: LD B,8 PUSH HL LD DE,0B700H BB80: PUSH HL PUSH DE CALL PV1 DEFB PADR ;Berechnen Padr. LD A,(HL) POP DE LD (DE),A INC DE POP HL INC H ;+1 Pixelzeile DJNZ BB80 LD C,8 BB90: LD B,8 LD HL,0B700H BB95: RL (HL) RLA INC HL DJNZ BB95 ;Wandlung CALL BB2D ;Druck Zeichen DEC C JR NZ,BB90 POP HL INC L ;+1 Spalte LD A,28H CP L ;letzte Spalte? JR NZ,BB7A LD A,H ADD 8 ;+8 Pixelzeilen LD H,A JR NC,BB6E LD A,0CH ;Form Feed CALL BB2D ;Druck Zeichen POP BC POP AF POP DE POP HL RET ;----------------------- ;BBB8H ; ;->frei ; ;BC00H ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ