Fixes to the Apple II build system; step mode and proper ProDOS quit in render demo.

This commit is contained in:
Martin Haye 2013-08-21 10:07:13 -07:00
parent be2ae30116
commit 73b51d1b26
4 changed files with 50 additions and 5 deletions

1
.gitignore vendored
View File

@ -13,3 +13,4 @@
# Only check in sample.build.props; each person's build.props will be different.
/Platform/Apple/virtual/src/include/build.props
/Platform/Apple/tools/A2Copy/build/

View File

@ -29,6 +29,7 @@
<ant dir="${src.dir}/raycast" target="build" useNativeBasedir="true" inheritAll="false"/>
<!-- Construct a directory to put on the Apple -->
<delete failonerror="false" dir="${build.dir}/root"/>
<mkdir dir="${build.dir}/root"/>
<copy todir="${build.dir}/root">
<fileset dir="${src.dir}/raycast/build" includes="*.bin*"/>
@ -42,6 +43,7 @@
</copy>
<!-- Make a new base image file -->
<delete failonerror="false" file="${build.dir}/${projName}.2mg"/>
<bunzip2 src="./data/disks/base.2mg.bz2" dest="${build.dir}/${projName}.2mg"/>
<!-- And stuff the directory into it -->

View File

@ -34,7 +34,8 @@
<mkdir dir="${build.dir}"/>
<!-- Compile ASM -->
<apply executable="${CA65_TOOL}" dir="${src.dir}" relative="true" parallel="false" verbose="true">
<apply executable="${CA65_TOOL}" dir="${src.dir}"
relative="true" parallel="false" failonerror="true" verbose="true">
<fileset dir="${src.dir}" includes="*.s"/>
<mapper type="glob" from="*.s" to="${build.dir}/*.o"/>
<arg line="${ASM_INCLUDES}"/>
@ -45,7 +46,8 @@
</apply>
<!-- Link it -->
<apply executable="${LD65_TOOL}" dir="${build.dir}" failonerror="true" verbose="true">
<apply executable="${LD65_TOOL}" dir="${build.dir}"
failonerror="true" verbose="true">
<arg line="-t none --start-addr 0x${ORG_ADDR} -o"/>
<arg value="${BIN_FILE}"/>
<fileset dir="${build.dir}" includes="*.o"/>

View File

@ -14,7 +14,7 @@ DBLBUF = 0 ; whether to double-buffer
DEBUG = 0 ; turn on verbose logging
; Constants
TOPLINE = $2000
TOPLINE = $2180 ; 24 lines down from top
NLINES = 126
SKYCOL = $11 ; blue
GROUNDCOL = $2 ; orange / black
@ -39,6 +39,9 @@ STARTADDR = $3C
ENDADDR = $3E
DESTADDR = $42
; Other monitor locations
RESETVEC = $3F2
; Place to stick ProDOS names temporarily
NAMEBUF = $280
@ -961,6 +964,13 @@ TEST:
LDA #0
DEX
BNE @MEMLUP
; make reset go to monitor
LDA #<MONITOR
STA RESETVEC
LDA #>MONITOR
STA RESETVEC+1
EOR #$A5
STA RESETVEC+2
; load the pre-raycast data
LDA #$20 ; addr hi
PHA
@ -1015,6 +1025,16 @@ TEST:
LDX #<@TEX3NAME
LDA #>@TEX3NAME
JSR BLOAD
; load the fancy frame
LDA #>$2000
PHA
LDA #<$2000
PHA
LDX #<@FRAMENAME
LDA #>@FRAMENAME
JSR BLOAD
; build all the unrolls and tables
JSR MAKEBLIT
JSR MAKECBLIT
@ -1022,7 +1042,6 @@ TEST:
JSR MAKEDCM
JSR MAKEBUMPS
JSR MAKELINES
JSR CLRSCR
; set up front and back buffers
LDA #0
STA FRONTBUF
@ -1094,6 +1113,8 @@ TEST:
BNE @ONECOL
@FLUSH:
LDY BYTENUM
INY
INY
STA SETAUXZP
JSR BLITROLL
STA CLRAUXZP
@ -1127,12 +1148,29 @@ TEST:
LDA KBD ; stop if ESC is pressed
CMP #$9B
BEQ @DONE
CMP #$A0 ; pause if space is pressed
BNE @NOTSPC
BIT KBDSTRB
@PAUSELUP:
LDA KBD
BPL @PAUSELUP
@NOTSPC:
JMP @ONELVL
@DONE:
STA KBDSTRB ; eat the keypress
BIT SETTEXT
BIT PAGE1
RTS
; quit the ProDOS way
INC RESETVEC+2 ; invalidate reset vector
JSR MLI
.byte $65
.addr @QUITPARMS
@QUITPARMS:
.byte 4, 0
.word 0
.byte 0
.word 0
@DIR: .byte 1
@TEX0NAME: .byte 21
.byte "/LL/ASSETS/BUILDING01"
@ -1144,6 +1182,8 @@ TEST:
.byte "/LL/ASSETS/BUILDING04"
@PRECASTNM: .byte 18
.byte "/LL/ASSETS/PRECAST"
@FRAMENAME: .byte 16
.byte "/LL/ASSETS/FRAME"
CODEEND = *