Jump to content
IGNORED

Geneve OS development discussion


Recommended Posts

9 minutes ago, RickyDean said:

Oh @InsaneMultitasker, going into your Github above, as I move to your wiki at https://github.com/horizonramdisk/Horizon-Ramdisk-ti994a/wiki, I find an issue. When I click on the hotlink 

I get a page not found report. FYI.

  Thanks for your contributions to our hobby.

Good catch. I removed the link t0 v7.30 and updated the forum links in the GenCFG section.  The old links still resolved e.g.,"atariage.com\forums" but it seemed better to refresh with the correct construct "forums.atariage.com".  

  • Like 1
Link to comment
Share on other sites

  • 4 weeks later...

@9640News - I was cleaning up my documentation paperwork today.  I have a few notes that I wrote in my copy of the GenREF DSR manual that are not represented in the published version.  Sharing them here for you to review and update the manual, where appropriate.

 

Genref manual for DSR

 - page 4, Bit 4 appears to be flipped.  I show that 1 is for variable, 0 for fixed length. (also see screenshot from TI documentation)

 - page 13, the character count refernce is missing from the PAB format. I believe bytes 12 and 13 are the count for variable records. Also, see page 12 (character count) for the general description AND note regarding rec length for apps like Extended BASIC merge, which may specify a record size larger than the file's record length. 

- page 29, during MDOS 7.xx work, it was determined that the directory routines use a special attribute ">54" to signify that a directory exists during the status operation.  I noted this at the bottom of my page, along with the referenced files (L8.OPEN&LS2 and TIPI.LEVEL9).

- page 30, bit 4 is the archive/backup flag (1=modified); bit 5 is emulate (when set to 1); bit 6 is reserved/unused

- page 31, byte 8, my note states that this 2-byte value is not always used by MDOS as described. suggest adding a cautionary note until/unless you can verify otherwise.

- page 31, descriptions for bytes 10 and 12 are reversed: 12 is date of file creation, 10 is time of file creation.   

- page 31, descriptions for bytes 14 and 16 are reversed: 14 is time of upate; 16 is date of update.

- page 31, bytes 18 and 19 might not be implemented. I seem to recall that our tests showed that MDOS doesn't currently support a file beyond 65535 sectors, I suppose this should be confirmed or at least noted as unsupported. 

 

 

image.thumb.png.d8ef0e066022556cfeae255252eeab73.png

  • Like 2
Link to comment
Share on other sites

4 hours ago, 9640News said:

@InsaneMultitasker

 

I printed out your notes and will make some updates to the manual.

 

Thanks.

Sounds good.  I didn't find any notes in the other GenProg reference guides, besides some scribbles to help me understand the virtual page map. Some day, I will try to write up information specific to using the DSR XOPs from within XB under GPL mode and the routines to locate the correct virtual page to perform CPU memory file IO using "call link" assembly routines under Advanced BASIC. 

  • Like 2
Link to comment
Share on other sites

9 minutes ago, dhe said:

Maybe I'm mis-remembering, but didn't you modify the infocom interpreter to run in 80 columns? Was that GPL or pure assembler?

You might be thinking of the Adventure cartridge.  The GPL (/4a TIMODE) interpreter modifies the "console" VWTR routine.  Since GPL by nature uses the 9918 video modes, the bits to set the 9938 modes e.g. Text II 80 column mode were masked out by the interpreter. It took me a while to realize what was happening.   Here is the Adventure 80 thread though I don't recall where my GPL-related comments are hiding and I don't recall if GPL 7.40 addresses this problem.  The caveat is that changing the mask could break programs that don't strictly follow the 9918 manual.

 

  • Like 2
Link to comment
Share on other sites

52 minutes ago, InsaneMultitasker said:

You might be thinking of the Adventure cartridge.  The GPL (/4a TIMODE) interpreter modifies the "console" VWTR routine.  Since GPL by nature uses the 9918 video modes, the bits to set the 9938 modes e.g. Text II 80 column mode were masked out by the interpreter. It took me a while to realize what was happening.   Here is the Adventure 80 thread though I don't recall where my GPL-related comments are hiding and I don't recall if GPL 7.40 addresses this problem.  The caveat is that changing the mask could break programs that don't strictly follow the 9918 manual.

 

Standard TI console BASIC is one of the violators. . .that failure was a problem for all of the 80-column cards BITD.

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...

A few more updates/changes for the next OS release, tentatively later this year:

 

- Fixed a particularly hard-to-find bug that I discovered on Chicago Faire day.  The SCSI powerup routine was not clearing the common buffer used by SCSI/Horizon/IDE whenever a SCSI card was not in the system. The most common problem was intermittent access to the Horizon hard drive partitions; the drive parameter table was invalid, since it contained values set 'randomly' when the system was turned on.  The powerup logic has been corrected and tested.

- SCSI routines now check for the presence of the SCSI card.  Added a test to the SCSI low level routine; the OS no longer locks up if you inadvertently try to access a non-existent SCSI card.

- Floppy controller powerup was testing for the presence of a card, however, the flag was reset if a TIPI was in the system.  Fixed the powerup routine and then added a test to the low level code. OS no longer executes the floppy code when there is no FDC present.

- Floppy format code has been tested with above correction; attempting to format a non-existent FDC results in an error.

- - Removed old SCSI code and labels.  Cleaned up some of the statements. Removed comments that were no longer relevant or accurate.

- Change Directory command now validates the directory. (noted earlier)

- Fixed VDP header setup in /4A mode

 

  • Like 3
  • Thanks 1
Link to comment
Share on other sites

The attached DEVELOPMENT test version of the OS contains the fixes noted in the previous post.

 

I would appreciate some feedback regarding the Change Directory (CD) validation enhancement.

 

There are still a few tasks that @9640News and I are working through before an official point release is posted. 

 

SYSTEM-742

  • Like 2
  • Thanks 1
Link to comment
Share on other sites

7 hours ago, InsaneMultitasker said:

The attached DEVELOPMENT test version of the OS contains the fixes noted in the previous post.

 

I would appreciate some feedback regarding the Change Directory (CD) validation enhancement.

 

There are still a few tasks that @9640News and I are working through before an official point release is posted. 

 

SYSTEM-742 136.13 kB · 2 downloads

I noticed the change directory enhancement.  I like the fact that it verifies if the directory exists and if not, it lets you know.  Great feature!

 

I have also been exchanging emails with Tim over the issues they discovered with the IDE card and MDOS.  I can verify that their fixes work flawlessly on real hardware.  I have tested with original IDE cards with BQ4847, BQ4852 and the 838-RTC with BQ4802 5v version and it works great.  I was successfully able to copy over 238mb of files using GDM2K with no issues.  Boots from the IDE and is easy to setup..

 

 

  • Like 2
  • Thanks 2
Link to comment
Share on other sites

15 hours ago, Shift838 said:

I noticed the change directory enhancement.  I like the fact that it verifies if the directory exists and if not, it lets you know.  Great feature!

 

I have also been exchanging emails with Tim over the issues they discovered with the IDE card and MDOS.  I can verify that their fixes work flawlessly on real hardware.  I have tested with original IDE cards with BQ4847, BQ4852 and the 838-RTC with BQ4802 5v version and it works great.  I was successfully able to copy over 238mb of files using GDM2K with no issues.  Boots from the IDE and is easy to setup..

Thanks, the verification seems reasonably quick and works with floppies too.

 

Based on our exchanges, I documented that you are disabling the external interrupt in the v3 cards and if we need to add the IDE card to the interrupt handler at a later date, we can do so. 

  • Like 3
Link to comment
Share on other sites

  • 2 weeks later...

I recently "pestered" @9640News with some troubleshooting and a problem that turned out to be of my own making.  My TIPI was running version 3.19 and unknown to me, a bug had been fixed in 3.21.  

 

To help me (and perhaps you, the reader) stay up-to-date going forward, I modified TSTAT to show only the version status and sound an audible alert if an update exists. Option "S" will display the PI.STATUS file and also indicate whether an update is pending, if you prefer the way things worked in version 1.0

 

I am now executing TSTAT from my AUTOEXEC. :) 

 

Program and documentation, TIFILES format: 

 

TSTATDOCTSTAT

  • Like 6
Link to comment
Share on other sites

On 11/1/2023 at 9:43 PM, InsaneMultitasker said:

I am now executing TSTAT from my AUTOEXEC

I encountered the first real 'test' this evening.  When I booted my Geneve, TSTAT alerted me to an update by @jedimatt42 .  The update was successfully applied.  Whew.  I won't need that 'extra' hour tonight for debugging :)

 

image.thumb.png.73e05fee946d9fac242059671bc76e51.png

 

 

 

 

  • Like 8
Link to comment
Share on other sites

4 hours ago, InsaneMultitasker said:

What new docs are you expecting?

He is looking for the updates you mentioned back a page or two ago.  I know we made quite a few changes and I need to verify this is not a duplication, or other changes that were overlooked.  There was an update document in the zip file that was distributed with the 7.40 release.

 

So the answer to your question Dan, is when I get some free time and motivated.

  • Like 2
  • Haha 1
Link to comment
Share on other sites

3 hours ago, 9640News said:

He is looking for the updates you mentioned back a page or two ago.  I know we made quite a few changes and I need to verify this is not a duplication, or other changes that were overlooked.  There was an update document in the zip file that was distributed with the 7.40 release.

Oh, those updates.  That's old news to me ;) 

  • Haha 3
Link to comment
Share on other sites

I came across the Ninerpedia Ramdisk entry Booting MDOS from Horizon Ramdisk - Ninerpedia  while searching for some documentation.  I am noting a few considerations for future review and update:

 

As of Geneve OS v7.30, FORM and FORM3MEG are deprecated. GenCFG is the current format tool.  The OS filename has changed.   The 800K partition information is technically valid but the introduction of the RamHD partition allows for both a boot partition (800K) and use of the remaining space as a 'hard drive' partition.  Consider adding references to REMAP and SCSMAP. 

 

  • Like 5
Link to comment
Share on other sites

On 10/22/2023 at 3:06 PM, InsaneMultitasker said:

The attached DEVELOPMENT test version of the OS contains the fixes noted in the previous post.

 

I would appreciate some feedback regarding the Change Directory (CD) validation enhancement.

 

There are still a few tasks that @9640News and I are working through before an official point release is posted. 

 

SYSTEM-742 136.13 kB · 6 downloads

so far so good with CD. when it doesn't find a valid dir it lets u know without slowing things too much. nice addition. also likes echo back dir requested.

  • Like 2
Link to comment
Share on other sites

  • 2 weeks later...

For reference and future review.  Partial spoiler: for those of you who encounter files that are seemingly locked by the OS, please report the context of how it happened. 

 

@9640News reported an issue with the SAVE operation that has blossomed into an error handling adventure. 

 

When a hard disk device (mfm/scs/ide/hrd) runs out of space, the OS/DSR error should gracefully deal with the partial file.  In the reported case, LINK was saving a PROGRAM file to disk.  The resulting file was written as Display/Fixed record length 0, with a file size that did not represent the partial file, and an inability to perform subsequent operations on that file. 

 

The first bug is that when the DSR checks for free allocation units, the error trap intercedes before the updated FDR (file descriptor record) is saved to disk.  The second problem is that the file is left "open", meaning no further operation can be completed on this file until a restart. The third problem is that the file size is reported as the expected total sectors, which is not amended to reflect the actual number of sectors the DSR was able to reserve prior to the error condition.  And while the number doesn't affect low level file operations bit does suggest that the file saved properly when in fact, it did not. 

 

The SAVE issues have been fixed to the extent the file can now be deleted and is reported as the proper type. The file size is reported as '1' sector, because there is currently no way to easily match the sector size to the true, partial allocation.  The OS could set the file size to 0 but that might break some programs;  I'll test that theory as 0 would be preferable as a visual cue that something went wrong. 

 

Digging into the other opcodes, it became apparent that other error traps encode the same problem.  For example, writing a DV80 file via ABASIC generates error 34 when the disk fills up.  However, the file is impossibly large (e.g., 8600 sectors) and is left in an 'open' state that cannot be viewed or modified or deleted until after a warm restart.

 

In the error handler, many error traps branch to BADOP; however, the preceding label BADOPC is intended to clear the file operation buffer.  The fix in many cases would be to redirect the failed operation to BADOPC instead of BADOP.  The DSR code jumps in and out of various routines, so a bit more research is required. 

 

* WINDS3-S : NOW FREE UP FILE NAME BUFFER AND DATA BUFFERS
SYSRTN CLR  R0
BADOPC CLR  *R3          CLEAR DATA BUFFER
BADOP  SOCB R0,@PABERR       SET ERROR BITS IN STATUS  BITS

 

I recall situations where files were left open, often in Advanced BASIC.  The DSR error trap deficiencies may be a contributing factor. 

 

DIR, TREE, and a few other operations are similarly impacted when the disk runs out of space. 

  • Like 5
Link to comment
Share on other sites

Thanks.  Although, while I may be able to troubleshoot and augment the OS, I am quite certain I wouldn't have been able to write the Geneve DSR nor the OS from scratch.  Even knowing that some of the code was reused from earlier Myarc projects (HFDC dsr, for example) you can tell that Lou, JPH, and especially Paul C. really knew their stuff.   It is even more amazing that they debugged with primitive tools.  Do I recall correctly that much of the OS was built as part of an educational project? 

  • Like 2
  • Thanks 1
Link to comment
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.
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...