Workbench screen Workbench Window Icons Tools Chip: 408K Fast: 0K Graphics: 104K --:--:--
TradeBot.v1 ▸ Amiga 500 ▸ AmigaOS 2.04 ▸ running
🕹️
AMIGA 500 TRADES BTC
Vrai hardware Commodore 1987. Multi-tâche préemptif Exec, fenêtres Intuition multi, Copper/Blitter/Paula DMA. Capital paper uniquement.
Released April 24, 1987 · US$699 · Bauer & Miner design · sold 6M+ units worldwide
$10,000
Capital paper
P&L
Trades
Win rate
Ticks
I/O lag
Buffer
HardwareInfo — Commodore Amiga 500 specs
CPU
Motorola MC68000 @ 7.09379 MHz PAL
ISA
56 instructions · 16/32-bit · 24-bit addr
Chip RAM
512 KB (expandable to 1 MB via A501)
Fast RAM
0 KB (A500 stock)
Chipset
OCS (Original Chip Set)
Agnus
8372A Fat · DMA + Blitter + Copper
Denise
8362 · 12-bit palette · HAM
Paula
8364 · 4ch audio + disk + serial
Gary
Bus controller · glue logic
Video
320×256 @32c · HAM6 4096c
Audio
4× 8-bit DMA @ 28 kHz stereo
Storage
Chinon CDS-560 880 KB DD floppy
Serial
Paula RS-232 · DMA · 115200 baud max
OS
AmigaOS 2.04 (Kickstart + Workbench 2.04)
Kernel
Exec v37.175 · preemptive multitasking
ChipUsage — how trading uses each chip
PAULA
MOS 8364 R7
Feed modem. RS-232 DMA 1200 baud. CPU jamais bloqué.
SERDATR = $2000 · bytes: 0
COPPER
inside Agnus 8372A
Refresh ticker. Copper list sync faisceau cathodique. Poke à 50 Hz VBL.
COPJMP1 = $DFF088
BLITTER
inside Agnus 8372A
Shift buffer. Buffer MA-20 shifté d'1 mot gauche en ~50 cycles, CPU libre.
BLTSIZE = $00140001
68000 CPU
Motorola @ 7.09 MHz
Kernel stratégie. Sommes MA via ADD+DBRA. Libre 99.97% du temps.
cycles/tick: 0 · 0.00 ms
Exec TaskList — preemptive multitasking (1985!)

Snapshot temps réel des tasks Exec concurrents. L'Amiga avait ça en 1985 — Mac OS n'a eu le multi-tâche préemptif qu'en 2001 (OS X).

NamePRIState
input.device25WAIT
timer.device20WAIT
trackdisk.device20WAIT
serial.device5WAIT
TradeBot0RUN
Workbench0READY
Shell0WAIT
RexxMast0WAIT
console.device0WAIT
ixemul.library0WAIT

TradeBot tourne en priorité 0 à côté de l'OS — il ne bloque ni la musique, ni l'accès disque, ni le redraw fenêtres.

ARexx Port: TRADEBOT

Scripting ARexx inter-apps (1987). AppleScript n'existait pas avant 1993.

> ADDRESS 'TRADEBOT' STATUS
CAPITAL=10000 POS=NONE MA5=75420 MA20=75382
> SET MASHORT 5
OK SHORT=5
> GET LAG
LAG=0.110s
> IF MA5 > MA20 THEN 'BUY'
COND=FALSE
> EXPORT LOG TO 'DH0:trades.txt'
42 lines written
/* any other app can send commands to this port */
ExecBase — open libraries

Libraries ouvertes via OpenLibrary(). POO par jump-table (1985).

exec.library v37.175
graphics.library v37.35
intuition.library v37.245
dos.library v37.63
gadtools.library v37.6
utility.library v37.3
asl.library v37.40
workbench.library v37.12
rexxsyslib.library v37.20
serial.device v37.1
timer.device v37.4
tradebot.library v1.0
CopperDisassembler — $DFF080 program · VBL synced
$DFF080: MOVE.W #$0000,COLOR00 ; bg black
$DFF084: MOVE.W #$0F80,COLOR01 ; fg orange
$DFF088: WAIT V=$10,H=$00 ; wait line 16
$DFF08C: MOVE.W $7C61,DDFSTRT ; price hi byte
$DFF090: MOVE.W #$0180,BPLCON0 ; 1 bitplane
$DFF094: WAIT V=$F1,H=$00 ; wait VBL
$DFF098: MOVE.W #$0000,INTREQ ; clear VBL intr
$DFF09C: MOVE.W #$C020,INTENA ; enable VBL
$DFF0A0: MOVE.L #$DFF080,COP1LC ; loop
$DFF0A4: MOVE.W #$8080,COPJMP1 ; restart
Blitter — MA-20 buffer shift
BLTAPT (src):
$7FF02
BLTDPT (dst):
$7FF00
BLTSIZE:
$00140001
BLTCON0:
$09F0
BLTCON1:
$0000
Cycles:
~50
buf @$7FF00:
[────────] 20 words
↓ shift left 1 word
[───────X] X = new price
Paula Serial · 1200 baud
> AT
OK
> ATDT 555-TRADE
CONNECT 1200
RX...
DevPac 3 — Source68k · MA20.s · 68000 assembly (authentic 1987 style)
* MA-20 crossover trading kernel · MC68000 · AmigaOS 2.04 * Price buffer at Chip RAM $7FF00, 20 words * Compiled with DevPac Assembler 3 (HiSoft) ComputeMA: MOVEA.L #$7FF00,A0 ; buffer base (Chip RAM) MOVE.W D0,$26(A0) ; append new price * trigger Blitter: shift buffer left 1 word MOVE.L #$7FF02,$DFF050 ; BLTAPT (src) MOVE.L #$7FF00,$DFF054 ; BLTDPT (dst) MOVE.W #$09F0,$DFF040 ; BLTCON0 minterm MOVE.W #$140001,$DFF058 ; BLTSIZE 20w × 1 WaitBlit: BTST.B #6,$DFF002 ; DMACON BBUSY BNE.B WaitBlit * CPU: sum last 20 prices → D1 CLR.L D1 MOVE.W #19,D2 ; loop cnt (0..19) SumLoop: ADD.W (A0)+,D1 ; D1 += price; A0++ DBRA D2,SumLoop DIVU #20,D1 ; MA-20 = sum/20 * MA-5: last 5 prices → D3 MOVEA.L #$7FF1C,A0 CLR.L D3 MOVEQ #4,D2 Sum5: ADD.W (A0)+,D3 DBRA D2,Sum5 DIVU #5,D3 * crossover + signal Intuition window CMP.W D1,D3 BHI.B Bullish BLS.B Bearish Bullish: JSR OpenLong MOVE.L _RexxSysBase,A6 ; send ARexx event JSR _LVOCreateRexxMsg(A6) RTS Bearish: JSR CheckTrailStop RTS
TradeLog — recent decisions · newest first
TimeActionPriceMA-5MA-20LagCycles
Pourquoi AmigaOS était 15 ans en avance
Exec (1985) avait le multi-tâche préemptif avec priorités. Mac OS ne l'a eu qu'en OS X 2001. Les libraries AmigaOS exposaient leurs APIs via jump tables — vraie POO des années avant que C++ ne devienne mainstream. ARexx (1987) donnait à chaque app un port scriptable — AppleScript est arrivé 6 ans plus tard. Sur cette page, TradeBot tourne comme un des ~10 tasks Exec concurrents. Le CPU passe ~350 µs par tick sur la stratégie et est idle les 99.97% restants — prêt pour I/O disque, lecture musique, commandes Shell, ou effets Copper d'une démo. Voilà pourquoi les démos Amiga faisaient l'impossible : les chips custom portaient la charge pendant que l'OS restait réactif.
← Vintage Arena · ⚔️ Bot Arena · JSON API