Derived from a CPC new function, Hans has added it also to the Enterprise.
It is named Romtable, a different way to inject Roms.
On the usual way there is a start-up file named SF3-EP.INI, where we can define the Roms and the start segment(from the 256 possible). The Enterprise Roms can be from 16KB to 64KB, so the definition would be as this:
ROM[#61] =SD:SPEMU128.ROM
61h is the start segment, but the Rom is a 48KB one, so it will use the consecutive segments 62h and 63h.
All the Roms defined must be on the SF3 root directory of its SD card.
----
The new Romtable is a different approach. There is a directory on the SF3 SD named EP, and another one inside named Romtable. All the Rom files found on the directory at start-up will be placed on memory.
To make things faster, the Roms have been named as ROMXXX.BIN, where XXX indicates the decimal segment where they will go. Another auxiliary file will aid to know the real name of the Rom, ROMXXX.TXT.
----
The two systems will be shared on the future, so better if the same Rom definitions are not put on the two systems. The INI file is executed the last, so it will have priority over Romtable.
On the future, banks of Romtables will be allowed, being selected by a SF3 button and OLED screen at start-up.
----
Is this important for an Enterprise user? I don't know, really.... We don't have the CPC problems, where only the first 0-15 segments are possible to be defined for the SF3. We have Roms, a lot of useful Roms, but with fast SD cartridge access it is not very important for us if it is a file or a Rom.
And, for me is very awkward to manage Rom files with changed names, I prefer to have them defined with their real names on the INI file.
It has one main advantage: start-up is faster. And with the last update, the SF3 only connects to wifi on demand, when there is a service that needs it, not at start-up.
-----
It seems that all new functions work on the Enterprise:
F62,10: EP/Z80 >>> Array
F65 WEB >>> Array ! In development
F62,14 MSD >>> Array
F62,9: Array >>> Z80
F66 Array >>> ROMTABLE[]
F62,13 Array >>> External RAM
F62,12: Array >>> MSD
MSD here is the USB or SD port on the SF3.
Array is a zone on the Arm intermediate memory used by the SF3 to transfer data.
Hans wrote a minimum Rom manager in Basic with some of the functions:
[ Guests cannot view attachments ]
Tho only CPC specific function was the 1, where an example 64bytes Rom on DATA lines is created. I have adapted The function to the Enterprise, now it loads the "*.Rom" found on the program directory and tranferes it to the Array zone.
To not make things slow I have used a very simple machine code routine that reads characters one by one from the file and OUTs them to the SF3:
Mete: ld a,1 ; Channel 1
rst 30h ; EXOS 5 , Read character
db 5
and a
jr nz, fin ; NZ end of file
ld a, b
out (42h),a
jr Mete
fin: ret (editado)
I know, a system call every byte... but it avoids to allocate memory, and only last about 10 seconds to transfer a 16KB Rom.