Subject: Re: DM2K et. al.[

From: [email-masked]
Date: Thu, 24 Dec 2009 17:27:06 EST

This is probably a problem unique to my particular system so let me explain 
 what I have installed:
 
A HSGPL-modified console
A P-Box with:
 
AVPC Card
HSGPL Card
RS232 Card
HRD16 3 Meg Ramdisk
BWG Disk Controller
Myarc HDFC (modified to act only as a hard drive  controller)
SAMS Card (1 meg)
 
The operating system is the HSGPL BOOT program with F'WEB as my primary  
operating system with RXB as my default XB.
 
I have a couple of 3.5" floppy drives and two 20 meg hard drives attached  
as well as two printers and a modem.
 
The problem that I have is that I have never been able to  successfully run 
DM2K in any version from 2.0 up. Vn 1.9 runs great and I can  copy, delete, 
etc. files from anywhere to any destination in the system. Any  version 
above Vn 1.9 doesn't work correctly. When I try to use the "Copy file"  
operative, for example, nothing appears next to the filename in the directory of  
the later versions and that is as far as I can go.  In addition,  neither  
DM2K (Vn 2.0-2.4) or DU Vn 2.0) exit gracefully when "Q" is  pressed - I 
simply get a blue screen and apparent lockup. I get identical  results whether I 
load DM2K from F'WEB, the RXB E/A cartridge, or a regular,  stock E/A 
cartridge. It also doesn't matter whether I load DM2K from a  RAMdisk, physical 
floppy, or a Hard Drive. The results are always the same.  Anyone else have 
problems running the more recent versions of DM2K on an  80-column system? Any 
assistance would be greatly appreciated. 

Bob  Carmany

---

From: "fredkaal" <[email-masked]>
Date: Fri, 25 Dec 2009 11:11:46 -0000

About the graceful exit:

This problem also occured in v1.0 ..v1.7 and was fixed in v1.8 by adding
LWPI >83E0
LI     R11,>0024
at the start of the program.

What this does is using the GPLWS and set address >0024 as the return address of the program. When the program returns it returns at the start of the GPL interpreter. Maybe this isn't a good choice when using funnelweb. It is also unsure if some register are still at the right value. Maybe it is better to always exit to the reset vector at >0000 or first save the whole GPL workspace and restore it later.

Anybody have some ideas about this matter?

Dm2k from V1.9 up is using more CPU and VDP ram and maybe overwrites something that funnelweb tries to preserve.

Fred ;-)

---

From: "ti99_forever" <[email-masked]>
Date: Fri, 25 Dec 2009 11:41:28 -0000

Fred,

Many moons ago (1989) when I wrote Dezip, I struggled with this too. And this was before all the new hardware came out.

I gave two exit points...
#1 attempted a standard "return to calling program"
#2 exited to the reset vector

I've seen similar issues with other programs where I return to the "Boot menu" (of the BOOT program) but the color is changed and it is locked up... TI Writer comes to mind, one of the "newer" versions...

--- In [email-masked], "fredkaal" <fgkaal@...> wrote:
> --- In [email-masked], rmcarmany@ wrote:
> >

---

From: "Paolo Bagnaresi" <[email-masked]>
Date: Sat, 26 Dec 2009 10:13:42 +0100

Hi Fred,
what if the user's program exits with a
LWPI >83E0
B    @>0070

or

LWPI >83E0
B    @>006A

?

Then the >0024 you store in R11 of GPLWS will simply be ignored. To avoid 
this problem you should work with the GPL return stack too. If you want to 
force a Master Title Screen when the user's program exits, you have to 
load >80 in the >8373 byte in the Scratch Pad and store >0024 in >8380. 
That is before letting the user's program run.

If the user exits with a
LWPI >83E0
B    @>0070 (or >006A)

the GPL interpreter will find that the next GPL routine to be executed is 
the one at >0024 (in Grom 0), which is exactly what you want: the Master 
Title Screen.

A caveat: by placing >80 in >8373 you will also destroy any valid GPL 
return address that might exist in the GPL Return Stack that starts at 
 >8380. So, do that only if you want to force a reset onto the user.

A note: I seem unable to locate my TI-Intern copy (by Heiner Martin). I am 
not really sure about the right value you have to put in >8373. As I said 
above, I think it is >80, but if >80 does not work, try >82. The point is, 
I don't remember if the value in >8373 is the pointer to the First Free in 
the GPL Return Stack or the pointer to the Last Used in the GPL Return 
Stack.

Have fun,

Paolo Bagnaresi

----- Original Message ----- 
From: "fredkaal"
To: <[email-masked]>
Sent: Friday, December 25, 2009 12:11 PM
Subject: [TI994A] Re: DM2K et. al.[

About the graceful exit:

What this does is using the GPLWS and set address >0024 as the return 
address of the program. When the program returns it returns at the start 
of the GPL interpreter. Maybe this isn't a good choice when using 
funnelweb. It is also unsure if some register are still at the right 
value. Maybe it is better to always exit to the reset vector at >0000 or 
first save the whole GPL workspace and restore it later.

Dm2k from V1.9 up is using more CPU and VDP ram and maybe overwrites 
something that funnelweb tries to preserve.

Fred ;-)

---

From: "fredkaal" <[email-masked]>
Date: Sat, 26 Dec 2009 11:06:14 -0000

Thank you all for your reply and thoughts.

I have made a note of Paolo's message and I will read and check this with TI intern. Just for fun.

What I actually want is to return to the calling program but it is never said that all things setup in memory by the calling program, inclusive its workspace, will be left in tact by the program loaded, so to be sure that the system never locks up it is best to do a branch to the reset vector  BLWP @0. This is also the shortest code.

ps:
The IDE funcion CALL IDELOAD() also does a BLWP @0 but this little piece of code is left in scratchpad of wich you also never know if it will be left in tact ba the program loaded.

Fred ;-)

---

From: "Paolo Bagnaresi" <[email-masked]>
Date: Sat, 26 Dec 2009 13:34:33 +0100

----- Original Message ----- 
From: "fredkaal"
To: <[email-masked]>
Sent: Saturday, December 26, 2009 12:06 PM
Subject: [TI994A] Re: DM2K et. al.[

> What I actually want is to return to the calling program but it is never 
> said that all
> things setup in memory by the calling program, inclusive its workspace, 
> will be left in tact
> by the program loaded, so to be sure that the system never locks up it 
> is best to do a
> branch to the reset vector  BLWP @0. This is also the shortest code.

Sure enough, Funnelweb will use every available bit of memory. I think 
you're right assuming nothing will be left as it was when you exit 
Funnelweb. Most probably the very memory area from which you launch 
Funnelweb will be overwritten by Funnelweb itself. This is also a good 
reason for leaving a valid Master Title Screen address in GPL return 
stack.

Paolo Bagnaresi

---

From: ti99_forever <[email-masked]>
Date: Sat, 26 Dec 2009 05:16:15 -0800 (PST)

But Funnelweb authors documented how to return to their program (along with programming within the environment). It was in the Micropendium magazine, the title or more likely sub-title was something like 'dealing with spiders'. Interesting reading. Probably '88-'89 timeframe.

----- Original Message ----
> From: Paolo Bagnaresi <[email-masked]>
> To: [email-masked]
> Sent: Sat, December 26, 2009 7:34:33 AM
> Subject: Re: [TI994A] Re: DM2K et. al.[
> 
> 
> To: 
> ------------------------------------
> 
> Yahoo! Groups Links
> 
> 
>