home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ahoy 1986 February
/
Ahoy_Magazine_86-02_1986_Double_L.d64
/
movechrs.s
< prev
next >
Wrap
Text File
|
2022-10-26
|
1KB
|
115 lines
GG*
* MOVECHAR
*
ORG $8000
*
R6510 EQU $0001
NEWADR EQU $3000
CHRBAS EQU $D000
CIACRE EQU $DC0E
C2DDRA EQU $DD02
MEMREG EQU $D018
CHROUT EQU $FFD2
*
FRETOP EQU $0034
MEMSIZ EQU $0038
*
TABLEN EQU 512
MVSRCE EQU $FB
MVDEST EQU MVSRCE+2
*
LENPTR EQU $200
*
* SET CIA BITS TO OUTPUTS
*
LDA C2DDRA
ORA #3
STA C2DDRA
*
* SWITCH TO UPPER CASE
*
LDA #142
JSR CHROUT
*
* CLEAR RAM FOR CHR MEMORY
*
LDA #48
STA FRETOP
STA MEMSIZ
*
* TURN OFF KB INTERRUPT TIMER
*
LDA CIACRE
AND #$FE
STA CIACRE
*
* SWITCH I/O OFF, CHAR ROM ON
*
LDA R6510
AND #$FB
STA R6510
*
* COPY CHARACTERS INTO RAM
*
LDA #<CHRBAS
STA MVSRCE
LDA #>CHRBAS
STA MVSRCE+1
*
LDA #<NEWADR
STA MVDEST
LDA #>NEWADR
STA MVDEST+1
*
LDA #<TABLEN
STA LENPTR
LDA #>TABLEN
STA LENPTR+1
*
* START MOVE
*
LDY #0
LDX LENPTR+1
BEQ MVPART
MVPAGE LDA (MVSRCE),Y
STA (MVDEST),Y
INY
BNE MVPAGE
INC MVSRCE+1
INC MVDEST+1
DEX
BNE MVPAGE
MVPART LDX LENPTR
BEQ MVEXIT
MVLAST LDA (MVSRCE),Y
STA (MVDEST),Y
INY
DEX
BNE MVLAST
MVEXIT
*
* SWITCH I/O BACK IN
*
LDA R6510
ORA #4
STA R6510
*
* TURN TIMER BACK ON
*
LDA CIACRE
ORA #1
STA CIACRE
*
* SET VIC MEMORY CONTROL REGISTER
*
CLC
LDA MEMREG
AND #$F0
ADC #$0C
STA MEMREG
*
RTS
*
END
*