GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • Sign in
  • ActionsCI/CD and automation
  • CodespacesCloud development environments
  • All Features
  • Documentation
  • Training
  • Certifications
  • Build with Copilot
  • Customize Copilot
  • Integrations
  • Trending repos
  • GitHub Sponsors
  • Developer articles
  • Enterprises

This view

  • Original page
  • New address

GeezerVison is showing github.com — draft: Add `GFX:` device and some basic ioctls. by thejpster · Pull Request #112 · Neotron-Compute/Neotron-OS

Conversation

@thejpster

@thejpster thejpster commented Dec 26, 2024 •
edited
Loading

Uh oh!

There was an error while loading. Please reload this page.

Copy link
Copy Markdown
Member

Supports drawing a single pixel, and clearing the whole screen.

TODO:

  • Move the ioctl definition into the neotron_api crate (or copy them into the neotron_sdk crate and just live with them being defined twice).
    • I'm unsure if I want to bump the API crate just because I've added an ioctl. If I have to do that I might as well add bespoke functions for each operation and not abstract them behind the ioctl API.
  • Add a utility which uses the API, rather than built-in commands.
    • Might want to have a flag for 'baking in' application code as a library rather than loading it into the TPA for execution, as you can't execute code from the TPA on Windows/macOS/Linux due to the NX bit.
  • Add line drawing ioctl
  • Add palette changing ioctl
  • Add region ioctl
  • Support writing to GFX:
  • Support reading from GFX:
  • Write a bitmap display utility

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

All reactions
@thejpster

thejpster commented Dec 27, 2024

Copy link
Copy Markdown
Member Author

I put the ioctls in the SDK crate. See Neotron-Compute/Neotron-SDK#17.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@thejpster
thejpster force-pushed the add-graphics-device branch 2 times, most recently from f701f70 to d8b5c72 Compare December 27, 2024 23:09
@thejpster

thejpster commented Dec 28, 2024

Copy link
Copy Markdown
Member Author

I cheated on the bitmap display utility, because I bake the raw bitmap into the binary and just send a pointer to it to the GFX: set_framebuffer ioctl. But, I don't have enough RAM to load the .bmp file and host a framebuffer, and the tinybmp crate doesn't support reading from a filesystem - the data has to be in RAM as a slice.

I might need to write a new bitmap parser that doesn't have that issue.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

@thejpster
thejpster force-pushed the add-graphics-device branch from c6d7e89 to ec2108f Compare December 28, 2024 20:51
@thejpster

thejpster commented Dec 28, 2024

Copy link
Copy Markdown
Member Author

Or, I need a mechanism to obtain a byte-slice for a thing that's in ROMFS.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

thejpster added 6 commits December 29, 2024 22:35
@thejpster
Add GFX: device and some basic ioctls.
bf87e5c
@thejpster
Move gfx command to be vidtest utility.
df56e97
Requires new neotron-sdk.

Running an application now also caches and restores the current video mode (incase the app leaves it in a mess), which is done through the VGACONSOLE object so you can't write text to a framebuffer and ruin it.
@thejpster
nbuild strips utilities.
a7158de
@thejpster
Add line drawing.
4b99a32
Only supports a single colour.
@thejpster
Add some mode demos, and a palette IOCTL.
fe0d268
@thejpster
Reformat mode command.
f7ae07a
Now it fits on one screen.
@thejpster
thejpster force-pushed the add-graphics-device branch from ec2108f to f7ae07a Compare December 29, 2024 22:40
@thejpster

thejpster commented Dec 29, 2024

Copy link
Copy Markdown
Member Author

Rebased on develop. Updated the mode command to be less verbose now the Neotron Pico BIOS has a lot more video modes.

All reactions

Sorry, something went wrong.

Uh oh!

There was an error while loading. Please reload this page.

thejpster added 3 commits December 30, 2024 12:47
@thejpster
Update CHANGELOG
03b5360
@thejpster
Move drawing code into VgaConsole.
6bc14f7
@thejpster
Add random line drawing to vidtest
0cd6824
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Reviewers

No reviews

Uh oh!

There was an error while loading. Please reload this page.

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

Uh oh!

There was an error while loading. Please reload this page.

1 participant

@thejpster
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.