Skip to content

Commit

Permalink
Issue #2352: Banked program support
Browse files Browse the repository at this point in the history
  • Loading branch information
suborb committed Jul 17, 2023
1 parent edeca7c commit 25e2126
Show file tree
Hide file tree
Showing 4 changed files with 495 additions and 3 deletions.
1 change: 1 addition & 0 deletions lib/config/aquarius.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ CLIB aqplus -laquarius_clib -D__AQUARIUSPLUS__ -pragma-define:CLIB_AQUARIUS_PLU

SUBTYPE none -startup=1
SUBTYPE default -Cz+aquarius -startup=1
SUBTYPE banked -Cz+noop -startup=3 -D__AQUARIUSPLUS__ -pragma-define:CLIB_AQUARIUS_PLUS=1
SUBTYPE rom -Cz+rom -Cz--romsize=8192 -startup=2 -Cz--rombase=0xe000 -D__ROM__

INCLUDE alias.inc
10 changes: 7 additions & 3 deletions lib/target/aquarius/classic/aquarius_crt0.asm
Original file line number Diff line number Diff line change
Expand Up @@ -48,11 +48,11 @@ IFNDEF CLIB_AQUARIUS_PLUS
ENDIF


IF startup = 1
IF startup = 2
INCLUDE "target/aquarius/classic/rom.asm"
ELSE
INCLUDE "target/aquarius/def/maths_mbf.def"
INCLUDE "target/aquarius/classic/ram.asm"
ELSE
INCLUDE "target/aquarius/classic/rom.asm"
ENDIF


Expand All @@ -68,4 +68,8 @@ l_dcal:
ld hl,$3028
ld (base_graphics),hl

IF startup = 3
INCLUDE "target/aquarius/classic/banks.asm"
ENDIF

336 changes: 336 additions & 0 deletions lib/target/aquarius/classic/banks.asm
Original file line number Diff line number Diff line change
@@ -0,0 +1,336 @@
IFNDEF CRT_ORG_BANK_01
defc CRT_ORG_BANK_01 = $c000
ENDIF

IFNDEF CRT_ORG_BANK_02
defc CRT_ORG_BANK_02 = $c000
ENDIF

IFNDEF CRT_ORG_BANK_03
defc CRT_ORG_BANK_03 = $c000
ENDIF

IFNDEF CRT_ORG_BANK_04
defc CRT_ORG_BANK_04 = $c000
ENDIF

IFNDEF CRT_ORG_BANK_05
defc CRT_ORG_BANK_05 = $c000
ENDIF

IFNDEF CRT_ORG_BANK_06
defc CRT_ORG_BANK_06 = $c000
ENDIF

IFNDEF CRT_ORG_BANK_07
defc CRT_ORG_BANK_07 = $c000
ENDIF

IFNDEF CRT_ORG_BANK_08
defc CRT_ORG_BANK_08 = $c000
ENDIF

IFNDEF CRT_ORG_BANK_09
defc CRT_ORG_BANK_09 = $c000
ENDIF

IFNDEF CRT_ORG_BANK_0a
defc CRT_ORG_BANK_0a = $c000
ENDIF

IFNDEF CRT_ORG_BANK_0b
defc CRT_ORG_BANK_0b = $c000
ENDIF

IFNDEF CRT_ORG_BANK_0c
defc CRT_ORG_BANK_0c = $c000
ENDIF

IFNDEF CRT_ORG_BANK_0d
defc CRT_ORG_BANK_0d = $c000
ENDIF

IFNDEF CRT_ORG_BANK_0e
defc CRT_ORG_BANK_0e = $c000
ENDIF

IFNDEF CRT_ORG_BANK_0f
defc CRT_ORG_BANK_0f = $c000
ENDIF

IFNDEF CRT_ORG_BANK_10
defc CRT_ORG_BANK_10 = $c000
ENDIF

IFNDEF CRT_ORG_BANK_11
defc CRT_ORG_BANK_11 = $c000
ENDIF

IFNDEF CRT_ORG_BANK_12
defc CRT_ORG_BANK_12 = $c000
ENDIF

IFNDEF CRT_ORG_BANK_13
defc CRT_ORG_BANK_13 = $c000
ENDIF

IFNDEF CRT_ORG_BANK_14
defc CRT_ORG_BANK_14 = $c000
ENDIF

IFNDEF CRT_ORG_BANK_15
defc CRT_ORG_BANK_15 = $c000
ENDIF

IFNDEF CRT_ORG_BANK_16
defc CRT_ORG_BANK_16 = $c000
ENDIF

IFNDEF CRT_ORG_BANK_17
defc CRT_ORG_BANK_17 = $c000
ENDIF

IFNDEF CRT_ORG_BANK_18
defc CRT_ORG_BANK_18 = $c000
ENDIF

IFNDEF CRT_ORG_BANK_19
defc CRT_ORG_BANK_19 = $c000
ENDIF

IFNDEF CRT_ORG_BANK_1a
defc CRT_ORG_BANK_1a = $c000
ENDIF

IFNDEF CRT_ORG_BANK_1b
defc CRT_ORG_BANK_1b = $c000
ENDIF

IFNDEF CRT_ORG_BANK_1c
defc CRT_ORG_BANK_1c = $c000
ENDIF

SECTION BANK_01
org $010000 + CRT_ORG_BANK_01
SECTION CODE_1
SECTION RODATA_1
SECTION DATA_1
SECTION BSS_1
SECTION BANK_01_END

SECTION BANK_02
org $020000 + CRT_ORG_BANK_02
SECTION CODE_2
SECTION RODATA_2
SECTION DATA_2
SECTION BSS_2
SECTION BANK_02_END

SECTION BANK_03
org $030000 + CRT_ORG_BANK_03
SECTION CODE_3
SECTION RODATA_3
SECTION DATA_3
SECTION BSS_3
SECTION BANK_03_END

SECTION BANK_04
org $040000 + CRT_ORG_BANK_04
SECTION CODE_4
SECTION RODATA_4
SECTION DATA_4
SECTION BSS_4
SECTION BANK_04_END

SECTION BANK_05
org $050000 + CRT_ORG_BANK_05
SECTION CODE_5
SECTION RODATA_5
SECTION DATA_5
SECTION BSS_5
SECTION BANK_05_END

SECTION BANK_06
org $060000 + CRT_ORG_BANK_06
SECTION CODE_6
SECTION RODATA_6
SECTION DATA_6
SECTION BSS_6
SECTION BANK_06_END

SECTION BANK_07
org $070000 + CRT_ORG_BANK_07
SECTION CODE_7
SECTION RODATA_7
SECTION DATA_7
SECTION BSS_7
SECTION BANK_07_END

SECTION BANK_08
org $080000 + CRT_ORG_BANK_08
SECTION CODE_8
SECTION RODATA_8
SECTION DATA_8
SECTION BSS_8
SECTION BANK_08_END

SECTION BANK_09
org $090000 + CRT_ORG_BANK_09
SECTION CODE_9
SECTION RODATA_9
SECTION DATA_9
SECTION BSS_9
SECTION BANK_09_END

SECTION BANK_0a
org $0a0000 + CRT_ORG_BANK_0a
SECTION CODE_a
SECTION RODATA_a
SECTION DATA_a
SECTION BSS_a
SECTION BANK_0a_END

SECTION BANK_0b
org $0b0000 + CRT_ORG_BANK_0b
SECTION CODE_b
SECTION RODATA_b
SECTION DATA_b
SECTION BSS_b
SECTION BANK_0b_END

SECTION BANK_0c
org $0c0000 + CRT_ORG_BANK_0c
SECTION CODE_c
SECTION RODATA_c
SECTION DATA_c
SECTION BSS_c
SECTION BANK_0c_END

SECTION BANK_0d
org $0d0000 + CRT_ORG_BANK_0d
SECTION CODE_d
SECTION RODATA_d
SECTION DATA_d
SECTION BSS_d
SECTION BANK_0d_END

SECTION BANK_0e
org $0e0000 + CRT_ORG_BANK_0e
SECTION CODE_e
SECTION RODATA_e
SECTION DATA_e
SECTION BSS_e
SECTION BANK_0e_END

SECTION BANK_0f
org $0f0000 + CRT_ORG_BANK_0f
SECTION CODE_f
SECTION RODATA_f
SECTION DATA_f
SECTION BSS_f
SECTION BANK_0f_END

SECTION BANK_10
org $100000 + CRT_ORG_BANK_10
SECTION CODE_10
SECTION RODATA_10
SECTION DATA_10
SECTION BSS_10
SECTION BANK_10_END

SECTION BANK_11
org $110000 + CRT_ORG_BANK_11
SECTION CODE_11
SECTION RODATA_11
SECTION DATA_11
SECTION BSS_11
SECTION BANK_11_END

SECTION BANK_12
org $120000 + CRT_ORG_BANK_12
SECTION CODE_12
SECTION RODATA_12
SECTION DATA_12
SECTION BSS_12
SECTION BANK_12_END

SECTION BANK_13
org $130000 + CRT_ORG_BANK_13
SECTION CODE_13
SECTION RODATA_13
SECTION DATA_13
SECTION BSS_13
SECTION BANK_13_END

SECTION BANK_14
org $140000 + CRT_ORG_BANK_14
SECTION CODE_14
SECTION RODATA_14
SECTION DATA_14
SECTION BSS_14
SECTION BANK_14_END

SECTION BANK_15
org $150000 + CRT_ORG_BANK_15
SECTION CODE_15
SECTION RODATA_15
SECTION DATA_15
SECTION BSS_15
SECTION BANK_15_END

SECTION BANK_16
org $160000 + CRT_ORG_BANK_16
SECTION CODE_16
SECTION RODATA_16
SECTION DATA_16
SECTION BSS_16
SECTION BANK_16_END

SECTION BANK_17
org $170000 + CRT_ORG_BANK_17
SECTION CODE_17
SECTION RODATA_17
SECTION DATA_17
SECTION BSS_17
SECTION BANK_17_END

SECTION BANK_18
org $180000 + CRT_ORG_BANK_18
SECTION CODE_18
SECTION RODATA_18
SECTION DATA_18
SECTION BSS_18
SECTION BANK_18_END

SECTION BANK_19
org $190000 + CRT_ORG_BANK_19
SECTION CODE_19
SECTION RODATA_19
SECTION DATA_19
SECTION BSS_19
SECTION BANK_19_END

SECTION BANK_1a
org $1a0000 + CRT_ORG_BANK_1a
SECTION CODE_1a
SECTION RODATA_1a
SECTION DATA_1a
SECTION BSS_1a
SECTION BANK_1a_END

SECTION BANK_1b
org $1b0000 + CRT_ORG_BANK_1b
SECTION CODE_1b
SECTION RODATA_1b
SECTION DATA_1b
SECTION BSS_1b
SECTION BANK_1b_END

SECTION BANK_1c
org $1c0000 + CRT_ORG_BANK_1c
SECTION CODE_1c
SECTION RODATA_1c
SECTION DATA_1c
SECTION BSS_1c
SECTION BANK_1c_END

Loading

0 comments on commit 25e2126

Please sign in to comment.