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.
43 lines
985 B
ArmAsm
43 lines
985 B
ArmAsm
;
|
|
; 2020-07-12, Oliver Schmidt
|
|
;
|
|
; char cpeekc (void);
|
|
;
|
|
|
|
.ifndef __APPLE2ENH__
|
|
.import machinetype
|
|
.endif
|
|
|
|
.export _cpeekc
|
|
|
|
.include "apple2.inc"
|
|
|
|
_cpeekc:
|
|
ldy CH
|
|
|
|
sec ; Assume main memory
|
|
|
|
.ifndef __APPLE2ENH__
|
|
bit machinetype
|
|
bpl peek
|
|
.endif
|
|
|
|
bit RD80VID ; In 80 column mode?
|
|
bpl peek ; No, just go ahead
|
|
lda OURCH
|
|
lsr ; Div by 2
|
|
tay
|
|
bcs peek ; Odd cols are in main memory
|
|
php
|
|
sei ; No valid MSLOT et al. in aux memory
|
|
bit HISCR ; Assume SET80COL
|
|
|
|
peek: lda (BASL),Y ; Get character
|
|
bcs :+ ; In main memory
|
|
bit LOWSCR
|
|
plp
|
|
|
|
: eor #$80 ; Invert high bit
|
|
ldx #>$0000
|
|
rts
|