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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user