stella/test/roms/bankswitching/_code/SB_128K.asm

1136 lines
9.0 KiB
NASM

;;A bankswitching demo for the 128K SuperBanking scheme. 32 4K banks
;;By: Rick Skrbina 4/4/09
processor 6502
include "vcs.h"
include "macro.h"
seg.u vars
org $80
seg bank0
org $0000
rorg $F000
Start0
nop
nop
nop
CLEAN_START
; lda #$1F
; sta COLUBK
Start_Frame
lda #2
sta VSYNC
sta VBLANK
sta WSYNC
sta WSYNC
sta WSYNC
lsr
sta VSYNC
ldy #37
Vertical_Blank
sta WSYNC
dey
bne Vertical_Blank
lda #0
sta VBLANK
lda #$10
sta COLUBK
ldy #6
Picture0
sta WSYNC
dey
bne Picture0
ldx #1
jsr Swch1
ldy #6
Picture1
sta WSYNC
dey
bne Picture1
inx
jsr Swch1
ldy #6
Picture2
sta WSYNC
dey
bne Picture2
inx
jsr Swch1
ldy #6
Picture3
sta WSYNC
dey
bne Picture3
inx
jsr Swch1
ldy #6
Picture4
sta WSYNC
dey
bne Picture4
inx
jsr Swch1
ldy #6
Picture5
sta WSYNC
dey
bne Picture5
inx
jsr Swch1
ldy #6
Picture6
sta WSYNC
dey
bne Picture6
inx
jsr Swch1
ldy #6
Picture7
sta WSYNC
dey
bne Picture7
inx
jsr Swch1
ldy #6
Picture8
sta WSYNC
dey
bne Picture8
inx
jsr Swch1
ldy #6
Picture9
sta WSYNC
dey
bne Picture9
inx
jsr Swch1
ldy #6
PictureA
sta WSYNC
dey
bne PictureA
inx
jsr Swch1
ldy #6
PictureB
sta WSYNC
dey
bne PictureB
inx
jsr Swch1
ldy #6
PictureC
sta WSYNC
dey
bne PictureC
inx
jsr Swch1
ldy #6
PictureD
sta WSYNC
dey
bne PictureD
inx
jsr Swch1
ldy #6
PictureE
sta WSYNC
dey
bne PictureE
inx
jsr Swch1
ldy #6
PictureF
sta WSYNC
dey
bne PictureF
inx
jsr Swch1
ldy #6
Picture10
sta WSYNC
dey
bne Picture10
inx
jsr Swch1
ldy #6
Picture11
sta WSYNC
dey
bne Picture11
inx
jsr Swch1
ldy #6
Picture12
sta WSYNC
dey
bne Picture12
inx
jsr Swch1
ldy #6
Picture13
sta WSYNC
dey
bne Picture13
inx
jsr Swch1
ldy #6
Picture14
sta WSYNC
dey
bne Picture14
inx
jsr Swch1
ldy #6
Picture15
sta WSYNC
dey
bne Picture15
inx
jsr Swch1
ldy #6
Picture16
sta WSYNC
dey
bne Picture16
inx
jsr Swch1
ldy #6
Picture17
sta WSYNC
dey
bne Picture17
inx
jsr Swch1
ldy #6
Picture18
sta WSYNC
dey
bne Picture18
inx
jsr Swch1
ldy #6
Picture19
sta WSYNC
dey
bne Picture19
inx
jsr Swch1
ldy #6
Picture1A
sta WSYNC
dey
bne Picture1A
inx
jsr Swch1
ldy #6
Picture1B
sta WSYNC
dey
bne Picture1B
inx
jsr Swch1
ldy #6
Picture1C
sta WSYNC
dey
bne Picture1C
inx
jsr Swch1
ldy #6
Picture1D
sta WSYNC
dey
bne Picture1D
inx
jsr Swch1
ldy #6
Picture1E
sta WSYNC
dey
bne Picture1E
inx
jsr Swch1
ldy #6
Picture1F
sta WSYNC
dey
bne Picture1F
inx
jsr Swch1
lda #2
sta VBLANK
ldy #30
OverScan
sta WSYNC
dey
bne OverScan
jmp Start_Frame
org $0200
rorg $F200
Swch1
lda $0800,x
nop
nop
nop
nop
nop
nop
rts
org $0FFC
rorg $FFFC
.word Start0
.byte "00"
seg bank1
org $1000
rorg $F000
Start1
lda $0800
Sub1
lda #$12
sta COLUBK
rts
org $1200
rorg $F200
nop
nop
nop
jsr Sub1
lda $0800
org $1FFC
rorg $FFFC
.word Start1
.byte "01"
seg bank2
org $2000
rorg $F000
Start2
lda $0800
Sub2
lda #$14
sta COLUBK
rts
org $2200
rorg $F1200
nop
nop
nop
jsr Sub2
lda $0800
org $2FFC
rorg $FFFC
.word Start2
.byte "02"
seg bank3
org $3000
rorg $F000
Start3
lda $0800
Sub3
lda #$16
sta COLUBK
rts
org $3200
rorg $F200
nop
nop
nop
jsr Sub3
lda $0800
org $3FFC
rorg $FFFC
.word Start3
.byte "03"
seg bank4
org $4000
rorg $F000
Start4
lda $0800
Sub4
lda #$18
sta COLUBK
rts
org $4200
rorg $F200
nop
nop
nop
jsr Sub4
lda $0800
org $4FFC
rorg $FFFC
.word Start4
.byte "04"
seg bank5
org $5000
rorg $F000
Start5
lda $0800
Sub5
lda #$1A
sta COLUBK
rts
org $5200
rorg $F200
nop
nop
nop
jsr Sub5
lda $0800
org $5FFC
rorg $FFFC
.word Start5
.byte "05"
seg bank6
org $6000
rorg $F000
Start6
lda $0800
Sub6
lda #$1C
sta COLUBK
rts
org $6200
rorg $F200
nop
nop
nop
jsr Sub6
lda $0800
org $6FFC
rorg $FFFC
.word Start6
.byte "06"
seg bank7
org $7000
rorg $F000
Start7
lda $0800
Sub7
lda #$1D
sta COLUBK
rts
org $7200
rorg $F200
nop
nop
nop
jsr Sub7
lda $0800
org $7FFC
rorg $FFFC
.word Start7
.byte "07"
seg bank8
org $8000
rorg $F000
Start8
lda $0800
Sub8
lda #$1F
sta COLUBK
rts
org $8200
rorg $F200
nop
nop
nop
jsr Sub8
lda $0800
org $8FFC
rorg $FFFC
.word Start8
.byte "08"
seg bank9
org $9000
rorg $F000
Start9
lda $0800
Sub9
lda #$20
sta COLUBK
rts
org $9200
rorg $F200
nop
nop
nop
jsr Sub9
lda $0800
org $9FFC
rorg $FFFC
.word Start9
.byte "09"
seg bankA
org $A000
rorg $F000
StartA
lda $0800
SubA
lda #$22
sta COLUBK
rts
org $A200
rorg $F200
nop
nop
nop
jsr SubA
lda $0800
org $AFFC
rorg $FFFC
.word StartA
.byte "0A"
seg bankB
org $B000
rorg $F000
StartB
lda $0800
SubB
lda #$24
sta COLUBK
rts
org $B200
rorg $F200
nop
nop
nop
jsr SubB
lda $0800
org $BFFC
rorg $FFFC
.word StartB
.byte "0B"
seg bankC
org $C000
rorg $F000
StartC
lda $0800
SubC
lda #$26
sta COLUBK
rts
org $C200
rorg $F200
nop
nop
nop
jsr SubC
lda $0800
org $CFFC
rorg $FFFC
.word StartC
.byte "0C"
seg bankD
org $D000
rorg $F000
StartD
lda $0800
SubD
lda #$28
sta COLUBK
rts
org $D200
rorg $F200
nop
nop
nop
jsr SubD
lda $0800
org $DFFC
rorg $FFFC
.word StartD
.byte "0D"
seg bankE
org $E000
rorg $F000
StartE
lda $0800
SubE
lda #$2A
sta COLUBK
rts
org $E200
rorg $F200
nop
nop
nop
jsr SubE
lda $0800
org $EFFC
rorg $FFFC
.word StartE
.byte "0E"
seg bankF
org $F000
rorg $F000
StartF
lda $0800
SubF
lda #$2C
sta COLUBK
rts
org $F200
rorg $F200
nop
nop
nop
jsr SubF
lda $0800
org $FFFC
rorg $FFFC
.word StartF
.byte "0F"
seg bank10
org $10000
rorg $F000
Start10
lda $0800
Sub10
lda #$2E
sta COLUBK
rts
org $10200
rorg $F200
nop
nop
nop
jsr Sub10
lda $0800
org $10FFC
rorg $FFFC
.word Start10
.byte "10"
seg bank11
org $11000
rorg $F000
Start11
lda $0800
Sub11
lda #$30
sta COLUBK
rts
org $11200
rorg $F200
nop
nop
nop
jsr Sub11
lda $0800
org $11FFC
rorg $FFFC
.word Start11
.byte "11"
seg bank12
org $12000
rorg $F000
Start12
lda $0800
Sub12
lda #$32
sta COLUBK
rts
org $12200
rorg $F200
nop
nop
nop
jsr Sub12
lda $0800
org $12FFC
rorg $FFFC
.word Start12
.byte "12"
seg bank13
org $13000
rorg $F000
Start13
lda $0800
Sub13
lda #$34
sta COLUBK
rts
org $13200
rorg $F200
nop
nop
nop
jsr Sub13
lda $0800
org $13FFC
rorg $FFFC
.word Start13
.byte "13"
seg bank14
org $14000
rorg $F000
Start14
lda $0800
Sub14
lda #$36
sta COLUBK
rts
org $14200
rorg $F200
nop
nop
nop
jsr Sub14
lda $0800
org $14FFC
rorg $FFFC
.word Start14
.byte "14"
seg bank15
org $15000
rorg $F000
Start15
lda $0800
Sub15 lda #$38
sta COLUBK
rts
org $15200
rorg $F200
nop
nop
nop
jsr Sub15
lda $0800
org $15FFC
rorg $FFFC
.word Start15
.byte "15"
seg bank16
org $16000
rorg $F000
Start16
lda $0800
Sub16
lda #$3A
sta COLUBK
rts
org $16200
rorg $F200
nop
nop
nop
jsr Sub16
lda $0800
org $16FFC
rorg $FFFC
.word Start16
.byte "16"
seg bank17
org $17000
rorg $F000
Start17
lda $0800
Sub17
lda #$3C
sta COLUBK
rts
org $17200
rorg $F200
nop
nop
nop
jsr Sub17
lda $0800
org $17FFC
rorg $FFFC
.word Start17
.byte "17"
seg bank18
org $18000
rorg $F000
Start18
lda $0800
Sub18
lda #$3E
sta COLUBK
rts
org $18200
rorg $F200
nop
nop
nop
jsr Sub18
lda $0800
org $18FFC
rorg $FFFC
.word Start18
.byte "18"
seg bank19
org $19000
rorg $F000
Start19
lda $0800
Sub19
lda #$40
sta COLUBK
rts
org $19200
rorg $F200
nop
nop
nop
jsr Sub19
lda $0800
org $19FFC
rorg $FFFC
.word Start19
.byte "19"
seg bank1A
org $1A000
rorg $F000
Start1A
lda $0800
Sub1A
lda #$42
sta COLUBK
rts
org $1A200
rorg $F200
nop
nop
nop
jsr Sub1A
lda $0800
org $1AFFC
rorg $FFFC
.word Start1A
.byte "1A"
seg bank1B
org $1B000
rorg $F000
Start1B
lda $0800
Sub1B
lda #$44
sta COLUBK
rts
org $1B200
rorg $F200
nop
nop
nop
jsr Sub1B
lda $0800
org $1BFFC
rorg $FFFC
.word Start1B
.byte "1B"
seg bank1C
org $1C000
rorg $F000
Start1C
lda $0800
Sub1C
lda #$46
sta COLUBK
rts
org $1C200
rorg $F200
nop
nop
nop
jsr Sub1C
lda $0800
org $1CFFC
rorg $FFFC
.word Start1C
.byte "1C"
seg bank1D
org $1D000
rorg $F000
Start1D
lda $0800
Sub1D
lda #$48
sta COLUBK
rts
org $1D200
rorg $F200
nop
nop
nop
jsr Sub1D
lda $0800
org $1DFFC
rorg $FFFC
.word Start1D
.byte "1D"
seg bank1E
org $1E000
rorg $F000
Start1E
lda $0800
Sub1E
lda #$4A
sta COLUBK
rts
org $1E200
rorg $F200
nop
nop
nop
jsr Sub1E
lda $0800
org $1EFFC
rorg $FFFC
.word Start1E
.byte "1E"
seg bank1F
org $1F000
rorg $F000
Start1F
lda $0800
Sub1F
lda #$4C
sta COLUBK
rts
org $1F200
rorg $F200
nop
nop
nop
jsr Sub1F
lda $0800
org $1FFFC
rorg $FFFC
.word Start1F
.byte "1F"