2010-02-21, 01:00 AM
britlion Wrote:Okay, this one is pretty small. It crashes.
Code:FUNCTION RAND () as uInteger : REM Code by Jon Ritman random: REM add 46 bytes to this location to hit the store "Lion" asm RANDOM: LD HL,(SEED+2) LD D,L ADD HL,HL ADD HL,HL LD C,H LD HL,(SEED) LD B,H RL B LD E,H RL E RL D ADD HL,BC LD (SEED),HL LD HL,(SEED+2) ADC HL,DE RES 7,H LD (SEED+2),HL JP M,RANDOM3 LD HL,SEED RANDOM2: INC (HL) INC HL JR Z,RANDOM2 RANDOM3: LD HL,(SEED) RET SEED: DB "Lion" end asm END FUNCTION CLS DIM a as uInteger let a=@random PRINT a let a=a+46 PRINT a DIM n as uInteger DIM result as uByte FOR n=a to a+4 LET result=peek n print n;"=";result;"=";CHR$ (result) next n
IF I change the last line to:
Code:print n;"=";result;"=";CHR$ (76)
It doesn't crash. What's the problem with CHR$(uByte) suddenly?
Can anyone else replicate this?
All I was trying to do was put in a nice shiny new random number generator...
This program does not crash to me. Try it with the new 1.2.5 Beta 2 version, anyway. It prints Lion# where # means rubbish.
The problem here is you're printing 5 chars (a, a+1, a+2, a+3, a+4) and Lion has 4 letters. You have an overflow in your print, so the glitched character is expected. But the program should not crash (It does not in my emulator).
Can you try with V 1.2.5 Beta 2?

