home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ABBUC Magazin 43B
/
ABBUC_Magazin_43_199x_ABBUC_Side_B.atr
/
lcd2.src
< prev
next >
Wrap
Text File
|
2023-02-26
|
4KB
|
282 lines
************************************
*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¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯