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

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