INFO - MyIPSC

MyIPSC
MyIPSC
Bild-Geschoss
Direkt zum Seiteninhalt

*******************************************
*   A U T O M A T E N S T E U E R U N G   *
*  *
*       SCHIESSVEREIN VELBERT  EV.  *
*      FUER MECH.GEBREMSTEN E-MOTOR       *
*- - - - - - - - - - - - - - - - - - - - -*
*   System Electronik  *
*   16.04.87                              *
*******************************************
ORG $00 PORTS U.TIMER
DDRA RMB 1 DATENRICHTUNG PA
DDRB RMB 1      "       PB
PA RMB 1 PORT A
PB RMB 1 PORT B
RMB 4 UNBENUTZT
TCR RMB 1 TIMER CONTROLL
TIMES RMB 2 TIMER
OCR RMB 2 QUTPUT COMPARE REG.
ICR RMB 2 INPUT CAPTURE REG.

****************
ORG $80
ANZR RMB 5 ANZEIGEREGISTER
ST6 RMB 1 LETZTE STELLE
DUZ RMB     1 DUELLZAEHLER
TEXTZ RMB 1 TEXTZEIGER
TNEU RMB 1 TASTE NEU
PRELL RMB 1 PRELL ZAEHLER
nok_mrk RMB 1 Nocken-Merker
nok_prl rmb 1 Nocken-Prellzeit
SNR RMB 1 ANZEIGE STELLE
TIME RMB 2 ZEIT IN 0,1 SEC.
THZ RMB 1 " HILFSZELLE
BLZ RMB 1 BLINKZAEHLER
BLF RMB 1 BLINKFLAG
UFL RMB 1 UNTERBR. FLAG
SMR RMB 1 SCHEIBENZUSTAND
PZX RMB 2 PORT ZELLE (A+B)
MSI RMB 1 MOTORSTROM ZEIT
****************
ORG $6000
RESET LDS #$FF RAM LOESCHEN
       TSX STACK SETZEN
RES1 CLR 0,X
DEX
CPX #$7F
BNE RES1
*
* PORTS UND TIMER SETZEN
*
CLRB
LDAA #$FF
STAA DDRA PA=AUSGANG
CLR PA
LDAA #$1F
STAA DDRB PB=EEEAAAAA
CLR PB
*
LDAA #$08 TCR1=0 H>L TRIGG.
STAA TCR
CLI
*
LDD #$583F C-04-87
STD ANZR+0
LDD #$0602
STD ANZR+2
LDD #$6F6D ;95
STD ANZR+4
LDAB #5
RES2 LDX #$FFFF
RES3 DEX
BNE RES3
DECB
BNE RES2
CLR TNEU
*
* MENUE BEGINN
*
MENUE CLR BLF
CLR UFL
CLRB AKKUB=0
LDX #TEXT ZEIGER A.TEXTANFANG
LDAA TEXTZ A=ZEIGER
MEN1 BEQ MEN3 AUF ZUM LADEN
MEN2 ADDB #6
DECA
BNE MEN2 JETZT RICHTIG?
*
* TEXT INS ANZEIGEREGISTER UEBERTRAGEN
*
MEN3 ABX X=X+B
JSR TIA    
*
* WARTE AUF TASTENDRUCK
*
MEN4 LDAA TNEU TASTE GEDR.?
BEQ MEN4 N
CLR TNEU    J,SP.LOESCHEN
CMPA #1 TASTE 1?
BNE MEN6
INC TEXTZ ZEIGER EINS WEITER
LDAA TEXTZ
CMPA #7 LETZTER TEXT ?
BLS MEN5 NEIN
CLR TEXTZ JA
MEN5 BRA MENUE
*
MEN6 CMPA #2 J,TASTE 2?
BNE MEN8 N
LDAB TEXTZ TEXTZ >0?
BNE MEN7 JA,
LDAB #8      TEXTZ =0 !
STAB TEXTZ
MEN7 DEC TEXTZ
BRA MENUE
*
MEN8    CMPA #4 J,TASTE 3?
BEQ MSTART DANN START,
*
LDX #ERR SONST
JSR TIA     ERROR ANZEIGEN
MEN9 TST TNEU WARTE AUF TASTE
BEQ MEN9
*
CLR TNEU
BRA MENUE
*
MSTART INC BLF     BLINKFL.SETZEN
LDAA TEXTZ ZEIGER LADEN !
BEQ DUELL
CMPA #1
BNE     MS2
JMP OSP8 OSP-8
MS2 CMPA #2
BNE MS3
JMP OSP6 OSP-6
MS3 CMPA #3
BNE MS4
JMP OSP4 OSP-4
MS4 CMPA #4
BNE MS5
JMP STA150 STA150
MS5 CMPA #5
BNE MS6
JMP STA20 STA-20
MS6 CMPA #6
BNE MS7
JMP STA10 STA-10
MS7 CMPA #7
BNE MS8
JMP HAND HAND
MS8 LDX #ERR
CLR BLF FEHLER
CLRB
JMP MEN3
*
*----------------------------------------
* ABLAUFPROGRAMME : DUELL, OSP8,OSP6,OSP4
*    STA 150,STA 20,STA 10
* !!! BEACHTE DIE 0,4 SEC. BREMSZEIT !!!
*----------------------------------------
* DUELL 5* SCHEIBE FUER JE 3 SEC.
*          MIT JE 7 SEC. PAUSE
*       ----------------------
DUELL CLR DUZ DURCHLAUFZ.=0
JSR IMP SCH.WEGDREHEN
LDX #70 WARTE 7 SEC.
JSR WARTE
TST UFL WAR ZWANGSENDE ?
BNE DUEE J,DUELL ENDE !
DU1 LDAB DUZ WELCHER DURCHLAUF ?
LDX #CDT X=CODETABELLE
ABX
LDAA 0,X CODE LADEN
STAA ST6 "   ANZEIGEN
JSR IMP SCH.FUER 3 SEC.
LDX #30 ZEIGEN
JSR WARTE
TST UFL
BNE DUEE
JSR IMP SCH.FUER 7 SEC.
LDX #70 WEGDREHEN
JSR WARTE
TST UFL
BNE DUEE
INC DUZ DUZ+1
LDAA DUZ
CMPA #4
BLS DU1
*
DUEE JSR IMP
JMP MENUE
*
*---------------------
* OLYMPIA SCHNELLFEUER
*---------------------
*
OSP8 BSR OVOR VORLAUF 8 SEC.
LDX #80 UND DREHEN
BRA OSPE
*
OSP6 BSR OVOR
LDX #60
BRA OSPE
*
OSP4 BSR OVOR
LDX #40
BRA OSPE
*
OVOR CLR BLF
       LDAA ST6     "P"EIN
       ORAA    #$80
       STAA    ST6
       JSR IMP SCHEIBE WEG
*
OV1 LDAA TNEU
CMPA #4 TASTE 3 ZUM EIGENT-
BNE OV1 START ?
CLR TNEU
INC     BLF BLINK FREIG.
CLR ST6 "P"AUS !
CLR BLZ BLINKZ.=0
LDX #30 VORL.3 SEC.
JSR WARTE
JSR IMP SCHEIBE ZEIGEN
OVE RTS
*
OSPE TST UFL WAR ZWANGSENDE ?
BNE OS1 JA
JSR WARTE SCHUSSZEIT
JSR IMP SCHEIBE WEG
TST UFL
BNE OS1
LDX #30 NACHLAUF
JSR WARTE
OS1 JSR IMP SCHEIBE IN GRUNDST.
JMP MENUE ENDE !
*
*--------------------
*    STANDARUEBUNG
*--------------------
*
STA150 BSR SVOR VORLAUF 10 SE.
LDX #1500 UND DREHEN
BRA OSPE
*
STA20 BSR SVOR
LDX #200
BRA OSPE
*
STA10 BSR SVOR
LDX #100
BRA OSPE
*
SVOR JSR IMP SCHEIBE WEG
LDX #70
JSR WARTE
JSR IMP SCHEIBE IN GRUNDST.
RTS
*
*---------------------
*    HANDSTEUERUNG
*---------------------
*
HAND JSR IMP SCHEIBE WEG
HA1 LDAA TNEU
CMPA #4
BNE HA1
JSR IMP
CLR TNEU
JMP MENUE
*
*---------------------------------------
* WARTESCHLEIFE T IN 1/10 SEC. IM X-REG.
* MIT UNTERBRECHUNGSM™GLICHKEIT
*---------------------------------------
*
WARTE STX TIME WERT ABLEGEN
WA1 LDAA TNEU
CMPA #4 ABBRUCH ?
BEQ WAE JA,
*
LDX TIME N,ZEIT UM?
BNE WA1 NEIN
RTS
*
WAE CLR     TNEU
INC UFL
RTS
*
*--------------------------
* INTERRUPT ALLE 2 MS. MIT
*  TASTATURABFRAGE
*--------------------------
INTER LDAA TCR TCR-FLAG LOESCHEN
LDD OCR OCR- UPDATE
ADDD #2000 2,0 MS.
STD OCR
*
DEC MSI MOTORZEIT -1
*
INC THZ HILFSZEITSCHLEIFE
LDAA THZ 100 mS.
CMPA #50
BNE BLI1
*
CLR THZ
LDX TIME ZEIT DECREM.
DEX
STX TIME
*
BLI1 INC BLZ BLINKZ.+1
*
TST BLF BLINKFLAG ?
BEQ INPU NEIN
TST BLZ BLZ=0?
BNE INPU
LDAA ST6
ANDA #$80 DP AN ?
BNE BLI3 JA, MACH AUS
LDAA ST6 NEIN, DP.EIN
ORAA #$80
STAA ST6
BRA INPU
*
BLI3 LDAA ST6
ANDA #%01111111
STAA ST6 DP AUS !
*
INPU clra
staa PA ANZEIGE AUS !
staa PB
staa DDRA PA=EINGANG
ldaa PA PA LESEN
anda #%01000000 (S1.1)
beq     ?I2 INP1
ldaa nok_prl
cmpa #4
bhi INP1
blo ?I1
inc nok_mrk NOCKE =1
?I1: inc nok_prl
bra INP1
?I2: clr nok_mrk
clr nok_prl

*
* TASTENLESEVORGANG EINLEITEN
*
INP1 LDAB SNR LETZTE STELLE?
CMPB #6
BNE AA0
*
LDAB #$1C ZAEHLER+1
STAB PB
CLR PB Q0 AUF 1
NOP
NOP
*
LDAA PA PA LESEN
ANDA #$87 TASTE ?
BNE     INP2    JA,
CLR PRELL NEIN, LOESCHE
BRA INPE UND SPRUNG
*
INP2 LDAB PRELL JA, 3*GLEICH?
CMPB #3     
BHI INPE BET.ERL.
BNE INP3
STAA TNEU
*
* PRUEFE OB FERNBEDIENUNG
*
ANDA #$80 FERNTASTER ?
BEQ INP3 NEIN
LDAA #4 START SIMULIEREN
STAA TNEU
*
INP3    INC PRELL
*
INPE LDAB #$01 ZAEHLER RESET
STAB PB
CLR PB
*
* ANZEIGE ANSTEUERN
*
AA0 LDAA #$FF PA =AUSGANG
STAA DDRA
LDAB SNR
CMPB #6 LETZTE STELLE ?
BNE AA1 NEIN,
CLR SNR
AA1 LDAB SNR
LDX #ANZR
ABX
LDAA 0,X
LSLB
LSLB
STD PA SEGMENT EIN !
INC SNR
AAE RTI
*
*---------------------------
* IMPULS FUER MOTORSTROM MIT
* UNTERBRECHUNGSUEBERWACHUNG
*---------------------------
*
IMP      TST     UFL STOP ?
BEQ     IMP0 N,
*
TST SMR SCHEIBE DA?
        BNE     IMP0    J, IMPULS
        BRA IMPE    N, RAUS
*
IMP0     TST SMR     SCHEIBE DA?
BEQ     IMP1    N,SET MERKER
        CLR     SMR     J,CLR MERKER
        BRA     IMP2
*
IMP1     INC     SMR
*
IMP2 LDD PA PORT RETTEN
STD PZX
*
LDAA #$18 A-RELAIS EIN *
STAA PB --------------
CLR PB
*
LDD PZX STROM EIN
STD PA
*
LDAA #254 WARTE MAX.0,5
STAA MSI SEC.AUF NOCKE
*
IMP3 TST nok_mrk NOCKE SCHON DA?
        BEQ IMP6    JA
*
TST MSI NEIN, IST
BNE IMP3 ZEIT ABGELAUFEN?
*
BSR IMP6 FEHLERBEHANDL.
LDX #TERR TIMEOUT ERROR
JSR TIA TEXT INS ANZR.
CLR BLF
IMP5 LDAA TNEU WARTE AUF TASTE
CMPA #4       START/STOP
BNE IMP5
        CLR     TNEU
SEI
JMP RESET KALTSTART !!!
*1
IMP6     LDAA #45 VERZOEGERUNGSZ.
        STAA MSI X*2 IN MSEC.
*
IMP7 TST MSI ABGELAUFEN ?
BNE IMP7
*
SEI
       LDD PA PORT RETTEN
STD PZX     A- RELAIS AUS *
LDAA #$1D    *-*-*-*-*-*-*-*
STAA DDRB
LDAA #$FF
STAA DDRB
LDD PZX PORT HERSTELLEN
STD PA
CLI
*
IMPE RTS
*
*
* TEXT INS ANZEIGEREGISTER UEBERTRAGEN
*
TIA LDD 0,X
STD ANZR
LDD 2,X
STD ANZR+2
LDD 4,X
STD ANZR+4
RTS
*
*-----------------------
*  TEXTE UND CODETABELLE
*-----------------------
*
TEXT FCB $3F,$3E,$79,$38,$38,$00  DUELL
FCB $3F,$6D,$73,$40,$7F,$00  OSP-8
FCB $3F,$6D,$73,$40,$7C,$00  OSP-6
FCB $3F,$6D,$73,$40,$66,$00  OSP-4
FCB $6D,$78,$77,$06,$6D,$3F  STA150
FCB $6D,$78,$77,$40,$5B,$3F  STA-20
FCB $6D,$78,$77,$40,$06,$3F  STA-10
FCB $76,$5C,$54,$5E,$00,$00  Hand
ERR FCB $79,$50,$50,$5C,$50,$00  Error
*
TERR FCB $78,$79,$50,$50,$5C,$50  tError
*
CDT BYTE $06 1
BYTE $5B 2
BYTE $4F 3
BYTE $66 4
BYTE $6D 5
*
* -------------------------------------------------------------------
*     VEKTORENTABELLE
* -------------------------------------------------------------------
*
ORG $6FF0
FDB RESET
FDB RESET
FDB INTER
FDB RESET
FDB RESET
FDB RESET
FDB RESET
FDB RESET
***************
END
(c) Copywrite
Frank Weuster

18.03.2024
Zurück zum Seiteninhalt