Re-enable Le Chat Mauve/AppleColor DHR color mode on exit. Fixes #111

This commit is contained in:
Joshua Bell 2019-01-13 14:55:41 -08:00
parent 0078eb6b96
commit b817f5c0b0
2 changed files with 78 additions and 32 deletions

View File

@ -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

View File

@ -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