TIME EQU 1000 CTC EQU 12 SIO EQU 8 OFFSET EQU 8 .Z80 .PHASE 1500H DB 7FH,7FH,'REFL',1 JP REFLEX Z7: DS 2,10H CHANL: DS 2,0 FEHLV: DS 2,0 INTAB: DEFB 07H ;BETRIEBSART CTC DEFB 06H ;ZEITKONST.CTC INTABS: DEFB 18H ;->WR4 DEFB 4 DEFB 44H DEFB 3 ;->WR3 DEFB 0E1H DEFB 5 ;->WR5 INTABE: DEFB 6AH ;8BIT ;+++++++++++++++++++++++++++++++++++++ ;schaltet hoeherprior. Modul aus AUS: PUSH AF PUSH BC LD A,(Z7) ;(20CH) LD B,A XOR A AUS1: LD C,80H OUT (C),A POP BC POP AF RET ;schaltet hoeherprior. Modul zu EIN: PUSH AF PUSH BC LD A,(Z7) LD B,A LD A,1 JR AUS1 ;......................... INIREF: CALL CHANAL LD A,CTC PUSH BC ADD A,C LD B,INTABS-INTAB ;COUNTER LD C,A ;CTC-KAN LD HL,INTAB DI OTIR ;INIT SIO POP BC LD A,0AH ;ADR. SIO ADD A,C LD C,A LD B,INTABE-INTABS+1 OTIR EI RET ;...................... ;Programmstart REFLEX: LD A,(Z7) LD A,1 LD (CHANL),A ;K1=>K1 CALL INZ1 ;TESTPROGRAMM HALT LD A,(CHANL) INC A LD (CHANL),A ;K2=>K2 CALL INZ1 CALL EIN CALL RESET CALL AUS CALL RESET RET ; ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< INZ1: CALL INIREF ;UNTEN CALL AUS LD A,(Z7) ADD A,OFFSET ;8 LD B,A LD A,1 LD C,80H OUT (C),A CALL INIREF ;DARUEBERLIEGEND LOOP: LD B,0 LP2: PUSH BC LD A,B CALL EIN CALL SDD PUSH AF PUSH HL LD HL,(0B7A0H) PUSH HL LD HL,1004H LD (0B7A0H),HL CALL 0F003H DEFB 1CH POP HL LD (0B7A0H),HL POP HL POP AF CALL AUS CALL SDE PUSH AF PUSH HL LD HL,(0B7A0H) PUSH HL LD HL,1008H LD (0B7A0H),HL CALL 0F003H DEFB 1CH POP HL LD (0B7A0H),HL POP HL POP AF PUSH AF CALL EIN POP AF POP BC DJNZ LP2 LP3: PUSH BC LD A,B CALL AUS CALL SDD PUSH AF PUSH HL LD HL,(0B7A0H) PUSH HL LD HL,1204H LD (0B7A0H),HL CALL 0F003H DEFB 1CH POP HL LD (0B7A0H),HL POP HL POP AF CALL EIN CALL SDE PUSH AF PUSH HL LD HL,(0B7A0H) PUSH HL LD HL,1208H LD (0B7A0H),HL CALL 0F003H DEFB 1CH POP HL LD (0B7A0H),HL POP HL POP AF POP BC DJNZ LP3 RET V24F: POP BC RET ;....................................... RESET: DI LD A,3 OUT (CTC),A OUT (CTC+1),A OUT (CTC+2),A LD A,18H OUT (SIO),A OUT (SIO+1),A EI RET ;*************************************** CHANAL: PUSH AF LD A,(CHANL) DEC A LD C,A POP AF RET ;*************************************** ;DIREKTE BYTEAUSGABE SDD: PUSH HL PUSH AF LD HL,TIME SD6: PUSH BC CALL CHANAL LD A,SIO+2 ADD A,C LD C,A IN A,(C) POP BC BIT 2,A JR NZ,SD5 DEC HL LD A,L OR H JR Z,SD6E JR SD6 SD5: POP AF PUSH BC PUSH AF CALL CHANAL LD A,SIO ADD A,C LD C,A POP AF OUT (C),A POP BC POP HL OR A RET SD6E: LD A,0FFH LD (FEHLV),A POP AF POP HL RET ;*************************************** ; ZEICHENEINGABE ZEICHEN IN A ;RR0 BIT 0 - ZEICHEN IM EMPFAENGERPUFFER ;WR5 BIT 0 - EMPFAENGERFREIGABE SDE: PUSH BC PUSH HL PUSH DE CALL CHANAL PUSH BC LD A,SIO+2 ADD A,C LD C,A IN A,(C) BIT 0,A JR NZ,SD7 LD A,5 ;WR5 OUT (C),A LD A,0EAH OUT (C),A ;EMPFAENGERFREIG LD HL,TIME SDE6: IN A,(C) ;RR0 PUSH AF DEC HL LD A,L OR H JR Z,SDE6E POP AF BIT 0,A JR Z,SDE6 ;ZEICHEN ABHOLEN SDE5: LD A,5 OUT (C),A ;WR4 LD A,06AH OUT (C),A ;EMPFAENGER GESP SD7: POP BC LD A,SIO ADD A,C LD C,A IN A,(C) OR A ; END1: POP DE POP HL POP BC RET SDE6E: LD A,0FFH LD (FEHLV),A POP AF POP BC JR END1 ;...................................... END