Show Image DA: Set IIgs/AppleColor Color/B&W modes. Resolves #44

This commit is contained in:
Joshua Bell 2018-04-27 21:28:09 -07:00
parent 9a2a595f8d
commit 5d4d00b763
2 changed files with 62 additions and 0 deletions

View File

@ -337,11 +337,13 @@ end: rts
jsr stash_menu
MGTK_CALL MGTK::OpenWindow, winfo
MGTK_CALL MGTK::SetPort, winfo::port
jsr set_color_mode
jsr show_file
MGTK_CALL MGTK::ShowCursor
MGTK_CALL MGTK::FlushEvents
MGTK_CALL MGTK::ObscureCursor
;; fall through
.endproc
@ -366,6 +368,7 @@ on_key:
bne input_loop
exit:
jsr set_bw_mode
MGTK_CALL MGTK::HideCursor
MGTK_CALL MGTK::CloseWindow, winfo
DESKTOP_CALL DT_REDRAW_ICONS
@ -597,5 +600,59 @@ cloop: lda (src),y
rts
.endproc
;;; ============================================================
;;; Color/B&W Toggle
;;; TODO: Also consider Le Chat Mauve BW560 mode.
;;; https://github.com/inexorabletash/a2d/issues/41
.proc set_color_mode
;; AppleColor Card - Mode 2 (Color 140x192)
sta CLR80VID
lda AN3_OFF
lda AN3_ON
lda AN3_OFF
lda AN3_ON
lda AN3_OFF
sta SET80VID
;; Apple IIgs - DHR Color
jsr test_iigs
bcs done
lda #%00000000
sta NEWVIDEO
done: rts
.endproc
.proc set_bw_mode
;; AppleColor Card - Mode 1 (Color 560x192)
sta CLR80VID
lda AN3_OFF
lda AN3_ON
lda AN3_OFF
lda AN3_ON
sta SET80VID
lda AN3_OFF
;; Apple IIgs - DHR B&W
jsr test_iigs
bcs done
lda #%00100000
sta NEWVIDEO
done: rts
.endproc
;;; Returns with carry clear if IIgs, set otherwise.
.proc test_iigs
lda ROMIN2
sec
jsr $FE1F
lda LCBANK1
lda LCBANK1
rts
.endproc
.include "inc/hires_table.inc"
.include "inc/hr_to_dhr.inc"

View File

@ -19,6 +19,11 @@ SPKR := $C030
ROMIN2 := $C082
NEWVIDEO := $C029 ; IIgs - new video modes
;; Bit 7 = 1 = Enable Super-Hi-Res
;; Bit 6 = 1 = Linearize SHR
;; Bit 5 = 0 = Color DHR, 1 = B/W DHR
;; Bits 4-0 must be 0
SHADOW := $C035 ; IIgs - inhibit shadowing
AN3_ON := $C05F ; AppleColor Adapter Card / Le Chat Mauve