RndStrong() causes DOS Error

Report any Hollywood bugs here
Post Reply
User avatar
Redlion
Posts: 96
Joined: Sun Jul 10, 2011 5:05 am
Location: Perth, Western Australia

RndStrong() causes DOS Error

Post by Redlion »

Hello,

I have been doing some programming with random numbers and have been using result = RndStrong(#Integer, 8)

I get an Amiga Dos Error
Please insert Volume
RANDOM:
in any drive
Process: XXX "Hollywood"


If I press Cancel, I get a Hollywood Error

Error generating Random Number
File: HWTemp$ (Current Line: xx - In Function RndStrong)


I'm using Hollywood 9.1, in Windows 10 it works, in AOS4.1 (Final Edition Update 2) it gives and error.
Even if I just use the one line, result = RndStrong(#Integer, 8) I get the error.

Cheers
Leo
----------------------------------------------------------------------------------------
Redlion
Sam460 Lite
A4000 A3000 A2000 A1200 A1000 A600 A500 CD32
User avatar
airsoftsoftwair
Posts: 5450
Joined: Fri Feb 12, 2010 2:33 pm
Location: Germany
Contact:

Re: RndStrong() causes DOS Error

Post by airsoftsoftwair »

Hmm, it works here with Hollywood 10 on my OS4.1 system but I'm still using Final Edition Update 1. Are you using any patches or is this a clear OS4.1 Final Edition Update 2 system? I remember things like A-EON Enhancer replacing many system components...
User avatar
Redlion
Posts: 96
Joined: Sun Jul 10, 2011 5:05 am
Location: Perth, Western Australia

Re: RndStrong() causes DOS Error

Post by Redlion »

@ airsoftsoftwair

Its a standard AmigaOS 4.1 with update 2 and the free Enhancher software Core Edition 1.1 .
Normal Rnd() works, just not RndStrong()

It used to work when I first installed Hollywood 9.1, even the compiled version crashes with the same error. I have checked there are no assigns of devices named RANDOM: on my machine.

Here is the code block, but i can repeat the error with just the line " dirc = RndStrong(#INTEGER, 8) "

Code: Select all

SelectBrush(Map)
		SetFillStyle(#FILLCOLOR)
		Local X = (790/2)
		Local Y = (790/2)
		Local line_x = X
		Local line_y = Y
		Local l = 1
		Repeat
			dirc = RndStrong(#INTEGER, 8) 				; pick a random number ( direction )
			If dirc <> last_dirc         				; dont repeat a direction
				Switch dirc
					Case 0 								; north
						line_y = line_y - 45
					Case 1 								; east
						line_x = line_x + 45
					Case 2 								; south
						line_y = line_y + 45
					Case 3 								; west
						line_x = line_x - 45
					Case 4 								; northeast
						line_y = line_y - 45
						line_x = line_x + 45
					Case 5 								; southeast
						line_x = line_x + 45 
						line_y = line_y + 45
					Case 6 								; southwest
						line_y = line_y + 45
						line_x = line_x - 45
					Case 7 								; northwest
						line_y = line_y - 45
						line_x = line_x - 45
				EndSwitch
				If x > 1 And x < 731 And y > 1 And Y < 731 ; only draw line if in bounds of grid
					Line(x, y, line_x, line_y, #YELLOW)
					SetFillStyle(#FILLCOLOR)
					Box(X-17, Y-17, 35, 35, Colour)
					x = line_x
					y = line_y  
				EndIf
			EndIf
			last_dirc = dirc
			l = l + 1
		Until l = 900								; increase for more possible room connections
		Box(  0,  0,728, 18,#GRAY)					; clean up edges
		Box(  0,  0, 18,728,#GRAY)					; clean up edges
		Box(728,  0, 18,728,#GRAY)					; clean up edges
		Box(  0,728,746, 18,#GRAY)					; clean up edges
EndSelect
I can work around this with Rnd() but RndStrong() was giving me a better spread.

Can anyone with Enhancer Software Core installed test, just to eliminate it from the picture.

Cheers
Leo
----------------------------------------------------------------------------------------
Redlion
Sam460 Lite
A4000 A3000 A2000 A1200 A1000 A600 A500 CD32
User avatar
airsoftsoftwair
Posts: 5450
Joined: Fri Feb 12, 2010 2:33 pm
Location: Germany
Contact:

Re: RndStrong() causes DOS Error

Post by airsoftsoftwair »

I've now checked it on an 4.1 Final Edition Update 2 system and it works without problems on that system too. Must be something that is wrong with your OS4 installation. Have you got L:random-handler installed?
User avatar
Redlion
Posts: 96
Joined: Sun Jul 10, 2011 5:05 am
Location: Perth, Western Australia

Re: RndStrong() causes DOS Error

Post by Redlion »

@ airsoftsoftwair

I have had a look and there is a L:random-handler size:8580, dated 23-Nov-14 Ver52.1(10-12-2006)
I think that is the original install version.

RndStrong() did work with Hollywood 7

Using just Rnd() for the moment.
Cheers
Leo
----------------------------------------------------------------------------------------
Redlion
Sam460 Lite
A4000 A3000 A2000 A1200 A1000 A600 A500 CD32
User avatar
airsoftsoftwair
Posts: 5450
Joined: Fri Feb 12, 2010 2:33 pm
Location: Germany
Contact:

Re: RndStrong() causes DOS Error

Post by airsoftsoftwair »

Redlion wrote: Sat Sep 23, 2023 1:24 pm RndStrong() did work with Hollywood 7
I've checked and the OS4 implementation of RndStrong() is completely unchanged since its introduction in 7.1. So I'm sure if you try it with Hollywood 7.1 now it won't work either. There must be something wrong with your OS4 installation. L:random-handler should install a handler that fetches accesses to RANDOM: but that doesn't seem to work on your system. Maybe ask on an OS4 support forum why L:random-handler doesn't work any more.
User avatar
lazi
Posts: 627
Joined: Thu Feb 24, 2011 11:08 pm

Re: RndStrong() causes DOS Error

Post by lazi »

Could you check random-handler to work?
Type this in a shell window: Type "RANDOM:TEXT/SIZE=10"

The result here is something like this:

Code: Select all

9.WorkBench:> Type "RANDOM:TEXT/SIZE=10"
lnxpvw0y4w9.WorkBench:> 
The same should work in Hollywood:

Code: Select all

OpenFile(1,"random:TEXT/SIZE=10",#MODE_READ)
a=ReadBytes(1,10)
DebugPrint(a)
CloseFile(1)  
Here on OS4FEU2 RndStrong() is works.
Post Reply