mirror of
https://github.com/jmechner/Prince-of-Persia-Apple-II.git
synced 2025-01-13 19:29:41 +00:00
191 lines
2.2 KiB
ArmAsm
Executable File
191 lines
2.2 KiB
ArmAsm
Executable File
lst off
|
|
|
|
org = $1000
|
|
org org
|
|
|
|
*-------------------------------------------------
|
|
*
|
|
* 08/01/85
|
|
* 07/02/87 mod for 3.5
|
|
*
|
|
* Demo using the 18 sector routines.
|
|
*
|
|
* Loads in a double hires picture
|
|
* from tracks 2,3,4 and 5.
|
|
*
|
|
* by Roland Gustafsson
|
|
*
|
|
|
|
temp0 = $3A
|
|
temp1 = $3B
|
|
|
|
RW18temp = $2100
|
|
RW18 = $D000
|
|
|
|
slot = $FD
|
|
track = $FE
|
|
|
|
*-------------------------------------------------
|
|
*
|
|
* Move to actual run address
|
|
*
|
|
|
|
start ldy #0
|
|
:0 lda $2000,y
|
|
sta org,y
|
|
iny
|
|
bne :0
|
|
jmp :1
|
|
|
|
* Tell RW18 which slot to use
|
|
|
|
:1 lda $43
|
|
sta slot
|
|
|
|
jsr check64k
|
|
|
|
* Turn on the disk drive (It is
|
|
* already on, but this call is
|
|
* necessary to initialize the
|
|
* RW18 routine)
|
|
|
|
LOOP jsr RW18
|
|
hex 000100
|
|
|
|
* Clear hires page
|
|
|
|
jsr hgr
|
|
|
|
* Now seek to track two since that
|
|
* is where the data starts.
|
|
|
|
jsr RW18
|
|
hex 020002
|
|
|
|
* Display double hires page one
|
|
|
|
sta $C050
|
|
sta $C052
|
|
sta $C054
|
|
sta $C057
|
|
sta $C00D
|
|
sta $C05E
|
|
sta $C001
|
|
|
|
* Load in the picture
|
|
|
|
bit $C055
|
|
jsr LOADBANK
|
|
bit $C054
|
|
jsr LOADBANK
|
|
sta $C000
|
|
|
|
* Turn off the drive
|
|
|
|
jsr RW18
|
|
hex 01
|
|
|
|
* Wait for keypress
|
|
|
|
waitkey lda $C000
|
|
bpl waitkey
|
|
sta $C010
|
|
bmi LOOP
|
|
|
|
*-------------------------------------------------
|
|
*
|
|
* Load in two tracks
|
|
*
|
|
* The C in C3 and C4 means
|
|
* bit7:sound speaker on error
|
|
* bit6:auto inc track
|
|
*
|
|
* Read sequence
|
|
*
|
|
|
|
LOADBANK jsr RW18
|
|
hex C320
|
|
|
|
* Read group
|
|
|
|
jsr RW18
|
|
hex 84
|
|
hex 32333435363738393A
|
|
hex 3B3C3D3E0000000000
|
|
* ^^^^^^^^
|
|
* Note that the last five sectors
|
|
* are ignored.
|
|
*
|
|
* Read last page by itself to
|
|
* test RW18.35.
|
|
|
|
jsr RW18
|
|
hex C4
|
|
hex 000000000000000000
|
|
hex 000000003F00000000
|
|
|
|
rts
|
|
|
|
*-------------------------------------------------
|
|
*
|
|
* Clear double hires page
|
|
*
|
|
|
|
hgr sta $C005
|
|
jsr :0
|
|
sta $C004
|
|
|
|
:0 ldy #0
|
|
ldx #$20
|
|
sty temp0
|
|
stx temp1
|
|
tya
|
|
:1 sta (temp0),y
|
|
iny
|
|
bne :1
|
|
inc temp1
|
|
dex
|
|
bne :1
|
|
rts
|
|
|
|
*-------------------------------------------------
|
|
*
|
|
* Check for 64k and move RW18 to its home.
|
|
*
|
|
|
|
check64k bit $C08B
|
|
bit $C08B
|
|
ldy #0
|
|
:0 sty $E000
|
|
cpy $E000
|
|
bne NOT64K
|
|
iny
|
|
bne :0
|
|
|
|
* Move RW18 to $D000
|
|
|
|
ldx #5
|
|
:1 lda RW18temp,y
|
|
:2 sta RW18,y
|
|
iny
|
|
bne :1
|
|
inc :1+2
|
|
inc :2+2
|
|
dex
|
|
bne :1
|
|
rts
|
|
|
|
NOT64K sta $C081
|
|
ldy #0
|
|
:0 lda :errtext,y
|
|
beq *
|
|
sta $628,y
|
|
iny
|
|
bne :0
|
|
|
|
:errtext ASC "REQUIRES 64K MEMORY",00
|
|
|
|
*------------------------------------------------- EOF
|
|
|
|
sav demoboot
|