Action!

Poznáte to, dostanete nevinnú otázku z ktorej sa nakoniec vykľuje zaujímavý problém.

„Koľko máš vlastne v tom Action! voľnej pamäte?“

V Basicu sa dá veľkosť voľnej pamäte zistiť cez pamäťové adresy MEMTOP.

? (PEEK(742)*256-PEEK(741))-(PEEK(145)*256-PEEK(144))

Druhá možnosť je príkazom ? FRE(0). V Action! neexistuje podobný príkaz na zobrazenie voľnej pamäte, takže je nutné prispôsobiť ten prvý spôsob. Adresa 741/742 ukazuje korektné údaje, no 141/142 nie. Pri kompilácii je však prvé pole CARD hodnôt umiestnené tak, že obsahuje presne tú hodnotu ktorú potrebujeme.

PROC MAIN()
  CARD t=741, f=[0]
  CARD ARRAY e(1)
  f=t-e
  PRINTF("%U",f)
RETURN

Tak sa na to pozrime:

Jazyk Voľná pamäť [B]
Turbo Basic 1.5 34021
Action! 3.6 36214
Atari BASIC rev. C 37902

Celkom dobrý výsledok 😉 Čo však ak potrebujete DOS? Prehrabal som zabudnuté zákutia disku a nazbieral celkom slušnú kôpku rôznych DOSov.

Dva najhoršie výsledky:

DOS Voľná pamäť [B]
K-DOS 25268
SuperDOS 5.1 28840

Ďalšia várka končí tesne pod hranicou 30kB:

DOS Voľná pamäť [B]
MachDos v3.7a 29302
OSS DOS XL 2.30p 29302
BIBO-DOS 7.0 29309
SuperDOS 4.3T 29363
TURBO DOS XE 29691
TURBO DOS 2.5 29814
DOS II+/D 6.4 29814
MyDOS 4.55 29912

Najväčšia várka ktorá síce prekročila 30kB, ale nie o veľa.

DOS Voľná pamäť [B]
SMARTDOS 6.1D 30046
OSS OS/A+ 1.2e 30070
BIBODOS 5.4RN 30077
BW-DOS 1.3 30098
ATARI DOS II 2.5 30298
TOP-DOS 1.5 30326
XDOS 2.4N 30342
OSS DOS II+/D 4.2M 30402
G.O.S. 30442
ATARI DOS XE 1.0 30586
ATARI DOS 4.0 30586
ATARI DOS II 2.75 30730

No a konečne tu máme finále. Starší SpartaDOS 3.2g a nový LiteDos 307.

DOS Voľná pamäť [B]
SpartaDOS 3.2g 31956
LiteDos 307 33910

LiteDos má svoje muchy a mne žiaľ nefungoval korektne 🙁 ostávam teda pri starom SpartaDose.

Action!
SpartaDos 3.2g
Turbo Basic 1.5