Jump to content
GDMike

Supernotes

Recommended Posts

12 hours ago, GDMike said:

I have a scenario that doesn't know what the path+filename would be as it's generated by the user, and is contained in the following.

FNM    BSS  16
COUNT  DATA 0

And I gather from the user, the path+filename into FNM and the length of the filename into COUNT. How would I setup my PAB with this information instead of using the TEXT of a defined path?

 

How much space you allow for the filename (probably should think “pathname”) depends on the DSR. The TI disk controller’s DSR only allows 10-character filenames, but other controllers allow longer paths that include subdirectory names. Even with the TI DSR, your PAB should allow for 25 characters because one way to specify a pathname is DSK.<diskname>.<filename>. Since the diskname can also be 10 characters, that is 3 characters for the devicename (DSK), 10 characters for diskname, 10 characters for filename and 2 characters for the ‘.’ separators.

 

Remember that the namelength in the PAB is a single byte (byte 9). In your scenario, you would need to copy the LSB of COUNT to byte 9 of your PAB in VRAM. If your VRAM address of your PAB is VPAB, say, then something like the following would copy the namelength and the pathname for the file to your PAB:

VPAB   EQU  >1200             VRAM location of PAB
*
* Copy namelength byte to VRAM location of PAB
       LI   R0,VPAB+9         VRAM address of PAB's namelength byte to R0
       MOVB @COUNT+1,R1       namelength byte to R1
       BLWP @VSBW             write the namelength byte to PAB
*
* Copy filename (pathname) to VRAM location of PAB
       LI   R0,VPAB+10        VRAM address of PAB's filename to R0
       LI   R1,FNM            RAM address of filename to R1
       LI   R2,COUNT          namelength to R2
       BLWP @VMBW             write the filename to PAB

 

...lee

Edited by Lee Stewart
clearer comment for “LI R0,VPAB+10”
  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Thanks Lee. I think you've covered this way back when, but I'll confirm that it's probably best that I intentionally do a DF128 read/write type of operation.

I'll lose 28 bytes since I'm saving 1k per SNP page.

How much data again can I get into a DSSD disk, 720k? If that's the case, I'll use less Sam's than I originally thought.

 

 

Share this post


Link to post
Share on other sites
9 hours ago, GDMike said:

... but I'll confirm that it's probably best that I intentionally do a DF128 read/write type of operation.

I'll lose 28 bytes since I'm saving 1k per SNP page....

Is this some midnight math too, or what do you mean here?

If we are talking real disk sectors, then they are 256 bytes. Each can hold exactly two records that are 128 bytes long.

A 1 K page will fill exactly four sectors. Now assuming you are talking kilobyte, not 1000 characters. But since a kilobyte is 1024 bytes, the difference isn't 28 there either.

Share this post


Link to post
Share on other sites

The latest release (early, and no LOAD\SAVE options yet)

SNP with bugs removed

its a Disp Fixed 80 with program name = SNP and start name = SNP

 

SNP

Share this post


Link to post
Share on other sites
  1. Here ya go. SuperNotes Pro latest program with fixes.. NO DISK SAVE functions

Added functions are: insert clock text and insert date text into document at cursor location by using the

Control "T" and Control "D" keys. NOTE: CTRL "Q" MUST have been set first prior. (Clock must be running).

Also note, Inserting the cLock/date text will overwrite ANY text sitting at cursor position, in other words there is no INSERT to push characters to the right.

 

Another added feature is Control "M" key. CTRL M. This will allow IMPORTING text from the Classic99  EDIT menu.

Example: Press CTRL M and PRESS ENTER  and using windows notepad, highlight TEXT in document and copy, Choose Classic99 EDIT menu, select PASTE.

The SNE import window using CTRL M will just wait for TEXT to be imported, otherwise PRESSING Function 9 will escape out.

NOTE: After import press FUNCTION 9.

Currently ONLY 1 page can be imported.

 

And I updated the help menu

 

 

HELP.jpg

SNP

Edited by GDMike
Updated file. Have fun
  • Like 2

Share this post


Link to post
Share on other sites

I've got 2 ea. SNE 32K supercarts ready to put in cases. (Tested) I use those clear cassette cases.

Selling each cart $75 a piece.

These run the SNE programs and include editor assembler GROM.

 

And 1ea 8K supercart for $55 (tested)

(No switches because it's just 1 bank).

 

This will help pay for my geneve work that Chris is doing. Thx

 

 

IMG_20201207_232908042.thumb.jpg.7d87dc1a11f16b909fe7e61c127c1943.jpg

 

 

Edited by GDMike
  • Like 2

Share this post


Link to post
Share on other sites

I'm thinking about using forth, fbforth, and move SNE pages(1-9) into blocks as a way to save those pages.

There should be an address to correspond with a given block in Forth.

This way the user has a way of saving SNE pages. My short term fix

Share this post


Link to post
Share on other sites
5 hours ago, GDMike said:

I'm thinking about using forth, fbforth, and move SNE pages(1-9) into blocks as a way to save those pages.

There should be an address to correspond with a given block in Forth.

This way the user has a way of saving SNE pages. My short term fix

There is an address for each buffer.  Each time you call BLOCK, you get a disk block but the buffer where it goes into memory is chosen by Forth. 

You would need FbForth running along side your editor or you have to code up a virtual memory system that does that kind of thing. 

Not sure those options get you what you are looking for. ??

 

Or am I missing something important.

 

  • Like 1

Share this post


Link to post
Share on other sites

No, that's fine. I think I'm better to wait. Since lee has an idea that he's working on for SNP that would benefit SNE in the long run. I was just thinking out loud of how to possibly solve my DSR issue, but lee suggested offline that he might be able to implement a strategy that could layout saving SNP pages,(SNP has a feature for importing SNE pages 1-9), as FBFORTH does with BLOCKS since SNP doesn't allow for jumping in and out of any other pages except for the page above or below the current page.

So it probably makes better sense to use that technique and flushing changed sectors as SNP pages are changing.

Instead of the one-off file save I originally planned. Well, it seems quite cumbersome to try and gather pages that changed and save them out especially if the data is extremely large.

I don't know another way, unless breaking out into multiple files to save data, even empty pages. Seems time consuming.

 

 

  • Like 1

Share this post


Link to post
Share on other sites

The user would be responsible for creation of a table of index.

This just provides a platform and paging up or down gets you a sequential page to another.

 

Share this post


Link to post
Share on other sites

Just a thought here.  How about a function keypress that pops up a window that displays a list of available sequential pages you can go to, possibly a list with only those pages with contained text.

 

Or, what TI-Writer does, it allows you to go to any line in a file.  Much quicker than paging, especially if like some source files I am working on have 1000 plus lines of code.  Paging 20+ lines during each page down to go to line 1000 means about 50 page down keypresses and 50 re-writes of the whole screen.

 

Or, another route I would suggest some "tags" to create hyperlinks to other points in the file, however, that would require some major coding if you were inserting text and text in subsequent pages moved around.  Or, maybe some kind of "bookmark" tag that after text insert, or upon first loading of the file, it rescans the files and builds a special bookmark page.

 

Just throwing ideas out there for something to think about.

 

Beery

  • Like 1

Share this post


Link to post
Share on other sites

The UCSD p-system's text editor uses the marker principle. You can jump directly to the beginning and end of a file, or page up and down.

Apart from that, you can set a marker at any location and give it a name. Then, by using the command Jump Marker, you can type in the name and it will take you to where the marker was set.

The program does keep track of where the markers are, regardless of what you insert and delete. They even survive the text being deleted where the markers are set. They "inherit" a position near where they were.

 

So if you set the marker called ORIGIN at the beginning of the word originally, you get it like shown in this line.

This is the text we originally typed in to the file.

 

If you now delete some of the line, then you get this instead

This is the text in to the file.

 

Although the marker is now at the beginning of the word in, it's still called ORIGIN.

 

In the Supernotes program, I've understood that the text is stored in pages. How is inserting and deleting text managed? If you insert a character, do you push everything forward? How do you handle that if you have many pages behind the inserted text? Or do you only insert locally in a page?

How are pages linked? Is it just in numerical order, or do you allow a logical sequence of pages to be in an out-of-order physical sequence? In the latter case, it's possiible to handle text insert by letting text from a page spill into any unused page, and then link that into the logical sequnce.

 

Either you have to deal with moving a large amount of data, or handle fragmentation between pages. Or not allow text insert at all, at least not outside a page.

  • Like 1

Share this post


Link to post
Share on other sites
2 hours ago, apersson850 said:

In the Supernotes program, I've understood that the text is stored in pages. How is inserting and deleting text managed? If you insert a character, do you push everything forward?

Last question, yes. To a point. Each page has a boundary. EOP and BOP within each page.

The user can either go to the page previous or go to the page next from the page they're currently on. At this point in time there is no jump around that.

But I did make the command line and it's simple to add it to the command line to jump to whatever page number.

Page numbers are not numbered in stone but the program does give you the page number as it's presented to the user when key pressed page up or pressed page down because of 2 variables. BANK# and PAGE.

The way I have it set up is Page the variable can be a number between 1 and 4 and Bank#,a variable can be a number between 11 and 247 but represents 4096 bytes per bank#.

 

But mathematically I can jump to any page that a user gives me if I wanted to implement that function.

But the issue at hand is how to save and scroll through the data and also retrieve the data I also thought of something like making a file for every page wow that would be a thousand 1k files...yikes.. or give or take a hundred.lol

But Lee has a plan he he's all over it I think he's going to implement it the way forth works in his fbforth. Where there's just one big file and then the user can page up and down through the file I guess four pages can be in ram and then if a page gets updated it can be flushed. 

Which sounds okay to me.

Beery, I was going to implement a hypertext and maybe I can still do it. I had a lot of the workings already in place and still do we'll either have to delete it or I'll have to finish it but I don't want to touch it until we have the DSR completed.

That way I know whether I can include it or not because it's like something like 736 bytes of data for every one Bank which is 4096 bytes but I would have 736 bytes to do something with. 

But I'm going to hold off until Lee gets this result because I'm making it harder by adding stuff in rt now. 

 

Edited by GDMike

Share this post


Link to post
Share on other sites
23 minutes ago, GDMike said:

Beery, I was going to implement a hypertext and maybe I can still do it. I had a lot of the workings already in place and still do we'll either have to delete it or I'll have to finish it but I don't want to touch it until we have the DSR completed.

That way I know whether I can include it or not because it's like something like 736 bytes of data for every one Bank which is 4096 bytes but I would have 736 bytes to do something with. 

But I'm going to hold off until Lee gets this result because I'm making it harder by adding stuff in rt now. 

 

Mike,

 

Just for the record, I applaud your assembly efforts and I know I was able take a routine Lee wrote for the string search that worked to my benefit.  I do want to say though that things I am suggesting are that, suggestions, on what you could implement to solve some issues that are presented.

 

Myself, I am a Geneve user and will pretty much work "writing text, aka source code" with MyWord and it's 80 column editor and do not have any need for anything else for writing text/code for either the Geneve or TI-99/4A.  While I have a TI/Sams/TIPI setup, it is highly unlikely I would use the program myself as I rarely turn the TI on outside of any BBS testing.  So what I am saying is, take my comments as suggestions, not a wish list for something I would like to have for myself.

 

Beery

 

 

 

 

  • Thanks 1

Share this post


Link to post
Share on other sites

Right on. It's all good. It's my first assy program, like that first ford comet I had to learn how to drive.

I'm all over the place with code and wishing for exotic places to go.

But round the block is cooler in a comet.

Edited by GDMike
  • Like 2

Share this post


Link to post
Share on other sites

Mr. Miller, I sure hope your healed before going under surgery 😉, but regardless, I sure hope for the best of outcomes for you and we'll all be here waiting for you when it's time for you to enjoy the hobby again. 

 

  • Like 2

Share this post


Link to post
Share on other sites
9 hours ago, GDMike said:

But Lee has a plan he he's all over it I think he's going to implement it the way forth works in his fbforth. Where there's just one big file and then the user can page up and down through the file I guess four pages can be in ram and then if a page gets updated it can be flushed. 

Which sounds okay to me.

What is the point of the memory module then? Implement a window into a large text block file you can do on any TI. Or do you intend one more layer? A buffer into the Supercart which then dumps everything to disk?

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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...