.Z80 .PHASE 0BA00H ;*************************************** ; CENTRONIC- TREIBER ;*************************************** ;VEREINBARUNGEN: CAOS EQU 0F003H MODU EQU 26H ;UP-NR. MODUL CRT EQU 0 ;UP-NR. CRT ;SYSTEMZELLEN CAOS ARGN EQU 0B781H STBT EQU 0B7A2H ;STEUERBYTE OUTAB EQU 0B7B9H ;OUT-CHANAL UOUT1 EQU 0B7BEH ;USER OUT 1 UOUT2 EQU 0B7C4H ; " 2 HCADR EQU 0B799H ;SHIFT CLEAR CRR EQU 0DH ; MKENN EQU 0EFH ;MODULKENNBYTE PIOA EQU 04H ;PIO KANAL A DAT PIOAC EQU 06H ; STEUERWORT PIOB EQU 05H ;PIO B DATEN PIOBC EQU 07H ; STEUERWORT ; ;*************************************** ;PARAMETERUEBERGABE BEI AUFRUF: ;CENTRON MODULSCHACHT USER-OUT ; 8 u.s.w. 2/3 ;************************************** HCPZ: DEFB 0 ;USER-KANAL ; ; MODULSCHACHT 8 MODSCH: DEFB 8 ;MODULSCHACHT ;--------------------------------------- JP START ;SELBSTSTARTADR. ;--------------------------------------- ZWEI: DEFB 0 ; DEFW 7F7FH ;PROLOG DEFM 'CENTRON' DEFB 1 LD A,(ARGN) CP 2 JR C,START LD A,L ;ARG1,LOW LD (MODSCH),A ;SCHACHT LD A,E ;USEROUT SUB 2 JR C,ERROR AND 1 LD (HCPZ),A ; SELBSTSTARTADRESSE ;+++++++++++++++++++++++++++++++++++++ START: LD A,(MODSCH) LD B,A LD C,80H IN A,(C) CP MKENN JR Z,ST1 ERROR: CALL CAOS ;FEHLERABBRUCH DEFB 19H RET ; ST1: LD L,B LD A,2 LD D,1 LD E,D CALL CAOS DEFB 26H LD A,0FFH OUT (PIOAC),A XOR A OUT (PIOAC),A DEC A OUT (PIOBC),A ;BIT0 OUT LD A,4 OUT (PIOBC),A LD A,1 OUT (PIOB),A ;STROBE PASSIV LD HL,HCOP LD (HCADR),HL LD HL,ZWEI LD (OUTAB),HL PUSH HL PUSH DE JR HACO1 ; ;PROTOKOLLFUNKTION UEBER SHIFT CLEAR ;ODER BIDSCHIMAUSDRUCK HCOP: PUSH HL PUSH DE LD HL,ZWEI ;KANAL INC (HL) DEC (HL) JR NZ,HACO1 ;CRT -> LD DE,PROT ;CRT+KAN LD A,(HCPZ) AND A LD M,2 JR Z,HACO3 ;USER2-> INC M ;=3 HACO3: LD A,(HCPZ) AND A JR Z,HACO2 LD (UOUT2),DE ;EINTR.3 JR HAPOP ; HACO2: LD (UOUT1),DE ;EINTR.2 HACO4: LD (OUTAB),HL HAPOP: POP DE POP HL RET ; HACO1: LD (HL),0 ; CRT LD DE,SDD JR HACO3 ;PROTOKOLLAUSGABE PROT: PUSH AF CALL CAOS ;BILDSCHIRMAUSG. ZCRT: DEFB 00H POP AF ;*************************************** ; ZEICHENAUSGABE ZEICHEN IN A SDD: PUSH HL PUSH BC LD HL,CODTAB LD B,7 SD0: CP (HL) INC HL CALL Z,SD01 INC HL DJNZ SD0 POP BC POP HL CP 09H ;RIGHT? JR Z,SD4 PUSH AF LD A,(STBT) BIT 3,A ;INTERPRET? JR Z,SD9 ;YES POP AF CP 7FH ;AUSBLENDEN 7FH JR NZ,SD3 SD4: LD A,20H SD3: CP 20H ;SPACE JR NC,SD1 LD A,5FH JR SD1 ; SD01: LD A,(HL) RET ; SD9: POP AF CP 0DH JR NZ,SD1 ;ZEILENPOSIT 8* SPACE PUSH BC PUSH AF CALL SD1 LD B,8 SDLOP: LD A,20H CALL SD1 DJNZ SDLOP POP AF POP BC RET ;DIREKTE BYTEAUSGABE SD1: PUSH BC ;AUSGABE DATEN PUSH AF SDA: IN A,(PIOB) BIT 2,A JR Z,SDB ;BUSY? LD A,5 CALL CAOS DEFB 14H ;WARTEN JR SDA ; SDB: POP AF PUSH AF OUT (PIOA),A ;DATEN XOR A OUT (PIOB),A INC A OUT (PIOB),A POP AF POP BC RET ; CODTAB: DEFB 80H DEFB 7BH DEFB 81H DEFB 7CH DEFB 82H DEFB 7DH DEFB 83H DEFB 7EH DEFB 86H DEFB 5BH DEFB 87H DEFB 5CH DEFB 88H DEFB 5DH DEFS 0BC00H-$,0 .DEPHASE END