Jump to content
IGNORED

Spartados X and Spreadsheets


Lord Thag

Recommended Posts

45 minutes ago, Alfred said:

Actually I think we're getting lost in the weeds here. If the object is to have DOS loadable spreadsheet, I'm not sure SynCalc is going to lend itself to that. It doesn't appear to load a DOS 2.0 and it's code starts down around $070F and runs up to at least the $A100 range and that's just from a few minutes of looking around. I'm wondering if this thing is written in something like Forth or a compilable BASIC because it's just so ...busy. JSR is like every 5th instruction. Uses all sorts of zero page, down low 1-3, $BX-$Dx, just jumps all over the place. It's doing a lot of work for no apparent reason that I can see so far anyway.

For what it's worth, I just let it load in Altirra and then dumped the entire 64K of memory to a file, and started there.

 

I'm still looking around, but at least from $8000 up seems to be code.  Once I hit $BFFF, I will start looking lower.

Link to comment
Share on other sites

I'm a bit suspicious of some of the stuff in the $BXXX range. There's things like JMP $0602 where page six is blank. I wonder if they are leftovers from the state machine, or perhaps some kind of special formatter things. I see the function names like @atan up there, so maybe page 6 is used as a custom code area, like a function copies itself there for execution. This thing has to be compiled something, there's just so many instances of stupid things that no assembler programmer would do. Like:

 

STX $99

STY $9A

LDA $9A  ; Why not TYA ?

LDX $99

 

stuff like that.

 

I think $2231 is the convert Atascii to Video and it runs 30 odd instructions. Madness.

 

$28E3 appears to be the start of the main loop, perhaps the entry point from the loader.

Edited by Alfred
added
Link to comment
Share on other sites

2 minutes ago, Alfred said:

1985 crack

ROM:221F 44 4F 4C+                .BYTE 'D', 'O', 'L', 'L', 'A', 'R', '+'
ROM:2226 43 4F 4D+                .BYTE 'C', 'O', 'M', 'M', 'A', '+'
ROM:222C 50 52 4F+                .BYTE 'P', 'R', 'O', 'T', 'E', 'C', '+'
ROM:2233 50 45 52+                .BYTE 'P', 'E', 'R', 'C', 'E', 'N', '+'
ROM:223A 07 A4                    .WORD $A407
ROM:223C 0B A4                    .WORD $A40B
ROM:223E 1A A4                    .WORD $A41A
ROM:2240 0F A4                    .WORD $A40F

Maybe I'm doing something wrong, but that's what I see.

 

Link to comment
Share on other sites

$1FB5 is the print "WORKING" in the top right looks like

$2BAF sets $9B/$9C to the screen address where X is the low byte of the line, and Y is # 40 byte lines

$120A prints the high-bit terminated line at the $9B line address.

  • Like 1
Link to comment
Share on other sites

6 hours ago, Alfred said:

I'm a bit puzzled by you saying the crack reorders the sector loading order. The first block loaded is at $30D5 for I think $22 sectors.

Yes, this is the loader (sectors 1-8 and 18-39). Then follows the weak sector (88 for SynCalc).

From now on it loads the main program including(!) an underlying modified DOS 2.0S.

 

For my example below I used the non-[a] 1985 release.

SynCalc (1985)(Synapse Software)(US)(Side A).atx SynCalc (1985)(Synapse Software)(US)(Side A)[cr CSS].atr

The protected disk goes on with sectors 93, 99, 99, 105, 96, 95, 100, 91, 102, 102, 92, 104, 94 ... 256, 256, 259, 259, 260

My crack does it like 93, 91-92, 94-253, 255-265, 267-288, 833-897

Because I did not modify the loader it must start with the same sector as the protected disk (93), then I use the sectors before 93 on the same track and from now on they are successive with the exception of two skipped ones (I don't remember why) and the additional block beyond 720.

 

6 hours ago, Alfred said:

Since the sectors are calculated by the tables at $32FA etc. with the various goofy routines ( all that $00,X/$01,X stuff) how were you able to change the ordering without working out the full sectoring list ?

There is no table for sector loading. You need the starting one and from there on they are linked together. Take the compiled(!) BASIC program SYNLIST.XEX from my ATR and it will dump all sectors for a given "file". Or look into the ZIP attached to post 48. It contains TXT-files with all sectors for each of the three "files" (48K+Axlon, 52K and 130XE).

 

Initial, hard coded value for address EORing: $44FF

Initial offset of linkage into sector: $78

 

Sector 93 original:

2F40: DD D6 72 ED 73 35 D7 1A 66 56 F7 3D BD B4 E1 36 |..r.s5..fV.=...6|
2F50: 96 11 49 C2 C5 2A 3D 8E 86 6E 80 BE 3C A2 E5 F3 |..I..*=..n..<...|
2F60: 24 F9 8B 58 F0 3E BC 34 A1 16 86 CC 97 66 84 22 |$..X.>.4.....f."|
2F70: E5 81 AD 9F 0E 61 74 C8 F1 EA 48 13 AB 95 D6 C4 |.....at...H.....|
2F80: 02 7A F9 99 FA 1C 98 26 72 E7 35 A1 2C FD 4E E1 |.z.....&r.5.,.N.|
2F90: 0D 7E D3 F4 13 6B 97 25 71 15 FF AB B7 FB 1E AC |.~...k.%q.......|
2FA0: B6 F9 1E 6F 43 59 D0 92 C0 DB 8F 26 7F 1D 60 C5 |...oCY.....&..`.|
2FB0: 0E CE 1F 19 ED 14 78 95 ED AD 00 3E 79 0A 5B 61 |......x....>y.[a|

moved to $44FF EOR $EDAD = $A952

next sector: 93 = $005D EOR $003E = $0063 = 99

next offset of linkage: $79

 

Sector 99 (1st) original:

2F40: BA 00 3A F6 C0 AF 4A F3 CF E5 09 EE 5F B3 DD FD |..:...J....._...|
2F50: D9 5F E8 3A 6D 9E 93 BB 80 7A 56 90 CF 1E 65 9A |._.:m....zV...e.|
2F60: D0 6C A5 75 89 52 09 AC 1D C4 FD CD 6C 56 5F 78 |.l.u.R......lV_x|
2F70: 4E 5A BE AD CF 3E 98 33 A4 A3 75 1B 48 CA 80 AF |NZ...>.3..u.H...|
2F80: D1 42 84 F3 E0 6C B2 CA C2 3E 2C 1C EE 30 56 DB |.B...l...>,..0V.|
2F90: 82 BE 2D CB 5F 44 19 97 BC DA B2 4F 56 AB 08 19 |..-._D.....OV...|
2FA0: F8 16 23 01 02 12 AE 64 BF 34 68 E8 F1 09 C3 AF |..#....d.4h.....|
2FB0: C9 91 43 D2 93 3C 6C EB CF 0B 8B 00 00 79 03 6D |..C..<l......y.m|

moved to $A952 EOR $0B8B = $A2D9

next sector: 99 = $0063 EOR $0000 = $0063 = 99 (2nd - duplicate)

next offset of linkage: $79

 

Sector 93 crack:

2F40: DD D6 72 ED 73 35 D7 1A 66 56 F7 3D BD B4 E1 36 |..r.s5..fV.=...6|
2F50: 96 11 49 C2 C5 2A 3D 8E 86 6E 80 BE 3C A2 E5 F3 |..I..*=..n..<...|
2F60: 24 F9 8B 58 F0 3E BC 34 A1 16 86 CC 97 66 84 22 |$..X.>.4.....f."|
2F70: E5 81 AD 9F 0E 61 74 C8 F1 EA 48 13 AB 95 D6 C4 |.....at...H.....|
2F80: 02 7A F9 99 FA 1C 98 26 72 E7 35 A1 2C FD 4E E1 |.z.....&r.5.,.N.|
2F90: 0D 7E D3 F4 13 6B 97 25 71 15 FF AB B7 FB 1E AC |.~...k.%q.......|
2FA0: B6 F9 1E 6F 43 59 D0 92 C0 DB 8F 26 7F 1D 60 C5 |...oCY.....&..`.|
2FB0: 0E CE 1F 19 ED 14 78 95 ED AD 00 06 79 0A 5B 61 |......x....>y.[a|

moved to $44FF EOR $EDAD = $A952

next sector: 93 = $005D EOR $0006 = $005B = 91

next offset of linkage: $79

 

Sector 91 crack:

2F40: BA 00 3A F6 C0 AF 4A F3 CF E5 09 EE 5F B3 DD FD |..:...J....._...|
2F50: D9 5F E8 3A 6D 9E 93 BB 80 7A 56 90 CF 1E 65 9A |._.:m....zV...e.|
2F60: D0 6C A5 75 89 52 09 AC 1D C4 FD CD 6C 56 5F 78 |.l.u.R......lV_x|
2F70: 4E 5A BE AD CF 3E 98 33 A4 A3 75 1B 48 CA 80 AF |NZ...>.3..u.H...|
2F80: D1 42 84 F3 E0 6C B2 CA C2 3E 2C 1C EE 30 56 DB |.B...l...>,..0V.|
2F90: 82 BE 2D CB 5F 44 19 97 BC DA B2 4F 56 AB 08 19 |..-._D.....OV...|
2FA0: F8 16 23 01 02 12 AE 64 BF 34 68 E8 F1 09 C3 AF |..#....d.4h.....|
2FB0: C9 91 43 D2 93 3C 6C EB CF 0B 8B 00 07 79 03 6D |..C..<l......y.m|

moved to $A952 EOR $0B8B = $A2D9

next sector: 91 = $005B EOR $0007 = $005C = 92

next offset of linkage: $79

 

6 hours ago, Alfred said:

I was thinking it might be just faster to dump the memory at the point where loading is complete and use that as a binary.

Or a talented coder creates a little program which
- tracks all the loading addresses,

- finds out how many bytes are actually used from each sector (they differ IIRC - perhaps from start to linkage block),

- sorts them

- and spits out the continuous actually written-to memory blocks.

 

Now dump only these from memory.

The VS/SC importing tools remains as a problem, because it is loaded on demand from disk sectors 719, 487-498.

5 hours ago, Alfred said:

It doesn't appear to load a DOS 2.0

It actually does, but embedded into its own loader. Go back to post #11. I attached disassembled code of the original DOS 2.0S FMS (starting at $706) and the only slightly patched DOS 2.0S FMS which is loaded as part of SynCalc.

If you DIFF these, you will see that only a few bytes were changed. I have not enough knowledge of DOS's structure to judge what difference these patches make.

 

Depending on these differences it might be possible to use a different FMS together with SynCalc. To accomplish that, we must find out where the state machine jumps into the loaded code and IF/what else it puts in place which is needed later on by SynCalc's main code.

Edited by DjayBee
  • Like 1
Link to comment
Share on other sites

Just looking through the SynCalc manual, some features look more challenging to clone than others. Like the split-screen modes. You guys that use SynCalc, do you use the split screen-modes ? Or the freeze the headings in place, while the columns scroll ? That one I can at least see as kind of useful.

Link to comment
Share on other sites

way back when, both were useful... not knowing if more modern day things would be simpler or better, can't remember the name of the killer feature but back in, was it, 92 93 there was a major change in spreadsheets and databases that had many folks dropping their ST's for other platforms... not that they couldn't implement it, but rather it was a case of 'they have it now... and that won out some folks.

Link to comment
Share on other sites

Hi together,

 

Did read it too late. Just have:

https://atariwiki.org/wiki/Wiki.jsp?page=VisiCalc

https://atariwiki.org/wiki/Wiki.jsp?page=SpeedCalc

https://atariwiki.org/wiki/Wiki.jsp?page=SynCalc

 

We are in contact with Mike Silva, the author of SynCalc. If we find the souce code, we can share it with all. Maybe we contact the remaining ones from Synapse? Steve Hales did even have the source code of Star Raiders. So, maybe for SynCalc, too? Else, he might know? Else a list of Synapse staff members? I bought the 1983 and the 1985 as originals and the template disk, too. All are in the preservation project. When working with VisiCalc and making some sheets, which I then want to import into the 1985 SynCalc version, I discovered, that code was loaded, opposite to the manual, where you should be able to put away the master disk, after loading and starting SynCalc. Anyway, when all VisiCalc sheets are ported, then this is no longer necessary and a file version might be possible without the VC import function. DjayBee did a gigantic job in bringing the 85 version from atx to atr. We can't thank him enough for this. It is my fault, because I couldn't found time so far to upload everything regarding SynCalc. On VisiCalc I still try to get permission to upload to the Wiki legal. Did contact: Dan Bricklin and Bob Frankston, but there must be a man at IBM, who can give us green light for, so he has done to Dan with the PC version for Dan's site.

3_.jpg

Science3_.jpg

VC-SC.jpg

VISICALC COMMAND STRUCTURE CHART.png

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...