home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
World of A1200
/
World_Of_A1200.iso
/
programs
/
develop
/
as65
/
demo
/
s1
/
relais.asm
< prev
next >
Wrap
Assembly Source File
|
1995-02-27
|
14KB
|
616 lines
;**************************************************************************
;
; Filename : RELAIS.ASM
; ---------------------
;
; (c) 1990/91 by Thomas Lehmann
;
;
; Jackophone V5.00
;
;
; verschiedene Relais ein/ausschalten
;
;
;**************************************************************************
MODUL_START set * ; Größe des Moduls berechnen
; NSI-Relais einschalten
; ----------------------
nsi_on sei
lda Via_portb ; Zustand der VIA einlesen
ora #NSI ; NSI BIT setzen
sta Via_portb ; und NSI-Relais einschalten
lda interrupt ; ist IRQ aktiv ?
bne nsi_on_1 ; ja, IRQ nicht freigeben
cli
nsi_on_1
if RELTEST
lda #$ff
sta led_ram+YL4+11
endif
rts
; NSI-Relais ausschalten
; ----------------------
nsi_off sei
lda Via_portb ; Zustand der VIA einlesen
and #$ff^NSI ; NSI BIT austragen
sta Via_portb ; und NSI-Relais ausschalten
lda interrupt ; ist IRQ aktiv ?
bne nsi_off_1 ; ja, IRQ nicht freigeben
cli
nsi_off_1
if RELTEST
stz led_ram+YL4+11
endif
rts
; **********
; NSA-Relais einschalten
; ----------------------
nsa_on sei
lda Via_portb ; Zustand der VIA einlesen
ora #NSA ; NSA BIT setzen
sta Via_portb ; und NSA-Relais einschalten
lda interrupt ; ist IRQ aktiv ?
bne nsa_on_1 ; ja, IRQ nicht freigeben
cli
nsa_on_1
if RELTEST
lda #$ff
sta led_ram+YL4+9
endif
rts
; NSA-Relais ausschalten
; ----------------------
nsa_off sei
lda Via_portb ; Zustand der VIA einlesen
and #$ff^NSA ; NSA BIT austragen
sta Via_portb ; und NSA-Relais ausschalten
lda interrupt ; ist IRQ aktiv ?
bne nsa_off_1 ; ja, IRQ nicht freigeben
cli
nsa_off_1
if RELTEST
stz led_ram+YL4+9
endif
rts
; **********
; a/b-Relais einschalten
; ----------------------
ab_on lda #$ff
sta led_ram+LD_AB ; a/b Relais einschalten
rts
; a/b-Relais ausschalten
; ----------------------
ab_off stz led_ram+LD_AB ; a/b Relais auschalten
rts
; **********
; Halten-Relais einschalten
; -------------------------
ha_on lda #$ff
sta led_ram+LD_HALT
rts
; Halten-Relais ausschalten
; -------------------------
ha_off stz led_ram+LD_HALT
rts
; **********
; Postapparat anschalten
; ----------------------
post_on stz led_ram+LD_POST ; Postapparat einschalten
ldy #LD_L|LD_R|LD_OFF ; LED Status laden
lda #KEY_POST ; Tastenwert laden
jmp set_prgled
; Postapparat abschalten
; ----------------------
post_off lda #$ff
sta led_ram+LD_POST
ldy #LD_L|LD_ON ; LED Status laden
bbs ST_POST,feap_stat,post_off_1 ; Postapparat ist abgeschaltet
ldy #LD_L|LD_N ; LED Status laden
post_off_1 lda #KEY_POST ; Tastenwert laden
jmp set_prgled
; **********
; Modem anschalten
; ----------------
mod_on lda #$ff
sta led_ram+LD_MODEM
ldy #LD_L|LD_R|LD_ON ; LED Status laden
lda #KEY_MOD ; Tastenwert laden
jmp set_prgled
; Modem abschalten
; ----------------
mod_off stz led_ram+LD_MODEM
ldy #LD_L|LD_R|LD_OFF ; LED Status laden
lda #KEY_MOD ; Tastenwert laden
jmp set_prgled
; **********
; Anrufbeantworter anschalten
; ---------------------------
beantw_on lda #$ff
sta led_ram+LD_BEANTW
ldy #LD_L|LD_R|LD_OFF ; LED Status laden
lda #KEY_BEA ; Tastenwert laden
jmp set_prgled
; Anrufbeantworter abschalten
; ---------------------------
beantw_off stz led_ram+LD_BEANTW
ldy #LD_L|LD_ON ; LED Status laden
bbr ST_BEANTW,feap_stat,bea_off_1 ; Beantw. ist abgeschaltet
ldy #LD_L|LD_N ; LED Status laden
bea_off_1 lda #KEY_BEA ; Tastenwert laden
jmp set_prgled
; **********
; frei Programierbares Relais 1 einschalten
; -----------------------------------------
rel1_on lda #$ff
sta led_ram+LD_REL1
rts
; frei Programierbares Relais 1 ausschalten
; -----------------------------------------
rel1_off stz led_ram+LD_REL1
rts
; **********
; frei Programierbares Relais 2 einschalten
; -----------------------------------------
rel2_on lda #$ff
sta led_ram+LD_REL2
rts
; frei Programierbares Relais 2 ausschalten
; -----------------------------------------
rel2_off stz led_ram+LD_REL2
rts
; **********
; frei Programierbares Relais 3 einschalten
; -----------------------------------------
rel3_on lda #$ff
sta led_ram+LD_REL3
rts
; frei Programierbares Relais 3 ausschalten
; -----------------------------------------
rel3_off stz led_ram+LD_REL3
rts
; **********
; frei Programierbaren Port RL2 einschalten
; -----------------------------------------
rl2_on
if RELTEST
lda #$ff
sta led_ram+LD_RL2
endif
lda #RL2 ; BIT für RL2 laden
ora txen_rl23 ; Zustand RL3 dazu
sta txen_rl23 ; und eintragen
bra set_rl_port ; Port einschalten
; frei Programierbaren Port RL2 ausschalten
; -----------------------------------------
rl2_off
if RELTEST
stz led_ram+LD_RL2
endif
lda txen_rl23 ; Zustand TX-Enable und RL2/3 laden
and #$ff^RL2 ; BIT für Relais austragen
sta txen_rl23 ; bei Tastabfr. ausschalten
lda #$ff^RL2 ; BIT für Relais austragen
bra clr_rl_port ; Port zurücksetzen
; **********
; frei Programierbaren Port RL3 einschalten
; -----------------------------------------
rl3_on
if RELTEST
lda #$ff
sta led_ram+LD_RL3
endif
lda #RL3 ; BIT für RL3 laden
ora txen_rl23 ; Zustand TX-Enable und RL2 dazu
sta txen_rl23 ; und eintragen
set_rl_port ora Port_rl23 ; Zustand des Ports dazu, (! Tastaturabfr. !)
sta Port_rl23 ; Relais einschalten
rts
; frei Programierbaren Port RL3 ausschalten
; -----------------------------------------
rl3_off
if RELTEST
stz led_ram+LD_RL3
endif
lda txen_rl23 ; Zustand TX-Enable und RL2/3 laden
and #$ff^RL3 ; BIT für Relais austragen
sta txen_rl23 ; bei Tastabfr. ausschalten
lda #$ff^RL3 ; BIT für Relais austragen
clr_rl_port and Port_rl23 ; Zustand des Ports dazu
sta Port_rl23 ; Relais ausschalten
rts
; **********
; frei Programmierbares Relais REL3 auf STR1 einschalten
; ------------------------------------------------------
str_rel_on sei
lda Via_portb ; Zustand der VIA einlesen
ora #STR_REL3 ; Relais-BIT setzen
sta Via_portb ; und Relais einschalten
cli
rts
; frei Programmierbares Relais REL3 auf STR1 ausschalten
; ------------------------------------------------------
str_rel_off sei
lda Via_portb ; Zustand der VIA einlesen
and #$ff^STR_REL3 ; Relais-BIT austragen
sta Via_portb ; und Relais ausschalten
cli
rts
; **********
; Freisprech-Relais einschalten
; -----------------------------
fs_on sei
lda Via_portb ; Zustand der VIA einlesen
ora #FS ; FS BIT setzen
sta Via_portb ; und Freisprech-Relais einschalten
cli
rts
; Freisprech-Relais ausschalten
; -----------------------------
fs_off sei
lda Via_portb ; Zustand der VIA einlesen
and #$ff^FS ; FS BIT austragen
sta Via_portb ; und Freisprech-Relais ausschalten
cli
stz fs_stat ; bei FS-Taste erstmal nur LH aktivieren
rts
; **********
; Summer-Relais einschalten
; -------------------------
su_on sei
lda Via_portb ; Zustand der VIA einlesen
ora #SU ; Summer BIT setzen
sta Via_portb ; und Summer-Relais einschalten
cli
rts
; Freisprech-Relais ausschalten
; -----------------------------
su_off sei
lda Via_portb ; Zustand der VIA einlesen
and #$ff^SU ; Summer BIT austragen
sta Via_portb ; und Summer-Relais ausschalten
cli
rts
; **********
; Hörton Port einschalten
; -----------------------
htport_on lda ht_port ; Port für Hörtonrelais laden
jmp port_on ; Port setzen
; Hörton Port ausschalten
; -----------------------
htport_off lda ht_port ; Port für Hörtonrelais laden
jmp port_off ; Port löschen
; **********
; =========================================================================
;
; Type : Unterprg.
;
; Eingang : bei Endetaste
;
; Ausgang : Relais und LED von Post und Anrufbeantw. entsprechend dem
; : Status geschaltet
;
; Register : ------
;
; (c) by Thomas Lehmann März 1990
;
; =========================================================================
set_postbea bbs LTG_BEL,ltg_stat,postbea_e ; Ltg. ist belegt, Ende
bbs ST_BEANTW,feap_stat,postbea_1 ; Beantworter war eingesch.
jsr beantw_off ; Beantworter ausschalten
bra set_zweit ; Zweitapparat schalten
postbea_1 jsr beantw_on ; Beantworter wieder einschalten
; Zustand des Zweitapp. nach Zustand der Abschalte-Taste
; ------------------------------------------------------
set_zweit bbr ST_POST,feap_stat,set_zweit_1 ; Postapp. war eingeschaltet
jmp post_off ; Postapparat ausschalten
set_zweit_1 jmp post_on ; Postapp. wieder einschalten
postbea_e rts
; =========================================================================
;
; Funktion : setzen und löschen der frei programmierbaren Ports
;
; Eingang : Portnr. im Accu
; : originale Relaisnr. = Relais einschalten
; : Relaisnr. + PRG_PORT = Relais ausschalten
;
; Ausgang : ---------
;
; Register : ACCU, X
;
; (c) by Thomas Lehmann Mai 1990
;
; =========================================================================
prgport_tab word rel1_on ; Relais 1 einschalten
word rel2_on ; Relais 2 einschalten
word rel3_on ; Relais 3 einschalten
word str_rel_on ; Relais 3 auf STR1 einschalten
word rl2_on ; Port RL2 einschalten
word rl3_on ; Port RL3 einschalten
PSET_LEN equ *-prgport_tab ; Tabellenlänge für Port setzen
word rel1_off ; Relais 1 ausschalten
word rel2_off ; Relais 2 ausschalten
word rel3_off ; Relais 3 ausschalten
word str_rel_off ; Relais 3 auf STR1 ausschalten
word rl2_off ; Port RL2 ausschalten
word rl3_off ; Port RL3 ausschalten
PCLR_LEN equ *-prgport_tab ; Tabellenlänge für Port löschen
set_prgport asl ; Portnr. mal 2 == Offs auf Tabelle
cmp #PSET_LEN ; Port gültig ?
bcc sc_prgport ; ja, Port setzen
prgport_end rts
clr_prgport clc
adc #PRG_PORT ; Wert für ausschalten zur Portnr.
asl ; Portnr. mal 2 == Offs auf Tabelle
cmp #PCLR_LEN ; Port gültig ?
bcs prgport_end ; nein, Ende
sc_prgport tax ; Offset nach RX
jmp (prgport_tab,x) ; Port-Programm ausführen
; =========================================================================
;
; Funktion : frei programmierbare Ports ein/ausschalten
;
; Eingang : Portnr. im ACCU
;
; Ausgang : -------
;
; Register : -------
;
; (c) by Thomas Lehmann August 1991
;
; =========================================================================
port_on phx
ldx #prg_port ; Adr. der Port Zustände
jsr set_bit ; BIT für Port setzen
plx
rts
port_off phx
ldx #prg_port ; Adr. der Port Zustände
jsr clr_bit ; BIT für Port löschen
plx
rts
port_tst phx
ldx #prg_port ; Adr. der Port Zustände
jsr tst_bit ; BIT für Port testen
plx
rts ; SEC == Port ein, sonst CLC
; =========================================================================
;
; Funktion : frei programmierbare Ports speichern
;
; Eingang : Auswahl bei Speichern
;
; Ausgang : Wähltastatur auf Relaisspeicherung umgeleitet
;
; Register : X
;
; (c) by Thomas Lehmann Mai 1990
;
; =========================================================================
sp_rel ldx #MENU_REL ; Untermenu Relais ist aktiv
stx menu ; und bei Speicher/Kontrolltaste umleiten
stz offs_relber ; 1. Relaisnr. einstellen
ldx #WTA_SPREL ; Prg. Nr. für Wähltaste laden
stx wta_prg ; und bei Wähltaste ausführen
ldx #<rel_txt ; Textadr. laden
ldy #>rel_txt
lda #ANZ_RELTXT ; Anzahl der Texte laden
jsr init_dsptxt ; Textwahl initialisieren
bra rel_out_fst ; Relais ausgeben
rel_txt byte DSP_CLR | CURS_ON
shift "Port bei Anruf: "
byte DSP_CLR | CURS_ON
shift "Port ein (Termin 7): "
byte DSP_CLR | CURS_ON
shift "Port aus (Termin 8): "
; =========================================================================
;
; Funktion : Portfunktion speichern
;
; Eingang : bei Wähltaste und eingeschaltetem Relais speichern Modus
; : Tastenwert (1 bis ...) im Accu
;
; Ausgang : --------
;
; Register : Accu
;
; (c) by Thomas Lehmann Mai 1990
;
; =========================================================================
wta_sprel bbs MOD_KO,modus,rel_out_end ; Kontrollmodus ist aktiv
jsr check_wta ; Wähltaste 0-9 erzeugen
cmp #PRG_PORT ; ist eingegebenes Port gültig ?
bcs rel_out_end ; nein, Ende
ldx offs_relber ; Offset auf Relaisber laden
sta rel_tab,x ; Relais in Ber. eintragen
; Einsprung bei Speicher Taste
; ----------------------------
rel_out jsr nxt_dsptxt ; nächsten Text anzeigen
lda offs_relber ; Offset auf Relaisber. laden
inc a ; nächste Relaisnr. einstellen
cmp #ANZ_RELTXT ; alle Relais eingegeben ?
bcc rel_out_1 ; nein
lda #00 ; Offset auf 1. Relaiseintrag stellen
rel_out_1 sta offs_relber ; nächste Relaisber. einstellen
; nur Relaistext im Display anzeigen, nicht weiterschalten
; --------------------------------------------------------
rel_out_fst ldx offs_relber ; Offset auf Relaisber laden
lda rel_tab,x ; Relais aus Ber laden
cmp #PRG_PORT ; ist Port gültig ?
bcc rel_out_2 ; ja, Relaisnr. ausgeben
lda #253 ; "-"-48 == Char für kein Relais gespeichert laden
rel_out_2 clc
adc #48 ; ASCII erzeugen
jsr putchar ; Relais ausgeben
jmp curs_left
rel_out_end rts
; =========================================================================
;
; Type : Hauptprg.
;
; Eingang : bei Löschtaste und eingeschaltetem Relais speichern Modus
;
; Ausgang : akt. Relaiswert clr
;
; Register : Accu, X
;
; (c) by Thomas Lehmann Mai 1990
;
; =========================================================================
rel_clr bbs MOD_KO,modus,rel_out_end ; Kontrollmodus ist aktiv
ldx offs_relber ; Offset auf Relaisber laden
lda #$ff ; Relaiswert für ungültig laden
sta rel_tab,x ; Relais aus Ber clr
bra rel_out_fst ; Relais erneut ausgeben
; --------------------------------------------------------------------------
HLP set *
_RELAIS equ HLP-MODUL_START ; Größe des Moduls