22 July 2002

from: audi s.p.
sent: monday, july 22, 2002 10:16 am
to: arief w. nugraha; arlandi landjono; fajar
subject: re: 2nd reality demo

shit man!!! what a treasure!!! i'm downloading ...

--- "arief w. nugraha" wrote:
> http://www.mpoli.fi/files/demos/fc/
> download-in dunk... ftp disini diblok nih...
> (kangen juga mo liat demonya x)


what's da fuzz, ip? i dont get it... treasure? kok bisa sampe seheboh itu si odx?

itu 2nd-reality, ndi... dont you remember?!.. back on 1993-1994...

prosesor pc state-of-d-art saat itu intel dx2/66mhz, kombinasi software paling umum : dos 6.22 + windows 3.11 + msoffice 4.3.. di office belum ada benda yang namanya outlook, dan akses internet masih cuma milik ipteknet (64kbps dibagi bppt dan sekian departemen pemerintah)... plus beberapa mnc yang berani pasang sprint... sound card de facto : sound blaster.. ram paling tob : 8mb (4mb masih bisa dengan happy running semua benda.. kecuali corel draw.. benda ini memang bjg from the beginning :) ..


good old times... tahun-tahun pertama kuliah, waktu-waktu excited, rela ngoprek.... dan benda paling sering dioprek adalah turbo pascal 5.5.. ngetrace assmbly code 8086 dan 80286... bikin function unit/library.. (hehe... d damn thing is now freely available to download in borland.com.. as a historical relic..)


(* MIDI.PAS - Library untuk memainkan file MIDI
Kebutuhan : 1. Turbo Pascal
2. SoundBlaster Card & COMPATIBLES
3. File driver : CTMIDI.DRV
didapat dari paket SoundBlaster
4. File data midi : *.MID
zeroBIT:L'mirage *)

unit midi;

interface

procedure done_midi;
procedure run_midi(st : string);
procedure off_midi;
function end_midi : boolean;

implementation

uses dos, crt, ckey;

var midiproc : procedure;

function InitDrv : word; assembler;
asm
mov bx, 3
call midiproc
end;

function TerminateDrv : word; assembler;
asm
mov bx, 4
call midiproc
end;

function ResetDrv : word; assembler;
asm
mov bx, 5
call midiproc
end;

function GetDrvVer : word; assembler;
asm
mov bx, 0
call midiproc
end;

function GetMidiEnvSet(s : string) : word; assembler;
asm
mov bx, 1
mov dx, ds
mov ax, word ptr s
call midiproc
end;

function GetBlasterEnvSet(s : string) : word; assembler;
asm
mov bx, 2
mov dx, ds
mov ax, word ptr s
call midiproc
end;

function PrepareMidiStart(s, o : word) : word; assembler;
asm
mov bx, 8
mov dx, s
mov ax, o
call midiproc
end;

function PlayMidi : word; assembler;
asm
mov bx, 9
call midiproc
end;

function StopMidi : word; assembler;
asm
mov bx, 10
call midiproc
end;

function PauseMidi : word; assembler;
asm
mov bx, 11
call midiproc
end;

function ResumeMidi : word; assembler;
asm
mov bx, 12
call midiproc
end;

function SetOutputStatus(p : pointer) : word; assembler;
asm
mov bx, 7
mov dx, ds
mov ax, word ptr p
call midiproc
end;

function InitMidi(pdrv : pointer; var b,m : string) : word;
begin
@MidiProc := pdrv;
GetMidiEnvSet(m);
GetBlasterEnvSet(b);
InitMidi := InitDrv;
end;

function AsciiZ(st : string) : pointer;
begin
st[length(st)+1] := #0;
AsciiZ := ptr(seg(st),ofs(st)+1);
end;

function Tanya(Pertanyaan : string) : string;
var Jawaban : string;
begin
write(Pertanyaan); readln(Jawaban);
Tanya := Jawaban;
end;

var uf : longint;

function BacaFile(NamaFile : string) : pointer;
const BuffBaca = 2048;
var f : file; Awal, pBacaFile : pointer;
UkuranFile, YgTerbaca: word;
begin
BacaFile := NIL;
{$I-}
assign(f,NamaFile);
reset(f,1);
if ioResult <> 0 then exit;

UkuranFile := FileSize(F)+15;
uf := UkuranFile;
GetMem(pBacaFile,BuffBaca);
If Ofs(pBacaFile^) <> 0 then
pBacaFile := Ptr(Seg(pBacaFile^)+1,0);

Awal := pBacaFile;
while not eof(f) do begin
blockread(f,pBacaFile^,BuffBaca,YgTerbaca);
if (YgTerbaca = BuffBaca) and (not eof(f)) then
Begin
inc(word(pBacafile),YgTerbaca);
GetMem(pBacaFile,BuffBaca);
end;
end;
close(f);
if ioResult <> 0 then begin
freemem(pBacaFile,
((UkuranFile DIV BuffBaca)+1)*BuffBaca);
BacaFile := NIL;
exit;
end;
BacaFile := Awal;
{$I+}
end;

const
Selesai : boolean = false;
Berhenti : boolean = false;
var
Tanda,
pMidiFile, pMidiDriver : pointer;
sMidiFile, sMidiDriver,
MidiEnv, BlasterEnv : string;
MidiStatus : word;
Ch : char;

procedure run_midi(st : string);
begin
MidiStatus := 0;
sMidiFile := st;
If sMidiFile[length(sMidiFile)-3] <> '.' then
sMidiFile := sMidiFile + '.MID';

pMidiFile := BacaFile(sMidiFile);
if pMidiFile <> NIL then begin
PrepareMidiStart(seg(pMidiFile^),ofs(pMidiFile^));
SetOutputStatus(@MidiStatus);
PlayMidi;
end;
end;

function end_midi : boolean;
begin
end_midi := MidiStatus = 0;
end;

procedure done_midi;
begin
terminatedrv;
end;

procedure off_midi;
begin
stopmidi;
if pmidiFile <> NIL then Release(pMidifile);
end;

begin

pMidiFile := NIL;

If (GetEnv('MIDI') <> '') then
MidiEnv := GetEnv('MIDI')
else
MidiEnv := 'SYNTH:1 MAP:G';

If (GetEnv('BLASTER') <> '') then
BlasterEnv := GetEnv('BLASTER')
else
BlasterEnv := 'A220 I5 D1 H5 M220 P330';

if (GetEnv('SOUND') <> '') then
sMidiDriver := GetEnv('SOUND') + '\DRV\'
else
sMidiDriver := Tanya('Letak File Driver Midi : ');
if sMidiDriver[length(sMidiDriver)] <> '\' then
sMidiDriver := sMidiDriver + '\';
sMidiDriver := sMidiDriver + 'CTMIDI.DRV';

pMidiDriver := BacaFile(sMidiDriver);
if pMidiDriver = NIL then
begin
writeln('sHIt! Where''s the driver ? ***Stupid Bus!!');
halt;
end
else
if InitMidi(pMidiDriver,BlasterEnv,MidiEnv) <> 0 then halt;
end.


karena waktu itu nggak ada internet, nggak ada information on your fingertips, function library jadi sacred... well kept secrets... waktu itu, a programmer is his library... a programmer is what he can do... at least faham ini valid buat anak-anak teras em-te binus.. source code is a well kept ammo..

sedemikian well kept sampe odx menyesal nggak ngebagi-bagi source code anti virus partisinya (one hell of a code back then, since it was theoritically able to recover any partition-virus attack on harddisks.. and some practices support that assumption)... menyesal waktu unfort da source code was gone bersamaan dengan crashnya hdd si odx.. 470 megabytes kalo gak salah waktu itu ukurannya..

in case you read this post, dek. semoga kesel lo dah bisa ilang.. its been 8 years, dude.. get over it!.. xP


2nd-reality waktu itu jadi satu benda baru yang merepresentasikan advancednya library satu programmer, kalo dia mau... it was unthinkable gimana caranya 486 dx2/66 dengan 4mb, plus soundblaster (standard, man... nggak ada embel-embel live, live gold, pci, etc... it was still using good ol' architecture of pc... isa bus).. unthinkable gimana benda 66mhz itu bisa dibuat rendering transparent polygon di dalam polygon lain, bounching di satu 'lantai virtual'... dengan resolusi vga 256... dengan background musik techno 16 track.. on top of a single task operating system... dos!... damn... thinking of it i cant help to assume that 2nd-reality thing must have had beautifull line codes... equilibrium antara kompleksitas vector programming dengan kecepatan proses kode assembly... no place for over-bloated codes seperti yang terjadi sekarang (req: pentium 2, 128mb ram, 1gb hdd space for running microsoft xp.. only... blah.. ding dong! :)

benda 2nd-reality ini juga yang paling bikin ruangan sunyi saat didemokan di kelas grafik.. one hell of an apps...

http://www.df.lth.se/~el_vez/media/2ndreal1.zip
http://www.df.lth.se/~el_vez/media/2ndreal2.zip

dan sekarang, benda ini dah didownload... siap diliat.. dan shoe.. hehehe... it doesnt run on top of windows....

when i tried to load it using virtual pc running dos 6.22.. still no luck...

so i format a disk using dos 6.22, put d himem.sys to make sure there is enough ems... and when i boot using that disk, i found out that i cant load the damn thing.. cos the apps is on the harddisk, and dos 6.22 has no way to access it... since 6.22 doesnt recognize the hdd.. its on vfat32...

what should i do then?.. format an hdd using 6.22 fat16?... no way!....

arghhh.. i know.. i should've boot up using 6.22 and load ramdrive.sys to create a virtual disk... 5mb should be enough...these capabilities are already on 6.22... copy 2nd-real to that virtual disk, lock and load...

sheeesh... susah banget sih buat loading program yang umurnya dah 9 taun?... :)

i guess this thing is still one hell of an apps...

No comments: