Giter Club home page Giter Club logo

amoskittens's Introduction

AmosKittens

About

Amos Kittens tries to be 100% compatible AMOS interpreter, so you can download Amos programs from Aminet or cover disks or run AMOS code from ADF disk images. This is the goal of this project. The Amos Kittens commands tries to stay 99% compatible, a few commands won’t work as this project use a bit more modern chunky image format instead of the planar graphic format used on Amiga 500 to 4000.

AmigaOS4.x is the platform this thing primary developed on, however code is sometimes tested on other operating systems.

MorphOS / AROS / AmigaOS3.x The API's are whery similar to AmigaOS4.x there for it should be relatively easy to make the changes need to make it compile, however due to having to focus on adding new features, I have no time to keep thing up to date on many different operating systems.

#35

Linux I decided to port some of it to Linux, now interpreter did works under Linux x86 32bit at one time, (it did however not have a graphical display on Linux. Unlike the AmigaOS version). The Linux version is used to find hard to find bugs, and help find and remove stupid mistakes in the code, due to the superior memory protection in Linux. (Currently some files were removed due to being outdated compare to Amiga version of this files.), now after implementing the “include” command, Linux little endian support got officially broken.

#34

Windows Part of the code is sometimes tested in Virtual Studio, some headers does support visual studio compiler. However, no attempt at compiling a full version has been tried. Now after implementing the “include” command, Windows little endian support got officially broken.

ATARI I have been investigating, if that be possible due link between STOS and AMOS, from what found doing some research on ATARI ST graphics, is that it has lot less colors, and can't display as many colors in higher resolutions. I have not looked at memory limitations but AMOS Kittens is written in C++ code and bit fatter then 680x0 optimized assembler code, I been investigating ATARI Falcon and ATARI TT, this might be able to do it, and it be cool to support it, but there is lot less users on this platforms.

Developer's contributors to Amos kittens

If you’re a MorphOS or AROS developer don't let that stop you, but please make directories like OS/MorphOS or OS/AROS, where keep the modified versions of files, plase clone this porject on git so I can merge in changes I like), I like try to avoid "#IFDEF" all over the source code.

Amos developers:

Kittens is becoming more and more feature complete, there are few commands that is not working,

Please also read the document describing how Kitten commands works. Some of commands have enhancements over the original AmosPro commands, but they should be backwards compatible.

https://github.com/khval/AmosKittens/blob/master/commands.md

Kittens does not support the old extension format, but I have recreated some of old extensions in order for your AMOS programs to work, please note that some of the extensions are not fully implemented, download and check the status page on this projects here.

https://github.com/khval/kittyCraft.library

https://github.com/khval/kittyMusiCraft.library

https://github.com/khval/kittyMusic.library

https://github.com/khval/kittyTurbo.library

https://github.com/khval/kittycompact.library

Using Amos Kittens

There are two ways you use Amos Kittens.

  • As workbench tool for project icon.

Change the “Default tool:” on your Amos project icon to AmosKittens. set Execution Mode/Run as: Workbench,

  • From shell

AmosKittens [dir]/[filename.amos]

If window flashes on the screen, you might be runing a simple exsample, without "Wait Key", unlike Amos Pro, Amos kittens don't wait for a key press if the program is done.

If AmosKittens return with a token number, It might be using a command this not supported, or not implemented, check the source code of Amos program your running. Then check “Not yet supported” as bottom of this page. And check "Issues" and "current Status:" on GitHub so see what Amos Kittens support and what not.

Writing Amos Kittens compatible code, I like to suggest using “Amos Professional Unity” as this is the most advanced version of Amos Pro right now, however lett me explain:

Amos Professional Unity does come with a lot of new commands in AmosPro_Personal.lib and AmosPro_AgaSupport.lib, this extension is not yet replicated for Amos kittens. Try to avoid these commands, and stick to standard commands for Amos Kittens. And Unity breaks some extensions, some of extensions Amos Kittens support might not be supported by Unity. Also “Spack” command a few other commands might not work the same or store data in same way for 256 colors.

Amos Kittens was tested whit Amos programs written in AMOS Professional 2.0, and will most likely work best with best the original.

Later I might do a new editor replacing the Editor, with the aim of making editor without the bugs and problems, that is so hard to fix, and modernizing. But I can’t do everything at once, and so its pleasing that the old code is being updated.

Debuging Amos Kittens:

To enable debugging edit debug.h file here you find some switches , you can enable or disable, once the file is changed all files will be rebuilt automatic no need to type "make clean"

Amos kittens might stop at any time.. it is possible that getchar(), command is halting the program. This most likely due to a command your using is not yet fully implemented, and program is being paused, so I can see what is going on.

Current status:

Implemented:

  • Chapter 4. Basic Principle .
  • Chapter 5. String functions.
  • Chapter 6. Graphics.
  • Chapter 7. Control structures.
  • Chapter 8. Maths commands
  • Chapter 10. Screens
  • Chapter 15. Background graphics.
  • Chapter 18. The Keyboard
  • Chapter 20. Disk access.
  • Chapter 21. Screen compaction.
  • Chapter 22. Machine level instructions

Partially (or mostly) implemented:

  • Chapter 8. Text & Windows
  • Chapter 19. Other commands
  • Chapter 11. Hardware sprites
  • Chapter 12. Blitter objects
  • Chapter 13. Object control
  • Chapter 14. Amal
  • Chapter 16. Menus
  • Chapter 17. Sound
  • Chapter 17. music

AmosPro support:

  • Resource banks
  • The Interface Language (mostly done)
  • Devices and Libraries

Note:

Unlike AMOS Pro, Amos Kittens probably have something on the stack after the procedure returns, so you most likely can use it as it was a "function".. but that is just a side effect. (I like to keep this because it the way modern programing languages works.)

Note about machine Code (or Amos lowlevel commands)

Be careful with these commands.

String in Amos kittens are \0 terminated. VarPtr(a#) will return a address to double not a float. Call don't support arguments (yet)

On X86 Linux you might run into endieness issues if your using VarPtr(var), to peek into local or global variable.

Not yet supported:

Some kown commands that was skiped or is currently NOP (no operation)

#26

Orginal Amos Kittens source code can be found here:

https://github.com/khval/AmosKittens

Legal:

What we know is that Amos Pro was published by Europress they had the copyright / trademarks, but the source code was released as BSD style license by clickteam, I believe it was also under MIT license for a while, François Lionet later wonted to change License to LGPLv2/LGPLv3 style license, on Facebook groups, we do not need the source, and we should not use it, for this project.

Today 26.04.2020, the copyright license of Amos Pro changed again back to MIT, so as of today AmosPro has compatible license, and we can use all assets from Amos Pro in Amos Kittens products, provided copyright noticed are included.

https://github.com/khval/AmosKittens/blob/master/Assets-license/AmosPro-license-26_04_2020.PNG

GitHub policy about this stuff very strict, I’m not sure I want include anything I later have to remove, because really hard to purge the git repo of this stuff, if we need to remove it again. Maybe it better solved by git branches.

I do not have any right to orginal trademarks, like the logos, I do not own the “Amos The Creator”, "Amos 3D“, "Easy Amos”, “Amos Professional”, or any of these names, so please do not bundle trademarked graphics / designs with this package. I’m not responsible for breach of trademark. If trademarks are being protected or not is unclear as this point.

Amos Kittens is only legal because the patents if any have expired, they are limited to 20 years. "Amos" is a common name like Stave or Fredrik, so should not be a issue to use.

Amos kittens was started after XAMOS author Stephen Harvey-Brooks (Mequa) of JAMOS/XAMOS passed away in 2015, he was responsible for different AMOS like interpreters. XAMOS was another attempt to revive the AMOS Basic language. As no one was carry the flag at time.

Amos Kittens is a direct decedent of the Amos2Ascii project started in 2017, it also depends on earlier work of retroMode.library started in October 2017.

Assets / resources included:

  • A new redesigned mouse pointer it also contains new patterns, in 256 colors.

  • A new default resource for Amos Kittens.

Redesigned all GUI elements, removed all design elements from Amos Pro, Size of graphics elements cannot be changed, interface language scripts, do not scale, position and widths / heights are defined by pixels, also minimum with of button is 16 pixels.

the default resource for amos kittens does not include any of the interface scripts normally required by Amos Pro. And all text normally in the resource is removed, this should not be needed in Amos Kittens.

(Some of the programs written in Amos Basic Language, can have colors hard coded, and therefor can ignore the colors in the default resource.)

amoskittens's People

Contributors

khval avatar polluks avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

amoskittens's Issues

Bug in GOTO command.

Describe the bug:

Bug in GOTO command.

Some code like this, does not work, gets a syntax error (at line 495, in AED 2.25 amos program.)

procedure FUNC
a=2
If a=2 : GOTO 100 : End If
100
print "it works!!"
End Proc

BUG in "Open In" or "input$" command

Describe the bug:

This is the code that is not working:

Trap Open in 1,"file"
prefs=asc(input$(1,1))
for a=0 to 7
trap line input #1,prefs$(A)
next a
close 1

File is not opend, and I get a error on input$(1,1),
i need to check if input$(1,1) should give a error or not.
Also need to check if file was opened or,
if it failed becouse some other error.

bug in Anim/Amal.

Describe the bug:

Error: Syntax error in animation string at line number 15 in "Stars and Volumes 3.Amos"
(Old intro witten by LiveForIt in 1990's)

Look for bugs.

*Check the right use of “new” and “delete”, and “delete[]”
check code for correct use of exception handling.

Amos Pro gets out of memory error when loading pac.pic made by Amos kittens.

Describe the bug:

Pac.Pic files packed by Amos kittens is not 100% compatible with Pac.Pic made by AmosPro.

To Reproduce:

Steps to reproduce the behavior:

Pack a image using Amos Kittens.
load it in amos pro.
unpack 5 to 2

You get a out of memory error.

Expected behavior

No out of memory error.

Exception to the bug

Unpacking to current screen in Amos Pro works,
(so maybe something to do with screen info header.)

unpack 5

polygon bug

some times polygons are not drawn or they its rendered wrong
(the bug is not in Amos Kittens, but bug exists in retroMode.library, so this just keep track of it, reminder.)

Keeping track of Not Yet Implemented stuff.

Dialog Update
Resource Unpack, Read Text
Every,VSCROLL?

Menu Key
Some work needed to get AMIGA+ALT symbols in the menu.

This commands will not be implemnted, they are for amos programs started by the editor
BGrab, Blength, Bstart, Bsend,

This commands are unlikely to be done, due to not the same internal structure as the real Amos.
Screen Base. Logicbasc, physbase, should have pop up message about incompatible AMOS code... commands not supported. and stop AMOS kittens before starting executing the code.

Amal language, the commands. (90,9%)

Supported registers. (36)
R0,R1,R2,R3,R4,R5,R6,R7,R8,R9,
RA,RB,RC,RD,RE,RF,RG,RH,RI,RJ,
RK,RL,RM,RN,RO,RP,RQ,RR,RS,RT,
RU,RV,RW,RX,RY,RZ

Tottal Amal commands in Amos Pro 33, Amos Commands in Amos Kittens 35

Supported commands: (30)
For,To,Next,If,Let,AUtotest,A(object Image),Move,Pause,XMouse,YMouse,
Joy0,Joy1,Jump,Z(random),XHardware,YHardware,
BobCol,Col,X(axes),Y(axes),XScreen,YScreen,K1,K2,
On,Direct,Wait,eXit, SpriteCol

New commands bonus commands (same as commands for interface language): (+2)
SX(screen width),SY(screen height)

Dummy commands:
Vumeter,

Not working:
PLay,End,

30*100/33=90,9%

Make memory footprint smaller.

The exe file is really big, some attempt should be maded to make it smaller, so Amos Kittens can run on AmigaOS3.x, with limited amount of memory.

There are components of Amos Kittens only used when Amos programs are loaded, these components can be moved into a KittyPreprocessor.Library.

The files in this category is:

Pass1.cpp
include.cpp

Technically endianness swapping can also be done in this library if on little endian CPU.

Linux version doesn't build any more

Importent:

Before posting bug repport, make sure you have the lastest retromode.library installed.
and have the lastest files from github.

Describe the bug:

In many places case sensitivity is not respected by the file system, eg. OS!=os directory, AmosKittens.h != amosKittens.h. Makefile.linux is bitrotted as it doesn't pull in core_includes definitions. sys_free needs to be free not FreeVec under Linux.

To Reproduce:

from BASH prompt:
make -fmakefile.linux

Expected behavior
(it compiles)

Screenshots

N/A

Desktop (please complete the following information):

  • OS: [Manjaro Linux]
  • OS Version [current]
  • CPU: [x86_64]
  • Hardware: [2nd generation i7 with 16 GB of RAM]

Additional context

N/A

Diamond.font size 20 is not displayed correct with command Text.

Describe the bug:

Diamond.font is not displayed correct with command Text.

To Reproduce:
`
Get Disc Fonts

font = 0

repeat

add font,1

trap f$=upper(font$(font))

if errn>0 then F$=""

if mid$(F$,0,len(fontname$)) = fontname$

set font font

exit

end if

until f$=""

`

Problem with A(nim) command in AMAL.

Describe the bug:

Problem with “A" command in AMAL script.
Norway.Amos is part of collection of AMOS programs made by LiveForIt / Kjetil, in the 1990’s

Talk (0% done)

Say, Set Talk, Mount Width, Mouth Height, Mount Read, Talk Stop, Talk Misc,

Need to fix joystick support.

Describe the bug:

Need to fix joystick support.

  • Respect axes and button offsets.
  • Analog axes should work as digital pad.

Mystic bug in polygon command

Describe the bug:

Some kind of problem with “polygon” command in Norway.Amos
its part of collection of AMOS programs made by LiveForIt / Kjetil, in the 1990’s

AmosPro issue, that might exist in Amos Kittens as well.

Is your feature request related to a problem? Please describe.

Baptiste Bideaux Yep, but when I load an ABK file into an other bank (10 for example), when I want to swap bank 1 and 10, not any bob display it. Bank 10 is named "Work" or "Data", not "Sprites"

Describe the solution you'd like

Bobs loaded into bank 10, should work, after swapping to bank 1.

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.