From b817f5c0b013e7c84f2fdee078b08f7e8b1254d5 Mon Sep 17 00:00:00 2001 From: Joshua Bell Date: Sun, 13 Jan 2019 14:55:41 -0800 Subject: [PATCH] Re-enable Le Chat Mauve/AppleColor DHR color mode on exit. Fixes #111 --- desk.acc/run.basic.here.s | 36 ++++++++++++++++--- desktop/desktop_main.s | 74 +++++++++++++++++++++++++-------------- 2 files changed, 78 insertions(+), 32 deletions(-) diff --git a/desk.acc/run.basic.here.s b/desk.acc/run.basic.here.s index f222d32..2f7c374 100644 --- a/desk.acc/run.basic.here.s +++ b/desk.acc/run.basic.here.s @@ -37,6 +37,10 @@ prefix_path: .res 65, 0 ;;; ============================================================ + ;; Early errors - show alert and return to DeskTop +fail: jsr JUMP_TABLE_ALERT_X + rts + start: ;; Get active window's path jsr get_win_path @@ -64,6 +68,33 @@ start: sta LOWSCR sta LORES sta MIXCLR + + ;; AppleColor Card - Mode 2 (Color 140x192) + sta SET80VID + lda AN3_OFF + lda AN3_ON + lda AN3_OFF + lda AN3_ON + lda AN3_OFF + + ;; IIgs? + sec + jsr ID_BYTE_FE1F + bcc iigs + + ;; Le Chat Mauve - COL140 mode + ;; (AN3 off, HR1 off, HR2 off, HR3 off) + ;; Skip on IIgs since emulators (KEGS/GSport/GSplus) crash. + sta HR2_OFF + sta HR3_OFF + bcs finish_video + + ;; Apple IIgs - DHR Color +iigs: lda NEWVIDEO + and #<~(1<<5) ; Color + sta NEWVIDEO + +finish_video: sta DHIRESOFF sta CLRALTCHAR sta CLR80VID @@ -93,11 +124,6 @@ start: ;; Launch jmp $2000 - - ;; Early errors - show alert and return to DeskTop -fail: jsr JUMP_TABLE_ALERT_X - rts - ;; Late errors - QUIT, which should relaunch DeskTop quit: MLI_CALL QUIT, quit_params diff --git a/desktop/desktop_main.s b/desktop/desktop_main.s index 39a5a23..93149cc 100644 --- a/desktop/desktop_main.s +++ b/desktop/desktop_main.s @@ -9343,6 +9343,53 @@ open: MLI_RELAY_CALL OPEN, open_params done: rts .endproc +;;; ============================================================ +;;; Invoked when exiting or launching another program. + +.proc exit_dhr_mode + lda ROMIN2 + jsr SETVID + jsr SETKBD + jsr INIT + jsr HOME + sta TXTSET + sta LOWSCR + sta LORES + sta MIXCLR + + ;; AppleColor Card - Mode 2 (Color 140x192) + sta SET80VID + lda AN3_OFF + lda AN3_ON + lda AN3_OFF + lda AN3_ON + lda AN3_OFF + + ;; IIgs? + sec + jsr ID_BYTE_FE1F + bcc iigs + + ;; Le Chat Mauve - COL140 mode + ;; (AN3 off, HR1 off, HR2 off, HR3 off) + ;; Skip on IIgs since emulators (KEGS/GSport/GSplus) crash. + sta HR2_OFF + sta HR3_OFF + bcs finish_video + + ;; Apple IIgs - DHR Color +iigs: lda NEWVIDEO + and #<~(1<<5) ; Color + sta NEWVIDEO + +finish_video: + sta DHIRESOFF + sta CLRALTCHAR + sta CLR80VID + sta CLR80COL + rts +.endproc + ;;; ============================================================ PAD_TO $8F00 @@ -14863,33 +14910,6 @@ reset_grafport3a: rts ;;; ============================================================ -;;; Invoked when exiting or launching another program. - -.proc exit_dhr_mode - lda ROMIN2 - jsr SETVID - jsr SETKBD - jsr INIT - jsr HOME - sta TXTSET - sta LOWSCR - sta LORES - sta MIXCLR - sta DHIRESOFF - sta CLRALTCHAR - sta CLR80VID - sta CLR80COL - - ;; On IIgs (only), restore DHR Color mode - sec - jsr ID_BYTE_FE1F - bcs done - lda NEWVIDEO - and #<~(1<<5) ; Color - sta NEWVIDEO - -done: rts -.endproc PAD_TO $BF00