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:
Colin Leroy-Mira
2025-05-27 16:31:23 +02:00
committed by Oliver Schmidt
parent cd92e4f0af
commit 816666615b
23 changed files with 523 additions and 107 deletions

View File

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