In 2008 I started an engine for a spreadsheet application, but due to another (stupid) hobby these routines collected dust for many many years.
Now finally I restarted the work on this spreadsheet application for SymbOS again, which is currently called "SymCalc" (not sure about the final name).
SymCalc should provide all usual functions of a more or less modern spreadsheet application. Memory and display/format handling is nearly finished now (only date/time stuff is missing), GUI stuff is mostly finished as well (like navigating, marking cells etc.).
The next big step is implementing formula handling. Yes, the most important stuff of course.
The plan is to have a full automatic recalculation of cells in any direction which wasn't usual for 80ies spreadsheet applications.
SymCell is already able to handle a field of 64x125 cells with a maximum amount of 1024 used cells. Maybe this can be extended to 64x250 and 2048 used cells, but let's see.
Currently the bottom line on the screen shots is a dummy one. The right part will be implemented. But currently I am not sure, if multiple sheets within the same file will be possible in the future, using references between sheets.
symcalc-1a.png
symcalc-1b.png
symcalc-1c.png
symcalc-1d.png
symcalc-1e.png
symcalc-1f.png
symcalc-1g.png
Ok, this is seriously impressive and ambitious!
Can you explain the bit about calculation in any direction? I didn't know it was a limitation back in the day, but why was it so?
Prodatron, you are insane... :o
I run into trouble, next time I give students a guest lecture. How to explain, the CPC is from the 80s ? ;)
Steven
Handle the SLK (sylk) format as it is in Multiplan under CPM as well as in the new Excel
Quote from: Gryzor on 19:40, 25 May 24Can you explain the bit about calculation in any direction? I didn't know it was a limitation back in the day, but why was it so?
This is what I saw at least in VisiCalc (Apple 2) and Mastercalc (CPC).
The recalculation usually starts at A1, then A2, A3 etc, then B1, B2, B3 and so on.
You could change the setting, that it does first A1,B1,C1 etc. then A2,B2,C2 and so on.
Usually this is fine, but when you have some chained references, which are hopping forward and backward, it won't update the sheet correctly automatically. In this case you could trigger an additional recalculation process manually. And if you have multiple references which are going in the wrong direction, you have to do this multiple times. Of course this is not the normal way how you create a table, so in most cases this was not an issue.
Quote from: Prodatron on 11:16, 26 May 24Quote from: Gryzor on 19:40, 25 May 24Can you explain the bit about calculation in any direction? I didn't know it was a limitation back in the day, but why was it so?
This is what I saw at least in VisiCalc (Apple 2) and Mastercalc (CPC).
The recalculation usually starts at A1, then A2, A3 etc, then B1, B2, B3 and so on.
You could change the setting, that it does first A1,B1,C1 etc. then A2,B2,C2 and so on.
Usually this is fine, but when you have some chained references, which are hopping forward and backward, it won't update the sheet correctly automatically. In this case you could trigger an additional recalculation process manually. And if you have multiple references which are going in the wrong direction, you have to do this multiple times. Of course this is not the normal way how you create a table, so in most cases this was not an issue.
Interesting. I can see how it can be an issue when you first think of it ("oh, how will we scan the table to update stuff?") but... It's not like you don't already have a matrix of what values are dependent on other values so that you can do it in an arbitrary way?
So you suggest to generate something like pathes, which define, in which order the cells have to be recalculated as soon as something has been updated. You check, if a cell is included in such a path, and when you find it, you follow the remaining part of the path and update all mentioned cells in the correct order. This would result in a very fast and always correct recalculation. As soon as you change references inside a formula you have to regenerate one of these pathes.
My current approach was to find all affected cells in realtime again and again after each update, but maybe this will become slow when having a lot of cells. Then you could at least cache the recalculation order.
Anyway that is an interesting problem :)
I was thinking more along the lines of your own solution (which, if I understand it correctly, does include creating some paths on the fly). But I see no need to do it realtime; you could just run it when a cell is changed?
Yes, you are right, only when a cell is changed. I just wonder, if changing a cell could take a while as soon as you have a few hundrets of them, and it always has to generate the whole path again. In this case pre-generated pathes could be a solution. Then only changing formulas would take some time, but some additional memory for storing the pathes will be required as well.
On one hand, the grid is comparatively small so you can run through it rather quickly. On the other hand, I guess it's going to introduce *some* delay when it runs, but hey, I wouldn't be bothered by it if I had a fully graphical spreadsheet on my z80 😁 Especially if there was an option to run it manually when needed.
Quote from: McArti0 on 21:54, 25 May 24Handle the SLK (sylk) format as it is in Multiplan under CPM as well as in the new Excel
Thanks for the hint! Phew let's see!
https://en.wikipedia.org/wiki/Symbolic_Link_(SYLK)
Maybe a basic SLK import/export function can be done when there is enough time.
Slick and Sick.
@Overflow will be able to start coding on CPC again!
Woah. Just woah!
Awesome. It really looks like Microsoft Excel !! Plus, multi-sheets. Congrats !
Formula calculation is now implemented including cell references.
Here you can see some of the current existing features of SymCalc:
https://www.youtube.com/watch?v=AyLze2kfo4M
Main Todo:
- automatic recalculation
- cell copy and moving, while considering absolute and relative cell references
Looks amazing. What are the hardware requirements?
A CRTC & GA GPU hardware accelerator :P
Just kidding... I assume at least a 256 kB (or more) memory expansion.
Quote from: abalore on 00:24, 03 June 24Looks amazing. What are the hardware requirements?
All you need is RAM.
Like for all larger applications a minimum of 192KB ram is required, if not much more else is running at the same time.
Of course a mouse would be nice as well :)
Quote from: Prodatron on 00:14, 03 June 24Formula calculation is now implemented including cell references.
Here you can see some of the current existing features of SymCalc:
https://www.youtube.com/watch?v=AyLze2kfo4M
Main Todo:
- automatic recalculation
- cell copy and moving, while considering absolute and relative cell references
Alter, krass!
I also love the awesome music that is part of the prog ;-)
Seriously, this is mind-blowing...
Personally I found i rarely had so many columns but more rows. Perhaps if it cannot be user defined column numbers and whatever rows fit, a couple of alternatives could be provided? E.g. 8, 16, 32, 64 columns and rows expanding as appropriate?
64x125
32x250
16x500
8x1000
That would allow a lot more rows for people who like their spreadsheets to be databases.
Then you could perhaps have an upload to Google docs via a proxy server.
Quote from: zhulien on 17:13, 03 June 24Personally I found i rarely had so many columns but more rows. Perhaps if it cannot be user defined column numbers and whatever rows fit, a couple of alternatives could be provided? E.g. 8, 16, 32, 64 columns and rows expanding as appropriate?
64x125
32x250
16x500
8x1000
That would allow a lot more rows for people who like their spreadsheets to be databases.
Then you could perhaps have an upload to Google docs via a proxy server.
Currently it is around 64 columns x 126 rows (see screenshot, cell range display at the left upper side).
symcalc-2a.png
I guess it will be extended to around 64x250 at the end.
SymCalc wont support more than 64 colums, as currently I am thinking about using the upper 2 bits for accessing additional sheets (up to 4, which should be enough, see status bar at the bottom).
Same for rows, around 250 will be the maximum. It is more easy to stay with 8bit in this case.
Currently the total amount of used cells is 1024, I will try to increase this to 2048.
There is one limitation: The SymbOS GUI can't display more than 252 ACTIVE cells at the same time in the visible area. For this I have to add a smart algorithm, which checks, what area is currently visible and what not, so it can remove or re-define old/new controls for the GUI.
Quote from: Prodatron on 22:20, 03 June 24Currently it is around 64 columns x 126 rows (see screenshot, cell range display at the left upper side).
symcalc-2a.png
I guess it will be extended to around 64x250 at the end.
SymCalc wont support more than 64 colums, as currently I am thinking about using the upper 2 bits for accessing additional sheets (up to 4, which should be enough, see status bar at the bottom).
Same for rows, around 250 will be the maximum. It is more easy to stay with 8bit in this case.
Currently the total amount of used cells is 1024, I will try to increase this to 2048.
There is one limitation: The SymbOS GUI can't display more than 252 ACTIVE cells at the same time in the visible area. For this I have to add a smart algorithm, which checks, what area is currently visible and what not, so it can remove or re-define old/new controls for the GUI.
The 252 cell limitation is interesting if you ever increase screen resolution and allow for maximizing. Symcalc looks awesome though same with your video if it.
Quote from: zhulien on 00:00, 04 June 24The 252 cell limitation is interesting if you ever increase screen resolution and allow for maximizing. Symcalc looks awesome though same with your video if it.
Well spotted :D
Here is how it looks on a Spectrum Next at a screen resolution of 640x256:
436360378_366336979282586_376057440063942267_n.jpg
But even in this resolution it will be hard to display around 250 active cells at the same time (you will have to shrink the width of the columns).
Quote from: McArti0 on 21:54, 25 May 24Handle the SLK (sylk) format as it is in Multiplan under CPM as well as in the new Excel
I just did some tries with SYLK in LibreOffice, and it looks really easy to implement. LibreOffice just ignores all the formatting stuff, which makes it very easy.
So yes, this is on the TODO list now, thanks for the hint/idea!
Quote from: Prodatron on 19:23, 25 May 24The plan is to have a full automatic recalculation of cells in any direction which wasn't usual for 80ies spreadsheet applications.
Quote from: Gryzor on 11:41, 26 May 24Interesting. I can see how it can be an issue when you first think of it ("oh, how will we scan the table to update stuff?") but... It's not like you don't already have a matrix of what values are dependent on other values so that you can do it in an arbitrary way?
I finished the auto recalculation today, and it seems to work quite nice!
I combined 10 cells in a very random way (some are below, some are above) as a chain, each of these cells were dependant on one other one.
When changing the value of the first cell in the chain, it takes not much more than one frame (around 21000 microseconds) to find and fully recalculate all other 9 cells (of course without updating the display).
I think it is still possible to do some optimizations, but now it already works better and faster than in most (early?) 80ies spreadsheet applications.
i can envisage an A-Rexx (Amstrad Rexx) port one day in Symbos.
Quote from: zhulien on 07:52, 05 June 24i can envisage an A-Rexx (Amstrad Rexx) port one day in Symbos.
AmsRexx or SymRexx would be better cause Arexx is for the Amiga ;D
Here is a speed comparison between SymCalc and Multiplan:
https://www.youtube.com/watch?v=YDL0TZR_OWY
In this comparison they all do exactly the same recalculation: Around 110-130 cells are all connected to each other with the formula x^1.5 and dependant as a chain from one origin cell. When changing the origin cell, all other will be recalculated automatically.
Results:
#4: Amstrad CPC, 8bit, 4MHz (CP/M, Multiplan): 49.7 seconds
#3: Spectrum +3, 8bit, 4MHz (CP/M, Multiplan): 43.6 seconds
#2: IBM XT comp., 16bit 4,8MHz (MS-DOS, Multiplan): 7.7 seconds
#1: Amstrad CPC, 8bit, 4MHz (SymbOS, SymCalc): 6.7 seconds
The comparison may not be 100% correct. In SymCalc a total of 109 cells are recalculated (11*10-1), while in Multiplan it seem to be up to 132 (19*7-1), but some (around 21) show an overflow, so maybe at the end it is about the same.
Anyway the differences between the same 8bit machine is crazy, and SymCalc still beats the 16bit XT PC (however running at only 4,xMHz it seems to be quite fast for an 8088).
You will also recognize the differences in updating the sheet during the recalculation. While Multiplan seems to go through every single cell, SymCalc is doing the whole recalculation in the background and then refreshes the whole part of the screen with the changes in one step. This is done, when the amount of updated cells exceeds a limit of about 10, otherwise it would do it one by one as well.
Simply astounding! I keep telling my team at work that innovation comes from limiting factors and restrictions. This is the very definition of this!
@Prodatron Is it possible to enable CPM virtual with Multiplan and SymCalc with an expansion of 256kB or 512kB RAM?
How much memory does SymCalc take with one Sheet?
Do you know why there are timing differences between the CPC and the Spectrum? Aren't they technically similar?
Impressive result to SymCalc by the way.
Quote from: HAL6128 on 22:27, 11 June 24Do you know why there are timing differences between the CPC and the Spectrum? Aren't they technically similar?
Impressive result to SymCalc by the way.
The spectrum display is faster to write to. And, if you can keep everything in uncontended RAM, it runs faster than the CPC too (where all RAM has some degree of contention).
Quote from: McArti0 on 21:48, 11 June 24@Prodatron
Is it possible to enable CPM virtual with Multiplan and SymCalc with an expansion of 256kB or 512kB RAM?
How much memory does SymCalc take with one Sheet?
Multiplan in SymbOS under CP\/M would require around 128K (64K TPA + CP\/M + SymShell).
SymCalc is currently using around 60K for 1024 cells. As some things are still missing, I expect the final size for one single sheet with up to 2000 cells at around 100K. I am planning to add multi-sheet support (up to 4) in one document, then of course it will take more, if they are all full of data.
So if you want to run both spreadsheet applications at the same time in SymbOS you probably need a 6128 with a 256K ram expansion or more.
Maybe it's a fun idea, and I should try this :)
And have You thought about swapfile in SymbOS? When changing RAM banks, you could check the flag to see if the memory is occupied and then save and load another bank. xls 256x65536 cells
Quote from: McArti0 on 12:06, 12 June 24And have You thought about swapfile in SymbOS? When changing RAM banks, you could check the flag to see if the memory is occupied and then save and load another bank. xls 256x65536 cells
That will probably be hard to implement. Let's think about it...
- all processes in one 64K bank would have to be in sleep mode, so that the bank can be swapped to disc; to optimize this, an application should first tell the system, if it is usually sleeping, when the user is not using it; so the system could try to bundle such apps in the same banks
- you can't swap a single process/application to disc, as it is relocated once after loading, and can't be relocated again when it was already running
- a far-address in SymbOS is 20bit, 4bit are used for the 64K bank number. If you would swap one 64K bank to disc, fill it with other stuff, then another bank gets free, and you load the old 64K bank from disc there again, all far-addresses to this bank would be wrong; so the kernel would have to work with physical and virtual bank numbers and translate them, when handling far-addresses
- applications can use a secondary ram bank for storing data or executing code; the system has to know, that they are connected; this might be a show-stopper
It looks interesting from an engineering aspect, but no idea if it will be possible and requires a lot of additional work. Today RAM isn't an issue, most of the time you can get a ram expansion somewhere, so I don't think that makes sense.
Quote from: McArti0 on 12:06, 12 June 24xls 256x65536 cells
Today even 16384 x 1048576 cells (17 billion in total) :o I am afraid, that this is too much for an 8bit machine :D
maybe you can make a physical release of the latest symbos with symcalc and a printed manual? add me to the list.
@Prodatron I wish I were as excellent and productive as you. What is your secret? Legit question! I want to improve myself.
Quote from: m_dr_m on 16:13, 14 June 24@Prodatron I wish I were as excellent and productive as you. What is your secret? Legit question! I want to improve myself.
@m_dr_m , thanks for these nice words! Well, tbh, no idea, I just love to code in Z80. You know, this little thing is just so cool, sometimes I like to spend most of my free time for this :)
Formulas with functions, including those with range references have been implemented as well as copy & paste of cell ranges.
An alpha release of SymCalc is available now:
http://symbos.org/download/preview/prv240617-symcalc.zip
A readme (symcalc.txt) and some example spreadsheet files (*.SCS) are included.
SymCalc requires the last version of SymbOS 4.0, which can be downloaded here:
http://symbos.org/download/preview/prv240617-symcpc.zip
(just copy "sym." and "symbos.bin" to your existing installation and RUN"SYM." )
Here is a list of the features, which are already implemented.
At the bottom of the list you will also find known bugs and planned features for the final release.
S y m C a l c 0.1_240617 ALPHA
SPREADSHEET APPLICATION FOR SYMBOS
-------------------------------------------------------------------------------
Features
- cell types
- text cells
- numeric cells
- formulas with numeric results
- cell formatting
- alignment
- "General": left for text, right for numeric values
- left
- right
- centered
- font style
- normal
- bold
- italic
- fixed decimal places (optional)
- 1000 separator (optional)
- number format
- float
- scientific
- percentage
- boolean
- binary
- hexadecimal
- pen colour, background colour
- cell sizes
- width and height can be modified for each column and row
- both by context menu (right click row/column bar) or main menu (see
format -> column/row -> width/height)
- multiple columns and rows can be resized when selecting a range of
columns or rows
- cell range selection
- by keyboard (using cursor and shift) or mouse
- select a whole column by left clicking on column bar; select multiple by
holding shift
- same for selecting rows
- copy & paste
- copy single cell or cell range with keyboard or mouse right-click
- paste into cell range
- relative cell references will be relocated during pasting
- extend and repeat cell ranges when pasting to a destination with a
different range
- formulas
- start a formula with "=" at the beginning
- use e.g. A1 for single cell reference
- use e.g. A1:B4 for a cell range reference (can only be used in list
functions; see below)
- use e.g. $A1, A$1 or $A$1 for (partially) absolute references, which
won't be relocated during pasting
- use +, -, *, /, ^ and brackets for calculations; conventional order of
operations is followed
- automatic recalculation of all connected cells without limitations
- several functions are available, see below
- function parameters are separated using the semicolon ";"
- lists may contain multiple values, single cell references or cell range
references;
example: =SUM($A$2;10;PI();D3:F7) returns value of A2 + 10 + PI + all
values in the range from D3 to F7
- functions currently available
- MIN(list) - returns the smallest value of a list
- MAX(list) - returns the largest value of a list
- SUM(list) - returns the sum of all values in a list
- AVERAGE(list) - returns the average of the values in a list
- COUNT(list) - returns the count of numeric values in a list
- COLUMN() - returns the column (A=1, B=2 etc.)
- ROW() - returns the row
- SQRT(x) - returns square root
- LN(x) - returns natural logarythm
- LOG10(x) - returns base10 logarythm
- SIN(x) - returns sinus
- COS(x) - returns cosinus
- TAN(x) - returns tangent
- ATAN(x) - returns arcus tangent
- EXP(x) - returns e^x (natural exponential function)
- SIGN(x) - returns the sign of a value; -1 (if negative), 0 (if zero), +1
(if positive)
- ABS(x) - returns the absolute value (positive number)
- PI() - returns PI
- keyboard shortcuts
- cursor - select single cell
- cursor+shift - select cell range
- return - down
- tab - right
- tab+shift - left
- F2 - edit cell
- clr - clear actual cell or marked cell range
- esc - cancel cell range marking
- ctrl+A - mark all cells
- alt+0 - open cell format dialogue
- ctrl+C - copy cell(s)
- ctrl+V - paste cell(s)
Upcoming missing features
- cut & paste cells (will relocate other cell references)
- click on cells and ranges while editing a formula
- working status bar
- display up to 250 cells at the same time in a dynamic way
- use full memory potential for supporting up to 2000 active cells
- support for up to 4 sheets in one document
Known bugs and glitches
- fast cursor movement may leave remains
- bold/italics font won't fill full cell with paper (missing SymbOS GUI
feature)
- cells with bold/italics font may display garbage after an update
- cells with large texts may overlap
- no round-up when using fixed decimal places
- switch from keybard cell marking to mouse cell marking will result in screen
garbage
I have to stop working on SymCalc for a while now, so I decided to release this alpha version, if someone wants to try and play around with it.
Any bug reports are very welcome!
Quote from: m_dr_m on 16:13, 14 June 24@Prodatron I wish I were as excellent and productive as you. What is your secret? Legit question! I want to improve myself.
Btw as you are one of my CPC gods and probably one of the best Z80 coders (you are always the most crazy optimization guy), I wish you will come back with some CPC/Z80 stuff :) Hope to see you again in autumn in France at Eliot. Btw, I wish to talk to you about different things anyway (so not going too offtopic here), missed you at the Revision Demoparty for several years, so I am looking forward! :)
SymCalc on a CPC with the Graphics 9000 (V9990) graphic card:
symcalc-g9k1.png
Yeah, finally I got this: :)
geocalc1.jpg
http://www.neef-online.de/home/c64/geos4.htm
(still have much respect to Geoworks/Berkeley Softworks)
Excel(lent), looks great! :) :) :)
new function: fn(<functionname>,<parameters>) and inbuilt SymBASIC to code them in ;)
half kidding, you have so much in there already that it's beyond any commercial spreadsheet of the 80s making it already the most powerful 8bit spreadhseet on the market - minus a fiew features I think...
honestly, I'd consider using it like a database if it gave a choice of less columns and more rows :D
you might even be able to have a disc-based sheet as an option with an unlimited number of random-access rows but your existing column count. it's possible that it will STILL be faster than the competition - image a 10,000 row Z80-based spreadsheet with random-access fetching / calculations etc
I really dig the look of Geocalc!
The final beta will be released soon, probably tomorrow or so. Besides many new features compared to the first alpha version, an extensive documentation in HLP SymbOS help browser format has been added. I plan to develop a tool that will also generate an HTML and a PDF version from the same source.
symcalc-help1.pngsymcalc-help2.pngsymcalc-help3.pngsymcalc-help4.pngsymcalc-help5.pngsymcalc-help6.pngsymcalc-help0.png
Now ALT+F11 ;D
What a well-rounder package!!
@McArti0 : :D
Quote from: Gryzor on 06:33, 09 September 24What a well-rounder package!!
The most important thing is that the schortcut remains identical. Prodatron needs to find the ALT key on the CPC keyboard and then the F11 key. :laugh:
Quote from: McArti0 on 07:23, 09 September 24Quote from: Gryzor on 06:33, 09 September 24What a well-rounder package!!
The most important thing is that the schortcut remains identical. Prodatron needs to find the ALT key on the CPC keyboard and then the F11 key. :laugh:
In SymbOS, "Alt" is assigned to the "Copy" key (on the CPC). The actual key combinations are identical to Excel.
Unfortunately, the CPC does not have an F11 key, so I cannot implement VBA macros, haha ;D
Quote from: McArti0 on 07:23, 09 September 24Quote from: Gryzor on 06:33, 09 September 24What a well-rounder package!!
The most important thing is that the schortcut remains identical. Prodatron needs to find the ALT key on the CPC keyboard and then the F11 key. :laugh:
You can use Quigs instead. It's a nice development tool for SymbOS and similar to VBA.
Quote from: Prodatron on 09:26, 09 September 24Quote from: McArti0 on 07:23, 09 September 24Quote from: Gryzor on 06:33, 09 September 24What a well-rounder package!!
The most important thing is that the schortcut remains identical. Prodatron needs to find the ALT key on the CPC keyboard and then the F11 key. :laugh:
In SymbOS, "Alt" is assigned to the "Copy" key (on the CPC). The actual key combinations are identical to Excel.
Unfortunately, the CPC does not have an F11 key, so I cannot implement VBA macros, haha ;D
Ah, the hardware limitations... 😁
Quote from: HAL6128 on 09:27, 09 September 24You can use Quigs instead. It's a nice development tool for SymbOS and similar to VBA..
:o Why haven't I seen this before?
Quote from: McArti0 on 09:54, 09 September 24Quote from: HAL6128 on 09:27, 09 September 24You can use Quigs instead. It's a nice development tool for SymbOS and similar to VBA..
:o Why haven't I seen this before?
The website for Quigs is still a little bit rudimentary:
https://www.symbos.org/quigs.htm
If you have any questions I will ask
@Edoz(MSX) , he knows everything.
When I solder both chips to 512kB expansion. I'll want to write a RAM-disc for SymbOS.
@Prodatron, is the name final? Did you ever consider Symsheet? 8)
Quote from: dodogildo on 12:53, 09 September 24@Prodatron, is the name final? Did you ever consider Symsheet? 8)
Or maybe SymCell? (sounds similiar to Excel)
Hm... no idea, what do you think?
SymbiPlan (like Multiplan)
Symbius 1-2-3 (like Lotus 1-2-3)
SymCalc (like SuperCalc)
Symbony Spreadsheets (like Lotus Symphony Spreadsheets)
:D
I liked SymSheet a lot but then I wondered why no other spreadsheet application ever used this as a part of the name.
Well, it is similiar to SymShit, and sheet is pronounced in nearly the same way like the dutch/north german "shit" ;D
That remembers me about the "Audi Etron", one of the first full electrical cars from Audi, which means "shit heap" in the french language.
@McArti0 , thanks, your suggestions are nice and playful. But I guess I will stay with SymCalc first. I recognized, that it would be a big amount of work to rename all the sources etc haha. And I am just a big fan of VisiCalc and GeoCalc...
SymSith is equally sinister :-X
;D
I finished the SymbOS HLP to website converter, here is the generated html version of the actual documentation:
https://symbos.org/help/symcalc
It's nearly exactly like the help browser in SymbOS.
I am afraid, that it will take one more day to release the SymCalc beta version.
SymCalc 0.8 beta has been released:
2024-09-10-00.gif
http://www.symbos.org/appinfo.htm?00060
Thanks to prevtenet for the cool icon!
The package contains several example SymCalc spreadsheets (*SCS) as well as all source codes.
Online help:
http://www.symbos.org/help/symcalc
You will need the most actual SymbOS 4.0 beta version. Just update your binary or rom files. Nothing else is required for your current installation:
http://www.symbos.org/download.htm#marke3
New features:
V0.8 (2024-09-09)
First beta release.
→ date/time/datetime, boolean, binary and hexadecimal support
→ contains more than 50 functions including full date and time computation and financial formulas
→ handles cut & paste with full relocation of inner and outer cell references
→ table functions like insert and remove cells, rows and columns
→ mouse-based cell-reference-selection while editing a cell
→ load and save documents
→ document meta informations like author, subject, keywords etc.
→ user-defined number, date and time formats
→ super fast hash-based cell-lookup for quick auto-recalculation
I'm not your first customer for a spreadsheet program on the Amstrad CPC, but I have to say I'm truly impressed!
Could you add NOW or TIMER functions? I'll need it to measure speed.
Quote from: McArti0 on 14:10, 09 November 24Could you add NOW or TIMER functions? I'll need it to measure speed.
Ok, I can add the NOW() function. If I got it correctly it will use the time at the moment when you entered or changed the cell.
It seems, that as long as you don't change the cell or a reference, the time won't change. But when you save and load the sheet again, the time is updated (isn't that inconsistent?).
Anyway, yes, now I will add NOW() :D
Regarding TIMER: that is a VBA thing, at least in Excel. But there is currently no scripting language in SymCalc :D I wonder how I could implement something, which could be useful for measuring something?
In Excel works fine...
You could add time calculate raport field too (or only)
Here is the NOW() function.
E.g. type
=NOW()
or
=NOW()+A1
or whatever.
Could you attach your Excel example so that I can see the details?
Maybe that could be an issue for you:
Datetimes in SymCalc have seconds as the smallest unit.
I could add a TICK() function, which returns the system timer, which counts up every 1/50 second.
Quote from: Prodatron on 15:32, 09 November 24Could you attach your Excel example so that I can see the details?
No, It has 78MB :picard:
Ok, TICKS() has been added as well.
It just resturns the system counter, which is increased every 1/50 seconds.
An example spreadsheet has been attached for demonstrating it.
If you change the value in A1 it will recalculate all 30 cells in A4:E9.
It will also update the cells A2 and E10, which contain the TICKS() function.
symcalc-ticks1.png
E10 will now show the tick difference between start and end of reclaculation.
On a normal CPC this should usually be around 12, so the whole recalculation takes about 12/50s=0,24 seconds (this does not include the redrawing process).
When switching WinApe to TurboMode, it shows between 4 and 6, so it's 2x or 3x faster.
An issue with this is, that E10 should be really the last cell in the internal memory organization, and A2 should be one of the first ones, otherwise it will not measure the full recalculation process.
symcalc-ticks2.png
The HLP file has been updated as well.
Excel F9 recalculate needed. ;) Could you please fit this in too? (Ctrl+9 ?)
SINtestSpeed...
Quote from: McArti0 on 10:53, 11 November 24Excel F9 recalculate needed. ;) Could you please fit this in too? (Ctrl+9 ?)
Cool, thanks for this suggestion. Ok, I will add this.
Do you prefer F9 or Ctrl+9 or should I just use both shortcuts? (why not...)
Ctrl+[0-9] is currently not defined, but this could be added for 4.0. (why not...)
What I wonder is:
As everything is usually auto-recalculated, when anything changed, is this F9 thing really only for updating NOW() (and ticks() ) cells? Or is there any other use case for it? Or is it just an old remnant from Multiplan or so?
Quote from: McArti0 on 12:47, 11 November 24SINtestSpeed...
What the hell is this? :D
Oh wow, that is amazing!
It's full of SINs (a LOT for every cell) and you made a great speed test, really cool! Interesting that this is working.
In Excel when you press DELETE all sheet is recalculate.