mirror of
https://github.com/a2-4am/4cade.git
synced 2024-06-09 17:29:32 +00:00
122 lines
2.8 KiB
Plaintext
122 lines
2.8 KiB
Plaintext
Has128KStatus =$FF ; [byte] set by Has128K
|
|
|
|
;------------------------------------------------------------------------------
|
|
; Has128K
|
|
; Checks whether computer has auxiliary memory (i.e. 128K)
|
|
;
|
|
; in: none
|
|
; out: zero page $FF has
|
|
; $00 = not a //e
|
|
; $20 = //e but no 80-col card
|
|
; $40 = 80-col card but no aux mem
|
|
; $80 = aux mem detected (yay!)
|
|
; all other flags clobbered
|
|
; all registers clobbered
|
|
; zero page $1A-$1D clobbered
|
|
;
|
|
; original was AUX.MEM.CHECK from "Extra K"
|
|
; (c) 1986 Beagle Bros
|
|
; written by Alan Bird and Mark Simonsen, 1986-03-28
|
|
;------------------------------------------------------------------------------
|
|
Has128K
|
|
php
|
|
sei
|
|
lda $E000 ; store values from language card
|
|
sta $1A ; (used later to determine which
|
|
lda $D000 ; RAM bank is active and reset it)
|
|
sta $1B
|
|
lda $D400
|
|
sta $1C
|
|
lda $D800
|
|
sta $1D
|
|
lda ROMIN
|
|
lda ROMIN
|
|
lda MACHINEID
|
|
cmp #$06
|
|
bne @noiie
|
|
lda SLOT3STATUS
|
|
bmi @no80col
|
|
lda AUXMEMSTATUS
|
|
bmi @yesauxmem
|
|
lda AUXZPSTATUS
|
|
bmi @yesauxmem
|
|
ldy #$28
|
|
- ldx @checker,Y
|
|
lda $100,Y
|
|
sta @checker,Y
|
|
txa
|
|
sta $100,Y
|
|
dey
|
|
bpl -
|
|
jmp $100
|
|
@postcheck
|
|
ldy #$28
|
|
- lda @checker,Y
|
|
sta $100,Y
|
|
dey
|
|
bpl -
|
|
bcs @noauxmem
|
|
@yesauxmem
|
|
lda #$80
|
|
+HIDE_NEXT_2_BYTES
|
|
@noauxmem
|
|
lda #$40
|
|
+HIDE_NEXT_2_BYTES
|
|
@no80col
|
|
lda #$20
|
|
+HIDE_NEXT_2_BYTES
|
|
@noiie
|
|
lda #$00
|
|
sta Has128KStatus
|
|
lda $E000
|
|
cmp $1A
|
|
bne @tryRAMbank1
|
|
lda $D000
|
|
cmp $1B
|
|
bne @tryRAMbank1
|
|
lda $D400
|
|
cmp $1C
|
|
bne @tryRAMbank1
|
|
lda $D800
|
|
cmp $1D
|
|
beq @done
|
|
@tryRAMbank1
|
|
lda LCBANK1READ
|
|
lda $E000
|
|
cmp $1A
|
|
bne @tryRAMbank2
|
|
lda $D000
|
|
cmp $1B
|
|
bne @tryRAMbank2
|
|
lda $D400
|
|
cmp $1C
|
|
bne @tryRAMbank2
|
|
lda $D800
|
|
cmp $1D
|
|
beq @done
|
|
@tryRAMbank2
|
|
lda LCBANK2READ
|
|
@done
|
|
plp
|
|
lda Has128KStatus
|
|
rts
|
|
@checker
|
|
lda #$EE
|
|
sta WRITEAUXMEM
|
|
sta READAUXMEM
|
|
sta $800
|
|
lda $C00
|
|
cmp #$EE
|
|
bne @auxworks
|
|
asl $C00
|
|
lda $800
|
|
cmp $C00
|
|
bne @auxworks
|
|
sec
|
|
+HIDE_NEXT_BYTE
|
|
@auxworks
|
|
clc
|
|
sta WRITEMAINMEM
|
|
sta READMAINMEM
|
|
jmp @postcheck
|