Merge pull request #58 from FeralChild64/master
Improvements & bugfixes
This commit is contained in:
181 files changed
+3291
-1105
No files matched your search
@@ -31,6 +31,10 @@ Since Open ROMs is highly modular, it should be possible to add other platforms
|
||||
|
||||
Select if the ROM is going to be used exclusively on the specified motherboard. It prevents from enabling options not having sense, skips initialization of C128-only registers, and enables motherboard-specific features.
|
||||
|
||||
### `ROM_CRT`
|
||||
|
||||
Has to be set for builds utilizing cartridge image as a ROM extension.
|
||||
|
||||
## Brand
|
||||
|
||||
Branding is only allowed for C64 platform, if no motherboard is specified.
|
||||
@@ -139,7 +143,7 @@ Needs about 430 bytes in KERNAL segment. If unsure - enable.
|
||||
|
||||
### `IEC_JIFFYDOS_BLANK`
|
||||
|
||||
Causes screen blanking during JiffyDOS file loading to increase performance.
|
||||
Causes screen blanking during JiffyDOS file loading to increase performance. On Ultimate 64 motherboard, if possible, screen blanking is substituted by disabling badlines.
|
||||
|
||||
## Tape deck
|
||||
|
||||
|
||||
@@ -15,10 +15,11 @@ SRCDIR_BASIC = $(SRCDIR_COMMON) \
|
||||
src/basic/assets \
|
||||
src/basic/basic_commands \
|
||||
src/basic/basic_commands_01 \
|
||||
src/basic/basic_commands_02 \
|
||||
src/basic/basic_commands_03_m65 \
|
||||
src/basic/basic_commands_04 \
|
||||
src/basic/basic_operators \
|
||||
src/basic/basic_functions \
|
||||
src/basic/basic_functions_06 \
|
||||
src/basic/board_crt \
|
||||
src/basic/board_m65 \
|
||||
src/basic/board_x16 \
|
||||
src/basic/engine_editor \
|
||||
@@ -35,12 +36,16 @@ SRCDIR_BASIC = $(SRCDIR_COMMON) \
|
||||
|
||||
SRCDIR_DOS_M65 = $(SRCDIR_COMMON) \
|
||||
src/dos_m65 \
|
||||
# src/dos_m65/cmdrdos \
|
||||
src/dos_m65/sdcard
|
||||
|
||||
SRCDIR_KERNAL = $(SRCDIR_COMMON) \
|
||||
src/kernal \
|
||||
src/kernal/,stubs \
|
||||
src/kernal/assets \
|
||||
src/kernal/board_crt \
|
||||
src/kernal/board_m65 \
|
||||
src/kernal/board_u64 \
|
||||
src/kernal/board_x16 \
|
||||
src/kernal/extapi_m65 \
|
||||
src/kernal/iec \
|
||||
@@ -59,18 +64,24 @@ SRCDIR_KERNAL = $(SRCDIR_COMMON) \
|
||||
src/kernal/tape \
|
||||
src/kernal/time
|
||||
|
||||
SRC_BASIC = $(foreach dir,$(SRCDIR_BASIC),$(wildcard $(dir)/*.s))
|
||||
SRC_DOS_M65 = $(foreach dir,$(SRCDIR_DOS_M65),$(wildcard $(dir)/*.s))
|
||||
SRC_KERNAL = $(foreach dir,$(SRCDIR_KERNAL),$(wildcard $(dir)/*.s))
|
||||
SRC_TOOLS = $(wildcard tools/*.c,tools/*.cc)
|
||||
SRC_BASIC = $(foreach dir,$(SRCDIR_BASIC),$(wildcard $(dir)/*.s))
|
||||
SRC_DOS_M65 = $(foreach dir,$(SRCDIR_DOS_M65),$(wildcard $(dir)/*.s))
|
||||
SRC_KERNAL = $(foreach dir,$(SRCDIR_KERNAL),$(wildcard $(dir)/*.s))
|
||||
SRC_TOOLS = $(wildcard tools/*.c,tools/*.cc)
|
||||
|
||||
DIR_ACME = assembler/acme/src
|
||||
HDR_ACME = $(filter-out $(wildcard $(DIR_ACME)/_*.h),$(wildcard $(DIR_ACME)/*.h))
|
||||
SRC_ACME = $(DIR_ACME)/acme.c $(DIR_ACME)/platform.c $(DIR_ACME)/alu.c $(DIR_ACME)/typesystem.c \
|
||||
$(DIR_ACME)/cliargs.c $(DIR_ACME)/global.c $(DIR_ACME)/output.c $(DIR_ACME)/flow.c \
|
||||
$(DIR_ACME)/macro.c $(DIR_ACME)/cpu.c $(DIR_ACME)/encoding.c $(DIR_ACME)/pseudoopcodes.c \
|
||||
$(DIR_ACME)/dynabuf.c $(DIR_ACME)/mnemo.c $(DIR_ACME)/input.c $(DIR_ACME)/section.c \
|
||||
$(DIR_ACME)/symbol.c $(DIR_ACME)/tree.c
|
||||
DIR_ACME = assembler/acme/src
|
||||
HDR_ACME = $(filter-out $(wildcard $(DIR_ACME)/_*.h),$(wildcard $(DIR_ACME)/*.h))
|
||||
SRC_ACME = $(DIR_ACME)/acme.c $(DIR_ACME)/platform.c $(DIR_ACME)/alu.c $(DIR_ACME)/typesystem.c \
|
||||
$(DIR_ACME)/cliargs.c $(DIR_ACME)/global.c $(DIR_ACME)/output.c $(DIR_ACME)/flow.c \
|
||||
$(DIR_ACME)/macro.c $(DIR_ACME)/cpu.c $(DIR_ACME)/encoding.c $(DIR_ACME)/pseudoopcodes.c \
|
||||
$(DIR_ACME)/dynabuf.c $(DIR_ACME)/mnemo.c $(DIR_ACME)/input.c $(DIR_ACME)/section.c \
|
||||
$(DIR_ACME)/symbol.c $(DIR_ACME)/tree.c
|
||||
|
||||
CRT_BIN_LIST = assets/cartridge/header-cart.bin \
|
||||
assets/cartridge/header-seg0.bin \
|
||||
assets/cartridge/header-seg1.bin \
|
||||
assets/cartridge/header-seg2.bin \
|
||||
assets/cartridge/header-seg3.bin
|
||||
|
||||
# Generated files
|
||||
|
||||
@@ -79,30 +90,36 @@ GEN_KERNAL =
|
||||
|
||||
# List of build directories
|
||||
|
||||
DIR_CUS = build/target_custom
|
||||
DIR_GEN = build/target_generic
|
||||
DIR_TST = build/target_testing
|
||||
DIR_M65 = build/target_mega65
|
||||
DIR_U64 = build/target_ultimate64
|
||||
DIR_X16 = build/target_cx16
|
||||
DIR_CUS = build/target_custom
|
||||
DIR_GEN = build/target_generic
|
||||
DIR_GENCRT = build/target_generic_crt
|
||||
DIR_TST = build/target_testing
|
||||
DIR_M65 = build/target_mega65
|
||||
DIR_U64 = build/target_ultimate64
|
||||
DIR_U64CRT = build/target_ultimate64_crt
|
||||
DIR_X16 = build/target_cx16
|
||||
|
||||
# List of config files
|
||||
|
||||
CFG_CUS = src/,,config_custom.s
|
||||
CFG_GEN = src/,,config_generic.s
|
||||
CFG_TST = src/,,config_testing.s
|
||||
CFG_M65 = src/,,config_mega65.s
|
||||
CFG_U64 = src/,,config_ultimate64.s
|
||||
CFG_X16 = src/,,config_cx16.s
|
||||
CFG_CUS = src/,,config_custom.s
|
||||
CFG_GEN = src/,,config_generic.s
|
||||
CFG_GENCRT = src/,,config_generic_crt.s
|
||||
CFG_TST = src/,,config_testing.s
|
||||
CFG_M65 = src/,,config_mega65.s
|
||||
CFG_U64 = src/,,config_ultimate64.s
|
||||
CFG_X16 = src/,,config_cx16.s
|
||||
CFG_U64CRT = src/,,config_ultimate64_crt.s
|
||||
|
||||
# List of files with generated strings
|
||||
|
||||
GEN_STR_CUS = $(DIR_CUS)/,generated/,packed_strings.s
|
||||
GEN_STR_GEN = $(DIR_GEN)/,generated/,packed_strings.s
|
||||
GEN_STR_TST = $(DIR_TST)/,generated/,packed_strings.s
|
||||
GEN_STR_M65 = $(DIR_M65)/,generated/,packed_strings.s
|
||||
GEN_STR_U64 = $(DIR_U64)/,generated/,packed_strings.s
|
||||
GEN_STR_X16 = $(DIR_X16)/,generated/,packed_strings.s
|
||||
GEN_STR_CUS = $(DIR_CUS)/,generated/,packed_strings.s
|
||||
GEN_STR_GEN = $(DIR_GEN)/,generated/,packed_strings.s
|
||||
GEN_STR_GENCRT = $(DIR_GENCRT)/,generated/,packed_strings.s
|
||||
GEN_STR_TST = $(DIR_TST)/,generated/,packed_strings.s
|
||||
GEN_STR_M65 = $(DIR_M65)/,generated/,packed_strings.s
|
||||
GEN_STR_U64 = $(DIR_U64)/,generated/,packed_strings.s
|
||||
GEN_STR_U64CRT = $(DIR_U64CRT)/,generated/,packed_strings.s
|
||||
GEN_STR_X16 = $(DIR_X16)/,generated/,packed_strings.s
|
||||
|
||||
# Dependencies - helper variables
|
||||
|
||||
@@ -132,46 +149,71 @@ TOOLS_LIST = $(TOOL_GENERATE_CONSTANTS) \
|
||||
|
||||
# List of targets
|
||||
|
||||
TARGET_CUS_B = build/basic_custom.rom
|
||||
TARGET_GEN_B = build/basic_generic.rom
|
||||
TARGET_TST_B = build/basic_testing.rom
|
||||
TARGET_U64_B = build/basic_ultimate64.rom
|
||||
TARGET_CHR_ORF = build/chargen_openroms.rom
|
||||
TARGET_CHR_PXL = build/chargen_pxlfont.rom
|
||||
|
||||
TARGET_CUS_K = build/kernal_custom.rom
|
||||
TARGET_GEN_K = build/kernal_generic.rom
|
||||
TARGET_TST_K = build/kernal_testing.rom
|
||||
TARGET_U64_K = build/kernal_ultimate64.rom
|
||||
TARGET_CUS_B = build/basic_custom.rom
|
||||
TARGET_GEN_B = build/basic_generic.rom
|
||||
TARGET_GENCRT_B = build/basic_generic_crt.rom
|
||||
TARGET_TST_B = build/basic_testing.rom
|
||||
TARGET_U64_B = build/basic_ultimate64.rom
|
||||
TARGET_U64CRT_B = build/basic_ultimate64_crt.rom
|
||||
|
||||
TARGET_M65_x = build/mega65.rom
|
||||
TARGET_M65_x_PXL = build/mega65_pxlfont.rom
|
||||
TARGET_X16_x = build/cx16-dummy.rom
|
||||
TARGET_CUS_K = build/kernal_custom.rom
|
||||
TARGET_GEN_K = build/kernal_generic.rom
|
||||
TARGET_GENCRT_K = build/kernal_generic_crt.rom
|
||||
TARGET_TST_K = build/kernal_testing.rom
|
||||
TARGET_U64_K = build/kernal_ultimate64.rom
|
||||
TARGET_U64CRT_K = build/kernal_ultimate64_crt.rom
|
||||
|
||||
TARGET_LIST_CUS = $(TARGET_CUS_B) $(TARGET_CUS_K)
|
||||
TARGET_LIST_GEN = $(TARGET_GEN_B) $(TARGET_GEN_K)
|
||||
TARGET_LIST_TST = $(TARGET_TST_B) $(TARGET_TST_K)
|
||||
TARGET_LIST_U64 = $(TARGET_U64_B) $(TARGET_U64_K)
|
||||
TARGET_GENCRT_X = build/extrom_generic_crt.crt
|
||||
TARGET_U64CRT_X = build/extrom_ultimate64_crt.crt
|
||||
|
||||
TARGET_LIST = build/chargen_openroms.rom \
|
||||
$(TARGET_LIST_CUS) \
|
||||
$(TARGET_LIST_GEN) \
|
||||
$(TARGET_LIST_TST) \
|
||||
$(TARGET_M65_x) \
|
||||
$(TARGET_M65_x_PXL) \
|
||||
$(TARGET_LIST_U64) \
|
||||
$(TARGET_X16_x)
|
||||
TARGET_M65_x_ORF = build/mega65.rom
|
||||
TARGET_M65_x_PXL = build/mega65_pxlfont.rom
|
||||
TARGET_X16_x = build/cx16-dummy.rom
|
||||
|
||||
SEG_LIST_M65 = $(DIR_M65)/basic.seg_0 \
|
||||
$(DIR_M65)/basic.seg_1 \
|
||||
$(DIR_M65)/dos.seg_1 \
|
||||
$(DIR_M65)/kernal.seg_0 \
|
||||
$(DIR_M65)/kernal.seg_1
|
||||
TARGET_LIST_CUS = $(TARGET_CUS_B) $(TARGET_CUS_K)
|
||||
TARGET_LIST_GEN = $(TARGET_GEN_B) $(TARGET_GEN_K)
|
||||
TARGET_LIST_GENCRT = $(TARGET_GENCRT_B) $(TARGET_GENCRT_K) $(TARGET_GENCRT_X)
|
||||
TARGET_LIST_TST = $(TARGET_TST_B) $(TARGET_TST_K)
|
||||
TARGET_LIST_U64 = $(TARGET_U64_B) $(TARGET_U64_K)
|
||||
TARGET_LIST_U64CRT = $(TARGET_U64CRT_B) $(TARGET_U64CRT_K) $(TARGET_U64CRT_X)
|
||||
|
||||
SEG_LIST_X16 = $(DIR_X16)/basic.seg_0 \
|
||||
$(DIR_X16)/basic.seg_1 \
|
||||
$(DIR_X16)/kernal.seg_0 \
|
||||
$(DIR_X16)/kernal.seg_1
|
||||
|
||||
REL_TARGET_LIST = $(TARGET_LIST_GEN) $(TARGET_M65_x) $(TARGET_M65_x_PXL) $(TARGET_LIST_U64)
|
||||
TARGET_LIST = $(TARGET_CHR_ORF) \
|
||||
$(TARGET_LIST_CUS) \
|
||||
$(TARGET_LIST_GEN) \
|
||||
$(TARGET_LIST_GENCRT) \
|
||||
$(TARGET_LIST_TST) \
|
||||
$(TARGET_M65_x_ORF) \
|
||||
$(TARGET_M65_x_PXL) \
|
||||
$(TARGET_LIST_U64) \
|
||||
$(TARGET_LIST_U64CRT) \
|
||||
$(TARGET_X16_x)
|
||||
|
||||
SEG_LIST_GENCRT = $(DIR_GENCRT)/basic.seg_1 \
|
||||
$(DIR_GENCRT)/kernal.seg_1
|
||||
|
||||
SEG_LIST_U64CRT = $(DIR_U64CRT)/basic.seg_1 \
|
||||
$(DIR_U64CRT)/kernal.seg_1
|
||||
|
||||
SEG_LIST_M65 = $(DIR_M65)/basic.seg_0 \
|
||||
$(DIR_M65)/basic.seg_1 \
|
||||
$(DIR_M65)/dos.seg_1 \
|
||||
$(DIR_M65)/kernal.seg_0 \
|
||||
$(DIR_M65)/kernal.seg_1
|
||||
|
||||
SEG_LIST_X16 = $(DIR_X16)/basic.seg_0 \
|
||||
$(DIR_X16)/basic.seg_1 \
|
||||
$(DIR_X16)/kernal.seg_0 \
|
||||
$(DIR_X16)/kernal.seg_1
|
||||
|
||||
REL_TARGET_LIST = $(TARGET_LIST_GEN) \
|
||||
$(TARGET_LIST_GENCRT) \
|
||||
$(TARGET_M65_x_ORF) \
|
||||
$(TARGET_M65_x_PXL) \
|
||||
$(TARGET_LIST_U64)
|
||||
|
||||
# Misc strings
|
||||
|
||||
@@ -199,6 +241,20 @@ updatebin:
|
||||
@$(TOOL_RELEASE) -i ./build -o ./bin $(patsubst build/%,%,$(REL_TARGET_LIST))
|
||||
@cp build/chargen_openroms.rom bin/chargen_openroms.rom
|
||||
|
||||
# Rules - external blobs
|
||||
|
||||
kernal:
|
||||
@echo
|
||||
@echo Please copy \'kernal\' file from the original ROM set to the \'open-roms\' directory
|
||||
@echo
|
||||
@exit 1
|
||||
|
||||
basic:
|
||||
@echo
|
||||
@echo Please copy \'basic\' file from the original ROM set to the \'open-roms\' directory
|
||||
@echo
|
||||
@exit 1
|
||||
|
||||
# Rules - tools
|
||||
|
||||
$(DIR_ACME) $(SRC_ACME):
|
||||
@@ -233,17 +289,17 @@ build/tools/%: tools/%.cc tools/common.h
|
||||
|
||||
# Rules - CHARGEN
|
||||
|
||||
build/chargen_openroms.rom: $(TOOL_PNGPREPARE) assets/8x8font.png
|
||||
$(TARGET_CHR_ORF): $(TOOL_PNGPREPARE) assets/8x8font.png
|
||||
@$(TOOL_PNGPREPARE) charrom assets/8x8font.png $@ 1>build/pngprepare.log
|
||||
|
||||
build/chargen_pxlfont.rom: bin/chargen_pxlfont_2.3.rom
|
||||
$(TARGET_CHR_PXL): bin/chargen_pxlfont_2.3.rom
|
||||
@cp $< $@
|
||||
|
||||
build/chargen_openroms.patched: $(TOOL_PATCH_CHARGEN) build/chargen_openroms.rom
|
||||
@$(TOOL_PATCH_CHARGEN) -i build/chargen_openroms.rom -o $@ -n 7px-OpenROMs
|
||||
build/chargen_openroms.patched: $(TOOL_PATCH_CHARGEN) $(TARGET_CHR_ORF)
|
||||
@$(TOOL_PATCH_CHARGEN) -i $(TARGET_CHR_ORF) -o $@ -n 7px-OpenROMs
|
||||
|
||||
build/chargen_pxlfont.patched: $(TOOL_PATCH_CHARGEN) build/chargen_pxlfont.rom
|
||||
@$(TOOL_PATCH_CHARGEN) -i build/chargen_pxlfont.rom -o $@ -n 6px-PXLfont
|
||||
build/chargen_pxlfont.patched: $(TOOL_PATCH_CHARGEN) $(TARGET_CHR_PXL)
|
||||
@$(TOOL_PATCH_CHARGEN) -i $(TARGET_CHR_PXL) -o $@ -n 6px-PXLfont
|
||||
|
||||
# Dependencies - BASIC, DOS, and KERNAL
|
||||
|
||||
@@ -265,6 +321,16 @@ $(DIR_TST)/OUTK_x.BIN $(DIR_TST)/KERNAL_combined.vs $(DIR_TST)/KERNAL_combined.s
|
||||
$(DIR_U64)/OUTK_x.BIN $(DIR_U64)/KERNAL_combined.vs $(DIR_U64)/KERNAL_combined.sym: \
|
||||
$(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_KERNAL) $(CFG_U64) $(GEN_STR_U64)
|
||||
|
||||
$(DIR_GENCRT)/OUTB_0.BIN $(DIR_GENCRT)/BASIC_0_combined.vs: \
|
||||
$(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_BASIC) $(CFG_GENCRT) $(CRT_STR_GENCRT) $(DIR_GENCRT)/KERNAL_0_combined.sym
|
||||
$(DIR_GENCRT)/OUTK_0.BIN $(DIR_GENCRT)/KERNAL_0_combined.vs $(DIR_GENCRT)/KERNAL_0_combined.sym: \
|
||||
$(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_KERNAL) $(CFG_GENCRT) $(GEN_STR_GENCRT)
|
||||
|
||||
$(DIR_U64CRT)/OUTB_0.BIN $(DIR_U64CRT)/BASIC_0_combined.vs: \
|
||||
$(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_BASIC) $(CFG_U64CRT) $(CRT_STR_U64CRT) $(DIR_U64CRT)/KERNAL_0_combined.sym
|
||||
$(DIR_U64CRT)/OUTK_0.BIN $(DIR_U64CRT)/KERNAL_0_combined.vs $(DIR_U64CRT)/KERNAL_0_combined.sym: \
|
||||
$(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_KERNAL) $(CFG_U64CRT) $(GEN_STR_U64CRT)
|
||||
|
||||
$(DIR_M65)/OUTB_0.BIN $(DIR_M65)/BASIC_0_combined.vs $(DIR_M65)/BASIC_0_combined.sym: \
|
||||
$(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_BASIC) $(CFG_M65) $(GEN_STR_M65) $(DIR_M65)/KERNAL_0_combined.sym
|
||||
$(DIR_M65)/OUTK_0.BIN $(DIR_M65)/KERNAL_0_combined.vs $(DIR_M65)/KERNAL_0_combined.sym: \
|
||||
@@ -275,6 +341,16 @@ $(DIR_X16)/OUTB_0.BIN $(DIR_X16)/BASIC_0_combined.vs $(DIR_X16)/BASIC_0_combine
|
||||
$(DIR_X16)/OUTK_0.BIN $(DIR_X16)/KERNAL_0_combined.vs $(DIR_X16)/KERNAL_0_combined.sym: \
|
||||
$(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_KERNAL) $(CFG_X16) $(GEN_STR_X16)
|
||||
|
||||
$(DIR_GENCRT)/basic.seg_1 $(DIR_GENCRT)/BASIC_1_combined.vs $(DIR_GENCRT)/BASIC_1_combined.sym: \
|
||||
$(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_BASIC) $(CFG_GENCRT) $(GEN_STR_GENCRT) $(DIR_GENCRT)/KERNAL_0_combined.sym $(DIR_GENCRT)/BASIC_0_combined.sym
|
||||
$(DIR_GENCRT)/kernal.seg_1 $(DIR_GENCRT)/KERNAL_1_combined.vs $(DIR_GENCRT)/KERNAL_1_combined.sym: \
|
||||
$(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_KERNAL) $(CFG_GENCRT) $(GEN_STR_GENCRT) $(DIR_GENCRT)/KERNAL_0_combined.sym
|
||||
|
||||
$(DIR_U64CRT)/basic.seg_1 $(DIR_U64CRT)/BASIC_1_combined.vs $(DIR_U64CRT)/BASIC_1_combined.sym: \
|
||||
$(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_BASIC) $(CFG_U64CRT) $(GEN_STR_U64CRT) $(DIR_U64CRT)/KERNAL_0_combined.sym $(DIR_U64CRT)/BASIC_0_combined.sym
|
||||
$(DIR_U64CRT)/kernal.seg_1 $(DIR_U64CRT)/KERNAL_1_combined.vs $(DIR_U64CRT)/KERNAL_1_combined.sym: \
|
||||
$(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_KERNAL) $(CFG_U64CRT) $(GEN_STR_U64CRT) $(DIR_U64CRT)/KERNAL_0_combined.sym
|
||||
|
||||
$(DIR_M65)/basic.seg_1 $(DIR_M65)/BASIC_1_combined.vs $(DIR_M65)/BASIC_1_combined.sym: \
|
||||
$(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_BASIC) $(CFG_M65) $(GEN_STR_M65) $(DIR_M65)/KERNAL_0_combined.sym $(DIR_M65)/BASIC_0_combined.sym
|
||||
$(DIR_M65)/dos.seg_1 $(DIR_M65)/DOS_1_combined.vs $(DIR_M65)/DOS_1_combined.sym: \
|
||||
@@ -287,12 +363,14 @@ $(DIR_X16)/basic.seg_1 $(DIR_X16)/BASIC_1_combined.vs $(DIR_X16)/BASIC_1_combi
|
||||
$(DIR_X16)/kernal.seg_1 $(DIR_X16)/KERNAL_1_combined.vs $(DIR_X16)/KERNAL_1_combined.sym: \
|
||||
$(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_KERNAL) $(CFG_X16) $(GEN_STR_X16) $(DIR_X16)/KERNAL_0_combined.sym
|
||||
|
||||
$(DIR_CUS)/OUTx_x.BIN: $(DIR_CUS)/OUTB_x.BIN $(DIR_CUS)/OUTK_x.BIN
|
||||
$(DIR_GEN)/OUTx_x.BIN: $(DIR_GEN)/OUTB_x.BIN $(DIR_GEN)/OUTK_x.BIN
|
||||
$(DIR_TST)/OUTx_x.BIN: $(DIR_TST)/OUTB_x.BIN $(DIR_TST)/OUTK_x.BIN
|
||||
$(DIR_M65)/OUTx_0.BIN: $(DIR_M65)/OUTB_0.BIN $(DIR_M65)/OUTK_0.BIN
|
||||
$(DIR_U64)/OUTx_x.BIN: $(DIR_U64)/OUTB_x.BIN $(DIR_U64)/OUTK_x.BIN
|
||||
$(DIR_X16)/OUTx_0.BIN: $(DIR_X16)/OUTB_0.BIN $(DIR_X16)/OUTK_0.BIN
|
||||
$(DIR_CUS)/OUTx_x.BIN: $(DIR_CUS)/OUTB_x.BIN $(DIR_CUS)/OUTK_x.BIN
|
||||
$(DIR_GEN)/OUTx_x.BIN: $(DIR_GEN)/OUTB_x.BIN $(DIR_GEN)/OUTK_x.BIN
|
||||
$(DIR_GENCRT)/OUTx_0.BIN: $(DIR_GENCRT)/OUTB_0.BIN $(DIR_GENCRT)/OUTK_0.BIN
|
||||
$(DIR_TST)/OUTx_x.BIN: $(DIR_TST)/OUTB_x.BIN $(DIR_TST)/OUTK_x.BIN
|
||||
$(DIR_M65)/OUTx_0.BIN: $(DIR_M65)/OUTB_0.BIN $(DIR_M65)/OUTK_0.BIN
|
||||
$(DIR_U64)/OUTx_x.BIN: $(DIR_U64)/OUTB_x.BIN $(DIR_U64)/OUTK_x.BIN
|
||||
$(DIR_U64CRT)/OUTx_0.BIN: $(DIR_U64CRT)/OUTB_0.BIN $(DIR_U64CRT)/OUTK_0.BIN
|
||||
$(DIR_X16)/OUTx_0.BIN: $(DIR_X16)/OUTB_0.BIN $(DIR_X16)/OUTK_0.BIN
|
||||
|
||||
$(TARGET_CUS_B): $(DIR_CUS)/OUTx_x.BIN
|
||||
$(TARGET_GEN_B): $(DIR_GEN)/OUTx_x.BIN
|
||||
@@ -304,10 +382,12 @@ $(TARGET_GEN_K): $(DIR_GEN)/OUTx_x.BIN
|
||||
$(TARGET_TST_K): $(DIR_TST)/OUTx_x.BIN
|
||||
$(TARGET_U64_K): $(DIR_U64)/OUTx_x.BIN
|
||||
|
||||
build/symbols_custom.vs: $(DIR_CUS)/BASIC_combined.vs $(DIR_CUS)/KERNAL_combined.vs
|
||||
build/symbols_generic.vs: $(DIR_GEN)/BASIC_combined.vs $(DIR_GEN)/KERNAL_combined.vs
|
||||
build/symbols_testing.vs: $(DIR_TST)/BASIC_combined.vs $(DIR_TST)/KERNAL_combined.vs
|
||||
build/symbols_ultimate64.vs: $(DIR_U64)/BASIC_combined.vs $(DIR_U64)/KERNAL_combined.vs
|
||||
build/symbols_custom.vs: $(DIR_CUS)/BASIC_combined.vs $(DIR_CUS)/KERNAL_combined.vs
|
||||
build/symbols_generic.vs: $(DIR_GEN)/BASIC_combined.vs $(DIR_GEN)/KERNAL_combined.vs
|
||||
build/symbols_generic_crt.vs: $(DIR_GENCRT)/BASIC_0_combined.vs $(DIR_GENCRT)/KERNAL_0_combined.vs
|
||||
build/symbols_testing.vs: $(DIR_TST)/BASIC_combined.vs $(DIR_TST)/KERNAL_combined.vs
|
||||
build/symbols_ultimate64.vs: $(DIR_U64)/BASIC_combined.vs $(DIR_U64)/KERNAL_combined.vs
|
||||
build/symbols_ultimate64_crt.vs: $(DIR_U64CRT)/BASIC_0_combined.vs $(DIR_U64CRT)/KERNAL_0_combined.vs
|
||||
|
||||
# Rules - BASIC and KERNAL intermediate files
|
||||
|
||||
@@ -319,6 +399,10 @@ $(GEN_STR_GEN): $(TOOL_GENERATE_STRINGS) $(CFG_GEN)
|
||||
@mkdir -p $(DIR_GEN)/,generated
|
||||
$(TOOL_GENERATE_STRINGS) -o $@ -c $(CFG_GEN)
|
||||
|
||||
$(GEN_STR_GENCRT): $(TOOL_GENERATE_STRINGS) $(CFG_GENCRT)
|
||||
@mkdir -p $(DIR_GENCRT)/,generated
|
||||
$(TOOL_GENERATE_STRINGS) -o $@ -c $(CFG_GENCRT)
|
||||
|
||||
$(GEN_STR_TST): $(TOOL_GENERATE_STRINGS) $(CFG_TST)
|
||||
@mkdir -p $(DIR_TST)/,generated
|
||||
$(TOOL_GENERATE_STRINGS) -o $@ -c $(CFG_TST)
|
||||
@@ -331,6 +415,10 @@ $(GEN_STR_U64): $(TOOL_GENERATE_STRINGS) $(CFG_U64)
|
||||
@mkdir -p $(DIR_U64)/,generated
|
||||
$(TOOL_GENERATE_STRINGS) -o $@ -c $(CFG_U64)
|
||||
|
||||
$(GEN_STR_U64CRT): $(TOOL_GENERATE_STRINGS) $(CFG_U64CRT)
|
||||
@mkdir -p $(DIR_U64CRT)/,generated
|
||||
$(TOOL_GENERATE_STRINGS) -o $@ -c $(CFG_U64CRT)
|
||||
|
||||
$(GEN_STR_X16): $(TOOL_GENERATE_STRINGS) $(CFG_X16)
|
||||
@mkdir -p $(DIR_X16)/,generated
|
||||
$(TOOL_GENERATE_STRINGS) -o $@ -c $(CFG_X16)
|
||||
@@ -339,12 +427,14 @@ build/,generated/,float_constants.s: $(TOOL_GENERATE_CONSTANTS)
|
||||
@mkdir -p build/,generated
|
||||
$(TOOL_GENERATE_CONSTANTS) -o build/,generated/,float_constants.s
|
||||
|
||||
GEN_STR_custom = $(GEN_STR_CUS)
|
||||
GEN_STR_generic = $(GEN_STR_GEN)
|
||||
GEN_STR_testing = $(GEN_STR_TST)
|
||||
GEN_STR_mega65 = $(GEN_STR_M65)
|
||||
GEN_STR_ultimate64 = $(GEN_STR_U64)
|
||||
GEN_STR_cx16 = $(GEN_STR_X16)
|
||||
GEN_STR_custom = $(GEN_STR_CUS)
|
||||
GEN_STR_generic = $(GEN_STR_GEN)
|
||||
GEN_STR_generic_crt = $(GEN_STR_GENCRT)
|
||||
GEN_STR_testing = $(GEN_STR_TST)
|
||||
GEN_STR_mega65 = $(GEN_STR_M65)
|
||||
GEN_STR_ultimate64 = $(GEN_STR_U64)
|
||||
GEN_STR_ultimate64_crt = $(GEN_STR_U64CRT)
|
||||
GEN_STR_cx16 = $(GEN_STR_X16)
|
||||
|
||||
.PRECIOUS: build/target_%/OUTB_x.BIN build/target_%/BASIC_combined.vs
|
||||
build/target_%/OUTB_x.BIN build/target_%/BASIC_combined.vs:
|
||||
@@ -358,6 +448,48 @@ build/target_%/OUTK_x.BIN build/target_%/KERNAL_combined.vs build/target_%/KERNA
|
||||
@rm -f $@* build/target_$*/KERNAL*
|
||||
@$(TOOL_BUILD_SEGMENT) -a ../../$(TOOL_ASSEMBLER) -r STD -s KERNAL -i KERNAL-$* -o OUTK_x.BIN -d build/target_$* -l e4d3 -h ffff src/,,config_$*.s $(SRCDIR_KERNAL) $(GEN_KERNAL) $(GEN_STR_$*)
|
||||
|
||||
# Rules - BASIC and KERNAL intermediate files, for ROM with external cartridge
|
||||
|
||||
$(DIR_GENCRT)/OUTB_0.BIN $(DIR_GENCRT)/BASIC_0_combined.vs $(DIR_GENCRT)/BASIC_0_combined.sym:
|
||||
@mkdir -p $(DIR_GENCRT)
|
||||
@rm -f $@* $(DIR_GENCRT)/BASIC_0*
|
||||
@$(TOOL_BUILD_SEGMENT) -a ../../$(TOOL_ASSEMBLER) -r CRT -s BASIC_0 -i BASIC_0-generic-crt -o OUTB_0.BIN -d $(DIR_GENCRT) -l a000 -h e4d2 $(CFG_GENCRT) $(GEN_STR_GENCRT) $(SRCDIR_BASIC) $(GEN_BASIC)
|
||||
|
||||
$(DIR_GENCRT)/OUTK_0.BIN $(DIR_GENCRT)/KERNAL_0_combined.vs $(DIR_GENCRT)/KERNAL_0_combined.sym:
|
||||
@mkdir -p $(DIR_GENCRT)
|
||||
@rm -f $@* $(DIR_GENCRT)/KERNAL_0*
|
||||
@$(TOOL_BUILD_SEGMENT) -a ../../$(TOOL_ASSEMBLER) -r CRT -s KERNAL_0 -i KERNAL_0-generic-crt -o OUTK_0.BIN -d $(DIR_GENCRT) -l e4d3 -h ffff $(CFG_GENCRT) $(GEN_STR_GENCRT) $(SRCDIR_KERNAL) $(GEN_KERNAL)
|
||||
|
||||
$(DIR_GENCRT)/basic.seg_1 $(DIR_GENCRT)/BASIC_1_combined.vs $(DIR_GENCRT)/BASIC_1_combined.sym:
|
||||
@mkdir -p $(DIR_GENCRT)
|
||||
@rm -f $@* $(DIR_GENCRT)/basic.seg_1 $(DIR_GENCRT)/BASIC_1*
|
||||
@$(TOOL_BUILD_SEGMENT) -a ../../$(TOOL_ASSEMBLER) -r CRT -s BASIC_1 -i BASIC_1-generic-crt -o basic.seg_1 -d $(DIR_GENCRT) -l 8000 -h 9fff $(CFG_GENCRT) $(GEN_STR_GENCRT) $(SRCDIR_BASIC) $(GEN_BASIC)
|
||||
|
||||
$(DIR_GENCRT)/kernal.seg_1 $(DIR_GENCRT)/KERNAL_1_combined.vs $(DIR_GENCRT)/KERNAL_1_combined.sym:
|
||||
@mkdir -p $(DIR_GENCRT)
|
||||
@rm -f $@* $(DIR_GENCRT)/kernal.seg_1 $(DIR_GENCRT)/KERNAL_1*
|
||||
@$(TOOL_BUILD_SEGMENT) -a ../../$(TOOL_ASSEMBLER) -r CRT -s KERNAL_1 -i KERNAL_1-generic-crt -o kernal.seg_1 -d $(DIR_GENCRT) -l 8000 -h 9fff $(CFG_GENCRT) $(GEN_STR_GENCRT) $(SRCDIR_KERNAL) $(GEN_KERNAL)
|
||||
|
||||
$(DIR_U64CRT)/OUTB_0.BIN $(DIR_U64CRT)/BASIC_0_combined.vs $(DIR_U64CRT)/BASIC_0_combined.sym:
|
||||
@mkdir -p $(DIR_U64CRT)
|
||||
@rm -f $@* $(DIR_U64CRT)/BASIC_0*
|
||||
@$(TOOL_BUILD_SEGMENT) -a ../../$(TOOL_ASSEMBLER) -r CRT -s BASIC_0 -i BASIC_0-ultimate64-crt -o OUTB_0.BIN -d $(DIR_U64CRT) -l a000 -h e4d2 $(CFG_U64CRT) $(GEN_STR_U64CRT) $(SRCDIR_BASIC) $(GEN_BASIC)
|
||||
|
||||
$(DIR_U64CRT)/OUTK_0.BIN $(DIR_U64CRT)/KERNAL_0_combined.vs $(DIR_U64CRT)/KERNAL_0_combined.sym:
|
||||
@mkdir -p $(DIR_U64CRT)
|
||||
@rm -f $@* $(DIR_U64CRT)/KERNAL_0*
|
||||
@$(TOOL_BUILD_SEGMENT) -a ../../$(TOOL_ASSEMBLER) -r CRT -s KERNAL_0 -i KERNAL_0-ultimate64-crt -o OUTK_0.BIN -d $(DIR_U64CRT) -l e4d3 -h ffff $(CFG_U64CRT) $(GEN_STR_U64CRT) $(SRCDIR_KERNAL) $(GEN_KERNAL)
|
||||
|
||||
$(DIR_U64CRT)/basic.seg_1 $(DIR_U64CRT)/BASIC_1_combined.vs $(DIR_U64CRT)/BASIC_1_combined.sym:
|
||||
@mkdir -p $(DIR_U64CRT)
|
||||
@rm -f $@* $(DIR_U64CRT)/basic.seg_1 $(DIR_U64CRT)/BASIC_1*
|
||||
@$(TOOL_BUILD_SEGMENT) -a ../../$(TOOL_ASSEMBLER) -r CRT -s BASIC_1 -i BASIC_1-ultimate64-crt -o basic.seg_1 -d $(DIR_U64CRT) -l 8000 -h 9fff $(CFG_U64CRT) $(GEN_STR_U64CRT) $(SRCDIR_BASIC) $(GEN_BASIC)
|
||||
|
||||
$(DIR_U64CRT)/kernal.seg_1 $(DIR_U64CRT)/KERNAL_1_combined.vs $(DIR_U64CRT)/KERNAL_1_combined.sym:
|
||||
@mkdir -p $(DIR_U64CRT)
|
||||
@rm -f $@* $(DIR_U64CRT)/kernal.seg_1 $(DIR_U64CRT)/KERNAL_1*
|
||||
@$(TOOL_BUILD_SEGMENT) -a ../../$(TOOL_ASSEMBLER) -r CRT -s KERNAL_1 -i KERNAL_1-ultimate64-crt -o kernal.seg_1 -d $(DIR_U64CRT) -l 8000 -h 9fff $(CFG_U64CRT) $(GEN_STR_U64CRT) $(SRCDIR_KERNAL) $(GEN_KERNAL)
|
||||
|
||||
# Rules - BASIC and KERNAL intermediate files, for MEGA65
|
||||
|
||||
$(DIR_M65)/OUTB_0.BIN $(DIR_M65)/BASIC_0_combined.vs $(DIR_M65)/BASIC_0_combined.sym:
|
||||
@@ -425,6 +557,24 @@ build/basic_%.rom:
|
||||
build/symbols_%.vs:
|
||||
@sort build/target_$*/BASIC_combined.vs build/target_$*/KERNAL_combined.vs | uniq | grep -v "__" > $@
|
||||
|
||||
$(DIR_GENCRT)/OUTx_0.BIN:
|
||||
@cat $(DIR_GENCRT)/OUTB_0.BIN $(DIR_GENCRT)/OUTK_0.BIN > $@
|
||||
|
||||
$(DIR_GENCRT)/kernal.seg_0: $(DIR_GENCRT)/OUTx_0.BIN
|
||||
@dd if=$(DIR_GENCRT)/OUTx_0.BIN bs=8192 count=1 skip=2 of=$@ status=none
|
||||
|
||||
$(DIR_GENCRT)/basic.seg_0: $(DIR_GENCRT)/OUTx_0.BIN
|
||||
@dd if=$(DIR_GENCRT)/OUTx_0.BIN bs=8192 count=1 skip=0 of=$@ status=none
|
||||
|
||||
$(DIR_U64CRT)/OUTx_0.BIN:
|
||||
@cat $(DIR_U64CRT)/OUTB_0.BIN $(DIR_U64CRT)/OUTK_0.BIN > $@
|
||||
|
||||
$(DIR_U64CRT)/kernal.seg_0: $(DIR_U64CRT)/OUTx_0.BIN
|
||||
@dd if=$(DIR_U64CRT)/OUTx_0.BIN bs=8192 count=1 skip=2 of=$@ status=none
|
||||
|
||||
$(DIR_U64CRT)/basic.seg_0: $(DIR_U64CRT)/OUTx_0.BIN
|
||||
@dd if=$(DIR_U64CRT)/OUTx_0.BIN bs=8192 count=1 skip=0 of=$@ status=none
|
||||
|
||||
$(DIR_M65)/OUTx_0.BIN:
|
||||
@cat $(DIR_M65)/OUTB_0.BIN $(DIR_M65)/OUTK_0.BIN > $@
|
||||
|
||||
@@ -443,6 +593,24 @@ $(DIR_X16)/kernal.seg_0: $(DIR_X16)/OUTx_0.BIN
|
||||
$(DIR_X16)/basic.seg_0: $(DIR_X16)/OUTx_0.BIN
|
||||
@dd if=$(DIR_X16)/OUTx_0.BIN bs=8192 count=1 skip=0 of=$@ status=none
|
||||
|
||||
$(TARGET_GENCRT_K): $(DIR_GENCRT)/OUTx_0.BIN
|
||||
@dd if=$(DIR_GENCRT)/OUTx_0.BIN bs=8192 count=1 skip=2 of=$@ status=none
|
||||
|
||||
$(TARGET_GENCRT_B): $(DIR_GENCRT)/OUTx_0.BIN
|
||||
@dd if=$(DIR_GENCRT)/OUTx_0.BIN bs=8192 count=1 skip=0 of=$@ status=none
|
||||
|
||||
$(TARGET_U64CRT_K): $(DIR_U64CRT)/OUTx_0.BIN
|
||||
@dd if=$(DIR_U64CRT)/OUTx_0.BIN bs=8192 count=1 skip=2 of=$@ status=none
|
||||
|
||||
$(TARGET_U64CRT_B): $(DIR_U64CRT)/OUTx_0.BIN
|
||||
@dd if=$(DIR_U64CRT)/OUTx_0.BIN bs=8192 count=1 skip=0 of=$@ status=none
|
||||
|
||||
build/symbols_generic_crt.vs:
|
||||
@sort $(DIR_GENCRT)/BASIC_0_combined.vs $(DIR_GENCRT)/KERNAL_0_combined.vs | uniq | grep -v "__" > $@
|
||||
|
||||
build/symbols_ultimate64_crt.vs:
|
||||
@sort $(DIR_U64CRT)/BASIC_0_combined.vs $(DIR_U64CRT)/KERNAL_0_combined.vs | uniq | grep -v "__" > $@
|
||||
|
||||
build/kernal_hybrid.rom: kernal $(DIR_GEN)/OUTK_x.BIN
|
||||
@echo
|
||||
@echo $(HYBRID_WARNING)
|
||||
@@ -455,41 +623,95 @@ build/kernal_hybrid.rom: kernal $(DIR_GEN)/OUTK_x.BIN
|
||||
build/symbols_hybrid.vs: $(DIR_GEN)/KERNAL_combined.vs
|
||||
@sort $(DIR_GEN)/KERNAL_combined.vs | uniq | grep -v "__" > $@
|
||||
|
||||
build/kernal_hybrid_u64.rom: kernal $(DIR_U64)/OUTK_x.BIN
|
||||
@echo
|
||||
@echo $(HYBRID_WARNING)
|
||||
@echo
|
||||
(dd if=kernal bs=1140 count=1 skip=0 ; \
|
||||
echo " > HYBRID ROM, DON'T DISTRIBUTE <" ; \
|
||||
dd if=kernal bs=1 count=58 skip=1176 ; \
|
||||
cat $(DIR_U64)/OUTK_x.BIN) > $@
|
||||
|
||||
build/symbols_hybrid_u64.vs: $(DIR_U64)/KERNAL_combined.vs
|
||||
@sort $(DIR_U64)/KERNAL_combined.vs | uniq | grep -v "__" > $@
|
||||
|
||||
# Rules - external CRT images
|
||||
|
||||
build/padding_8_KB:
|
||||
@mkdir -p build
|
||||
@dd if=/dev/zero bs=8192 count=1 of=$@ status=none
|
||||
|
||||
$(TARGET_GENCRT_X): $(SEG_LIST_GENCRT) $(CRT_BIN_LIST) build/padding_8_KB
|
||||
@echo
|
||||
@echo
|
||||
@echo
|
||||
@echo //-------------------------------------------------------------------------------------------
|
||||
@echo // Making external CRT ROM image - generic
|
||||
@echo //-------------------------------------------------------------------------------------------
|
||||
@cat assets/cartridge/header-cart.bin > $@
|
||||
@cat assets/cartridge/header-seg0.bin >> $@
|
||||
@cat $(DIR_GENCRT)/basic.seg_1 >> $@
|
||||
@cat assets/cartridge/header-seg1.bin >> $@
|
||||
@cat build/padding_8_KB >> $@
|
||||
@cat assets/cartridge/header-seg2.bin >> $@
|
||||
@cat $(DIR_GENCRT)/kernal.seg_1 >> $@
|
||||
@cat assets/cartridge/header-seg3.bin >> $@
|
||||
@cat build/padding_8_KB >> $@
|
||||
@echo
|
||||
|
||||
$(TARGET_U64CRT_X): $(SEG_LIST_U64CRT) $(CRT_BIN_LIST) build/padding_8_KB
|
||||
@echo
|
||||
@echo
|
||||
@echo
|
||||
@echo //-------------------------------------------------------------------------------------------
|
||||
@echo // Making external CRT ROM image - Ultimate 64
|
||||
@echo //-------------------------------------------------------------------------------------------
|
||||
@cat assets/cartridge/header-cart.bin > $@
|
||||
@cat assets/cartridge/header-seg0.bin >> $@
|
||||
@cat $(DIR_U64CRT)/basic.seg_1 >> $@
|
||||
@cat assets/cartridge/header-seg1.bin >> $@
|
||||
@cat build/padding_8_KB >> $@
|
||||
@cat assets/cartridge/header-seg2.bin >> $@
|
||||
@cat $(DIR_U64CRT)/kernal.seg_1 >> $@
|
||||
@cat assets/cartridge/header-seg3.bin >> $@
|
||||
@cat build/padding_8_KB >> $@
|
||||
@echo
|
||||
|
||||
# Rules - MEGA65 platform specific
|
||||
|
||||
build/padding_64_KB:
|
||||
@mkdir -p build
|
||||
@dd if=/dev/zero bs=8192 count=8 of=build/padding_64_KB status=none
|
||||
@dd if=/dev/zero bs=8192 count=8 of=$@ status=none
|
||||
|
||||
$(TARGET_M65_x) $(TARGET_M65_x_PXL): $(SEG_LIST_M65) build/padding_64_KB build/chargen_openroms.rom build/chargen_openroms.patched build/chargen_pxlfont.rom build/chargen_pxlfont.patched
|
||||
$(TARGET_M65_x_ORF) $(TARGET_M65_x_PXL): $(SEG_LIST_M65) build/padding_64_KB $(TARGET_CHR_ORF) build/chargen_openroms.patched $(TARGET_CHR_PXL) build/chargen_pxlfont.patched
|
||||
@echo
|
||||
@echo
|
||||
@echo
|
||||
@echo //-------------------------------------------------------------------------------------------
|
||||
@echo // Making ROM image for MEGA65 - with Open ROMs chargen
|
||||
@echo //-------------------------------------------------------------------------------------------
|
||||
@cat $(DIR_M65)/dos.seg_1 > $(TARGET_M65_x)
|
||||
@cat $(DIR_M65)/kernal.seg_1 >> $(TARGET_M65_x)
|
||||
@cat $(DIR_M65)/basic.seg_1 >> $(TARGET_M65_x)
|
||||
@cat $(DIR_M65)/basic.seg_0 >> $(TARGET_M65_x)
|
||||
@cat build/chargen_openroms.rom >> $(TARGET_M65_x)
|
||||
@cat build/chargen_openroms.patched >> $(TARGET_M65_x)
|
||||
@cat $(DIR_M65)/kernal.seg_0 >> $(TARGET_M65_x)
|
||||
@cat build/padding_64_KB >> $(TARGET_M65_x)
|
||||
@cat $(DIR_M65)/dos.seg_1 > $(TARGET_M65_x_ORF)
|
||||
@cat $(DIR_M65)/kernal.seg_1 >> $(TARGET_M65_x_ORF)
|
||||
@cat $(DIR_M65)/basic.seg_1 >> $(TARGET_M65_x_ORF)
|
||||
@cat $(DIR_M65)/basic.seg_0 >> $(TARGET_M65_x_ORF)
|
||||
@cat $(TARGET_CHR_ORF) >> $(TARGET_M65_x_ORF)
|
||||
@cat build/chargen_openroms.patched >> $(TARGET_M65_x_ORF)
|
||||
@cat $(DIR_M65)/kernal.seg_0 >> $(TARGET_M65_x_ORF)
|
||||
@cat build/padding_64_KB >> $(TARGET_M65_x_ORF)
|
||||
@echo
|
||||
@echo
|
||||
@echo
|
||||
@echo //-------------------------------------------------------------------------------------------
|
||||
@echo // Making ROM image for MEGA65 - with PXL font chargen
|
||||
@echo //-------------------------------------------------------------------------------------------
|
||||
@cat $(DIR_M65)/dos.seg_1 > $(TARGET_M65_x_PXL)
|
||||
@cat $(DIR_M65)/kernal.seg_1 >> $(TARGET_M65_x_PXL)
|
||||
@cat $(DIR_M65)/basic.seg_1 >> $(TARGET_M65_x_PXL)
|
||||
@cat $(DIR_M65)/basic.seg_0 >> $(TARGET_M65_x_PXL)
|
||||
@cat build/chargen_pxlfont.rom >> $(TARGET_M65_x_PXL)
|
||||
@cat build/chargen_pxlfont.patched >> $(TARGET_M65_x_PXL)
|
||||
@cat $(DIR_M65)/kernal.seg_0 >> $(TARGET_M65_x_PXL)
|
||||
@cat build/padding_64_KB >> $(TARGET_M65_x_PXL)
|
||||
@cat $(DIR_M65)/dos.seg_1 > $(TARGET_M65_x_PXL)
|
||||
@cat $(DIR_M65)/kernal.seg_1 >> $(TARGET_M65_x_PXL)
|
||||
@cat $(DIR_M65)/basic.seg_1 >> $(TARGET_M65_x_PXL)
|
||||
@cat $(DIR_M65)/basic.seg_0 >> $(TARGET_M65_x_PXL)
|
||||
@cat $(TARGET_CHR_PXL) >> $(TARGET_M65_x_PXL)
|
||||
@cat build/chargen_pxlfont.patched >> $(TARGET_M65_x_PXL)
|
||||
@cat $(DIR_M65)/kernal.seg_0 >> $(TARGET_M65_x_PXL)
|
||||
@cat build/padding_64_KB >> $(TARGET_M65_x_PXL)
|
||||
@echo
|
||||
|
||||
# Rules - platform 'Commander X16' specific
|
||||
@@ -510,39 +732,54 @@ $(TARGET_X16_x): $(SEG_LIST_X16) build/chargen_openroms.rom
|
||||
|
||||
# Rules - tests
|
||||
|
||||
.PHONY: test test_generic test_generic_x128 test_hybrid test_testing \
|
||||
test_mega65 test_mega65_xemu test_m65 \
|
||||
test_ultimate64 \
|
||||
.PHONY: test test_crt test_generic test_generic_x128 test_generic_crt test_hybrid test_testing \
|
||||
test_mega65 test_mega65_xemu test_m65 test_ultimate64 \
|
||||
testremote testsimilarity
|
||||
|
||||
test: test_custom
|
||||
test: test_custom
|
||||
test_crt: test_generic_crt
|
||||
|
||||
test_custom: build/kernal_custom.rom build/basic_custom.rom build/symbols_custom.vs
|
||||
x64 -kernal build/kernal_custom.rom -basic build/basic_custom.rom -moncommands build/symbols_custom.vs -1 $(TESTTAPE) -8 $(TESTDISK)
|
||||
test_custom: $(TARGET_LIST_CUS) $(TARGET_CHR_PXL) build/symbols_custom.vs
|
||||
x64 -kernal $(TARGET_CUS_K) -basic $(TARGET_CUS_B) -chargen $(TARGET_CHR_PXL) -moncommands build/symbols_custom.vs -1 $(TESTTAPE) -8 $(TESTDISK)
|
||||
|
||||
test_generic: build/kernal_generic.rom build/basic_generic.rom build/symbols_generic.vs
|
||||
x64 -kernal build/kernal_generic.rom -basic build/basic_generic.rom -moncommands build/symbols_generic.vs -1 $(TESTTAPE) -8 $(TESTDISK)
|
||||
test_generic: $(TARGET_LIST_GEN)$(TARGET_CHR_PXL) build/symbols_generic.vs
|
||||
x64 -kernal $(TARGET_GEN_K) -basic $(TARGET_GEN_B) -chargen $(TARGET_CHR_PXL) -moncommands build/symbols_generic.vs -1 $(TESTTAPE) -8 $(TESTDISK)
|
||||
|
||||
test_generic_x128: build/kernal_generic.rom build/basic_generic.rom build/symbols_generic.vs
|
||||
x128 -go64 -kernal64 build/kernal_generic.rom -basic64 build/basic_generic.rom -moncommands build/symbols_generic.vs -1 $(TESTTAPE) -8 $(TESTDISK)
|
||||
test_generic_x128: $(TARGET_LIST_GEN) $(TARGET_CHR_PXL) build/symbols_generic.vs
|
||||
x128 -go64 -kernal64 $(TARGET_GEN_K) -basic64 $(TARGET_GEN_B) -chargen $(TARGET_CHR_PXL) -moncommands build/symbols_generic.vs -1 $(TESTTAPE) -8 $(TESTDISK)
|
||||
|
||||
test_testing: build/kernal_testing.rom build/basic_testing.rom build/symbols_testing.vs
|
||||
x64 -kernal build/kernal_testing.rom -basic build/basic_testing.rom -moncommands build/symbols_testing.vs -1 $(TESTTAPE) -8 $(TESTDISK)
|
||||
test_generic_crt: $(TARGET_LIST_GENCRT) $(TARGET_CHR_PXL) build/symbols_generic_crt.vs
|
||||
x64 -kernal $(TARGET_GENCRT_K) -basic $(TARGET_GENCRT_B) -chargen $(TARGET_CHR_PXL) -cartcrt $(TARGET_GENCRT_X) -moncommands build/symbols_generic_crt.vs -1 $(TESTTAPE) -8 $(TESTDISK)
|
||||
|
||||
test_ultimate64: build/kernal_ultimate64.rom build/basic_ultimate64.rom build/symbols_ultimate64.vs
|
||||
x64 -kernal build/kernal_ultimate64.rom -basic build/basic_ultimate64.rom -moncommands build/symbols_ultimate64.vs -1 $(TESTTAPE) -8 $(TESTDISK)
|
||||
test_testing: $(TARGET_LIST_TST) $(TARGET_CHR_PXL) build/symbols_testing.vs
|
||||
x64 -kernal $(TARGET_TST_K) -basic $(TARGET_TST_B) -chargen $(TARGET_CHR_PXL) -moncommands build/symbols_testing.vs -1 $(TESTTAPE) -8 $(TESTDISK)
|
||||
|
||||
test_mega65: $(TARGET_M65_x) $(TARGET_M65_x_PXL)
|
||||
test_ultimate64: $(TARGET_LIST_U64) $(TARGET_CHR_PXL) build/symbols_ultimate64.vs
|
||||
x64 -kernal $(TARGET_U64_K) -basic $(TARGET_U64_B) -chargen $(TARGET_CHR_PXL) -moncommands build/symbols_ultimate64.vs -1 $(TESTTAPE) -8 $(TESTDISK)
|
||||
|
||||
test_ultimate64_crt: $(TARGET_LIST_U64CRT) $(TARGET_CHR_PXL) build/symbols_ultimate64_crt.vs
|
||||
x64 -kernal $(TARGET_U64CRT_K) -basic $(TARGET_U64CRT_B) -chargen $(TARGET_CHR_PXL) -cartcrt $(TARGET_U64CRT_X) -moncommands build/symbols_ultimate64_crt.vs -1 $(TESTTAPE) -8 $(TESTDISK)
|
||||
|
||||
test_mega65: $(TARGET_M65_x_ORF) $(TARGET_M65_x_PXL)
|
||||
../xemu/build/bin/xmega65.native -dmarev 2 -besure -fontrefresh -forcerom -loadrom $(TARGET_M65_x_PXL)
|
||||
|
||||
test_cx16: $(TARGET_X16_x)
|
||||
../x16-emulator/x16emu -rom $(TARGET_X16_x)
|
||||
|
||||
test_hybrid: build/kernal_hybrid.rom build/symbols_hybrid.vs
|
||||
test_hybrid: build/kernal_hybrid.rom $(TARGET_CHR_PXL) build/symbols_hybrid.vs
|
||||
@echo
|
||||
@echo $(HYBRID_WARNING)
|
||||
@echo
|
||||
x64 -kernal build/kernal_hybrid.rom -moncommands build/symbols_hybrid.vs -1 $(TESTTAPE) -8 $(TESTDISK)
|
||||
x64 -kernal build/kernal_hybrid.rom -chargen $(TARGET_CHR_PXL) -moncommands build/symbols_hybrid.vs -1 $(TESTTAPE) -8 $(TESTDISK)
|
||||
@echo
|
||||
@echo $(HYBRID_WARNING)
|
||||
@echo
|
||||
|
||||
test_hybrid_u64: build/kernal_hybrid_u64.rom $(TARGET_CHR_PXL) build/symbols_hybrid_u64.vs
|
||||
@echo
|
||||
@echo $(HYBRID_WARNING)
|
||||
@echo
|
||||
x64 -kernal build/kernal_hybrid_u64.rom -chargen $(TARGET_CHR_PXL) -moncommands build/symbols_hybrid_u64.vs -1 $(TESTTAPE) -8 $(TESTDISK)
|
||||
@echo
|
||||
@echo $(HYBRID_WARNING)
|
||||
@echo
|
||||
@@ -550,8 +787,8 @@ test_hybrid: build/kernal_hybrid.rom build/symbols_hybrid.vs
|
||||
test_m65: build/mega65.rom
|
||||
m65 -b ../mega65-core/bin/mega65r1.bit -k ../mega65-core/bin/KICKUP.M65 -R build/mega65.rom -4
|
||||
|
||||
testremote: build/kernal_custom.rom build/basic_custom.rom build/symbols_custom.vs
|
||||
x64 -kernal build/kernal_custom.rom -basic build/basic_custom.rom -moncommands build/symbols_custom.vs -remotemonitor
|
||||
testremote: build/kernal_custom.rom build/basic_custom.rom $(TARGET_CHR_PXL) build/symbols_custom.vs
|
||||
x64 -kernal build/kernal_custom.rom -basic build/basic_custom.rom -chargen $(TARGET_CHR_PXL) -moncommands build/symbols_custom.vs -remotemonitor
|
||||
|
||||
testsimilarity: $(TOOL_SIMILARITY) $(DIR_GEN)/OUTx_x.BIN kernal basic
|
||||
$(TOOL_SIMILARITY) kernal $(DIR_GEN)/OUTx_x.BIN
|
||||
|
||||
@@ -18,7 +18,7 @@ Here are the features of the Open ROMs not found in the original ROMs from the 8
|
||||
* `LIST` command should never damage the screen if trying to list memory content which is not a BASIC program
|
||||
* high performance garbage collector
|
||||
|
||||
* turbo tape load support (as device 7, or using `←L` / `←M`, optionally with a file name), quite sophisticated: up to 250 blocks (can store bytes under I/O), automatically adjusts for tape speed differences
|
||||
* turbo tape load support (as device 7, or using `←L` / `←M`, optionally with a file name), quite sophisticated: up to 250 blocks (can store bytes under I/O), on MEGA65 motherboard automatically adjusts itself for tape speed differences
|
||||
* normal tape load error log is limited by free stack space only (no artificial limitation like in original ROMs)
|
||||
* tape format autodetection; normal vs turbo is mostly transparent to user
|
||||
* improved support for tape adapters (for using regular casette players and other audio devices instead of Datasette) and emulators
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,36 @@
|
||||
|
||||
Follow these rules, or bad things will happen!
|
||||
|
||||
* Don't mix ROMs for different platforms - use generic BASIC with generic KERNAL, Ultimate64 BASIC with Ultimate64 KERNAL, etc.
|
||||
|
||||
* Don't mix these ROMs with any other ROMs; exceptions:
|
||||
|
||||
- kernal_hybrid\*.rom, which is meant to be used (and has to be used) with the original BASIC ROM;
|
||||
however, these hybrid ROMs cannot be distributed due to legal/copyright reasons; see [here](./../doc/Hybrid-build.md) for instruction how to create them
|
||||
|
||||
- chargen_*.rom - these ones are fully interchangeable
|
||||
|
||||
* Don't mix ROMs from different builds/versions (again, CHARGEN is an exception).
|
||||
|
||||
* The generic ROM set should be compatible with any C64-compatible machine; platform-specific ROMs might not work on other platforms.
|
||||
|
||||
<br />
|
||||
|
||||
For Ultimate 64 motherboard the following settings are recommended:
|
||||
|
||||
* U64 Specific Settings -> Turbo Control -> U64 Turbo Registers
|
||||
|
||||
<br />
|
||||
|
||||
The \*\_crt ROM set is a special version, with some code moved to external ROM on the cartridge - thus, more features could be enabled. It needs all the 3 files (BASIC, Kernal, cartridge) to be operable.
|
||||
|
||||
<br />
|
||||
|
||||
Have fun!
|
||||
|
||||
<br />
|
||||
|
||||
------
|
||||
|
||||
|
||||
PXL font was created by Retrofan, we got a permission to include it with Open ROMs under GNU Lesser General Public License 3.0, see [here](https://www.forum64.de/index.php?thread/84000-neuer-c64-systemfont-auch-plus4-c128-atari/&postID=1493383#post1493383).
|
||||
@@ -1,27 +0,0 @@
|
||||
|
||||
Follow these rules, or bad things will happen!
|
||||
|
||||
|
||||
- Don't mix ROMs for different platforms - use generic BASIC with generic KERNAL, Ultimate64 BASIC with Ultimate64 KERNAL, etc.
|
||||
|
||||
- Don't mix these ROMs with any other ROMs; exceptions:
|
||||
|
||||
- kernal_hybrid.rom, which is meant to be used (and has to be used) with the original BASIC ROM;
|
||||
however, this hybrid ROM cannot be distributed due to legal/copyright reasons
|
||||
|
||||
- chargen_*.rom - these ones are fully interchangeable
|
||||
|
||||
- Don't mix ROMs from different builds/versions (again, CHARGEN is an exception).
|
||||
|
||||
- The generic ROM set should be compatible with any C64-compatible machine; platform-specific ROMs might not work on other platforms.
|
||||
|
||||
|
||||
Have fun!
|
||||
|
||||
|
||||
------
|
||||
|
||||
|
||||
PXL font was created by Retrofan, we got a permission to include it with Open ROMs under GNU Lesser General Public License 3.0, see:
|
||||
|
||||
- https://www.forum64.de/index.php?thread/84000-neuer-c64-systemfont-auch-plus4-c128-atari/&postID=1493383#post1493383
|
||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+17
-14
@@ -78,26 +78,29 @@ Make sure to read the main [README](../README.md) first - although any help with
|
||||
|
||||
List of the most important make targets:
|
||||
|
||||
| target | description |
|
||||
| :------------------ | :------------------------------------------------------------------------------ |
|
||||
| `all` | builds all ROMs, places them in 'build' subdirectory |
|
||||
| `clean` | removes all the compilation results and intermediate files |
|
||||
| `updatebin` | upates ROMs in 'bin' subdirectory - with embedded version string, for release |
|
||||
| `testsimilarity` | launches the similarity tool, see [README](../README.md) |
|
||||
| `test` | builds the 'custom' configuration, launches it using VICE emulator |
|
||||
| `test_generic` | builds the default ROMs, for generic C64/C128, launches using VICE |
|
||||
| `test_generic_x128` | as above, but launches C128 emulator instead |
|
||||
| `test_mega65` | builds the MEGA65 ROM, launches it using XEMU emulator |
|
||||
| `test_ultimate64` | builds the Ultimate 64 configuration, launches it using VICE emulator |
|
||||
| `test_hybrid` | builds a hybrid ROM (Open ROMs Kernal + original BASIC), launches it using VICE |
|
||||
| `test_testing` | builds a rather odd testing configuration, launches it using VICE emulator |
|
||||
| target | description |
|
||||
| :-------------------- | :------------------------------------------------------------------------------ |
|
||||
| `all` | builds all ROMs, places them in 'build' subdirectory |
|
||||
| `clean` | removes all the compilation results and intermediate files |
|
||||
| `updatebin` | upates ROMs in 'bin' subdirectory - with embedded version string, for release |
|
||||
| `testsimilarity` | launches the similarity tool, see [README](../README.md) |
|
||||
| `test` | builds the 'custom' configuration, launches it using VICE emulator |
|
||||
| `test_generic` | builds the default ROMs, for generic C64/C128, launches using VICE |
|
||||
| `test_generic_x128` | as above, but launches C128 emulator instead |
|
||||
| `test_generic_crt` | builds the default ROM with extended cartridge image, launches using VICE |
|
||||
| `test_mega65` | builds the MEGA65 ROM, launches it using XEMU emulator |
|
||||
| `test_ultimate64` | builds the Ultimate 64 configuration, launches it using VICE |
|
||||
| `test_ultimate64_crt` | as above, ROM with extended cartriodge image |
|
||||
| `test_hybrid` | builds a hybrid ROM (Open ROMs Kernal + original BASIC), launches it using VICE |
|
||||
| `test_testing` | builds a rather odd testing configuration, launches it using VICE |
|
||||
|
||||
|
||||
### Code segments and ROM layouts
|
||||
|
||||
Currently there are 3 ROM layouts defined:
|
||||
Currently there are 4 ROM layouts defined:
|
||||
|
||||
- `STD` - with 2 code segments: `BASIC` (`$A000-$E4D2`, where `$C000-$DFFF` is a skip-gap for RAM and I/O area) and `KERNAL` (`$E4D3 - $FFFF`)
|
||||
- `CRT` - where `BASIC` becames `BASIC_0` and `KERNAL` becames `KERNAL_0`, with additional `BASIC`/`KERNAL` segments are placed on the required cartridge image
|
||||
- `M65` - where `BASIC` becames `BASIC_0` and `KERNAL` becames `KERNAL_0`, additional segments might be added to the build system in the future; at the moment of writing this document additional 16KB of ROM is defined as `BASIC_1` segment and additional 8KB of ROM is defined as `KERNAL_1` segment
|
||||
- `X16` - memory layout for the Commander X16 machine
|
||||
|
||||
|
||||
+24
-20
@@ -1,7 +1,7 @@
|
||||
|
||||
# Extended BASIC
|
||||
|
||||
NOTE: Command syntax, behaviour details, and tokens are still subject to change! Currently the availability of some depends on the build configuration, in the future most (if not all) extended commands will be available only on machines with extended ROM, like the MEGA65 or Ultimate 64.
|
||||
NOTE: Command syntax, behaviour details, and tokens are still subject to change! Currently the availability of some depends on the build configuration, in the future most (if not all) extended commands will be available only on machines with extended ROM, like the *MEGA65*, *Ultimate 64*, or a build utilizing cartridge with external ROM (build marked as *cart*).
|
||||
|
||||
## DOS Wedge
|
||||
|
||||
@@ -29,57 +29,61 @@ Sends the DOS command to the current unit.
|
||||
|
||||
## Tape Wedge
|
||||
|
||||
The Tape Wedge commands are only available in direct mode, and they have to start from the first character of the line.
|
||||
The Tape Wedge commands are only available in direct mode, and they have to start from the first character of the line. It is designed to ressemble wedge from *BlackBox* series of cartridges and several tape turbo implementations.
|
||||
|
||||
### `←L ["file_name"]` (all)
|
||||
|
||||
Loads the file from tape. Depending on the configuration, it tries to load the file in TurboTape 64 format, in the standard CBM format, or autodetects the file format.
|
||||
Loads the file from tape. Depending on the configuration, it tries to load the file:
|
||||
* in any format (standard/turbo) - if format autodetection is compiled in
|
||||
* in *TurboTape 64* format - if turbo support is compiled in
|
||||
* in the normal CBM format - if only this one is compiled in
|
||||
|
||||
### `←M ["file_name"]` (all)
|
||||
|
||||
Like above, but merges a BASIC program to the one already stored in memory.
|
||||
|
||||
### `←H` (MEGA65)
|
||||
### `←H` or `←HF` (cart, MEGA65)
|
||||
|
||||
Launches a built-in tape head alignment tool. Destroys program in memory. Press `RUN/STOP` to terminate the tool.
|
||||
Launches a built-in tape head alignment tool. Destroys program in memory. Press `RUN/STOP` to terminate the tool. `←HF` is for compatibility with the *BlackBox v3/v4/v8* cartridges.
|
||||
|
||||
## Additional BASIC commands - I/O
|
||||
|
||||
### `MERGE "file_name" [, device_number]` (all)
|
||||
### Device numbers
|
||||
|
||||
* if tape format autodetection is compiled-in, you can load file from tape using either device #1 (CBM compatible way) or from device #7 (in a way compatible with *Final* and *Action Replay* cartridges)
|
||||
* if autodetection is not available, than device #1 means normal CBM format, and device #7 means *Turbo Tape 64* format
|
||||
|
||||
### `MERGE "file_name" [, device_number]` (cart, MEGA65)
|
||||
|
||||
Appends the BASIC program from a storage medium to the one currently present in memory.
|
||||
|
||||
### `BLOAD "file_name", device_number, start_address` (all)
|
||||
### `BLOAD "file_name", device_number, start_address` (cart, MEGA65)
|
||||
|
||||
Loads a binary file starting from the given memory location. Does not clear variables, does not perform BASIC program relinking, etc. NOTE: for now syntax differs from the BASIC V3.5+ - this will be changed once the necessary BASIC infrastructure is implemented.
|
||||
|
||||
### `BVERIFY "file_name", device_number, start_address` (all)
|
||||
### `BVERIFY "file_name", device_number, start_address` (cart, MEGA65)
|
||||
|
||||
Verify operation for the binary data starting from a given addres. NOTE: for now syntax differs from the BASIC V3.5+ - this will be changed once the necessary BASIC infrastructure is implemented.
|
||||
|
||||
### `BSAVE "file_name", device_number, start_address, end_address` (all)
|
||||
### `BSAVE "file_name", device_number, start_address, end_address` (cart, MEGA65)
|
||||
|
||||
Saves the binary data from the given memory area. NOTE: for now syntax differs from the BASIC V3.5+ - this will be changed once the necessary BASIC infrastructure is implemented.
|
||||
|
||||
## Additional BASIC commands - misc
|
||||
|
||||
### `COLD` (MEGA65)
|
||||
### `COLD` (cart, MEGA65)
|
||||
|
||||
Resets the machine. In direct mode asks for confirmation first.
|
||||
|
||||
### `FAST` (all)
|
||||
### `FAST`, `SLOW` (all)
|
||||
|
||||
Tries to switch the machine to turbo mode - details differ depending on the configured machine / motherboard.
|
||||
|
||||
### `SLOW` (all)
|
||||
|
||||
Tries to switch the machine back to 1 MHz operation mode.
|
||||
Tries to switch the machine to turbo mode (or back to 1MHz operation mode) - details differ depending on the configured machine / motherboard. On MEGA65 motherboard this is not available in native mode, it is not designed to run in 1MHz due to using compound CPU instructions usage.
|
||||
|
||||
### `OLD` (all)
|
||||
|
||||
Tries to restore program destroyed by the `NEW` command or a reset.
|
||||
|
||||
### `MEM` (MEGA65)
|
||||
### `MEM` (cart, MEGA65)
|
||||
|
||||
Displays BASIC memory usage information:
|
||||
* `TEXT` - size of BASIC program text, always at least 2 bytes are used
|
||||
@@ -92,11 +96,11 @@ Displays BASIC memory usage information:
|
||||
|
||||
Displays various system information.
|
||||
|
||||
### `CLEAR` (all)
|
||||
### `CLEAR` (cart, MEGA65)
|
||||
|
||||
Clears the screen content.
|
||||
|
||||
### `DISPOSE` (all)
|
||||
### `DISPOSE` (cart, MEGA65)
|
||||
|
||||
Runs the garbage collector - disposes outdated strings.
|
||||
|
||||
@@ -110,4 +114,4 @@ Switches machine to C64 compatibility mode or to MEGA65 native mode. Performs `C
|
||||
|
||||
### `IF MEGA65 THEN`, `IF MEGA65 GOTO` (MEGA65)
|
||||
|
||||
Special check for running under MEGA65. The `MEGA65` string is not tokenized, therefore it will be listed properly even under original BASIC V2. `MEGA65` is not a variable here - it is still possible to normally use the `ME` variable.
|
||||
Special check for running on *MEGA65* motherboard. The `MEGA65` string is not tokenized, therefore it will be listed properly even under original BASIC V2. `MEGA65` is not a variable here - it is still possible to normally use the `ME` variable.
|
||||
@@ -0,0 +1,15 @@
|
||||
|
||||
The C64 ROM is typically distributed in 2 files 8 KB each, one called *kernal*, one *basic*. This might be misleading, as the C64 Kernal takes about 6.5 KB, and the BASIC about 9.5 KB - some parts of BASIC is therefore placed in the *kernal* file. This is the main reason you can't easily use the Open ROMs Kernal file with original C64 BASIC.
|
||||
|
||||
But it is still possible to combine them:
|
||||
* copy the *kernal* file to the *open-roms* main directory
|
||||
* from the Linux command line type `make test_hybrid` on `make test_hybrid_u64` (for Ultimate 64 based Kernal build- this will crate the hybrid Kernal file, *open-roms/bin/kernal_hybrid.rom* or *open-roms/bin/kernal_hybrid_u64.rom*, and launch VICE emulator with it
|
||||
|
||||
Unfortunately, some features will be lost this way - for example, the Open ROMs DOS Wedge is BASIC based, so it won't be available in the hybrid ROM.
|
||||
|
||||
Sorry, no Windows support (but it should work under *Windows Subsystem for Linux* if GCC and libpng devel packages are installed), and no macOS support (I don't have a machine to test).
|
||||
|
||||
Please note, that it is illegal to distribute such a hybrid ROM:
|
||||
|
||||
* it contains proprietary Commodore/Microsoft code
|
||||
* it contains LGPL 3 licensed Open ROMs code combined with code not available under compatible license
|
||||
@@ -21,7 +21,7 @@ Timing is no more strict than standard IEC protocol - I have checked using VICE
|
||||
|
||||
Detection happens after `OPEN` (0xF0 - 0xFF) or `REOPEN` (0x60 - 0x6F) IEC command is sent from the controller and is very simple.
|
||||
|
||||
The CIA2 port B has to be set for reading (interrupts for the port are disabled by writing $7F to $DD0D). The controller constantly reads (not sure if there is a countdown or timeout in the original DolphinDOS ROM, countdoown started from $20 seems more than enough) the CIA2 interrupt control and port B registers; when ICR reads $10 (again - not sure if just the bit is checked, or the whole register), bus controller assumes the receiver talks the DolphinDOS protocol.
|
||||
The CIA2 port B has to be set for reading (interrupts for the port are disabled by writing $7F to $DD0D). The controller constantly reads (not sure if there is a countdown or timeout in the original DolphinDOS ROM, countdown started from $20 seems more than enough) the CIA2 interrupt control and port B registers; when ICR reads $10 (again - not sure if just the bit is checked, or the whole register), bus controller assumes the receiver talks the DolphinDOS protocol.
|
||||
|
||||
Note: detection only works under ATN, should be performed before the controller performs a turnover to listener!
|
||||
|
||||
|
||||
@@ -39,12 +39,14 @@
|
||||
|
||||
;; #CONFIG# IEC YES
|
||||
;; #CONFIG# IEC_DOLPHINDOS YES
|
||||
;; #CONFIG# IEC_DOLPHINDOS_FAST YES
|
||||
;; #CONFIG# IEC_DOLPHINDOS_FAST NO
|
||||
;; #CONFIG# IEC_JIFFYDOS YES
|
||||
;; #CONFIG# IEC_JIFFYDOS_BLANK NO
|
||||
;; #CONFIG# IEC_BURST_CIA1 NO ; please keep disabled for now
|
||||
;; #CONFIG# IEC_BURST_CIA2 NO ; please keep disabled for now
|
||||
|
||||
;; #CONFIG# IEC_JD_TEST NO ; temporary setting, for JiffyDOS development
|
||||
|
||||
|
||||
; --- Tape deck configuration
|
||||
|
||||
|
||||
+1
-1
@@ -1,5 +1,5 @@
|
||||
|
||||
;; #CONFIG# ID $04 ; should be 1 byte, different for each config file!
|
||||
;; #CONFIG# ID $E0 ; should be 1 byte, different for each config file!
|
||||
|
||||
;
|
||||
; Please read CONFIG.md before modifying this file!
|
||||
|
||||
@@ -71,8 +71,8 @@
|
||||
;; #CONFIG# KEY_REPEAT_DEFAULT NO
|
||||
;; #CONFIG# KEY_REPEAT_ALWAYS NO
|
||||
;; #CONFIG# KEY_FAST_SCAN YES
|
||||
;; #CONFIG# JOY1_CURSOR YES
|
||||
;; #CONFIG# JOY2_CURSOR YES
|
||||
;; #CONFIG# JOY1_CURSOR NO
|
||||
;; #CONFIG# JOY2_CURSOR NO
|
||||
|
||||
;; #CONFIG# PROGRAMMABLE_KEYS YES
|
||||
|
||||
|
||||
@@ -0,0 +1,133 @@
|
||||
|
||||
;; #CONFIG# ID $11 ; should be 1 byte, different for each config file!
|
||||
|
||||
;
|
||||
; Please read CONFIG.md before modifying this file!
|
||||
;
|
||||
|
||||
; Idea:
|
||||
; - sane defaults for the Commodore 64/128 emulators
|
||||
; - use RetroRelplay cartridge image as a ROM extension
|
||||
; - do not enable features which are a significant compatibility risk
|
||||
|
||||
|
||||
|
||||
; --- Hardware platform and brand
|
||||
|
||||
;; #CONFIG# PLATFORM_COMMODORE_64 YES
|
||||
;; #CONFIG# ROM_CRT YES
|
||||
;; #CONFIG# BRAND_GENERIC YES
|
||||
|
||||
|
||||
; --- Processor instruction set
|
||||
|
||||
;; #CONFIG# CPU_MOS_6502 YES
|
||||
;; #CONFIG# CPU_DTV_6502 NO
|
||||
;; #CONFIG# CPU_RCW_65C02 NO
|
||||
;; #CONFIG# CPU_WDC_65C02 NO
|
||||
;; #CONFIG# CPU_WDC_65816 NO
|
||||
;; #CONFIG# CPU_CSG_65CE02 NO
|
||||
|
||||
|
||||
; --- Memory model
|
||||
|
||||
;; #CONFIG# MEMORY_MODEL_38K NO
|
||||
;; #CONFIG# MEMORY_MODEL_46K NO
|
||||
;; #CONFIG# MEMORY_MODEL_50K YES
|
||||
;; #CONFIG# MEMORY_MODEL_60K NO
|
||||
|
||||
|
||||
; --- IEC bus configuration
|
||||
|
||||
;; #CONFIG# IEC YES
|
||||
;; #CONFIG# IEC_DOLPHINDOS YES
|
||||
;; #CONFIG# IEC_DOLPHINDOS_FAST YES
|
||||
;; #CONFIG# IEC_JIFFYDOS YES
|
||||
;; #CONFIG# IEC_JIFFYDOS_BLANK YES
|
||||
|
||||
|
||||
; --- Tape deck configuration
|
||||
|
||||
;; #CONFIG# TAPE_NORMAL YES
|
||||
;; #CONFIG# TAPE_TURBO YES
|
||||
;; #CONFIG# TAPE_AUTODETECT YES
|
||||
;; #CONFIG# TAPE_NO_KEY_SENSE NO
|
||||
;; #CONFIG# TAPE_NO_MOTOR_CONTROL NO
|
||||
|
||||
|
||||
; --- Sound support
|
||||
|
||||
;; #CONFIG# SID_2ND_ADDRESS NO
|
||||
;; #CONFIG# SID_3RD_ADDRESS NO
|
||||
;; #CONFIG# SID_D4XX NO
|
||||
;; #CONFIG# SID_D5XX NO
|
||||
;; #CONFIG# SID_D6XX NO
|
||||
;; #CONFIG# SID_D7XX NO
|
||||
|
||||
|
||||
; --- Keyboard settings
|
||||
|
||||
;; #CONFIG# LEGACY_SCNKEY NO
|
||||
;; #CONFIG# KEYBOARD_C128 NO
|
||||
;; #CONFIG# KEYBOARD_C128_CAPS_LOCK NO
|
||||
;; #CONFIG# KEY_REPEAT_DEFAULT NO
|
||||
;; #CONFIG# KEY_REPEAT_ALWAYS NO
|
||||
;; #CONFIG# KEY_FAST_SCAN YES
|
||||
;; #CONFIG# JOY1_CURSOR NO
|
||||
;; #CONFIG# JOY2_CURSOR NO
|
||||
|
||||
;; #CONFIG# PROGRAMMABLE_KEYS YES
|
||||
|
||||
;; #CONFIG# KEYCMD_RUN "\5FL"
|
||||
|
||||
;; #CONFIG# KEYCMD_F1 "@8$"
|
||||
;; #CONFIG# KEYCMD_F2 "LOAD"
|
||||
;; #CONFIG# KEYCMD_F3 "@9$"
|
||||
;; #CONFIG# KEYCMD_F4 "RUN:"
|
||||
;; #CONFIG# KEYCMD_F5 "@10$"
|
||||
;; #CONFIG# KEYCMD_F6 NO
|
||||
;; #CONFIG# KEYCMD_F7 "@11$"
|
||||
;; #CONFIG# KEYCMD_F8 NO
|
||||
|
||||
;; #CONFIG# KEYCMD_HELP "LIST"
|
||||
|
||||
;; #CONFIG# KEYCMD_F9 NO
|
||||
;; #CONFIG# KEYCMD_F10 NO
|
||||
;; #CONFIG# KEYCMD_F11 NO
|
||||
;; #CONFIG# KEYCMD_F12 NO
|
||||
;; #CONFIG# KEYCMD_F13 NO
|
||||
;; #CONFIG# KEYCMD_F14 NO
|
||||
|
||||
|
||||
; --- Screen editor
|
||||
|
||||
;; #CONFIG# EDIT_STOPQUOTE YES
|
||||
;; #CONFIG# EDIT_TABULATORS NO
|
||||
|
||||
|
||||
; --- Software features
|
||||
|
||||
;; #CONFIG# PANIC_SCREEN YES
|
||||
;; #CONFIG# DOS_WEDGE YES
|
||||
;; #CONFIG# TAPE_WEDGE YES
|
||||
;; #CONFIG# TAPE_HEAD_ALIGN YES
|
||||
;; #CONFIG# BCD_SAFE_INTERRUPTS YES
|
||||
|
||||
|
||||
; --- Eye candy
|
||||
|
||||
;; #CONFIG# COLORS_BRAND YES
|
||||
;; #CONFIG# BANNER_SIMPLE NO
|
||||
;; #CONFIG# BANNER_FANCY YES
|
||||
;; #CONFIG# SHOW_FEATURES YES
|
||||
|
||||
|
||||
; --- Debug options
|
||||
|
||||
;; #CONFIG# DBG_STUBS_BRK NO
|
||||
;; #CONFIG# DBG_PRINTF NO
|
||||
|
||||
|
||||
; --- Other
|
||||
|
||||
;; #CONFIG# COMPRESSION_LVL_2 NO
|
||||
@@ -94,6 +94,8 @@
|
||||
|
||||
; --- Built-in DOS configuration
|
||||
|
||||
;; #CONFIG# CMDRDOS NO ; do not change, DOS is not implemented yet
|
||||
|
||||
;; #CONFIG# UNIT_SDCARD 0 ; do not change, DOS is not implemented yet
|
||||
;; #CONFIG# UNIT_FLOPPY 0 ; do not change, DOS is not implemented yet
|
||||
;; #CONFIG# UNIT_RAMDISK 0 ; do not change, DOS is not implemented yet
|
||||
|
||||
@@ -61,8 +61,8 @@
|
||||
;; #CONFIG# KEY_REPEAT_DEFAULT NO
|
||||
;; #CONFIG# KEY_REPEAT_ALWAYS NO
|
||||
;; #CONFIG# KEY_FAST_SCAN YES
|
||||
;; #CONFIG# JOY1_CURSOR YES
|
||||
;; #CONFIG# JOY2_CURSOR YES
|
||||
;; #CONFIG# JOY1_CURSOR NO
|
||||
;; #CONFIG# JOY2_CURSOR NO
|
||||
|
||||
;; #CONFIG# PROGRAMMABLE_KEYS YES
|
||||
|
||||
|
||||
@@ -0,0 +1,123 @@
|
||||
|
||||
;; #CONFIG# ID $13 ; should be 1 byte, different for each config file!
|
||||
|
||||
;
|
||||
; Please read CONFIG.md before modifying this file!
|
||||
;
|
||||
|
||||
; Idea:
|
||||
; - sane defaults for the Ultimate 64 FPGA computer
|
||||
; - use RetroRelplay cartridge image as a ROM extension
|
||||
; - do not enable features which are a significant compatibility risk
|
||||
|
||||
|
||||
|
||||
; --- Hardware platform and brand
|
||||
|
||||
;; #CONFIG# PLATFORM_COMMODORE_64 YES
|
||||
;; #CONFIG# MB_U64 YES
|
||||
;; #CONFIG# ROM_CRT YES
|
||||
|
||||
|
||||
; --- Memory model
|
||||
|
||||
;; #CONFIG# MEMORY_MODEL_38K NO
|
||||
;; #CONFIG# MEMORY_MODEL_46K NO
|
||||
;; #CONFIG# MEMORY_MODEL_50K YES
|
||||
;; #CONFIG# MEMORY_MODEL_60K NO
|
||||
|
||||
|
||||
; --- IEC bus configuration
|
||||
|
||||
;; #CONFIG# IEC YES
|
||||
;; #CONFIG# IEC_DOLPHINDOS YES
|
||||
;; #CONFIG# IEC_DOLPHINDOS_FAST YES
|
||||
;; #CONFIG# IEC_JIFFYDOS YES
|
||||
;; #CONFIG# IEC_JIFFYDOS_BLANK YES
|
||||
|
||||
|
||||
; --- Tape deck configuration
|
||||
|
||||
;; #CONFIG# TAPE_NORMAL YES
|
||||
;; #CONFIG# TAPE_TURBO YES
|
||||
;; #CONFIG# TAPE_AUTODETECT YES
|
||||
;; #CONFIG# TAPE_NO_KEY_SENSE NO
|
||||
;; #CONFIG# TAPE_NO_MOTOR_CONTROL NO
|
||||
|
||||
|
||||
; --- Sound support
|
||||
|
||||
;; #CONFIG# SID_2ND_ADDRESS NO
|
||||
;; #CONFIG# SID_3RD_ADDRESS NO
|
||||
;; #CONFIG# SID_D4XX YES
|
||||
;; #CONFIG# SID_D5XX YES
|
||||
;; #CONFIG# SID_D6XX NO
|
||||
;; #CONFIG# SID_D7XX NO
|
||||
|
||||
|
||||
; --- Keyboard settings
|
||||
|
||||
;; #CONFIG# LEGACY_SCNKEY NO
|
||||
;; #CONFIG# KEYBOARD_C128 NO
|
||||
;; #CONFIG# KEYBOARD_C128_CAPS_LOCK NO
|
||||
;; #CONFIG# KEY_REPEAT_DEFAULT NO
|
||||
;; #CONFIG# KEY_REPEAT_ALWAYS NO
|
||||
;; #CONFIG# KEY_FAST_SCAN YES
|
||||
;; #CONFIG# JOY1_CURSOR NO
|
||||
;; #CONFIG# JOY2_CURSOR NO
|
||||
|
||||
;; #CONFIG# PROGRAMMABLE_KEYS YES
|
||||
|
||||
;; #CONFIG# KEYCMD_RUN "\5FL"
|
||||
|
||||
;; #CONFIG# KEYCMD_F1 "@8$"
|
||||
;; #CONFIG# KEYCMD_F2 "LOAD"
|
||||
;; #CONFIG# KEYCMD_F3 "@9$"
|
||||
;; #CONFIG# KEYCMD_F4 "RUN:"
|
||||
;; #CONFIG# KEYCMD_F5 "@10$"
|
||||
;; #CONFIG# KEYCMD_F6 NO
|
||||
;; #CONFIG# KEYCMD_F7 "@11$"
|
||||
;; #CONFIG# KEYCMD_F8 NO
|
||||
|
||||
;; #CONFIG# KEYCMD_HELP "LIST"
|
||||
|
||||
;; #CONFIG# KEYCMD_F9 NO
|
||||
;; #CONFIG# KEYCMD_F10 NO
|
||||
;; #CONFIG# KEYCMD_F11 NO
|
||||
;; #CONFIG# KEYCMD_F12 NO
|
||||
;; #CONFIG# KEYCMD_F13 NO
|
||||
;; #CONFIG# KEYCMD_F14 NO
|
||||
|
||||
|
||||
; --- Screen editor
|
||||
|
||||
;; #CONFIG# EDIT_STOPQUOTE YES
|
||||
;; #CONFIG# EDIT_TABULATORS NO
|
||||
|
||||
|
||||
; --- Software features
|
||||
|
||||
;; #CONFIG# PANIC_SCREEN YES
|
||||
;; #CONFIG# DOS_WEDGE YES
|
||||
;; #CONFIG# TAPE_WEDGE YES
|
||||
;; #CONFIG# TAPE_HEAD_ALIGN YES
|
||||
;; #CONFIG# BCD_SAFE_INTERRUPTS YES
|
||||
|
||||
|
||||
; --- Eye candy
|
||||
|
||||
;; #CONFIG# COLORS_BRAND YES
|
||||
;; #CONFIG# BANNER_SIMPLE NO
|
||||
;; #CONFIG# BANNER_FANCY YES
|
||||
;; #CONFIG# SHOW_FEATURES YES
|
||||
|
||||
|
||||
; --- Debug options
|
||||
|
||||
;; #CONFIG# DBG_STUBS_BRK NO
|
||||
;; #CONFIG# DBG_PRINTF NO
|
||||
|
||||
|
||||
; --- Other
|
||||
|
||||
;; #CONFIG# COMPRESSION_LVL_2 NO
|
||||
@@ -24,7 +24,7 @@
|
||||
!if (counter > 1) { !error "Please select at most one CONFIG_MB_* option" }
|
||||
|
||||
!ifdef ROM_LAYOUT_M65 { !ifndef CONFIG_MB_M65 { !error "ROM layout requires CONFIG_MB_M65 option" } }
|
||||
!ifdef ROM_LAYOUT_U16 { !ifndef CONFIG_MB_U64 { !error "ROM layout requires CONFIG_MB_U64 option" } }
|
||||
!ifdef ROM_LAYOUT_U64 { !ifndef CONFIG_MB_U64 { !error "ROM layout requires CONFIG_MB_U64 option" } }
|
||||
|
||||
!ifdef CONFIG_MB_M65 { !ifndef ROM_LAYOUT_M65 { !error "CONFIG_MB_M65 can only be used with appropriate ROM layout" } }
|
||||
; !ifdef CONFIG_MB_U64 { !ifndef ROM_LAYOUT_U64 { !error "CONFIG_MB_U64 can only be used with appropriate ROM layout" } }
|
||||
@@ -51,6 +51,12 @@
|
||||
!error "Please select exactly one CONFIG_BRAND_* option"
|
||||
}
|
||||
|
||||
!ifdef CONFIG_ROM_CRT { !ifndef ROM_LAYOUT_CRT {
|
||||
!error "ROM_LAYOUT_CRT needs standard CONFIG_ROM_CRT set and vice-versa"
|
||||
}}
|
||||
!ifdef ROM_LAYOUT_CRT { !ifndef CONFIG_ROM_CRT {
|
||||
!error "ROM_LAYOUT_CRT needs standard CONFIG_ROM_CRT set and vice-versa"
|
||||
}}
|
||||
|
||||
|
||||
; Check that processor configuration is correct
|
||||
@@ -86,6 +92,9 @@
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
!ifdef CONFIG_MEMORY_MODEL_60K { !error "Do not use CONFIG_MEMORY_MODEL_60K options for MEGA65 motherboard" }
|
||||
}
|
||||
!ifdef ROM_LAYOUT_CRT {
|
||||
!ifdef CONFIG_MEMORY_MODEL_60K { !error "Do not use CONFIG_MEMORY_MODEL_60K options for CRT ROM layout" }
|
||||
}
|
||||
!ifdef CONFIG_PLATFORM_COMMANDER_X16 {
|
||||
!ifndef CONFIG_MEMORY_MODEL_38K { !error "Select CONFIG_MEMORY_MODEL_38K options for Commander X16 platform" }
|
||||
}
|
||||
@@ -241,6 +250,13 @@
|
||||
|
||||
|
||||
|
||||
; Check that internal DOS configuration is correct
|
||||
|
||||
!ifdef CONFIG_CMDRDOS { !ifndef CONFIG_MB_M65 {
|
||||
!error "CONFIG_CMDRDOS requires CONFIG_MB_M65"
|
||||
} }
|
||||
|
||||
|
||||
; Check that startup banner configuration is correct
|
||||
|
||||
!set counter = 0
|
||||
@@ -262,6 +278,13 @@
|
||||
;
|
||||
|
||||
|
||||
; Handle platform/mothjerboard configuration
|
||||
|
||||
|
||||
!ifdef PLATFORM_COMMODORE_64 { !ifndef CONFIG_MB_M65 { !ifndef CONFIG_MB_U64 {
|
||||
!set HAS_128_POSSIBILITY = 1
|
||||
} } }
|
||||
|
||||
|
||||
; Handle CPU configuration
|
||||
|
||||
@@ -415,12 +438,30 @@
|
||||
|
||||
|
||||
|
||||
; Handle non-LGPL3 code
|
||||
|
||||
!ifdef CONFIG_CMDRDOS { !set HAS_NOLGPL3_WARN = 1 }
|
||||
|
||||
|
||||
|
||||
; Determine if we need space-savings in BASIC code
|
||||
|
||||
!ifndef CONFIG_MB_M65 {
|
||||
!ifndef CONFIG_MB_M65 { !ifndef ROM_LAYOUT_CRT {
|
||||
!set HAS_SMALL_BASIC = 1
|
||||
} }
|
||||
|
||||
|
||||
|
||||
; Determine if it is OK to include tape autocalibration routines; they are too slow to be safely used at 1 MHz CPU speed
|
||||
|
||||
!ifdef HAS_TAPE {
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
!set HAS_TAPE_AUTOCALIBRATE = 1
|
||||
}
|
||||
}
|
||||
|
||||
; XXX adapt autocalibration to Ultimate64 once additional Kernal bank is available
|
||||
|
||||
|
||||
|
||||
; Defines for multi-segment ROMs
|
||||
@@ -429,4 +470,12 @@
|
||||
!ifdef SEGMENT_BASIC_0 { !set SEGMENT_M65_BASIC_0 = 1 }
|
||||
!ifdef SEGMENT_BASIC_1 { !set SEGMENT_M65_BASIC_1 = 1 }
|
||||
!ifdef SEGMENT_KERNAL_0 { !set SEGMENT_M65_KERNAL_0 = 1 }
|
||||
!ifdef SEGMENT_KERNAL_1 { !set SEGMENT_M65_KERNAL_1 = 1 }
|
||||
}
|
||||
|
||||
!ifdef ROM_LAYOUT_CRT {
|
||||
!ifdef SEGMENT_BASIC_0 { !set SEGMENT_CRT_BASIC_0 = 1 }
|
||||
!ifdef SEGMENT_BASIC_1 { !set SEGMENT_CRT_BASIC_1 = 1 }
|
||||
!ifdef SEGMENT_KERNAL_0 { !set SEGMENT_CRT_KERNAL_0 = 1 }
|
||||
!ifdef SEGMENT_KERNAL_1 { !set SEGMENT_CRT_KERNAL_1 = 1 }
|
||||
}
|
||||
@@ -71,6 +71,14 @@
|
||||
!addr VIC_CLKRATE = $D030 ; C128 only
|
||||
} }
|
||||
|
||||
!ifdef CONFIG_MB_U64 {
|
||||
|
||||
; Ultimate 64 registers
|
||||
|
||||
!addr U64_TURBOBIT = $D030 ; 0 = 1 MHz + badlines, 1 = settings from menu
|
||||
!addr U64_TURBOCTL = $D031 ; bit 0-3 = CPU speed (index), bit 7 = disable badlines, $FF = not available
|
||||
}
|
||||
|
||||
; SID registers
|
||||
|
||||
!addr __SID_BASE = $D400 ; base address of the chip
|
||||
|
||||
@@ -38,6 +38,13 @@
|
||||
!addr SD_ADDR = $D681 ; 4 bytes
|
||||
!addr SD_ERRCODE = $D6DA
|
||||
|
||||
; SD card sector buffer, $FFFD6E00
|
||||
|
||||
!set SD_SECBUF_0 = $00
|
||||
!set SD_SECBUF_1 = $6E
|
||||
!set SD_SECBUF_2 = $FD
|
||||
!set SD_SECBUF_3 = $0F
|
||||
|
||||
; DMAgic
|
||||
|
||||
!addr DMA_ADDRLSBTRIG = $D700
|
||||
@@ -59,4 +66,30 @@
|
||||
!set __SID_R2_OFFSET = $20 ; right SID 2, $D420
|
||||
!set __SID_L1_OFFSET = $40 ; left SID 1, $D440
|
||||
!set __SID_L2_OFFSET = $60 ; left SID 2, $D460
|
||||
|
||||
|
||||
|
||||
; SD card commands
|
||||
;
|
||||
; XXX command codes taken from XEMU emulator, to be updated when official documentation exists
|
||||
|
||||
!set CARD_CMD_RESET = $00 ; reset SD card
|
||||
!set CARD_CMD_RESET_FL = $10 ; reset with flags, XXX what's this?
|
||||
!set CARD_CMD_END_RESET = $01 ; end reset
|
||||
!set CARD_CMD_END_RESET_FL = $11 ; end reset with flags
|
||||
!set CARD_CMD_READ = $02 ; read sector
|
||||
!set CARD_CMD_WRITE = $03 ; write sector
|
||||
!set CARD_CMD_WRITE_1 = $04 ; multi-sector write, 1st sector
|
||||
!set CARD_CMD_WRITE_2 = $05 ; multi-sector write
|
||||
!set CARD_CMD_WRITE_3 = $06 ; multi-sector write, last sector
|
||||
!set CARD_CMD_FLUSH = $0C
|
||||
!set CARD_CMD_SDHC_OFF = $40 ; for older cores only?
|
||||
!set CARD_CMD_SDHC_ON = $41 ; for older cores only?
|
||||
; XXX $44, $45 - completely unclear to me
|
||||
!set CARD_CMD_MAP_BUF = $81
|
||||
!set CARD_CMD_UNMAP_BUF = $82
|
||||
!set CARD_CMD_FILL_ON = $83
|
||||
!set CARD_CMD_FILL_OFF = $84
|
||||
!set CARD_CMD_SELECT_INT = $C0 ; select internal slot
|
||||
!set CARD_CMD_SELECT_EXT = $C1 ; select external slot
|
||||
}
|
||||
@@ -121,7 +121,7 @@
|
||||
!ifndef CONFIG_LEGACY_SCNKEY {
|
||||
!addr BITTS = $B4 ; -- NOT IMPLEMENTED --
|
||||
}
|
||||
!addr NXTBIT = $B5 ; -- NOT IMPLEMENTED --
|
||||
!addr NXTBIT = $B5 ; -- NOT IMPLEMENTED -- [!] also used by tape routine to store CPU turbo settings
|
||||
!ifndef CONFIG_LEGACY_SCNKEY {
|
||||
!addr RODATA = $B6 ; -- NOT IMPLEMENTED --
|
||||
}
|
||||
@@ -310,11 +310,14 @@
|
||||
|
||||
!ifdef HAS_TAPE {
|
||||
|
||||
!ifdef HAS_TAPE_AUTOCALIBRATE {
|
||||
|
||||
!addr __normal_time_S = IRQTMP+0 ; duration of the short pulse
|
||||
!addr __normal_time_M = IRQTMP+1 ; duration of the medium pulse
|
||||
|
||||
!addr __turbo_half_S = IRQTMP+0 ; half-duration of the short pulse
|
||||
!addr __turbo_half_L = IRQTMP+1 ; half-duration of the long pulse
|
||||
}
|
||||
|
||||
!addr __pulse_threshold = SVXT ; pulse classification threshold
|
||||
!addr __pulse_threshold_ML = SYNO ; M/L pulse classification threshold, for normal only
|
||||
|
||||
+13
-2
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_0 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_0 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE-OFFSET 2000
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
@@ -29,11 +30,21 @@
|
||||
|
||||
;; #ALIAS# SELDEV = KERNAL_0.SELDEV
|
||||
|
||||
;
|
||||
; MEGA65 specific parts
|
||||
;
|
||||
|
||||
;; #ALIAS# map_end = KERNAL_0.map_end
|
||||
;; #ALIAS# map_NORMAL = KERNAL_0.map_NORMAL
|
||||
;; #ALIAS# map_BASIC_1 = KERNAL_0.map_BASIC_1
|
||||
|
||||
;; #ALIAS# M65_MODEGET = KERNAL_0.M65_MODEGET
|
||||
;; #ALIAS# M65_MODESET = KERNAL_0.M65_MODESET
|
||||
;; #ALIAS# M65_SLOW = KERNAL_0.M65_SLOW
|
||||
;; #ALIAS# M65_FAST = KERNAL_0.M65_FAST
|
||||
;; #ALIAS# M65_SETWIN_Y = KERNAL_0.M65_SETWIN_Y
|
||||
|
||||
;
|
||||
; Ultimate 64 specific parts
|
||||
;
|
||||
|
||||
;; #ALIAS# U64_SLOW = KERNAL_0.U64_SLOW
|
||||
;; #ALIAS# U64_FAST = KERNAL_0.U64_FAST
|
||||
@@ -1,6 +1,7 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE-OFFSET 2000
|
||||
;; #LAYOUT# * BASIC_0 #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE-FLOAT
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE-FLOAT
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -1,11 +0,0 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
|
||||
packed_freq_keywords_02:
|
||||
|
||||
+PUT_PACKED_FREQ_keywords_02
|
||||
}
|
||||
@@ -1,12 +0,0 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
|
||||
packed_freq_keywords_03:
|
||||
|
||||
+PUT_PACKED_FREQ_keywords_03
|
||||
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
packed_freq_keywords_04:
|
||||
|
||||
+PUT_PACKED_FREQ_keywords_04
|
||||
@@ -0,0 +1,7 @@
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
packed_freq_keywords_06:
|
||||
|
||||
+PUT_PACKED_FREQ_keywords_06
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -13,11 +14,19 @@
|
||||
!pet "open roms "
|
||||
+CONFIG_BRAND_CUSTOM
|
||||
} else ifdef CONFIG_BRAND_GENERIC {
|
||||
!pet "open roms generic build"
|
||||
!ifdef CONFIG_ROM_CRT {
|
||||
!pet "open roms crt generic build"
|
||||
} else {
|
||||
!pet "open roms generic build"
|
||||
}
|
||||
} else ifdef CONFIG_BRAND_TESTING {
|
||||
!pet "open roms testing build"
|
||||
} else ifdef CONFIG_BRAND_ULTIMATE_64 {
|
||||
!pet "open roms for ultimate 64"
|
||||
} else ifdef CONFIG_MB_U64 {
|
||||
!ifdef CONFIG_ROM_CRT {
|
||||
!pet "open roms crt for ultimate 64"
|
||||
} else {
|
||||
!pet "open roms for ultimate 64"
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -37,15 +46,33 @@ startup_banner:
|
||||
|
||||
rainbow_logo:
|
||||
|
||||
!set SET_COLOR_0 = $05
|
||||
!set SET_COLOR_1 = $1C
|
||||
!set SET_COLOR_2 = $9E
|
||||
!set SET_COLOR_3 = $1E
|
||||
!set SET_COLOR_4 = $9F
|
||||
!set BANNER_COLOR_0 = $05
|
||||
!set BANNER_COLOR_1 = $1C
|
||||
!set BANNER_COLOR_2 = $81
|
||||
!set BANNER_COLOR_3 = $9E
|
||||
!set BANNER_COLOR_4 = $1E
|
||||
!set BANNER_COLOR_5 = $9F
|
||||
|
||||
!ifdef CONFIG_MB_U64 {
|
||||
|
||||
!byte BANNER_COLOR_1, $B8, $B8, $20, $20, $B8, $B8, $0D
|
||||
!byte BANNER_COLOR_2, $B8, $B8, $20, $20, $B8, $B8, $0D
|
||||
!byte BANNER_COLOR_3, $B8, $B8, $20, $20, $B8, $B8, $0D
|
||||
!byte BANNER_COLOR_4, $B8, $B8, $20, $20, $B8, $B8, $0D
|
||||
!byte $20, BANNER_COLOR_5, $B8, $B8, $B8, $B8, $0D
|
||||
!byte BANNER_COLOR_0, $00
|
||||
|
||||
!set BANNER_SPACING = $09
|
||||
|
||||
} else {
|
||||
|
||||
!byte BANNER_COLOR_1, $12, $A4, $A4, $A4, $A4, $A4, $A4, $A4, $0D
|
||||
!byte BANNER_COLOR_3, $12, $A4, $A4, $A4, $A4, $A4, $A4, $0D
|
||||
!byte BANNER_COLOR_4, $12, $A4, $A4, $A4, $A4, $A4, $0D
|
||||
!byte BANNER_COLOR_5, $12, $A4, $A4, $A4, $A4, $92
|
||||
!byte BANNER_COLOR_0, $00
|
||||
|
||||
!set BANNER_SPACING = $0A
|
||||
}
|
||||
|
||||
!byte SET_COLOR_1, $12, $A4, $A4, $A4, $A4, $A4, $A4, $A4, $0D
|
||||
!byte SET_COLOR_2, $12, $A4, $A4, $A4, $A4, $A4, $A4, $0D
|
||||
!byte SET_COLOR_3, $12, $A4, $A4, $A4, $A4, $A4, $0D
|
||||
!byte SET_COLOR_4, $12, $A4, $A4, $A4, $A4, $92
|
||||
!byte SET_COLOR_0, $00
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
|
||||
!ifdef HAS_NOLGPL3_WARN {
|
||||
|
||||
str_nonlgpl3_warn:
|
||||
|
||||
!byte $0D, $0D, $0D, $0D
|
||||
!pet "build contains non-lgpl3 code"
|
||||
!byte $0D
|
||||
!pet " *** do not distribute ***"
|
||||
!byte $0D, $0D, $00
|
||||
}
|
||||
@@ -6,42 +6,42 @@
|
||||
; Jumptable for BASIC commands with tokens prefixed by $01
|
||||
;
|
||||
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
!set ITEM_01 = cmd_slow
|
||||
!set ITEM_02 = cmd_fast
|
||||
!set ITEM_03 = cmd_old
|
||||
|
||||
!set ITEM_00 = M65_SLOW
|
||||
!set ITEM_01 = M65_FAST
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
|
||||
} else {
|
||||
|
||||
!set ITEM_00 = cmd_slow
|
||||
!set ITEM_01 = cmd_fast
|
||||
!set ITEM_04 = cmd_clear
|
||||
!set ITEM_05 = varstr_garbage_collect ; cmd_dispose
|
||||
!set ITEM_06 = cmd_merge
|
||||
!set ITEM_07 = cmd_bload
|
||||
!set ITEM_08 = cmd_bsave
|
||||
!set ITEM_09 = cmd_bverify
|
||||
!set ITEM_0A = cmd_cold
|
||||
!set ITEM_0B = cmd_mem
|
||||
|
||||
}
|
||||
|
||||
!set ITEM_02 = cmd_old
|
||||
|
||||
; NOTE! These commands are temporarily placed here, they should be a part of list 02!
|
||||
|
||||
!set ITEM_03 = cmd_merge
|
||||
|
||||
!set ITEM_04 = cmd_bload
|
||||
!set ITEM_05 = cmd_bsave
|
||||
!set ITEM_06 = cmd_bverify
|
||||
|
||||
!set ITEM_07 = cmd_clear
|
||||
!set ITEM_08 = varstr_garbage_collect ; cmd_dispose
|
||||
|
||||
|
||||
!ifndef HAS_OPCODES_65C02 {
|
||||
|
||||
command_01_jumptable_lo:
|
||||
|
||||
!byte <(ITEM_00-1), <(ITEM_01-1), <(ITEM_02-1), <(ITEM_03-1), <(ITEM_04-1), <(ITEM_05-1), <(ITEM_06-1), <(ITEM_07-1), <(ITEM_08-1)
|
||||
!byte <(ITEM_01-1), <(ITEM_02-1), <(ITEM_03-1)
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
!byte <(ITEM_04-1), <(ITEM_05-1), <(ITEM_06-1), <(ITEM_07-4), <(ITEM_08-1), <(ITEM_09-1), <(ITEM_0A-1), <(ITEM_0B-1)
|
||||
}
|
||||
|
||||
command_01_jumptable_hi:
|
||||
|
||||
!byte >(ITEM_00-1), >(ITEM_01-1), >(ITEM_02-1), >(ITEM_03-1), >(ITEM_04-1), >(ITEM_05-1), >(ITEM_06-1), >(ITEM_07-1), >(ITEM_08-1)
|
||||
!byte >(ITEM_01-1), >(ITEM_02-1), >(ITEM_03-1)
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
!byte >(ITEM_04-1), >(ITEM_05-1), >(ITEM_06-1), >(ITEM_07-4), >(ITEM_08-1), >(ITEM_09-1), >(ITEM_0A-1), >(ITEM_0B-1)
|
||||
}
|
||||
|
||||
} else { ; HAS_OPCODES_65C02
|
||||
|
||||
@@ -49,5 +49,10 @@ command_01_jumptable:
|
||||
|
||||
; Note: 65C02 has the page boundary vector bug fixed!
|
||||
|
||||
!word ITEM_00, ITEM_01, ITEM_02, ITEM_03, ITEM_04, ITEM_05, ITEM_06, ITEM_07, ITEM_08
|
||||
!word ITEM_01, ITEM_02, ITEM_03
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
!word ITEM_04, ITEM_05, ITEM_06, ITEM_07, ITEM_08, ITEM_09, ITEM_0A, ITEM_0B
|
||||
}
|
||||
|
||||
}
|
||||
+3
@@ -3,6 +3,8 @@
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
|
||||
cmd_bverify:
|
||||
|
||||
; LOAD and VERIFY are very similar, from BASIC perspective there is almost no difference;
|
||||
@@ -40,3 +42,4 @@ cmd_bload:
|
||||
; Execute next statement
|
||||
|
||||
rts
|
||||
}
|
||||
@@ -3,6 +3,8 @@
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
|
||||
cmd_bsave:
|
||||
|
||||
; Set default device and secondary address
|
||||
@@ -40,3 +42,4 @@ cmd_bsave:
|
||||
; Perform SAVE - reuse regular command
|
||||
|
||||
jmp cmd_save_do
|
||||
}
|
||||
@@ -3,8 +3,11 @@
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
|
||||
cmd_clear:
|
||||
|
||||
; XXX in the future add separate implementation for graphics screen
|
||||
|
||||
jmp clear_screen
|
||||
}
|
||||
File renamed without changes.
File renamed without changes.
@@ -5,21 +5,47 @@
|
||||
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
|
||||
; NOTE: In native mode the system should not run at 1 MHz speed - it's dangerous,
|
||||
; as it uses compound instructions, which are not safe in 1MHz mode
|
||||
|
||||
cmd_slow: ; set CPU speed to 1 MHz
|
||||
|
||||
jsr helper_ensure_legacy_mode
|
||||
|
||||
lda #$40
|
||||
bra cmd_slow_fast_common
|
||||
|
||||
; FALLTROUGH
|
||||
|
||||
cmd_fast: ; set CPU speed to 40 MHz
|
||||
|
||||
jsr helper_ensure_legacy_mode
|
||||
|
||||
lda #$41
|
||||
|
||||
; FALLTROUGH
|
||||
|
||||
cmd_slow_fast_common:
|
||||
|
||||
sta CPU_D6510
|
||||
rts
|
||||
|
||||
|
||||
; For MEGA65 Kernal routines are called directly
|
||||
|
||||
} else ifdef CONFIG_MB_U64 {
|
||||
|
||||
; Command implementation for Ultimate 64 - SuperCPU compatible way should be enough
|
||||
; Command implementation for Ultimate 64
|
||||
|
||||
cmd_slow:
|
||||
|
||||
sta SCPU_SPEED_NORMAL
|
||||
rts
|
||||
sta SCPU_SPEED_NORMAL ; any value will do
|
||||
jmp U64_SLOW ; to set turbo in $D031 too
|
||||
|
||||
cmd_fast:
|
||||
|
||||
sta SCPU_SPEED_TURBO
|
||||
rts
|
||||
sta SCPU_SPEED_TURBO ; any value will do
|
||||
jmp U64_FAST ; to set turbo in $D031 too
|
||||
|
||||
} else ifdef CONFIG_PLATFORM_COMMODORE_64 {
|
||||
|
||||
|
||||
@@ -1,38 +1,50 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# M65 * #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# * BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
|
||||
; First perform the garbage collection - to be able to determine real values
|
||||
|
||||
!ifdef SEGMENT_M65_BASIC_0 {
|
||||
|
||||
cmd_mem:
|
||||
|
||||
; First perform the garbage collection - to be able to determine real values
|
||||
|
||||
jsr varstr_garbage_collect
|
||||
|
||||
|
||||
jsr map_BASIC_1
|
||||
jsr (VB1__cmd_mem_cont)
|
||||
jmp map_NORMAL
|
||||
|
||||
} else ifdef SEGMENT_CRT_BASIC_0 {
|
||||
|
||||
cmd_mem:
|
||||
|
||||
jsr varstr_garbage_collect
|
||||
|
||||
jsr map_BASIC_1
|
||||
jsr JB1__cmd_mem_cont
|
||||
jmp map_NORMAL
|
||||
|
||||
} else ifdef SEGMENT_M65_BASIC_1 {
|
||||
|
||||
cmd_mem_cont:
|
||||
|
||||
} else ifdef SEGMENT_CRT_BASIC_1 {
|
||||
|
||||
cmd_mem_cont:
|
||||
|
||||
} else {
|
||||
|
||||
cmd_mem:
|
||||
|
||||
; First perform the garbage collection - to be able to determine real values
|
||||
|
||||
jsr varstr_garbage_collect
|
||||
}
|
||||
|
||||
!ifndef SEGMENT_M65_BASIC_0 {
|
||||
!ifndef SEGMENT_BASIC_0 {
|
||||
|
||||
; Print header
|
||||
|
||||
@@ -3,6 +3,8 @@
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
|
||||
cmd_merge:
|
||||
|
||||
lda #$00 ; mark operation as LOAD
|
||||
@@ -45,3 +47,4 @@ cmd_merge_no_error:
|
||||
; Relink loaded program, clear variables, execute next statement
|
||||
|
||||
jmp update_LINKPRG_VARTAB_do_clr
|
||||
}
|
||||
+7
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# * BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
@@ -19,6 +20,12 @@ helper_ask_if_sure:
|
||||
jsr (VB1__helper_ask_if_sure)
|
||||
jmp map_NORMAL
|
||||
|
||||
} else ifdef SEGMENT_CRT_BASIC_0 {
|
||||
|
||||
jsr map_BASIC_1
|
||||
jsr JB1__helper_ask_if_sure
|
||||
jmp map_NORMAL
|
||||
|
||||
} else {
|
||||
|
||||
; First check, if we are in direct mode,; if not, do not ask
|
||||
+3
@@ -7,6 +7,8 @@
|
||||
;
|
||||
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
|
||||
helper_bload_fetch_address:
|
||||
|
||||
jsr injest_comma
|
||||
@@ -20,3 +22,4 @@ helper_bload_fetch_address:
|
||||
ldy LINNUM+1
|
||||
|
||||
rts
|
||||
}
|
||||
+3
@@ -7,6 +7,8 @@
|
||||
;
|
||||
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
|
||||
helper_bload_fetch_filename:
|
||||
|
||||
; Fetch the file name
|
||||
@@ -24,3 +26,4 @@ helper_bload_fetch_filename:
|
||||
sta FNLEN
|
||||
@1:
|
||||
rts
|
||||
}
|
||||
@@ -0,0 +1,10 @@
|
||||
;; #LAYOUT# M65 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
helper_ensure_legacy_mode:
|
||||
|
||||
jsr M65_MODEGET
|
||||
+bcc do_LEGACY_MODE_ONLY_error
|
||||
|
||||
rts
|
||||
+1
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
+1
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
+1
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
@@ -1,44 +0,0 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# * BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
;
|
||||
; Jumptable for BASIC commands with tokens prefixed by $02
|
||||
;
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
|
||||
; NOTE! These commands are temporarily placed in list 01!
|
||||
|
||||
; cmd_merge,
|
||||
|
||||
; cmd_bload,
|
||||
; cmd_bsave,
|
||||
; cmd_bverify,
|
||||
|
||||
; cmd_clear,
|
||||
; varstr_garbage_collect, ; cmd_dispose
|
||||
|
||||
!set ITEM_00 = cmd_cold
|
||||
!set ITEM_01 = cmd_mem
|
||||
!set ITEM_02 = cmd_sysinfo
|
||||
|
||||
|
||||
!ifndef HAS_OPCODES_65C02 {
|
||||
|
||||
command_02_jumptable_lo:
|
||||
|
||||
!byte <(ITEM_00-1), <(ITEM_01-1), <(ITEM_02-1)
|
||||
|
||||
command_02_jumptable_hi:
|
||||
|
||||
!byte >(ITEM_00-1), >(ITEM_01-1), >(ITEM_02-1)
|
||||
|
||||
} else { ; HAS_OPCODES_65C02
|
||||
|
||||
command_02_jumptable:
|
||||
|
||||
; Note: 65C02 has the page boundary vector bug fixed!
|
||||
|
||||
!word ITEM_00, ITEM_01, ITEM_02
|
||||
} }
|
||||
@@ -1,15 +0,0 @@
|
||||
;; #LAYOUT# M65 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
;
|
||||
; Jumptable for BASIC commands with tokens prefixed by $03
|
||||
;
|
||||
|
||||
!set ITEM_00 = cmd_rem ; XXX just for testing
|
||||
|
||||
|
||||
command_03_jumptable:
|
||||
|
||||
; Note: 65C02 has the page boundary vector bug fixed!
|
||||
|
||||
!word ITEM_00
|
||||
@@ -0,0 +1,29 @@
|
||||
;; #LAYOUT# M65 * #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
;
|
||||
; Jumptable for BASIC commands with tokens prefixed by $04
|
||||
;
|
||||
|
||||
!set ITEM_01 = cmd_sysinfo
|
||||
|
||||
|
||||
|
||||
!ifndef HAS_OPCODES_65C02 {
|
||||
|
||||
command_04_jumptable_lo:
|
||||
|
||||
!byte <(ITEM_01-1)
|
||||
|
||||
command_04_jumptable_hi:
|
||||
|
||||
!byte >(ITEM_01-1)
|
||||
|
||||
} else { ; HAS_OPCODES_65C02
|
||||
|
||||
command_04_jumptable:
|
||||
|
||||
; Note: 65C02 has the page boundary vector bug fixed!
|
||||
|
||||
!word ITEM_01
|
||||
}
|
||||
File renamed without changes.
@@ -0,0 +1,28 @@
|
||||
;; #LAYOUT# M65 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
;
|
||||
; Jumptable for BASIC commands with tokens prefixed by $03
|
||||
;
|
||||
|
||||
!set ITEM_01 = do_NOT_IMPLEMENTED_error ; just for testing
|
||||
|
||||
|
||||
!ifndef HAS_OPCODES_65C02 {
|
||||
|
||||
function_06_jumptable_lo:
|
||||
|
||||
!byte <(ITEM_01-1)
|
||||
|
||||
function_06_jumptable_hi:
|
||||
|
||||
!byte >(ITEM_01-1)
|
||||
|
||||
} else { ; HAS_OPCODES_65C02
|
||||
|
||||
function_06_jumptable:
|
||||
|
||||
; Note: 65C02 has the page boundary vector bug fixed!
|
||||
|
||||
!word ITEM_01
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
;; #LAYOUT# CRT BASIC_0 #TAKE-FLOAT
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
;
|
||||
; Definitions for communication with cartridge segment BASIC_1 from BASIC_0
|
||||
;
|
||||
|
||||
|
||||
!ifdef SEGMENT_BASIC_0 {
|
||||
|
||||
|
||||
; Label definitions
|
||||
|
||||
!addr JB1__INITMSG = $8000 + 3 * 0
|
||||
!addr JB1__LINKPRG = $8000 + 3 * 1
|
||||
!addr JB1__tokenise_line = $8000 + 3 * 2
|
||||
!addr JB1__list_single_line = $8000 + 3 * 3
|
||||
!addr JB1__print_packed_error = $8000 + 3 * 4
|
||||
!addr JB1__print_packed_misc_str = $8000 + 3 * 5
|
||||
!addr JB1__do_new = $8000 + 3 * 6
|
||||
!addr JB1__do_clr = $8000 + 3 * 7
|
||||
!addr JB1__do_restore = $8000 + 3 * 8
|
||||
!addr JB1__cmd_mem_cont = $8000 + 3 * 9
|
||||
!addr JB1__prepare_direct_execution = $8000 + 3 * 10
|
||||
!addr JB1__helper_ask_if_sure = $8000 + 3 * 11
|
||||
|
||||
!ifdef CONFIG_DOS_WEDGE {
|
||||
!addr JB1__wedge_dos = $8000 + 3 * 12
|
||||
}
|
||||
|
||||
} else {
|
||||
|
||||
; Jump table (Open ROMs private!)
|
||||
|
||||
jmp INITMSG
|
||||
jmp LINKPRG
|
||||
jmp tokenise_line
|
||||
jmp list_single_line
|
||||
jmp print_packed_error
|
||||
jmp print_packed_misc_str
|
||||
jmp do_new
|
||||
jmp do_clr
|
||||
jmp do_restore
|
||||
jmp cmd_mem_cont
|
||||
jmp prepare_direct_execution
|
||||
jmp helper_ask_if_sure
|
||||
|
||||
!ifdef CONFIG_DOS_WEDGE {
|
||||
jmp wedge_dos
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -0,0 +1 @@
|
||||
This particular address is not for interoperability - we had to choose some fixed location for the extended ROM jumptable, beginning of the mapped memory block is just sane.
|
||||
@@ -0,0 +1,41 @@
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
;; #IMPORT# BASIC_0 = BASIC_0_combined.sym
|
||||
;; #IMPORT# KERNAL_0 = KERNAL_0_combined.sym
|
||||
|
||||
;
|
||||
; Definitions for calling segments BASIC_0 and KERNAL_0 routines from BASIC_1
|
||||
;
|
||||
|
||||
;; #ALIAS# peek_via_OLDTXT = BASIC_0.proxy_B1_peek_via_OLDTXT
|
||||
;; #ALIAS# poke_via_OLDTXT = BASIC_0.proxy_B1_poke_via_OLDTXT
|
||||
;; #ALIAS# JCHROUT = BASIC_0.proxy_B1_JCHROUT
|
||||
;; #ALIAS# JCLALL = BASIC_0.proxy_B1_JCLALL
|
||||
;; #ALIAS# plot_set = BASIC_0.proxy_B1_plot_set
|
||||
|
||||
;; #ALIAS# JCLOSE = BASIC_0.proxy_B1_JCLOSE
|
||||
;; #ALIAS# JOPEN = BASIC_0.proxy_B1_JOPEN
|
||||
;; #ALIAS# JMEMTOP = KERNAL_0.JMEMTOP
|
||||
;; #ALIAS# JSETFLS = KERNAL_0.JSETFLS
|
||||
;; #ALIAS# JSETNAM = KERNAL_0.JSETNAM
|
||||
;; #ALIAS# JGETIN = KERNAL_0.JGETIN
|
||||
;; #ALIAS# JCHKIN = BASIC_0.proxy_B1_JCHKIN
|
||||
;; #ALIAS# JCHRIN = BASIC_0.proxy_B1_JCHRIN
|
||||
;; #ALIAS# JREADST = KERNAL_0.JREADST
|
||||
;; #ALIAS# JSCREEN = KERNAL_0.JSCREEN
|
||||
;; #ALIAS# SELDEV = KERNAL_0.SELDEV
|
||||
;; #ALIAS# init_oldtxt = BASIC_0.init_oldtxt
|
||||
;; #ALIAS# tmpstr_free_all_reset = BASIC_0.tmpstr_free_all_reset
|
||||
;; #ALIAS# print_hex_byte = BASIC_0.proxy_B1_print_hex_byte
|
||||
;; #ALIAS# print_integer = BASIC_0.proxy_B1_print_integer
|
||||
;; #ALIAS# print_return = BASIC_0.proxy_B1_print_return
|
||||
;; #ALIAS# print_space = BASIC_0.proxy_B1_print_space
|
||||
;; #ALIAS# print_features = BASIC_0.proxy_B1_print_features
|
||||
;; #ALIAS# do_error_fetch = BASIC_0.do_error_fetch
|
||||
;; #ALIAS# do_basic_error = BASIC_0.do_basic_error
|
||||
;; #ALIAS# str_rev_question = BASIC_0.str_rev_question
|
||||
;; #ALIAS# fetch_character = BASIC_0.proxy_B1_fetch_character
|
||||
;; #ALIAS# fetch_character_skip_spaces = BASIC_0.proxy_B1_fetch_character_skip_spaces
|
||||
;; #ALIAS# fetch_uint8 = BASIC_0.proxy_B1_fetch_uint8
|
||||
;; #ALIAS# shell_main_loop = BASIC_0.proxy_B1_shell_main_loop
|
||||
@@ -0,0 +1,130 @@
|
||||
;; #LAYOUT# CRT BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
;
|
||||
; Proxies for calling segment BASIC_0 and KERNAL_0 routines from BASIC_1
|
||||
;
|
||||
|
||||
proxy_B1_peek_via_OLDTXT:
|
||||
|
||||
jsr map_NORMAL
|
||||
|
||||
!ifdef CONFIG_MEMORY_MODEL_60K {
|
||||
!error "not implemented"
|
||||
} else ifdef CONFIG_MEMORY_MODEL_46K_OR_50K {
|
||||
jsr peek_under_roms_via_OLDTXT
|
||||
cmp #$00
|
||||
} else { ; CONFIG_MEMORY_MODEL_38K
|
||||
lda (OLDTXT),y
|
||||
}
|
||||
jmp map_BASIC_1 ; do not do 'bra' - we want this one as fast as possible
|
||||
|
||||
|
||||
proxy_B1_poke_via_OLDTXT:
|
||||
|
||||
jsr map_NORMAL
|
||||
!ifdef CONFIG_MEMORY_MODEL_60K {
|
||||
!error "not implemented"
|
||||
} else { ; CONFIG_MEMORY_MODEL_38K || CONFIG_MEMORY_MODEL_46K || CONFIG_MEMORY_MODEL_50K
|
||||
sta (OLDTXT),y
|
||||
}
|
||||
|
||||
jmp map_BASIC_1
|
||||
|
||||
|
||||
proxy_B1_JCLALL:
|
||||
|
||||
jsr map_NORMAL
|
||||
jsr JCLALL
|
||||
jmp map_BASIC_1
|
||||
|
||||
|
||||
!ifdef CONFIG_DOS_WEDGE {
|
||||
|
||||
proxy_B1_JCLOSE:
|
||||
|
||||
jsr map_NORMAL
|
||||
jsr JCLOSE
|
||||
jmp map_BASIC_1
|
||||
|
||||
proxy_B1_JOPEN:
|
||||
|
||||
jsr map_NORMAL
|
||||
jsr JOPEN
|
||||
jmp map_BASIC_1
|
||||
}
|
||||
|
||||
proxy_B1_JCHKIN:
|
||||
|
||||
jsr map_NORMAL
|
||||
jsr JCHKIN
|
||||
jmp map_BASIC_1
|
||||
|
||||
proxy_B1_JCHRIN:
|
||||
|
||||
jsr map_NORMAL
|
||||
jsr JCHRIN
|
||||
jmp map_BASIC_1
|
||||
|
||||
proxy_B1_JCHROUT:
|
||||
|
||||
jsr map_NORMAL
|
||||
jsr JCHROUT
|
||||
jmp map_BASIC_1
|
||||
|
||||
proxy_B1_print_hex_byte:
|
||||
|
||||
jsr map_NORMAL
|
||||
jsr print_hex_byte
|
||||
jmp map_BASIC_1
|
||||
|
||||
proxy_B1_print_integer:
|
||||
|
||||
jsr map_NORMAL
|
||||
jsr print_integer
|
||||
jmp map_BASIC_1
|
||||
|
||||
proxy_B1_print_return:
|
||||
|
||||
jsr map_NORMAL
|
||||
jsr print_return
|
||||
jmp map_BASIC_1
|
||||
|
||||
proxy_B1_print_space:
|
||||
|
||||
jsr map_NORMAL
|
||||
jsr print_space
|
||||
jmp map_BASIC_1
|
||||
|
||||
proxy_B1_plot_set:
|
||||
|
||||
jsr map_NORMAL
|
||||
jsr plot_set
|
||||
jmp map_BASIC_1
|
||||
|
||||
!ifdef CONFIG_DOS_WEDGE {
|
||||
|
||||
proxy_B1_fetch_character:
|
||||
|
||||
jsr map_NORMAL
|
||||
jsr fetch_character
|
||||
jmp map_BASIC_1
|
||||
|
||||
proxy_B1_fetch_character_skip_spaces:
|
||||
|
||||
jsr map_NORMAL
|
||||
jsr fetch_character_skip_spaces
|
||||
jmp map_BASIC_1
|
||||
|
||||
proxy_B1_fetch_uint8:
|
||||
|
||||
jsr map_NORMAL
|
||||
jsr fetch_uint8
|
||||
jmp map_BASIC_1
|
||||
|
||||
proxy_B1_shell_main_loop:
|
||||
|
||||
jsr map_NORMAL
|
||||
jmp shell_main_loop
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
This particular address is not for interoperability - we had to choose some fixed location for the extended ROM jumptable, beginning of the mapped memory block is just sane.
|
||||
@@ -1,4 +1,6 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_0 #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE-FLOAT
|
||||
;; #LAYOUT# M65 BASIC_0 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE-FLOAT
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE-OFFSET 2000
|
||||
@@ -19,6 +21,12 @@ LINKPRG:
|
||||
jsr (VB1__LINKPRG)
|
||||
jmp map_NORMAL
|
||||
|
||||
} else ifdef SEGMENT_CRT_BASIC_0 {
|
||||
|
||||
jsr map_BASIC_1
|
||||
jsr JB1__LINKPRG
|
||||
jmp map_NORMAL
|
||||
|
||||
} else {
|
||||
|
||||
; Start by getting pointer to the first line
|
||||
@@ -30,6 +38,8 @@ linkprg_loop:
|
||||
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
jsr peek_via_OLDTXT
|
||||
} else ifdef ROM_LAYOUT_CRT {
|
||||
jsr peek_via_OLDTXT
|
||||
} else ifdef CONFIG_MEMORY_MODEL_60K {
|
||||
ldx #<OLDTXT+0
|
||||
jsr peek_under_roms
|
||||
@@ -54,6 +64,8 @@ linkprg_end_of_line_search:
|
||||
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
jsr peek_via_OLDTXT
|
||||
} else ifdef ROM_LAYOUT_CRT {
|
||||
jsr peek_via_OLDTXT
|
||||
} else ifdef CONFIG_MEMORY_MODEL_60K {
|
||||
ldx #<OLDTXT+0
|
||||
jsr peek_under_roms
|
||||
@@ -90,6 +102,8 @@ linkprg_end_of_line_search:
|
||||
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
jsr poke_via_OLDTXT
|
||||
} else ifdef ROM_LAYOUT_CRT {
|
||||
jsr poke_via_OLDTXT
|
||||
} else ifdef CONFIG_MEMORY_MODEL_60K {
|
||||
ldx #<OLDTXT+0
|
||||
jsr poke_under_roms
|
||||
@@ -104,6 +118,8 @@ linkprg_end_of_line_search:
|
||||
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
jsr poke_via_OLDTXT
|
||||
} else ifdef ROM_LAYOUT_CRT {
|
||||
jsr poke_via_OLDTXT
|
||||
} else ifdef CONFIG_MEMORY_MODEL_60K {
|
||||
jsr poke_under_roms
|
||||
} else {
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# M65 * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_0 #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_0 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -19,6 +22,12 @@ tokenise_line:
|
||||
jsr (VB1__tokenise_line)
|
||||
jmp map_NORMAL
|
||||
|
||||
} else ifdef SEGMENT_CRT_BASIC_0 {
|
||||
|
||||
jsr map_BASIC_1
|
||||
jsr JB1__tokenise_line
|
||||
jmp map_NORMAL
|
||||
|
||||
} else {
|
||||
|
||||
; Initialize variables
|
||||
@@ -83,26 +92,23 @@ tokenise_line_loop:
|
||||
jsr tk_search
|
||||
bcc tokenise_line_keyword_01 ; branch if keyword identified
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
|
||||
lda #<packed_freq_keywords_02
|
||||
sta FRESPC+0
|
||||
lda #>packed_freq_keywords_02
|
||||
sta FRESPC+1
|
||||
|
||||
jsr tk_search
|
||||
bcc tokenise_line_keyword_02 ; branch if keyword identified
|
||||
}
|
||||
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
|
||||
lda #<packed_freq_keywords_03
|
||||
lda #<packed_freq_keywords_04
|
||||
sta FRESPC+0
|
||||
lda #>packed_freq_keywords_03
|
||||
lda #>packed_freq_keywords_04
|
||||
sta FRESPC+1
|
||||
|
||||
jsr tk_search
|
||||
bcc tokenise_line_keyword_03 ; branch if keyword identified
|
||||
bcc tokenise_line_keyword_04 ; branch if keyword identified
|
||||
|
||||
lda #<packed_freq_keywords_06
|
||||
sta FRESPC+0
|
||||
lda #>packed_freq_keywords_06
|
||||
sta FRESPC+1
|
||||
|
||||
jsr tk_search
|
||||
bcc tokenise_line_keyword_06 ; branch if keyword identified
|
||||
}
|
||||
|
||||
; Shorten packed keyword candidate and try again
|
||||
@@ -180,23 +186,18 @@ tokenise_line_char:
|
||||
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
|
||||
tokenise_line_keyword_03:
|
||||
tokenise_line_keyword_04:
|
||||
|
||||
; Store the token list index
|
||||
|
||||
lda #$03
|
||||
lda #$04
|
||||
+skip_2_bytes_trash_nvz
|
||||
|
||||
; FALLTROUGH
|
||||
}
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
|
||||
tokenise_line_keyword_02:
|
||||
tokenise_line_keyword_06:
|
||||
|
||||
; Store the token list index
|
||||
|
||||
lda #$02
|
||||
lda #$06
|
||||
+skip_2_bytes_trash_nvz
|
||||
|
||||
; FALLTROUGH
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# * BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
@@ -46,12 +47,22 @@ do_kernal_error: ; .A = KERNAL error code, also almost mat
|
||||
dex
|
||||
!ifdef SEGMENT_M65_BASIC_1 {
|
||||
jmp do_basic_error
|
||||
} else ifdef SEGMENT_CRT_BASIC_1 {
|
||||
jmp do_basic_error
|
||||
} else {
|
||||
bpl do_basic_error ; branch always
|
||||
}
|
||||
|
||||
; Error messages specific to Open ROMs BASIC dialect
|
||||
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
|
||||
do_LEGACY_MODE_ONLY_error:
|
||||
!byte $E6
|
||||
do_NATIVE_MODE_ONLY_error:
|
||||
!byte $E6
|
||||
}
|
||||
|
||||
do_MEMORY_CORRUPT_error:
|
||||
!byte $E6
|
||||
|
||||
@@ -144,9 +155,9 @@ do_TO_MANY_FILES_error:
|
||||
!byte $EA
|
||||
|
||||
!ifdef SEGMENT_M65_BASIC_1 {
|
||||
|
||||
jmp do_error_fetch
|
||||
|
||||
} else ifdef SEGMENT_CRT_BASIC_1 {
|
||||
jmp do_error_fetch
|
||||
} else {
|
||||
|
||||
; FALLTROUGH
|
||||
@@ -177,8 +188,11 @@ do_error_fetch:
|
||||
|
||||
do_basic_error: ; error code in .X
|
||||
|
||||
!ifdef ROM_LAYOUT_M65 {
|
||||
; Make sure we are back with normal memory map
|
||||
|
||||
!ifdef ROM_LAYOUT_M65 {
|
||||
jsr map_NORMAL
|
||||
} else ifdef ROM_LAYOUT_CRT {
|
||||
jsr map_NORMAL
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,8 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# M65 * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_0 #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_0 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -32,6 +35,24 @@ do_restore_end:
|
||||
|
||||
jmp map_NORMAL
|
||||
|
||||
} else ifdef SEGMENT_CRT_BASIC_0 {
|
||||
|
||||
jsr map_BASIC_1
|
||||
jsr JB1__do_new
|
||||
jmp map_NORMAL
|
||||
|
||||
do_clr:
|
||||
|
||||
jsr map_BASIC_1
|
||||
jsr JB1__do_clr
|
||||
jmp map_NORMAL
|
||||
|
||||
do_restore:
|
||||
|
||||
jsr map_BASIC_1
|
||||
jsr JB1__do_restore
|
||||
jmp map_NORMAL
|
||||
|
||||
} else {
|
||||
|
||||
; See Computes Mapping the Commodore 64 - page 96
|
||||
|
||||
@@ -39,23 +39,19 @@ execute_statements:
|
||||
|
||||
; Check if token is valid for execution
|
||||
|
||||
!ifdef HAS_SMALL_BASIC {
|
||||
!ifndef CONFIG_MB_M65 {
|
||||
|
||||
cpx #$01
|
||||
beq execute_statements_01
|
||||
|
||||
} else {
|
||||
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
cpx #$04
|
||||
} else {
|
||||
cpx #$03
|
||||
}
|
||||
cpx #$05
|
||||
bcc execute_statements_extended
|
||||
}
|
||||
|
||||
cpx #$CB
|
||||
+beq cmd_go ; 'GO' command has a strange token, placed after function tokens
|
||||
+beq cmd_go ; 'GO' command has a strange token, placed after function tokens
|
||||
|
||||
cpx #$7F
|
||||
+bcc execute_statements_var_assign ; not a token - try variable assign
|
||||
@@ -84,25 +80,17 @@ execute_statements:
|
||||
jmp (command_jumptable, x)
|
||||
}
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
|
||||
execute_statements_extended:
|
||||
|
||||
; Support for extended BASIC commands
|
||||
|
||||
; XXX consider jumpable here
|
||||
|
||||
cpx #$01
|
||||
beq execute_statements_01
|
||||
|
||||
cpx #$02
|
||||
beq execute_statements_02
|
||||
|
||||
!ifdef CONGIH_MB_M65 {
|
||||
|
||||
cpx #$03
|
||||
beq execute_statements_03
|
||||
}
|
||||
cpx #$04
|
||||
beq execute_statements_04
|
||||
|
||||
jmp do_SYNTAX_error
|
||||
}
|
||||
@@ -141,9 +129,9 @@ execute_statements_01:
|
||||
jmp (command_01_jumptable - 2, x)
|
||||
}
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
|
||||
execute_statements_02:
|
||||
execute_statements_04:
|
||||
|
||||
; Get the sub-token, check that it is valid
|
||||
|
||||
@@ -151,7 +139,7 @@ execute_statements_02:
|
||||
cmp #$00
|
||||
+beq do_SYNTAX_error
|
||||
|
||||
cmp #(TK__MAXTOKEN_keywords_02+1)
|
||||
cmp #(TK__MAXTOKEN_keywords_04+1)
|
||||
+bcs do_SYNTAX_error
|
||||
|
||||
; Execute command
|
||||
@@ -161,9 +149,9 @@ execute_statements_02:
|
||||
; Get the jump table entry for it, push it on the stack, and then RTS to start it.
|
||||
|
||||
tax
|
||||
lda command_02_jumptable_hi - 1, x
|
||||
lda command_04_jumptable_hi - 1, x
|
||||
pha
|
||||
lda command_02_jumptable_lo - 1, x
|
||||
lda command_04_jumptable_lo - 1, x
|
||||
pha
|
||||
|
||||
rts
|
||||
@@ -174,31 +162,10 @@ execute_statements_02:
|
||||
|
||||
asl
|
||||
tax
|
||||
jmp (command_02_jumptable - 2, x)
|
||||
jmp (command_04_jumptable - 2, x)
|
||||
}
|
||||
|
||||
} ; !HAS_SMALL_BASIC
|
||||
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
|
||||
execute_statements_03:
|
||||
|
||||
; Get the sub-token, check that it is valid
|
||||
|
||||
jsr fetch_character
|
||||
cmp #$00
|
||||
+beq do_SYNTAX_error
|
||||
|
||||
cmp #(TK__MAXTOKEN_keywords_03+1)
|
||||
+bcs do_SYNTAX_error
|
||||
|
||||
; Use jumptable to go to the command routine
|
||||
|
||||
asl
|
||||
tax
|
||||
jmp (command_03_jumptable - 2, x)
|
||||
|
||||
} ; CONFIG_MB_M65
|
||||
}
|
||||
|
||||
execute_statements_end_of_line:
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# * BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# * BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
@@ -15,6 +16,12 @@ prepare_direct_execution:
|
||||
jsr (VB1__prepare_direct_execution)
|
||||
jmp map_NORMAL
|
||||
|
||||
} else ifdef SEGMENT_CRT_BASIC_0 {
|
||||
|
||||
jsr map_BASIC_1
|
||||
jsr JB1__prepare_direct_execution
|
||||
jmp map_NORMAL
|
||||
|
||||
} else {
|
||||
|
||||
; Setup pointer to the statement
|
||||
|
||||
@@ -29,6 +29,12 @@ INITMSG_autoswitch:
|
||||
jsr (VB1__INITMSG_autoswitch)
|
||||
bra INITMSG_end
|
||||
|
||||
} else ifdef ROM_LAYOUT_CRT {
|
||||
|
||||
jsr map_BASIC_1
|
||||
jsr JB1__INITMSG
|
||||
jmp map_NORMAL
|
||||
|
||||
} else {
|
||||
|
||||
jmp initmsg_real
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
@@ -28,7 +29,7 @@ initmsg_bytes_free:
|
||||
|
||||
sec ; Read, not write value
|
||||
jsr JMEMTOP
|
||||
cpx #$80
|
||||
cpy #$80
|
||||
beq @1
|
||||
!ifdef CONFIG_MEMORY_MODEL_60K {
|
||||
lda #>$F7FF
|
||||
|
||||
@@ -59,9 +59,18 @@ INITMSG_end:
|
||||
|
||||
jsr initmsg_bytes_free
|
||||
|
||||
!ifdef HAS_NOLGPL3_WARN {
|
||||
|
||||
lda #<str_nonlgpl3_warn
|
||||
ldy #>str_nonlgpl3_warn
|
||||
jmp STROUT
|
||||
|
||||
} else {
|
||||
|
||||
ldx #$09
|
||||
ldy #$00
|
||||
jmp plot_set
|
||||
}
|
||||
|
||||
INITMSG_main_banner:
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -6,8 +7,16 @@
|
||||
; Routine is too long to fit in the original location
|
||||
|
||||
|
||||
!ifdef ROM_LAYOUT_CRT {
|
||||
|
||||
INITMSG:
|
||||
|
||||
} else {
|
||||
|
||||
initmsg_real:
|
||||
|
||||
}
|
||||
|
||||
; Clear the screen first, some cartridges (like IEEE-488) are leaving a mess on the screen
|
||||
lda #147
|
||||
jsr JCHROUT
|
||||
@@ -60,7 +69,7 @@ initmsg_real:
|
||||
jsr STROUT
|
||||
|
||||
ldx #$00
|
||||
ldy #$0A
|
||||
ldy #BANNER_SPACING
|
||||
jsr plot_set
|
||||
|
||||
lda #<startup_banner
|
||||
@@ -70,7 +79,7 @@ initmsg_real:
|
||||
!ifndef CONFIG_BRAND_CUSTOM {
|
||||
|
||||
ldx #$01
|
||||
ldy #$0A
|
||||
ldy #BANNER_SPACING
|
||||
jsr plot_set
|
||||
|
||||
ldx #IDX__STR_PRE_REV
|
||||
@@ -87,7 +96,7 @@ initmsg_real:
|
||||
} else {
|
||||
ldx #$02
|
||||
}
|
||||
ldy #$0A
|
||||
ldy #BANNER_SPACING
|
||||
jsr plot_set
|
||||
|
||||
jsr initmsg_bytes_free
|
||||
@@ -106,3 +115,5 @@ initmsg_real:
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
!ifdef HAS_NOLGPL3_WARN { !error "HAS_NOLGPL3_WARN not implemented" }
|
||||
@@ -1,6 +1,7 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# M65 * #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# * BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
|
||||
@@ -12,6 +13,12 @@ list_single_line:
|
||||
jsr (VB1__list_single_line)
|
||||
jmp map_NORMAL
|
||||
|
||||
} else ifdef SEGMENT_CRT_BASIC_0 {
|
||||
|
||||
jsr map_BASIC_1
|
||||
jsr JB1__list_single_line
|
||||
jmp map_NORMAL
|
||||
|
||||
} else {
|
||||
|
||||
; Print line number - in a new line
|
||||
@@ -20,6 +27,8 @@ list_single_line:
|
||||
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
jsr peek_via_OLDTXT
|
||||
} else ifdef ROM_LAYOUT_CRT {
|
||||
jsr peek_via_OLDTXT
|
||||
} else ifdef CONFIG_MEMORY_MODEL_60K {
|
||||
jsr peek_under_roms
|
||||
} else ifdef CONFIG_MEMORY_MODEL_46K_OR_50K {
|
||||
@@ -33,6 +42,8 @@ list_single_line:
|
||||
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
jsr peek_via_OLDTXT
|
||||
} else ifdef ROM_LAYOUT_CRT {
|
||||
jsr peek_via_OLDTXT
|
||||
} else ifdef CONFIG_MEMORY_MODEL_60K {
|
||||
jsr peek_under_roms
|
||||
} else ifdef CONFIG_MEMORY_MODEL_46K_OR_50K {
|
||||
@@ -57,6 +68,8 @@ list_print_loop:
|
||||
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
jsr peek_via_OLDTXT
|
||||
} else ifdef ROM_LAYOUT_CRT {
|
||||
jsr peek_via_OLDTXT
|
||||
} else ifdef CONFIG_MEMORY_MODEL_60K {
|
||||
ldx #<OLDTXT
|
||||
jsr peek_under_roms
|
||||
@@ -91,13 +104,11 @@ list_not_quote:
|
||||
; Check for extended BASIC tokens
|
||||
cmp #$01
|
||||
beq list_display_token_01
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
cmp #$02
|
||||
beq list_display_token_02
|
||||
}
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
cmp #$03
|
||||
beq list_display_token_03
|
||||
cmp #$04
|
||||
beq list_display_token_04
|
||||
cmp #$06
|
||||
beq list_display_token_06
|
||||
}
|
||||
|
||||
; Check for literals
|
||||
@@ -219,37 +230,34 @@ list_display_token_ext_done:
|
||||
; Next iteration
|
||||
+bra list_not_rem
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
|
||||
list_display_token_02:
|
||||
|
||||
; Display a 2-byte token - for extended BASIC
|
||||
jsr list_fetch_subtoken
|
||||
|
||||
; Check if token is known
|
||||
cpx #TK__MAXTOKEN_keywords_02
|
||||
bcs list_is_unknown
|
||||
|
||||
; Now ask for it to be printed
|
||||
+phy_trash_a
|
||||
jsr print_packed_keyword_02
|
||||
+bra list_display_token_ext_done
|
||||
}
|
||||
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
|
||||
list_display_token_03:
|
||||
list_display_token_04:
|
||||
|
||||
; Display a 2-byte token - for extended BASIC
|
||||
jsr list_fetch_subtoken
|
||||
|
||||
; Check if token is known
|
||||
cpx #TK__MAXTOKEN_keywords_03
|
||||
cpx #TK__MAXTOKEN_keywords_04
|
||||
bcs list_is_unknown
|
||||
|
||||
; Now ask for it to be printed
|
||||
+phy_trash_a
|
||||
jsr print_packed_keyword_03
|
||||
jsr print_packed_keyword_04
|
||||
+bra list_display_token_ext_done
|
||||
|
||||
list_display_token_06:
|
||||
|
||||
; Display a 2-byte token - for extended BASIC
|
||||
jsr list_fetch_subtoken
|
||||
|
||||
; Check if token is known
|
||||
cpx #TK__MAXTOKEN_keywords_06
|
||||
bcs list_is_unknown
|
||||
|
||||
; Now ask for it to be printed
|
||||
+phy_trash_a
|
||||
jsr print_packed_keyword_06
|
||||
+bra list_display_token_ext_done
|
||||
}
|
||||
|
||||
@@ -260,6 +268,8 @@ list_fetch_subtoken:
|
||||
iny
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
jsr peek_via_OLDTXT
|
||||
} else ifdef ROM_LAYOUT_CRT {
|
||||
jsr peek_via_OLDTXT
|
||||
} else ifdef CONFIG_MEMORY_MODEL_60K {
|
||||
ldx #<OLDTXT
|
||||
jsr peek_under_roms
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# M65 * #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# * BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
; This routine prints strings that have been packed using the 'generate_trings' tool.
|
||||
@@ -21,6 +22,20 @@ print_packed_misc_str:
|
||||
jsr (VB1__print_packed_misc_str)
|
||||
jmp map_NORMAL
|
||||
|
||||
} else ifdef SEGMENT_CRT_BASIC_0 {
|
||||
|
||||
print_packed_error:
|
||||
|
||||
jsr map_BASIC_1
|
||||
jsr JB1__print_packed_error
|
||||
jmp map_NORMAL
|
||||
|
||||
print_packed_misc_str:
|
||||
|
||||
jsr map_BASIC_1
|
||||
jsr JB1__print_packed_misc_str
|
||||
jmp map_NORMAL
|
||||
|
||||
} else {
|
||||
|
||||
!ifndef CONFIG_COMPRESSION_LVL_2 {
|
||||
@@ -44,21 +59,18 @@ print_packed_keyword_01: ; .X - token number
|
||||
ldy #>packed_freq_keywords_01
|
||||
bne print_freq_packed_string ; branch always
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
|
||||
print_packed_keyword_02: ; .X - token number
|
||||
|
||||
lda #<packed_freq_keywords_02
|
||||
ldy #>packed_freq_keywords_02
|
||||
bne print_freq_packed_string ; branch always
|
||||
}
|
||||
|
||||
!ifdef CONFIG_MB_M65 {
|
||||
|
||||
print_packed_keyword_03: ; .X - token number
|
||||
print_packed_keyword_04: ; .X - token number
|
||||
|
||||
lda #<packed_freq_keywords_03
|
||||
ldy #>packed_freq_keywords_03
|
||||
lda #<packed_freq_keywords_04
|
||||
ldy #>packed_freq_keywords_04
|
||||
bne print_freq_packed_string ; branch always
|
||||
|
||||
print_packed_keyword_06: ; .X - token number
|
||||
|
||||
lda #<packed_freq_keywords_06
|
||||
ldy #>packed_freq_keywords_06
|
||||
bne print_freq_packed_string ; branch always
|
||||
}
|
||||
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE-OFFSET -1F66
|
||||
;; #LAYOUT# X16 BASIC_0 #TAKE-OFFSET 2000
|
||||
;; #LAYOUT# * BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
;; #LAYOUT# STD * #TAKE
|
||||
;; #LAYOUT# CRT BASIC_1 #TAKE
|
||||
;; #LAYOUT# M65 BASIC_1 #TAKE
|
||||
;; #LAYOUT# * BASIC_0 #TAKE
|
||||
;; #LAYOUT# * * #IGNORE
|
||||
@@ -17,6 +18,12 @@ wedge_dos:
|
||||
jsr (VB1__wedge_dos)
|
||||
jmp map_NORMAL
|
||||
|
||||
} else ifdef SEGMENT_CRT_BASIC_0 {
|
||||
|
||||
jsr map_BASIC_1
|
||||
jsr JB1__wedge_dos
|
||||
jmp map_NORMAL
|
||||
|
||||
} else {
|
||||
|
||||
; Prepare buffer - finish it with '0'
|
||||
|
||||
@@ -19,8 +19,12 @@ wedge_tape:
|
||||
|
||||
cmp #$4C ; 'L'
|
||||
beq wedge_arrow_L
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
|
||||
cmp #$4D ; 'M'
|
||||
beq wedge_arrow_M
|
||||
}
|
||||
|
||||
!ifdef CONFIG_TAPE_HEAD_ALIGN {
|
||||
|
||||
@@ -28,6 +32,10 @@ wedge_tape:
|
||||
beq wedge_arrow_H
|
||||
}
|
||||
|
||||
; FALLTROUGH
|
||||
|
||||
wedge_tape_syntax_error:
|
||||
|
||||
jmp do_SYNTAX_error
|
||||
|
||||
!ifdef CONFIG_TAPE_HEAD_ALIGN {
|
||||
@@ -39,7 +47,16 @@ wedge_arrow_H:
|
||||
jsr fetch_character_skip_spaces
|
||||
|
||||
cmp #$00
|
||||
+bne do_SYNTAX_error
|
||||
beq wedge_arrow_H_or_HF
|
||||
cmp #$46 ; 'F'
|
||||
bne wedge_tape_syntax_error
|
||||
|
||||
jsr fetch_character_skip_spaces
|
||||
|
||||
cmp #$00
|
||||
bne wedge_tape_syntax_error
|
||||
|
||||
wedge_arrow_H_or_HF:
|
||||
|
||||
jsr tape_head_align
|
||||
|
||||
@@ -55,6 +72,9 @@ wedge_arrow_L:
|
||||
|
||||
jmp cmd_load_got_params
|
||||
|
||||
|
||||
!ifndef HAS_SMALL_BASIC {
|
||||
|
||||
wedge_arrow_M:
|
||||
|
||||
jsr wedge_tape_prepare_load
|
||||
@@ -64,5 +84,6 @@ wedge_arrow_M:
|
||||
; Perform merging
|
||||
|
||||
jmp cmd_merge_got_params
|
||||
}
|
||||
|
||||
} ; CONFIG_TAPE_WEDGE
|
||||
@@ -2,17 +2,41 @@
|
||||
; Memory locations for the DOS
|
||||
;
|
||||
|
||||
; NOTES:
|
||||
; - DOS zeropage is mirrored at $8000
|
||||
; - starting from $8000, 16KB RAM is available (starting from $10000 in C65 address space)
|
||||
; - additional 16KB RAM is reserved for DOS too ($14000-$17FFF), and can be banked-in if needed
|
||||
|
||||
|
||||
|
||||
;
|
||||
; Page 0
|
||||
;
|
||||
|
||||
!addr MAGICSTR = $00 ; magic string; if not matching, DOS considered non-functional
|
||||
!addr MAGICSTR = $00 ; magic string; if not matching, DOS considered non-functional
|
||||
|
||||
!addr UNIT_SDCARD = $05
|
||||
!addr UNIT_FLOPPY = $06
|
||||
!addr UNIT_RAMDISK = $07
|
||||
; General DOS configuration
|
||||
|
||||
; NOTES:
|
||||
; - DOS zeropage is mirrored at $8000
|
||||
; - starting from $8000, 16KB RAM is available (starting from $10000 in C65 address space)
|
||||
; - additional 16KB RAM is reserved for DOS too ($14000-$17FFF), and can be banked-in if needed
|
||||
!addr UNIT_SDCARD = $05
|
||||
!addr UNIT_FLOPPY = $06
|
||||
!addr UNIT_RAMDISK = $07
|
||||
|
||||
; SD/SDHC card variables
|
||||
|
||||
!addr CARD_INIT_DONE = $08 ; $80 - init done, $00 - init not done
|
||||
!addr CARD_IS_SDHC = $09 ; $00 = SD, $80 = SDHC
|
||||
!addr CARD_SIZE = $0A ; 4 bytes
|
||||
!addr CARD_SECNUM = $0E ; 4 bytes - sector number
|
||||
|
||||
!addr CARD_TMP_STEP = $12 ; 4 bytes
|
||||
!addr CARD_TMP_RETRIES = $16 ; 1 byte
|
||||
|
||||
!addr CARD_BUFPNT = $FC ; 4 bytes - pointer to hardware sector buffer XXX replace copy routines with DMAgic
|
||||
|
||||
|
||||
|
||||
;
|
||||
; High memory
|
||||
;
|
||||
|
||||
!addr CARD_BUF = $8100 ; 512 bytes, up to $82FF - buffer for reading/writing data
|
||||
@@ -0,0 +1,4 @@
|
||||
|
||||
!ifndef HAS_NOLGPL3_WARN {
|
||||
!error "No LGPL3 incompatible warning issued"
|
||||
}
|
||||
Loaded 100 of 181 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user