Rocksolid Light

Welcome to novaBBS (click a section below)

mail  files  register  newsreader  groups  login

Message-ID:  

You can't have everything... where would you put it? -- Steven Wright


devel / comp.sys.apple2.programmer / Re: Innovative(?) use of 80STOREON

SubjectAuthor
* Innovative(?) use of 80STOREONOliver Schmidt
`* Re: Innovative(?) use of 80STOREONI am Rob
 `* Re: Innovative(?) use of 80STOREONOliver Schmidt
  `* Re: Innovative(?) use of 80STOREONqkumba
   `* Re: Innovative(?) use of 80STOREONOliver Schmidt
    `- Re: Innovative(?) use of 80STOREONHugh Hood

1
Innovative(?) use of 80STOREON

<sorem7$1lf$1@solani.org>

 copy mid

https://www.novabbs.com/devel/article-flat.php?id=184&group=comp.sys.apple2.programmer#184

 copy link   Newsgroups: comp.sys.apple2.programmer
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail
From: ol....@web.de (Oliver Schmidt)
Newsgroups: comp.sys.apple2.programmer
Subject: Innovative(?) use of 80STOREON
Date: Wed, 08 Dec 2021 23:21:41 GMT
Message-ID: <sorem7$1lf$1@solani.org>
Injection-Date: Wed, 8 Dec 2021 23:21:43 -0000 (UTC)
Injection-Info: solani.org;
logging-data="1711"; mail-complaints-to="abuse@news.solani.org"
Cancel-Lock: sha1:NFt0vq6o+DdFNVOiTaB8I4eSdDY=
X-Newsreader: Forte Free Agent 1.21/32.243
X-User-ID: eJwFwQkBwDAIA0BLfAlMDtDWv4TdwancDIKBh1flGNDPp5BrG8yL1jkWQRGM6YTWWna/Zf4CUBBk
 by: Oliver Schmidt - Wed, 8 Dec 2021 23:21 UTC

Hi,

I've never seen the ideas below presented before. I'm wondering if
they are considered too obvious to be mentioned or if something is
wrong about them - or if they are actually innovative...

TL;DR
Set 80STOREON and HIRESON, but don't use it for DHGR.

Eversince the //e AUXMEM layout was introduced, people were unhappy
with it. According to my understanding the primary concern is that
AUXMEM is "all or nothing". You usually want some part of your address
space being switched and some part being fixed. The fixed memory
contains the main routine of the program while the switched memory
contains the sub routines.

Okay, AUXMEM comes with the ALTZP feature, but beside the zero page
and the stack the only memory not switched is the language card.
However, the MAIN language card is used by ProDOS and access to the
AUX language card can't be combined with access to the MAIN "base"
memory. So all in all, ALTZP is pretty much useless.

Entrance 80STOREON: The innovative(?) approach is setting hires mode
(HIRESON) to make 80STOREON act on the address space $2000-$4000 but
staying in text mode (TEXTON). This allows for both setups:
1. MAIN: $800-$2000, AUX: $2000-$4000, MAIN: $4000-$BF00
2. AUX: $800-$2000, MAIN: $2000-$4000, AUX: $4000-$BF00

So one can
a) use $2000-$4000 as rather small fixed memory and switch
$800-$2000/$4000-$BF00.
b) use $800-$2000/$4000-$BF00 as pretty large fixed memory and switch
only $2000-$4000.

Especially option a) is very attractive - of course for text based
programs only.

Notes:
1. The setups described here don't preclude 80 column text in any way.
2. For a more sophisticated program it's of course possible to
consider both memory areas ($800-$2000/$4000-$BF00 as well as
$2000-$4000) as switched. It can always use "the other" memory area as
trampoline.

So far so good, but there's also something in there for graphics
programs: Again setting 80STOREON with HIRESON, but this time with
TEXTOFF. However, the innovative(?) idea is here to _not_ activate
DHGR, but stay with HGR (80COLOFF). This allows for two interesting
setups:

1. Don't bother with memory switching for parts of the program code at
all. Just enjoy the contiguous memory area $800-$BF00, which is
especially useful for high level language tool chains not optimized
for the Apple II memory layout. Only the actual graphics code needs to
be aware of memory switching - and needs to be located outside of
$2000-$4000. Simply copy the program code at $2000-$4000 from MAIN to
AUX using AUXMOVE after loading the program before accessing the hires
video RAM. There's no need to touch RAMRDOFF, RAMDRON, RAMWRTOFF or
RAMWRTON. Just make sure to have PAGE2ON on during normal program
operation and temporarily set PAGE2OFF for hires video RAM access.

Note:
The rest of AUX may still be used as /RAM disk: Instead of using
AUXMOVE, just use ProDOS to save the program code at $2000-$4000 to
the otherwise empty /RAM disk. The file is guaranteed to be placed at
$2000-$4000 in AUX.

2. In general like 1.), but use AUX $2000-$4000 as trampoline to
switch $800-$2000/$4000-$BF00 between MAIN and AUX. The code accessing
the hires video RAM can be located in either MAIN or AUX.

That's all.
Regards,
Oliver

Re: Innovative(?) use of 80STOREON

<b2320a55-6c28-426d-a2ad-207b55832dadn@googlegroups.com>

 copy mid

https://www.novabbs.com/devel/article-flat.php?id=185&group=comp.sys.apple2.programmer#185

 copy link   Newsgroups: comp.sys.apple2.programmer
X-Received: by 2002:a05:6214:1d03:: with SMTP id e3mr13364262qvd.61.1639022328993;
Wed, 08 Dec 2021 19:58:48 -0800 (PST)
X-Received: by 2002:a05:6830:13cc:: with SMTP id e12mr3310488otq.377.1639022328654;
Wed, 08 Dec 2021 19:58:48 -0800 (PST)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.sys.apple2.programmer
Date: Wed, 8 Dec 2021 19:58:48 -0800 (PST)
In-Reply-To: <sorem7$1lf$1@solani.org>
Injection-Info: google-groups.googlegroups.com; posting-host=142.165.85.26; posting-account=U4TNXwoAAABP4nIJHynAJZ69O_f3LY2g
NNTP-Posting-Host: 142.165.85.26
References: <sorem7$1lf$1@solani.org>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <b2320a55-6c28-426d-a2ad-207b55832dadn@googlegroups.com>
Subject: Re: Innovative(?) use of 80STOREON
From: gids...@sasktel.net (I am Rob)
Injection-Date: Thu, 09 Dec 2021 03:58:48 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 125
 by: I am Rob - Thu, 9 Dec 2021 03:58 UTC

> Okay, AUXMEM comes with the ALTZP feature, but beside the zero page
> and the stack the only memory not switched is the language card.
> However, the MAIN language card is used by ProDOS and access to the
> AUX language card can't be combined with access to the MAIN "base"
> memory. So all in all, ALTZP is pretty much useless.

Sure it can, as long as there are no calls to Prodos or ROM. If you have a routine in the AuxLC, you would have to transfer temporary control to the Main48 area to make any Prodos or ROM calls, but I find that area pretty handy to store fonts and shapes, and also to make calls to Aux48k routines. I find it easier to use then AUXMOVE ($C311) and XFER ($C314).

To call to Aux48k memory, the route would be Main48 switches in AuxLCZP. Transfer any zero-page bytes used, such as the $E0.EF range for graphics, or 80-col zero-page usage. Then call the routine above $D000. Then have the AuxLCZP routine switch in the lower Aux48k, and jump to a routine there.

You can have any combination switched in of Main48k + MainLCZP, Main48k + AuxLCZP and Aux48k + MainLCZP and lastly Aux48k + AuxLCZP. I use the AuxLCZP quite a bit for storing fonts and shape tables to be drawn to the dbl-hi-res screen, as that doesn't require any calls to ROM, but does require updating pointers in Aux-zero-page.

I have a working SPLIT that can run an applesoft program both in each of Main memory and Aux memory. The Aux memory program can even make calls to Prodos and save/load a file to disk as normal. Each zero-page has its own set of pointers for keeping track of the cursor on the 80-col screen. I had uploaded a demo where the Main program used the top half of the text screen and the Aux program used the bottom half.

> Entrance 80STOREON: The innovative(?) approach is setting hires mode
> (HIRESON) to make 80STOREON act on the address space $2000-$4000 but
> staying in text mode (TEXTON). This allows for both setups:
> 1. MAIN: $800-$2000, AUX: $2000-$4000, MAIN: $4000-$BF00
> 2. AUX: $800-$2000, MAIN: $2000-$4000, AUX: $4000-$BF00
This is incorrect. 80STORE allows the PAGE1/PAGE2 softswitches ($C054/$C055) to act differently.

With 80STOREOFF ($C000) allows $C054 switch to text screen 1 ($400.7FF) or Hi-res screen 1 ($2000.3FFF), and $C055 switch to text screen2 ($800.BFF) or Hi-res screen2 ($4000.5FFF).

With 80STOREON ($C001), $C054 allows loads/stores to Main text screen ($400..7FF) or Main memory Hi-res screen ($2000.3FFF) and $C055 allows loads/stores to Aux memory text screen ($400.7FF) or Aux Hi-res screen ($2000.3FFF)

> So one can
> a) use $2000-$4000 as rather small fixed memory and switch
> $800-$2000/$4000-$BF00.
> b) use $800-$2000/$4000-$BF00 as pretty large fixed memory and switch
> only $2000-$4000.

You can store data or a routine to the Hi-res screen memory in Aux memory $2000.4000, but you cannot jump there and have it execute without the use of AuxXFER ($C314). This will still have the same problems when calling ROM routines to print to either the text screen or graphics screen.

> Especially option a) is very attractive - of course for text based
> programs only.
>
> Notes:
> 1. The setups described here don't preclude 80 column text in any way.
> 2. For a more sophisticated program it's of course possible to
> consider both memory areas ($800-$2000/$4000-$BF00 as well as
> $2000-$4000) as switched. It can always use "the other" memory area as
> trampoline.

Unfortunately it doesn't quite work that way, but you could use the $2000.3FFF memory of Aux to be used as a data transfer area to/and/from Aux memory routines, but this requires a double move. From other Aux memory to Aux memory at $2000.3FFF, then a read from the Main memory. This is time consuming and there are easier methods.

> So far so good, but there's also something in there for graphics
> programs: Again setting 80STOREON with HIRESON, but this time with
> TEXTOFF. However, the innovative(?) idea is here to _not_ activate
> DHGR, but stay with HGR (80COLOFF). This allows for two interesting
> setups:

80STOREON/OFF is a misdemeanour and has nothing to do with the 80-col card, other than changing a few LDA/STA instructions to act upon Main memory or Aux memory.

> 1. Don't bother with memory switching for parts of the program code at
> all. Just enjoy the contiguous memory area $800-$BF00, which is
> especially useful for high level language tool chains not optimized
> for the Apple II memory layout. Only the actual graphics code needs to
> be aware of memory switching - and needs to be located outside of
> $2000-$4000. Simply copy the program code at $2000-$4000 from MAIN to
> AUX using AUXMOVE after loading the program before accessing the hires
> video RAM. There's no need to touch RAMRDOFF, RAMDRON, RAMWRTOFF or
> RAMWRTON. Just make sure to have PAGE2ON on during normal program
> operation and temporarily set PAGE2OFF for hires video RAM access.

It is by far more efficient to use Aux memory as a Ramdisk and load modules into your program in main memory. It alleviates a lot of the headache of trying to make ROM calls to be used with either the text screen or graphics screen.


> Note:
> The rest of AUX may still be used as /RAM disk: Instead of using
> AUXMOVE, just use ProDOS to save the program code at $2000-$4000 to
> the otherwise empty /RAM disk. The file is guaranteed to be placed at
> $2000-$4000 in AUX.

This is a popular method of reserving the $2000.3FFF memory space in Aux memory, by just saving a file that is $2000 bytes in length, to the /RAM disk..

> 2. In general like 1.), but use AUX $2000-$4000 as trampoline to
> switch $800-$2000/$4000-$BF00 between MAIN and AUX. The code accessing
> the hires video RAM can be located in either MAIN or AUX.

I hope what I have stated so far makes sense and shows why this method cannot be used.

Re: Innovative(?) use of 80STOREON

<sp0evd$l0i$1@solani.org>

 copy mid

https://www.novabbs.com/devel/article-flat.php?id=188&group=comp.sys.apple2.programmer#188

 copy link   Newsgroups: comp.sys.apple2.programmer
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail
From: ol....@web.de (Oliver Schmidt)
Newsgroups: comp.sys.apple2.programmer
Subject: Re: Innovative(?) use of 80STOREON
Date: Fri, 10 Dec 2021 20:57:17 GMT
Message-ID: <sp0evd$l0i$1@solani.org>
References: <sorem7$1lf$1@solani.org> <b2320a55-6c28-426d-a2ad-207b55832dadn@googlegroups.com>
Injection-Date: Fri, 10 Dec 2021 20:57:17 -0000 (UTC)
Injection-Info: solani.org;
logging-data="21522"; mail-complaints-to="abuse@news.solani.org"
Cancel-Lock: sha1:H/qrUOzvyLqvS0cKN7ASrk87a38=
X-Newsreader: Forte Free Agent 1.21/32.243
X-User-ID: eJwFwQkBACAIA8BKgBtPHXX2j+AdV3qeQjLBx1dAjIrjMo97tAMdS0CbZlpkbrumRe+49gECZxAY
 by: Oliver Schmidt - Fri, 10 Dec 2021 20:57 UTC

Hi,

>> [...] ALTZP [...] access to the AUX language card can't be combined with access to the MAIN "base" memory. So all in all, ALTZP is pretty much useless.=20

>You can have any combination switched in of Main48k + MainLCZP, Main48k + A=
>uxLCZP and Aux48k + MainLCZP and lastly Aux48k + AuxLCZP.

Thanks for pointing out :-)

Regards,
Oliver

Re: Innovative(?) use of 80STOREON

<9e364a2a-917f-4067-9dab-bc45999e0dfdn@googlegroups.com>

 copy mid

https://www.novabbs.com/devel/article-flat.php?id=190&group=comp.sys.apple2.programmer#190

 copy link   Newsgroups: comp.sys.apple2.programmer
X-Received: by 2002:a05:622a:3cb:: with SMTP id k11mr23685331qtx.381.1639267905847;
Sat, 11 Dec 2021 16:11:45 -0800 (PST)
X-Received: by 2002:a05:6808:3c6:: with SMTP id o6mr20213605oie.145.1639267905362;
Sat, 11 Dec 2021 16:11:45 -0800 (PST)
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: comp.sys.apple2.programmer
Date: Sat, 11 Dec 2021 16:11:45 -0800 (PST)
In-Reply-To: <sp0evd$l0i$1@solani.org>
Injection-Info: google-groups.googlegroups.com; posting-host=2603:8001:7300:56d5:4087:854e:a6f5:ec93;
posting-account=bGpciwoAAACg2KT8pQMph7tnt3o_9vtu
NNTP-Posting-Host: 2603:8001:7300:56d5:4087:854e:a6f5:ec93
References: <sorem7$1lf$1@solani.org> <b2320a55-6c28-426d-a2ad-207b55832dadn@googlegroups.com>
<sp0evd$l0i$1@solani.org>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <9e364a2a-917f-4067-9dab-bc45999e0dfdn@googlegroups.com>
Subject: Re: Innovative(?) use of 80STOREON
From: peter.fe...@gmail.com (qkumba)
Injection-Date: Sun, 12 Dec 2021 00:11:45 +0000
Content-Type: text/plain; charset="UTF-8"
Lines: 1
 by: qkumba - Sun, 12 Dec 2021 00:11 UTC

There's also a weird combination of aux 48k active while main HGR is visible.
Bank Street Writer III used that technique - showing the title screen while the program is running in aux memory.

Re: Innovative(?) use of 80STOREON

<sp4jpb$tv1$1@solani.org>

 copy mid

https://www.novabbs.com/devel/article-flat.php?id=191&group=comp.sys.apple2.programmer#191

 copy link   Newsgroups: comp.sys.apple2.programmer
Path: i2pn2.org!i2pn.org!weretis.net!feeder8.news.weretis.net!reader5.news.weretis.net!news.solani.org!.POSTED!not-for-mail
From: ol....@web.de (Oliver Schmidt)
Newsgroups: comp.sys.apple2.programmer
Subject: Re: Innovative(?) use of 80STOREON
Date: Sun, 12 Dec 2021 10:43:55 -0000 (UTC)
Message-ID: <sp4jpb$tv1$1@solani.org>
References: <sorem7$1lf$1@solani.org>
<b2320a55-6c28-426d-a2ad-207b55832dadn@googlegroups.com>
<sp0evd$l0i$1@solani.org>
<9e364a2a-917f-4067-9dab-bc45999e0dfdn@googlegroups.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 8bit
Injection-Date: Sun, 12 Dec 2021 10:43:55 -0000 (UTC)
Injection-Info: solani.org;
logging-data="30689"; mail-complaints-to="abuse@news.solani.org"
User-Agent: NewsTap/5.5 (iPhone/iPod Touch)
Cancel-Lock: sha1:xBGPBIDnJIHoZQXpzV05H15uhsY= sha1:rVPIx7lxqa1umazIq/YY7+uPr0w=
X-User-ID: eJwNxskRACEMA7CWyGHvUA4Jcf8lsHoJQWN/STAhaMpVfxZovnVV6T5ZEQofCtfO6vHbu0+mPSvwEbA=
 by: Oliver Schmidt - Sun, 12 Dec 2021 10:43 UTC

Hi,

> There's also a weird combination of aux 48k active while main HGR is visible.
> Bank Street Writer III used that technique - showing the title screen
> while the program is running in aux memory.
>

Another - at least for me - new thought: Using 48k AUX with TEXTON and
80COLON and PAGE1 may be interesting for calling into the firmware and/or
ProDOS as it keeps the MAIN screen holes in place.

Regards,
Oliver

Re: Innovative(?) use of 80STOREON

<86ednVT6sfNmtCv8nZ2dnUU7-Y_NnZ2d@earthlink.com>

 copy mid

https://www.novabbs.com/devel/article-flat.php?id=192&group=comp.sys.apple2.programmer#192

 copy link   Newsgroups: comp.sys.apple2.programmer
Path: i2pn2.org!i2pn.org!weretis.net!feeder6.news.weretis.net!news.misty.com!border2.nntp.dca1.giganews.com!nntp.giganews.com!buffer2.nntp.dca1.giganews.com!nntp.earthlink.com!news.earthlink.com.POSTED!not-for-mail
NNTP-Posting-Date: Sun, 12 Dec 2021 10:57:31 -0600
Date: Sun, 12 Dec 2021 10:57:30 -0600
MIME-Version: 1.0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:91.0) Gecko/20100101
Thunderbird/91.3.2
Subject: Re: Innovative(?) use of 80STOREON
Content-Language: en-US
Newsgroups: comp.sys.apple2.programmer
References: <sorem7$1lf$1@solani.org>
<b2320a55-6c28-426d-a2ad-207b55832dadn@googlegroups.com>
<sp0evd$l0i$1@solani.org>
<9e364a2a-917f-4067-9dab-bc45999e0dfdn@googlegroups.com>
<sp4jpb$tv1$1@solani.org>
From: hughh...@earthlink.net (Hugh Hood)
In-Reply-To: <sp4jpb$tv1$1@solani.org>
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Message-ID: <86ednVT6sfNmtCv8nZ2dnUU7-Y_NnZ2d@earthlink.com>
Lines: 32
X-Usenet-Provider: http://www.giganews.com
NNTP-Posting-Host: 208.189.119.147
X-Trace: sv3-2dI5UVNVVTr/R5yluA2oDlO1+DFIKVhTzvUuBiW2D+OzJRiiGRW5QhPxXBqezmuey4NZHxdCp9qK7kg!8txHMVCkNacxX+SGYbXzjYeURHAr9YKwVGWJdekFIQstgse/Ol9k6ULKJNJDxpiwS/kSwKBIfLvj!X9PIpglDImnvxx4GJzw8/IdId0ZPWafM+1as
X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers
X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly
X-Postfilter: 1.3.40
X-Original-Bytes: 2256
 by: Hugh Hood - Sun, 12 Dec 2021 16:57 UTC

And, another example of the technique of using MAIN memory from
$200-$BFFF while the AUXZP soft switch ($C009) is selected is found in
Randy Brandt's UltraMacros (for AppleWorks).

UltraMacros primarily runs in AUX memory between $D000 and $FFxx (using
the AUX memory ZP and stack) while accessing the AppleWorks routines
found in MAIN memory between $1000 and $BFFF.

Hugh Hood

On 12/12/2021 4:43 AM, Oliver Schmidt wrote:
> Hi,
>
>> There's also a weird combination of aux 48k active while main HGR is visible.
>> Bank Street Writer III used that technique - showing the title screen
>> while the program is running in aux memory.
>>
>
> Another - at least for me - new thought: Using 48k AUX with TEXTON and
> 80COLON and PAGE1 may be interesting for calling into the firmware and/or
> ProDOS as it keeps the MAIN screen holes in place.
>
> Regards,
> Oliver
>
>

1
server_pubkey.txt

rocksolid light 0.9.7
clearnet tor