Added MODEL_FOENIX_F256JR2 target

This commit is contained in:
Peter Weingartner 2024-12-20 20:42:46 -05:00
parent d738cb5645
commit c5b0e00e04
48 changed files with 2244 additions and 24 deletions

View file

@ -5,7 +5,7 @@ This directory contains BIN files for programming the F256JRe flash memory with
## How to Install
Currently, the toolbox must be installed by bulk programming the flash memory.
Using the FoenixMgr Python script, this can be done with the following command (substitute the device path or name for your F256K's USB debug port):
Using the FoenixMgr Python script, this can be done with the following command (substitute the device path or name for your F256JR's USB debug port):
```
python FoenixMgr.zip --port {debug device name} --flash-bulk toolbox.csv

12
roms/f256jr2/README.md Normal file
View file

@ -0,0 +1,12 @@
# ROM Files for the F256JR2e
This directory contains BIN files for programming the F256JR2e flash memory with the Foenix Toolbox.
## How to Install
Currently, the toolbox must be installed by bulk programming the flash memory.
Using the FoenixMgr Python script, this can be done with the following command (substitute the device path or name for your F256JR2's USB debug port):
```
python FoenixMgr.zip --port {debug device name} --flash-bulk toolbox.csv
```

BIN
roms/f256jr2/toolbox-20.bin Normal file

Binary file not shown.

BIN
roms/f256jr2/toolbox-21.bin Normal file

Binary file not shown.

BIN
roms/f256jr2/toolbox-22.bin Normal file

Binary file not shown.

BIN
roms/f256jr2/toolbox-23.bin Normal file

Binary file not shown.

BIN
roms/f256jr2/toolbox-24.bin Normal file

Binary file not shown.

BIN
roms/f256jr2/toolbox-25.bin Normal file

Binary file not shown.

BIN
roms/f256jr2/toolbox-26.bin Normal file

Binary file not shown.

BIN
roms/f256jr2/toolbox-27.bin Normal file

Binary file not shown.

BIN
roms/f256jr2/toolbox-28.bin Normal file

Binary file not shown.

BIN
roms/f256jr2/toolbox-29.bin Normal file

Binary file not shown.

BIN
roms/f256jr2/toolbox-2A.bin Normal file

Binary file not shown.

BIN
roms/f256jr2/toolbox-2B.bin Normal file

Binary file not shown.

BIN
roms/f256jr2/toolbox-2C.bin Normal file

Binary file not shown.

BIN
roms/f256jr2/toolbox-2D.bin Normal file

Binary file not shown.

BIN
roms/f256jr2/toolbox-2E.bin Normal file

Binary file not shown.

BIN
roms/f256jr2/toolbox-2F.bin Normal file

Binary file not shown.

BIN
roms/f256jr2/toolbox-30.bin Normal file

Binary file not shown.

BIN
roms/f256jr2/toolbox-3F.bin Normal file

Binary file not shown.

2137
roms/f256jr2/toolbox.bin Normal file

File diff suppressed because one or more lines are too long

18
roms/f256jr2/toolbox.csv Normal file
View file

@ -0,0 +1,18 @@
"20","toolbox-20.bin"
"21","toolbox-21.bin"
"22","toolbox-22.bin"
"23","toolbox-23.bin"
"24","toolbox-24.bin"
"25","toolbox-25.bin"
"26","toolbox-26.bin"
"27","toolbox-27.bin"
"28","toolbox-28.bin"
"29","toolbox-29.bin"
"2A","toolbox-2A.bin"
"2B","toolbox-2B.bin"
"2C","toolbox-2C.bin"
"2D","toolbox-2D.bin"
"2E","toolbox-2E.bin"
"2F","toolbox-2F.bin"
"30","toolbox-30.bin"
"3F","toolbox-3F.bin"
1 20 toolbox-20.bin
2 21 toolbox-21.bin
3 22 toolbox-22.bin
4 23 toolbox-23.bin
5 24 toolbox-24.bin
6 25 toolbox-25.bin
7 26 toolbox-26.bin
8 27 toolbox-27.bin
9 28 toolbox-28.bin
10 29 toolbox-29.bin
11 2A toolbox-2A.bin
12 2B toolbox-2B.bin
13 2C toolbox-2C.bin
14 2D toolbox-2D.bin
15 2E toolbox-2E.bin
16 2F toolbox-2F.bin
17 30 toolbox-30.bin
18 3F toolbox-3F.bin

Binary file not shown.

View file

@ -48,6 +48,17 @@ else ifeq ($(UNIT),F256)
else
LDFLAGS_FOR_UNIT=C256/f256-ld_lc.scm clib-lc-ld.a --rtattr printf=medium --cstartup=f256
endif
else ifeq ($(UNIT),F256JR2)
CPU=w65816
C_SRCS_DEBUGGER=$(DEBUGGER)/agent.c $(DEBUGGER)/c256-uart.c $(DEBUGGER)/low_level_WDC65816.s
SRCS_FOR_UNIT=cartridge.c C256/jumptable.s C256/io_stubs.c C256/extras.s C256/iecll.s C256/interrupts.s C256/f256-cstartup.s
CFLAGS_FOR_UNIT=-DMODEL=35 -DCPU=255 --code-model large --data-model large --target f256
ifeq ($(MEMORY),ROM)
LDFLAGS_FOR_UNIT=C256/f256k2-flash.scm clib-lc-ld.a --rtattr printf=medium --cstartup=f256
else
LDFLAGS_FOR_UNIT=C256/f256-ld_lc.scm clib-lc-ld.a --rtattr printf=medium --cstartup=f256
endif
else ifeq ($(UNIT),F256K)
CPU=w65816
C_SRCS_DEBUGGER=$(DEBUGGER)/agent.c $(DEBUGGER)/c256-uart.c $(DEBUGGER)/low_level_WDC65816.s

View file

@ -39,6 +39,13 @@ else ifeq ($(UNIT),F256)
SRCS_FOR_UNIT=txt_f256.c kbd_f256.c kbd_f256jr.c indicators_c256.c interrupts_f256.c sdc_f256.c iec.c # timers_c256.c
CFLAGS_FOR_UNIT=-DMODEL=2 -DCPU=255 --code-model large --data-model large --target f256
else ifeq ($(UNIT),F256JR2)
CC=cc65816
AS=as65816
AR=nlib
SRCS_FOR_UNIT=txt_f256.c kbd_f256.c kbd_f256jr.c indicators_c256.c interrupts_f256.c sdc_f256.c iec.c # timers_c256.c
CFLAGS_FOR_UNIT=-DMODEL=35 -DCPU=255 --code-model large --data-model large --target f256
else ifeq ($(UNIT),F256K)
CC=cc65816
AS=as65816

View file

@ -22,7 +22,7 @@
#if MODEL == MODEL_FOENIX_A2560K
#include "dev/kbd_mo.h"
#elif MODEL == MODEL_FOENIX_F256
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256JR2
#include "dev/kbd_f256jr.h"
#elif MODEL == MODEL_FOENIX_F256K
#include "dev/kbd_f256k.h"

View file

@ -14,7 +14,7 @@
#include "sys_general.h"
#if MODEL == MODEL_FOENIX_F256
#if MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256JR2
#include "kbd_f256jr.h"
#elif MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2
#include "kbd_f256k.h"

View file

@ -10,6 +10,7 @@
*/
#include <stdint.h>
#include <stdio.h>
#include "log_level.h"
#define DEFAULT_LOG_LEVEL LOG_ERROR

View file

@ -31,6 +31,16 @@ else ifeq ($(UNIT),F256)
SRCS_FOR_UNIT=toolbox_bdev.c
CFLAGS_FOR_UNIT=-DMODEL=2 -DCPU=255 --code-model large --data-model large --target f256
ifeq ($(MEMORY),ROM)
LDFLAGS_FOR_UNIT=C256/flash-f256.scm clib-lc-ld.a --rtattr printf=medium
else
LDFLAGS_FOR_UNIT=C256/ld_lc_f256.scm clib-lc-ld.a --rtattr printf=medium
endif
else ifeq ($(UNIT),F256JR2)
CPU=w65816
SRCS_FOR_UNIT=toolbox_bdev.c
CFLAGS_FOR_UNIT=-DMODEL=35 -DCPU=255 --code-model large --data-model large --target f256
ifeq ($(MEMORY),ROM)
LDFLAGS_FOR_UNIT=C256/flash-f256.scm clib-lc-ld.a --rtattr printf=medium
else

View file

@ -62,7 +62,7 @@
*/
union gabe_sys_stat_u {
struct {
uint8_t machine_id:5;
uint8_t machine_id:6;
};
uint8_t reg;
};

View file

@ -41,7 +41,7 @@
#define HAS_EXTERNAL_SIDS 1
#define HAS_OPL3 1
#define HAS_PATA 1
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256KE || MODEL == MODEL_FOENIX_F256K
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256KE || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256JR2
#define HAS_OPL3 1
#define HAS_IEC 1
#endif

View file

@ -18,7 +18,7 @@
#elif MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
#include "C256/gabe_c256.h"
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2 || MODEL == MODEL_FOENIX_F256JR2
#include "F256/gabe_f256.h"
#endif

View file

@ -17,7 +17,7 @@
#elif MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
#include "C256/ps2_c256.h"
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2 || MODEL == MODEL_FOENIX_F256JR2
#include "F256/ps2_f256.h"
#endif

View file

@ -67,7 +67,7 @@
#define RTC_CTRL ((volatile unsigned char *)0xaf080e)
#define RTC_CENTURY ((volatile unsigned char *)0xaf080f)
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2 || MODEL == MODEL_FOENIX_F256JR2
#define RTC_BASE ((volatile unsigned char *)0xf01690)
#define RTC_SEC ((volatile unsigned char *)0xf01690)

View file

@ -16,7 +16,7 @@
#elif MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
#include "C256/sound_c256.h"
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2 || MODEL == MODEL_FOENIX_F256JR2
#include "F256/sound_f256.h"
#endif

View file

@ -16,7 +16,7 @@
#elif MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
#include "C256/timers_c256.h"
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2 || MODEL == MODEL_FOENIX_F256JR2
#include "F256/timers_f256.h"
#endif

View file

@ -15,7 +15,7 @@
#define UART1_BASE 0x00B028F8 /* Base address for UART 1 (COM1) */
#define UART2_BASE 0x00B028F9 /* Base address for UART 2 (COM2) */
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2 || MODEL == MODEL_FOENIX_F256JR2
#define UART1_BASE 0x00F01630 /* Base address for UART 1 (COM1) */
#define UART2_BASE 0x00F01630 /* Base address for UART 2 (COM2) */
@ -95,7 +95,7 @@
#define UART_57600 21 /* Code for 57600 bps */
#define UART_115200 10 /* Code for 115200 bps */
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2 || MODEL == MODEL_FOENIX_F256JR2
#define UART_300 5244 /* Code for 300 bps */
#define UART_1200 1311 /* Code for 1200 bps */

View file

@ -17,7 +17,7 @@
#elif MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS
#include "C256/vicky_ii.h"
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2 || MODEL == MODEL_FOENIX_F256JR2
#include "F256/vicky_ii.h"
#endif

View file

@ -71,7 +71,7 @@
#define MASK_GRP2 ((volatile uint8_t *)0x00014e)
#define MASK_GRP3 ((volatile uint8_t *)0x00014f)
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2 || MODEL == MODEL_FOENIX_F256JR2
#define PENDING_GRP0 ((volatile uint8_t *)0xf01660)
#define PENDING_GRP1 ((volatile uint8_t *)0xf01661)

View file

@ -25,7 +25,7 @@ unsigned long mem_top_of_ram = 0;
void mem_init() {
#if MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K
mem_top_of_ram = 0x06ffff;
#elif MODEL == MODEL_FOENIX_F256K2
#elif MODEL == MODEL_FOENIX_F256K2 || MODEL == MODEL_FOENIX_F256JR2
mem_top_of_ram = 0x0effff;
#elif MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS || MODEL == MODEL_FOENIX_FMX
mem_top_of_ram = 0x37ffff;

View file

@ -39,6 +39,13 @@ else ifeq ($(UNIT),F256)
SRCS_FOR_UNIT=psg.c codec_c256.c sid.c
CFLAGS_FOR_UNIT=-DMODEL=2 -DCPU=255 --code-model large --data-model large --target f256
else ifeq ($(UNIT),F256JR2)
CC=cc65816
AS=as65816
AR=nlib
SRCS_FOR_UNIT=psg.c codec_c256.c sid.c
CFLAGS_FOR_UNIT=-DMODEL=35 -DCPU=255 --code-model large --data-model large --target f256
else ifeq ($(UNIT),F256K)
CC=cc65816
AS=as65816

View file

@ -35,7 +35,7 @@ static volatile uint8_t * psg_port(short chip) {
port = (uint8_t *)PSG_PORT;
break;
}
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2 || MODEL == MODEL_FOENIX_F256JR2
switch (chip) {
case 1:
port = PSG_PORT_L;

View file

@ -73,7 +73,7 @@ void sid_init_all() {
}
#if MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS || MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2
#if MODEL == MODEL_FOENIX_FMX || MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS || MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2 || MODEL == MODEL_FOENIX_F256JR2
/*
* Test the internal SID implementation
*/

View file

@ -28,6 +28,22 @@ const char * sys_model_name[] = {
"F256 K2",
"F256 Ke",
"F256 K2e" // 20
"Reserved",
"Reserved",
"Reserved",
"Reserved",
"Reserved", // 25
"Reserved",
"Reserved",
"Reserved",
"Reserved",
"Reserved", // 30
"Reserved",
"Reserved",
"Reserved",
"Reserved",
"Reserved",
"F256JR2"
};
/*
@ -158,7 +174,7 @@ SYSTEMCALL void sys_get_information(p_sys_info info) {
break;
}
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2 || MODEL == MODEL_FOENIX_F256JR2
machine_id = GABE_SYS_STAT->machine_id;
cpu = CPU_WDC65816;

View file

@ -30,7 +30,8 @@
#define MODEL_FOENIX_F256K2 17
#define MODEL_FOENIX_F256K 18
#define MODEL_FOENIX_F256KE 19
#define MDOEL_FOENIX_F256K2E 20
#define MODEL_FOENIX_F256K2E 20
#define MODEL_FOENIX_F256JR2 35
/* IDs for the CPUs supported */

View file

@ -22,7 +22,7 @@ void timers_init() {
*TIMER_TCR1 = TCR_ENABLE_3 | TCR_CNTUP_3;
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2 || MODEL == MODEL_FOENIX_F256JR2
// Timers off
*TIMER_CTRL_0 = 0;
@ -54,7 +54,7 @@ SYSTEMCALL long timers_jiffies() {
#if MODEL == MODEL_FOENIX_A2560U || MODEL == MODEL_FOENIX_A2560U_PLUS
return *TIMER_VALUE_3;
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2 || MODEL == MODEL_FOENIX_F256JR2
uint32_t result = (uint32_t)(*TIMER_CHG_L_1) | ((uint32_t)(*TIMER_CHG_M_1) << 8) | ((uint32_t)(*TIMER_CHG_H_1) << 16);
return result;

View file

@ -33,7 +33,7 @@
#elif MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS || MODEL == MODEL_FOENIX_FMX
#include "dev/txt_c256.h"
#include "dev/txt_evid.h"
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2 || MODEL == MODEL_FOENIX_F256JR2
#include "cartridge.h"
#include "dev/txt_f256.h"
#include "dev/kbd_f256.h"
@ -119,7 +119,7 @@ void initialize() {
txt_init_screen(TXT_SCREEN_EVID);
}
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2
#elif MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2 || MODEL == MODEL_FOENIX_F256JR2
*vky_brdr_col_red = 0x80;
*vky_brdr_col_green = 0x00;
*vky_brdr_col_blue = 0x80;

View file

@ -7,6 +7,6 @@
#define VER_MAJOR 1
#define VER_MINOR 1
#define VER_BUILD 4
#define VER_BUILD 9
#endif