4cade/src/4cade.a
2018-08-26 15:33:32 -04:00

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