dos33fsprogs/graphics/dgr_viewer/dlores_main.s
Vince Weaver 30825d0fdf dgr_viewer: double lo-res is a pain
did finally figure out what was going on

the aux pages are rotated by nybble
2023-05-07 14:55:55 -04:00

172 lines
2.1 KiB
ArmAsm

; VMW Productions DGR/ZX02 viewer
; by Vince `deater` Weaver <vince@deater.net>
.include "zp.inc"
.include "hardware.inc"
WHICH = $E0
dgr_start:
;===================
; Init RTS disk code
;===================
jsr rts_init
;===================
; set graphics mode
;===================
jsr HOME
lda SET_GR ; graphics
lda LORES ; lores
sta SET80COL ; enable 80-column hardware
lda FULLGR ; mixset
sta CLRAN3 ; enable double-wide graphics
sta EIGHTYSTOREON ; PAGE2 remaps MAIN:page1 writes to AUX:page1
lda #0
sta WHICH
;===================
; Load graphics
;===================
load_loop:
;=============================
ldx WHICH
lda main_filenames_low,X
sta OUTL
lda main_filenames_high,X
sta OUTH
lda aux_filenames_low,X
sta INL
lda aux_filenames_high,X
sta INH
jsr load_image
wait_until_keypress:
lda KEYBOARD ; 4
bpl wait_until_keypress ; 3
bit KEYRESET ; clear the keyboard buffer
cmp #$88 ; left button
bne inc_which
dec WHICH
bpl which_ok
ldx #(MAX_FILES-1)
bne store_which ; bra
inc_which:
inc WHICH
ldx WHICH
cpx #MAX_FILES
bcc which_ok ; blt
ldx #0
store_which:
stx WHICH
which_ok:
jmp load_loop
;==========================
; Load Image
;===========================
load_image:
bit PAGE1
jsr opendir_filename ; open and read entire file into memory
lda #<$A000
sta zx_src_l+1
lda #>$A000
sta zx_src_h+1
lda #$0c
jsr zx02_full_decomp
jsr copy_to_400 ; try to avoid holes
bit PAGE2
lda INL
sta OUTL
lda INH
sta OUTH
jsr opendir_filename ; open and read entire file into memory
lda #<$A000
sta zx_src_l+1
lda #>$A000
sta zx_src_h+1
lda #$0c
jsr zx02_full_decomp
jsr copy_to_400 ; try to avoid holes
rts
;=========================
; 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
.include "zx02_optim.s"
.include "rts.s"