Hi, I just discovered X11 BASIC for Android a little over a month ago, and so far I love it. However, the lack of activity here is a little concerning. Is xbasic dead or on hiatus? RFO BASIC! also appears to be moribund since being removed from the Play Store. I may have questions about possible cross-platform issues that might crop up, such as whether an xbasic program written to use sparse files on Linux will work correctly when run on an Android device with an SD card formatted for FAT32. Thanks!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
OK, I'm a st00pid bridge and cave troll, but I can't find the discussions on either gitlab or github. I see only bug and issue tracking and source code and binary file control. Thanks for your help!
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Tips and tricks, best practices, how to make sure programs and data files are smoothly portable between platforms and file systems, and such. For example, how to be certain a binary data file written by a Windows machine will be readable on an Android or RaspPi. Is that what the MK and CV functions are for?
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
It appears only certain built-in programs like Camera and My Files may write to external storage now without rooting the device, which I am reluctant to try. Opening a file on the MicroSD card for Input and reading data seems OK, just not Append, Output, or Unknown/Update. I can try an OTG stick, but that's a little scary for me. One wrong twitch of my Tolkien cave troll paws and I'm left with a mangled MicroUSB port on my phone that won't accept a charging cable.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
If you wonder, what happened to X11-Basic on the G Play store: G has removed it. Why? I think, just because they could. No other reason appeared to me. So I decided to send following message to all users:
Google has banned the X11-Basic App from its play store because it
doesn't comply with their new rules anymore.
So I cannot support Google Play store anymore, I am very sorry. If you
want to continue using one of my apps, I can recommend to use the
F-droid play store and install them from there. Or you can directly
download the .apk file from here:
and install it manually. Your .bas programs will not be erased when
uninstalling and reinstalling X11-Basic and can still be used. However
you will need to eventually recompile .b files from the .bas files.
I am sorry for your inconvinience.
best regards
Markus
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Thanks. I don't mind if 'sparse' files are filled in with clusters full of NULs, so long as the program doesn't fail mysteriously and skipped over sectors aren't filled with whatever random garbage happens to be sitting in some OS buffer somewhere. Write once, test everywhere?
Last edit: Yet Another Troll 2019-05-29
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Not so far. The data read and write correctly, but walking through the entire sparse file with BGET is much slower than expected, even if I don't use SEEK to skip around, but I'm using a 16-64 byte buffer because of my record sizes . I guess Android expects sequential reads with a more reasonable buffer size like 512 or 4096 bytes.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
I might still need to maintain a bit vector index, a sort of file allocation table, if the data file ends up being extremely sparse for some data sets and a 4KB buffer doesn't fix everything. Or augment the data records and use a linked list of records in the data file, which could slow down the insertion of new records. Or just accept that walking the data file could be slow if keys in the trie index file are ridiculously long and dissimilar to each other, causing the data file to be ridiculously sparse.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hm, maybe I do not quite understand what the problem is. Android does support sparse files, but not on FAT32. Also Android file system operations use an O/I cache for read operations and if set so also for write operations. I am not sure if this works with an external SD-Card, but in principle one need not think about that when writing a program, because the operating system will take care of this. The INPUT and LINEINPUT commands in X11-Basic do use the buffered file interface, so an additional 4k Buffer or so is already in use when reading lines or charackters.
Operations are notorically slow when:
1. Writing to the hole of a sparese file (because the file will get fragmented and new sectors need to be allocated).
2. Writing small amount of data (<4k).
3. using the FLUSH command.
4. SEEKing bejond of the file end (because in this case the file will get extendet, if the file system does not support sparse files).
Read operations however should be fast in any cases. Maybe reading only single bytes would be slow but all other operations will be internally speed up by the file systems cache.
If you would like to refer to this comment somewhere else in this project, copy and paste the following link:
Hi, I just discovered X11 BASIC for Android a little over a month ago, and so far I love it. However, the lack of activity here is a little concerning. Is xbasic dead or on hiatus? RFO BASIC! also appears to be moribund since being removed from the Play Store. I may have questions about possible cross-platform issues that might crop up, such as whether an xbasic program written to use sparse files on Linux will work correctly when run on an Android device with an SD card formatted for FAT32. Thanks!
Hi Troll, X11-Basic is aliive, but the discussions take place more on github and gitlab.
Android Version: https://gitlab.com/kollo/X11-Basic
Example Programs: https://gitlab.com/kollo/X11-Basic_examples
Main Repository: https://gitlab.com/kollo/X11Basic
And on github:
https://github.com/kollokollo/X11Basic
See you there...
OK, I'm a st00pid bridge and cave troll, but I can't find the discussions on either gitlab or github. I see only bug and issue tracking and source code and binary file control. Thanks for your help!
Yes, the Issue trackers are mainly there for bug tracking and new feature requests. But what do you want to discuss about else?
Tips and tricks, best practices, how to make sure programs and data files are smoothly portable between platforms and file systems, and such. For example, how to be certain a binary data file written by a Windows machine will be readable on an Android or RaspPi. Is that what the MK and CV functions are for?
OK, so i suggest that this forum here (on sourceforge) may fit best.
I think, sparse files are not supported by the F32 file system, but I may be wrong.
I am not allowed to find out thanks to Nannydroid 4.4 updates and above,
https://crittermap.zendesk.com/hc/en-us/articles/215564783-Samsung-Devices-External-Storage-locked-after-4-4-updates-?mobile_site=true
It appears only certain built-in programs like Camera and My Files may write to external storage now without rooting the device, which I am reluctant to try. Opening a file on the MicroSD card for Input and reading data seems OK, just not Append, Output, or Unknown/Update. I can try an OTG stick, but that's a little scary for me. One wrong twitch of my Tolkien cave troll paws and I'm left with a mangled MicroUSB port on my phone that won't accept a charging cable.
If you wonder, what happened to X11-Basic on the G Play store: G has removed it. Why? I think, just because they could. No other reason appeared to me. So I decided to send following message to all users:
Google has banned the X11-Basic App from its play store because it
doesn't comply with their new rules anymore.
So I cannot support Google Play store anymore, I am very sorry. If you
want to continue using one of my apps, I can recommend to use the
F-droid play store and install them from there. Or you can directly
download the .apk file from here:
https://f-droid.org/de/packages/de.hoffmannsgimmickstaupunkt/
(Dew Point)
or
https://f-droid.org/de/packages/net.sourceforge.x11basic/
(X11-Basic)
and install it manually. Your .bas programs will not be erased when
uninstalling and reinstalling X11-Basic and can still be used. However
you will need to eventually recompile .b files from the .bas files.
I am sorry for your inconvinience.
best regards
Markus
Thanks. I don't mind if 'sparse' files are filled in with clusters full of NULs, so long as the program doesn't fail mysteriously and skipped over sectors aren't filled with whatever random garbage happens to be sitting in some OS buffer somewhere. Write once, test everywhere?
Last edit: Yet Another Troll 2019-05-29
Has it failed?
Not so far. The data read and write correctly, but walking through the entire sparse file with BGET is much slower than expected, even if I don't use SEEK to skip around, but I'm using a 16-64 byte buffer because of my record sizes . I guess Android expects sequential reads with a more reasonable buffer size like 512 or 4096 bytes.
Yes, reading 4096 bytes at once could speed it up much.
I might still need to maintain a bit vector index, a sort of file allocation table, if the data file ends up being extremely sparse for some data sets and a 4KB buffer doesn't fix everything. Or augment the data records and use a linked list of records in the data file, which could slow down the insertion of new records. Or just accept that walking the data file could be slow if keys in the trie index file are ridiculously long and dissimilar to each other, causing the data file to be ridiculously sparse.
Hm, maybe I do not quite understand what the problem is. Android does support sparse files, but not on FAT32. Also Android file system operations use an O/I cache for read operations and if set so also for write operations. I am not sure if this works with an external SD-Card, but in principle one need not think about that when writing a program, because the operating system will take care of this. The INPUT and LINEINPUT commands in X11-Basic do use the buffered file interface, so an additional 4k Buffer or so is already in use when reading lines or charackters.
Operations are notorically slow when:
1. Writing to the hole of a sparese file (because the file will get fragmented and new sectors need to be allocated).
2. Writing small amount of data (<4k).
3. using the FLUSH command.
4. SEEKing bejond of the file end (because in this case the file will get extendet, if the file system does not support sparse files).
Read operations however should be fast in any cases. Maybe reading only single bytes would be slow but all other operations will be internally speed up by the file systems cache.