Oric Screen Editor: editor for creating Oric Atmos text screens

This is the best place to discuss about the various Oric operating systems like Sedoric, Randos, FT-Dos, and others, as well as serious software, utilities, word processors, disassemblers, etc... that runs on oric computers.
User avatar
xahmol
Squad Leader
Posts: 611
Joined: Sun Jun 28, 2020 7:32 pm
Location: Utrecht, The Netherlands
Contact:

Oric Screen Editor: editor for creating Oric Atmos text screens

Post by xahmol »

Finally decided for a first release:

Oric Screen Editor
Screen editor for the Oric Atmos

Oric Screen Editor is an editor to create text based screens for the Oric Atmos. It fully supports using user defined character sets.

Main features of the program:
  • Support for screen maps larger than 40x25 characters. Screens can be up to 8 KiB (8.192 bytes), all sizes fitting in that memory with width of 40 at minimum and heigth of 27 at minimum are supported.
  • Supports resizing canvas size, clear or fill the canvas
  • Support for loading user defined charsets (should be standard charsets of 96 characters of 6 bits width and 8 bits height, alternate charsets of 80 characters or combined charsets of 176 characters).
  • Includes a simple character editor to change characters on the fly and directly see the result in your designed screen.
  • Supports the Oric serial atribites for ink, paper and character modifiers (standard vs alternate charset, double height, blink).
  • Write mode to freely type characters with the keyboard
  • Line and box mode for drawing lines and boxes
  • Select mode to cut, copy, delete or repaint (only color or all attributes) the selection.
  • Move mode to scroll the screen contents (due to memory constraints only for the 40x27 viewport)
  • Palette mode, including visual charmap mode, to visually select characters and colors
  • Favorite slots to quickly select 10 favorite characters
Requires a disk (emulation) system capable on running SEDORIC3 disks, program has been tested with a Cumama Reborn and Oricutron.

Downloads:
.DSK disk image
.HFE disk image

Full source code and manual / documentation at:
https://github.com/xahmol/OricScreenEditor

PDF version of manual:
https://github.com/xahmol/OricScreenEdi ... README.pdf

Image

Demo videos:

User avatar
HigashiJun
Flying Officer
Posts: 205
Joined: Tue Dec 10, 2019 9:29 am
Location: Tokyo (Japan)

Re: Oric Screen Editor: editor for creating Oric Atmos text screens

Post by HigashiJun »

Nice tool !

A new programme for our ORICs.

:D
HigashiJun
User avatar
Symoon
Archivist
Posts: 2496
Joined: Sat Jan 14, 2006 12:44 am
Location: Paris, France

Re: Oric Screen Editor: editor for creating Oric Atmos text screens

Post by Symoon »

Thanks for this!
Impressive menu / windows system, well done!
User avatar
xahmol
Squad Leader
Posts: 611
Joined: Sun Jun 28, 2020 7:32 pm
Location: Utrecht, The Netherlands
Contact:

Re: Oric Screen Editor: editor for creating Oric Atmos text screens

Post by xahmol »

Symoon wrote: Wed Aug 24, 2022 3:43 pm Impressive menu / windows system, well done!
Thanks! That part is actually not new, already used it in my last year Ludo release. Refined it a little bit to cope with the inability to use lines (as I want to avoid characters that the user might have redefined) and some other tweaks, but in essence still the system I had for the Commodore 128 in 1992 :D
User avatar
Chema
Game master
Posts: 3137
Joined: Tue Jan 17, 2006 10:55 am
Location: Gijón, SPAIN
Contact:

Re: Oric Screen Editor: editor for creating Oric Atmos text screens

Post by Chema »

Really nice! Well done, and thank you!
User avatar
jbperin
Squad Leader
Posts: 542
Joined: Wed Nov 06, 2019 11:00 am
Location: Valence, France

Re: Oric Screen Editor: editor for creating Oric Atmos text screens

Post by jbperin »

Thank you very very very much.

I put three "very" because this gift that you make to the community is useful in 3 different ways (at least for me):
- it's a wonderful wysiwyg tools to design, create and test screen.
- It's a wonderful example of how to use SEDORIC
- It's a wonderful example of how to create menu on Oric.

Provided open source with documentation. What else could we ask ..

Except ..

Are you sure you're not a developper in your real life ?
User avatar
xahmol
Squad Leader
Posts: 611
Joined: Sun Jun 28, 2020 7:32 pm
Location: Utrecht, The Netherlands
Contact:

Re: Oric Screen Editor: editor for creating Oric Atmos text screens

Post by xahmol »

Thanks jbperin, very nice words.

This is exactly why I have decided to make everything open source and not bother with any licensing, I know from personal experience that code by others is by far the best way to learn. Besides, this forum helped me so much in realising this that copyright of it should at least for also a large part be accredited to others here.
This utility has gotten so much better with the feedback from the Commodore as the Oric community.

And no, am not a developer by trade, but as IT auditor I work a lot with developers (of course they developers sometimes might feel that as an auditor I work against them, not with them, but luckily most see it as an honest way to improve and also to prioritise things that also rather would have done but did not get budget for).
But always had affinity for IT and code. If I would start all over I might have ended up as developer anyway. But think that my present job is more challenging, varied and also paying a lot better, Think also that there are many developers way more skilled than I am, less so in auditing.

But glad you have found a hobby to fill that part in me that always would have liked to go in coding.
User avatar
xahmol
Squad Leader
Posts: 611
Joined: Sun Jun 28, 2020 7:32 pm
Location: Utrecht, The Netherlands
Contact:

Re: Oric Screen Editor: editor for creating Oric Atmos text screens

Post by xahmol »

Update here as I am revisiting this project to make a LOCI specific version. Mentioned this already in the LOCI threads.

Wanted to share some progress:

Success:
- I successfully moved all screen data from main RAM to overleg RAM, freeing up main RAM and making much larger screen maps possible.
- I successfully made the program aware from which directory on the LOCI it was started so it can find its other files

Need to solve:
- After adding directory browse function for all file save and load functions, I ran out of memory before even making them all.
- So I have to switch to using file memory overlays so parts of the program are only loaded on demand and swapped out if no longer needed. Which is always a puzzle as you have to find overlay size large enough to fit the largest logical module, but small enough to leave room for generic functions that always have to be in memory.

Confident I will solve it, but it obviously will take more time compared to if no overlays were needed.
So stay tuned.
User avatar
jacqu
Pilot Officer
Posts: 78
Joined: Sun Nov 27, 2022 4:42 pm
Location: Alsace, France
Contact:

Re: Oric Screen Editor: editor for creating Oric Atmos text screens

Post by jacqu »

This is awesome! The filepicker feature is excellent. Thanks for sharing!
Old French Oric Atmos Nerd
User avatar
Sodiumlightbaby
Squad Leader
Posts: 648
Joined: Thu Feb 22, 2024 11:38 am

Re: Oric Screen Editor: editor for creating Oric Atmos text screens

Post by Sodiumlightbaby »

Fantastic progress! Really looking forward to trying this :D
User avatar
xahmol
Squad Leader
Posts: 611
Joined: Sun Jun 28, 2020 7:32 pm
Location: Utrecht, The Netherlands
Contact:

Re: Oric Screen Editor: editor for creating Oric Atmos text screens

Post by xahmol »

Update:
Now have a working build again with dynamically swapping memory overlay files loaded from LOCI storage, making a much larger program possible.
So now can build again.

Present files of the OSE package:
Schermafbeelding 2025-01-26 174509.png
CC65 compile map:

Code: Select all

Modules list:
-------------
main.o:
    CODE              Offs=000000  Size=0009E2  Align=00001  Fill=0000
    RODATA            Offs=000000  Size=0000A7  Align=00001  Fill=0000
    BSS               Offs=000000  Size=0002A0  Align=00001  Fill=0000
    DATA              Offs=000000  Size=00005D  Align=00001  Fill=0000
oric_core.o:
    CODE              Offs=0009E2  Size=0004B9  Align=00001  Fill=0000
generic.o:
    CODE              Offs=000E9B  Size=000623  Align=00001  Fill=0000
    RODATA            Offs=0000A7  Size=000043  Align=00001  Fill=0000
    DATA              Offs=00005D  Size=000001  Align=00001  Fill=0000
menu.o:
    CODE              Offs=0014BE  Size=0009B2  Align=00001  Fill=0000
    RODATA            Offs=0000EA  Size=000048  Align=00001  Fill=0000
    BSS               Offs=0002A0  Size=000024  Align=00001  Fill=0000
    DATA              Offs=00005E  Size=00021E  Align=00001  Fill=0000
screen.o:
    CODE              Offs=001E70  Size=000822  Align=00001  Fill=0000
    RODATA            Offs=000132  Size=000043  Align=00001  Fill=0000
draw.o:
    OVERLAY1          Offs=000000  Size=0010E5  Align=00001  Fill=0000
menufunctions.o:
    OVERLAY1          Offs=0010E5  Size=000A6E  Align=00001  Fill=0000
dir.o:
    BSS               Offs=0002C4  Size=00015F  Align=00001  Fill=0000
    DATA              Offs=00027C  Size=000042  Align=00001  Fill=0000
    OVERLAY3          Offs=000000  Size=0013FA  Align=00001  Fill=0000
file.o:
    CODE              Offs=002692  Size=000A4D  Align=00001  Fill=0000
    RODATA            Offs=000175  Size=0001E5  Align=00001  Fill=0000
palette.o:
    OVERLAY2          Offs=000000  Size=0004E2  Align=00001  Fill=0000
charedit.o:
    OVERLAY2          Offs=0004E2  Size=0014CF  Align=00001  Fill=0000
(... abbreviated for all lib functions code ...)

Segment list:
-------------
Name                   Start     End    Size  Align
----------------------------------------------------
TAPEHDR               000000  00001E  00001F  00001
ZEROPAGE              000050  00006D  00001E  00001
STARTUP               000400  000424  000025  00001
CODE                  000425  0054C4  0050A0  00001
RODATA                0054C5  005ACF  00060B  00001
DATA                  005AD0  005DC9  0002FA  00001
INIT                  005DCA  005DE6  00001D  00001
BSS                   005DE7  006392  0005AC  00001
ONCE                  005DE7  005E29  000043  00001
OVERLAY1              009400  00AF52  001B53  00001
OVERLAY2              009400  00ADB0  0019B1  00001
OVERLAY3              009400  00A7F9  0013FA  00001
By the way: also still to fix....
Somehow always thought the Oric screen was 27 lines. Probably because the first line is the ROM status bar.
I actually did use the ROM status bar first line in OSE, so line 0, but never line 27 so the 28th line.....
Will update so OSE can edit by default over the full 28 lines. But as I probably hardcoded the <27 everywhere, also hardcoded 1080 instead of 1120 as default screen size in bytes, that will be another day ;-)

Works by the way really nice loading that overlay files from LOCI storage, fast enough to not be that annoying. But did add a 'Loading.' status message as it is also not instant, and to avoid users thinking the application has crashed when a function does not pop up instantly like it used to. Especially as unlike real drives or even the emulated Cumana Reborn drive, LOCI does not make any sound on loading.
Only used USB so far, still have to try if internal storage is actually faster.
User avatar
xahmol
Squad Leader
Posts: 611
Joined: Sun Jun 28, 2020 7:32 pm
Location: Utrecht, The Netherlands
Contact:

Re: Oric Screen Editor: editor for creating Oric Atmos text screens

Post by xahmol »

New colour picker mode to better select colours with resulting non-inverse/inverse pair.

Not entitely satisfied yet of the visibility of the cursor position, now presented by cyan in stead of white to the left and * chars instead of -, suggestions for improvement of course also welcome as long as they are feasible within the limits of the nice serial attributes system in text mode ;-)
Schermafbeelding 2025-01-29 174950.png
jsk
Officer Cadet
Posts: 45
Joined: Mon Jun 29, 2020 10:11 pm

Re: Oric Screen Editor: editor for creating Oric Atmos text screens

Post by jsk »

Just draw a black frame around current selection; this is easy done by just xoring the inverse bit!

I think with 8x8 colors you could use more of a bar moving across sideways (similarly black around current column) as well as row selected.

Possibly show 2 rows for each color, white between like now (3x8=24 rows).
And 40 columns means can have 40/8=5, I.e.4 text pos for each color, 2 normal+2 inverse, more or less.

You only need to set the background color once per line, start column 0
User avatar
xahmol
Squad Leader
Posts: 611
Joined: Sun Jun 28, 2020 7:32 pm
Location: Utrecht, The Netherlands
Contact:

Re: Oric Screen Editor: editor for creating Oric Atmos text screens

Post by xahmol »

jsk wrote: Wed Jan 29, 2025 8:09 pm Just draw a black frame around current selection; this is easy done by just xoring the inverse bit!
Was indeed already thinking along that same line. Thanks.
I think with 8x8 colors you could use more of a bar moving across sideways (similarly black around current column) as well as row selected.

Possibly show 2 rows for each color, white between like now (3x8=24 rows).
And 40 columns means can have 40/8=5, I.e.4 text pos for each color, 2 normal+2 inverse, more or less.

You only need to set the background color once per line, start column 0
Wanted now to have white between the colours, so could not set paper only once per line. But will try also how your suggestions look.
Two lines per colour would have the disadvantage that their is no or very limited room to print UI information as that takes indeed already 24 out of the 28 lines.
User avatar
xahmol
Squad Leader
Posts: 611
Joined: Sun Jun 28, 2020 7:32 pm
Location: Utrecht, The Netherlands
Contact:

Re: Oric Screen Editor: editor for creating Oric Atmos text screens

Post by xahmol »

Update: short sneek peak.



You can see how the overlay loading works from LOCI USB storage and it shows the new colour picker.

Much to do still:
- Implement a complete LOCI storage based filebrowser for all load and save operations (groundwork is done, connecting it to the interface to do)
- change standard screen size to 40x28 instead of 40x27 (forgot to count the status bar before)
- implement a reverse mode that makes more sense on the Oric platform
- implement option to lock the first two columns when scrolling horizontally to avoid color codes falling of screen
- implement undo/redo functions
- ** maybe ** support saving with a .TAP header
- ** maybe ** support import from files with a .TAP header

(of course further suggestions always welcome)
Post Reply