Prince-of-Persia-Apple-II/02 POP Disk Routines/RW1835/DEMOBOOT.S

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