mode7_demo: fix interrupt bug on older (pre IIe-enhanced) systems

This commit is contained in:
Vince Weaver 2018-09-04 12:40:13 -04:00
parent b08d7e5851
commit 762ebf13fe
5 changed files with 38 additions and 4 deletions

View File

@ -9,12 +9,17 @@ all: mode7_demo.dsk
$(DOS33):
cd ../dos33fs-utils && make
mode7_demo.dsk: $(DOS33) MODE7_DEMO MODE7_DEMO_C
mode7_demo.dsk: $(DOS33) MODE7_DEMO MODE7_DEMO_C HELLO
# $(DOS33) -y mode7_demo.dsk BSAVE -a 0x4000 MODE7_DEMO
$(DOS33) -y mode7_demo.dsk BSAVE -a 0x2000 MODE7_DEMO_C
$(DOS33) -y mode7_demo.dsk SAVE A HELLO
####
HELLO: hello.bas
../asoft_basic-utils/tokenize_asoft < hello.bas > HELLO
###
MODE7_DEMO_C: mode7_decompress.o

10
mode7_demo/hello.bas Normal file
View File

@ -0,0 +1,10 @@
2 HOME
5 PRINT
10 PRINT "MODE7_DEMO V1.1"
20 PRINT
23 PRINT
24 PRINT "WWW.DEATER.NET/WEAVE/VMWPROD/MODE7_DEMO"
25 PRINT : PRINT
30 FOR I = 1 TO 1000: NEXT I
40 HGR
50 PRINT CHR$ (4);"BRUN MODE7_DEMO_C"

View File

@ -27,9 +27,17 @@
CHUNKSIZE EQU 11 ; hardcoded, based on krg file
interrupt_handler:
pha ; save A ; 3
; pha ; save A ; 3
; instead count on the handler saving A to $45
; Should we save X and Y too?
txa
pha ; Save X
tya
pha ; Save Y
; inc $0404 ; debug (flashes char onscreen)
bit $C404 ; clear 6522 interrupt by reading T1C-L ; 4
@ -278,7 +286,16 @@ done_interrupt:
exit_interrupt:
pla ; restore a ; 4
pla
tay
pla
tax
; pla ; restore a ; 4
lda $45 ; restore A
rti ; return from interrupt ; 6

Binary file not shown.

View File

@ -324,7 +324,9 @@ title_routine:
.include "mockingboard.s"
.include "credits.s"
.include "interrupt_handler.s"
.byte 0,0,0,0,0,0,0,0
;.byte 0,0,0,0,0,0,0,0
;.byte 0,0,0,0,0,0,0,0 ; irq handler fix = +8 in size
.byte 0,0,0,0,0,0,0,0
.byte 0,0,0,0,0,0,0,0
.byte 0,0,0,0