Fixed Low-level IEC Calls

This commit is contained in:
Peter Weingartner 2024-12-03 14:11:23 -05:00
parent 4322c38f28
commit 21055e3dfb
88 changed files with 4764 additions and 381 deletions

View file

@ -1,6 +1,6 @@
# ROM Files for the F256jr # ROM Files for the F256JRe
This directory contains BIN files for programming the F256jr flash memory with the Foenix Toolbox. This directory contains BIN files for programming the F256JRe flash memory with the Foenix Toolbox.
## How to Install ## How to Install

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.

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.

File diff suppressed because one or more lines are too long

View file

@ -1,6 +1,6 @@
# ROM Files for the F256K # ROM Files for the F256Ke
This directory contains BIN files for programming the F256K flash memory with the Foenix Toolbox. This directory contains BIN files for programming the F256Ke flash memory with the Foenix Toolbox.
## How to Install ## How to Install

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.

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.

File diff suppressed because one or more lines are too long

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

@ -0,0 +1,12 @@
# ROM Files for the F256K2e
This directory contains BIN files for programming the F256K2e 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 F256K's USB debug port):
```
python FoenixMgr.zip --port {debug device name} --flash-bulk toolbox.csv
```

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

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

Binary file not shown.

2111
roms/f256k2/toolbox.bin Normal file

File diff suppressed because one or more lines are too long

18
roms/f256k2/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

62
src/C256/f256k2-flash.scm Normal file
View file

@ -0,0 +1,62 @@
(define memories
'(
(memory flash
(address (#xfc0000 . #xffdfff))
(type ROM)
(fill #xff)
(section
data_init_table
data
ifar))
(memory flash-high
(address (#xffe000 . #xfffeff))
(type ROM)
(fill #xff)
(section jumptable))
(memory flash-shadow
(address (#xffff00 . #xffffff))
(type ROM)
(fill 0)
(section
(LoCodeStorage #xffff00)
(VectorStorage #xffffe0)))
(memory LoCode
(address (#x00ff00 . #x00ffdf))
(type ROM)
(scatter-to LoCodeStorage)
(section code cdata))
(memory Vector
(address (#x00ffe0 . #x00ffff))
(type ROM)
(scatter-to VectorStorage)
(section (reset #xfffc)))
(memory hiram
(address (#x0f0000 . #x0fffff))
(type RAM)
(section heap))
(memory loram
(address (#x00d000 . #x00dfff))
(type RAM)
(placement-group nobits (section zdata znear))
(placement-group bits (section data near)))
(memory stackram
(address (#x00edeb . #xfdeb))
(type RAM)
(section stack))
(memory DirectPage
(address (#x00fe00 . #x00feff))
(section (registers ztiny)))
(block stack (size #x1000))
(block heap (size #x1000))
(base-address _DirectPageStart DirectPage 0)
(base-address _NearBaseAddress hiram 0)
))

View file

@ -102,7 +102,7 @@ release_RST: release_bit IEC_RST_o
;; ;;
sleep_20us: phx sleep_20us: phx
ldx #20 ldx #14
_loop$ dex _loop$ dex
bne _loop$ bne _loop$
plx plx
@ -635,7 +635,7 @@ iecll_eoi php
rtl rtl
not_eoi$ plp not_eoi$ plp
lda #0 lda ##0
rtl rtl
; ;

View file

@ -1,7 +1,7 @@
# VPATH=.:../../module/Calypsi-remote-debug/src # VPATH=.:../../module/Calypsi-remote-debug/src
DEBUGGER=../module/Calypsi-remote-debug/src DEBUGGER=../module/Calypsi-remote-debug/src
UNIT := F256K UNIT := F256K2
MEMORY := ROM MEMORY := ROM
# Define OS-dependent variables # Define OS-dependent variables
@ -52,13 +52,24 @@ else ifeq ($(UNIT),F256K)
CPU=w65816 CPU=w65816
C_SRCS_DEBUGGER=$(DEBUGGER)/agent.c $(DEBUGGER)/c256-uart.c $(DEBUGGER)/low_level_WDC65816.s 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 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=17 -DCPU=255 --code-model large --data-model large --target f256 CFLAGS_FOR_UNIT=-DMODEL=18 -DCPU=255 --code-model large --data-model large --target f256
ifeq ($(MEMORY),ROM) ifeq ($(MEMORY),ROM)
LDFLAGS_FOR_UNIT=C256/f256-flash.scm clib-lc-ld.a --rtattr printf=medium --cstartup=f256 LDFLAGS_FOR_UNIT=C256/f256-flash.scm clib-lc-ld.a --rtattr printf=medium --cstartup=f256
else else
LDFLAGS_FOR_UNIT=C256/f256-ld_lc.scm clib-lc-ld.a --rtattr printf=medium --cstartup=f256 LDFLAGS_FOR_UNIT=C256/f256-ld_lc.scm clib-lc-ld.a --rtattr printf=medium --cstartup=f256
endif endif
else ifeq ($(UNIT),F256K2)
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=17 -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
endif endif
ifeq ($(CPU),w65816) ifeq ($(CPU),w65816)

View file

@ -1,5 +1,5 @@
UNIT := F256K UNIT := F256K2
# Define OS-dependent variables # Define OS-dependent variables
@ -44,6 +44,13 @@ else ifeq ($(UNIT),F256K)
AS=as65816 AS=as65816
AR=nlib AR=nlib
SRCS_FOR_UNIT=txt_f256.c kbd_f256.c kbd_f256k.c indicators_c256.c interrupts_f256.c sdc_f256.c iec.c # timers_c256.c
CFLAGS_FOR_UNIT=-DMODEL=18 -DCPU=255 --code-model large --data-model large --target f256
else ifeq ($(UNIT),F256K2)
CC=cc65816
AS=as65816
AR=nlib
SRCS_FOR_UNIT=txt_f256.c kbd_f256.c kbd_f256k.c indicators_c256.c interrupts_f256.c sdc_f256.c iec.c # timers_c256.c SRCS_FOR_UNIT=txt_f256.c kbd_f256.c kbd_f256k.c indicators_c256.c interrupts_f256.c sdc_f256.c iec.c # timers_c256.c
CFLAGS_FOR_UNIT=-DMODEL=17 -DCPU=255 --code-model large --data-model large --target f256 CFLAGS_FOR_UNIT=-DMODEL=17 -DCPU=255 --code-model large --data-model large --target f256
endif endif

View file

@ -37,6 +37,16 @@ else ifeq ($(UNIT),F256)
LDFLAGS_FOR_UNIT=C256/ld_lc_f256.scm clib-lc-ld.a --rtattr printf=medium LDFLAGS_FOR_UNIT=C256/ld_lc_f256.scm clib-lc-ld.a --rtattr printf=medium
endif endif
else ifeq ($(UNIT),F256K) else ifeq ($(UNIT),F256K)
CPU=w65816
SRCS_FOR_UNIT=toolbox_bdev.c
CFLAGS_FOR_UNIT=-DMODEL=18-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),F256K2)
CPU=w65816 CPU=w65816
SRCS_FOR_UNIT=toolbox_bdev.c SRCS_FOR_UNIT=toolbox_bdev.c
CFLAGS_FOR_UNIT=-DMODEL=17 -DCPU=255 --code-model large --data-model large --target f256 CFLAGS_FOR_UNIT=-DMODEL=17 -DCPU=255 --code-model large --data-model large --target f256

View file

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

View file

@ -23,8 +23,10 @@ unsigned long mem_top_of_ram = 0;
* @param top_of_ram initial value for the top of system RAM * @param top_of_ram initial value for the top of system RAM
*/ */
void mem_init() { void mem_init() {
#if MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K || MODEL == MODEL_FOENIX_F256K2 #if MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K
mem_top_of_ram = 0x06ffff; mem_top_of_ram = 0x06ffff;
#elif MODEL == MODEL_FOENIX_F256K2
mem_top_of_ram = 0x0effff;
#elif MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS || MODEL == MODEL_FOENIX_FMX #elif MODEL == MODEL_FOENIX_C256U || MODEL == MODEL_FOENIX_C256U_PLUS || MODEL == MODEL_FOENIX_FMX
mem_top_of_ram = 0x37ffff; mem_top_of_ram = 0x37ffff;
#else #else

View file

@ -44,6 +44,13 @@ else ifeq ($(UNIT),F256K)
AS=as65816 AS=as65816
AR=nlib AR=nlib
SRCS_FOR_UNIT=psg.c codec_c256.c sid.c
CFLAGS_FOR_UNIT=-DMODEL=18 -DCPU=255 --code-model large --data-model large --target f256
else ifeq ($(UNIT),F256K2)
CC=cc65816
AS=as65816
AR=nlib
SRCS_FOR_UNIT=psg.c codec_c256.c sid.c SRCS_FOR_UNIT=psg.c codec_c256.c sid.c
CFLAGS_FOR_UNIT=-DMODEL=17 -DCPU=255 --code-model large --data-model large --target f256 CFLAGS_FOR_UNIT=-DMODEL=17 -DCPU=255 --code-model large --data-model large --target f256
endif endif

View file

@ -173,7 +173,12 @@ SYSTEMCALL void sys_get_information(p_sys_info info) {
info->fpga_version = GABE_VERSION->version; info->fpga_version = GABE_VERSION->version;
info->fpga_subver = GABE_VERSION->subversion; info->fpga_subver = GABE_VERSION->subversion;
#if MODEL == MODEL_FOENIX_F256 || MODEL == MODEL_FOENIX_F256K
info->system_ram_size = (uint32_t)512 * (uint32_t)1024 * (uint32_t)1024; info->system_ram_size = (uint32_t)512 * (uint32_t)1024 * (uint32_t)1024;
#else
// F256K2e has 1MB of system RAM
info->system_ram_size = (uint32_t)1024 * (uint32_t)1024 * (uint32_t)1024;
#endif
#else #else
machine_id = 0xFF; machine_id = 0xFF;

BIN
src/toolbox-20.bin Normal file

Binary file not shown.

BIN
src/toolbox-21.bin Normal file

Binary file not shown.

BIN
src/toolbox-22.bin Normal file

Binary file not shown.

BIN
src/toolbox-23.bin Normal file

Binary file not shown.

BIN
src/toolbox-24.bin Normal file

Binary file not shown.

BIN
src/toolbox-25.bin Normal file

Binary file not shown.

BIN
src/toolbox-26.bin Normal file

Binary file not shown.

BIN
src/toolbox-27.bin Normal file

Binary file not shown.

BIN
src/toolbox-28.bin Normal file

Binary file not shown.

BIN
src/toolbox-29.bin Normal file

Binary file not shown.

BIN
src/toolbox-2A.bin Normal file

Binary file not shown.

BIN
src/toolbox-2B.bin Normal file

Binary file not shown.

BIN
src/toolbox-2C.bin Normal file

Binary file not shown.

BIN
src/toolbox-2D.bin Normal file

Binary file not shown.

BIN
src/toolbox-2E.bin Normal file

Binary file not shown.

BIN
src/toolbox-2F.bin Normal file

Binary file not shown.

BIN
src/toolbox-30.bin Normal file

Binary file not shown.

BIN
src/toolbox-3F.bin Normal file

Binary file not shown.

2143
src/toolbox.bin Normal file

File diff suppressed because one or more lines are too long

View file

@ -7,6 +7,6 @@
#define VER_MAJOR 1 #define VER_MAJOR 1
#define VER_MINOR 1 #define VER_MINOR 1
#define VER_BUILD 2 #define VER_BUILD 3
#endif #endif