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

@@ -83,7 +83,10 @@ Y2 := ptr4
.byte $74, $67, $69 ; "tgi"
.byte TGI_API_VERSION ; TGI API version number
libref:
.addr $0000 ; Library reference
.word 280 ; X resolution
.word 192 ; Y resolution
.byte 8 ; Number of drawing colors
@@ -120,6 +123,10 @@ pages: .byte 2 ; Number of screens available
.bss
.ifndef __APPLE2ENH__
machinetype: .res 1
.endif
; Absolute variables used in the code
ERROR: .res 1 ; Error code
@@ -146,13 +153,22 @@ FONT:
; most of the time.
; Must set an error code: NO
INSTALL:
.ifdef __APPLE2ENH__
.ifndef __APPLE2ENH__
lda libref
ldx libref+1
sta ptr1
stx ptr1+1
ldy #$0
lda (ptr1),y
sta machinetype
bpl :+
.endif
; No page switching if 80 column store is enabled
bit RD80COL
bpl :+
lda #$01
sta pages
: .endif
:
; Fall through
@@ -175,10 +191,16 @@ INIT:
; Switch into graphics mode
bit MIXCLR
bit HIRES
.ifdef __APPLE2ENH__
.ifndef __APPLE2ENH__
bit machinetype
bpl clr_txt
.endif
sta IOUDISON
bit DHIRESOFF
.endif
clr_txt:
bit TXTCLR
; Beagle Bros Shape Mechanic fonts don't
@@ -200,11 +222,14 @@ DONE:
bit TXTSET
bit LOWSCR
.ifdef __APPLE2ENH__
.ifndef __APPLE2ENH__
bit machinetype
bpl reset_wndtop
.endif
; Limit SET80COL-HISCR to text
bit LORES
.endif
reset_wndtop:
; Reset the text window top
lda #$00
sta WNDTOP