• Please review our updated Terms and Rules here

Epson HX-20 - FORTH ROM

0th I have to say that this is probably a matter of taste or reference system.
1st computers add the offset to the array address, so 0-based indices make perfect sense under the hood.
2nd I think that for humans it is more logical to start with a one (at kleast for us 10-fingered mammals).
In the end, it is always a nice source for errors and that's what counts ;-)

BTW: some programming languages allow defining arrays with arbitrary start and end index ranges (e.g. Fortran) and even in BASIC we have OPTION BAE 0|1.
 

LambdaMikel (or anyone) could you please attach image rom for Skiwriter ? simple burn on eprom 27c64a (or also 27c512 with adapted file) ?​

I read many and many post but not found a right copy of this.​

thanks​

Hi Dave, thanks much for taking a shot at that! Unfortunately, the system is frozen at that point, so I can't do anything with the monitor in order to do further debugging. My hope was that somebody would say - well, that ROM is indeed corrupt, here you have mine. But the only FORTH ROM that's floating around is that one, and what's strange is that some folks are saying that this image IS working in their machines, eluding to differences in the US and EU versions of the HX-20. Well, I tried with European (French) as well as the original US (?) ROMs, and it didn't make a difference to me. But there are also different motherboard revisions. But I doubt that this has anything to do with that. Hopefully somebody will let me know of the correct Hardware / Software configuration that makes this work (if it works at all... )

All I am doing is - Initialize the System. Ctrl-@. Enter the date again after re-initialize (one has to). Then the menu shows up. Then 3. Then crash. This happens with and without additional push to the reset button (which brings you into the menu again). Moreover, I also tried starting BASIC first. They occupy the same RAM. Some programs require BASIC to initialize the RAM first, e.g., SkiWriter. And sometimes, the behavior for FORTH is different then. On occasion, I am getting a "0" and then a "-" where I can enter sometime, so it looks like a FORTH interpreter. But it doesn't do anything. So it is definitely dependent on RAM state, as you already identified, but overall, 90 % of the time it's BREAK and dead, or Trap! and dead.

The FORTH EPROM is in the optinoal ROM slot (the one on the left). It occupies from 0x6000 on. The EPROMS and my programmer are fine; I am able to burn SkiWriter into a ST. Also same effect with the original system EPROMS; the hand-labeled ones in are identical with the exception of E1 HC-1 which I had replaced with the "French" system ROM because someone said to try that.

View attachment 1239571View attachment 1239572View attachment 1239573
 
Last edited:

LambdaMikel (or anyone) could you please attach image rom for Skiwriter ? simple burn on eprom 27c64a (or also 27c512 with adapted file) ?​

I read many and many post but not found a right copy of this.​

thanks​

Cannot say anything regarding the Ski ROM as I never had this but regarding the FORTH ROM - if you check through this thread you will find the discussion regarding the different ROM versions in the HX-20, the early version and the later version. Quite different to any US/UK/etc versions. The FORTH ROM was written in such a way that it worked ONLY on the original ROM But someone here was able to patch the ROM so that it will work on other version. You need to check which ROM version you have!

Geoff
 
This is the last update with the "final" version of my re-built ROM and proofread documentation. I found a few more unused bytes which allowed to add a 2/ word.
Would it be possible to modify it so that it fits in 4000-5FFF? I have an expansion unit, and the extra 16k only works if I disable the option rom on the MOSU. So, if it could be loaded from the option rom on the expansion unit, I could have nearly 32k for forth. Skiwriter also doesn't work unless it's in that option rom slot.
 
Regarding the Option ROM, this MIGHT be possible but it would be a LOT of work for just one user. I would first try to explore where the original problem comes from, and try to fix that.

The Option ROM merely switches what's available between 6000 and 7fff as per RAM or ROM. It should NOT be causing ROM to be available at 3000 to 4fff. If Option ROM is 'on' then this address range should be empty on your machine, if 'off' it would be RAM, as per the RAM chips fitted.

If you've got the external expansion unit, that also has ROM slot(s), then I suspect there is something wrong there which is confusing the memory map?

If you do various Ctrl+@ resets and report on the memory available, both with and without the expansion unit, what reading do you get?

My HX has an internal 16k RAM unit, and with Option ROM on then there is 24k RAM and the FORTH ROM works fine at 6000 to 7FFF, if Option ROM is off then I have 32k RAM and the FORTH is inactive. I have NOT referred to the System RAM that comes off the totals mentioned above.

Geoff
 
My HX has an internal 16k RAM unit, and with Option ROM on then there is 24k RAM and the FORTH ROM works fine at 6000 to 7FFF, if Option ROM is off then I have 32k RAM and the FORTH is inactive. I have NOT referred to the System RAM that comes off the totals mentioned above.
You can configure the expansion unit 1 on 2 off 3 off 4 on, to get 16k additional (+ the 16k builtin gets you 32k). That disables the internal option rom port, but... you do get the 13B (at least it reads the FORTH rom and shows it as available) and maybe 14B, but otherwise, you can flip the dip switches 1 off and 2 on to use the internal Option ROM, but you only get the +8k expanded ram and 16k for a total of 24k ram. I suppose it doesn't make much difference, but with Skiwriter loaded and the expansion unit there's only 9k free, which doesn't leave a lot of room for playing around with Basic.

Another option would be to remove the tape drive and put in a "Rom Cartridge II" and load it from there, but from what I read it works like a GROM (similar to the TI-99/4A grom) - sequential reads only. Not sure if the FORTH rom would work like that.

Ahh, I see I was misinformed. 13B is A000-BFFF and 13A is 8000-9FFF. Supposedly that would share the basic rom, but Basic seems to work, so I assume there's some bank switching going on? Either way, I'll give it a shot with just 24k ram. If it is possible to use 32k ram and one of the roms, then the only way that would work, which would include the built-in basic, is in 13B, so A000-BFFF.
 
Last edited:
Just tested, if I set the jumpers on the expansion unit to A,A and dip switches OFF,ON,OFF,ON then it does indeed load to the same mapping as the builtin option rom slot. That makes swapping out the software a little easier, though I cringe every time I swap a rom out when I hear the crunch. It just comes up with a 0 and a frozen cursor, so I think I need to get this working somehow with the usa basic.
 
I've never used one of the external expansion boxes (although I do have one, just never used it) so sorry if I'm a bit vague on it, but I'm not at all sure you can use BOTH the SkiWriter and the FORTH ROM.

My FORTH ROM (the HCCS system, which I got way back, and which I did the dump of and which I think is the base for the ROM you may have) is designed to operate at 6000 to 7FFF. The way that FORTH works, the code is already 'compiled', so the ROM contains a mass of jump addresses, most of which are in the 6000 to 7FFF range. Many of these are absolute addresses, although some will be relative so they would NOT need modification. Other addresses may be in the bottom or the top of memory, and again would not need changing.

My HX had a version 1 of the ROM, the FORTH was designed to work with this, but anyone with a version 2 of the ROM has problems as the ROM is slightly different and on startup the FORTH system makes some absolute JMPs into the ROM code which works fine on my machine, but causes the later version to crash. Martin H and Alan between them needed to amend parts of the ROM to get around this so that both versions worked.

HCCS ought NOT to have used absolute JMPs in this way, maybe EPSON promised them they would NOT modify the ROM, but HCCS did what they did and were then dropped in it!

As for the immediate problem, then is something odd happening when you use BOTH option ROM slots (I'm guessing) and this needs checking through. Esp check the long connector between the main unit and the expansion box, and make sure the DIP switches are clean, and the ROM pins are clean. There is a long thread on a BBC forum (StarDot) where someone spent some time getting the SkiWriter ROM (or a copy of it) to work at the address he wanted I'll try and find you the full like, but the link is also on the pjspot (?) website. I think that the Ski software will work at other addresses (is it just BASIC code ?) so it's not 'fixed' as the FORTH code is.

The code on the Cartridge is read sequentially into RAM to the address specified by the data on the cart, and is not processed untill it's 100% loaded. I suppose you could modify the data with the address markers, and byte counts, so that it will correctly load into 6000 to 7FFF. I think that when I Saved the code from the ROM, I actually used the SAVEM command, which added this data into the saved data anyway. I then had to write a little QB prog to manipulate the file to remove this extra data leaving me with the 8k of raw data for writing to the ROM chip. I may still have that file somewhere. BUT, the file would then be more that 8k, and I'm not sure what ROM chips could be used with the ROM drive?

Geoff
 
is it just BASIC code ?
No, the guy who wrote it said it was assembly, and he also wrote a telecomm part to it, though I haven't found it yet.

I'm not at all sure you can use BOTH the SkiWriter and the FORTH ROM
I'm not trying to do that, sorry for any confusion.
According to this, if I set it to 24kb ram (total) OFF/ON/ON/OFF A,A (column 3) 8 + 16 kByte ROM, 8 kByte RAM
Then, 6000-7FFF will be 13B. So, no need to modify the absolute jumps. Now I either get a trap or a 0 _ and lockup.

HCCS ought NOT to have used absolute JMPs in this way
I was reading the manual for the 6301 processor, relative jumps can only go to 256 with a fixed offset, so even if they wanted to use relative, it's going to limit how you can structure the resulting code. I did read somewhere about jump tables, but idk where or what is using those.

I'm not sure what ROM chips could be used with the ROM drive?
In the Rom Cartridge II that I have, it's a SEEQ, unsure the capacity, but I assume it's also 8k. It doesn't seem to do anything, so I'll have to investigate it and maybe fix it. This was part of a unit that had an eprom programmer expansion unit. It doesn't seem to have any extra ram on it.

BOTH option ROM slots
Nah, although that would be nice. I want to get the assembler/disassembler though, but that is a 16k rom image, and I'm all out of 16kbyte eeproms.
 
Back
Top