Jump to content
InsaneMultitasker

Geneve OS development discussion

Recommended Posts

3 hours ago, InsaneMultitasker said:

With many thanks to @9640News , I have been able to track down the GenCFG / CorComp controller card problem.

 

The CorComp floppy controller's DSR EPROM has two banks controlled by CRU bit 11 (base >1100). 

 

When the Geneve OS performs its initial powerup, it uses the CRU bit to distinguish between a TI card (one ROM bank) or CorComp card (two ROM banks).  Unfortunately for us, the OS does not restore the CRU bit to its default state rendering the DSR ROM header as no longer visible.  This error explains why GenCFG cannot identify the CorComp card during its first pass; it might also be a contributor to rompage issues experienced with the CorComp card.

 

The reason the card is detected the second time is because during the first pass, the ramdisk detection routine is triggered (when the DSR header can't be found) and CRU 11 is reset (to zero), making the DSR visible for the next pass.  Alas, the ramdisk detection routine also flips other CRU bits rendering the current drive unusable until a reset is performed OR until another drive is accessed.

 

As best I can tell, this segment of code is where the offense is committed and where we need to properly reset the ROM bank during the OS powerup.

 

File:  DSRPASS-S 

NOTMYR MOV  @H9FF0,@CTLBAS
       MOVB @H00+>2000,@CTLTYP
       SBO  11     ;set to page ROM bank 1
       CB   @>C000,@HAA+>2000
       JEQ  PWREX             it's a ti card (use 40 track, step setting=2)
**
; The fix:  add "SBZ 11" here!

-------

I don't want to add this 'fix' to GenCFG so for now, I'll create a 8-12 byte program to reset bit 11.  Once the OS is updated, the reset program will be unnecessary. 

Tim,

 

I added the SBZ 11 immediately after the JEQ PWREX routine to my code for when we release the next update.

  • Like 4

Share this post


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

 

I added the SBZ 11 immediately after the JEQ PWREX routine to my code for when we release the next update.

Perfect.  FYI, I checked the boot EPROM and it has the same detection routine but unlike the OS, the SBZ 11 is present. 

  • Like 3

Share this post


Link to post
Share on other sites

 

The GPL speed issue that @mizapf identified in 2019 (or earlier?) has been resolved. The routine was incorrectly bypassing a portion of the pagemap code.   

 

I also noticed that GPL was not disabling wait states upon return to the OS, so if you selected and used speed 1, MDOS would run perceptibly slower.  Wait states are now disabled within the exit routine. ;) 

  • Like 5
  • Thanks 1

Share this post


Link to post
Share on other sites
On 8/22/2021 at 9:44 PM, globeron said:

MDOS 7.30   GPL and MYGPL

use lowercase characters. Parsec does not display the full character. 

 

Press tire....to begin.

 

Also GPL shows 2x meteroites on the right top corner when crashing, but MYGPL and GPL650 do not.

 

Furthermore Ships, LIFT, Top, arrow are displayed in blue colour.  Gpl650 shows White.

The meteorite problem is somehow caused by the 80 column menu.  As part of my troubleshooting, I confirmed that PARSEC does not require the BASIC GROMS.  My best guess is a v9938 video register, since PARSEC does set all eight 9918 registers when it starts the gameplay.  I don't have time to look into the solution right now, so the best course of action is to use the MYGPL files or your GPL 6.50 files if you wish to play the game.

 

As for the text:  the TI's small capital letters are 5 pixels high.  The true lowercase letters include descenders which increases the height to 6 pixels; PARSEC only displays the bottom 5 pixels of each character so the top pixel is never displayed.  

 

The blue color is correct; I do not know why GPL650 shows white as I cannot reproduce that on my system. 

  • Like 3

Share this post


Link to post
Share on other sites

Does the 9938 support the ability to query the current register settings for video mode, pattern table, color table, etc? 

 

Within native OS mode, so long as one uses the XOPs to set video mode, it is relatively simple to restore the environment (at least when default addressing is used) when switching between modes.   In /4A emulation mode (TIMODE) the programmer sets the video registers directly.

 

What I want to do is enable a keypress to activate a routine (for example, a debug routine) that changes the video mode temporarily then restores it to whatever the host program was using.  I cannot see a way to do this in /4A mode and would like to be sure I'm not forgetting and/or missing something simple.

 

 

 

 

  • Like 2

Share this post


Link to post
Share on other sites

Noting a few items for reference:

  1. GenCFG is nearing a maintenance release.  Speech and floppy controller detection seem to be working.   This afternoon I discovered and fixed the RamHD format code so that it consistently clears the FDIR sector >40; failure to do so can inhibit the OS from writing to the root directory.  Some enhancements to the floppy partition selections and a partition table copy/restore option depend on item #2.
  2. With challenges globeron has experienced recently, I have been doing some further testing of the ramdisk sector IO.  The partition and sector boundaries defined by the software appear to be in sync.  This afternoon I am running a few Advanced BASIC (Geneve BASIC) programs to check the sector IO routines at the file level and to look for ways to detect hardware failure-induced IO problems.  
  3. When copying from a hard drive device to a floppy device, the /update/ timestamp is not always preserved. 
  4. The batch file processor (HCLIS/HBATCHS) is not ignoring the ">" redirection within a REMark statement (and possibly other commands) resulting in a DF 0 or DV80 file creation.  (thanks @globeron for noticing and bringing to our attention)

 

  • Like 4

Share this post


Link to post
Share on other sites

While doing some Geneve OS testing I ran across an old unfinished project and its source code. 

I updated the program to support both compressed and packed files, command-line driven file and output, and reduced its footprint from 54K down to 4K by using OS memory management.  The file 'catalog' display doesn't pause so I might try to add a 'more/continuous' option before I release this into the wild.  Tested lightly with SCSI, MFM, TIPI, and Ramdisk devices.

 

image.thumb.png.97e31bfb8349a0c6c2d814703a975ba7.png   image.thumb.png.42c6f421c1356408045119ddaee6b33d.png   

  • Like 7

Share this post


Link to post
Share on other sites

Just curious.  Is most of the Geneve code written in Assembler?

 

  • Like 1

Share this post


Link to post
Share on other sites
53 minutes ago, TheBF said:

Just curious.  Is most of the Geneve code written in Assembler?

 

The Operating System is written in assembler.  Many programs are also written in assembler and although not as prevalent, C is and can be used as well.  

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites

Any timeline yet on when the source goes in to github and a new HD Image with compile-able MDOS disk will be made available for mame?

Share this post


Link to post
Share on other sites
Just now, dhe said:

Any timeline yet on when the source goes in to github and a new HD Image with compile-able MDOS disk will be made available for mame?

Timeline, not yet.  I know @InsaneMultitasker is cleaning up some code/comments and has some other priorities he is addressing first.

 

If you have something you want to do with MDOS programming, let us know and we can work something out.

 

Beery

 

 

Share this post


Link to post
Share on other sites

I have the current MDOS and I have it on a working geneve. To be honest, I've forgotten a lot of the command - and how they work,  so would like to use it as a trainer.

Share this post


Link to post
Share on other sites

Today I (again) noticed that Directory Manager reads all hard drive directories twice :  first, to pull the list of directories and files and secondly, to pull the volume name information from the root.  I removed the second read operation and discovered the reason for this extra read: the Geneve DSR returns the current subdirectory name as the volume name.  I thought this was strange so I used ROMPAGE to check the SCSI and HFDC DSRs via XB: both operate in the same manner as the Geneve DSR.  I was expecting the DSRs to return the drive volume name at all times, since the subdirectory is already known.  For diskettes with subdirectories, the root volume name is always returned in record 0 of the catalog.  Seems to me the volume name should be returned, not the current subdirectory...

  • Like 5

Share this post


Link to post
Share on other sites

Adding a link to TASM 3.41 for future reference and inclusion with some upcoming C source packages. 

 

 TIC v1.63 is more forgiving with memory allocation to the point Directory Manager won't compile with TIC v1.67, however, the former won't compile "#asm" directives.  @9640News did the source to TIC ever become available? 

 

Release notes for TIC 1.67:  in-line assembly support, bug fixes, and memory allocation changes :(  

 

 

 


This is version 1.67 of TIC, the Full-C compiler for the 9640 Geneve.
As with previous versions, you will need additional files, some from
LGMA Products, some from Clint Pulley, to use this package.

I have not included the user manual in this archive, to keep the archive
size small.  The user manual was included in previous versions and it
has not changed substantially.

Now, for the recent changes to tic 1.66 and tic 1.67:

1. TIC now supports inline assembly!  This non-standard ANSI function has
   been included by popular request.  You can now use the preprocessor
   functions:

         #asm
           .
           . assembly statements
           .
         #endasm

   in your code, similar to what you could do in c99.  For example:

         int  i;
         main()
         {  int j;
         #asm
            LI  R5,1234
            MOV R5,@I
         #endasm
         j = 1234;
         printf("i %d, j %d\n",i,j);
         }

   would display:

        1234  1234

2. A bug was fixed in the divide processing.  This bug was introduced
   in 1.66, and was corrected in 1.67.  Thanks to Clint Pulley for the
   bug reports.

3. The +S option was fixed, by removing on the Geneve the "." option in
   the file naming convention.  This was really here for the MSDOS version.
   During the file name scan, the dot on such commands as:

             TIC +SDSK5. TEST_C

   was confusing the compiler to the point where it was creating a file of:

             DSK5.S

   Fixed now.

4. The remaining C routines were converted to assembly within TIC for speed.

5. The preprocessor was fixed for the #ifdef and #ifndef statements.  These
   previously were bombing on certain types of statements, e.g.:

     #ifdef GENEVE
       while ( *s != 0 && *s != '_' )
     #else
       .
       .
   this would generate a syntax error.  Has been fixed.

6. Memory allocation - has been grossly modified.  Memory is now allocated
   in 8k pages, to match the Geneve mapper.   Memory is now only allocated
   as needed, previously TIC would grab about 140k of memory whether it
   needed it or not.  Now, TIC grabs at least 16k for smallest compiles,
   but could allocate up to 184k if needed.

   Note it is possible to still run out of memory.  This version reduces
   table space available to several allocation routines by a small amount.

OK.  I hope this version is more successful than 1.64.  Sorry for the wait...

     al beard
     lgma products
     7/15/93
 

 

  • Like 2

Share this post


Link to post
Share on other sites
4 hours ago, InsaneMultitasker said:

Adding a link to TASM 3.41 for future reference and inclusion with some upcoming C source packages. 

 

 TIC v1.63 is more forgiving with memory allocation to the point Directory Manager won't compile with TIC v1.67, however, the former won't compile "#asm" directives.  @9640News did the source to TIC ever become available? 

 

Release notes for TIC 1.67:  in-line assembly support, bug fixes, and memory allocation changes :(  

 

  Reveal hidden contents

 


This is version 1.67 of TIC, the Full-C compiler for the 9640 Geneve.
As with previous versions, you will need additional files, some from
LGMA Products, some from Clint Pulley, to use this package.

I have not included the user manual in this archive, to keep the archive
size small.  The user manual was included in previous versions and it
has not changed substantially.

Now, for the recent changes to tic 1.66 and tic 1.67:

1. TIC now supports inline assembly!  This non-standard ANSI function has
   been included by popular request.  You can now use the preprocessor
   functions:

         #asm
           .
           . assembly statements
           .
         #endasm

   in your code, similar to what you could do in c99.  For example:

         int  i;
         main()
         {  int j;
         #asm
            LI  R5,1234
            MOV R5,@I
         #endasm
         j = 1234;
         printf("i %d, j %d\n",i,j);
         }

   would display:

        1234  1234

2. A bug was fixed in the divide processing.  This bug was introduced
   in 1.66, and was corrected in 1.67.  Thanks to Clint Pulley for the
   bug reports.

3. The +S option was fixed, by removing on the Geneve the "." option in
   the file naming convention.  This was really here for the MSDOS version.
   During the file name scan, the dot on such commands as:

             TIC +SDSK5. TEST_C

   was confusing the compiler to the point where it was creating a file of:

             DSK5.S

   Fixed now.

4. The remaining C routines were converted to assembly within TIC for speed.

5. The preprocessor was fixed for the #ifdef and #ifndef statements.  These
   previously were bombing on certain types of statements, e.g.:

     #ifdef GENEVE
       while ( *s != 0 && *s != '_' )
     #else
       .
       .
   this would generate a syntax error.  Has been fixed.

6. Memory allocation - has been grossly modified.  Memory is now allocated
   in 8k pages, to match the Geneve mapper.   Memory is now only allocated
   as needed, previously TIC would grab about 140k of memory whether it
   needed it or not.  Now, TIC grabs at least 16k for smallest compiles,
   but could allocate up to 184k if needed.

   Note it is possible to still run out of memory.  This version reduces
   table space available to several allocation routines by a small amount.

OK.  I hope this version is more successful than 1.64.  Sorry for the wait...

     al beard
     lgma products
     7/15/93
 

 

Ask and ye shall receive.

 

I checked my email history, and going back to  2/19/2004, I have this from Clint 

 

Hello Beery,

 

I'm attaching a file, GenSrc.zip, which contains all the source code that I extracted from my Geneve before I shut it down about two years ago. I still have the Geneve but the hard drive was getting touchy back then so I doubt if it would still spin up.

 

The zip file contains 6 directories and each directory contains several files in TI D/V80 format.  As I recall, the directories are:

bthu  - a Breakout-type game which I originally wrote on my Mini-Memory cartridge c99m - c99/MDOS compiler and library source  with documentation c99t - (I think) the main support library for the 99/4A version of c99.

I'm not sure so I included it anyway.

dm - the directory manager

misc - the d and du utilities

qde - my Quick 'n Dirty Editor

 

Since the files are in D/V80 format I could only look at them with a hex editor. I expect that you have the tools necessary to read the files. 

PLease let me know how you manage.

 

As I mentioned on the phone, all of my software for the TI-99/4A and Geneve is now freeware, as I announced on January 10, 2000 when I released the Y2K compliant versions of dm and d on ftp.cciw.ca in

pub/u001/9640 . The program files are still available on that server if you don't have them.

 

I  just found the paper with the information you gave me when you called some time ago. Now that I have high speed access at home I'll have a look at ftp.whtech.com.

 

Take care,

 

Clint

[email protected]

 

 

Beery Miller wrote:

 

> It was good to talk with you this evening.

> 

> When you get the time, I would appreciate anything you can send my way

> regarding your C compiler and/or other utilities (directory manager, etc).

> 

> I've been trying the last couple of months to put together "the good

> things" that were for the Geneve including programming utilities and

> source code and putting it out there on an emulated hard drive image

> for anyone to work with, etc.

> 

> I just finished writing the "manual" for the video XOP description,

> approximately 75 pages of text that added to Paul Charlton's GenASM

> package.

> 

> Anyways, hope all is well.

> 

> Beery Miller

> 

 

GenSrc.zip

  • Like 7
  • Thanks 2

Share this post


Link to post
Share on other sites
49 minutes ago, 9640News said:

 

I checked my email history, and going back to  2/19/2004, I have this from Clint 

Looks like a good chunk of source, I'll pull it into the folders I have been compiling (no pun intended) for future distribution.  

 

I think Al (LGMA) wrote TIC along with TASM? 

 

  • Like 1
  • Thanks 1

Share this post


Link to post
Share on other sites
10 hours ago, InsaneMultitasker said:

Looks like a good chunk of source, I'll pull it into the folders I have been compiling (no pun intended) for future distribution.  

 

I think Al (LGMA) wrote TIC along with TASM? 

 

At this point in time, I am not 100% sure.

 

Beery

Share this post


Link to post
Share on other sites
4 hours ago, Ksarul said:

Al wrote TIC and TASM. Here is a link to his TIC source repository on GITHUB. He put all of his remaining code up there, so if it isn't here, it doesn't exist anymore. . .

Thank you (and Al) for providing.

I will add it to the development resources thread. Also will be looking into the TIC source code, most interesting.

  • Like 1

Share this post


Link to post
Share on other sites
4 hours ago, Ksarul said:

Al wrote TIC and TASM. Here is a link to his TIC source repository on GITHUB. He put all of his remaining code up there, so if it isn't here, it doesn't exist anymore. . .

Thank you, there is quite a wealth of information in the repository.   Alas, the TIC folder is missing files, almost as if the upload to the repository halted after the letter 'D'.  :(  

  • Sad 1

Share this post


Link to post
Share on other sites
22 hours ago, InsaneMultitasker said:

Thank you, there is quite a wealth of information in the repository.   Alas, the TIC folder is missing files, almost as if the upload to the repository halted after the letter 'D'.  :(  

 

Maybe @alanbeard can enlighten us. 🙂

 

He is often on the Zoom call, so we could ask him when he is there next if he does not see this nudge. Sorry, I was mixing @alanbeard up with someone else, I think. We’ll just have to wait for him here, I guess.  |:)

 

...lee

Edited by Lee Stewart
Correction
  • Like 2

Share this post


Link to post
Share on other sites

How many folks on here are using a scsi2sd drive on their geneve?

I'm working up to it and trying to create a howto to try to make it easier for others.

Share this post


Link to post
Share on other sites
22 minutes ago, dhe said:

How many folks on here are using a scsi2sd drive on their geneve?

I'm working up to it and trying to create a howto to try to make it easier for others.

I've got one.

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