• Please review our updated Terms and Rules here

Epson HX-20 - FORTH ROM

@daver2 sorry, no, I have not.


@Martin Hepperle ,
regarding

As there seems to be a V1.1 of these Japan ROMs (used e.g. in US and UK), we will have 4 sets in total.

FWIW, here are the MD5 checksums / correspondences of my ROMs with yours - the SHA1 hash of Desktop\test\HX20ROM_E000-FFFF_EUROPEAN_V1.1.bin MONITOR ROM is different, everything else is identical. Does that make my HX20 US or European now?

In the former case, I guess I would have the US 1.1 ROMs (the ones from the pic I attached earlier):

>>>>>>>>>>>>>>>>>>>

SHA1 hash of Desktop\test\C1-HX2.bin:
b282d7233b2689820fcf718dbe1e93d623b67e4f

SHA1 hash of Desktop\test\HX20ROM_C000-DFFF_EUROPEAN_V1.1.bin:
b282d7233b2689820fcf718dbe1e93d623b67e4f

====================

SHA1 hash of Desktop\test\D1-HX2.bin:
3163954ed9981f70f590ee98bcc8e19e4be6527a

SHA1 hash of Desktop\test\HX20ROM_A000-BFFF_EUROPEAN_V1.1.bin:
3163954ed9981f70f590ee98bcc8e19e4be6527a

====================

SHA1 hash of Desktop\test\E1-HC2.bin:
e0b5cf107a9387e34a0e46f54328b89696c0bdc5

SHA1 hash of Desktop\test\HX20ROM_E000-FFFF_EUROPEAN_V1.1.bin:
860c3579c45e96c5e6a877f4fbe77abacb0d674e

====================

SHA1 hash of Desktop\test\E1-HX2.bin:
f15c537824b7effde9d9b9a21e92a081fb089371

SHA1 hash of Desktop\test\HX20ROM_8000-9FFF_EUROPEAN_V1.1.bin:
f15c537824b7effde9d9b9a21e92a081fb089371

====================
 
I have another machine with a weird setup - it still has the original EPSON BASIC 1R1 ROMs, which is actually BASIC 1.0, as well as a 1.0 monitor. Then, ROM2 has a 27128 (!), and Skiwriter in the option ROM slot. @GeoffB17 ROM0.BIN ( the Monitor) is identical with your 1.0 version, and I am assuming that the BASIC ROMs are the same in your machine then? I am unable to read them with the programmer (see here for a hack https://fjkraan.home.xs4all.nl/comp/hx20/ROMdump.html), but it might not be worth it if we already have this set anyhow. Interestingly, the original (unpatched) FORTH does NOT work with that machine; i.e., replacing the SkyWriter option ROM with the FORTH doesn't do it. I guess that might be due to the weird ROM2 though.

@Martin Hepperle and @GeoffB17 let me know if you think it's wort retrieving these (P)ROMs.
 

Attachments

  • 20220331_104946.jpg
    20220331_104946.jpg
    354.8 KB · Views: 5
  • 20220331_105009.jpg
    20220331_105009.jpg
    267.6 KB · Views: 5
What memory range does the SkiWriter use? Is the SkiWriter active/live in any way?

The FORTH ROM MUST use 6000-7FFF, this is built into the ROM and the code in there. The system will not work if there is any interference with any addresses in the 6000-7FFF range.

One of the other people on the StarDot forum was messing with the SkiWriter system, I can't remember what he found about it, or if he got his working. Look through all the older postings there in that HX thread.

Geoff
 
@GeoffB17 SkiWriter goes in the option ROM, this is 11E, and this always gets mapped to 0x6000 to 0x7FFF, same as Forth.

https://fjkraan.home.xs4all.nl/comp/hx20/memoryMap.html

Oh, SkiWriter works fine, and the rest of the machine too, despite the weird ROM2! I was also able to burn my own SkiWriter ROM and put it in another machine with the Epson 1.1 ROMs that I own. So it doesn't have an issue with 1.1 either, unlike Forth. That was another SkiWriter BIN from the web though; not sure if mine is identical. I can read it out as well.
 

Attachments

  • 20220331_124303.jpg
    20220331_124303.jpg
    376.2 KB · Views: 2
  • 20220331_124317.jpg
    20220331_124317.jpg
    338.5 KB · Views: 2
  • 20220331_124349.jpg
    20220331_124349.jpg
    375.9 KB · Views: 2
@GeoffB17 if you want to try SkiWriter, you can just download it from here, I am assuming my image is identical to the one there, but haven't checked (that's the same guy that also hosts your Forth image):
 
Hello,

I've had quite a bit of corresp with Paul who owns the pjspot site. He was a big help when I was trying to 'rescue' the Simon Taylor Bomber/Blitz game from a degraded cassette. Paul had access to a standard micro-cassette player and was able to extract a weak recording, and then try various options via Audacity until it would finally LOAD into the HX. His description of the process is on his web site.

The game is rather neat by the way, and works well on the HX screen.

I may look at SkiWriter one day, but I've got at least one other WP prog, something called WRITE. This is a BASIC prog that works fine, but being BASIC it can be modified. I adjusted it so that is could work with my floppy disk drive (when it was working), now maybe I could do something with SAV as a WAV, etc. Some of the things I've seen suggest that SkiWriter is a BASIC prog as well, but I'll have a look in the memory image?

Something else now, well, back to the FORTH actually.

I'd been planning to try to get something working (or rather, see if I could get this to work) regarding using the connection between the CASS output on the HX and the PC (Laptop) so that I could SAVE a FORTH screen, and then LOAD it back. Can do this with BASIC fine, and this is a big help, esp as I can 'get at' the .WAV file on the computer. Not so easy as if it was on a floppy disk drive, but effectively the same options.

I've just managed this, and it does all work as hoped for.

I attach a .ZIP file, FORTH_D1, this contains a .TXT file DISP1.TXT which is the ASCII print of a FORTH 'screen' with the definition of a new word DISPLAY, which is separate part of the FORTH Disassembler process I have. As this works, I can do the full Disassem as well, but this is a little more complicated as it needs two screens which must be LOADED one after the other.

DISPLAY works fine, it just gives a list of the address links within a word, but does not explain what they are. You just get the numbers. The full Disassem process gives a lot more detail, incl the name of each component in the definition.

The process really needs the printer to be ON, there's more info that will fit on the screen.

Oh, also in the zip is FORTH018.WAV. You need to get this onto your PC, get the two connected up, go into FORTH and type

18 LOAD

and then start the WAV playing on the PC.

It should load the screen data, and then compile the code and add the words into the dictionary. The new code should stay there as long as you just use FORTH, and do a WARM start. If you use BASIC, you'll mess things up.

You use the new word by entering DISPLAY <word>, so DISPLAY DISPLAY shows it's own components, while DISPLAY BEEP does the same for that definition. I've got a pile of little printouts from years ago, when my printer was still working.

The DISP1.TXT is the code loaded. I've got DISP2 and 3 for the UNCOMPILE definitions, but not yet converted then to WAVs.

This code is taken from an article published 198? - it might have been in the .EXE magazine. I've got a photocopy of the complete article, 4 pages, which I could scan, Title 'Digging in the Dictionary' by Dr Gordon Gilmore. Explains all the details of the FORTH dictionary, and what the DISPLAY and UNCOMPILE definitions are doing.

Anyone got the FORTH operating, please try this and check that it works for you.

Geoff
 

Attachments

  • FORTH_D1.ZIP
    95.4 KB · Views: 6
Further to the above, two things I planned to mention, but forgot.

Firstly, when I loaded the .WAV file, there seemed to be a bit of garbage on the screen at the end. The data is actually part of the saved file, which has a endpiece that is a copy of the initial header. This should NOT appear, but it does not affect anything. The actual data in the screen should have loaded correctly. If you do a VLIST at this point, then DISPLAY should be the new first word, and the previous first word, 2*, will appear a few items down the list.

Secondly, note that the SAVE file for a BASIC prog is just a text file, but the SAVE file for FORTH is actually the same data/format as the SAVEM process which saves a preset RAM image. Just needs some extra fiddle with the data with the hxtape processes to extract the needed text from the SAVEM file, and to regenerate the SAVEM image later to be re-loaded back to the HX.

Fun!

Oh, I've had a look at the SkiWriter menory image file, and I see that the data there is machine code, not BASIC. Not sure why it needs BASIC 'loaded', as the ROM would be available anyway - must do something with the low memory work area (as does FORTH, but this NOT compatible with BASIC). As I noted, the WRITE system (that was sold by Kuma all those years ago) seemed to work OK, and being BASIC it could be modified.

Geoff
 
@GeoffB17 That, unfortunately, did not work for me. When I enter
18 LOAD
it clears the screen, says "18 Searching", then shows the boot message, but no attempt is made to read from the tape.
I have the external tape recorder connected over the cables. BASIC has no issue loading that way, but Forth doesn't do it.
Something wrong?

EDIT: Ah, I see.

CASS
18 LOAD

does it... let me try again...
 
Last edited:
@GeoffB17 thanks for sharing, that WAV worked well!
DISPLAY BEEP asked me for the number of parameters (I put in 2), and then the printer started going...
I found it more convenient to first record it to tape, because of the motor control. Also, it's actually easier for me with the physical TONE and VOLUME controls on the tape recorder for proper levels than messing with the Windows controls.
 

Attachments

  • 20220331_210813.jpg
    20220331_210813.jpg
    445.2 KB · Views: 3
  • 20220331_210803.jpg
    20220331_210803.jpg
    418.1 KB · Views: 3
Last edited:
PS The FORTH behaves very similar to the Microprofessor FORTH which I am familiar with. E.g.,

Code:
10 5 BEEP

is the same as

Code:
10 5 ' BEEP CFA EXECUTE

I guess the PFA - 2 = CFA offset is typical FIGForth, etc. All good!

Even recursive definitions using CALL compiler extensions / compiling word (see IMMEDIATE) work fine, just like on the Microprofessor:

Code:
: CALL LATEST PFA CFA , ;  IMMEDIATE
: FACT DUP 2 < IF DROP 1 ELSE DUP 1 - CALL * THEN ;
6 FACT . -> 720 OK

It doesn't have 1-, but that's ok, as it's just 1 - ;)
So, that's a pretty cool FORTH - compiler extensions etc. are all possible. I should even be able to do DOER / MAKE on that one.
 
Last edited:
See post #92: Technical Manual page 3-34 ha a list of foreign languages selectable with the JAPAN and EUROPE ROMs.
There is some overlap.

And sure, UK is not part of Europe, has it ever been? ;-) ;-) ;-) Let's ask the French.
 
... and concerning your last roll of paper... more to explore ...
1) is there a way to redirect the printer (or program) output to the serial port? This could be very useful.
2) how do the mass storage words work - would they also be useable with a floppy disk drive via the serial port?
 
Good to see that the DISPLAY thing is working. I'll try to get UNCOMPILE done the same way.

Apologies - I should have noted the CASS thing. CASS and MCASS are the toggles to swap the tape drive between the mc and the ext tape. To load a file from the ezt tape then you need to use CASS, as MCASS is the default.

That 'Parameters' question. It refers to the number of lines of output after the header, the default was 11, so 2 is not enough to give the complete definition. Even BEEP has 6 or so. DISPLAY has 20+. The original code printed in the article did not have that question, it just did 11 lines. I added/changed the code to ask the question and respond accordingly. If the number is not enough, then it just stops and does not do all the words in the definition. If the number is too big, then I think it just stops at the end of the definition. DISPLAY is intended to indicate if the word is a 'normal' word, rather than necessarily do the whole thing.

Paper. The official EPSON paper rolls are very nice paper, but not sure if you can get them now. The rolls are the same width as certain standard till rolls available easily here, but these rolls are too large to go into the compartment. But if you leave the lid open, then they work fine. Or you can remove enough of the paper so they DO fit inside. You can always re-roll the paper onto the used spool later.

As for Martin's questions just above, are you talking specifically about FORTH, or more generally? And which 'serial' port, the RS-232 or the 'High Speed' one? The problem with the mass storage words will be the buffering required, not sure if the different devices (screen, printer, RS232, HS) use the same buffering/memory?

Geoff
 
Paper. The official EPSON paper rolls are very nice paper, but not sure if you can get them now. The rolls are the same width as certain standard till rolls available easily here, but these rolls are too large to go into the compartment. But if you leave the lid open, then they work fine. Or you can remove enough of the paper so they DO fit inside. You can always re-roll the paper onto the used spool later.
Right. That's what I did; it's a bit wasteful as I didn't roll it back. They are so inexpensive that I didn't care that much. Even though I think I bought thermal paper, but it is nice enough, and the ink dries quickly.
 
Apologies - I should have noted the CASS thing. CASS and MCASS are the toggles to swap the tape drive between the mc and the ext tape. To load a file from the ezt tape then you need to use CASS, as MCASS is the default.
No worries - that's why I did the vlist on paper... I suspected something like this, but it would be really nice to get the Forth glossary from the manual scanned at some point ;) At least now I know what words are defined (looking them up in the ROM BIN is a bit tedious, and they scroll through too quickly on the display otherwise - in principle, there is no such things as "text output is too fast" on an HX-20 :LOL: ... with that one exception) Also wondering if there is a way / key press that would pause the listing?
 
Last edited:
Michael,

Just re-read your earlier comment. Realised what you meant, i.e. you've 'played' the WAV and recorded it to tape, then done input to the HX from the tape player. Is that what you meant?

That should be perfectly OK. Maybe I've been lucky, I use a specific laptop to record from the HX, and PLAY back to the HX, and the two systems seem to work OK at 'normal' settings. I've not had to mess at all with level/tone settings. Maybe with another computer I would have? I've also got a TASCAM digital recorder, and I've used this too, but this is fine at playing the WAV files that have been copied to the SD card, but if I try to record direct to the TASCAM device then the level is never enough. Just the luck with the relative level/sensitivity of the interfaces.

Geoff
 
Just re-read your earlier comment. Realised what you meant, i.e. you've 'played' the WAV and recorded it to tape, then done input to the HX from the tape player. Is that what you meant?
@GeoffB17 , yes that's exactly it. I also own a Philips digital voice recorder that records WAV (not MP3), which is also handy for these kinds of things (and I think it even has motor control!), but I just like the old-style Panasonic computer cassette player which is actually a dedicated datacorder.

Btw, you mentioned that your printer is no longer operational. As a token of gratitude for blessing us with THE FORTH, I'd like to offer you my spare printer which I just checked (pictures attached), and it is fully operational. It's a gift, you'll only need to send me your address (PM). Unfortunately, I can't help with fixing your micro cassette drive, as I don't have spares... these are very difficult to maintain. Swapping the belt is a pain... I just had to go through this hell 3 weeks ago.

The printer is very easy to swap. Just 3 screws basically. I can also pop in a SkiWriter option EPROM if you like. Let me know!
 

Attachments

  • 20220401_090233.jpg
    20220401_090233.jpg
    471.7 KB · Views: 7
  • 20220401_090301.jpg
    20220401_090301.jpg
    417.1 KB · Views: 7
Thanks for the offer, I'll think on it. Actually, I have two 'spare' printers already. I have one in another non-functioning HX, and I have a loose one as well. Also, I suspect that the one in my working HX just needs a little lubrication. When I try to use it, it starts printing, makes some usual noise, then stops and the screen displays 'Charge Battery' and the HX stops working. I suspect that the printer is trying to work, but it's trying to draw too much current. When I turn the HX back on again, all is working fine. The printer has not been used for a LOT of years.

As for the cassette drive, I have a spare complete one, and the works for another. I have detailed instructions for changing the band, I just don't have a suitable replacement band that I'm SURE will fit, and I've not taken the plunge to complete opening up the drive that I've started to get into. With the WAV options, it's not a vital thing.

Geoff
 
Back
Top