initial support for cartridge-extended ROMs
This commit is contained in:
1 parent
47b9676ca9
commit
ec2b32f577
5 files changed
+211
-11
No files matched your search
@@ -83,6 +83,7 @@ GEN_KERNAL =
|
||||
|
||||
DIR_CUS = build/target_custom
|
||||
DIR_GEN = build/target_generic
|
||||
DIR_CRT = build/target_generic_crt
|
||||
DIR_TST = build/target_testing
|
||||
DIR_M65 = build/target_mega65
|
||||
DIR_U64 = build/target_ultimate64
|
||||
@@ -92,6 +93,7 @@ DIR_X16 = build/target_cx16
|
||||
|
||||
CFG_CUS = src/,,config_custom.s
|
||||
CFG_GEN = src/,,config_generic.s
|
||||
CFG_CRT = src/,,config_generic_crt.s
|
||||
CFG_TST = src/,,config_testing.s
|
||||
CFG_M65 = src/,,config_mega65.s
|
||||
CFG_U64 = src/,,config_ultimate64.s
|
||||
@@ -101,6 +103,7 @@ CFG_X16 = src/,,config_cx16.s
|
||||
|
||||
GEN_STR_CUS = $(DIR_CUS)/,generated/,packed_strings.s
|
||||
GEN_STR_GEN = $(DIR_GEN)/,generated/,packed_strings.s
|
||||
GEN_STR_CRT = $(DIR_CRT)/,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
|
||||
@@ -136,11 +139,13 @@ TOOLS_LIST = $(TOOL_GENERATE_CONSTANTS) \
|
||||
|
||||
TARGET_CUS_B = build/basic_custom.rom
|
||||
TARGET_GEN_B = build/basic_generic.rom
|
||||
TARGET_CRT_B = build/basic_generic_crt.rom
|
||||
TARGET_TST_B = build/basic_testing.rom
|
||||
TARGET_U64_B = build/basic_ultimate64.rom
|
||||
|
||||
TARGET_CUS_K = build/kernal_custom.rom
|
||||
TARGET_GEN_K = build/kernal_generic.rom
|
||||
TARGET_CRT_K = build/kernal_generic_crt.rom
|
||||
TARGET_TST_K = build/kernal_testing.rom
|
||||
TARGET_U64_K = build/kernal_ultimate64.rom
|
||||
|
||||
@@ -150,6 +155,7 @@ TARGET_X16_x = build/cx16-dummy.rom
|
||||
|
||||
TARGET_LIST_CUS = $(TARGET_CUS_B) $(TARGET_CUS_K)
|
||||
TARGET_LIST_GEN = $(TARGET_GEN_B) $(TARGET_GEN_K)
|
||||
TARGET_LIST_CRT = $(TARGET_CRT_B) $(TARGET_CRT_K)
|
||||
TARGET_LIST_TST = $(TARGET_TST_B) $(TARGET_TST_K)
|
||||
TARGET_LIST_U64 = $(TARGET_U64_B) $(TARGET_U64_K)
|
||||
|
||||
@@ -162,6 +168,9 @@ TARGET_LIST = build/chargen_openroms.rom \
|
||||
$(TARGET_LIST_U64) \
|
||||
$(TARGET_X16_x)
|
||||
|
||||
SEG_LIST_CRT = $(DIR_X16)/basic.seg_0 \
|
||||
$(DIR_X16)/kernal.seg_0
|
||||
|
||||
SEG_LIST_M65 = $(DIR_M65)/basic.seg_0 \
|
||||
$(DIR_M65)/basic.seg_1 \
|
||||
$(DIR_M65)/dos.seg_1 \
|
||||
@@ -281,6 +290,11 @@ $(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_CRT)/OUTB_0.BIN $(DIR_CRT)/BASIC_combined.vs: \
|
||||
$(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_BASIC) $(CFG_CRT) $(CRT_STR_GEN) $(DIR_CRT)/KERNAL_combined.sym
|
||||
$(DIR_CRT)/OUTK_0.BIN $(DIR_CRT)/KERNAL_combined.vs $(DIR_CRT)/KERNAL_combined.sym: \
|
||||
$(TOOL_ASSEMBLER) $(TOOL_BUILD_SEGMENT) $(DEP_KERNAL) $(CFG_CRT) $(GEN_STR_CRT)
|
||||
|
||||
$(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: \
|
||||
@@ -305,6 +319,7 @@ $(DIR_X16)/kernal.seg_1 $(DIR_X16)/KERNAL_1_combined.vs $(DIR_X16)/KERNAL_1_comb
|
||||
|
||||
$(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_CRT)/OUTx_0.BIN: $(DIR_CRT)/OUTB_0.BIN $(DIR_CRT)/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
|
||||
@@ -335,6 +350,10 @@ $(GEN_STR_GEN): $(TOOL_GENERATE_STRINGS) $(CFG_GEN)
|
||||
@mkdir -p $(DIR_GEN)/,generated
|
||||
$(TOOL_GENERATE_STRINGS) -o $@ -c $(CFG_GEN)
|
||||
|
||||
$(GEN_STR_CRT): $(TOOL_GENERATE_STRINGS) $(CFG_CRT)
|
||||
@mkdir -p $(DIR_CRT)/,generated
|
||||
$(TOOL_GENERATE_STRINGS) -o $@ -c $(CFG_CRT)
|
||||
|
||||
$(GEN_STR_TST): $(TOOL_GENERATE_STRINGS) $(CFG_TST)
|
||||
@mkdir -p $(DIR_TST)/,generated
|
||||
$(TOOL_GENERATE_STRINGS) -o $@ -c $(CFG_TST)
|
||||
@@ -355,12 +374,13 @@ 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_CRT)
|
||||
GEN_STR_testing = $(GEN_STR_TST)
|
||||
GEN_STR_mega65 = $(GEN_STR_M65)
|
||||
GEN_STR_ultimate64 = $(GEN_STR_U64)
|
||||
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:
|
||||
@@ -374,6 +394,18 @@ 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_CRT)/OUTB_0.BIN $(DIR_CRT)/BASIC_0_combined.vs $(DIR_CRT)/BASIC_0_combined.sym:
|
||||
@mkdir -p $(DIR_CRT)
|
||||
@rm -f $@* $(DIR_CRT)/BASIC_0*
|
||||
@$(TOOL_BUILD_SEGMENT) -a ../../$(TOOL_ASSEMBLER) -r CRT -s BASIC_0 -i BASIC_0-generic-crt -o OUTB_0.BIN -d $(DIR_CRT) -l a000 -h e4d2 $(CFG_CRT) $(GEN_STR_CRT) $(SRCDIR_BASIC) $(GEN_BASIC)
|
||||
|
||||
$(DIR_CRT)/OUTK_0.BIN $(DIR_CRT)/KERNAL_0_combined.vs $(DIR_CRT)/KERNAL_0_combined.sym:
|
||||
@mkdir -p $(DIR_CRT)
|
||||
@rm -f $@* $(DIR_CRT)/KERNAL_0*
|
||||
@$(TOOL_BUILD_SEGMENT) -a ../../$(TOOL_ASSEMBLER) -r CRT -s KERNAL_0 -i KERNAL_0-generic-crt -o OUTK_0.BIN -d $(DIR_CRT) -l e4d3 -h ffff $(CFG_CRT) $(GEN_STR_CRT) $(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:
|
||||
@@ -441,6 +473,15 @@ build/basic_%.rom:
|
||||
build/symbols_%.vs:
|
||||
@sort build/target_$*/BASIC_combined.vs build/target_$*/KERNAL_combined.vs | uniq | grep -v "__" > $@
|
||||
|
||||
$(DIR_CRT)/OUTx_0.BIN:
|
||||
@cat $(DIR_CRT)/OUTB_0.BIN $(DIR_CRT)/OUTK_0.BIN > $@
|
||||
|
||||
$(DIR_CRT)/kernal.seg_0: $(DIR_CRT)/OUTx_0.BIN
|
||||
@dd if=$(DIR_CRT)/OUTx_0.BIN bs=8192 count=1 skip=2 of=$@ status=none
|
||||
|
||||
$(DIR_CRT)/basic.seg_0: $(DIR_CRT)/OUTx_0.BIN
|
||||
@dd if=$(DIR_CRT)/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 > $@
|
||||
|
||||
@@ -459,6 +500,12 @@ $(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
|
||||
|
||||
build/kernal_generic_crt.rom: $(DIR_CRT)/OUTx_0.BIN
|
||||
@dd if=$(DIR_CRT)/OUTx_0.BIN bs=8192 count=1 skip=2 of=$@ status=none
|
||||
|
||||
build/basic_generic_crt.rom: $(DIR_CRT)/OUTx_0.BIN
|
||||
@dd if=$(DIR_CRT)/OUTx_0.BIN bs=8192 count=1 skip=0 of=$@ status=none
|
||||
|
||||
build/kernal_hybrid.rom: kernal $(DIR_GEN)/OUTK_x.BIN
|
||||
@echo
|
||||
@echo $(HYBRID_WARNING)
|
||||
@@ -538,12 +585,12 @@ $(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)
|
||||
@@ -554,6 +601,9 @@ test_generic: build/kernal_generic.rom build/basic_generic.rom build/symbols_gen
|
||||
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_crt: build/kernal_generic_crt.rom build/basic_generic_crt.rom build/symbols_generic_crt.vs
|
||||
x64 -kernal build/kernal_generic_crt.rom -basic build/basic_generic_crt.rom -moncommands build/symbols_generic_crt.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)
|
||||
|
||||
|
||||
+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!
|
||||
|
||||
@@ -0,0 +1,132 @@
|
||||
|
||||
;; #CONFIG# ID $02 ; 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# BRAND_GENERIC_CRT 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 NO
|
||||
;; #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
|
||||
@@ -39,6 +39,7 @@
|
||||
!set counter = 0
|
||||
!ifdef CONFIG_BRAND_CUSTOM { !set counter = counter + 1 }
|
||||
!ifdef CONFIG_BRAND_GENERIC { !set counter = counter + 1 }
|
||||
!ifdef CONFIG_BRAND_GENERIC_CRT { !set counter = counter + 1 }
|
||||
!ifdef CONFIG_BRAND_TESTING { !set counter = counter + 1 }
|
||||
|
||||
!ifndef CONFIG_PLATFORM_COMMODORE_64 {
|
||||
@@ -51,6 +52,13 @@
|
||||
!error "Please select exactly one CONFIG_BRAND_* option"
|
||||
}
|
||||
|
||||
!ifdef CONFIG_BRAND_GENERIC_CRT { !ifndef ROM_LAYOUT_CRT {
|
||||
!error "CONFIG_BRAND_GENERIC_CRT needs cartridge extended ROM set and vice-versa"
|
||||
}}
|
||||
!ifdef CONFIG_BRAND_GENERIC { !ifndef ROM_LAYOUT_STD {
|
||||
!error "CONFIG_BRAND_GENERIC needs standard ROM set and vice-versa"
|
||||
}}
|
||||
|
||||
|
||||
|
||||
; Check that processor configuration is correct
|
||||
|
||||
@@ -29,9 +29,16 @@ jiffydos_load:
|
||||
lda FA
|
||||
jsr TALK
|
||||
bcs jiffydos_load_error
|
||||
|
||||
lda #$01
|
||||
sta CIA2_DDRB ; XXX for test only
|
||||
|
||||
lda #$61
|
||||
jsr TKSA
|
||||
|
||||
lda #$02
|
||||
sta CIA2_DDRB ; XXX for test only
|
||||
|
||||
; XXX flow below most likely takes too much time...
|
||||
|
||||
; Timing is critical, do not allow interrupts
|
||||
@@ -120,6 +127,9 @@ jiffydos_load_check_loop:
|
||||
|
||||
jiffydos_load_error:
|
||||
|
||||
lda #$F3
|
||||
sta CIA2_DDRB ; XXX for test only
|
||||
|
||||
+panic $03
|
||||
|
||||
; XXX finish the implementation
|
||||
|
||||
Reference in new issue
Block a user