![]() |
|
A big D on my hat - Printable Version +- Boriel Basic Forum (https://forum.boriel.com) +-- Forum: Compilers and Computer Languages (https://forum.boriel.com/forumdisplay.php?fid=12) +--- Forum: ZX Basic Compiler (https://forum.boriel.com/forumdisplay.php?fid=11) +---- Forum: Help & Support (https://forum.boriel.com/forumdisplay.php?fid=16) +---- Thread: A big D on my hat (/showthread.php?tid=583) |
A big D on my hat - ardentcrest - 2014-02-18 How do I do, Code: dim a$(3)
for f=1to 3
read a$(f)
data "text1","text2","text3"Re: A big D on my hat - boriel - 2014-02-18 ardentcrest Wrote:How do I do,At the moment, ZX BASIC does not support read, data. You have to do: Code: a$(1) = "text1"
a$(2) = "text2"
...Note: Support for READ, DATA and RESTORE is planned (for backward compatibility). Re: A big D on my hat - ardentcrest - 2014-02-18 Thanks Re: A big D on my hat - ardentcrest - 2014-02-18 Quote:temp.bor:16: identifier 'v$' is a var, not an array Code: dim v$(10)
v$(1)="n"
v$(2)="s"
v$(3)="e"
v$(4)="w":| Re: A big D on my hat - boriel - 2014-02-18 ardentcrest Wrote:This seems a bug I've recently fixed. Can you check you have the latest version? (1.4.0s1860)Quote:temp.bor:16: identifier 'v$' is a var, not an array Re: A big D on my hat - ardentcrest - 2014-02-18 mine 1.4.0-s1860 remember I'm using borIDE Re: A big D on my hat - boriel - 2014-02-18 Damn it! I forgot to upload the fix! hock: And the packing script is in a machine 2500km away from me :oops: :lol: Will try to upload the new version tonight. Re: A big D on my hat - ardentcrest - 2014-02-18 :evil: :evil: :evil: :evil: :roll:
Re: A big D on my hat - ardentcrest - 2014-02-19 Code: for i=1 to len(q$)-1
if q$(1 to i)=" " and x$="" then let x$=q$( 1 to i-1)
next iinput.bas:38: warning: Empty loop works if I remove the if line but still give empty loop warning OK need to add end if but nothing appears in the x$ Re: A big D on my hat - ardentcrest - 2014-02-19 got it I have to learn basic all over again, not just for the spectrum but for the compiler :evil: Re: A big D on my hat - dbolli - 2015-02-10 Try this for an interim solution Code: #include "read-data-restore.bas"
SETDATAVALUES( @TESTDATA1 )
WHILE ( NOT DataValuesEndFlag )
PRINT READDATA() ': PRINT
END WHILE
PAUSE 0
SETDATAVALUES( @TESTDATA2 )
DIM Duration as Float
DIM Pitch as Byte
WHILE ( NOT DataValuesEndFlag )
Duration = VAL( READDATA() )
Pitch = VAL( READDATA() )
BEEP Duration, Pitch
END WHILE
STOP
TESTDATA1:
ASM
DEFM "String1,"
DEFM "string2,"
DEFM "string3,"
DEFM "string4,string5,string6,string7,string8,string9"
DEFB $00 ; Terminating byte
END ASM
TESTDATA2:
ASM
; Frere Gustav
DEFM "1,0,1,2,.5,3,.5,2,1,0,"
DEFM "1,0,1,2,.5,3,.5,2,1,0,"
DEFM "1,3,1,5,2,7,"
DEFM "1,3,1,5,2,7,"
DEFM ".75,7,.25,8,.5,7,.5,5,.5,3,.5,2,1,0,"
DEFM ".75,7,.25,8,.5,7,.5,5,.5,3,.5,2,1,0,"
DEFM "1,0,1,-5,2,0,"
DEFM "1,0,1,-5,2,0"
DEFB $00
END ASM
--- read-data-restore.bas
' Basic implementation of DATA, READ and RESTORE functionailty
' :dbolli:20150209 19:48:23
DIM DataValuesPointer AS UInteger = 0
DIM CurrentDataValuesPointer AS UInteger = 0
DIM DataValuesEndFlag AS Byte = 0
DIM DataSeperator AS UByte = CODE( "," )
SUB SETDATAVALUES ( DataStringPointer AS UInteger )
LET DataValuesPointer = DataStringPointer
LET CurrentDataValuesPointer = DataStringPointer
LET DataValuesEndFlag = 0
END SUB
FUNCTION READDATA AS String
IF ( ( CurrentDataValuesPointer <> DataValuesPointer ) AND ( PEEK( UByte, CurrentDataValuesPointer - 1 ) = $00 ) ) THEN
ASM
RST $08
DEFB $0D ; Report E - Out of DATA error message
END ASM
ELSE
DIM DataReturnString AS String
DIM DataByte AS UByte
LET DataReturnString = ""
WHILE ( 1 )
DataByte = PEEK( UByte, CurrentDataValuesPointer )
LET CurrentDataValuesPointer = CurrentDataValuesPointer + 1
IF ( ( DataByte = DataSeperator ) OR ( DataByte = $00 ) ) THEN
EXIT WHILE
ELSE
LET DataReturnString = DataReturnString + CHR( DataByte )
END IF
END WHILE
LET DataValuesEndFlag = ( DataByte = $00 )
RETURN DataReturnString
END IF
END FUNCTION
SUB RESTOREDATAVALUES
LET CurrentDataValuesPointer = DataValuesPointer
LET DataValuesEndFlag = 0
END SUBRegards, Derek. |