1
0
mirror of https://github.com/cc65/cc65.git synced 2026-03-11 23:42:18 +00:00
Files
cc65/libsrc/apple2/videomode.s
Colin Leroy-Mira e444f4c40e Apple2: Safely check for 80-columns card
Check the Pascal ID bytes for an 80-columns card
to avoid blindly jumping into a $C300 that could be
totally unrelated.
2025-05-27 23:38:56 +02:00

53 lines
1.2 KiB
ArmAsm

;
; Oliver Schmidt, 07.09.2009
;
; signed char __fastcall__ videomode (unsigned mode);
;
.export _videomode
.import aux80col
.import returnFFFF
.include "apple2.inc"
VIDEOMODE_40x24 = $15
VIDEOMODE_80x24 = $00
.segment "LOWCODE"
_videomode:
bit aux80col
bmi set_mode
; No 80 column card, return error if requested mode is 80cols
cmp #VIDEOMODE_40x24
beq out
jmp returnFFFF
set_mode:
; Get and save current videomode flag
bit RD80VID
php
; Initializing the 80 column firmware needs the ROM switched
; in, otherwise it would copy the F8 ROM to the LC (@ $CEF4)
bit $C082
; Call 80 column firmware with ctrl-char code
jsr $C300
; Switch in LC bank 2 for R/O
bit $C080
; Switch in alternate charset again
sta SETALTCHAR
; Return ctrl-char code for setting previous
; videomode using the saved videomode flag
lda #VIDEOMODE_40x24
plp
bpl out
lda #VIDEOMODE_80x24
out: rts ; X was preserved all the way