Apple2: Make 80-columns support dynamic on apple2 target
Add a machinetype identifier to help us quickly identify Apple //e (bit 7) and //e enhanced (bit 6). Use it in conio functions for 80-columns code instead of relying entirely on the __APPLE2ENH__ target. Move videomode() to the apple2 target, and have it return an error if 80-columns hardware is not available - this is a lie for now, it is considered available on //e enhanced, which may not be true, and not available on //e, which may also be not true. An ulterior patch will make that check correctly. Adapt the box/line drawing characters so that one can use MouseText on the apple2 target if it is available, by defining DYN_DRAW_BOX. No change by default: MouseText is considered available on apple2enh and not available on apple2.
This commit is contained in:
committed by
Oliver Schmidt
parent
cd92e4f0af
commit
816666615b
@@ -1,17 +1,40 @@
|
||||
;
|
||||
; Oliver Schmidt, 07.09.2009
|
||||
;
|
||||
; unsigned __fastcall__ videomode (unsigned mode);
|
||||
; signed char __fastcall__ videomode (unsigned mode);
|
||||
;
|
||||
.ifdef __APPLE2ENH__
|
||||
|
||||
.export _videomode
|
||||
|
||||
.ifndef __APPLE2ENH__
|
||||
.import machinetype
|
||||
.endif
|
||||
|
||||
.import returnFFFF
|
||||
|
||||
.include "apple2.inc"
|
||||
.include "mli.inc"
|
||||
|
||||
|
||||
VIDEOMODE_40x24 = $15
|
||||
VIDEOMODE_80x24 = $00
|
||||
|
||||
.segment "LOWCODE"
|
||||
|
||||
_videomode:
|
||||
; Functionally equivalent to previous assumption that
|
||||
; __APPLE2ENH__ == 80 columns hardware present. Will be
|
||||
; correctly checked in the very near future.
|
||||
.ifndef __APPLE2ENH__
|
||||
bit machinetype
|
||||
bvs set_mode
|
||||
|
||||
; No 80 column card, return error if requested mode is 80cols
|
||||
cmp #VIDEOMODE_40x24
|
||||
beq out
|
||||
jmp returnFFFF
|
||||
set_mode:
|
||||
.endif
|
||||
|
||||
; Get and save current videomode flag
|
||||
bit RD80VID
|
||||
php
|
||||
@@ -31,10 +54,8 @@ _videomode:
|
||||
|
||||
; Return ctrl-char code for setting previous
|
||||
; videomode using the saved videomode flag
|
||||
lda #$15 ; Ctrl-char code for 40 cols
|
||||
lda #VIDEOMODE_40x24
|
||||
plp
|
||||
bpl :+
|
||||
lda #$00 ; Ctrl-char code for 80 cols
|
||||
: rts ; X was preserved all the way
|
||||
|
||||
.endif ; __APPLE2ENH__
|
||||
bpl out
|
||||
lda #VIDEOMODE_80x24
|
||||
out: rts ; X was preserved all the way
|
||||
|
||||
Reference in New Issue
Block a user