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

1659 lines
13 KiB
NASM

;;A bankswitching demo for the 256K SuperBanking scheme. 64 4K banks
;;By: Rick Skrbina 5/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
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
ldx #1
ldy #3
Picture_Loop
sta WSYNC
dey
bne Picture_Loop
ldy #3
jsr Swch1
inx
cpx #$40
bne Picture_Loop
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"
seg bank20
org $20000
rorg $F000
Start20
lda $0800
Sub20
lda #$4E
sta COLUBK
rts
org $20200
rorg $F200
nop
nop
nop
jsr Sub20
lda $0800
org $20FFC
rorg $FFFC
.word Start20
.byte "20"
seg bank21
org $21000
rorg $F000
Start21
lda $0800
Sub21
lda #$50
sta COLUBK
rts
org $21200
rorg $F200
nop
nop
nop
jsr Sub21
lda $0800
org $21FFC
rorg $FFFC
.word Start21
.byte "21"
seg bank22
org $22000
rorg $F000
Start22
lda $0800
Sub22
lda #$52
sta COLUBK
rts
org $22200
rorg $F200
nop
nop
nop
jsr Sub22
lda $0800
org $22FFC
rorg $FFFC
.word Start22
.byte "22"
seg bank23
org $23000
rorg $F000
Start23
lda $0800
Sub23
lda #$54
sta COLUBK
rts
org $23200
rorg $F200
nop
nop
nop
jsr Sub23
lda $0800
org $23FFC
rorg $FFFC
.word Start23
.byte "23"
seg bank24
org $24000
rorg $F000
Start24
lda $0800
Sub24
lda #$56
sta COLUBK
rts
org $24200
rorg $F200
nop
nop
nop
jsr Sub24
lda $0800
org $24FFC
rorg $FFFC
.word Start24
.byte "24"
seg bank25
org $25000
rorg $F000
Start25
lda $0800
Sub25
lda #$58
sta COLUBK
rts
org $25200
rorg $F200
nop
nop
nop
jsr Sub25
lda $0800
org $25FFC
rorg $FFFC
.word Start25
.byte "25"
seg bank26
org $26000
rorg $F000
Start26
lda $0800
Sub26
lda #$5A
sta COLUBK
rts
org $26200
rorg $F200
nop
nop
nop
jsr Sub26
lda $0800
org $26FFC
rorg $FFFC
.word Start26
.byte "26"
seg bank27
org $27000
rorg $F000
Start27
lda $0800
Sub27
lda #$5C
sta COLUBK
rts
org $27200
rorg $F200
nop
nop
nop
jsr Sub27
lda $0800
org $27FFC
rorg $FFFC
.word Start27
.byte "27"
seg bank28
org $28000
rorg $F000
Start28
lda $0800
Sub28
lda #$5E
sta COLUBK
rts
org $28200
rorg $F200
nop
nop
nop
jsr Sub28
lda $0800
org $28FFC
rorg $FFFC
.word Start28
.byte "28"
seg bank29
org $29000
rorg $F000
Start29
lda $0800
Sub29
lda #$60
sta COLUBK
rts
org $29200
rorg $F200
nop
nop
nop
jsr Sub29
lda $0800
org $29FFC
rorg $FFFC
.word Start29
.byte "29"
seg bank2A
org $2A000
rorg $F000
Start2A
lda $0800
Sub2A
lda #$62
sta COLUBK
rts
org $2A200
rorg $F200
nop
nop
nop
jsr Sub2A
lda $0800
org $2AFFC
rorg $FFFC
.word Start2A
.byte "2A"
seg bank2B
org $2B000
rorg $F000
Start2B
lda $0800
Sub2B
lda #$64
sta COLUBK
rts
org $2B200
rorg $F200
nop
nop
nop
jsr Sub2B
lda $0800
org $2BFFC
rorg $FFFC
.word Start2B
.byte "2B"
seg bank2C
org $2C000
rorg $F000
Start2C
lda $0800
Sub2C
lda #$66
sta COLUBK
rts
org $2C200
rorg $F200
nop
nop
nop
jsr Sub2C
lda $0800
org $2CFFC
rorg $FFFC
.word Start2C
.byte "2C"
seg bank2D
org $2D000
rorg $F000
Start2D
lda $0800
Sub2D
lda #$68
sta COLUBK
rts
org $2D200
rorg $F200
nop
nop
nop
jsr Sub2D
lda $0800
org $2DFFC
rorg $FFFC
.word Start2D
.byte "2D"
seg bank2E
org $2E000
rorg $F000
Start2E
lda $0800
Sub2E
lda #$6A
sta COLUBK
rts
org $2E200
rorg $F200
nop
nop
nop
jsr Sub2E
lda $0800
org $2EFFC
rorg $FFFC
.word Start2E
.byte "2E"
seg bank2F
org $2F000
rorg $F000
Start2F
lda $0800
Sub2F
lda #$6C
sta COLUBK
rts
org $2F200
rorg $F200
nop
nop
nop
jsr Sub2F
lda $0800
org $2FFFC
rorg $FFFC
.word Start2F
.byte "2F"
seg bank30
org $30000
rorg $F000
Start30
lda $0800
Sub30
lda #$6E
sta COLUBK
rts
org $30200
rorg $F200
nop
nop
nop
jsr Sub30
lda $0800
org $30FFC
rorg $FFFC
.word Start30
.byte "30"
seg bank31
org $31000
rorg $F000
Start31
lda $0800
Sub31
lda #$70
sta COLUBK
rts
org $31200
rorg $F200
nop
nop
nop
jsr Sub31
lda $0800
org $31FFC
rorg $FFFC
.word Start31
.byte "31"
seg bank32
org $32000
rorg $F000
Start32
lda $0800
Sub32
lda #$72
sta COLUBK
rts
org $32200
rorg $F200
nop
nop
nop
jsr Sub32
lda $0800
org $32FFC
rorg $FFFC
.word Start32
.byte "32"
seg bank33
org $33000
rorg $F000
Start33
lda $0800
Sub33
lda #$74
sta COLUBK
rts
org $33200
rorg $F200
nop
nop
nop
jsr Sub33
lda $0800
org $33FFC
rorg $FFFC
.word Start33
.byte "33"
seg bank34
org $34000
rorg $F000
Start34
lda $0800
Sub34
lda #$76
sta COLUBK
rts
org $34200
rorg $F200
nop
nop
nop
jsr Sub34
lda $0800
org $34FFC
rorg $FFFC
.word Start34
.byte "34"
seg bank35
org $35000
rorg $F000
Start35
lda $0800
Sub35
lda #$78
sta COLUBK
rts
org $35200
rorg $F200
nop
nop
nop
jsr Sub35
lda $0800
org $35FFC
rorg $FFFC
.word Start35
.byte "35"
seg bank36
org $36000
rorg $F000
Start36
lda $0800
Sub36
lda #$7A
sta COLUBK
rts
org $36200
rorg $F200
nop
nop
nop
jsr Sub36
lda $0800
org $36FFC
rorg $FFFC
.word Start36
.byte "36"
seg bank37
org $37000
rorg $F000
Start37
lda $0800
Sub37
lda #$7C
sta COLUBK
rts
org $37200
rorg $F200
nop
nop
nop
jsr Sub37
lda $0800
org $37FFC
rorg $FFFC
.word Start37
.byte "37"
seg bank38
org $38000
rorg $F000
Start38
lda $0800
Sub38
lda #$7E
sta COLUBK
rts
org $38200
rorg $F200
nop
nop
nop
jsr Sub38
lda $0800
org $38FFC
rorg $FFFC
.word Start38
.byte "38"
seg bank39
org $39000
rorg $F000
Start39
lda $0800
Sub39
lda #$80
sta COLUBK
rts
org $39200
rorg $F200
nop
nop
nop
jsr Sub39
lda $0800
org $39FFC
rorg $FFFC
.word Start39
.byte "39"
seg bank3A
org $3A000
rorg $F000
Start3A
lda $0800
Sub3A
lda #$82
sta COLUBK
rts
org $3A200
rorg $F200
nop
nop
nop
jsr Sub3A
lda $0800
org $3AFFC
rorg $FFFC
.word Start3A
.byte "3A"
seg bank3B
org $3B000
rorg $F000
Start3B
lda $0800
Sub3B
lda #$84
sta COLUBK
rts
org $3B200
rorg $F200
nop
nop
nop
jsr Sub3B
lda $0800
org $3BFFC
rorg $FFFC
.word Start3B
.byte "3B"
seg bank3C
org $3C000
rorg $F000
Start3C
lda $0800
Sub3C
lda #$86
sta COLUBK
rts
org $3C200
rorg $F200
nop
nop
nop
jsr Sub3C
lda $0800
org $3CFFC
rorg $FFFC
.word Start3C
.byte "3C"
seg bank3D
org $3D000
rorg $F000
Start3D
lda $0800
Sub3D
lda #$88
sta COLUBK
rts
org $3D200
rorg $F200
nop
nop
nop
jsr Sub3D
lda $0800
org $3DFFC
rorg $FFFC
.word Start3D
.byte "3D"
seg bank3E
org $3E000
rorg $F000
Start3E
lda $0800
Sub3E
lda #$8A
sta COLUBK
rts
org $3E200
rorg $F200
nop
nop
nop
jsr Sub3E
lda $0800
org $3EFFC
rorg $FFFC
.word Start3E
.byte "3E"
seg bank3F
org $3F000
rorg $F000
Start3F
lda $0800
Sub3F
lda #$8C
sta COLUBK
rts
org $3F200
rorg $F200
nop
nop
nop
jsr Sub3F
lda $0800
org $3FFFC
rorg $FFFC
.word Start3F
.byte "3F"