apple2048/apple2048/textpage.s

162 lines
2.8 KiB
ArmAsm

;
; File: textpage.s
; Author: Jeremy Rand
; Date: July 23, 2014
;
; This file contains some assembly routines to more efficiently flip text pages.
;
.export _switchToPage2, _switchToPage1, _gsSwitchToPage2
.include "apple2.inc"
.A8
.I8
.PC02
_switchToPage2:
ldx #0
@L1:
lda $400,x ; Line 0
sta $800,x
lda $480,x ; Line 1
sta $880,x
lda $500,x ; Line 2
sta $900,x
lda $580,x ; Line 3
sta $980,x
lda $600,x ; Line 4
sta $a00,x
lda $680,x ; Line 5
sta $a80,x
lda $700,x ; Line 6
sta $b00,x
lda $780,x ; Line 7
sta $b80,x
lda $428,x ; Line 8
sta $828,x
lda $4a8,x ; Line 9
sta $8a8,x
lda $528,x ; Line 10
sta $928,x
lda $5a8,x ; Line 11
sta $9a8,x
lda $628,x ; Line 12
sta $a28,x
lda $6a8,x ; Line 13
sta $aa8,x
lda $728,x ; Line 14
sta $b28,x
lda $7a8,x ; Line 15
sta $ba8,x
lda $450,x ; Line 16
sta $850,x
lda $4d0,x ; Line 17
sta $8d0,x
lda $550,x ; Line 18
sta $950,x
lda $5d0,x ; Line 19
sta $9d0,x
lda $650,x ; Line 20
sta $a50,x
lda $6d0,x ; Line 21
sta $ad0,x
lda $750,x ; Line 22
sta $b50,x
lda $7d0,x ; Line 23
sta $bd0,x
inx
cpx #40
beq @L2
jmp @L1
@L2:
stz HISCR
rts
_switchToPage1:
stz LOWSCR
rts
_gsSwitchToPage2:
.P816
clc
xce
rep #$30
.A16
.I16
ldx #0
@L3:
lda $400,x ; Line 0
sta $e00800,x
lda $480,x ; Line 1
sta $e00880,x
lda $500,x ; Line 2
sta $e00900,x
lda $580,x ; Line 3
sta $e00980,x
lda $600,x ; Line 4
sta $e00a00,x
lda $680,x ; Line 5
sta $e00a80,x
lda $700,x ; Line 6
sta $e00b00,x
lda $780,x ; Line 7
sta $e00b80,x
lda $428,x ; Line 8
sta $e00828,x
lda $4a8,x ; Line 9
sta $e008a8,x
lda $528,x ; Line 10
sta $e00928,x
lda $5a8,x ; Line 11
sta $e009a8,x
lda $628,x ; Line 12
sta $e00a28,x
lda $6a8,x ; Line 13
sta $e00aa8,x
lda $728,x ; Line 14
sta $e00b28,x
lda $7a8,x ; Line 15
sta $e00ba8,x
lda $450,x ; Line 16
sta $e00850,x
lda $4d0,x ; Line 17
sta $e008d0,x
lda $550,x ; Line 18
sta $e00950,x
lda $5d0,x ; Line 19
sta $e009d0,x
lda $650,x ; Line 20
sta $e00a50,x
lda $6d0,x ; Line 21
sta $e00ad0,x
lda $750,x ; Line 22
sta $e00b50,x
lda $7d0,x ; Line 23
sta $e00bd0,x
inx
inx
cpx #40
beq @L4
jmp @L3
@L4:
sep #$30
.A8
.I8
sec
xce
.PC02
stz HISCR
rts