mirror of
https://github.com/a2-4am/4cade.git
synced 2024-06-07 03:29:30 +00:00
171 lines
3.8 KiB
Plaintext
171 lines
3.8 KiB
Plaintext
!cpu 6502
|
|
!to "build/LAUNCHER.SYSTEM",plain
|
|
*=$2000
|
|
|
|
Has128KStatus =$FF ; [byte] set by Has128K
|
|
|
|
!source "src/constants.a"
|
|
!source "src/macros.a"
|
|
|
|
jsr Has128K
|
|
- ldx #0
|
|
beq -
|
|
|
|
;------------------------------------------------------------------------------
|
|
; 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
|
|
|
|
; jsr init ; initialize ProRWTS2
|
|
; lda $C08B
|
|
; lda $C08B
|
|
; lda #<cover
|
|
; sta namlo
|
|
; lda #>cover
|
|
; sta namhi
|
|
; lda #0
|
|
; sta sizelo
|
|
; lda #$20
|
|
; sta sizehi
|
|
; jsr hddopendir
|
|
; bit $C055
|
|
; bit $C052
|
|
; bit $C057
|
|
; bit $C050
|
|
;cover !byte cover_e-cover_b
|
|
;cover_b !text "COVER"
|
|
;cover_e
|
|
|
|
;LoadDHGR
|
|
; sta $C000
|
|
; ldx #$20 ; copy $2000 bytes to auxmem
|
|
; stx @copya+2
|
|
; stx @copyb+2
|
|
; ldy #0
|
|
;@writeToAuxLoop
|
|
; sta $C005
|
|
;@copya lda $FF00, y
|
|
;@copyb sta $FF00, y
|
|
; iny
|
|
; bne @copya
|
|
; sta $C004
|
|
; inc @copya+2
|
|
; inc @copyb+2
|
|
; dex
|
|
; bne @writeToAuxLoop
|