evilmoo Posted May 26, 2020 Share Posted May 26, 2020 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. Quote Link to comment Share on other sites More sharing options...
Alfred Posted May 26, 2020 Share Posted May 26, 2020 (edited) 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 May 26, 2020 by Alfred added Quote Link to comment Share on other sites More sharing options...
Kyle22 Posted May 26, 2020 Share Posted May 26, 2020 It would be nice to run under SDX, but I think it's never gonna happen unless it's torn apart and re-assembled. Quote Link to comment Share on other sites More sharing options...
evilmoo Posted May 26, 2020 Share Posted May 26, 2020 2 minutes ago, Alfred said: I think $2231 is the convert Atascii to Video and it runs 30 odd instructions. Madness. Which version are you looking at? $2231 looks like high-bit terminated menu text in the 1985 version. Quote Link to comment Share on other sites More sharing options...
Alfred Posted May 26, 2020 Share Posted May 26, 2020 Just now, evilmoo said: Which version are you looking at? $2231 looks like high-bit terminated menu text in the 1985 version. 1985 crack Quote Link to comment Share on other sites More sharing options...
Alfred Posted May 26, 2020 Share Posted May 26, 2020 Just now, Alfred said: 1985 crack Just now, evilmoo said: Which version are you looking at? $2231 looks like high-bit terminated menu text in the 1985 version. Sorry, you're right. $1231 is the Video converter. Quote Link to comment Share on other sites More sharing options...
evilmoo Posted May 26, 2020 Share Posted May 26, 2020 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. Quote Link to comment Share on other sites More sharing options...
Alfred Posted May 26, 2020 Share Posted May 26, 2020 $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. 1 Quote Link to comment Share on other sites More sharing options...
evilmoo Posted May 26, 2020 Share Posted May 26, 2020 I'll try to post what I've dumped so far tomorrow morning. Quote Link to comment Share on other sites More sharing options...
drac030 Posted May 26, 2020 Share Posted May 26, 2020 2 hours ago, Alfred said: maybe page 6 is used as a custom code area From what I saw, page 6 is used as a buffer for user input. But it may of course have other uses too. Quote Link to comment Share on other sites More sharing options...
+DjayBee Posted May 26, 2020 Share Posted May 26, 2020 (edited) 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 May 26, 2020 by DjayBee 1 Quote Link to comment Share on other sites More sharing options...
Alfred Posted May 27, 2020 Share Posted May 27, 2020 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. Quote Link to comment Share on other sites More sharing options...
_The Doctor__ Posted May 27, 2020 Share Posted May 27, 2020 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. Quote Link to comment Share on other sites More sharing options...
luckybuck Posted May 27, 2020 Share Posted May 27, 2020 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. 1 Quote Link to comment Share on other sites More sharing options...
luckybuck Posted May 27, 2020 Share Posted May 27, 2020 Have added CalcMagic, too. The 1993 version might(!) run with SpartaDOS... Not yet ready all for the Wiki. But it might help you a step further? CM_A.atr CM_B.atr SynCalc_(Classic).atr SynCalc_(XL-XE).atr SynCalc_128K_(1993).atr SynCalc_Data_DOS_2.5_SD.atr SynCalc_with_OSS_DOS_XL_2.30.atr Bcalc.xex 3 1 Quote Link to comment Share on other sites More sharing options...
evilmoo Posted June 4, 2020 Share Posted June 4, 2020 Here's my work so far on SynCalc. It may or may not be of value to anyone: https://github.com/jduerstock/syncalc 1 1 Quote Link to comment Share on other sites More sharing options...
luckybuck Posted June 4, 2020 Share Posted June 4, 2020 It may! And always will! Thank you. ? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.