Arsip untukOktober 2, 2007

Modul 9- PENGOLAHAN FILE ACAK

MODUL 9
PENGOLAHAN FILE ACAK

Pada file sequential pengolahan datanya bersifat FIFO, tetapi dalam pengolahan data kadang-kadang diperlukan proses pengolahan yang sifatnya acak sehingga pengolahannya dapat dilakukan dengan cepat dan sederhana.

File sequential banyak digunakan pada ekspor/impor data antar sistem dimana format pada sistem yang satu tidak dikenali oleh sistem lain, sehingga data dari suatu sistem perlu diekspor dalam bentuk teks, kemudian diimpor kembali oleh sistem lain. Pada pengolahan seperti ini tentu saja proses pengolahannya bersifat FIFO.

Pengolahan data yang membutuhkan pencarian, pengurutan dan perbaikan data tentu saja sulit menggunakan proses pengolahan FIFO, karena akan menggunakan sumber daya yang besar dan menjadi rumit. Pada pengolahan data seperti ini sangat dibutuhkan proses pemasukan maupun pengambilannya berdasarkan alamat data tersebut.

Agar data dapat diambil dengan cepat, tentu saja dalam penyimpannannya membutuhkan keteraturan, yaitu setiap data memiliki ukuran yang sama, sehingga alamat data dapat didapatkan dengan cepat.

FILE ACAK

File acak didalam pengolahannya data ditempatkan dalam bentuk record yang memiliki panjang yang tertentu. Dengan sistem pengolahan yang demikian suatu record data dapat langsung dibaca ataupun ditulis tanpa harus memproses record sebelumnya. Dalam hal ini type data record akan berperan.

Contoh :

TYPE SISWA
NOINDUK AS STRING * 10
NAMA AS STRING * 15
TEORI AS SINGLE
PRAKTEK AS SINGLE
RATA AS SINGLE
END TYPE
Dim DAT As SISWA

Perintah pengolahan file ACAK

1. Perintah membuka file ACAK

Sebelum suatu file randon dapat digunakan harus dibuka, jika file tersebut belum ada, maka akan dibuat yang baru. Adapun perintah membuka file ACAK adalah sebagai berikut :

OPEN namafile FOR RANDOM AS [#]filenum [LEN=reclen]

Contoh :

OPEN “SISWA.REC” FOR RANDOM AS #1 LEN = LEN(DAT)

Membuka file “siswa.rec” untuk diolah secara acak sebagai file nomor 1 dan ukuran tiap record adalah sama dengan ukuran variabel DAT.

2. Mendapatkan jumlah record pada file ACAK yang telah terbuka.
JlhRec = LOF(1)/LEN(DAT)

Jumlah record dalam file ACAK adalah ukuran keseluruhan file ACAK dibagi dengan ukuran tiap record.

3. Perintah input/output pada file ACAK Perintah menulis data PUT [#]filenum[,nomorrecord][,variable]

Contoh :

DAT.NOINDUK = “920403024″
DAT.NAMA = “Hendra”
DAT.TEORI = 70
DAT.PRAKTEK = 80
DAT.RATA = (DAT.TEORI+DAT.PRAKTEK)/2

PUT #1,JlhRec+1,DAT

Menyimpan data dari variabel DAT ke file ACAK nomor 1, sebagai
record baru pada akhir file (JlhRec+1).

Perintah membaca data

GET [#]filenum[,nomorrecord][,variabel]

Contoh :

GET #1,1,DAT

Membaca data record nomor 1 dari file ACAK nomor 1 ke variabel
DAT.

4. Perintah menutup file ACAK
Setelah selesai digunakan, file ACAK perlu ditutup untuk memastikan semua data ditulis ke media penyimpanan, dan memberikan indikator EOF.

Contoh :

CLOSE #1

Menutup file acak nomor 1.

Contoh sederhana program pengolahan data dengan file ACAK.

‘PROGRAM MENGISI DATA KE FILE SISWA.REC
TYPE SISWA
NOINDUK AS STRING * 10
NAMA AS STRING * 15
TEORI AS SINGLE
PRAKTEK AS SINGLE
RATA AS SINGLE
END TYPE
DIM DAT AS SISWA
DIM NOINDUK AS STRING
OPEN “SISWA.REC” FOR RANDOM AS #1 LEN = LEN(DAT)
RECNO = LOF(1)/LEN(DAT)
DO
PRINT “DATA SISWA KE -”;I
INPUT “NO.INDUK :”,NOINDUK
IF NOINDUK “” THEN
DAT.NOINDUK = NOINDUK
INPUT “NAMA :”,DAT.NAMA
INPUT “TEORI :”,DAT.TEORI
INPUT “PRAKTEK :”,DAT.PRAKTEK
DAT.RATA = (DAT.TEORI+DAT.PRAKTEK)/2
PUT #1,RECNO+1,DAT
RECNO = RECNO + 1
ENDIF
LOOP UNTIL NOINDUK = “”
CLOSE #1
END

‘PROGRAM MENGURUT DATA DI FILE SISWA.REC
TYPE SISWA
NOINDUK AS STRING * 10
NAMA AS STRING * 15
TEORI AS SINGLE
PRAKTEK AS SINGLE
RATA AS SINGLE
END TYPE
DIM DAT1 AS SISWA
DIM DAT2 AS SISWA
OPEN “SISWA.REC” FOR RANDOM AS #1 LEN = LEN(DAT)
JD = LOF(1)/LEN(DAT)
FOR I = (JD-1) TO 1 STEP -1
Sempurna = 1
FOR J = 1 TO I STEP 1
GET #1,J,DAT1
GET #1,J+1,DAT2
IF DAT1.NAMA > DAT2.NAMA THEN
PUT #1,J,DAT2
PUT #1,J+1,DAT1
Sempurna = 0
ENDIF
NEXT J
If Sempurna = 1 Then
I = 0
End IF
NEXT I
CLOSE #1
END

‘PROGRAM BACA DATA DARI SISWA.REC DAN MENCETAK KE LAYAR
CLS
TYPE SISWA
NOINDUK AS STRING * 10
NAMA AS STRING * 15
TEORI AS SINGLE
PRAKTEK AS SINGLE
RATA AS SINGLE
END TYPE
DIM DAT AS SISWA
OPEN “SISWA.REC” FOR RANDOM AS #1 LEN = LEN(DAT)
JD = LOF(1)/LEN(DAT)
PRINT ——————————————————————-”
PRINT “NO.INDUK NAMA TEORI PRAKTEK RATA-RATA ULUS “
PRINT “——————————————————————-”
POLA$=”\ \ \ \ ###.## ###.## ###.## \ \ “
VIEW PRINT 4 TO 23
FOR I = 1 TO JD STEP 1
GET #1,I,DAT
IF DAT.RATA 48 jam diberikan Bonus = (jam kerja – 48) * 5000/jam
- jika jam kerja < 48 jan dikenakan Potongan = (48 – jam kerja) * 1000/jam
- Total Gaji = Gaji Pokok + Bonus – Potongan
Output yang diharapkan :

P.T. JAYA WIJAYA
JL. Kemerdekaan Barat No. 12
============================

LAPORAN GAJI PEGAWAI
========================================================
Nama Gol Jam Gaji Bonus Potongan Total
Pegawai Kerja Pokok (Rp) (Rp) (Rp)
——————————————————–
Suryajaya C 50 350,000 10,000 – 360,000
Sutiman B 48 200,000 – - 200,000
========================================================
Total : 560,000
========================================================

Modul 10- PENGOLAHAN FILE BINARY

Modul 10
  PENGOLAHAN FILE BINARY

Selain pengolahan data Sequential dan Random, QBasic juga menyediakan pengolahan yang bersifat Binary. Pada pengolahan yang bersifat Binary, file dapat dibaca/ditulis secara per-Byte pada posisi yang diinginkan, sehingga tidak terikat kepada urutan maupun struktur data.
  Pengolahan yang bersifat Binary banyak digunakan untuk keperluan- keperluan khusus yang membutuhkan akses langsung ke satuan data di tingkat Byte. Misalnya membuat program Enkripsi dan Dekripsi file, pada proses Enkripsi, isi suatu file disandikan byte-per- byte sehingga tidak dapat dikenali lagi secara normal oleh sistem yang membuatnya. Agar isi file tersebut dapat dikenali kembali, maka diperlukan proses Dekripsi yang mengembalikannya ke keadaan semula.
  Pengolahan yang bersifat Binary juga banyak digunakan pada pembuatan program AntiVirus, Crack, Game Cheat yang membutuhkan akses ke byte level.

1. Perintah membuka file Binary

Seperti pada pengolahan file umumnya, sebelum digunakan file binary harus dibuka dengan perintah sebagai berikut :

OPEN namafile FOR BINARY AS [#]filenum

Contoh :

OPEN “Sandi.bin” FOR BINARY AS #1

Membuka file “Sandi.bin” untuk diolah secara binary sebagai file
  nomor 1.

2. Mendapatkan jumlah byte pada file binary yang telah terbuka.

JlhByte = LOF(1)

Fungsi LOF (Length Of File) akan mengembalikan ukuran file binary
  dalam ukuran byte.

Catatan : 1 KB = 1024 Byte, 1 MB = 1024*1024

3. Perintah input/output pada file Binary

Perintah menulis data

PUT [#]filenum[,posisi][,variable]

Contoh :

MyData = 10
  PUT #1, 101, MyData

Menulis karakter ASCII 10 (line feed) pada posisi byte ke 101
  dalam file nomor 1.

Contoh Lain :

Dim MyChar As String*1
  MyChar = Chr$(10)
  Put #1, 101, MyChar

Perintah membaca data

GET [#]filenum[,posisi][,variabel]

Contoh :

Dim MyChar As String*1
  GET #1, 101, MyChar

Membaca data byte posisi ke dari file nomor 1 ke variabel
  MyChar.

4. Perintah menutup file Binary

Setelah selesai digunakan, file Binary perlu ditutup untuk memastikan semua data ditulis ke media penyimpanan, dan memberikan indikator EOF.

Nb. Untuk mempercepat proses I/O, sistem operasi menyediakan memory buffer sebagai tempat pembacaan dan penulisan sementara. Perintah Close untuk memastikan semua data dari buffer benar-benar ditulis ke media penyimpanan.

Contoh :

CLOSE #1

Menutup file binary nomor 1.

Contoh :

‘Program Enkripsi dan Dekripsi dengan kunci NOT

DIM Source AS STRING
  DIM Target AS STRING
  DIM FSize AS LONG
  DIM MyChar AS STRING * 1
  CLS
  PRINT “Program Enkripsi/Dekripsi Data”
  PRINT “Menggunakan operator NOT”
  PRINT “————————”
  INPUT “Masukkan Source :”, Source
  INPUT “Masukkan Target :”, Target

IF Source = Target THEN
  PRINT “Nama file source tidak boleh sama dengan target”
  ELSE
  OPEN Source FOR BINARY AS #1 ‘Buka source sebagai 1
  OPEN Target FOR BINARY AS #2 ‘Buka target sebagai 2

FSize = LOF(1) ‘Mendapatkan ukuran file 1

FOR I = 1 TO FSize
  GET #1, I, MyChar ‘Baca byte posisi ke i
  ‘dari source
  MyChar = CHR$(255 – ASC(MyChar)) ‘Enkripsi dengan NOT

PUT #2, I, MyChar ‘Tulis ke posisi ke i
  ‘Pada Target
  NEXT I
  CLOSE #1
  CLOSE #2
  PRINT
  PRINT “Proses Selesai”
  END IF
  END

‘Program Menghilangkan Password file *.Mdb Microsoft Access 97

Dim nama As String
  Dim huruf As String*1

INPUT “Masukkan nama file :”,nama

IF Dir$(nama) = “” THEN

PRINT “File “;nama;” tidak ada !”

ELSE
  OPEN nama FOR BINARY AS #1

huruf = Chr$(134)
  PUT #1, 66, huruf

CLOSE #1

PRINT “Password “;nama;” telah dihilangkan !”

END IF
 END

Modul 11- PENGOLAHAN FILE KOMUNIKASI

Modul 11 QBASIC
PENGOLAHAN FILE KOMUNIKASI

Pada QBasic tersedia fasilitas untuk melakukan komunikasi data melalui interface RS232 pada Serial Port COM1 dan COM2 yang diperlakukan seperti pengolahan file.

Pada fasilitas perkantoran peralatan seperti PABX dapat dihubungkan dengan PC melalui interface RS232 pada Serial Port COM1 maupun COM2 untuk mendapatkan CMDR log dari pemakaian telepon.

Dengan menggunakan fasilitas pada QBasic, anda dapat membuat program untuk membaca data CMDR dari Serial Port COM1 maupun COM2 untuk disimpan maupun diolah menjadi informasi yang lebih baik, misalnya perhitungan tarif pemakaian telepon tiap individu.

1. Perintah membuka dan menginisialisasi saluran komunikasi Perintah OPEN COM harus dilakukan sebelum peralatan dapat digunakan untuk komunikasi melalui interface RS232.
OPEN “COMn: list1 list2″ FOR RANDOM AS [#]nomor]

dimana :
n adalah nomor port komunikasi yang ingin dibuka
(1 = COM1, 2 = COM2).

list1 adalah parameter komunikasi yang sering digunakan :
[baud] [,[parity] [,[data] [,[stop]]]]

baud adalah baud rate dari peralatan yang dibuka :
75, 110, 150, 300, 600, 1200, 2400, 4800, 9600

parity adalah metode dari pemeriksaan pariti :
N (none) E (even) O (odd)
S (space) M (mark) PE (enable error checking)

data adalah jumlah data bit setiap byte :
5, 6, 7, 8

stop adalah jumlah stop bit :
1, 1.5, 2

Defaultnya: 300 baud, even parity, 7 data bits, 1 stop bit.

list2 adalah parameter komunikasi yang jarang digunakan yang dipisahkan dengan koma.

Option Description

ASC Opens the device in ASCII mode.
BIN Opens the device in binary mode.
CD[m] Sets the timeout period (in milliseconds) on the
Data Carrier Detect (DCD) line.
CS[m] Sets the timeout period (in milliseconds) on the
Clear to Send (CTS) line.
DS[m] Sets the timeout period (in milliseconds) on the
Data Set Ready (DS) line.
LF Sends a line-feed character after a carriage
return.
OP[m] Specifies how long (in milliseconds) OPEN COM
waits for all communications lines to become open.
RB[n] Sets the size (in bytes) of the receive buffer.
RS Suppresses detection of Request to Send (RTS).
TB[n] Sets the size (in bytes) of the transmit buffer.

Contoh :

OPEN “COM1:300,N,8,1,CD0,CS0,DS0,OP0,RS,TB2048,RB2048″ FOR RANDOM AS #1

Akan membuka Serial Port COM1 sebagai file nomor 1, mengenai parameter komunikasi sangat bergantung kepada setting pabrik peralatan tersebut.

Membaca dari peralatan yang terbuka

INPUT$(n,nomor)

dimana
n adalah jumlah karakter yang dibaca. nomor adalah nomor file yang terbuka.

Contoh :

A$ = Input$(1,1)

Dimana akan menbaca 1 huruf dari file nomor 1

Mengirim data ke peralatan yang terbuka

Anda dapat menggunakan perintah print untuk mengirim data ke peralatan yang terbuka.

Print #nomor, ekspresi

Contoh :

Print #1, “A”

Akan mengirim huruf “A” ke file nomor 1

Memeriksa keberadaan data pada Receive Buffer file komunikasi.

Anda dapat menggunakan fungsi LOC(nomorfile) untuk mengetahui apakah input buffer dalam keadaan kosong atau berisi data.

Contoh :

OPEN “COM1:300,N,8,1,CD0,CS0,DS0,OP0,RS,TB2048,RB2048″ FOR RANDOM AS #1

DO

tekan$ = INKEY$
IF tekan$ “” THEN
PRINT #1, tekan$; ‘Kirim apa yang ditekan
END IF
IF LOC(1) 0 THEN ‘Jika ada data pada Recieve Buffer
baca$ = INPUT$(1, 1) ‘Baca satu huruf
PRINT baca$;
END IF

LOOP

CLOSE #1

Program diatas adalah contoh Chatting sederhana melalui kabel
LapLink antara dua komputer yang dihubungkan melalui COM1.

Menutup file

Untuk menutup file, anda dapat menggunakan perintah close.

Close #nomor

Contoh :

Close #1

Contoh program komunikasi RS232 antara Pabx Rolm vscbx dengan PC
melalui COM1, untuk maintenance :

OPEN “COM1:300,E,7,1,CD0,CS0,DS0,OP0,RS,TB2048,RB2048″ FOR RANDOM AS #1

DO

tekan$ = INKEY$

IF tekan$ “” THEN
PRINT #1, tekan$; ‘Kirim apa yang ditekan
END IF

IF LOC(1) 0 THEN ‘Jika ada data pada Recieve Buffer
baca$ = INPUT$(1, 1) ‘Baca satu huruf
PRINT baca$;
END IF

LOOP

CLOSE #1

Contoh program komunikasi RS232 antara Pabx Rolm vscbx dengan PC melalui COM2, untuk CMDR Log :

OPEN “COM2:1200,E,7,1,CD0,CS0,DS0,OP0,RS,TB2048,RB2048″ FOR RANDOM AS #1
OPEN “CMDR.LOG” FOR BINARY AS #2

JlhByte = LOF(2)

DO

tekan$ = INKEY$

IF LOC(1) 0 THEN ‘Jika ada data pada Recieve Buffer
baca$ = INPUT$(1, 1) ‘Baca satu huruf
JlhByte = JlhByte + 1
PUT #2, JlhByte, Baca$
PRINT baca$;
END IF

LOOP UNTIL tekan$ “”

CLOSE #1

CLOSE #2

Modul 12 – Penanganan Error

MODUL 12 QBASIC

PENANGANAN ERROR

Sebagai manusia normal tidak akan terlepas dari berbagai kesilapan, demikian juga seorang programmer dalam pengembangan program dapat saja berbuat berbagai kesalahan maupun kesilapan.

Berdasarkan jenisnya kesalahan dalam pemrograman terbagi menjadi tiga yaitu :
1. Syntax Error, adalah kesalahan yang disebabkan oleh kesalahan tata cara penulisan tanda baca, kesalahan pemakaian operator dan nilai. Kesalahan jenis ini akan dengan mudah dideteksi oleh kompiler maupun interpreter.

2. Logical Error, adalah kesalahan yang disebabkan oleh kesalahan logika maupun model atau metode yang digunakan untuk pemrosesan data, sehingga menyebabkan informasi yang dihasilkan menjadi
salah. Kesalahan ini tidak dapat dideteksi oleh kompiler maupun interpreter, kesalahan ini disadari setelah melihat penyimpanan pada saat proses maupun hasil proses.

Contoh :

N = 1
Do
Print N
N = N + 2
Loop Until N = 10

Program diatas tidak pernah berhenti, karena nilai N tidak pernah
sama dengan 10.

Kesalahan Logika dapat juga terjadi karena kesalahan pengetikan nama variabel, dan ini merupakan salah satu kelemahan bahasa pemrograman Basic, jika dibandingan dengan Pascal maupun C Language dimana variabel harus dideklarasikan terlebih dahulu.

Contoh :

GajiPokok = 1000000
Bonus = 10000
GajiBersih = GajiPokol + Bonus
Print GajiBersih ‘Hasilnya 10000, bukan 1010000

3. Runtime Error, adalah kesalahan yang disebabkan oleh tidak tersedianya sumber daya atau kondisi yang normal bagi program untuk berjalan dengan baik, misalnya kekurangan memori komputer, disk full, atau pintu drive tidak terkunci, dll.

Sebagai programmer yang baik, tentu saja harus mampu menghasilkan program dengan tingkat kesalahan yang minimal, dan usaha untuk meminimalisasi tingkat kesalahan program disebut proses debug.

Pada QBasic tersedia berbagai fasilitas untuk menangani kesalahan yang mungkin dilakukan oleh programmer, misalnya :

1. Fasilitas Syntax Checking pada menu Option yang sangat berguna untuk mendeteksi kesalahan jenis “Syntax Error”.

2. Menu Debug, yang memiliki fasilitas yang sangat bermanfaat untuk melacak Logical Error, tetapi keberhasilannya sangat tergantung kepada pemahaman programmer akan masalah yang terjadi. Adapun fasilitas pada menu Debug adalah sebagai berikut :

a. Step atau F8, digunakan untuk menjalankan program baris per baris, sehingga programmer dapat mengamati alur program secara baris perbaris sambil mengevaluasi hasil output yang dihasilkan.

b. Procedure Step atau F10, digunakan untuk menjalankan program baris per baris tanpa masuk ke bagian sub rutin, artinya sub rutin dianggap sebagai satu baris dari program. Fasilitas ini
digunakan jika programmer telah yakin pada kebenaran sub rutin yang dibuat, sehingga proses pencarian lebih terfokus pada bagian tertentu.

c. Trace On, digunakan untuk memberikan sorotan pada baris yang sedang dijalankan.

d. Toggle BreakPoint, digunakan untuk menandai baris dimana proses eksekusi Pause dan masuk ke modus Step, fasilitas ini dapat digunakan programmer untuk memperkecil jangkauan pencarian kesalahan dengan modus Step karena tidak perlu melakukan Step dari awal, tetapi Step dilakukan mulai pada baris dimana sumber kesalahan dicurigai.

e. Clear Breakpoint, digunakan untuk menghapus semua Breakpoint.

f. On Error Goto label, digunakan untuk error handling, dimana jika terjadi kesalahan, maka proses program dialihkan ke label tertentu, dan jenis kesalahan dapat ditelusuri dari fungsi ERR
yang akan mengembalikan nomor kesalahan, dan proses dapat diulangi dengan RESUME atau RESUME NEXT , dan anda dapat juga menggunakan On Error Resume Next untuk mengabaikan kesalahan. Fasilitas ini cocok untuk mengatasi Run Time Error,

Contoh :

ON ERROR GOTO Salah
OPEN “A:Sumber.Dat” FOR INPUT AS #1
DO WHILE NOT EOF(1)
LINE INPUT #1, Baris$
PRINT Baris$
LOOP
END
Salah:
SELECT CASE ERR
CASE 53

PRINT “File Sumber.Dat tidak ada”
END
CASE 71

PRINT “Drive tidak siap, [U]lang, [B]atal”;
INPUT tanya$
IF tanya$ = “U” OR tanya$ = “u” THEN
RESUME
ELSE
END
END IF
END SELECT
END

Catatan : Nomor Error dapat dilihat pada bagian Help QBasic
“Runtime Error Code”

Modul 13- AKSES LOW LEVEL

MODUL 13 – Qbasic

AKSES LOW LEVEL

QBasic menyediakan beberapa perintah dan fungsi untuk akses Low  Level seperti akses memory langsung maupun akses ke nomor port  tertentu. Walaupun fasilitas Low Level yang disediakan sangat  terbatas jika dibandingkan dengan akses Low Level Turbo Pascal maupun C Language.

Akses Low Level sangat menarik bagi programmer-programmer muda,  karena mampu menghasilkan proses-proses yang tidak mungkin  dilakukan dengan menggunakan pemrograman yang normal.

Beberapa perintah QBasic yang berkaitan dengan akses Low Level  adalah :

DEF SEG = alamat_segment

PEEK(alamat_offset), digunakan untuk mengambil data byte yang  dari alamat memori segment:offset.

POKE alamat_offset, ekspresi, digunakan untuk mengisi ekspres  byte ke alamat memori segment:offset

OUT nomor_port, ekspresi, digunakan untuk mengakses port dengan  nilai ekspresi.

INP(nomor_port), digunakan untuk mengambil nilai dari port.

Contoh :

‘Anda dapat mengetahui tanggal ROM BIOS anda dengan menggambil  ‘8 byte mulai dari alamat FFFF:0005

CLS
  PRINT “Tanggal Bios komputer anda :”;
  ‘Set Data Segment ke hexa FFFFF
  DEF SEG = &HFFFF
  FOR i = 0 TO 7
  ‘Mencetak byte per byte dari offset hexa 0005
  PRINT CHR$(PEEK(i + 5));
  NEXT i

‘Anda dapat mengetahui jumlah RAM komputer anda dengan menggambil  ‘1 word (1 word = 2 byte) dari alamat 0040:0013  ‘Dalam hal ini RAM adalah konventional Memory’ Set Data Segment ke hexa 0040
  DEF SEG = &H40
  RAM = PEEK(&H13) + PEEK(&H14) * &H100
  PRINT
  PRINT “Jumlah konventional Memory :”; RAM; “KB”

‘Pada jaman kejayaan DOS, dan diskete sebagai media penyimpanan, ‘Virus Boot adalah Virus yang sangat terkenal misalnya Virus  ‘C Brain, Stoned, MichaelAngelo  ‘Salah satu metode melacak keberadaan Virus Boot di memory komputer  ‘kita adalah memeriksa konventional Memory komputer  ‘Jika jumlahnya < 640, maka komputer dicurigai mengandung Virus Boot

‘Anda dapat menggambil Real Time Clock PC dengan memanfaatkan  ‘Port 70H dan 71H, pada register :
  ‘ 00 RTC seconds
  ‘ 02 RTC minutes
  ‘ 04 RTC hours
  ‘ 06 RTC day of week
  ‘ 07 RTC day of month
  ‘ 08 RTC month
  ‘ 09 RTC year
  ‘Masukkan register yang akan dibaca/tulis ke port 70h’ baca/tulis pada port 71h

PRINT “Tanggal menurut RTC :”;
  OUT &H70, &H6
  PRINT HEX$(INP(&H71)); “/”;
  OUT &H70, &H8
  PRINT HEX$(INP(&H71)); “/”;
  OUT &H70, &H9
  PRINT HEX$(INP(&H71))

DO
  LOCATE 13, 35
  OUT &H70, 0
  PRINT HEX$(INP(&H71)); “:”;
  OUT &H70, 2
  PRINT HEX$(INP(&H71)); “:”;
  OUT &H70, 4
  PRINT HEX$(INP(&H71))
  LOOP UNTIL INKEY$ <> “”

‘Anda dapat Menghapus Setting BIOS dengan kode berikut ‘ Diambil dari software BIOS 3.1 Crack
  ‘
  ‘Catatan : Jangan mencoba program ini tanpa pengetahuan tentang
  ’setting BIOS, segala yang anda lakukan adalah resiko anda
  ’sendiri
  ‘
  ‘mov dx, 070h
  ‘mov al, 02Eh
  ‘out dx, al
  ‘inc dx
  ‘xor al, al
  ‘out dx, al
  ‘mov dx, 070h
  ‘mov al, 02Fh
  ‘out dx, al
  ‘inc dx
  ‘xor al, al
  ‘out dx, al
  ‘int 20h
  ‘
  ‘Adapun Kode QBasicnya adalah sebagai berikut :
  ‘
  PRINT “Program reset BIOS”
  PRINT “Proses …”
  OUT &H70, &H2E
  OUT &H71, &H00
  OUT &H70, &H2F
  OUT &H71, &H00
  PRINT “Selesai !”
  END

« Tulisan sebelumnya