double: finally figure out why dhgr not working

This commit is contained in:
Vince Weaver 2023-05-08 02:14:34 -04:00
parent b2727fd8e0
commit 335ad44c1a
5 changed files with 174 additions and 131 deletions

View File

@ -1,50 +0,0 @@
include ../../../Makefile.inc
ZX02 = ~/research/6502_compression/zx02.git/build/zx02
PNG_TO_DGR = ../../../utils/gr-utils/png2dgr
LINKER_SCRIPTS = ../../../linker_scripts
DOS33 = ../../../utils/dos33fs-utils/dos33
EMPTY_DISK = ../../../empty_disk/empty.dsk
TOKENIZE = ../../../utils/asoft_basic-utils/tokenize_asoft
all: dlores_plain.dsk
####
DLORES: dlores_plain.o
ld65 -o DLORES dlores_plain.o -C $(LINKER_SCRIPTS)/apple2_1000.inc
dlores_plain.o: dlores_plain.s ../dlores_main.s ../zx02_optim.s \
../zp.inc ../hardware.inc
ca65 -o dlores_plain.o dlores_plain.s -l dlores_plain.lst
####
HELLO: ../hello.bas
$(TOKENIZE) < ../hello.bas > HELLO
####
dlores_plain.dsk: HELLO DLORES\
myst.gr.main.zx02 myst.gr.aux.zx02\
channelwood.gr.main.zx02 channelwood.gr.aux.zx02\
selenetic.gr.main.zx02 selenetic.gr.aux.zx02\
sworg_dgr.gr.main.zx02 sworg_dgr.gr.aux.zx02\
dgr_test_bar.gr.main.zx02 dgr_test_bar.gr.aux.zx02
cp $(EMPTY_DISK) dlores_plain.dsk
$(DOS33) -y dlores_plain.dsk SAVE A HELLO
$(DOS33) -y dlores_plain.dsk BSAVE -a 0x1000 DLORES
$(DOS33) -y dlores_plain.dsk BSAVE -a 0xa000 myst.gr.main.zx02 MYST.MAIN.ZX02
$(DOS33) -y dlores_plain.dsk BSAVE -a 0xa000 myst.gr.aux.zx02 MYST.AUX.ZX02
$(DOS33) -y dlores_plain.dsk BSAVE -a 0xa000 channelwood.gr.main.zx02 CHANNEL.MAIN.ZX02
$(DOS33) -y dlores_plain.dsk BSAVE -a 0xa000 channelwood.gr.aux.zx02 CHANNEL.AUX.ZX02
$(DOS33) -y dlores_plain.dsk BSAVE -a 0xa000 selenetic.gr.main.zx02 SELEN.MAIN.ZX02
$(DOS33) -y dlores_plain.dsk BSAVE -a 0xa000 selenetic.gr.aux.zx02 SELEN.AUX.ZX02
$(DOS33) -y dlores_plain.dsk BSAVE -a 0xa000 sworg_dgr.gr.main.zx02 SWORG.MAIN.ZX02
$(DOS33) -y dlores_plain.dsk BSAVE -a 0xa000 sworg_dgr.gr.aux.zx02 SWORG.AUX.ZX02
$(DOS33) -y dlores_plain.dsk BSAVE -a 0xa000 dgr_test_bar.gr.main.zx02 TEST.MAIN.ZX02
$(DOS33) -y dlores_plain.dsk BSAVE -a 0xa000 dgr_test_bar.gr.aux.zx02 TEST.AUX.ZX02
####
clean:
rm -f *~ *.o *.lst

View File

@ -25,10 +25,12 @@ DOUBLE: double.o
double.o: double.s \ double.o: double.s \
zp.inc hardware.inc pt3_lib_mockingboard_detect.s \ zp.inc hardware.inc pt3_lib_mockingboard_detect.s \
pt3_lib_mockingboard_setup.s pt3_lib_detect_model.s \ pt3_lib_mockingboard_setup.s pt3_lib_detect_model.s \
zx02_optim.s \ zx02_optim.s copy_400.s \
graphics/sworg_hgr.hgr.zx02 \ graphics/sworg_hgr.hgr.zx02 \
graphics/sworg_dhgr.aux.zx02 \ graphics/sworg_dhgr.aux.zx02 \
graphics/sworg_dhgr.bin.zx02 graphics/sworg_dhgr.bin.zx02 \
graphics/sworg_dgr.main.zx02 \
graphics/sworg_dgr.aux.zx02
ca65 -o double.o double.s -l double.lst ca65 -o double.o double.s -l double.lst
### ###

View File

@ -0,0 +1,35 @@
;=========================
; copy to 400
;=========================
copy_to_400:
ldx #119
looper1:
lda $c00,X
sta $400,X
lda $c80,X
sta $480,X
lda $d00,X
sta $500,X
lda $d80,X
sta $580,X
lda $e00,X
sta $600,X
lda $e80,X
sta $680,X
lda $f00,X
sta $700,X
lda $f80,X
sta $780,X
dex
bpl looper1
rts

View File

@ -15,9 +15,9 @@ double:
jsr detect_appleii_model jsr detect_appleii_model
;=================== ;======================
; machine workarounds ; machine workarounds
;=================== ;======================
; mostly IIgs ; mostly IIgs
;=================== ;===================
; thanks to 4am who provided this code from Total Replay ; thanks to 4am who provided this code from Total Replay
@ -56,90 +56,58 @@ not_a_iigs:
;================================ ;================================
jsr SETGR ; set lo-res 40x40 mode jsr SETGR ; set lo-res 40x40 mode
bit LORES
; set 80-store mode ; set 80-store mode
sta EIGHTYSTOREON ; PAGE2 selects AUX memory sta EIGHTYSTOREON ; PAGE2 selects AUX memory
bit PAGE1
;=================== ;=========================================================
; draw lo-res lines ; load double lo-res image to $C00 and copy to MAIN:PAGE1
;=========================================================
ldx #39
draw_lores_lines:
txa
tay
jsr SETCOL
lda #47
sta V2
lda #0
jsr VLINE ; VLINE A,$2D at Y
dex
bpl draw_lores_lines
; copy to 800 temporarily
; yes this is a bit of a hack
ldy #0
cp_loop:
lda $400,Y
sta $800,Y
lda $500,Y
sta $900,Y
lda $600,Y
sta $A00,Y
lda $700,Y
sta $B00,Y
iny
bne cp_loop
bit PAGE1 bit PAGE1
; copy to $400 in AUX lda #<image_dgr_main
sta ZX0_src
lda #>image_dgr_main
sta ZX0_src+1
bit PAGE2 ; $400 now maps to AUX:$400 lda #$0c
ldy #0 jsr full_decomp
cp2_loop:
lda $800,Y
eor #$FF
sta $400,Y
lda $900,Y jsr copy_to_400
eor #$FF
sta $500,Y
lda $A00,Y ;=========================================================
eor #$FF ; load double lo-res image to $C00 and copy to AUX:PAGE1
sta $600,Y ;=========================================================
lda $B00,Y bit PAGE2 ; map in AUX (80store)
eor #$FF
sta $700,Y
iny lda #<image_dgr_aux
bne cp2_loop sta ZX0_src
lda #>image_dgr_aux
sta ZX0_src+1
bit PAGE1 lda #$0c
jsr full_decomp
jsr copy_to_400
;======================================= ;=======================================
; load double hi-res image to MAIN:PAGE1 ; load double hi-res image to MAIN:PAGE1
;======================================= ;=======================================
bit HIRES ; need to do this for 80store to work
bit PAGE1
lda #<image_dhgr_bin lda #<image_dhgr_bin
sta ZX0_src sta ZX0_src
lda #>image_dhgr_bin lda #>image_dhgr_bin
sta ZX0_src+1 sta ZX0_src+1
lda #$20 lda #$20
jsr full_decomp jsr full_decomp
@ -198,8 +166,13 @@ double_loop:
; each line 65 cycles (25 hblank+40 bytes) ; each line 65 cycles (25 hblank+40 bytes)
; 3 LINES 80-COL AN3 ; 3 LINES 80-COL TEXT AN3=0 PAGE=1
nop
nop
nop
nop
sta SET80COL ; 4 sta SET80COL ; 4
bit SET_TEXT ; 4 bit SET_TEXT ; 4
@ -208,58 +181,110 @@ double_loop:
jsr delay_1552 jsr delay_1552
; 3 LINES 40-COL AN3 ; 3 LINES 40-COL TEXT AN3=0 PAGE=1
nop
nop
nop
nop
sta CLR80COL ; 4 sta CLR80COL ; 4
bit SET_TEXT ; 4 bit SET_TEXT ; 4
jsr delay_1552 jsr delay_1552
; 3 LINES 40-col LORES AN3 ; 3 LINES 40-col LORES AN3=0 PAGE=1
lda LORES ; 4 nop
nop
nop
nop
bit PAGE1 ; 4
bit SET_GR ; 4 bit SET_GR ; 4
jsr delay_1552 jsr delay_1552
; 3 LINES 80-col DLORES AN3 ; 3 LINES 80-col DLORES AN3=0 PAGE=1
nop
nop
sta LORES
sta SET80COL ; 4 sta SET80COL ; 4
sta CLRAN3 ; 4 sta CLRAN3 ; 4
jsr delay_1552 jsr delay_1552
; 3 lines 40-col LORES
sta CLR80COL ; 4 ; 3 LINES 80-col DLORES AN3=0 PAGE=1
sta SETAN3 ; 4 ; doublehiresoff
nop
nop
nop
nop
nop
nop
nop
nop
jsr delay_1552 jsr delay_1552
; 3 lines HIRES PAGE2 ; 3 lines HIRES 40-COL AN3=1 PAGE=2
sta CLR80COL
sta HIRES ; 4 sta HIRES ; 4
sta PAGE2 ; 4 sta PAGE2 ; 4
sta SETAN3
jsr delay_1552 jsr delay_1552
; 3 lines Double-hires ; 3 lines Double-hires AN3=0 PAGE=1
sta PAGE1
bit HIRES
sta SET80COL ; 4 ; set 80 column mode sta SET80COL ; 4 ; set 80 column mode
sta CLRAN3 ; 4 ; doublehireson sta CLRAN3 ; 4 ; doublehireson
jsr delay_1552 jsr delay_1552
; 3 line Double-HIRES ; 3 line Double-HIRES
; sta PAGE1 ; 4 nop
sta SET_GR ; 4 nop
sta SET_GR ; 4
nop
nop
nop
nop
nop
nop
jsr delay_1552 jsr delay_1552
jmp skip_vblank
.align $100
;================================== ;==================================
; vblank = 4550 cycles ; vblank = 4550 cycles
; -6
; 4544
; Try X=226 Y=4 cycles=4545 ; Try X=226 Y=4 cycles=4545
; Try X=9 Y=89 cycles=4540
skip_vblank: skip_vblank:
nop
nop nop
ldy #4 ; 2 ldy #89 ; 2
loop3: ldx #226 ; 2 loop3: ldx #9 ; 2
loop4: dex ; 2 loop4: dex ; 2
bne loop4 ; 2nt/3 bne loop4 ; 2nt/3
dey ; 2 dey ; 2
@ -276,10 +301,17 @@ loop4: dex ; 2
; actually want 1552-12 (6 each for jsr/rts) ; actually want 1552-12 (6 each for jsr/rts)
; 1540 ; 1540
; Try X=15 Y=19 cycles=1540 ; Try X=15 Y=19 cycles=1540
; 1532
; Try X=1 Y=139 cycles=1530
delay_1552: delay_1552:
ldy #19 ; 2 nop
loop5: ldx #15 ; 2
ldy #139 ; 2
loop5: ldx #1 ; 2
loop6: dex ; 2 loop6: dex ; 2
bne loop6 ; 2nt/3 bne loop6 ; 2nt/3
dey ; 2 dey ; 2
@ -295,9 +327,15 @@ loop6: dex ; 2
.include "zx02_optim.s" .include "zx02_optim.s"
.include "copy_400.s"
image_hgr: image_hgr:
.incbin "graphics/sworg_hgr.hgr.zx02" .incbin "graphics/sworg_hgr.hgr.zx02"
image_dhgr_aux: image_dhgr_aux:
.incbin "graphics/sworg_dhgr.aux.zx02" .incbin "graphics/sworg_dhgr.aux.zx02"
image_dhgr_bin: image_dhgr_bin:
.incbin "graphics/sworg_dhgr.bin.zx02" .incbin "graphics/sworg_dhgr.bin.zx02"
image_dgr_aux:
.incbin "graphics/sworg_dgr.aux.zx02"
image_dgr_main:
.incbin "graphics/sworg_dgr.main.zx02"

View File

@ -3,6 +3,7 @@ include ../../../Makefile.inc
ZX02 = ~/research/6502_compression/zx02.git/build/zx02 ZX02 = ~/research/6502_compression/zx02.git/build/zx02
PNG_TO_HGR = ../../../utils/hgr-utils/png2hgr PNG_TO_HGR = ../../../utils/hgr-utils/png2hgr
PNG_TO_DHGR = ../../../utils/hgr-utils/png2dhgr PNG_TO_DHGR = ../../../utils/hgr-utils/png2dhgr
PNG_TO_DGR = ../../../utils/gr-utils/png2dgr
LINKER_SCRIPTS = ../../../linker_scripts LINKER_SCRIPTS = ../../../linker_scripts
DOS33 = ../../../utils/dos33fs-utils/dos33 DOS33 = ../../../utils/dos33fs-utils/dos33
EMPTY_DISK = ../../../empty_disk/empty.dsk EMPTY_DISK = ../../../empty_disk/empty.dsk
@ -11,7 +12,9 @@ TOKENIZE = ../../../utils/asoft_basic-utils/tokenize_asoft
all: \ all: \
sworg_hgr.hgr.zx02 \ sworg_hgr.hgr.zx02 \
sworg_dhgr.bin.zx02 \ sworg_dhgr.bin.zx02 \
sworg_dhgr.aux.zx02 sworg_dhgr.aux.zx02 \
sworg_dgr.main.zx02 \
sworg_dgr.aux.zx02
#### ####
@ -35,6 +38,21 @@ sworg_dhgr.bin.zx02: sworg_dhgr.BIN
sworg_dhgr.BIN: sworg_dhgr.png sworg_dhgr.BIN: sworg_dhgr.png
$(PNG_TO_DHGR) sworg_dhgr.png sworg_dhgr $(PNG_TO_DHGR) sworg_dhgr.png sworg_dhgr
####
sworg_dgr.aux.zx02: sworg_dgr.aux
$(ZX02) sworg_dgr.aux sworg_dgr.aux.zx02
sworg_dgr.aux: sworg_dgr.png
$(PNG_TO_DGR) sworg_dgr.png sworg_dgr
sworg_dgr.main.zx02: sworg_dgr.main
$(ZX02) sworg_dgr.main sworg_dgr.main.zx02
sworg_dgr.main: sworg_dgr.png
$(PNG_TO_DGR) sworg_dgr.png sworg_dgr
#### ####