41CL - Problems with YFNZ in Page 6



#2

I sent Monte an email about this, but I wanted to find out if someone else could reproduce the problem.

I wanted to play around with some physical modules and felt that the best thing to do during my exploration was address the CL Extra Functions into Page 6 (the printer page).

When I did this, I got strange behavior with the Catalogs. Catalog 1 would seem to execute OK (only the .END. was displayed with empty user program memory), but the IMDB? Function was also obviously executed as well. With YFNZ in the Alpha register, Catalog 1 returns YFNZ-0-007 in the alpha register. With an empty Alpha register, Catalog 1 returns “BAD ID”. Catalog 2 just barely starts displaying the Time function header, and then immediately aborts. However, 41CL Extra Functions can be executed from the keyboard. Catalog 3 appears to do nothing, it just returns without displaying the Catalog. Catalog 4 appears to work, except that the 41CL is unresponsive to any key presses for a few seconds after it concludes. Catalog 6 does not seem to work either. If I try to assign a function to key, as soon as I press the Alpha key to enter the function name, I get “MEMORY LOST”.

I don’t think this is expected behavior for the HP-41C when a ROM is mapped to page 6. I’m pretty sure the HEPAX module would put itself there if possible without ill effect. I am testing using – YFNS 4B at 007000, but the behavior is the same using YFNS – 4C (latest patched version) at 808000 (in RAM). It is as if the operating system is making calls directly to page 6 addresses for printer calls, but that would make Page 6 unusable for anything except a Printer ROM.

Test procedure:

Master Clear
MMUCLR
YNFZ (into alpha register)
PLUGP
MMUEN

Then try out the previous examples. I have nothing plugged into the 41CL besides the HP-41 Timer Module, in Port 2.


#3

The Operating System calls subroutines in Page 6 (the printer ROM) frequently. The enry points to these routines are in the address range 6FC9-6FED. A non-printer module can be plugged into Page 6 only if these locations contain NOPs, so that the subroutine calls automatically and immediately return. To my knowledge only the HEPAX module deliberately keeps this area clear. Certainly the 41CL Extra Functions do not (I needed the space). I need to update the 41CL manual to make it clear that YFNZ cannot be plugged into Page 6.


#4

Monte's explanation about the root cause of the issues is correct.

However there is another module also compatible with Page#6: the PowerCL, that is.

In fact my preferred setup (without HP-IL of course) is as follws:

Page#6: PowerCL

Page#7: AMC_OS/X

Page#8: YFNP

That is 24k loaded and still pages 9-F free.

Cheers,
ÁM


#5

Thanks for all the help.

Another 'important safety tip'. (Don't cross the streams, and don't put anything but the HEPAX or PowerCL in Page 6.)

#6

Quote:
Page#6: PowerCL

Page#7: AMC_OS/X

Page#8: YFNP


Hi ÁM,

Do you not also load Library #4 into page 4? Or, do you use a Library-4-free version of PowerCL?

I wonder what it would take to make a smaller version of YFNP, perhaps without a few of the less commonly used functions (such as flash erase/write? OS MMU mappings? Serial port stuff?) that would have space to allow the NOPs to be inserted for compatibility with page 6. Maybe I will look into that after I am done learning the CL and your PowerCL to my satisfaction.

I think I'm going to try your page 6 and 7 mappings. Right now I have page 8 YFNP and 9 PowerCL (with 4 of course Library#4), because I'm afraid I'm going to forget to unmap them if I use an HP-IL or printer, and I sure don't want to break any of those 4 things (41CL, HP-IL, HP 41 printer, HP IR printer).

I wonder what would happen if I accidentally put a memory module, quad memory, X-Functions and/or X-Memory into my CL...

Thanks,

Doug


#7

Quote:
Do you not also load Library #4 into page 4? Or, do you use a Library-4-free version of PowerCL?

Well sure enough Library#4 goes in page#4 - cannot be otherwise since all other modules using it call hard-coded addresses. The point about it was precisely to be in an unused location, taking "no space" (i.e. non-competing with other modules). It works great as long as you don't have an HPIL with a "printer disabled" switch.

If you add the Lib#4 to that list then there's 28k and still pages #9-F free. I agree with you that requires being alert, moving things out to plug the HP-IL. It keeps you on your toes, so to speak - adds more fun to the CL experience.

A page#6-compatible YFNS could be possible. The no-fly areas required by the printer routines in the OS are small:

1. addresses 0x6FCB - 0x6FF3

2. addresses 0x6DB1 - 0x6DB3

but you can put YFNS now on page#7 (its default location after ML) pretty much getting the same benefits already.

I'll leave Monte to comment on the effects of physically plugging a memory module et. al on the CL - but I'd imagine the same as when too many of those are plugged on the "standard" 41: address conflict, likely lock-up - rather not do to avoid potential damage to both the module (who cares?) and the CL (we do!).

Cheers,
ÁM

Edited: 23 Jan 2013, 2:16 a.m.


#8

The 41CL board drives the data bus with the data that would normally be returned from a memory device sitting on the bus. This is so that anything hanging on the bus can see this data. If a memory module (regular or extended) were plugged into a CL it would normally "see" the memory write instructions and then try to return the same data on the bus that the CL was driving in the case of a read instruction. But this ONLY is true as long as the CL ever runs at 1x. In a Turbo mode, writes and reads are not automatically executed at 1x speed, so a memory device attached to the bus will not "see" them, which will eventually lead to bus conflicts. A bus conflict on the data bus will stress the driver on the CL board as well as the driver on the memory chip. This stress will eventually cause one or the other to fail.

Bottom line, don't plug in memory modules, an X-Function module, or X-Memory modules.


Possibly Related Threads...
Thread Author Replies Views Last Post
  HP-41CL setup troubleshooting Xavier A. (Brazil) 2 238 12-02-2013, 06:29 AM
Last Post: Xavier A. (Brazil)
  [41CL] New Extra Functions version Monte Dalrymple 0 142 11-08-2013, 04:32 PM
Last Post: Monte Dalrymple
  So, latest 41CL / Library 4 config is... Gene Wright 4 284 09-22-2013, 02:59 AM
Last Post: Ángel Martin
  HP-41CL anyone? Matt Agajanian 8 356 08-31-2013, 12:27 AM
Last Post: Sylvain Cote
  wp34s Manual Page Reference Barry Mead 1 156 07-23-2013, 07:13 AM
Last Post: Walter B
  EMU71 on a web page! hugh steers 13 534 07-14-2013, 12:47 PM
Last Post: Namir
  [41CL] A couple more rhetorical questions Monte Dalrymple 1 156 07-12-2013, 09:28 AM
Last Post: Ángel Martin
  What happened to the SandMath manual page? Garth Wilson 3 215 06-21-2013, 05:18 PM
Last Post: aurelio
  41CL :TROUBLE IN FILE TRANsFER aurelio 22 892 06-18-2013, 03:44 PM
Last Post: aurelio
  i41CX for iOS with page addressing Sylvain Cote 3 182 06-15-2013, 07:25 AM
Last Post: Ángel Martin

Forum Jump: