E.5. Unterprogramme (UNTER.S)

 

;// freitag, 23.februar 1990  19.50 uhr

;

; DATEI UNTER.S

; PROJEKT EDDI3

 

 ADRE

 GLOBAL

 

 RSEG UNTER

 

; BINAER -> BCD ################################################

BIN2BCD ;

 PHX

 LDX #-1

B2D1 ;

 INX

 SEC

 SBC #10

        BCS        B2D1

 CLC

 ADC #10

        STA        B2DSTO

 TXA

 VIERASL   * 16

        ADC B2DSTO

 PLX

 RTS   ENDE BIN2BCD

 

; CAS-ADRESSE ERHOEHEN #################################################

INCCAS ;

 INC A

 CMP #PIXEL+OFFSET+1

        BMI INCCE

 LDA #OFFSET  ZAEHLER STARTEN

INCCE ;

 RTS

 

; CAS-ADRESSE ERNIEDRIGEN ##############################################

DECCAS ;

        DEC        A

 CMP #OFFSET

 BPL DECCE

 LDA #PIXEL+OFFSET

DECCE ;

        RTS

 

; RAS-ADRESSE ERHOEHEN #################################################

INCRAS ;

 INC A

 CMP #BILDER-4

        BCC        INCRE

 LDA #0

INCRE ;

 RTS

 

; RAS-ADRESSE ERNIEDRIGEN ##############################################

DECRAS ;

 DEC A

 CMP #BILDER-4

 BCC DECRE

 LDA #BILDER-5

DECRE ;

        RTS

 

; ZEILE ERHOEHEN #######################################################

INCROW ;

 INC A

 CMP #(312-ZEILEN-LPOFF)/2+1

 BCC INCWE

 LDA #UPOFF/2

INCWE ;

 RTS

 

; ZEILE ERNIEDRIGEN ####################################################

DECROW ;

 DEC A

 CMP #UPOFF/2

        BCS DECWE

 LDA #(312-ZEILEN-LPOFF)/2

DECWE ;

 RTS

 

; CCAS-RCAS ERHOEHEN ###################################################

ICCAS ;

 LDA CCAS  CAS-ZAEHLER LADEN

        JSR INCCAS    ERHOEHEN

 STA CCAS    UND ABSPEICHERN

 CMP #OFFSET  CAS-GRENZE ERREICHT ?

 BNE ICRE    NEIN

 LDA CRAS  RAS-ZAEHLER LADEN

 JSR INCRAS    ERHOEHEN

 STA CRAS    UND ABSPEICHERN

ICRE ;

 RTS

 

; CCAS/CRAS ERNIEDRIGEN ################################################

DCCAS ;

 LDA CCAS  CAS-ZAEHLER LADEN

        JSR DECCAS    ERNIEDRIGEN

 STA CCAS    UND ABSPEICHERN

 CMP #PIXEL+OFFSET CAS-GRENZE ERREICHT ?

 BNE DCRE    NEIN

 LDA CRAS  RAS-ZAEHLER LADEN

 JSR DECRAS    ERNIEDRIGEN

 STA CRAS    UND ABSPEICHERN

DCRE ;

 RTS

 

; CRAS ERHOEHEN ########################################################

ICRAS ;

 LDA CRAS  RAS-ZAEHLER LADEN

 JSR INCRAS    ERHOEHEN

 STA CRAS    UND ABSPEICHERN

 RTS

 

; CRAS ERNIEDRIGEN #####################################################

DCRAS ;

 LDA CRAS  RAS-ZAEHLER LADEN

 JSR DECRAS    ERNIEDRIGEN

 STA CRAS    UND ABSPEICHERN

 RTS

 

; CRW1 ERHOEHEN ########################################################

ICRW1 ;

 LDA CRW1  ROW-ZAEHLER LADEN

 JSR INCROW    ERHOEHEN

 STA CRW1    UND ABSPEICHERN

 RTS

 

; CRW1 ERNIEDRIGEN #####################################################

DCRW1 ;

 LDA CRW1  ROW-ZAEHLER LADEN

 JSR DECROW    ERNIEDRIGEN

 STA CRW1    UND ABSPEICHERN

 RTS

 

; CAS-BEREICHSABFRAGE ##################################################

CCCAS ;

 CMP #PIXEL+OFFSET+1 OBERE GRENZE UEBERSCHRITTEN ?

 BMI        CCC1

 LDA #PIXEL+OFFSET

 BRA CCCE

CCC1 ;

 CMP #OFFSET  UNTERE GRENZE UEBERSCHRITTEN ?

 BPL        CCCE

 LDA #OFFSET

CCCE ;

 RTS

 

; RAS-BEREICHSABFRAGE ##################################################

CCRAS ;

 CMP #BILDER-4 OBERE GRENZE UEBERSCHRITTEN ?

 BCC CCRE

 LDA #BILDER-5

CCRE ;

 RTS

 

; ROW-BEREICHSABFRAGE ##################################################

CCROW ;

 CMP #(312-ZEILEN-LPOFF)/2+1 OBERE GRENZE UEBERSCHRITTEN ?

 BCC CCW1

 LDA #(312-ZEILEN-LPOFF)/2

 BRA        CCWE

CCW1 ;

        CMP #UPOFF/2 UNTERE GRENZE UEBERSCHRITTEN ?

 BCS CCWE

 LDA #UPOFF/2

CCWE ;

 RTS

 

 RTS

 

; UPLOAD XILINX-KONFIGURATION ##########################################

XILUP ;

 LDY #H(XILINXL) LAENGE XILINX-DATEN (MSB)

 LDX #L(XILINXL)    "   " "   (LSB)

        BEQ XILUP0

 INY   BYTEZAEHLER KORRIGIEREN

XILUP0 ;

 LDA #L(XILINXS) ADRESSE DER XILINX-DATEN (LSB)

 STA R0

 LDA #H(XILINXS)     "  "    "      "  (MSB)

 STA        R1

XILUP1 ;

 LDA (R0)  XILINX-BYTE LADEN

        STA PMCF    UND INS KONFIGURATIONSREGISTER SPEICHERN

 INC R0  ADRESSE ERHOEHEN (LSB)

 BNE XILUP2

 INC R1  ADRESSE ERHOEHEN (MSB)

XILUP2 ;

 PHA   ETWAS WARTEN

 PLA

 PHA

 PLA

 

 DEX   BYTE-ZAEHLER (LSB)

 BNE XILUP1

 DEY   BYTE-ZAEHLER (MSB)

 BNE XILUP1

 RTS

 

; WARTESCHLEIFE (LANG) #################################################

WAIT ;

 PHX

 PHY

 LDX #0

 LDY #0

WT1 ;

 DEX

 BNE WT1

 DEY

 BNE WT1

 DEC A

 BNE WT1

        PLY

 PLX

 RTS

 

; WARTESCHLEIFE FUER LAUF-ROUTINE (HAUPTPROGRAMM) ######################

WTLAUF ;

 PHX

 PHY

 LDX #0

 LDY        #WTVAL

WTL1 ;

 DEX

 BNE WTL1

 DEY

 BNE WTL1

        PLY

 PLX

 RTS

 

; ZEICHENSATZ ZUR DARSTELLUNG IM BILDSPEICHER ##########################

CHSET ;

 DB 00111000B 0

 DB 01000100B

 DB 01001100B

 DB 01010100B

 DB 01100100B

 DB 01000100B

 DB 00111000B

 DB 00000000B

 

 DB 00010000B 1

 DB 00110000B

 DB 01010000B

 DB 00010000B

 DB 00010000B

 DB 00010000B

 DB 01111100B

 DB 00000000B

 

 DB 00111000B 2

 DB 01000100B

 DB 00000100B

 DB 00001000B

 DB 00010000B

 DB 00100000B

 DB 01111100B

 DB 00000000B

 

 DB 00111000B 3

 DB 01000100B

 DB 00000100B

 DB 00011000B

 DB 00000100B

 DB 01000100B

 DB 00111000B

 DB 00000000B

 

 DB 00001000B 4

 DB 00011000B

 DB 00101000B

 DB 01001000B

 DB 01111100B

 DB 00001000B

 DB 00011100B

 DB 00000000B

 

 DB 01111100B 5

 DB 01000000B

 DB 01111000B

 DB 00000100B

 DB 00000100B

 DB 01000100B

 DB 00111000B

 DB 00000000B

 

 DB 00111000B 6

 DB 01000100B

 DB 01000000B

 DB 01111000B

 DB 01000100B

 DB 01000100B

 DB 00111000B

 DB 00000000B

 

 DB 01111100B 7

 DB 01000100B

 DB 00000100B

 DB 00001000B

 DB 00010000B

 DB 00100000B

 DB 00100000B

 DB 00000000B

 

 DB 00111000B 8

 DB 01000100B

 DB 01000100B

 DB 00111000B

 DB 01000100B

 DB 01000100B

 DB 00111000B

 DB 00000000B

 

 DB 00111000B 9

 DB 01000100B

 DB 01000100B

 DB 00111100B

 DB        00000100B

 DB 01000100B

 DB 00111000B

 DB 00000000B

 

 DB 00010000B A

 DB 00101000B

 DB 01000100B

 DB 01000100B

 DB 01111100B

 DB 01000100B

 DB 01000100B

 DB 00000000B

 

 DB 01111000B B

 DB 01000100B

 DB 01000100B

 DB 01111000B

 DB 01000100B

 DB 01000100B

 DB 01111000B

 DB 00000000B

 

 DB 00111000B C

 DB 01000100B

 DB 01000000B

 DB 01000000B

 DB 01000000B

 DB 01000100B

 DB 00111000B

 DB 00000000B

 

 DB 01111000B D

 DB 01000100B

 DB 01000100B

 DB 01000100B

 DB 01000100B

 DB 01000100B

        DB 01111000B

 DB 00000000B

 

 DB 01111100B E

 DB 01000000B

 DB 01000000B

 DB 01111000B

 DB 01000000B

 DB 01000000B

 DB 01111100B

 DB 00000000B

 

 DB 01111100B F

 DB 01000000B

 DB 01000000B

 DB 01111000B

 DB 01000000B

 DB 01000000B

 DB 01000000B

 DB 00000000B

 

 RSEG UNTERZ  ZERO-PAGE

 RSEG UNTERD  RAM-BEREICH

B2DSTO DS 1  ZWISCHENSPEICHER FUER BIN2BCD

CCAS DS 1  CAS-ZAEHLER, 7 BIT + VORZEICHEN

CRW1 DS 1  ZEILENZAEHLER, 8 BIT

CRAS DS 1  RAS-ZAEHLER, 8 BIT

 

 END