Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.sys.apple2.programmer > #2016
| From | awanderin <awanderin@gmail.com> |
|---|---|
| Newsgroups | comp.sys.apple2.programmer |
| Subject | Re: ProDOS and the random seed RNDL |
| Date | 2015-12-22 23:38 -0700 |
| Organization | A noiseless patient Spider |
| Message-ID | <m31tad8yam.fsf@gmail.com> (permalink) |
| References | <dog_cow-1450727254@macgui.com> |
D Finnigan <dog_cow@macgui.com> writes: > Since converting the Marina IP source from DOS 3.3 to ProDOS, I've noticed > that link-local addresses, which were previously randomly generated, were no > longer random. I took the time to track down this issue yesterday. > > I'm using ProDOS 8 v1.9 on an enhanced (platinum) Apple IIe but I believe > all versions of ProDOS have this problem. > > I had been using RNDL and RNDH ($4E and $4F) as my random seed. I put > together this program to test what was happening: > > A5 4E > 20 DA FD > A5 4F > 20 DA FD > 4C D0 03 > > ]BRUN RND > 0D80 > > *8000G > 958E > > When I saved it as RND and did BRUN from the Applesoft prompt, I always got > 0D80. But when I ran the program using the Monitor G command, I got changing > results, which is what I expected. It looked like ProDOS was setting RNDL > and RNDH to some constant value. Neither the white ProDOS Technical > Reference Manual nor Gary B. Little's Apple ProDOS book mentioned this > behavior. Nor could I find any mention of it from searching these > newsgroups. > > Poking around in the LC RAM area for ProDOS I found this code at $E189: > LDY #1 > LDA ($40),y > STA $4E > INY > LDA ($40),Y > STA $4F > > I went back to the ProDOS 8 source in MliSrc.aii and found that it's a part > of the get_prefix routine: > > getprefx clc ; calculate how big a buffer is needed to > ldy #c_path ; get index to users pathname buffer > lda (par),y > sta usrbuf > iny > lda (par),y > sta usrbuf+1 > > So it is seen that RNDL and RNDH are being used as part of a buffer for > ProDOS. > > My work-around was to insert a call to GETLN ($FD6A) at the beginning of > Marina in order to reseed the random number. > > Hum-ho. Nice detective work! I don't know the internals of Marina, but if you have control of when ProDOS is called, perhaps Get_Prefix in particular, you could just save RNDL/H on the stack before issuing the MLI call. Having to call an interactive routine seems an ugly workaround unless you actually want some user input. -- Jerry awanderin at gmail dot com
Back to comp.sys.apple2.programmer | Previous | Next — Previous in thread | Next in thread | Find similar
ProDOS and the random seed RNDL D Finnigan <dog_cow@macgui.com> - 2015-12-21 19:45 +0000
Re: ProDOS and the random seed RNDL awanderin <awanderin@gmail.com> - 2015-12-22 23:38 -0700
Re: ProDOS and the random seed RNDL D Finnigan <dog_cow@macgui.com> - 2015-12-23 19:39 +0000
Re: ProDOS and the random seed RNDL gids.rs@sasktel.net - 2015-12-23 09:23 -0800
Re: ProDOS and the random seed RNDL D Finnigan <dog_cow@macgui.com> - 2015-12-23 19:51 +0000
Re: ProDOS and the random seed RNDL gids.rs@sasktel.net - 2015-12-23 17:25 -0800
Re: ProDOS and the random seed RNDL D Finnigan <dog_cow@macgui.com> - 2016-01-04 19:02 +0000
csiph-web