Fixed Low-level IEC Calls
This commit is contained in:
parent
4322c38f28
commit
21055e3dfb
|
@ -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
|
@ -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
12
roms/f256k2/README.md
Normal 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
BIN
roms/f256k2/toolbox-20.bin
Normal file
Binary file not shown.
BIN
roms/f256k2/toolbox-21.bin
Normal file
BIN
roms/f256k2/toolbox-21.bin
Normal file
Binary file not shown.
BIN
roms/f256k2/toolbox-22.bin
Normal file
BIN
roms/f256k2/toolbox-22.bin
Normal file
Binary file not shown.
BIN
roms/f256k2/toolbox-23.bin
Normal file
BIN
roms/f256k2/toolbox-23.bin
Normal file
Binary file not shown.
BIN
roms/f256k2/toolbox-24.bin
Normal file
BIN
roms/f256k2/toolbox-24.bin
Normal file
Binary file not shown.
BIN
roms/f256k2/toolbox-25.bin
Normal file
BIN
roms/f256k2/toolbox-25.bin
Normal file
Binary file not shown.
BIN
roms/f256k2/toolbox-26.bin
Normal file
BIN
roms/f256k2/toolbox-26.bin
Normal file
Binary file not shown.
BIN
roms/f256k2/toolbox-27.bin
Normal file
BIN
roms/f256k2/toolbox-27.bin
Normal file
Binary file not shown.
BIN
roms/f256k2/toolbox-28.bin
Normal file
BIN
roms/f256k2/toolbox-28.bin
Normal file
Binary file not shown.
BIN
roms/f256k2/toolbox-29.bin
Normal file
BIN
roms/f256k2/toolbox-29.bin
Normal file
Binary file not shown.
BIN
roms/f256k2/toolbox-2A.bin
Normal file
BIN
roms/f256k2/toolbox-2A.bin
Normal file
Binary file not shown.
BIN
roms/f256k2/toolbox-2B.bin
Normal file
BIN
roms/f256k2/toolbox-2B.bin
Normal file
Binary file not shown.
BIN
roms/f256k2/toolbox-2C.bin
Normal file
BIN
roms/f256k2/toolbox-2C.bin
Normal file
Binary file not shown.
BIN
roms/f256k2/toolbox-2D.bin
Normal file
BIN
roms/f256k2/toolbox-2D.bin
Normal file
Binary file not shown.
BIN
roms/f256k2/toolbox-2E.bin
Normal file
BIN
roms/f256k2/toolbox-2E.bin
Normal file
Binary file not shown.
BIN
roms/f256k2/toolbox-2F.bin
Normal file
BIN
roms/f256k2/toolbox-2F.bin
Normal file
Binary file not shown.
BIN
roms/f256k2/toolbox-30.bin
Normal file
BIN
roms/f256k2/toolbox-30.bin
Normal file
Binary file not shown.
BIN
roms/f256k2/toolbox-3F.bin
Normal file
BIN
roms/f256k2/toolbox-3F.bin
Normal file
Binary file not shown.
2111
roms/f256k2/toolbox.bin
Normal file
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
18
roms/f256k2/toolbox.csv
Normal 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"
|
|
62
src/C256/f256k2-flash.scm
Normal file
62
src/C256/f256k2-flash.scm
Normal 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)
|
||||||
|
))
|
|
@ -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
|
||||||
|
|
||||||
;
|
;
|
||||||
|
|
15
src/Makefile
15
src/Makefile
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
BIN
src/toolbox-20.bin
Normal file
Binary file not shown.
BIN
src/toolbox-21.bin
Normal file
BIN
src/toolbox-21.bin
Normal file
Binary file not shown.
BIN
src/toolbox-22.bin
Normal file
BIN
src/toolbox-22.bin
Normal file
Binary file not shown.
BIN
src/toolbox-23.bin
Normal file
BIN
src/toolbox-23.bin
Normal file
Binary file not shown.
BIN
src/toolbox-24.bin
Normal file
BIN
src/toolbox-24.bin
Normal file
Binary file not shown.
BIN
src/toolbox-25.bin
Normal file
BIN
src/toolbox-25.bin
Normal file
Binary file not shown.
BIN
src/toolbox-26.bin
Normal file
BIN
src/toolbox-26.bin
Normal file
Binary file not shown.
BIN
src/toolbox-27.bin
Normal file
BIN
src/toolbox-27.bin
Normal file
Binary file not shown.
BIN
src/toolbox-28.bin
Normal file
BIN
src/toolbox-28.bin
Normal file
Binary file not shown.
BIN
src/toolbox-29.bin
Normal file
BIN
src/toolbox-29.bin
Normal file
Binary file not shown.
BIN
src/toolbox-2A.bin
Normal file
BIN
src/toolbox-2A.bin
Normal file
Binary file not shown.
BIN
src/toolbox-2B.bin
Normal file
BIN
src/toolbox-2B.bin
Normal file
Binary file not shown.
BIN
src/toolbox-2C.bin
Normal file
BIN
src/toolbox-2C.bin
Normal file
Binary file not shown.
BIN
src/toolbox-2D.bin
Normal file
BIN
src/toolbox-2D.bin
Normal file
Binary file not shown.
BIN
src/toolbox-2E.bin
Normal file
BIN
src/toolbox-2E.bin
Normal file
Binary file not shown.
BIN
src/toolbox-2F.bin
Normal file
BIN
src/toolbox-2F.bin
Normal file
Binary file not shown.
BIN
src/toolbox-30.bin
Normal file
BIN
src/toolbox-30.bin
Normal file
Binary file not shown.
BIN
src/toolbox-3F.bin
Normal file
BIN
src/toolbox-3F.bin
Normal file
Binary file not shown.
2143
src/toolbox.bin
Normal file
2143
src/toolbox.bin
Normal file
File diff suppressed because one or more lines are too long
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue