This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
Topics - FinaleTI
16
« on: March 03, 2011, 05:47:57 pm »
Anyone else here watch Soul Eater? I just started about 2 weeks ago, and I've seen the first 11 episodes so far, which is more than enough to know how awesome this show is.
I absolutely love Death the Kid and his symmetry obsession, and Dr. Stein, because he's just so eccentric and awesome at the same time. And you can't forget Excalibur, whose legend dates back to the 12th century!
17
« on: February 22, 2011, 09:37:30 am »
When you use Text(20,30), I understand that it stores 20 to somewhere that denotates the Xpos, and 30 to somewhere that denotates the Ypos.
What I would like to know is what memory location are those coordinates stored to?
18
« on: February 21, 2011, 12:35:39 pm »
For Pokemon TI, I've been thinking about the sprite data I'd need. I'm looking at about 77312 bytes just for the battles sprites (this is the total for front and back, but it's still a lot). I was wondering if someone could help me with compressing the images.
They're 4 lvl greyscale and here's a sample of the hex data:
Bulbasaur Hex Code:
PART_1: 00000080 00000100 00000240 00001C20 000320A0 00088120 00120100 00240110 0048C208 06492214 097E1214 0982140A 0018180A 08310C0A 14032612 12043102 1E0680E0 2C068244 20018648 4FFA4670 C0040980 43FC0010 21020208 10801408 0740E40C 00900804 00860804 0001F804 00105608 000611C8 00012090 0000C060
PART_2: 00000080 00000140 00000260 00003CA0 000721A0 000881A0 001203A0 00340F10 007EFF18 067F3F1C 097E3F1C 09827E1A 0019FC1A 0833FE3A 1407FFFA 120CFFF2 1E0EFFE6 2C06FFEC 2003FFF8 5FFE7FF0 C2041FE0 43FC1FF0 21023E78 1B817E18 07C0FC1C 00B0FC1C 008FF81C 0043FC1C 0033F7F8 000FF1F8 0001E0F0 0000C060
If someone could help with this, it would be greatly appreciated.
19
« on: February 12, 2011, 08:01:47 pm »
This where I'll be posting about the people and places in Nostalgia. This will be updated every now and then. Characters: Roland Ingnia Age: 18 Date of Birth: July 3 rd, 1019 AF Hair: Crimson Eyes: Crimson Master Thief Height: 5'8" Home Dimension: Nostalgia Dimension Magical Affinity: Star Special Weapons: Chain Blade Weapon of Choice: One-handed longsword Portrait: Aria vi Amertia Age: 19 Date of Birth: May 16 th, 1018 AF Hair: Mahogany Eyes: Green Alterian Knight Height: 5'10" Home Dimension: Enlightened Dimension Magical Affinity: Holy Special Weapons: Unknown Weapon of Choice: Two-handed broadsword Portrait: Arc Tenshido Age: 19 Date of Birth: September 8 th, 1018 AF Hair: Black Eyes: Grey Royal General Height: 6'0" Home Dimension: Enlightened Dimension Magical Affinity: Unknown Special Weapons: Unknown Weapon of Choice: Two-handed broadsword Portrait: Alvar Tenshido Age: 32 Date of Birth: November 17 th, 1004 AF Date of Death: March 23 th, 1036 AF Hair: Black Eyes: Grey Royal General Height: 6'2" Home Dimension: Enlightened Dimension Magical Affinity: Dark Special Weapons: Unknown Weapon of Choice: Two-handed broadsword (Wields it single-handedly) Portrait: Trivia: Alvar was the last known Dark Knight, the branch of Sentinels representing the Dark element. After the Fall, certain families, such as the Tenshidos passed down the Sentinel trait every few generations. The Tenshidos happened to be the last family representing the Dark element Leon "Leo" Tenshido Age: 14 Date of Birth: December 17 th, 1023 AF Hair: Black Eyes: Blue Mercenary Height: 5'4" Home Dimension: Enlightened Dimension Magical Affinity: Dark Special Weapons: Unknown Weapon of Choice: Battle axe Portrait: Family relations: Leo is Alvar's son. The Great Sage Isaac Age: Unknown Hair: Gray Eyes: Brown Sage Height: 5'11" Home Dimension: Nostalgia Dimension Magical Affinity: All Special Weapons: Unknown Weapon of Choice: Sage Staff Portrait: None Isaac was Roland's teacher in the magical arts and general education while he was being raised by the thieves. He's so old, his family lineage and surname are unknown to anyone in the Nostalgia Dimension. It's said he's good friends with the Creator himself, and odds are he knows more about what's going on with Alteria than those chosen to save it. The Blue Man Age: Unknown Hair: Blue Eyes: Blue Unknown Height: Unknown Home Dimension: Unknown Magical Affinity: Unknown Special Weapons: Unknown Weapon of Choice: Unknown Portrait: None The Blue Man is a persona that has shared Roland's mind since he was the age of 4. No one knows his real name, so "The Blue Man" is the name Roland uses to refer to him. He knows all about Roland, but no one knows much about him, or his goals. He has appeared to Roland a few times, but his appearance was obscured by a brilliant blue aura. It is said, in times of desperation, Roland's eyes have been said to turn bright blue... Places: Amertia - The main province of Alteria. Ignortia - The northern province of Alteria. Polar climate. Esteirnia - The eastern province of Alteria. Desert climate. Soutnia - The southern province of Alteria. Islands. Weseneria - The western province of Alteria. Mountains keep this province fairly isolated. Time periods (for reference): 1-20 BC - Original time period. First War occured then. 1-10000 AC - Time after the Rise of the Creator, until the fall of the Sentinels. 1-1037 AF - Time since the dimensional split. Current time frame. BC - Before the Creator AC - After the Creator AF - After the Fall Note: The current year is 1037 AF.
20
« on: January 30, 2011, 01:30:56 pm »
This is where I will be posting the Flashbook for Nostalgia's story whenever I update it, as well as where you can tell me what you think of the story, or critique my writing, offer tips on making parts of it better, etc.
Flashbook: 2/7/2011 - Added Chapters 7-9.
Old Versions: 2/4/2011 - Added Chapters 4-6. 2/2/2011 - Added Chapter 3 and txt version. 1/30/2011 - Christmas Release uploaded here. Consists of Prologue, and Chapters 1 & 2.
21
« on: January 03, 2011, 05:08:51 pm »
This tilemapper that I made is unique in that it uses pictures for the source. Generally Pure BASIC scrolling tilemappers use strings, which while a little faster, they can be much larger. So I tried to make one of these kind of mappers before, but I didn't handle it quite right, and it was incredibly slow. This one is much faster than the old one that I've since lost. I've only run this on an SE, so I don't know how fast it is in 6 mHz. Attached is the engine and the map I used in the screenie.
22
« on: December 23, 2010, 02:37:28 pm »
Right here.This proves Pokemon Black and White are going to be awesome! We just have to wait until they get released outside Japan...
23
« on: December 19, 2010, 06:35:14 pm »
I was looking at this page to see what kind of data structure I'd need for Pokemon TI, but for experience, it says a 3 byte var was used. If someone could give me a routine for addition, subtraction, and displaying a 3 byte var (or 4 byte if necessary), I would greatly appreciate it.
24
« on: December 12, 2010, 11:25:22 am »
1) Appvars and Programs
Appvars and programs have just about the same structure when accessed through Axe. They can have names up to 8 characters in length, that do not start with a number. Appvars can contain lowercase letters in their name, and while programs can, it is more common practice for them to have all uppercase names. This is because if a program contains lowercase letters in its name, it cannot be run from the homescreen. To access an appvar: GetCalc("appvAPPVAR")→PointerWhere 'APPVAR' is to be substituted with the name of the appvar you want to access, and Pointer is where you want the data to point to. For example: GetCalc("appvAPPVAR")→AThis stores the location in RAM of the appvar APPVAR to the pointer A. You can then access data in the appvar by using pointers as you normally would. GetCalc("appvAPPVAR")→A 1→{A}The code above would store 1 to the first byte of the appvar APPVAR. The code above will only work if the appvar exists and is in the RAM. Now, if your appvar doesn't exist, you can easily create it by adding a second argument to your GetCalc() command. GetCalc("appvAPPVAR",Size)→PointerWhere Size is the size in bytes of the appvar you want to create. If the appvar exists, but is in the archive, there are a number of things you can do. You could unarchive it, but if you are only going to read data from it, this is not the best way to do it. UnArchive "appvAPPVAR"Most of the time if you do this, you'll have to end up archiving it when you're done with it. Archive "appvAPPVAR"This can take more and more time if you haven't GarbageCollected recently, though. However, this does allow you to save your data in the archive. If you simply want to read data from an archived appvar, then you could copy it to a file. GetCalc("appvAPPVAR",File)Where File is the token for a Y-Var (Y 0-Y 9). Once the appvar is copied to a file, you can read from it like a pointer. GetCalc("appvAPPVAR",Y0) {Y0}→AThis would store the first byte of your appvar to the pointer A. Once you no longer need an appvar, you can simply delete it. DelVar "appvAPPVAR"This will only work if the appvar is in the RAM. If you copied your appvar to a file, you don't need to worry about deleting a file, as ending the program will take care of clearing the file for you. In addition, you can copy an appvar to a file that you previously used with no adverse effects. GetCalc("appvAPPVAR",Y0) GetCalc("appvAPPVAR2",Y0)This would copy the appvar APPVAR to file Y 0, then copy the appvar APPVAR2 to file Y 0. Accessing file Y 0 would then allow you to access the data in APPVAR2. Please note that data cannot be stored to files, merely read from files. Programs can be accessed exactly the same way as appvars, except that you use the 'prgm' token instead of the 'v' you get from [2nd]+[8] (which becomes 'appv' with the Axe Tokens).
2) Real Variables
Accessing real vars is fairly easy to do, actually. First, getting the pointer to a real var is: GetCalc("varA")→PointerWhere A can be substituted with any real var, A-θ, and Pointer is the where you want the data to point to. Note: If you are using an older version of Axe (pre 0.5.3), then please read the below message. Otherwise, skip it, since it no longer applies, and real vars function like any other external var, pointer-wise.Now, the tricky part is accessing the data in a real var. Simply doing: GetCalc("varA")→P 1→float{P}will not give you proper results. In fact, it will render the variable A invalid until you overwrite it properly, whether inside or outside the Axe program. The correct offset for accessing a real var is Pointer-2. This is because currently (as of Axe 0.5.2) GetCalc() accounts for the size bytes of a variable, but real vars have no size bytes. Thus, the pointer is offset by 2. This may be fixed in future versions, but until that is stated, stick with Pointer-2 for real vars. GetCalc("varA")→P 1→float{P-2}End NoteFor Axe 0.5.3 and later, the bug with size bytes always being accounted for no longer exists, so the following is the code you should use: GetCalc("varA")→P 1→float{P} This code will store one to the real var A, and you can see that now outside of the Axe program. You can store integers from 0-65535 to real vars using Axe, as Axe only supports two byte numbers. Note: You don't need to put a r after the float command if you are storing a two byte number. The 'var' token is the 'u' you get from [2nd]+[7] (it becomes 'var' with the Axe tokens).
3) Strings
Strings are actually dealt with in the same way as programs and appvars, storage-wise. The only difference is how you access them. If you want to use Str0-Str9, you simply use: GetCalc("StrX")→PointerWhere StrX is any token from Str0 to Str9. You can also create a string of a certain size by doing: GetCalc("StrX", Size)→PointerPretty simple, right?
4) Hacked variables
Now here's the fun begins. Say you don't want to touch Str0-Str9, but you need a String for whatever reason. Why not use a hacked variable? For those who don't know what a hacked variable is, the OS only includes the tokens for X amounts of vars, like 10 pictures, or 10 strings. But it actually supports up to 255 different pictures, strings, or whatever other var! These don't have tokens like Str99, so they will show up as a seemingly random token, that may look exactly like another token, but they serve a very different function. These hacked tokens function exactly the same as the normal ones. In Hybrid BASIC games, using hacked pictures is actually a fairly common procedure, since it allows for more graphics easily. In order to use a hacked variable, it's not as straight forward as a normal one, but it's not really that difficult either. Just different. For the purposes of this lesson, we'll be using Str1 as a static pointer for our hacked names, but you can just as easily place the data in the GetCalc() statement. For example, the lesson will present the data like this: [015D]"M"→Str1 GetCalc(Str1)→PBut you can just as easily do this: GetCalc([015D]"M")→Pand it should still work correctly. I've broken down the next section based on what type of var you're looking to use, so find it and read the section. Hacked Pictures
So you wanna use a hacked picture? That's simple enough. [0760]Data(#,0)→Str1# here represents the number of the picture you want to use. Keep in mind that 0 is Pic1, 1 is Pic2, etc., with 10 being Pic0. 11 and up are the hacked pics, and they will use odd tokens to represent themselves in the memory menu. Once you have your name, getting a pointer is as simple as: GetCalc(Str1)→PointerAnd creating the picture is as simple as: GetCalc(Str1, Size)→PointerHacked Strings
Coming soon...
5) Accessing Arbitrary Variables (courtesy of squidgetx) Copy("HI",L1+1,2) 0->{L1+3} E15->{L1} GetCalc(L1)->AIt does the same thing as GetCalc("appvHI")->A, but I'm sure you can think of many applications of this method instead (shells and mem readers come to mind). You can use 05 to get a program or 06 to get a protected program (instead of $15). Other prefixes you may be able to use are (taken from the SDK. also I haven't tested all of these and would be wary if you tried GetCalc'ing an application for example)
Data Types: 00h Real 01h List 02h Matrix 03h Equation 04h String 05h Program 06h Protected Program 07h Picture 08h Graph Database 0Bh New EQU 0Ch Complex 0Dh Complex 14h Application 15h AppVar 17h Group This could be taken as a little confusing, so let's break this down a little bit. Copy("HI",L1+1,2)This line copies the name of the variable (in this case, "HI") to L 1+1. 0->{L1+3}This line adds the null byte or terminating zero to the end of the name string starting at L 1+1. Where 3 is would be the length of the variable name + 1. E15->{L1}This line stores the type byte of the variable to L 1. In this case, it's denotating an appvar. The E means the number that follows is the hexadecimal equivalent, so any of the hex numbers from the above list would work here in place of the 15. GetCalc(L1)->AThis uses the string you just constructed at the beginning of L 1 to create the variable.
25
« on: November 22, 2010, 09:31:25 pm »
This is gonna be my entry for Cage Match #3. It's a prequel to Nostalgia that tells the story of Sky and his journey to stop the First War, as well as his witnessing of the birth of the Creator. The war between the Great Beings split the world into factions: those who supported the light, and those who supported the dark. Only a few remained neutral. It revolves around Sky: And his best friend Kain: They are seperated shortly before the events of the story. At the beginning of our tale, Sky is journeying to find the fortress where those who are neutral in this war reside. During his quest, Sky meets two others whom he persuades to join him: Kurai, the dark warrior: And Hikari, the holy knight: While you build up a team over the course of the game, battles are only 1v1. Sky is pitted against the enemy, but he can call upon his companions to perform special attacks or skills. You control Sky throughout the game, btw.
26
« on: November 17, 2010, 09:19:19 pm »
Is there a way to execute a nostub program from an Axe app, or would I need ASM code to use with Asm()? If so, what would that routine be?
27
« on: November 16, 2010, 07:20:45 pm »
I hope this is the right section... If not, sorry. I downloaded Hot_Dog's ASM Tutorials and compiled the example in Lesson 4 successfully. However, when I tried to recompile penguin77's AboutFix program, spasm threw several errors. I'm pretty sure the problem is I don't have the correct ti83plus.inc, but I'm not sure where to get the correct one, or if the program is even with the ti83plus.inc. Here are the errors I get: The program I was trying to recompile is attached, and the setup is the Windows Files folder in Hot_Dog's tutorials. If someone could point me in the right direction, I'd really appreciate it.
28
« on: November 08, 2010, 04:28:06 pm »
Fear me! Evil power courses through me, unchecked, for the nexus is free! And check out my awesome new avatar.
29
« on: October 04, 2010, 08:05:15 pm »
I'm looking for 2 new sprites for Blur. I'd like a squirrel and a whale. These sprites need to be no bigger than 8x8, but not shorter than 7px. Thanks in advance!
30
« on: October 03, 2010, 07:05:27 pm »
I've been working on Pokemon TI a lot recently, but in my current build of the map engine the music no longer works. I just can't seem to figure out why it doesn't work.
Here's the code for the engine:
:.A66 :[00FFD0FF50FFD0FF000000000000000000FFFFFF00FFFFFF00FF0BFF0AFF0BFF50FFD0FF00FFFFFF0AFF0BFF00FFFFFF3F407F8080FFFFE1→Pic1 :[FF7F787FF87F787F8040201028448201FF000000FF000000FFFE0EFE0FFE0EFEF87F787FFF0000000FFE0EFEFF0000003F5F7FBFBF80BFBE→Pic2 :[030F1F3F7F3F7F3FC0F0F8FCFEFCFEFC3F3F3F3F3F1F0F06FCFCFCFCFCF8F060030F1F3F7F3F7F3FC0F0F8FCFEFCFEFC3F3F3F1F0F0F0703FCFEFEFEFCF8F000030F1F3F7F3F7F3FC0F0F8FCFEFCFEFC3F7F7F7F3F1F0F00FCFCFCF8F0F0E0C0030F1F3F7F3F7F3FC0F0F8FCFEFCFEFC7F7F3F1F3F1F0F06FCF8F8F8F0E0C000030F1F3F7F3F7F3FC0F0F8FCFEFCFEFC3F1F1F1F0F070300FEFEFCF8FCF8F060030F1F3F3F1F1F1FC0F0F8FCFEFEFEFC1F0F070307030301FCFCFCFCF8F0E0C0030F1F3F3F1F1F1FC0F0F8FCFEFEFEFC1F0F0703070F0703FEFEFEFEFCFCF830030F1F3F7F7F7F3FC0F0F8FCFCF8F8F83F3F3F3F1F0F0703F8F0E0C0E0C0C080030F1F3F7F7F7F3FC0F0F8FCFCF8F8F87F7F7F7F3F3F1F0CF8F0E0C0E0F0E0C0→Pic3G :[030F1C337F3D7022C0F038CCFE5C0E4432393F372F1F09064C9CFCECF4F89060030F1C337F3A7022C0F038CCFEBC0E4432393F170F0F04034C9EEECE9CF8F000030F1C337F3D7022C0F038CCFE5C0E4432797773391F0F004C9CFCE8F0F020C0030F1C386B3F6F3FC0F0381CD6FCF6FC3F3F3F3F2F1F0906FCFCFCFCF4F89060030F1C386B3F6F3FC0F0381CD6FCF6FC7F7F3F1F2F1F0906FCF8F8E8D0E0C000030F1C386B3F6F3FC0F0381CD6FCF6FC3F1F1F170B070300FEFEFCF8F4F89060030F1F3F37111515C0F0188CFEFE4AFC110C070307020301FCFCFC7C78F020C0030F1F3F37111515C0F0188CFEFE4AFC110C0703040F0603FEFEFE7EFCECD830030F18317F7F523FC0F0F8FCEC88A8A83F3F3F3E1E0F04038830E0C0E040C080030F18317F7F523FC0F0F8FCEC88A8A87F7F7F7E3F371B0C8830E0C020F060C0→Pic1G :[030C102040205022C030080402040A44322827342B1009064C14E42CD4089060030C102040205022C030080402040A44322827140B0804034C12E20A9408F000030C102040205022C030080402040A443248475029100F004C14E428D01020C0030C102040204020C0300804020402042020302C2314090604040C34C4289060030C102040204020C0300804020402044040201827180906041828489060C000030C102040204020C030080402040204201814120906030002020418E4189060030C102020101415C03008040A064244110807020402020144848444781020C0030C102020101415C03008040A06424411080702040B040342828242BC24C830030C102050604222C0300804040828A8222121221E0804038810E04020404080030C102050604222C0300804040828A8424141423D24130C8810E04020D020C0→Pic2G :DeltaList(0,1,0,2,0,3,4,3,5,3,6,7,6,8,9,8)→GDB1 :DeltaList(0,1,0,2,0,0,3,0,4,0,5,6,5,7,8,7)→GDB2 :Lbl DG :DispGraphrr :GetCalc("Str1")→Q :16→{L1} :16→{L1+1} :ClrDraw :ClrDrawr :Full :GetCalc("vMDATA")→L→S :0→Y→E→F+1→K→T :FnInt(GT,0) :Full :Goto MP : :Lbl RND :Full :For(θ,0,7 :Full :FnOff :For(B,0,11 :θ+E*{L1}+B+F→Y :Pt-Off(B*8,θ*8,{Q+Y}*8+Pic1 :Pt-Off(B*8,θ*8,{Q+Y}*8+Pic2)r :Pt-Off(B*8,θ+1*8,{θ+1+E*{L1}+B+F+Q}*8+Pic1 :Pt-Off(B*8,θ+1*8,{θ+1+E*{L1}+B+F+Q}*8+Pic2)r :For(Y,0,1 :If ((B+F)≥({L1+1})) or ((θ+E)≥({L1}-Y :If ((B+F)≥({L1+1})) or ((θ+E+1)≥({L1}-Y :Pt-On(B*8,θ+1*8,[FFFFFFFFFFFFFFFF] :Pt-On(B*8,θ+1*8,[FFFFFFFFFFFFFFFF])r :End :Pt-On(B*8,θ*8,[FFFFFFFFFFFFFFFF] :Pt-On(B*8,θ*8,[FFFFFFFFFFFFFFFF])r :End :End :End :θ+1→θ :{H+J+GDB2}*32→N :Pt-On(32,28,N+Pic3G :Pt-On(40,28,N+8+Pic3G :Pt-On(32,36,N+16+Pic3G :Pt-On(40,36,N+24+Pic3G :Pt-Change(32,28,N+Pic3G :Pt-Change(40,28,N+8+Pic3G :Pt-Change(32,36,N+16+Pic3G :Pt-Change(40,36,N+24+Pic3G :Pt-On(32,28,Pic1G+G :Pt-On(40,28,Pic1G+8+G :Pt-On(32,36,Pic1G+16+G :Pt-On(40,36,Pic1G+24+G :Pt-On(32,28,N+Pic3G)r :Pt-On(40,28,N+8+Pic3G)r :Pt-On(32,36,N+16+Pic3G)r :Pt-On(40,36,N+24+Pic3G)r :Pt-Change(32,28,N+Pic3G)r :Pt-Change(40,28,N+8+Pic3G)r :Pt-Change(32,36,N+16+Pic3G)r :Pt-Change(40,36,N+24+Pic3G)r :Pt-On(32,28,Pic2G+G)r :Pt-On(40,28,Pic2G+8+G)r :Pt-On(32,36,Pic2G+16+G)r :Pt-On(40,36,Pic2G+24+G)r :FnOn :End :K-1→K :Return : :Lbl MP :0→T→G→H→J+1→K :sub(RND) :Repeat getKey(15) :If getKey(1) and (K=0 :E→T :If H≥4 :0→H :End :For(J,0,2 :3-J→K :{H+J+GDB1}*32→G :sub(RND) :E+1→E :For(θ,0,649 :End :End :T+2→E :!If H :2→H :Else :0→H :End :End :If getKey(4) and (K=0 :E→T :If (H≠5) and (H≠7 :5→H :End :For(J,0,2 :3-J→K :{H+J+GDB1}*32→G :sub(RND) :E-1→E :For(θ,0,649 :End :End :T-2→E :If H=5 :7→H :Else :5→H :End :End :If getKey(2) and (K=0 :F→T :If H≠10 :10→H :End :For(J,0,2 :3-J→K :{H+J+GDB1}*32→G :sub(RND) :F-1→F :For(θ,0,649 :End :End :10→H :T-2→F :End :If getKey(3) and (K=0 :F→T :If H≠13 :13→H :End :For(J,0,2 :3-J→K :{H+J+GDB1}*32→G :sub(RND) :F+1→F :For(θ,0,649 :End :End :13→H :T+2→F :End :End :LnReg :Return : :Lbl GT :.T+1→T :.Q+1→Q :.If T=2 :.0→T :Normal :DispGraphrr :Full :.End :sub(MI) :Return : :.MUSIC PLAYER :[0020341E821CE91A6619F917A1165C1529140713F611F41000101A0F410E740DB30CFD0B500BAE0A140A8309FB087A0800088D072107BA065906FE05A80557050A05C2047D043D040004C70390035D032D03FF02D402AB02850261023F021E020002E301C801AF01960180016A015601430130011F010F010001F200E400D700CB00C000B500AB00A1009800900088008000790072006C00660060005B00550051004C004800440040003C0039003600330030002D002B00280026002400220020001E001D001B001900180017001500140013001200110010000F000E000D000D000C000B000B000A000A00090008000800080007000700060006000600]→Str9N :Lbl MI :Return!If GetCalc("vMDATA") :!If L :+1→C :Return :End :ReturnIf C-1→C :Lbl I2 :If {L+1} :SinReg{{L}+Str9N}r,1900) :If {L+2→L-1}→C=1 :Goto I2 :End :Else :S→L:90→C :End :Return
|