home *** CD-ROM | disk | FTP | other *** search
- ************************************
- *MINIHAENDLER FUER ARGS LCD-DISPLAY*
- * VERSION 2 *
- * HARD- u. SOFTWARE v. RoBue *
- * 06.12.1994 *
- ************************************
-
- * Handlername: "A:"
-
- ORG $8000,$A800
-
- PACTL EQU $D512
- PORTA EQU $D510
- PBCTL EQU $D513
- PORTB EQU $D511
- PHENTV EQU $E486
- TIMER EQU $14
- CONSOL EQU $D01F
-
- DLEFT EQU 24
- DRIGHT EQU 28
- CLEFT EQU 16
- CRIGHT EQU 20
- FUNCTION EQU 56
- DON EQU 15
- DCLEAR EQU 1
- CHOME EQU 2
- CMOVE EQU 4
-
-
- START PLA BASIC
- *
- LDX #'A A:-HANDLER
- LDA #TABELLE:H EINTAGEN
- LDY #TABELLE:L
- SEC
- JSR PHENTV
- BCC START1
- RTS KEIN EINTRAG
-
- START1 LDA #56 PIA UND
- STA PBCTL INITIALI-
- LDA #48
- LDA #255
- STA PORTB
- LDA #0
- STA PORTA
- LDA #60
- STA PBCTL
- LDA #52
- STA PACTL
- LDA #0
- STA PORTB
- LDA #FUNCTION 8BIT
- JSR BEFEHL
- LDA #DON LCD AN
- JSR BEFEHL
- LDA #DCLEAR LCD LOESCHEN
- JSR BEFEHL
- LDA #CHOME
- JSR BEFEHL
- READY LDY #0 READY
- READY1 LDA TEXT,Y AUF LCD
- BEQ ENDE AUSGEBEN
- JSR ZEICHEN
- INY
- JMP READY1
- ENDE RTS
- TEXT ASC 'LCD is Ready'
- DFB 0
-
- TABELLE DFW OPEN-1 Handlertabelle
- DFW CLOSE-1
- DFW GET-1
- DFW PUT-1
- DFW CLOSE-1
- DFW CLOSE-1
- JMP CLOSE
- DFB 0
-
- OPEN LDA #DON
- JSR BEFEHL
- OPEN1 LDA #DCLEAR
- JSR BEFEHL
- OPEN2 LDA #CHOME
- JSR BEFEHL
- LDY #0
- STY ZEILE
- STY SPALTE
- CLOSE LDY #1
- RTS
-
-
-
- PUT TAX
- CPX #125 CLEAR?
- BNE PUT0
- JMP OPEN1
- *
- PUT0 CPX #126 DBS?
- BNE PUT1 NEIN ->
- LDA SPALTE SPALTE0?
- BEQ PUT01 JA ->
- LDA #CLEFT
- JSR BEFEHL
- LDA #32
- JSR ZEICHEN
- LDA #CLEFT
- JSR BEFEHL
- DEC SPALTE
- PUT01 LDY #1
- RTS
- *
-
- PUT1 CPX #155 EOL?
- BNE PUT2 NEIN ->
- LDY SPALTE
- LDA ZEILE ZEILE0 ?
- BEQ PUT11 JA ->
- *** JSR HALT
- DEC ZEILE
- JMP LEER
- PUT11 INC ZEILE
- JMP LEER ZEILE AUFFUELLEN
- *
- PUT2 CPX #28 CURSOR?
- BNE PUT21
- UP LDA ZEILE
- BEQ UPEND
- LDX #40
- UP1 LDA #CRIGHT
- JSR BEFEHL
- DEX
- BNE UP1
- DEC ZEILE
- UPEND LDY #1
- RTS
- *
- PUT21 CPX #29
- BNE PUT22
- DOWN LDA ZEILE
- BNE DOWNEND
- LDX #40
- DOWN1 LDA #CRIGHT
- JSR BEFEHL
- DEX
- BNE DOWN1
- INC ZEILE
- DOWNEND LDY #1
- RTS
- *
- PUT22 CPX #31
- BNE PUT23
- RIGHT LDA #15
- CMP SPALTE
- BEQ RIGHTEND
- LDA #CRIGHT
- JSR BEFEHL
- INC SPALTE
- RIGHTEND LDY #1
- RTS
- *
- PUT23 CPX #30
- BNE PUT3
- LEFT LDY SPALTE
- BEQ LEFTEND
- DEC SPALTE
- LDA #CLEFT
- JSR BEFEHL
- LEFTEND LDY #1
- RTS
- *
- PUT3 TXA
- JSR ZEICHEN
- INC SPALTE
- *
- PUT4 LDY SPALTE (SICHTBARES)
- CPY #16 ZEILENENDE?
- BNE PUTEND NEIN ->
- LDA ZEILE ZEILE1 ?
- BEQ PUT41 NEIN ->
- *** JSR HALT
- JSR LEER ALLES LOESCHEN
- DEC ZEILE
- JMP PUTEND
- PUT41 JSR LEER
- INC ZEILE
- PUTEND LDY #1
- RTS
-
- * ZEILENENDE-ROUTINE
- * fuegt nach RETURN oder am
- * Ende des sichtbaren
- * Displayfensters
- * (= 16 Zeichen)
- * Leerzeichen bis zum
- * eigentlichen Zeilenende
- * (= 40 Zeichen) ein
- LEER LDA #32
- JSR ZEICHEN
- INY
- CPY #40
- BNE LEER
- LDY #0
- STY SPALTE
- INY
- RTS
-
- HALT LDA CONSOL
- AND #%00000001
- BNE HALT
- RTS
-
- SPALTE DFB 0
- ZEILE DFB 0
-
-
-
-
- GET JSR $F2FD
- CPY #1
- BNE GETEND
- STA GETWERT
- JSR PUT
- LDA GETWERT
- GETEND RTS
- GETWERT DFB 0
-
-
- * PROGRAMMIEREN DES DISPLAYS
- * Wert steht im Akku
- BEFEHL PHA
- LDA #0
- STA PORTB RS->BEFEHL
- LDA #52
- STA PBCTL WRITE
- JSR WAIT
- LDA #60
- STA PACTL
- * JSR WAIT
- PLA
- AND #%01111111
- STA PORTB
- * JSR WAIT
- LDA #52
- STA PACTL
- LDA #0
- STA PORTB
- LDA #60
- STA PBCTL
- RTS
-
- * AUSGABE EINES ZEICHENS
- * AUF DAS DISPLAY
- * Wert steht im Akku
- ZEICHEN PHA
- LDA #128
- STA PORTB
- LDA #52
- STA PBCTL
- JSR WAIT
- LDA #60
- STA PACTL
- * JSR WAIT
- PLA
- ORA #%10000000
- STA PORTB
- * JSR WAIT
- LDA #52
- STA PACTL
- LDA #0
- STA PORTB
- LDA #60
- STA PBCTL
- RTS
-
- WAIT LDA #0
- STA W
- WAIT1 INC W
- BNE WAIT1
- RTS
- W EQU 0¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯