Coder Social home page Coder Social logo

ldos's Introduction

LDOS v1.31 (Leonard Demo Operating System)

Introduction

LDOS is a framework to easily build Amiga multi-part demos. You can chain several amiga executable effects. LDOS is managing memory allocation, floppy disk loading, data depacking and image disk creation. LDOS also includes an HDD loader to run your demo from harddisk. LDOS toolchain is running on Windows platform.

Please like on your lovely Pouet website :)

Demo sample

LDOS repository also comes with a demo sample so you can see how to use LDOS in real life application. Just run demo/build.cmd to build the sample LDOS demo. It will produce "ldos_demo.adf" file. You can use it in any Amiga emulator or write on real floppy and test on real hardware. The sample demo is made of 3 files (look at demo/script.txt)

  1. parcade.mod ( mod music file )
  2. Sprite loader: few animated sprites during the loading & depacking of the second part
  3. Greetings: large bitmap scroll (fun fact: this part is a conversion of Greetings part of Atari "We Were @" demo )

Building LDOS

LDOS comes with pre-assembled binaries. ( ldos/bin ). But if you want to modify & build yourself, just run ldos/src/build.cmd

How to use LDOS

Each of your demo FX should include LDOS header

      include "../../ldos/kernel.inc"

Each LDOS function is called using JSR. For instance, if you want to pre-load the next FX from floppy disk, just do:

			move.l  (LDOS_BASE).w,a6
			jsr LDOS_PRELOAD_NEXT_FX(a6)

You can open ldos/kernel.inc to see all LDOS functions

Each demo part should be a standard Amiga executable.

LDOS Technical details

  • LDOS should run on any Amiga ( from A500 to 060 )
  • LDOS is primary made for A500 demo. If ran on higger amiga, CPU caches are switched off
  • LDOS is using LightSpeedPlayer (LSP), the fastest Amiga MOD player ever
  • Generated demo is 1MiB RAM targeted ( with at least 512KiB of chip memory )
  • Use ARJ mode 7 packer
  • LDOS is loading & depacking at the same time. Most of demos are loading, then depacking. LDOS depacks while loading, so basically depacking time is free.
  • LDOS use Light Speed Player (fastest MOD player ever)
  • Just put all the exe of your demo in a script.txt and run ldos/bin/install ( look at demo/build.cmd script )
  • All files are automatically packed using Arj7, you don't have to worry about packing
  • fun fact: All data on the disk is packed except the small bootblock code
  • LDOS bootblock is 292 bytes only and contains the only unpacked data of the disk. Packed data (including FAT) starts right after these 292 bytes
  • LDOS cluster size is 2 bytes only ( no 512 bytes waste per file :) )

Credits

Amiga demos using LDOS

LDOS is production ready :) Several Amiga demos are already powered by LDOS:

Cycle-Op by Oxygene. (3rd place at Revision 2023, Amiga compo)

https://www.pouet.net/prod.php?which=94129

Cycle-Op

The Nature of Magic by NGC. (6th place at Revision 2023, Amiga compo)

https://www.pouet.net/prod.php?which=94172

The Nature of Magic

The Fall by The Deadliners & Lemon. (1st place at Revision 2018, Amiga compo)

https://www.pouet.net/prod.php?which=75773

The Fall

De Profundis by The Deadliners & Lemon. & Oxygene (2nd place at Revision 2019, Amiga compo)

https://www.pouet.net/prod.php?which=81081

De Profundis

AmigAtari by Oxygene (3rd place at Revision 2020, Wild compo)

https://www.pouet.net/prod.php?which=85276

AmigAtari

Mel O Dee by Resistance (2nd place at Xenium 2021, Wild compo)

https://www.pouet.net/prod.php?which=89698

Mel O Dee

ldos's People

Contributors

arnaud-carre avatar

Stargazers

 avatar Adam Keher avatar Volker Schwaberow avatar Kieran Connell avatar  avatar Renaud Guérin avatar kai avatar Comatron avatar Simon Byrnand avatar  avatar Ted Roberth Nilsen avatar Jonas avatar Christophe KOHLER avatar SiZiOUS avatar  avatar Krystian Bacławski avatar Antti Takala avatar Laurent Lardinois avatar Thomas W. Holleis avatar GAURAV avatar  avatar Mikael Degerfält avatar  avatar Stefan Reinauer avatar Alexander Kovalenko avatar George Moschovitis avatar Miguel Mendez avatar Jeff Alyanak avatar Torkild H. Lyngstad avatar Michael Nattfalk avatar Jonathan Bennett avatar Roc Vallès i Domènech avatar Daniel Gerdgren avatar Graham Bates avatar Emmanuel Marty avatar Cedric Guillemet avatar 爱可可-爱生活 avatar François Gutherz avatar  avatar Nicolas Sauzede avatar Jobbo avatar  avatar Magnus Österlind avatar  avatar AJ Kelly avatar  avatar  avatar

Watchers

Torkild H. Lyngstad avatar  avatar

ldos's Issues

Questions about the interface

Hi Leonard

I'm taking a look at LDOS and I have a few hopefully simple questions:

It seems like there is almost no exposed memory allocation other than allocating a share chip ram area between effects. Is that correct? Is it intended that the user will just dc.b all other memory required by the effects and the LDOS system will take care of everything else?

If that's the case then how would you handle shared lookup tables or things like that, or have you just tried to keep it simple by leaving that out?

I'd like to build my effects using Bartman's C environment, it seems plausible that I can generate an exe that'll be stripped down and that I can inline jsr's to LDOS from within C. Do you anticipate any problems I might run into or know of anyone has managed this?

I'm only just getting started, but the system looks awesome, so thanks for sharing!!
Jobbo

Linux port

Thank you for sharing this, Arnaud! I would love to use this on Linux. A few things come up when thinking about a Linux port:

  • ARJ comes with std. linux distros, but it seems it does not handle mode 7. Is the ARJbeta available somewhere to compile? IF not, what would be the alternative to ARJ?

  • The "install" program is C++. With the data structure one could write a Python script that accomplishes much of the same that would be platform-independent. Do you have a specification of the data structure used?

Comment and maintain register usage

I have some inline C functions that wrap LDOS and for that matter LSP.

I gave up on saving/restoring only the registers necessary because I would only have to change it again later. However if you could maintain and comment the registers that get trashed then that would be helpful in general for other users and for me to maintain my C wrapper.

Not a big deal but just an idea, if it's relatively painless to do so.

Kickstart issue

I have noticed that my own demo demo-in-progress does not load, but ends in LDOS debug screen, it is started under AROS and not ordinary Kickstart. I checked with another LDOS product, and the same thing happens. If I load older ADF trackmos under AROS, there is no issue.

Maybe it is possible to fix this, to increase compatibility? Certainly not a big issue, but one nevertheless. :)

What CPU overhead can be disabled and how?

Hi there
I have a routine that's extremely close to using a full frame.
It can run at 50hz in my own framework while also playing back an LSP tune (without the need for insane mode).
However, running it inside LDOS there must be additional overhead as it's going over the limit.
Can you fill me in on the additional overhead and what/how I might be able to disable that for the duration of one effect?

No user VBL or framecounter in 1.3?

Checking out the exciting new version of LDOS today, and I realized that the interface now does not offer the global framecounter nor the user-specified VBL callback. These were very useful features IMHO.

In kernel.asm it seems the user callback and SVAR_VBL_COUNT is still there, but there is no place in the jumptable to install one or get the frame count.

Are these gone for good?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.