Dosbox For Dingoo A320


Mortys said:
Hi zear
I've just get a look at the Nanote and that could be such a machine for Dosbox, ScummnVM and other PC port (not the emus because of the keys I suppose) but can you tell me more on the compatibility of the machine with the dingux app and do you know if they're a wa to run an appli like openoffice ?
There is a dedicated port of Sarien (Sierra AGI games, like Larry), also ScummVM port from dingux works fine.
The thing with dingux compatibility is that Ben NanoNote uses XBurst Jz4720 CPU, while the Dingoo uses a similar - XBurst Jz4740 CPU, which makes them both binary compatible.
Ben's native color depth is 32bpp, however in the latest kernel it has a support of 16bpp, so you can run all the dingux binaries just fine.
Of course the keyboard layout is not the perfect then, but thanks to dingoo's buttons being detected as normal keyboard events - you can press them all on the NanoNote.
Only a small ammount of dingux games don't work on the NanoNote. Because of the pathes being hardcoded to dingoo's /boot/local/home(...), or (probably) because of cpu differences when using mips asm (hope dosbox won't have that problem).
And since Ben NanoNote does not run X11, just mostly SDL and gtk apps on fbdev - no, you can't run open office on it (it wouldn't work on 336MHz 32RAM machine anyway).

slaanesh said:
Where can I get a Ben Nanonote from?
I'm in Australia. I bought my A320 from Deal Extreme.
If I can get one I'll make sure there's good support for Ben Nanonote.
Official shop is shipping worldwide.
A list of local re-sellers might be found here. There is no Australia-located reseller, though.

BTW, that default 32bpp sounds perfect for the NanoNote ;D
 
Last edited by a moderator:
@zear :
Thanks for the precision, as I already get a Dingoo, I need to get the diffrences between the 2 machines. SO no way to have a Word Processor ? as I need one when I travel for my work and, sometimes, I need to writre some large articles (or just take notes).
What confuse me on the Nanonote is that nothing's clear on what working on native (just unboxed). As you seem to give them a large support, do you plan to create a page of a thread on this machine ?
In all cases, thanks for your work for the community (both of you).
 
Mortys said:
@ZeAr :
Thanks for the precision, as I already get a Dingoo, I need to get the diffrences between the 2 machines. SO no way to have a Word Processor ? as I need one when I travel for my work and, sometimes, I need to writre some large articles (or just take notes).
What confuse me on the Nanonote is that nothing's clear on what working on native (just unboxed). As you seem to give them a large support, do you plan to create a page of a thread on this machine ?
In all cases, thanks for your work for the community (both of you).
There is a plenty of terminal-based text editors - Vim, emacs, nano, mcedit, working on the device..
Not much comes preinstalled - just a couple of the most important linux apps. But it's enough to connect it to the USB and fetch all the apps you need from the package repository (opkg) :)

OK, enough of the offtopic ;)
 
Last edited by a moderator:
zear_ said:
The thing with dingux compatibility is that Ben NanoNote uses XBurst Jz4720 CPU, while the Dingoo uses a similar - XBurst Jz4740 CPU, which makes them both binary compatible.
In NanoNote specs there are words about OpenWrt that runs on ot
I have OpenWrt-based Wi-Fi router - Asus Wl500g. It's not even Jz47x0, it's some Broadcom 47xx MIPS32 chip based device. But it's has 100% binary compatibility with dingux - you can take any package from last OpenWrt Kamikaze 8.09 for and run it
Both br47xx-openwrt and dingux are MIPS32 ucLibc-based systems, so they are pretty compatible in both directions
 
Last edited by a moderator:
DOSBox on Dingoo would be AWESOME.

I don't have to worry too much about config files, my DOSBox setup boots straight into automenu and I can run all my games from there. As long as I can map the dpad to the cursor keys and the buttons to alt, shift, ctrl, space and enter to the buttons then I'm good to go.

Any idea when a beta of this will be available?
 
A bit of bad news for DOSBox - the dynarec is configured only for MIPS32R2 and the Dingoo A320 only supports MIPS32.

This is a pity as there are only a few changes required but I don't really have the depth of knowledge with dynarecs to make the changes.

The simple/normal cores work but I think we really want the dynarec working to get decent speed from this.

Could anyone have a look at this?

We need code for:

Code:
arch that lacks seb
and

Code:
arch that lacks seh

in the code below.

From risc_mipsel32.h:

Code:
// convert an 8bit word to a 32bit dword
// the register is zero-extended (sign==false) or sign-extended (sign==true)
static void gen_extend_byte(bool sign,HostReg reg) {
        if (sign) {
#if (_MIPS_ISA==MIPS32R2) || defined(PSP)
                cache_addw((reg<<11)+0x420);    // seb reg, reg
                cache_addw(0x7c00+reg);
#else
                arch that lacks seb
#endif
        } else {
                cache_addw(0xff);               // andi reg, reg, 0xff
                cache_addw(0x3000+(reg<<5)+reg);
        }
}

// convert a 16bit word to a 32bit dword
// the register is zero-extended (sign==false) or sign-extended (sign==true)
static void gen_extend_word(bool sign,HostReg reg) {
        if (sign) {
#if (_MIPS_ISA==MIPS32R2) || defined(PSP)
                cache_addw((reg<<11)+0x620);    // seh reg, reg
                cache_addw(0x7c00+reg);
#else
                arch that lacks seh
#endif
        } else {
                cache_addw(0xffff);             // andi reg, reg, 0xffff
                cache_addw(0x3000+(reg<<5)+reg);
        }
}

EDIT:
For reference, here are SEB and SEH macros from gpSP (GBA emu).

Code:
.macro m_seb dest,src
        sw      t0,-4($sp)
        andi    \dest,\src,0xff
        xori    \dest,0x80
        ori     t0,zero,0x80
        sub     \dest,t0
        lw      t0,-4($sp)
.endm

.macro m_seh dest,src
        sw        t0,-4($sp)
        andi  \dest,\src,0xffff
        xori  \dest,0x8000
        ori       t0,zero,0x8000
        sub       \dest,t0
        lw        t0,-4($sp)
.endm


EDIT1:
Am I missing something here or could you duplicate SEB and SEH in the following manner?
gpSP's method seems overly complicated.

Code:
.macro SEB
SLL  dest,src,24
SRA  dest,dest,24
.endm

.macro SEH
SLL  dest,src,16
SRA  dest,dest,16
.endm

EDIT2; Actually I just tried this in gpSP and it seems to work okay. Should be faster too! :)
Now just need to do the DOSBox version...

EDIT3: I gave it a go myself.
Here's my solution:

Code:
// convert an 8bit word to a 32bit dword
// the register is zero-extended (sign==false) or sign-extended (sign==true)
static void gen_extend_byte(bool sign,HostReg reg) {
        if (sign) {
#if (_MIPS_ISA==MIPS32R2) || defined(PSP)
                cache_addw((reg<<11)+0x420);    // seb reg, reg
                cache_addw(0x7c00+reg);
#else
                cache_addw((reg<<11)+(24<<6)+0); // sll reg,reg,24
                cache_addw(reg);
                cache_addw((reg<<11)+(24<<6)+3); // sra reg,reg,24
                cache_addw(reg);
#endif
        } else {
                cache_addw(0xff);               // andi reg, reg, 0xff
                cache_addw(0x3000+(reg<<5)+reg);
        }
}

// convert a 16bit word to a 32bit dword
// the register is zero-extended (sign==false) or sign-extended (sign==true)
static void gen_extend_word(bool sign,HostReg reg) {
        if (sign) {
#if (_MIPS_ISA==MIPS32R2) || defined(PSP)
                cache_addw((reg<<11)+0x620);    // seh reg, reg
                cache_addw(0x7c00+reg);
#else
                cache_addw((reg<<11)+(16<<6)+0); // sll reg,reg,16
                cache_addw(reg);
                cache_addw((reg<<11)+(16<<6)+3); // sra reg,reg,16
                cache_addw(reg);
#endif
        } else {
                cache_addw(0xffff);             // andi reg, reg, 0xffff
                cache_addw(0x3000+(reg<<5)+reg);
        }
}

However there's still a problem... somewhere. I get an illegal instruction error. Blah.
Can someone else check the above code to make sure it's all good?

There are other three other instances of #if (_MIPS_ISA==MIPS32R2) || defined(PSP).
One seems to be complete, the other two are:

Code:
static void gen_fill_function_ptr(Bit8u * pos,void* fct_ptr,Bitu flags_type)
...
...
#if (_MIPS_ISA==MIPS32R2) || defined(PSP)
                case t_RORd:
                        *(Bit32u*)pos=0x00a41046;                                       // rotr $v0, $a0, $a1
                        break;
#endif
Code:
static void cache_block_closing(Bit8u* block_start,Bitu block_size) {
#ifdef PSP
// writeback dcache and invalidate icache
        Bit32u inval_start = ((Bit32u)block_start) & ~63;
        Bit32u inval_end = (((Bit32u)block_start) + block_size + 64) & ~63;
        for (;inval_start < inval_end; inval_start+=64) {
                __builtin_allegrex_cache(0x1a, inval_start);
                __builtin_allegrex_cache(0x08, inval_start);
        }
#else
#ifdef A320
        // cacheflush() is limited on MIPS32 Linux
        // Although we specifiy start and size,
        // the entire ICACHE/DCACHE is flushed :( 
        cacheflush(block_start, block_size, BCACHE);
#endif //A320
#endif
}
I think the first one may be okay.
The second one probably needs attention.

EDIT4: I've just added some cacheflush code but have not tested yet.
Well still not working but it's segmentation faulting now instead of illegal instruction :)

EDIT5: I've made the fixes to SRA instruction. I gave it an initial test but there's still a problem somewhere. :-(
 
I still need some help with this.

As for BETA release, I think we want the dyna-rec working first. Otherwise it's just really a tech-demo.
Once it's going I will create a preliminary beta release so people can start getting their hands dirty.
 
I think you're using the wrong opcode for sra. The MIPS32 manual lists it as 11 in binary, or 3 in decimal - what you have, 11 in decimal or 0xB in hex, corresponds with "movn."
 
:D

I didn't convert the binary to decimal. Why didn't my editor know this is what I wanted?

Thanks for pointing out my error. Much appreciated.

EDIT: I've made the changes but there is still a problem.

Does anyone have a Dingux kernel that's compiled to generate core dumps?
That would be extremely useful I think. Please let me know ASAP and I can find out where the problem is here.

EDIT2: I'm not having any luck here.
I've tried SVN to grab the kernel code but it always fails at the same point.
Something with netfilter_ipv4 / ipt_limit.h. Blah. I've tried my Mac and a Windows machine and my work Windows machine.

Has anyone got a good clean copy of the kernel source code?
 
Alright, I think you can only build a linux kernel under linux - or be prepared to do a lot of tinkering.

Anyway here's my .config - I've got no where else to put it.

Code:
#
# Automatically generated make config: don't edit
# Linux kernel version: 2.6.24.3
# Thu Mar 25 10:30:42 2010
#
CONFIG_MIPS=y

#
# Machine selection
#
# CONFIG_JZ4730_PMP is not set
CONFIG_JZ4740_A320=y
# CONFIG_JZ4740_PAVO is not set
# CONFIG_JZ4740_LEO is not set
# CONFIG_JZ4740_LYRA is not set
# CONFIG_JZ4725_DIPPER is not set
# CONFIG_JZ4720_VIRGO is not set
# CONFIG_JZ4750_FUWA is not set
# CONFIG_JZ4750D_FUWA1 is not set
# CONFIG_JZ4750_APUS is not set
# CONFIG_JZ4750D_CETUS is not set
# CONFIG_JZ4750L_F4750L is not set
# CONFIG_MACH_ALCHEMY is not set
# CONFIG_BASLER_EXCITE is not set
# CONFIG_BCM47XX is not set
# CONFIG_MIPS_COBALT is not set
# CONFIG_MACH_DECSTATION is not set
# CONFIG_MACH_JAZZ is not set
# CONFIG_LASAT is not set
# CONFIG_LEMOTE_FULONG is not set
# CONFIG_MIPS_ATLAS is not set
# CONFIG_MIPS_MALTA is not set
# CONFIG_MIPS_SEAD is not set
# CONFIG_MIPS_SIM is not set
# CONFIG_MARKEINS is not set
# CONFIG_MACH_VR41XX is not set
# CONFIG_PNX8550_JBS is not set
# CONFIG_PNX8550_STB810 is not set
# CONFIG_PMC_MSP is not set
# CONFIG_PMC_YOSEMITE is not set
# CONFIG_QEMU is not set
# CONFIG_SGI_IP22 is not set
# CONFIG_SGI_IP27 is not set
# CONFIG_SGI_IP32 is not set
# CONFIG_SIBYTE_CRHINE is not set
# CONFIG_SIBYTE_CARMEL is not set
# CONFIG_SIBYTE_CRHONE is not set
# CONFIG_SIBYTE_RHONE is not set
# CONFIG_SIBYTE_SWARM is not set
# CONFIG_SIBYTE_LITTLESUR is not set
# CONFIG_SIBYTE_SENTOSA is not set
# CONFIG_SIBYTE_PTSWARM is not set
# CONFIG_SIBYTE_BIGSUR is not set
# CONFIG_SNI_RM is not set
# CONFIG_TOSHIBA_JMR3927 is not set
# CONFIG_TOSHIBA_RBTX4927 is not set
# CONFIG_TOSHIBA_RBTX4938 is not set
# CONFIG_WR_PPMC is not set
CONFIG_SOC_JZ4740=y
CONFIG_JZSOC=y
CONFIG_JZRISC=y
CONFIG_RWSEM_GENERIC_SPINLOCK=y
# CONFIG_ARCH_HAS_ILOG2_U32 is not set
# CONFIG_ARCH_HAS_ILOG2_U64 is not set
CONFIG_ARCH_SUPPORTS_OPROFILE=y
CONFIG_GENERIC_FIND_NEXT_BIT=y
CONFIG_GENERIC_HWEIGHT=y
CONFIG_GENERIC_CALIBRATE_DELAY=y
CONFIG_GENERIC_CLOCKEVENTS=y
CONFIG_GENERIC_TIME=y
CONFIG_GENERIC_CMOS_UPDATE=y
CONFIG_SCHED_NO_NO_OMIT_FRAME_POINTER=y
# CONFIG_GENERIC_HARDIRQS_NO__DO_IRQ is not set
CONFIG_DMA_NONCOHERENT=y
CONFIG_DMA_NEED_PCI_MAP_STATE=y
# CONFIG_HOTPLUG_CPU is not set
# CONFIG_NO_IOPORT is not set
CONFIG_GENERIC_GPIO=y
# CONFIG_CPU_BIG_ENDIAN is not set
CONFIG_CPU_LITTLE_ENDIAN=y
CONFIG_SYS_SUPPORTS_LITTLE_ENDIAN=y
CONFIG_MIPS_L1_CACHE_SHIFT=5

#
# CPU selection
#
# CONFIG_CPU_LOONGSON2 is not set
CONFIG_CPU_MIPS32_R1=y
# CONFIG_CPU_MIPS32_R2 is not set
# CONFIG_CPU_MIPS64_R1 is not set
# CONFIG_CPU_MIPS64_R2 is not set
# CONFIG_CPU_R3000 is not set
# CONFIG_CPU_TX39XX is not set
# CONFIG_CPU_VR41XX is not set
# CONFIG_CPU_R4300 is not set
# CONFIG_CPU_R4X00 is not set
# CONFIG_CPU_TX49XX is not set
# CONFIG_CPU_R5000 is not set
# CONFIG_CPU_R5432 is not set
# CONFIG_CPU_R6000 is not set
# CONFIG_CPU_NEVADA is not set
# CONFIG_CPU_R8000 is not set
# CONFIG_CPU_R10000 is not set
# CONFIG_CPU_RM7000 is not set
# CONFIG_CPU_RM9000 is not set
# CONFIG_CPU_SB1 is not set
CONFIG_SYS_HAS_CPU_MIPS32_R1=y
CONFIG_CPU_MIPS32=y
CONFIG_CPU_MIPSR1=y
CONFIG_SYS_SUPPORTS_32BIT_KERNEL=y
CONFIG_CPU_SUPPORTS_32BIT_KERNEL=y

#
# Kernel type
#
CONFIG_32BIT=y
# CONFIG_64BIT is not set
CONFIG_PAGE_SIZE_4KB=y
# CONFIG_PAGE_SIZE_8KB is not set
# CONFIG_PAGE_SIZE_16KB is not set
# CONFIG_PAGE_SIZE_64KB is not set
CONFIG_CPU_HAS_PREFETCH=y
CONFIG_MIPS_MT_DISABLED=y
# CONFIG_MIPS_MT_SMP is not set
# CONFIG_MIPS_MT_SMTC is not set
CONFIG_CPU_HAS_LLSC=y
CONFIG_CPU_HAS_SYNC=y
CONFIG_GENERIC_HARDIRQS=y
CONFIG_GENERIC_IRQ_PROBE=y
CONFIG_CPU_SUPPORTS_HIGHMEM=y
CONFIG_ARCH_FLATMEM_ENABLE=y
CONFIG_ARCH_POPULATES_NODE_MAP=y
CONFIG_SELECT_MEMORY_MODEL=y
CONFIG_FLATMEM_MANUAL=y
# CONFIG_DISCONTIGMEM_MANUAL is not set
# CONFIG_SPARSEMEM_MANUAL is not set
CONFIG_FLATMEM=y
CONFIG_FLAT_NODE_MEM_MAP=y
# CONFIG_SPARSEMEM_STATIC is not set
# CONFIG_SPARSEMEM_VMEMMAP_ENABLE is not set
CONFIG_SPLIT_PTLOCK_CPUS=4
# CONFIG_RESOURCES_64BIT is not set
CONFIG_ZONE_DMA_FLAG=0
CONFIG_VIRT_TO_BUS=y
# CONFIG_TICK_ONESHOT is not set
# CONFIG_NO_HZ is not set
# CONFIG_HIGH_RES_TIMERS is not set
CONFIG_GENERIC_CLOCKEVENTS_BUILD=y
CONFIG_FORCE_MAX_ZONEORDER=12
# CONFIG_HZ_48 is not set
CONFIG_HZ_100=y
# CONFIG_HZ_128 is not set
# CONFIG_HZ_250 is not set
# CONFIG_HZ_256 is not set
# CONFIG_HZ_1000 is not set
# CONFIG_HZ_1024 is not set
CONFIG_SYS_SUPPORTS_ARBIT_HZ=y
CONFIG_HZ=100
CONFIG_PREEMPT_NONE=y
# CONFIG_PREEMPT_VOLUNTARY is not set
# CONFIG_PREEMPT is not set
CONFIG_KEXEC=y
# CONFIG_SECCOMP is not set
CONFIG_LOCKDEP_SUPPORT=y
CONFIG_STACKTRACE_SUPPORT=y
CONFIG_DEFCONFIG_LIST="/lib/modules/$UNAME_RELEASE/.config"

#
# General setup
#
CONFIG_EXPERIMENTAL=y
CONFIG_BROKEN_ON_SMP=y
CONFIG_INIT_ENV_ARG_LIMIT=32
CONFIG_LOCALVERSION="-dingux"
CONFIG_LOCALVERSION_AUTO=y
# CONFIG_SWAP is not set
CONFIG_SYSVIPC=y
CONFIG_SYSVIPC_SYSCTL=y
# CONFIG_POSIX_MQUEUE is not set
# CONFIG_BSD_PROCESS_ACCT is not set
# CONFIG_TASKSTATS is not set
# CONFIG_USER_NS is not set
# CONFIG_PID_NS is not set
# CONFIG_AUDIT is not set
# CONFIG_IKCONFIG is not set
CONFIG_LOG_BUF_SHIFT=14
# CONFIG_CGROUPS is not set
# CONFIG_FAIR_GROUP_SCHED is not set
CONFIG_SYSFS_DEPRECATED=y
# CONFIG_RELAY is not set
CONFIG_BLK_DEV_INITRD=y
CONFIG_INITRAMFS_SOURCE="initrd.cpio"
CONFIG_INITRAMFS_ROOT_UID=0
CONFIG_INITRAMFS_ROOT_GID=0
# CONFIG_CC_OPTIMIZE_FOR_SIZE is not set
CONFIG_SYSCTL=y
CONFIG_EMBEDDED=y
CONFIG_SYSCTL_SYSCALL=y
# CONFIG_KALLSYMS is not set
CONFIG_HOTPLUG=y
CONFIG_PRINTK=y
CONFIG_BUG=y
CONFIG_ELF_CORE=y
# CONFIG_BASE_FULL is not set
CONFIG_FUTEX=y
# CONFIG_RESERVE_IPU_MEM is not set
CONFIG_ANON_INODES=y
CONFIG_EPOLL=y
CONFIG_SIGNALFD=y
CONFIG_EVENTFD=y
# CONFIG_SHMEM is not set
# CONFIG_VM_EVENT_COUNTERS is not set
CONFIG_SLAB=y
# CONFIG_SLUB is not set
# CONFIG_SLOB is not set
CONFIG_SLABINFO=y
CONFIG_RT_MUTEXES=y
CONFIG_TINY_SHMEM=y
CONFIG_BASE_SMALL=1
# CONFIG_MODULES is not set
CONFIG_BLOCK=y
# CONFIG_LBD is not set
# CONFIG_BLK_DEV_IO_TRACE is not set
# CONFIG_LSF is not set
# CONFIG_BLK_DEV_BSG is not set

#
# IO Schedulers
#
CONFIG_IOSCHED_NOOP=y
# CONFIG_IOSCHED_AS is not set
CONFIG_IOSCHED_DEADLINE=y
# CONFIG_IOSCHED_CFQ is not set
# CONFIG_DEFAULT_AS is not set
CONFIG_DEFAULT_DEADLINE=y
# CONFIG_DEFAULT_CFQ is not set
# CONFIG_DEFAULT_NOOP is not set
CONFIG_DEFAULT_IOSCHED="deadline"

#
# Bus options (PCI, PCMCIA, EISA, ISA, TC)
#
# CONFIG_ARCH_SUPPORTS_MSI is not set
CONFIG_MMU=y
# CONFIG_PCCARD is not set

#
# Executable file formats
#
CONFIG_BINFMT_ELF=y
# CONFIG_BINFMT_MISC is not set
CONFIG_TRAD_SIGNALS=y

#
# CPU Frequency scaling
#
CONFIG_CPU_FREQ_JZ=y
CONFIG_CPU_FREQ=y
CONFIG_CPU_FREQ_TABLE=y
CONFIG_CPU_FREQ_DEBUG=y
CONFIG_CPU_FREQ_STAT=y
CONFIG_CPU_FREQ_STAT_DETAILS=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_PERFORMANCE is not set
CONFIG_CPU_FREQ_DEFAULT_GOV_USERSPACE=y
# CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND is not set
# CONFIG_CPU_FREQ_DEFAULT_GOV_CONSERVATIVE is not set
CONFIG_CPU_FREQ_GOV_PERFORMANCE=y
CONFIG_CPU_FREQ_GOV_POWERSAVE=y
CONFIG_CPU_FREQ_GOV_USERSPACE=y
CONFIG_CPU_FREQ_GOV_ONDEMAND=y
CONFIG_CPU_FREQ_GOV_CONSERVATIVE=y

#
# Power management options
#
# CONFIG_PM is not set
CONFIG_SUSPEND_UP_POSSIBLE=y

#
# Networking
#
CONFIG_NET=y

#
# Networking options
#
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
CONFIG_UNIX=y
# CONFIG_NET_KEY is not set
CONFIG_INET=y
# CONFIG_IP_MULTICAST is not set
# CONFIG_IP_ADVANCED_ROUTER is not set
CONFIG_IP_FIB_HASH=y
# CONFIG_IP_PNP is not set
# CONFIG_NET_IPIP is not set
# CONFIG_NET_IPGRE is not set
# CONFIG_ARPD is not set
# CONFIG_SYN_COOKIES is not set
# CONFIG_INET_AH is not set
# CONFIG_INET_ESP is not set
# CONFIG_INET_IPCOMP is not set
# CONFIG_INET_XFRM_TUNNEL is not set
# CONFIG_INET_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_TRANSPORT is not set
# CONFIG_INET_XFRM_MODE_TUNNEL is not set
# CONFIG_INET_XFRM_MODE_BEET is not set
# CONFIG_INET_LRO is not set
# CONFIG_INET_DIAG is not set
# CONFIG_TCP_CONG_ADVANCED is not set
CONFIG_TCP_CONG_CUBIC=y
CONFIG_DEFAULT_TCP_CONG="cubic"
# CONFIG_TCP_MD5SIG is not set
# CONFIG_IPV6 is not set
# CONFIG_INET6_XFRM_TUNNEL is not set
# CONFIG_INET6_TUNNEL is not set
# CONFIG_NETWORK_SECMARK is not set
# CONFIG_NETFILTER is not set
# CONFIG_IP_DCCP is not set
# CONFIG_IP_SCTP is not set
# CONFIG_TIPC is not set
# CONFIG_ATM is not set
# CONFIG_BRIDGE is not set
# CONFIG_VLAN_8021Q is not set
# CONFIG_DECNET is not set
# CONFIG_LLC2 is not set
# CONFIG_IPX is not set
# CONFIG_ATALK is not set
# CONFIG_X25 is not set
# CONFIG_LAPB is not set
# CONFIG_ECONET is not set
# CONFIG_WAN_ROUTER is not set
# CONFIG_NET_SCHED is not set

#
# Network testing
#
# CONFIG_NET_PKTGEN is not set
# CONFIG_HAMRADIO is not set
# CONFIG_IRDA is not set
# CONFIG_BT is not set
# CONFIG_AF_RXRPC is not set

#
# Wireless
#
# CONFIG_CFG80211 is not set
# CONFIG_WIRELESS_EXT is not set
# CONFIG_MAC80211 is not set
# CONFIG_IEEE80211 is not set
# CONFIG_RFKILL is not set
# CONFIG_NET_9P is not set

#
# Device Drivers
#

#
# Generic Driver Options
#
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_STANDALONE=y
CONFIG_PREVENT_FIRMWARE_BUILD=y
# CONFIG_FW_LOADER is not set
# CONFIG_SYS_HYPERVISOR is not set
# CONFIG_CONNECTOR is not set
# CONFIG_MTD is not set
# CONFIG_PARPORT is not set
# CONFIG_PNP is not set
CONFIG_BLK_DEV=y
# CONFIG_BLK_DEV_COW_COMMON is not set
CONFIG_BLK_DEV_LOOP=y
# CONFIG_BLK_DEV_CRYPTOLOOP is not set
# CONFIG_BLK_DEV_NBD is not set
# CONFIG_BLK_DEV_RAM is not set
# CONFIG_CDROM_PKTCDVD is not set
# CONFIG_ATA_OVER_ETH is not set
# CONFIG_MISC_DEVICES is not set
# CONFIG_IDE is not set

#
# SCSI device support
#
# CONFIG_RAID_ATTRS is not set
# CONFIG_SCSI is not set
# CONFIG_SCSI_DMA is not set
# CONFIG_SCSI_NETLINK is not set
# CONFIG_ATA is not set
# CONFIG_MD is not set
CONFIG_NETDEVICES=y
# CONFIG_NETDEVICES_MULTIQUEUE is not set
# CONFIG_DUMMY is not set
# CONFIG_BONDING is not set
# CONFIG_MACVLAN is not set
# CONFIG_EQUALIZER is not set
# CONFIG_TUN is not set
# CONFIG_VETH is not set
# CONFIG_NET_ETHERNET is not set
# CONFIG_NETDEV_1000 is not set
# CONFIG_NETDEV_10000 is not set

#
# Wireless LAN
#
# CONFIG_WLAN_PRE80211 is not set
# CONFIG_WLAN_80211 is not set
# CONFIG_WAN is not set
# CONFIG_PPP is not set
# CONFIG_SLIP is not set
# CONFIG_SHAPER is not set
# CONFIG_NETCONSOLE is not set
# CONFIG_NETPOLL is not set
# CONFIG_NET_POLL_CONTROLLER is not set
# CONFIG_ISDN is not set
# CONFIG_PHONE is not set

#
# Input device support
#
CONFIG_INPUT=y
# CONFIG_INPUT_FF_MEMLESS is not set
CONFIG_INPUT_POLLDEV=y

#
# Userland interfaces
#
# CONFIG_INPUT_MOUSEDEV is not set
# CONFIG_INPUT_JOYDEV is not set
CONFIG_INPUT_EVDEV=y
# CONFIG_INPUT_EVBUG is not set

#
# Input Device Drivers
#
CONFIG_INPUT_KEYBOARD=y
# CONFIG_KEYBOARD_ATKBD is not set
# CONFIG_KEYBOARD_SUNKBD is not set
# CONFIG_KEYBOARD_LKKBD is not set
# CONFIG_KEYBOARD_XTKBD is not set
# CONFIG_KEYBOARD_NEWTON is not set
# CONFIG_KEYBOARD_STOWAWAY is not set
# CONFIG_KEYBOARD_JZ_KEYPAD is not set
# CONFIG_KEYBOARD_JZ_KEYPAD_5X5 is not set
CONFIG_KEYBOARD_JZ_GPIO_KEYS=y
# CONFIG_KEYBOARD_GPIO is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_INPUT_JOYSTICK is not set
# CONFIG_INPUT_TABLET is not set
# CONFIG_INPUT_TOUCHSCREEN is not set
# CONFIG_INPUT_MISC is not set

#
# Hardware I/O ports
#
# CONFIG_SERIO is not set
# CONFIG_GAMEPORT is not set

#
# Character devices
#
CONFIG_VT=y
CONFIG_VT_CONSOLE=y
CONFIG_HW_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y
# CONFIG_SERIAL_NONSTANDARD is not set

#
# Serial drivers
#
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=2
CONFIG_SERIAL_8250_RUNTIME_UARTS=2
# CONFIG_SERIAL_8250_EXTENDED is not set

#
# Non-8250 serial port support
#
CONFIG_SERIAL_CORE=y
CONFIG_SERIAL_CORE_CONSOLE=y
CONFIG_UNIX98_PTYS=y
CONFIG_LEGACY_PTYS=y
CONFIG_LEGACY_PTY_COUNT=2
# CONFIG_IPMI_HANDLER is not set
# CONFIG_HW_RANDOM is not set
# CONFIG_RTC is not set
# CONFIG_RTC_PCF8563 is not set
# CONFIG_RTC_JZ is not set
# CONFIG_R3964 is not set
# CONFIG_RAW_DRIVER is not set
# CONFIG_TCG_TPM is not set

#
# JZSOC char device support
#
CONFIG_JZCHAR=y
# CONFIG_JZ_CIM is not set
# CONFIG_JZ_TPANEL_ATA2508 is not set
# CONFIG_JZ_TPANEL is not set
CONFIG_JZ_SADC=y
# CONFIG_JZ_UDC_HOTPLUG is not set
# CONFIG_JZ_POWEROFF is not set
# CONFIG_JZ_OW is not set
# CONFIG_JZ_TCSM is not set
# CONFIG_I2C is not set

#
# SPI support
#
# CONFIG_SPI is not set
# CONFIG_SPI_MASTER is not set
# CONFIG_W1 is not set
# CONFIG_POWER_SUPPLY is not set
# CONFIG_HWMON is not set
# CONFIG_WATCHDOG is not set

#
# Sonics Silicon Backplane
#
CONFIG_SSB_POSSIBLE=y
# CONFIG_SSB is not set

#
# Multifunction device drivers
#
# CONFIG_MFD_SM501 is not set

#
# Multimedia devices
#
# CONFIG_VIDEO_DEV is not set
# CONFIG_DVB_CORE is not set
# CONFIG_DAB is not set

#
# Graphics support
#
# CONFIG_VGASTATE is not set
# CONFIG_VIDEO_OUTPUT_CONTROL is not set
CONFIG_FB=y
# CONFIG_FIRMWARE_EDID is not set
# CONFIG_FB_DDC is not set
CONFIG_FB_CFB_FILLRECT=y
CONFIG_FB_CFB_COPYAREA=y
CONFIG_FB_CFB_IMAGEBLIT=y
# CONFIG_FB_CFB_REV_PIXELS_IN_BYTE is not set
# CONFIG_FB_SYS_FILLRECT is not set
# CONFIG_FB_SYS_COPYAREA is not set
# CONFIG_FB_SYS_IMAGEBLIT is not set
# CONFIG_FB_SYS_FOPS is not set
CONFIG_FB_DEFERRED_IO=y
# CONFIG_FB_SVGALIB is not set
# CONFIG_FB_MACMODES is not set
# CONFIG_FB_BACKLIGHT is not set
# CONFIG_FB_MODE_HELPERS is not set
# CONFIG_FB_TILEBLITTING is not set

#
# Frame buffer hardware drivers
#
CONFIG_FB_JZSOC=y
CONFIG_FB_JZ4740_SLCD=y
# CONFIG_JZ_SLCD_A320_ILI9325 is not set
CONFIG_JZ_SLCD_A320_ILI9331=y
# CONFIG_JZ_SLCD_LGDP4551 is not set
# CONFIG_JZ_SLCD_SPFD5420A is not set
# CONFIG_JZ_SLCD_TRULY is not set
# CONFIG_FB_JZLCD_4730_4740 is not set
# CONFIG_FB_S1D13XXX is not set
# CONFIG_FB_VIRTUAL is not set
CONFIG_BACKLIGHT_LCD_SUPPORT=y
CONFIG_LCD_CLASS_DEVICE=y
CONFIG_BACKLIGHT_CLASS_DEVICE=y
# CONFIG_BACKLIGHT_CORGI is not set

#
# Display device support
#
CONFIG_DISPLAY_SUPPORT=y

#
# Display hardware drivers
#

#
# Console display driver support
#
# CONFIG_VGA_CONSOLE is not set
CONFIG_DUMMY_CONSOLE=y
CONFIG_FRAMEBUFFER_CONSOLE=y
# CONFIG_FRAMEBUFFER_CONSOLE_DETECT_PRIMARY is not set
CONFIG_FRAMEBUFFER_CONSOLE_CURSOR_FLASH=y
# CONFIG_FRAMEBUFFER_CONSOLE_ROTATION is not set
CONFIG_FONTS=y
# CONFIG_FONT_8x8 is not set
# CONFIG_FONT_8x16 is not set
# CONFIG_FONT_6x11 is not set
# CONFIG_FONT_7x14 is not set
# CONFIG_FONT_PEARL_8x8 is not set
# CONFIG_FONT_ACORN_8x8 is not set
CONFIG_FONT_MINI_4x6=y
# CONFIG_FONT_SUN8x16 is not set
# CONFIG_FONT_SUN12x22 is not set
# CONFIG_FONT_10x18 is not set
CONFIG_LOGO=y
# CONFIG_LOGO_LINUX_MONO is not set
# CONFIG_LOGO_LINUX_VGA16 is not set
# CONFIG_LOGO_LINUX_CLUT224 is not set
CONFIG_LOGO_DINGUX_CLUT224=y

#
# Sound
#
CONFIG_SOUND=y

#
# Advanced Linux Sound Architecture
#
# CONFIG_SND is not set

#
# Open Sound System
#
CONFIG_SOUND_PRIME=y
CONFIG_OSS_OBSOLETE=y
# CONFIG_SOUND_JZ_AC97 is not set
CONFIG_SOUND_JZ_I2S=y
# CONFIG_I2S_AK4642EN is not set
CONFIG_I2S_ICODEC=y
# CONFIG_I2S_DLV is not set
# CONFIG_HID_SUPPORT is not set
CONFIG_USB_SUPPORT=y
CONFIG_USB_ARCH_HAS_HCD=y
CONFIG_USB_ARCH_HAS_OHCI=y
# CONFIG_USB_ARCH_HAS_EHCI is not set
# CONFIG_USB is not set

#
# NOTE: USB_STORAGE enables SCSI, and 'SCSI disk support'
#

#
# USB Gadget Support
#
CONFIG_USB_GADGET=y
# CONFIG_USB_GADGET_DEBUG_FILES is not set
CONFIG_USB_GADGET_SELECTED=y
CONFIG_USB_GADGET_JZ4740=y
CONFIG_USB_JZ4740=y
# CONFIG_USB_GADGET_JZ4750 is not set
# CONFIG_USB_GADGET_JZ4750D is not set
# CONFIG_USB_GADGET_JZ4750L is not set
# CONFIG_USB_GADGET_JZ4730 is not set
# CONFIG_USB_GADGET_AMD5536UDC is not set
# CONFIG_USB_GADGET_ATMEL_USBA is not set
# CONFIG_USB_GADGET_FSL_USB2 is not set
# CONFIG_USB_GADGET_NET2280 is not set
# CONFIG_USB_GADGET_PXA2XX is not set
# CONFIG_USB_GADGET_M66592 is not set
# CONFIG_USB_GADGET_GOKU is not set
# CONFIG_USB_GADGET_LH7A40X is not set
# CONFIG_USB_GADGET_OMAP is not set
# CONFIG_USB_GADGET_S3C2410 is not set
# CONFIG_USB_GADGET_AT91 is not set
# CONFIG_USB_GADGET_DUMMY_HCD is not set
CONFIG_USB_GADGET_DUALSPEED=y
# CONFIG_USB_ZERO is not set
CONFIG_USB_ETH=y
CONFIG_USB_ETH_RNDIS=y
# CONFIG_USB_GADGETFS is not set
# CONFIG_USB_FILE_STORAGE is not set
# CONFIG_USB_G_SERIAL is not set
# CONFIG_USB_MIDI_GADGET is not set
CONFIG_MMC=y
# CONFIG_MMC_DEBUG is not set
# CONFIG_MMC_UNSAFE_RESUME is not set

#
# MMC/SD Card Drivers
#
CONFIG_MMC_BLOCK=y
CONFIG_MMC_BLOCK_BOUNCE=y
# CONFIG_SDIO_UART is not set

#
# MMC/SD Host Controller Drivers
#
CONFIG_MMC_JZ=y
# CONFIG_JZ_MMC_BUS_1 is not set
CONFIG_JZ_MMC_BUS_4=y
# CONFIG_NEW_LEDS is not set
CONFIG_RTC_LIB=y
# CONFIG_RTC_CLASS is not set

#
# Userspace I/O
#
# CONFIG_UIO is not set

#
# File systems
#
CONFIG_EXT2_FS=y
# CONFIG_EXT2_FS_XATTR is not set
# CONFIG_EXT2_FS_XIP is not set
# CONFIG_EXT3_FS is not set
# CONFIG_EXT4DEV_FS is not set
# CONFIG_REISERFS_FS is not set
# CONFIG_JFS_FS is not set
# CONFIG_FS_POSIX_ACL is not set
# CONFIG_XFS_FS is not set
# CONFIG_GFS2_FS is not set
# CONFIG_OCFS2_FS is not set
# CONFIG_MINIX_FS is not set
CONFIG_ROMFS_FS=y
CONFIG_INOTIFY=y
CONFIG_INOTIFY_USER=y
# CONFIG_QUOTA is not set
CONFIG_DNOTIFY=y
# CONFIG_AUTOFS_FS is not set
# CONFIG_AUTOFS4_FS is not set
# CONFIG_FUSE_FS is not set

#
# CD-ROM/DVD Filesystems
#
# CONFIG_ISO9660_FS is not set
# CONFIG_UDF_FS is not set

#
# DOS/FAT/NT Filesystems
#
CONFIG_FAT_FS=y
CONFIG_MSDOS_FS=y
CONFIG_VFAT_FS=y
CONFIG_FAT_DEFAULT_CODEPAGE=437
CONFIG_FAT_DEFAULT_IOCHARSET="iso8859-1"
# CONFIG_NTFS_FS is not set

#
# Pseudo filesystems
#
CONFIG_PROC_FS=y
CONFIG_PROC_KCORE=y
CONFIG_PROC_SYSCTL=y
CONFIG_SYSFS=y
CONFIG_TMPFS=y
# CONFIG_TMPFS_POSIX_ACL is not set
# CONFIG_HUGETLB_PAGE is not set
# CONFIG_CONFIGFS_FS is not set

#
# Miscellaneous filesystems
#
# CONFIG_ADFS_FS is not set
# CONFIG_AFFS_FS is not set
# CONFIG_HFS_FS is not set
# CONFIG_HFSPLUS_FS is not set
# CONFIG_BEFS_FS is not set
# CONFIG_BFS_FS is not set
# CONFIG_EFS_FS is not set
# CONFIG_CRAMFS is not set
# CONFIG_VXFS_FS is not set
# CONFIG_HPFS_FS is not set
# CONFIG_QNX4FS_FS is not set
# CONFIG_SYSV_FS is not set
# CONFIG_UFS_FS is not set
# CONFIG_NETWORK_FILESYSTEMS is not set

#
# Partition Types
#
# CONFIG_PARTITION_ADVANCED is not set
CONFIG_MSDOS_PARTITION=y
CONFIG_NLS=y
CONFIG_NLS_DEFAULT="iso8859-1"
CONFIG_NLS_CODEPAGE_437=y
# CONFIG_NLS_CODEPAGE_737 is not set
# CONFIG_NLS_CODEPAGE_775 is not set
# CONFIG_NLS_CODEPAGE_850 is not set
# CONFIG_NLS_CODEPAGE_852 is not set
# CONFIG_NLS_CODEPAGE_855 is not set
# CONFIG_NLS_CODEPAGE_857 is not set
# CONFIG_NLS_CODEPAGE_860 is not set
# CONFIG_NLS_CODEPAGE_861 is not set
# CONFIG_NLS_CODEPAGE_862 is not set
# CONFIG_NLS_CODEPAGE_863 is not set
# CONFIG_NLS_CODEPAGE_864 is not set
# CONFIG_NLS_CODEPAGE_865 is not set
# CONFIG_NLS_CODEPAGE_866 is not set
# CONFIG_NLS_CODEPAGE_869 is not set
CONFIG_NLS_CODEPAGE_936=y
# CONFIG_NLS_CODEPAGE_950 is not set
# CONFIG_NLS_CODEPAGE_932 is not set
# CONFIG_NLS_CODEPAGE_949 is not set
# CONFIG_NLS_CODEPAGE_874 is not set
# CONFIG_NLS_ISO8859_8 is not set
# CONFIG_NLS_CODEPAGE_1250 is not set
# CONFIG_NLS_CODEPAGE_1251 is not set
CONFIG_NLS_ASCII=y
CONFIG_NLS_ISO8859_1=y
# CONFIG_NLS_ISO8859_2 is not set
# CONFIG_NLS_ISO8859_3 is not set
# CONFIG_NLS_ISO8859_4 is not set
# CONFIG_NLS_ISO8859_5 is not set
# CONFIG_NLS_ISO8859_6 is not set
# CONFIG_NLS_ISO8859_7 is not set
# CONFIG_NLS_ISO8859_9 is not set
# CONFIG_NLS_ISO8859_13 is not set
# CONFIG_NLS_ISO8859_14 is not set
# CONFIG_NLS_ISO8859_15 is not set
# CONFIG_NLS_KOI8_R is not set
# CONFIG_NLS_KOI8_U is not set
# CONFIG_NLS_UTF8 is not set
# CONFIG_DLM is not set

#
# Yaffs2 Filesystems
#
# CONFIG_INSTRUMENTATION is not set

#
# Kernel hacking
#
CONFIG_TRACE_IRQFLAGS_SUPPORT=y
# CONFIG_PRINTK_TIME is not set
CONFIG_ENABLE_WARN_DEPRECATED=y
CONFIG_ENABLE_MUST_CHECK=y
CONFIG_MAGIC_SYSRQ=y
# CONFIG_UNUSED_SYMBOLS is not set
# CONFIG_DEBUG_FS is not set
# CONFIG_HEADERS_CHECK is not set
# CONFIG_DEBUG_KERNEL is not set
# CONFIG_SAMPLES is not set
CONFIG_CMDLINE="console=tty0 boot=/dev/mmcblk0,/dev/mmcblk0p1 loop0=/boot/rootfs root=/dev/loop0 jz4740_udc.use_dma=0"

#
# Security options
#
# CONFIG_KEYS is not set
# CONFIG_SECURITY is not set
# CONFIG_SECURITY_FILE_CAPABILITIES is not set
# CONFIG_CRYPTO is not set

#
# Library routines
#
CONFIG_BITREVERSE=y
# CONFIG_CRC_CCITT is not set
# CONFIG_CRC16 is not set
# CONFIG_CRC_ITU_T is not set
CONFIG_CRC32=y
# CONFIG_CRC7 is not set
# CONFIG_LIBCRC32C is not set
CONFIG_PLIST=y
CONFIG_HAS_IOMEM=y
CONFIG_HAS_IOPORT=y
CONFIG_HAS_DMA=y
 
slaanesh said:
Alright, I think you can only build a linux kernel under linux - or be prepared to do a lot of tinkering.

Anyway here's my .config - I've got no where else to put it.
here is your kernel - http://fileonfly.com/get/wgw0g8okkw :)
 
Last edited by a moderator:
Eltaron said:
slaanesh said:
Alright, I think you can only build a linux kernel under linux - or be prepared to do a lot of tinkering.

Anyway here's my .config - I've got no where else to put it.
here is your kernel - http://fileonfly.com/get/wgw0g8okkw :)
Fantastic - thank you.

I'm just curious, I assume you compiled this on a linux box?

EDIT: Sorry, I forgot to change my LCD display. I have the 9331. I've updated the above .config
Can you build again? Very sorry. Thank you for being patient.

Excuse: I have a young family - my son was born 9 weeks ago so I've been very busy with my family.
On top of that my 2.5yr old daughter still likes to play a lot so she occupies me as well :)
 
Last edited by a moderator:
slaanesh said:
I'm just curious, I assume you compiled this on a linux box?
yes, the simplest way to build linux kernel is to use linux for it :)

EDIT: Sorry, I forgot to change my LCD display. I have the 9331. I've updated the above .config
Can you build again? Very sorry. Thank you for being patient.

Excuse: I have a young family - my son was born 9 weeks ago so I've been very busy with my family.
On top of that my 2.5yr old daughter still likes to play a lot so she occupies me as well :)
http://fileonfly.com/get/4cws4g8o44 :)
 
Last edited by a moderator:
Eltaron said:
http://fileonfly.com/get/4cws4g8o44 :)

Thanks for that again. Success this time. I'm getting core files.
I will be examining these closely.

From what I could see I think the following is the problem:

Currently the following is defined - which is true for the PSP but I think this is not correct for Dingux.

ie. Does o32 ABI == EABI? From what i've read it's not the case and which is why this is failing.


Code:
#define __mips_eabi 1

#ifdef __mips_eabi
// max of 8 parameters in $a0-$a3 and $t0-$t3

// load an immediate value as param'th function parameter
static void INLINE gen_load_param_imm(Bitu imm,Bitu param) {
        gen_mov_dword_to_reg_imm(param+4, imm);
}

// load an address as param'th function parameter
static void INLINE gen_load_param_addr(Bitu addr,Bitu param) {
        gen_mov_dword_to_reg_imm(param+4, addr);
}

// load a host-register as param'th function parameter
static void INLINE gen_load_param_reg(Bitu reg,Bitu param) {
        gen_mov_regs(param+4, reg);
}

// load a value from memory as param'th function parameter
static void INLINE gen_load_param_mem(Bitu mem,Bitu param) {
        gen_mov_word_to_reg(param+4, (void *)mem, 1);
}
#else
        other mips abis
#endif

EDIT: The above seems to be correct. Registers 5,6,7 & 8 are used to pass parameters around functions.
 
Last edited by a moderator:
First instruction is an INT 0x21.

Here's the log:

/boot/local/dosbox # ./dosbox.dge
CommandLine
Config Add SDL
DOSBOX Init
DOSBox version 0.73
Copyright 2002-2009 DOSBox Team, published under GNU GPL.
---
CONFIG:Loading primary settings from config file dosbox.conf
MIDI:Opened device:none
opcode cd
interrupt 21
dyn_reduce_cycles
gen_call_function_IIR
dyn_return
dyn_closeblock
core_dynrec.runcode(2b40c000)
Segmentation fault

Anyone have any ideas? Examining the generated code is the obvious one. Anything else?
 
Hi!,

I know this could sound dumb or obvious, but have you tried to contact the person who made the port for the psp? I'm pretty sure having both opcode tables he could aim you towards a good direction. Dynarec is a little beast, it is a bit difficult for people external to the project to know what's hapenning.

Good luck mate, and good work so far,
HexDump.
 
Actually i think I've found the problem.
It looks like it's calls to functions using the JAL instruction.
It seems like these calls are going beyond the 256MB limit - which I know seems odd but here's my evidence:

Code:
// generate a call to a parameterless function
static void INLINE gen_call_function_raw(void * func) {
if (((unsigned int)cache.pos ^ (unsigned int)func) & 0xf0000000) printf("***ERROR*** jump overflow\n");
        temp1_valid = false;
        cache_addd(0x0c000000+(((Bit32u)func>>2)&0x3ffffff));           // jal func
        DELAY;
}

I'm getting the ***ERROR*** message.
It looks like JALR might be better?
 
Back
Top