Commit b80e0f40 authored by ASCP's avatar ASCP 💬
Browse files

Initial Commit

parents
build/
.gradle
*.swo
*.swp
*.*~
CC0 1.0 Universal (CC0 1.0) Public Domain Dedication
Full text: https://creativecommons.org/publicdomain/zero/1.0/
No Copyright
The person who associated a work with this deed has dedicated the work to the public domain by waiving all of his or her rights to the work worldwide under copyright law, including all related and neighboring rights, to the extent allowed by law.
You can copy, modify, distribute and perform the work, even for commercial purposes, all without asking permission. See Other Information below.
Other Information
* In no way are the patent or trademark rights of any person affected by CC0, nor are the rights that other persons may have in the work or in how the work is used, such as publicity or privacy rights.
* Unless expressly stated otherwise, the person who associated a work with this deed makes no warranties about the work, and disclaims liability for all uses of the work, to the fullest extent permitted by applicable law.
* When using or citing the work, you should not imply endorsement by the author or the affirmer.
= AMOS classic documentation
This archive contains many of the user manuals from the original AMOS-packages.
*Author:* Stephen Hill, Mel Croucher, Anthony Wilkes, Richard Lewis
*Publisher:* Mandarin/Europress, Shadow Software
Released under *Creative Commons* 2018.
== Description
This archive contains various manuals from the original AMOS releases and friends
* AMOS The Creator
* AMOS Compiler
* AMOS 3D
* AMOS 3D QuickCard
* AMOS Pro
* AMOS Pro Compiler
* AMOS Pro Application Supplement
* EASY AMOS
* AMOS Tome
* AMOS Club Newsletters
== Read the documentation:
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/amos-3d-quickcard-1991.pdf[AMOS 3D Quickcard - Scanned pdf]
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/amos-3d-user-guide-1991-wilkes-lewis.pdf[AMOS 3D User Guide - Scanned pdf]
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/amos-compiler-user-guide-1991-hill.pdf[AMOS Compiler User Guide - Scanned pdf]
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/amos-pro-application-supplement.pdf[AMOS Pro Application Supplement - Scanned pdf]
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/amos-pro-compiler-user-guide-1993-hill.pdf[AMOS Pro Compiler User Guide - Scanned pdf]
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/amos-pro-user-guide-1992-croucher.pdf[AMOS Pro User Guide - Scanned pdf]
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/amos-the-creator-user-guide-1990-hill.pdf[AMOS The Creator User Guide - Scanned pdf]
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/easy-amos-user-guide-1992-croucher.pdf[Easy AMOS User Guide - Scanned pdf]
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/amos-tome-seriesiv-1991-fothergill.pdf[AMOS Tome Series IV - Scanned pdf]
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/amos-pro-v2.0-interface-summary-revision3.pdf[AMOS Pro v2.0 Interface Summary Rev 3 - Scanned pdf]
AMOS Club Newsletters
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/amos-club-newsletters/amos-club-newsletter-1x00.pdf[AMOS Pro v2.0 Interface Summary Rev 3 - Scanned pdf]
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/amos-club-newsletters/amos-club-newsletter-1x01.pdf[AMOS Pro v2.0 Interface Summary Rev 3 - Scanned pdf]
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/amos-club-newsletters/amos-club-newsletter-1x02.pdf[AMOS Pro v2.0 Interface Summary Rev 3 - Scanned pdf]
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/amos-club-newsletters/amos-club-newsletter-1x03.pdf[AMOS Pro v2.0 Interface Summary Rev 3 - Scanned pdf]
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/amos-club-newsletters/amos-club-newsletter-1x04.pdf[AMOS Pro v2.0 Interface Summary Rev 3 - Scanned pdf]
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/amos-club-newsletters/amos-club-newsletter-1x05-1x06.pdf[AMOS Pro v2.0 Interface Summary Rev 3 - Scanned pdf]
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/amos-club-newsletters/amos-club-newsletter-2x01.pdf[AMOS Pro v2.0 Interface Summary Rev 3 - Scanned pdf]
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/amos-club-newsletters/amos-club-newsletter-2x02.pdf[AMOS Pro v2.0 Interface Summary Rev 3 - Scanned pdf]
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/amos-club-newsletters/amos-club-newsletter-2x03.pdf[AMOS Pro v2.0 Interface Summary Rev 3 - Scanned pdf]
* https://gitlab.com/amigasourcecodepreservation/amos-classic-documentation/blob/master/pdf/amos-club-newsletters/amos-club-newsletter-2x04.pdf[AMOS Pro v2.0 Interface Summary Rev 3 - Scanned pdf]
== How To Generate the Manuals
In the future we would like to convert the book to the better-than-markdown https://asciidoctor.org/[AsciiDoc] format, so that it could be converted to many formats, while still being readable on a classic computer.
== Contributing
If you'd like to help out, here is a suggested to-do:
* Convert the original scans to AsciiDoc.
* Add bookmarks and metadata to the scanned pdf's if missing.
* Any other interesting items regarding the scans? Commercial, Reviews, Articles? An optimized pdf?
== License
If nothing else is mentioned, amos-classic-documentation is distributed under the terms of the Creative Commons CC0 1.0 Universal License (CC0 1.0). To view a copy of this license, visit https://creativecommons.org/publicdomain/zero/1.0/
== Thanks to
* François Lionet for allowing the original docummentation to be freely available, (and for having checked with Richard Vanner and Meash Meaking that it was fine)
* Stephen Hill for being generous with his written AMOS-documentation
* Mel Croucher for being generous with his written AMOS-documentation
* Aaron Fothergill for being generous with AMOS Tome and the AMOS Club Newsletters
=== Scans
* echo for the Easy AMOS scans
* prowler for the AMOS 3D scans
* MadAngus and asymetix of the https://www.ultimateamiga.co.uk/index.php/board,300.0.htm[lAMOS Factory Community] for many of the scans
* MadAngus for initiating the Great Amiga Author Book Hunt which gave this project many hints on where to find authors
* Thanks to Tomse at http://www.retro-commodore.eu/ for the scans of archival
== Authors
* AMOS 3D User Guide - Anthony Wilkes, Richard Lewis, 1991
* AMOS Compiler User Guide - Stephen Hill, 1991
* AMOS Pro Compiler User Guide - Stephen Hill, 1993
* AMOS Pro User Guide - Mel Croucher, Stephen Hill, 1992
* AMOS The Creator User Guide - Stephen Hill, 1990
* Easy AMOS User Guide - Mel Croucher, 1992
* AMOS Tome and AMOS Club Newsletters - Aarong Fothergill
THE AMOS SHUFFLE EXTENSION
This is one for the machine coders amongst you (For non coders, either get a coding friend to assemble it for you or the Shuffle extension is on the TOME Goodies Disk 1, ready to go). This version is for AMOS 1.3 and above, using the new extension system. If you have an earlier version of AMOS, upgrade now, as you'll be missing out!
The Shuffle extension contains 3 commands to make life a little easier, it is assembled as AMOS extension number 9 (Which is now reserved for it, and future experimental extensions). The 3 commands are:
= Range ( a , b to c ) : Returns value a if it is between b & c, if it is lower than b, it returns b, and if it is higher than c, it returns c. Effectively the same as . Max ( b , Min(c , a ))
Snuffle bank , n , seed : Shuffles the numbers 1-n, into reserved bank, using seed as a random seed. Useful for card games, bingo games and appears, as it can shuffle 10.000 numbers in as little as 4 frames (4/50ths of a second) !
= RAND ( bank , n ) : returns the nth number from a list of previously shuffled numbers. RAND ( bank, n ) can also be used to retrieve numbers directly from any bank, as it does the same as = Deek ( Start ( bank) + n * 2 ).
To use shuffle, you must first enter the program in your assembler (listed here for Devpac 2), the @ symbol is used here to represent pressing the TAB key. Once you have assembled it (it should assemble as position independent), copy the resulting file (call it RANGE.Lib) into the AMOS System directory, boot up AMOS, and load in the config1_3.amos program. Load in the default Configuration, and go to the LOADED EXTENSIONS page. Then change the line for extension 9 to read
: AMOS_System / RANGE. Lib
Save the configuration, Wait for the disk to stop working, and then re-boot AMOS. You should now have the AMOS Club Shuffle extension installed.
To use the Shuffle command, you must do the following:
1) Reserve a bank (Work) to the number of numbers you want to shuffle, times 4
e.g.
N = 52 : rem pack of cards Reserve as work 5 . N * 4
2) Use the Shuffle b,n,s command
e.g.
Shuffle 5 , N , Timer
If you use the same number as a seed, then the routine will return the numbers in exactly the same order, so it is a good idea to use Timer, or some other variable amount as the seed.
3) This will fill bank 5 with the numbers from 1 – N, shuffled into a random order, with no repeats. You can now use the. RAND ( bank, n ) function to pull them out in any order:
e.g.
For A = 1 To N
Print Rand ( 5 , A )
Next A
This will print out all the numbers in the order they were shuffled.
The listing contains comments on how the extension is written, so that you machine coders can use it to write your own extensions. Extension 9 is now reserved as an experimental extension, so that you can use it, as long as you don't expect it to be the same on a different machine. This is so that there is always an extension number available to tryout different extensions before they are made ready for release.
; AMOS Club Extension
; Extension number 9 for AMOS
; By Aaron Fothergill
; Thanks to François for the notes
; on extensions.
; includes the =RANGE(a,b to c) function
; And the SHUFFLE bank,n,seed command
; as well as the =RAND(bank,x) function
ExtNb equ 9-1 ; extension number - 1
;
include “_Equ.s”
RsSet DataLong
include “_Pointe.s"”
include “_WEqu.s"”
include “_CEqu.s"”
include “_LEqu.s"”
;
; First we have a series of
; lengths of the routines and tables
;
Start
dc.I X- Tk-X_Off ; length of offsets
dc.I X_Llb-X- Tk ; length of tokens
dc.I X- Tltle-X_Llb ; length of libraries
dc.I X_End-X- Title ; length of Title string
dc.w 0
*******************************************************
; OFFSETS TO FUNCTIONS X_Off
dc.w ( L1 - L0 ) / 2 , ( L2 - L1 ) / 2 , ( L3 - L2 ) / 2 , ( L4 - L3) / 2
dc.w ( L5 - L4 ) / 2 , ( L6 - L5 ) / 2 , ( L7 - L6 ) / 2 , ( L8 - L7 ) / 2
; always have a few spare in case you want to add to your extension
; Token table
X_Tk dc.w 1, 0
dc.b $80, -1
; always include the above 2 lines
dc.w -1 , L_Range
; The above two words are offsets to the library for the first
; command. The first offset is to the COMMAND version, the second
; to the FUNCTION. If one isn't required, then you use a -1. In the
; Range function, there is no COMMAND version, so the -1 is placed as
; The first word.
dc.b “rang” , “e” + $80 , “00 , 0 t 0” , - 1
; The first string contains the command/Function name
; The last letter of which has the hi bit set (thus the “e” +$80)
; The second string determines the parameters.
; For the Parameter strings, the first Character determines the type
; I = an instruction (no return parameter)
; 0= an integer is to be returned
; 1= a floating point number is to be returned
; 2= a string is to be returned
; V= it is a reserved variable
; Then the rest of the numbers tell AMOS what parameters are
; needed by the command/function.
; These can be separated by commas, or a t (for TO) and can be
; either 0,1 or 2 for the 3 variable types.
; in this case (a,b to c) returning an integer (The 0 at the start)
dc.w -1 , L_Shuffle
dc.b “shuffl” , “e” + $80 , “ I, 0 , 0, 0 ” , - 1
dc.w - 1 , L_Rand .
dc.b “ran” , “d” + $80 , “0 , 0 , 0” , - 1
dc.w 0
; always end the token list with a 0
;******************************************************
; Start of library
X_Lib:
;******************************************************
;
; COLD START
; The first library routine is used to set up any parameters needed
; by the extension. In this case, we just need to tell AMOS the
; extension number (by passing it in Dreg 0)
L0
moveq #ExtNb , d0
rts
;******************************************************
;
L1
; A couple of spare routines always comes in handy .
;
;******************************************************
;
L2
;
L3
; =RANGE(a,b TO c)
; return result of a forced into range of b to c
; shorter version of -MAX(b,MIN(c,a))
L_Range equ 3
move.l (a3) + , d2 ; get the last parameter
;The above pulled an integer from the stack. (as required)
move.l (a3) + , d1
move.l (a3) + , d0
; note that they are pulled in reverse order
cmp.l d2 , d0 ; is a>c ?
bgt BIGGER ; if so then force a=c
B1: cmp.l d1 , d0 ; is a<b ?
blt SMALLER ; if so then force a=b
; when you have to return a parameter from a function,
; Set D2 to the type (0,1 or 2) and D3 to the value (or
; the address in the case of a string)
B2: move.l d0 , d3
move.l #0 , d2
rts
BIGGER:
move.l d2 , d0
bra B1
SMALLER:
move.l d1 , d0
bra B2
L4
; Shuffle bank,number,seed
L_Shuffle equ 4
move.l (a3) + , d0 ; random seed
move.l (a3) + , d1 ; Number of numbers
move.l (a3) + , d2 ; bank number
Rbsr L_Getbank ; turn bank number into address
; Note the use of Rbsr, this is a macro
; (in the included equates files)
; used for Jumping between libraries instead of bsr. François has done
; R macros for all the normal jumps.
move.l #0 , d3 ; counter A
move.l #1 , d4 ; counter B
IL:
move.w d4 , ( a2 , d3.l )
addq.l #2 , d3
addq.l #1 , d4
cmp.l d1 , d4
ble IL
move.l d1 , d3 ; d3 = numbers remaining
move.l d1 , d4 ; pointer to second part of bank
asl.l d4 ; x2 so it points to the second half
move.l d1 , d5 ; A (Counter down to 0)
subq.l #1 , d5
move.l d0 , d2 ; Pointer. Starts off as seed
SL:
M1B: cmp.l d3 , d2 ; check that P<L
bge MOD1
move.l d2 , d3 ; d3=pointer x2
asl d6
move.w 0 ( a2 , d6.l ) , d7 ; get number
move.w d7 , 0 ( a2 , d4 ) ; put it in second list
addq.l #2 , d4
move.l d3 , d7
subq.l #1 , d7
asl.l d7 ; Last number
move.w 0 ( a2 , d7.l ) , a0
move.w a0 , 0 ( a2 , d6.l ) ; swap it with number taken
subl.l #1 , d3 ; L=L-1
add.l d0 , d2 ; P=P+seed
add.l d2 , d0 ; seed=seed+p
and.l d3 , d0 ; seed=seed and L
subl.l #1 , d5
cmpl.l #1 , d5
bne SL
move.w 2 ( a2 ) , d7
move.w d7 , 0 ( a2 , d4 )
addq.l #2 , d4
move.w 0 ( a2 ) , d7
move.w d7 , 0 ( a2 , d4 )
; Move block to start of bank
clr.l d0
move.l d1 , d2
asl.l d2
move.l d2 , d3
EL: move.w 0 ( a2 , d2 ) , d4
move.w d4 , 0 ( a2 , d0 )
addq.l #2 , d0
addq.l #2 , d2
cmp.l d3 , d0
bne EL
rts
MOD1: sub.l d3 , d2
bra M1B
;
L5
L_Rand equ 5
; =RAND(bank,n)
; Pulls a number from a shuffled stack
;
move.l ( a3 ) + , d0 ;n
move.l (a3) + , d2 ; bank number
Rbsr L_Getbank
asl.l d0 ; x2
clr.l d3 ; value is returned in D3
move.w 0 ( a2 , d0 ) , d3
clr.l d2 ; D2 is set to 0, to show
; that it is integer
rts
L6
;
L7
; Bank number in d2, returns bank address in a2
L_Getbank equ 7
move.l ABanks( a5 ) , a0
tst.l d2 ; check bank number
beq AdBE1 ; too low(0)
cmpl.l #16 , d2 ; too high?
bge AdBE1
subq.l #1 , d2
asl.l #3 , d2 ; multiply by 8
move.I 0 ( a0 , d2 ) , d3 ; Get bank address
tst.l d3
beq.s AdBE1 ; if zero, bank not reserved
move.l d3 , a2
addq.l #8 , a2
rts
AdBE1 moveq #36 , d0
Rjmp L_Error
;
L8
; Welcome message
X_Title
dc.b 31, “Shuffle Extension” , 0
even
;******************************************************
X_End dc.w 0
; end the extension with a 0
\ No newline at end of file
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment