SymbOS CPC & MSX & PCW & EP & NC & ZNX & SVM 4.0 has been released.
sym40.png sym40-16.png
You can download it here:
http://www.symbos.org/download.htm
After three years of hard work, another major release is ready, containing the most extensive changelog ever.
Here is a quick overview, the full one is attached below:
* The Desktop Manager has received new controls, such as one for drawing large grids and the long-missing fully functional tree view with collapsible nodes. Lists, trees and pulldown menus can now contain icons thanks to the new inline support of the Advanced Text Control.
tree.gif
* The Sound Daemon provides platform-independent sound services for multiple programs. With Arkos Tracker-based PSG and MOD-based Wavetable support, users can enjoy high-quality sound effects and music in apps and games. GUI events can be assigned to system sound effects, improving the interactive experience.
* The Printer Daemon acts as a spooler for multiple print jobs and supports unified formatting codes and network TCP/IP printing. It ensures seamless printing from different applications using a printer-specific driver.
soundd.gif
* SymbOS C Compiler (SCC) is the new ultimate developer kit for building SymbOS applications using the C programming language. Based on the Fuzix compiler, it features a proper libc port for plug-and-play compilation of existing code, extensive (Posix) wrappers and helper functions for SymbOS system calls, detailed documentation to help you get started with SymbOS programming, multithreading, graphics and sound support, and a complete sample application for reference. It can run on Windows as well as directly on SymbOS!
* SymbOS 4.0 supports kernel-level data compression to save disk space. Transparent file management allows compression of existing file formats, data blocks can be decompressed up to 63 KB at a time.
taskswitch.gif
* Many other improvements have been added, such as the famous Alt+Tab task switcher, Usifac II/Ulifac support, Nova RTC support and countless more things.
* Three (!) new supported platforms have been added to the SymbOS family, including Amstrad NC100/150/200, ZX Spectrum Next, and SymbOSVM, which allows SymbOS to run almost natively on modern 32- and 64-bit platforms.
Full changelog
Release 4.0 [31.01.2025]
DESKTOP MANAGER
- New Tree View control: With collapsible nodes and familiar key and mouse control
- Advanced Text control with inline graphics support: Inside a text line bitmaps can now be displayed of any size and Y-alignment
- Lists and trees with advanced text: These controls can optionally display bitmaps and use different text styles
- Bitmap column type: For lists and trees
- Pulldown menus with additional icons per entry: Improves the appearance of menus
- New Grid control: A simple but effective control for drawing any number of parallel lines can be used to create large grids
- Maximized windows without scrollbars: This saves some screen space and improves the display
- Improved Control Collection: Redirects key inputs to child controls, can be scrolled remotely and supports new commands for updating multiple controls
- Menu data in each memory bank: To save memory in the main application bank, menu data can be placed in any other independent bank
SOUND DAEMON
- Sound playback service: Runs as a shared service in the background and can be used by multiple applications through its sound API to manage and play multiple collections of sound effects and music
- GUI events: Any kind of GUI event can be assigned to a system sound effect, which will then be played when such an event occurs
- PSG and Wavetable support: Controls available PSG (AY, Dave) and Wavetable (OPL4) Sound devices; PSG playback is based on the Arkos Tracker 2 technology and uses compressed and relocateable sound files; wavetable music is based on Amiga MOD files, but uses its own highly optimized and compressed file format that allows merging multiple songs into a song collection by sharing the same samples and also allows unpacking the compressed track data in real time
- Platform and device independent: Applications know nothing about the sound hardware used
- Collaboration with SymAmp: Mutual muting prevents collisions with SymAmp when using the same sound hardware; the master volume is synchronized between Sound Daemon and SymAmp
PRINTER DAEMON
- Platform independent print service: Works as a spooler for multiple print jobs from different applications using a printer-specific driver
- Printer independent: Applications always use uniform formatting codes that are converted to printer-specific control codes
- Network print server: Supports a client-server constellation where a SymbOS client sends its jobs over TCP/IP network to a SymbOS print server, which prints them on a connected printer
- Used by: PrintIt, WordPad, Help Browser
DATA COMPRESSION
- Kernel and file manager integration: SymbOS supports processing of ZX0 (by Einar Saukas) compressed data to save as much storage space as possible
- Decompression of data blocks up to 63 KB in size: Thanks to kernel integration, this is possible at any location in the available memory
- Transparent file handling: Compressed data is treated transparently like normal data when loaded from a file, making it very easy to update existing programs with optional compression support.
- Compression of existing file formats: To save disk space, all EXE, COM, WDG, SAV (SymbOS executables), SGX (SymSee), HLP (Help Browser), QS1, QS2 (Quigs applications), ST2, PT3, SA2 and SKM (SymAmp) files can be optionally compressed.
- Compressed startup files: By using ZX0 for SymbOS MSX and CPC loaders, it is again possible to put all files needed at startup, including the complete control panel, on an Amsdos 178K floppy disk.
SYSTEM IMPROVEMENTS
- New task switcher: The extended desktop provides the familiar application switching feature by pressing (Shift+)Alt+Tab and selecting the desired program icon.
- Start menu with icons: When using the extended desktop, you get nice icons in the top area and in the control panel area of the start menu.
- Improved keyboard support: New key definitions for Home, End, Page Up, Page Down, used by the multiline text input control, list and tree control, slider control and control collection; new key definitions for Ctrl + 0 - 9
- System alert window: Optional support for 16-color icons
- File selection dialog with maximum memory: The maximum amount of memory can be optionally used, allowing any number of directory entries displayed
- Screen Manager speeded up: Mouse plotting speed increased by almost a factor of 3 on systems without hardware sprite support; PCW rectangle plotting up to 3x faster
- Optimized "transfer area" usage for system data: To reduce memory fragmentation
- Changed memory usage on the MSX: Makes new versions scalable for more features
HARDWARE
- Usifac II/Ulifac (CPC): USB mass storage driver
- Beer IDE Support (MSX): IDE interface driver
- Net4CPC (CPC): Network daemon driver (by D_KEF)
- Nova RTC (CPC): Real-time clock driver
NEW SUPPORTED PLATFORMS
SymbOS has been fully ported to three (!) new platforms, the number of supported systems has almost doubled from four to seven.
Amstrad NC100/150/200 port
- Virtual desktop resolution: Supports both 480x64 (NC100, NC150) and 480x128 (NC200) screens and improves the virtual resolution up to 480x256 by switching the visible screen area
- PCMCIA SRAM card support: The required card must be 1 MB and is used for both RAM (512 KB) and as a FAT12 mass storage device (512 KB)
- Serial Mouse Support: For Microsoft compatible serial mice with up to three buttons and mouse wheel
- Fast Full Screen Text Mode: SymShell provides a full 80x25 character text screen on an NC200 with a 6x5 pixel font
- Booting from SRAM Card: Due to lack of FDC support, SymbOS is booted from a prepared PCMCIA RAM card
SymbOSVM port
- World's fastest SymbOS platform: SymbOSVM runs on modern hardware as fast as a 2GHz Z80 system or even faster
- Breaking the 256 pixel Y barrier: Screen resolutions up to 3840x1600 (QuadHD+) are possible
- CPU idle mode support: To save power on the host system
- Enlarged SymShell terminal window: The command line interface can run at up to 120x50 characters
ZX Spectrum Next Port
- High Screen Resolution: SymbOS ZNX uses the maximum 640x256x16 resolution of the Next Layer2 screen
- DivMMC Support: The internal SD card reader is used as a mass storage device
- Kempston Mouse Support: Driver for the standard ZX Spectrum mouse
- PSG and Turbosound Support: Sound driver for the Sound Daemon and SymAmp, the latter also supports dual PSG
- 90% classic ZX Spectrum port: SymbOS ZNX is mostly a port for the classic Sinclair ZX Spectrum, except for using the advanced memory banking and display capabilities of the Spectrum Next.
MISCELLANEOUS
- CPC Plus cartridge release: SymbOS CPC can boot entirely from a CPC Plus cartridge and use part of a large 512K cartridge as a ROM disc containing a collection of important applications and sample data
- GitHub repositories: For all internal and public applications and resources
- Python scripts: For converting bitmaps and icons, compressing executables and data files, and more
BUG FIXES
- Screensaver crashes due to incorrect memory banking on non-VDP platforms
- Mouse wheel misbehaved with slider values
- Clock widget showed wrong year if you are still stuck in the 20th century
- Directory read function did not optionally skip CP/M file system entries
- PCW interbank calls did not work correctly
- Systray icon click detection in wrong positions when there are multiple items
- Incorrect memory banking for control collections, which have sub-controls in different banks
- And more: As usual, several more bugs were fixed, including some very old
IMPROVED DEFAULT APPLICATIONS
- SymAmp: New modern skin, added Amiga MOD (OPL3 wavetable based) and SA2 Adlib Tracker 2 support (OPL2 FM based), fixed PT3 player bug
- Task Manager: Includes context menus, shows application names also in the process list, allows killing processes, can put processes to sleep, change task priorities and switch to applications
- SymShell: New "test if character exists" feature
- SymCommander: Nice new menu icons
NEW APPLICATIONS (SINCE SYMBOS 3.1)
- SymCalc: Full featured spreadsheet application in the look and feel of classic MS Excel, supports more than 50 functions, absolute and relative cell references, fast automatic recalculation of cells, cut, copy, paste and move cell ranges with full repositioning of inner and outer cell references, date and time support and lots more (by Prodatron)
- SymbOS C Compiler: The new, very powerful and comprehensive C development kit for SymbOS, includes multithreading support, extensive wrappers and helper functions for SymbOS system calls, great documentation and much more (by Prevtenet)
- CPvM: CPvM is a kind of virtual machine that runs the CP/M 2.2 operating system and runs most classic CP/M applications within the SymbOS multitasking environment (by Prevtenet)
- WordPad: Advanced text editor that supports WYSIWYG text with various fonts such as bold and italic; supports printing using the Printer Daemon
- Solitair: Most popular GUI card game of all time (by Prevtenet, using Quigs)
- PDP-8 Emulator: Emulates a fully functional DEC PDP-8 minicomputer from 1965
- Star Map: Sky map with stars and planets (by Prevtenet, using SymbOS C compiler)
- SyMon: Visualize memory usage by displaying a complete map with the different types of used and available memory areas
- Sudoku: Sudoku is a number placement logic puzzle game popular in newspapers and puzzle books (by Prevtenet, using Quigs)
- Programmer's Calculator: The first SymbOS C compiler project lets you calculate with binary, hexadecimal and octal numbers (by Prevtenet, using SymbOS C compiler)
- Font Editor: Create and edit fonts in SymbOS format (.FNT); a huge collection can be found in the media section (by Prevtenet, using Quigs)
- Brainfuck: SymShell-based interpreter for the famous minimalist esoteric programming language (by NYYRIKKI)
Absolutely mindblowing!!!
Excellent !!!
Thanks Prodatron for constant developments, new apps & games, and regular follow-up ! ;) 8)
Wonderful start into the weekend.
Thanks!
Great stuff Prodatron!
MOD player?! sik! now i need a OPL3-4... !
I was waiting for it, excellent, I will try to make a video from real machine, showing the new functions, using the V9990 for faster image speed and colors, as always.
Lightning-fast, eye-candy, amazing!
(https://i.ibb.co/twDWm8T1/symdodo.jpg) (https://ibb.co/bjX8WzMG)
Cool !!! :)
Congratulation :), i played with it, it is a great version, fast, i was surprised on spreadsheet how good it is.
I think you should show it to Microsoft, an operating system is faster on a z80 processor, than on an X GHz :D
Thanks a lot for testing!
Quote from: dodogildo on 09:35, 01 February 25Lightning-fast, eye-candy, amazing!
(https://i.ibb.co/twDWm8T1/symdodo.jpg) (https://ibb.co/bjX8WzMG)
Wow, your CPC seems has a lot of Amps, your Amsdap with all the expansion cards doesn't need an own power supply :o :)
It's fantastic! Amstrad CPC 6128 Plus + Symbiface III + SymbOS 4 (CPC Plus ROM Version)
(https://www.borzini.on-rev.com/img/Amstrad6128Plus_Symbos4.png)
SymbOS is just black magic on Z80 computers.
I like a lot the B&W picture on this Amstrad Plus monitor. May be a problem with the vertical centering?
"After three years of hard work, another major release is ready, containing the most extensive changelog ever."
Hallo, ich heisse PRODRATRON 8)
(https://i.postimg.cc/wjcB05gh/prodatron.gif)
ps: Massive work, you rocks!
Quote from: Egg Master on 19:15, 01 February 25SymbOS is just black magic on Z80 computers.
I like a lot the B&W picture on this Amstrad Plus monitor. May be a problem with the vertical centering?
Yes, the monitor had a vertical centering issue, but I've now fixed it.
Trust this to come out just as I'm away from my real amstrads for a bit :3
That said, it looks good! will have a dick about with it in the VM later :)
DSKA720KB FAT12_SymbOS40-250131 Live bootable.dsk
68kB free
Thanks a lot again,
@McArti0 ! I will add it to the CPC package in the download area, if it's ok for you!
Quote from: McArti0 on 23:24, 01 February 25DSKA720KB FAT12_SymbOS40-250131 Live bootable.dsk
68kB free
Quote from: Prodatron on 01:51, 02 February 25Thanks a lot again, McArti0 (https://www.cpcwiki.eu/forum/profile/?u=4820) ! I will add it to the CPC package in the download area, if it's ok for you!
Ok. ;D
Quote from: McArti0 on 23:24, 01 February 25DSKA720KB FAT12_SymbOS40-250131 Live bootable.dsk
DSKA720KB FAT12_SymbOS40-250131 Live bootable
v2.dsk
Fix minor settings bug.
Dear
@Prodatron,
will it work with RSF3 also? I'm sorry for having not enough time for the Amstrad part of my (our) hobby.
Each spare time I almost start over.
There was something special with the RSF3 version?
M4 stuff?
I can't remember.
Stefan
Quote from: St-BeidE(DE/GB) on 19:34, 02 February 25will it work with RSF3 also?
Hi Stefan,
yes, the RSF3 is an improved SF3, so it contains the...
- USB mass storage interface
- RAM expansion
- USB mouse interface
- Realtime clock
- MP3 decoder
...of the SF3, which is all supported in SymbOS. As an additional feature it can emulate the Wifi network of the M4Board, so you can use the SF3-version of the SymbOS Network Daemon for the RSF3 as well.
Quote from: McArti0 on 09:47, 02 February 25DSKA720KB FAT12_SymbOS40-250131 Live bootable v2.dsk
Fix minor settings bug.
Thanks! Added to the CPC download package.
Quote from: Prodatron on 19:45, 02 February 25Quote from: St-BeidE(DE/GB) on 19:34, 02 February 25will it work with RSF3 also?
Hi Stefan,
yes, the RSF3 is an improved SF3, so it contains the...
...
This is fuxxin' awsome :o
Thank you very much for the work!
Stefan
Quote from: St-BeidE(DE/GB) on 19:34, 02 February 25Dear @Prodatron,
will it work with RSF3 also? I'm sorry for having not enough time for the Amstrad part of my (our) hobby.
Each spare time I almost start over.
There was something special with the RSF3 version?
M4 stuff?
I can't remember.
Stefan
Can confirm. It works well with a RSF3. Include the M4-ROM into the ROM-Banks which enables you WLAN network.
@Prodatron : A lot of respect to the upgrade from you and all others involved!!! It will take me hours to dig through all the changes. Looking forward to.
Question: The support for the NET4CPC (of d_kef) means support for the Ethernet-module, right?
Quote from: HAL6128 on 21:43, 02 February 25Question: The support for the NET4CPC (of d_kef) means support for the Ethernet-module, right?
Hi
@HAL6128 , yes, there is a Network Daemon driver for the Net4CPC ethernet module by
@d_kef . The whole work (driver + integration) has been done by D_kef itself, which is very cool.
D_kefs repository:
https://github.com/salafek/Net4CPC
(see "/extra" for the SymbOS network daemon code)
IIRC you build your own Net4CPC? In this case you should be able to test it, please use "netd-n4c.exe", which is included in the "MassStorageCompletion" package.
Quote from: Prodatron on 14:57, 03 February 25The whole work (driver + integration) has been done by D_kef
That's rather an exaggeration.
I used the Network Daemon and W5100 source code that had been already published at the SymbOS site and only wrote 4 or 5 low level routines and redesigned the settings form in a way to reflect the Net4CPC options.
Thanks for the mention anyway and especially thanks for your continuous work on SymbOS.
You are doing an amazing job there.
Every new feature and app is setting a new limit for what a 40 years old 8-bit system can do.
d_kef
DSKA1,2MB 15s2h80tr FAT12 SymbOS40-250131 v3.dsk
Quote from: Prodatron on 14:57, 03 February 25Quote from: HAL6128 on 21:43, 02 February 25Question: The support for the NET4CPC (of d_kef) means support for the Ethernet-module, right?
Hi @HAL6128 , yes, there is a Network Daemon driver for the Net4CPC ethernet module by @d_kef . The whole work (driver + integration) has been done by D_kef itself, which is very cool.
D_kefs repository:
https://github.com/salafek/Net4CPC
(see "/extra" for the SymbOS network daemon code)
IIRC you build your own Net4CPC? In this case you should be able to test it, please use "netd-n4c.exe", which is included in the "MassStorageCompletion" package.
I've already built it and got it run. Thanks to
@d_kef. Nice and exciting device for CP/M by the way!!
I'm going to try it with SymbOS.
@Prodatron I'm not having any sound fx/music with Pac Man. Yes, I activated OPL4 on Sound Daemon settings and I know my Wozblaster Reloaded is fine because I can listen MODS with Symamp. I can hear system startup tune etc. Any advice?
Quote from: dodogildo on 16:32, 05 February 25@Prodatron I'm not having any sound fx/music with Pac Man. Yes, I activated OPL4 on Sound Daemon settings and I know my Wozblaster Reloaded is fine because I can listen MODS with Symamp. I can hear system startup tune etc. Any advice?
Hi
@dodogildo , the sound file for PacMan is not included in the download packages, as it's currently only for testing purposes. A release is currently still pending, but further "official" sound material is needed.
Hello,
symbos was is the reason to start my real cpc today. Wanted to test it with my unifac. I copied all the files to a usb stick and make run"sym
I see the Bootscreen, afterwards it go away and the system don't make anything anymore. It is the same reaction as the previous version.
What i'm doing wrong?
Im using a cpc464 with unifac. Test it with 464 and 6128 mode.
Axel
SymbOS doesn't work with 64K only, so if your config is a CPC464 + Usifac II, it won't boot.
As a minimum you need either a 6128+USifac II or a 464+ULifac (this has a 512K expansion).
Quote from: Prodatron on 16:26, 07 February 25SymbOS doesn't work with 64K only, so if your config is a CPC464 + Usifac II, it won't boot.
As a minimum you need either a 6128+USifac II or a 464+ULifac (this has a 512K expansion).
Ups, i mean ulifac. I try it with a cpc464 and 6128 to start it from the main directory. It starts with the bootscreen and after it it go blank.
But i don't know if i have to do something before like a configuration.
Today i showed someone a video and he was really excited!
And i like to show it more often. :)
Quote from: harzretro on 16:34, 07 February 25Quote from: Prodatron on 16:26, 07 February 25SymbOS doesn't work with 64K only, so if your config is a CPC464 + Usifac II, it won't boot.
As a minimum you need either a 6128+USifac II or a 464+ULifac (this has a 512K expansion).
Ups, i mean ulifac. I try it with a cpc464 and 6128 to start it from the main directory. It starts with the bootscreen and after it it go blank.
But i don't know if i have to do something before like a configuration.
Today i showed someone a video and he was really excited!
And i like to show it more often. :)
Hm, I tried it with a 6128 right now both with Usifac and Ulifac again, and it works fine. But I have to admit, that my current 6128 has the
@eto s iRam640 memory expansion integrated.
I will try a 464 without additional expansions later as well.
Quote from: harzretro on 16:34, 07 February 25But i don't know if i have to do something before like a configuration.
No, it autodetects everything, so it should boot directly, when you just unzip the stuff to your root.
Quote from: harzretro on 16:34, 07 February 25Today i showed someone a video and he was really excited!
And i like to show it more often. :)
Thanks, that's nice to hear, hope we get it fixed soon! :)
I made a new usb stick.
Now i get the following screen with my 6128. But i cannot do anything and the usbdevice is flashing arround. With the 464 it stuck just before this screen.
Inside the usbdevice are the all files frim symbos.
(https://harzretro.de/wp-content/uploads/2025/02/172025175729.jpg)
Know i got two running versions. Don't know if i'm doung everything correctly, but its going on. :)
At the moment i'm using a 6128.
First version: the 1.2 mb disc image seems to be functional. Yeaaa. Didn't test, don't know why ....
And i have some problems with my usb mass storage. I toik another one and now it is loading little bit more!
And i can run some aplications, but the mass storage aplicatiins aren't found, and also the file manager has some problems ...
And while loading from ulifac the disc drive is running, too.
I get the error inside the Picture.
(https://harzretro.de/wp-content/uploads/2025/02/192025174643.jpg)
This message at 1.2MB is possible when the mass storage device timing is tripping. But this icon layout occurs when the system does not detect the RAM expansion or fails to download the configuration file. Your device is probably a bit loose. try to run the application A:\APPS\Symon.exe from the Start>Run... menu
Try 720kB.
I don't know WHY, but symbos is running from the masstorage, now!!!!
Is there a way to use the wifi from the ulifac?
IRC would be great ... talk to my c64 ;)
Late to the game, but... wow.
Quote from: harzretro on 20:05, 09 February 25I don't know WHY, but symbos is running from the masstorage, now!!!!
Very good news! :)
Did it just suddenly run with the same hardware/disc config you tried before, or did you change something?
Did you start it directly from the USB stick, or did you use McArtis 720K disc image to boot it?
Quote from: harzretro on 20:05, 09 February 25Is there a way to use the wifi from the ulifac?
IRC would be great ... talk to my c64 ;)
There is currently no Network Daemon driver available, as I still don't have a Wifi module.
I found an old eBay link for such a module, but it doesn't work anymore. I found actual ESP8266-01S wifi modules, but these have 8pin connectors, so I am not sure, if it would be ok to connect only the four GND, TXD, RXD, VCC pins to the Ulifac and leave the other four unused.
Quote from: Prodatron on 12:22, 10 February 25Quote from: harzretro on 20:05, 09 February 25I don't know WHY, but symbos is running from the masstorage, now!!!!
Very good news! :)
Did it just suddenly run with the same hardware/disc config you tried before, or did you change something?
Did you start it directly from the USB stick, or did you use McArtis 720K disc image to boot it?
.
I use another usb stick and there i can boot directly. After taking the other mass storage device which doesn't work before it suddenly work, too .....
Quote from: Prodatron on 12:22, 10 February 25Quote from: harzretro on 20:05, 09 February 25I don't know WHY, but symbos is running from the masstorage, now!!!!
Very good news! :)
Did it just suddenly run with the same hardware/disc config you tried before, or did you change something?
Did you start it directly from the USB stick, or did you use McArtis 720K disc image to boot it?
Quote from: harzretro on 20:05, 09 February 25Is there a way to use the wifi from the ulifac?
IRC would be great ... talk to my c64 ;)
There is currently no Network Daemon driver available, as I still don't have a Wifi module.
I found an old eBay link for such a module, but it doesn't work anymore. I found actual ESP8266-01S wifi modules, but these have 8pin connectors, so I am not sure, if it would be ok to connect only the four GND, TXD, RXD, VCC pins to the Ulifac and leave the other four unused.
To use the ESP-01, you need an adapter because it operates at 3.3V. This adapter not only performs the level shift from 3.3V to 5V but also provides the four necessary pins for serial communication: Tx, Rx, 5V, and GND. https://www.ebay.es/itm/115821589269?mkcid=16&mkevt=1&mkrid=1185-127638-7840-0&ssspo=A7F_SkTWT3G&sssrc=4429486&ssuid=VLupIVzWTZ6&var=&widget_ver=artemis&media=COPY
If you're going to explore this network access method for the Symbos Network Daemon, I recommend delving into the various firmware options for the esp8266. I'm quite advanced in getting the native FUZIX network driver to work with the SLIP protocol using the Usifac 2's serial port connected to an ESP-01 running this firmware: https://github.com/martin-ger/esp_slip_router (https://github.com/martin-ger/esp_slip_router)
Thanks a lot
@ajcasado ! So I will now wait for the package, it should arrive end of february.
Good to hear, that you have experiences with it, maybe I could need some help later. My first plan was just to send typical AT commands to the ESP, like described in
@ikonsgr s manual, but let's see...
You're welcome,
@Prodatron ,glad to be of help. If you finally decide to tinker with other firmware for the ESP8266, you will also need a programmer module. Depending on whether you have the ESP-01 or ESP-01S version, you might need a specific programmer model. If you don't choose the right one, as happened to me, you can usually fix it by soldering a small bridge on the programmer board to make it work.
Quote from: ajcasado on 19:08, 11 February 25You're welcome, @Prodatron ,glad to be of help. If you finally decide to tinker with other firmware for the ESP8266, you will also need a programmer module. Depending on whether you have the ESP-01 or ESP-01S version, you might need a specific programmer model. If you don't choose the right one, as happened to me, you can usually fix it by soldering a small bridge on the programmer board to make it work.
Thanks, that's good to know! So it's impossible to flash it somehow from CPC/Ulifac side, right?
I really wonder if it makes sense to use a different firmware then, since in that case any other would also need a programmer to get it working with such a special network driver.
What do you think, does the other firmware have big advantages? As a minimum I need the ability to open a passive (server listening) or active (client) TCP connection. Two or more at the same time would be better of course.
Quote from: Prodatron on 19:44, 11 February 25Thanks, that's good to know! So it's impossible to flash it somehow from CPC/Ulifac side, right?
Well, not exactly impossible, but it wouldn't be trivial either. Maybe if you think it's worth exploring this possibility, a thread could be opened in the forum for that purpose.
Quote from: Prodatron on 19:44, 11 February 25I really wonder if it makes sense to use a different firmware then, since in that case any other would also need a programmer to get it working with such a special network driver.
You're right. Maybe the only useful case would be using firmware that works with a device already supported by SymbOS, so you
can reuse code that already works.
Quote from: Prodatron on 19:44, 11 February 25What do you think, does the other firmware have big advantages? As a minimum I need the ability to open a passive (server listening) or active (client) TCP connection. Two or more at the same time would be better of course.
That functionality is already built into the factory firmware, so it's probably the best option.
In my case, for Fuzix, I've explored two firmware options for the ESP8266: the AT Hayes modem and the SLIP protocol. Both have already been implemented on other platforms, so the only thing needed is to support the Usifac as a TTY device, which I'm halfway through. So far, I can ping my home router and use a serial terminal on my PC as a Fuzix console.
Thanks so much
@ajcasado , these all are very useful information! Ok, I will come back to this again hopefully in 2-3 weeks, when I have the hardware. Then maybe we can open an own thread for this. Glad to have your help!
I just tried the mass storage version along with the extra completion package, and it seems to work perfect with ULIfAC board and CPC 6128 :D
It also runs fine on CPC464, but as you will "only" have 256k ram (as symbos needs cpc6128 roms, so you have to use the dual ram/rom mode), and after initial loading, you will only have ~30kb free available memory, so i had to kill a few apps that load on startup, and then i manage to load a lot of apps too ;) (
@Prodatron, if i use the rom version of symbos, will i have more free ram than using the mass storage version? )
Maybe it's time to proceed with the ULIfAC II project, that will offer 512k ram + 32xrom board at the same time ;D
* Just one note: you have to place all files from mass storage version at root directory of usb stick (apart from a few files, everything else will be placed in a "symbos" folder, so you will not a have a lot of mess in your root dir after placing symbos :) ), other wise symbos will not load correctly!
Does it really need the 6128 ROMs? I think I could run SymbOS on a 464 with a USIFAC II.
Quote from: ikonsgr on 09:57, 14 February 25have to place all files from mass storage version at root directory of usb stick
I agree, it would be great if it could start from a subfolder. (btw: can we "hide" files on the USB stick so the CPC doesn't show them? in that case it would at least be possible to hide the files except for "sym").
Quote from: ikonsgr on 09:57, 14 February 25It also runs fine on CPC464, but as you will "only" have 256k ram (as symbos needs cpc6128 roms, so you have to use the dual ram/rom mode), and after initial loading, you will only have ~30kb free available memory, so i had to kill a few apps that load on startup, and then i manage to load a lot of apps too ;) ( @Prodatron, if i use the rom version of symbos, will i have more free ram than using the mass storage version? )
Thanks a lot for testing! :)
Like eto I wonder why you need the 6128 roms? TBH my short test with a 464 and Ulifac wasn't successful, but it was only a quick try so far, I have to test it again with another cable.
Quote from: ikonsgr on 09:57, 14 February 25Maybe it's time to proceed with the ULIfAC II project, that will offer 512k ram + 32xrom board at the same time ;D
I wonder, if it would be possible to connect a mouse to the free UART port of the Ulifac. Either an old serial one or an USB mouse using a second CH376 board. Then this would be an all-in-one solution for SymbOS.
Quote from: ikonsgr on 09:57, 14 February 25* Just one note: you have to place all files from mass storage version at root directory of usb stick (apart from a few files, everything else will be placed in a "symbos" folder, so you will not a have a lot of mess in your root dir after placing symbos :) ), other wise symbos will not load correctly!
The only file which really needs to be placed is the SYMBOS.INI . All others, including the boot files "sym." and "symbos.bin" can be placed in a subdirectory as well.
But it has to be configured for this. The disc version is configured so that it expects all files in the root (as Amsdos doesn't support folders). The mass storage version is configured for having all files in /symbos/, /symbos/apps/ etc.
Quote from: ikonsgr on 09:57, 14 February 25( @Prodatron, if i use the rom version of symbos, will i have more free ram than using the mass storage version? )
The ROMs are just for booting SymbOS, they are nothing more than a replacement for the "sym." and "symbos.bin" boot files.
It's more of a traditional thing to still have them. In the past they were very useful for booting SymbOS directly from the SYMBiFACE II when there was no FAT16/32 support outside of SymbOS (this "dark age" ended with the M4Board I think).
Today you can still use them to "quick boot SymbOS" by holding down the CONTROL key when turning on the CP.
Quote from: Prodatron on 12:54, 14 February 25Like eto I wonder why you need the 6128 roms? TBH my short test with a 464 and Ulifac wasn't successful, but it was only a quick try so far, I have to test it again with another cable.
I've tried mass storage version on default CPC464 mode with 512k ram, but after initial boot screen, loading is stuck. If you say that no CPC 6128 roms are needed, then maybe symbos needs the shadow ram used in dual ram/rom mode (in default 512k mode, only the mreq suppression is active, there is no shadow ram and no C3 mode support either,and as i recall, previous v3 ULIfAC without internal 64k shadow ram, couldn't load symbos on CPC464)
Quote from: Prodatron on 12:54, 14 February 25I wonder, if it would be possible to connect a mouse to the free UART port of the Ulifac. Either an old serial one or an USB mouse using a second CH376 board. Then this would be an all-in-one solution for SymbOS.
As there is only one hardware UART available which is used for connecting the usb host module, you can't connect anything else.
BUT, i also make this (https://retroworkbench.blogspot.com/p/5v-power-supply-for-joystick-port-to.html) adapter, which combined with this (https://retroworkbench.blogspot.com/p/usb-mouse-adapter-for-amigaatari-st.html) adapter, allows you to
use usb mouses as joystick, so practically many usb mouses (ps2 compatible) can be used with symbos!
Finally with this (https://retroworkbench.blogspot.com/p/amigaatari-st-mouse-adapter-for.html)adapter, you can use either an amiga/atari st mouse directly, or most usb mouses by plugging this (https://retroworkbench.blogspot.com/p/amiga-atari-st-usb-mouse-adapter-with.html) adapter :D
Quote from: ikonsgr on 17:58, 14 February 25As there is only one hardware UART available which is used for connecting the usb host module, you can't connect anything else.
Sorry yes, I forgot about this. Is it the same for the Wifi module, or does it have its own port?
Quote from: ikonsgr on 17:58, 14 February 25BUT, i also make this (https://retroworkbench.blogspot.com/p/5v-power-supply-for-joystick-port-to.html) adapter, which combined with this (https://retroworkbench.blogspot.com/p/usb-mouse-adapter-for-amigaatari-st.html) adapter, allows you to use usb mouses as joystick, so practically many usb mouses (ps2 compatible) can be used with symbos!
Finally with this (https://retroworkbench.blogspot.com/p/amigaatari-st-mouse-adapter-for.html)adapter, you can use either an amiga/atari st mouse directly, or most usb mouses by plugging this (https://retroworkbench.blogspot.com/p/amiga-atari-st-usb-mouse-adapter-with.html)adapter :D
Haha yes, I already bought this from you an eBay, not for the CPC, but the version for my Atari 800, it works great! :D
(I think this version is even emulating a proportional mouse, not only a joystick one? I am using it for the A8GOS, the SymbOS like system from FlashJazzCat for the Atari8).
Quote from: Prodatron on 00:27, 15 February 25Sorry yes, I forgot about this. Is it the same for the Wifi module, or does it have its own port?
all uart connectors serial, wifi, usb host module, share a common hardware uart port,so you can only have one device active at a time.
Amazing work Prodatron and Prevtenet! Pumped up to try SCC and Turbo Pascal via CpVM!
Making the Amstrad Great Again!
Thanks MadRam, and nice to see you back! :)
Prevtenet finished a SCC version for Linux just yesterday (currently it is running in Windows and SymbOS), I guess there will be another release soon.
Yes, you can now build SCC for Linux (possibly also MacOS?). This will eventually be in the stable v1.2 release, but in the meantime you can build it on your system by downloading the latest source from GitHub (https://github.com/danielgaskell/scc) and run "makelinux.sh" in the "src" folder. (Note that the binaries expect to be run directly from the repo's 'bin' folder, in order to find their libraries.)
@Prodatron , could you add a keyboard shortcut to the Reread Source option in Symcommander?
Quote from: McArti0 on 09:05, 19 February 25@Prodatron , could you add a keyboard shortcut to the Reread Source option in Symcommander?
Ctrl+R. Doesnt it Work? Have to check later
Quote from: Prodatron on 20:01, 19 February 25Ctrl+R
I read the help and didn't find it, but it is there :picard:
;D
If you miss something else please tell.
SymCommander will be updated soon (but first watch out for EdoZ new "Explorer" coming soon).
After getting the great ulifac v5 i can use symbos on my 464, too.
Yeaaaa :)
But only in |6128 mode with |sm,2
And this means: only 256kib RAM.
Little bit less because most programs don't run - they need more memory ...
Just saw rhat
@ikonsgr wrote mostly the same ...
I'm no technican. In |464 mode it looks like the same behaviour like |sm,1
Also the reset button of ulifac won't work anymore - have to restart the Computer.
Ohh, and did i say that i love both, the ulifac and symbos? :)
Today i test my color monitor with it - it is a long time ago i used it ....
And im prefering green, again ..
Quote from: harzretro on 16:27, 28 February 25After getting the great ulifac v5 i can use symbos on my 464, too.
Yeaaaa :)
But only in |6128 mode with |sm,2
And this means: only 256kib RAM.
Little bit less because most programs don't run - they need more memory ...
There is a trick you can use: open sysmon and kill some of the tasks already running, this will free enough memory and be able to load most of the utilities ;-)
Quote from: harzretro on 16:27, 28 February 25Just saw rhat @ikonsgr wrote mostly the same ...
I'm no technican. In |464 mode it looks like the same behaviour like |sm,1
Also the reset button of ulifac won't work anymore - have to restart the Computer.
Ohh, and did i say that i love both, the ulifac and symbos? :)
Today i test my color monitor with it - it is a long time ago i used it ....
And im prefering green, again ..
|464 is kind of obsolete command (i left it for legacy reasons only), you don't need to use it anymore with ULIfAC board. This is useful with USIfAC II, in order to enable dsk image access mode on CPC 464 as it enables amsdos/parados emulation.
With ULIfAC, that has a rom board, you can mount amsdos/parados rom, and access images directly as with CPC 6128 (using |FDC instead of |464)
Quote from: ikonsgr on 17:02, 28 February 25Quote from: harzretro on 16:27, 28 February 25After getting the great ulifac v5 i can use symbos on my 464, too.
Yeaaaa :)
But only in |6128 mode with |sm,2
And this means: only 256kib RAM.
Little bit less because most programs don't run - they need more memory ...
There is a trick you can use: open sysmon and kill some of the tasks already running, this will free enough memory and be able to load most of the utilities ;-)
Quote from: harzretro on 16:27, 28 February 25Just saw rhat @ikonsgr wrote mostly the same ...
I'm no technican. In |464 mode it looks like the same behaviour like |sm,1
Also the reset button of ulifac won't work anymore - have to restart the Computer.
Ohh, and did i say that i love both, the ulifac and symbos? :)
Today i test my color monitor with it - it is a long time ago i used it ....
And im prefering green, again ..
|464 is kind of obsolete command (i left it for legacy reasons only), you don't need to use it anymore with ULIfAC board. This is useful with USIfAC II, in order to enable dsk image access mode on CPC 464 as it enables amsdos/parados emulation.
With ULIfAC, that has a rom board, you can mount amsdos/parados rom, and access images directly as with CPC 6128 (using |FDC instead of |464)
I put the | in front of the 464 to show that i mean the 464 ;)
I killed sime aplication, too, but everytime it crashed or i couldn't start any program anymore, but i've to test little bit more ....
Quote from: harzretro on 17:18, 28 February 25I put the | in front of the 464 to show that i mean the 464 ;)
I killed sime aplication, too, but everytime it crashed or i couldn't start any program anymore, but i've to test little bit more ....
Not all apps are for killing, some must not stopped as they crash computer or cause severe problem on symbos.
In default 464 mode with 512k ram, you can load most of games, but as it doesn't support shadow ram+c3 configuration mode,and there are no CPC 6128 roms active, most of alternative os (like symbos, futureos, CP/M plus) can't run properly.
Quote from: harzretro on 16:27, 28 February 25And this means: only 256kib RAM.
Little bit less because most programs don't run - they need more memory ...
Just saw rhat @ikonsgr wrote mostly the same ...
I am glad, that it is now running on your 464 as well!
Please don't kill some of the Daemons, the Starfield Screensaver or the Extended Desktop. You can remove them from Autostart (Start -> Settings -> Startmenu -> Programs -> Autostart -> Delete "Sound Daemon"; then save the config again).
Only kill normal apps. These which are system extensions or daemons may not like it, if you just kill them with the task manager, as they dock to the system in a more deeper way, which is then not cleaned up, when you kill them.
You can run all existing programs even with "only" 256K, when you have nothing else running in the background. For this you would have to run SymbOS in "minimal" mode, for which you have to deactive the "Extended Desktop" as well (Start -> Settings -> Control Panel -> System -> [ ] Extended Desktop)
Somehow it's kind of "fascinating" that with all the new things from the last years a CPC with "only" 256K is reaching some limits now :D Everything is still optional, only if you want to have the "full power" you need 512K or more.
Finally got around to trying it on my 464+512k+usifac2
Works beautifully, too!
Quote from: harzretro on 16:27, 28 February 25And this means: only 256kib RAM.
Disable new sound daemon.
Quick question for you
@Prodatron .
Is there a small IDE for Z80 assembly programming in SymbOS?
In mind:
- a multi-document editor with a project file
- the ability to set breakpoints
- the ability to compile, see errors, jump to the file+line when an error occurs
- the ability to run a program and debug/trace it
Please take note that it's not a feature request, just curiosity.
Thanks!
Natively on SymbOS, the closest to this right now is to write your code in multiple Notepad windows and assemble it with SCC's native assembler (https://github.com/danielgaskell/scc/blob/main/doc/special.md#using-as-as-a-standalone-assembler). Improving the infrastructure for coding directly on SymbOS is definitely one of my long-term goals, however.
Otherwise, WinApe's assembler and debugger have most of these features.
Quote from: norecess464 on 19:36, 06 March 25- the ability to set breakpoints
That is not easy indeed. Problem is, that applications in SymbOS are loaded and relocated to flexible addresses due to the multiprogramming/multitasking environment with dynamic memory usage. All memory is divided into 256-byte pages instead of crude 16K blocks (MSX-DOS, IS-DOS and others) or wasteful 64K pages (MP/M) to maximize RAM usage.
I am still using the primitive DI:HALT methode for debugging in an emulator, if there is a nasty problem I can't debug in another way.
A new emulator feature would be required, which can set dynamic breakpoint addresses depending on the areas, into which an application is relocated during loading.
Quote from: norecess464 on 19:36, 06 March 25- the ability to compile, see errors, jump to the file+line when an error occurs
That is already a WinApe feature, or do you speak about something different?
Quote from: norecess464 on 19:36, 06 March 25- the ability to run a program and debug/trace it
You can assemble/compile a program directly to a native FAT16/32 partition on your PC and access it in WinApe with SymbOS directly. No need to transfer files to a disc image first. That makes testing very fast and easy, as you have no additional steps. You have the running SymbOS system and just execute apps from the "cpc harddisc" which is in real a PC FAT partition, to which you assembled your last app version.
Regarding debugging/tracing, yeah, see above, it could be improved on Emulator side (breakpoint support for dynamic loading addresses).
Quote from: prevtenet on 21:05, 06 March 25Natively on SymbOS, the closest to this right now is to write your code in multiple Notepad windows and assemble it with SCC's native assembler (https://github.com/danielgaskell/scc/blob/main/doc/special.md#using-as-as-a-standalone-assembler). Improving the infrastructure for coding directly on SymbOS is definitely one of my long-term goals, however.
@prevtenet , that sounds amazing!
Your documentation of the SymbOS API
https://github.com/danielgaskell/scc/blob/main/doc/symbos.md
(link is only a fraction of the whole SCC doc)is already better than my one one, haha! :D
Quote from: Prodatron on 23:08, 06 March 25I am still using the primitive DI:HALT methode for debugging in an emulator, if there is a nasty problem I can't debug in another way.
The other way I've done this is to insert some recognizable data (DB 1,2,3,4,1,2,3,4 or something) near the code I'm trying to debug and search for it in the WinApe debugger's memory view. (You can figure out the bank from the information given by SyMon.) Usually I only need to do this once per session, since subsequent loads of the app will tend to go to the same place.
Quote from: Prodatron on 23:08, 06 March 25You can assemble/compile a program directly to a native FAT16/32 partition on your PC and access it in WinApe with SymbOS directly.
I like this idea! Usually I just keep the disk editor window open and drag the executable into it. Either way, the whole process of compile/assemble -> load -> run only needs to take a few seconds on a PC.
Quote from: Prodatron on 23:08, 06 March 25Quote- the ability to set breakpoints
That is not easy indeed.
This is a really interesting problem.
The "dumb" way to implement a debugger running natively on SymbOS would be to just insert some kind of CALL _DEBUG_ routine between every assembled instruction to save state and check for breakpoints, but this would bloat the code and run very slowly. A "smarter" way might be to create a sort of half-emulation layer where, to set a breakpoint, the debugger replaces the code with a specific RST or CALL (remembering the original, so it can execute it in single-step mode). In single-step mode, it reads and parses the instructions itself, either just by giving them to the CPU (for I/O and normal bitwise stuff) or by emulating them (for branches and stack operations).
...actually, that sounds kind of fun to write. Does SymbOS have any RST levels free that it could use as a hook, or would it have to use CALL?
Quote from: prevtenet on 23:35, 06 March 25The other way I've done this is to insert some recognizable data (DB 1,2,3,4,1,2,3,4 or something) near the code I'm trying to debug and search for it in the WinApe debugger's memory view. (You can figure out the bank from the information given by SyMon.) Usually I only need to do this once per session, since subsequent loads of the app will tend to go to the same place.
Cool :) now let me describe my way exactly:
I once place a DI:HALT. When the app is executed and the system is freezing at this point, I am opening the debugger, reactivate the interrupts and skip the HALT. Then I set a breakpoint to the DI:HALT address and replace it with 2 NOPs (0) - even in the source code (DS 2). As you mentioned, it is then usually at the same place, so when doing the next attempt, the breakpoint is already at the correct place.
I wonder which methode saves more time.
Quote from: prevtenet on 23:35, 06 March 25The "dumb" way to implement a debugger running natively on SymbOS would be to just insert some kind of CALL _DEBUG_ routine between every assembled instruction to save state and check for breakpoints, but this would bloat the code and run very slowly. A "smarter" way might be to create a sort of half-emulation layer where, to set a breakpoint, the debugger replaces the code with a specific RST or CALL (remembering the original, so it can execute it in single-step mode). In single-step mode, it reads and parses the instructions itself, either just by giving them to the CPU (for I/O and normal bitwise stuff) or by emulating them (for branches and stack operations).
...actually, that sounds kind of fun to write. Does SymbOS have any RST levels free that it could use as a hook, or would it have to use CALL?
Phew! But the idea is very interesting!
Yes, I was always afraid to use all RSTs as maybe I forgot something important, and then there is no-one left.
So RST#0 is still available.
But you only have 8 bytes to do something, and you could be in any 64K bank, while your debug handler is in a fixed one. Let's think about this, maybe it could be a cool feature!
( @noreccess64, thanks for starting this :D )
Here, I'm only referring to programming directly from SymbOS for SymbOS.
Yes, SCC's internal assembler could be an option. So, multiple instances of the Notepad program, a Terminal to trigger the build, etc.
For debugging, I see two strategies:
- The classic breakpoint system, like used in Maxam and the others, which relies on an RST instruction to trigger. You must compile with that RST instruction, and when encountered, execution is paused, allowing you to inspect memory, disassemble code, and view registers. The only options are to resume execution or cancel debugging.
- The other strategy, as implemented by Orgams, simulates the Z80 to allow line-by-line tracing. Essentially, the debugger "emulates" the instruction pointed to by PC. This seems incredibly complex to implement, so I'm really impressed (and puzzled) by @m_dr_m 's achievement in this area.
Regarding the development experience, I guess it would be reasonable to require developers to compile with a small library that provides access to the OS's essential features, such as the memory manager, resource management, etc. But it's probably already exposed under another form :)
Quote from: norecess464 on 00:51, 07 March 25Regarding the development experience, I guess it would be reasonable to require developers to compile with a small library that provides access to the OS's essential features, such as the memory manager, resource management, etc. But it's probably already exposed under another form :)
Yeah, there is a standard library (https://symbos.org/download.htm) of header files for ASM development (and of course Quigs and SCC have their own libraries). Debug code could probably also be assembled into the app this way.
The SCC assembler derives from Fuzix and is a bit simpler than the WinApe assembler, so I don't think the standard ASM headers will work out of the box, but it shouldn't be hard to adapt the parts of the code you need.
Quote from: Prodatron on 23:55, 06 March 25So RST#0 is still available.
If you think the kernel design is mature enough not to need it in the future, it might be useful to define RST #0 as "available for advanced app usage." Possibly the kernel could set 0x0000 = 00 00 00... in each user bank by default, and it would be the app's responsibility to (1) check if 0x0000 in a bank is zero (i.e., not already registered by another app), (2) define their own jump vector there, and (3) clear it back to zero when done using it. Apps could then use RST #0 safely without requiring much (if any?) modification of the kernel.
Quote from: norecess464 on 00:51, 07 March 25Essentially, the debugger "emulates" the instruction pointed to by PC. This seems incredibly complex to implement, so I'm really impressed (and puzzled) by m_dr_m (https://www.cpcwiki.eu/forum/profile/?u=3015) 's achievement in this area.
Obrigado! As a side note, this was pretty fun to code. No stack usage allowed (no CALL, no PUSH/POP), only 5 8bits register to play with (some being used to count the machine time!).
The complicated part was to provide the line in the code source corresponding to the current PC.
Quote from: prevtenet on 02:45, 07 March 25If you think the kernel design is mature enough not to need it in the future, it might be useful to define RST #0 as "available for advanced app usage." Possibly the kernel could set 0x0000 = 00 00 00... in each user bank by default, and it would be the app's responsibility to (1) check if 0x0000 in a bank is zero (i.e., not already registered by another app), (2) define their own jump vector there, and (3) clear it back to zero when done using it. Apps could then use RST #0 safely without requiring much (if any?) modification of the kernel.
That is a good idea! The first 8 bytes are always 0 in all banks, so the rule would already work. I will add it to the documentation.
Quote from: m_dr_m on 10:21, 07 March 25Obrigado! As a side note, this was pretty fun to code. No stack usage allowed (no CALL, no PUSH/POP), only 5 8bits register to play with (some being used to count the machine time!).
The complicated part was to provide the line in the code source corresponding to the current PC.
I was nearly falling from my chair, when I saw this on the Benediction party :D
NYYRIKKI did a Z80 emulator for Z80 (https://msx.fi/nyyrikki/files/z80emuv20.lzh) but I guess this has been done independently.
Quote from: Prodatron on 16:58, 09 March 25was nearly falling from my chair,
Too many b**rs!
Manfred made another video from his crazy CPC setup. I still have no idea how it is possible to connect so many stuff at the same time:
https://www.youtube.com/watch?v=LzURhausHsI
SymAmp running in SymbOS 4.0 playing Amiga MOD files.