2. PERALATAN PROSES
Peralatan proses adalah alat
di mana instruksi-instruksi program diproses untuk mengolah data yang sudah
dimasukkan lewat peralatan input dan hasilnya akan ditampilkan di peralatan
output.
Peralatan proses terdiri dari
central processor atau CPU (Central Processing Unit) dan main memory.
2.1 CPU
CPU (Central Processing Unit) merupakan tempat pemrosesan
instruksi-instruksi program. Pada komputer mikro, processor ini disebut dengan microprocessor.
CPU terdiri dari dua bagian utama, yaitu unit kendali (control unit) dan unit arithmatika dan
logika (arithmetic and logic unit). Disamping
dua bagian utama tersebut, CPU mempunyai beberapa simpanan yang berukuran kecil
yang disebut dengan register.
2.1.1 Control Unit
Bagian ini bertugas mengatur dan mengendalikan semua peralatan yang ada
pada sistem komputer. Control unit mengatur
kapan peralatan input menerima data dan kapan data diolah serta kapan
ditampilkan pada peralatan output. Control
unit mengartikan instruksi-instruksi dari program komputer, membawa data
dari peralatan input ke main memory, mengambil
data dari main memory untuk diolah.
Bila ada instruksi untuk perhitungan arithmatika atau perbandingan logika, control unit mengirim instruksi tersebut
ke arithmetic and logic unit. Hasil
dari pengolahan data ini dibawa oleh control
unit ke main memory lagi untuk
disimpan.
Jadi tugas dari control unit adalah
sebagai berikut ini.
- Mengatur dan mengendalikan peralatan input dan output.
- Mengambil instruksi-instruksi dari main memory.
- Mengambil data dari main memory kalau diperlukan oleh proses.
- Mengirim instruksi ke arithmetic and logic unit bila ada perhitungan arithmatika atau perbandingan logika serta mengawasi kerja arithmetic and logic unit.
- Menyimpan hasil proses ke main memory.
2.1.2 Arithmetic and Logic Unit
Tugas utama dari arithmetic and
logic unit (ALU) adalah melakukan semua perhitungan arithmatika atau
matematika yang terjadi sesuai dengan instruksi program. ALU melakukan operasi
arithmatika dengan dasar pertambahan, sedang operasi arithmatika yang lainnya,
seperti pengurangan, perkalian dan pembagian dilakukan dengan dasar
penjumlahan. Sehingga sirkuit elektronik di ALU yang digunakan untuk
melaksanakan operasi arithmatika ini disebut adder.
Tugas lain dari ALU adalah melakukan keputusan dari operasi logika
sesuai dengan instruksi program. Operasi logika (logical operation) meliputi perbandingan dua buah elemen logika
dengan menggunakan operator logika, yaitu:
a. sama dengan (=)
b. tidak sama dengan (<>)
c. kurang dari (<)
d. kurang atau sama dengan dari (<=)
e. lebih besar dari (>)
f. lebih besar atau sama dengan dari (>=)
2.1.3 Register
Register merupakan simpanan
kecil yang mempunyai kecepatan tinggi, lebih cepat sekitar 5 sampai 10 kali
dibandingkan dengan kecepatan perekaman atau pengambilan data di main memory. Register digunakan untuk
menyimpan instruksi dan data yang sedang diproses oleh CPU, sedang
instruksi-instruksi dan data lainnya yang menunggu giliran untuk diproses masih
disimpan di main memory.
Secara analog, register ini
dapat diibaratkan dengan ingatan di otak bila anda melakukan pengolahan data
secara manual. Sehingga otak dapat diibaratkan sebagai CPU, yang berisi
ingatan-ingatan, satuan kendali yang mengendalikan seluruh kegiatan tubuh dan mempunyai
tempat untuk melakukan perhitungan dan perbandingan logika.
Program yang berisi kumpulan dari instruksi-instruksi dan data
diletakkan di main memory yang
diibaratkan sebagai sebuah meja. Anda mengerjakan program tersebut dengan
memproses satu persatu instruksi-instruksi yang ada didalamnya mulai dari
instruksi yang pertama. Instruksi ini anda baca dan diingat (instruksi yang
sedang diproses disimpan di register). Misalnya
instruksi tersebut berbunyi HITUNG C = A + B, maka anda membutuhkan data untuk
A dan B yang masih ada di meja. Data tersebut anda baca dan masuk ke ingatan
anda (data yana sedang diproses disimpan di register),
yaitu A bernilai 2 dan B bernilai 3. Sekarang di ingatan otak anda telah
tersimpan suatu instruksi dan nilai data A serta B, dengan demikian nilai dari
C dapat anda hitung hasilnya, yaitu sebesar 5. Hasil dari perhitungan ini perlu
anda tuliskan kembali ke meja (hasil pengolahan direkamkan kembali ke main memory). Setelah semua instruksi
selesai anda proses, kemungkinan program, data dan hasil pengolahan ingin anda
simpan secara permanen untuk keperluan dilain hari dan dapat anda simpan di filing cabinet. Simpanan luar komputer
diibaratkan sebagai filing cabinet.
Jadi ada 3 macam ingatan yang dipergunakan di dalam sistem komputer, yaitu
sebagai berikut ini.
- Register, dipergunakan untuk menyimpan instruksi dan data yang sedang diproses.
- Main memory, dipergunakan untuk menyimpan instruksi dan data yang akan diproses dan hasil dari pengolahan.
- External storage (simpanan luar), dipergunakan untuk menyimpan program dan data secara permanen.
Register yang berhubungan
dengan instruksi yang sedang diproses adalah instruction register dan
program counter. Instruction Register
(IR) atau disebut juga program
register digunakan untuk menyimpan instruksi yang sedang diproses. Program
yang berisi kumpulan dari instruksi, pertama kali ditempatkan di main memory. Pemrosesan program
dilakukan instruksi per instruksi. Instruksi yang mendapat giliran untuk
diproses, diambil dari main memory dan
disimpan di instruction register (IR).
Program counter (PC) atau disebut
juga control counter atau instruction counter adalah register yang digunakan untuk menyimpan
alamat (address) lokasi dari main memory yang berisi instruksi yang
sedang diproses. Selama pemrosesan instruksi yang dilakukan oleh CPU, isi dari program counter (PC) dirubah dengan
alamat dari main memory berikutnya
yang berisi instruksi selanjutnya yang mendapat giliran untuk diproses. Sehingga bila pemrosesan sebuah instruksi selesai
dilakukan, tidak ada waktu yang terbuang untuk mencari jejak dari instruksi
berikutnya yang akan diproses, karena alamat atau letak dari instruksi tersebut
sudah berada di program counter.
Register yang berhubungan
dengan data yang sedang diproses adalah general-purpose
register. Untuk beberapa komputer, general-purpose
register diberi simbol R0, R1, R2, ... Rn yang mempunyai kegunaan yang
umum, seperti misalnya untuk menampung data yang sedang diolah (disebut dengan operand register) dan untuk menampung hasil pengolahan (disebut dengan accumulator).
Register
lainnya yang digunakan sebagai jembatan antara CPU dengan main memory adalah memory
address register (MAR) dan memory
data register (MDR). Register ini
yang dihubungkan dengan suatu jalur (disebut dengan bus) ke main memory.
Memory data register digunakan untuk
menampung data atau instruksi hasil pengiriman dari main memory ke CPU atau untuk menampung data yang akan direkam ke main memory dari hasil pengolahan oleh
CPU. Instruksi atau data yang diambil dari main
memory dikirimkan ke CPU lewat data
bus dan diterima terlebih dahulu di memory
data register, dan akan dipindahkan ke instruction
register bila berbentuk instruksi
atau ke operand register bila
berbentuk data. Demikian juga bila hasil operasi yang ada di accumulator akan direkamkan ke main memory, maka diletakkan terlebih
dahulu ke memory data register.
Sedang memory address register digunakan
untuk menampung alamat (address) data
atau instruksi di main memory yang
akan diambil atau yang akan direkamkan. Bila instruksi atau data akan diambil
dari main memory, maka main memory harus diberitahu terlebih
dahulu letak alamat (address) dari
data atau instruksi tersebut di main
memory. Alamat tersebut diletakkan di memory
address register oleh control unit dan
dikirimkan ke main memory lewat address bus. Demikian juga bila hasil
pengolahan akan direkamkan ke main
memory, maka main memory harus diberitahu terlebih dahulu
alamat perekaman dari data di main memory. Control unit akan meletakkan
alamat tersebut di MAR dan dikirimkan ke
main memory lewat address bus.
Sebagai tambahan dari register, beberapa
CPU menggunakan suatu cache memory atau disebut juga dengan scratch-pad memory atau high-speed buffer atau buffer memory dengan maksud supaya kerja
dari CPU lebih efisien dan mengurangi waktu yang terbuang. Tanpa cache memory, CPU akan menunggu sampai
data atau instruksi diterima dari main
memory atau menunggu hasil pengolahan selesai dikirim ke main memory baru proses selanjutnya bisa
dilakukan, padahal proses dari main
memory lebih lambat dibandingkan dengan kecepatan register. Cache memory diletakkan diantara CPU dengan main memory.
Cache memory harus lebih cepat
dari main memory dan mempunyai ukuran
yang cukup besar, tetapi tidak sebesar main
memory. Sebenarnya cache memory tidak
diperlukan bilamana main memory dibuat
secepat cache memory, tetapi cara
demikian tidaklah ekonomis. Dengan cache
memory, sejumlah blok informasi di main
memory dipindahkan ke cache memory dan
selanjutnya CPU akan berhubungan dengan cache
memory.
2.2 ARRAY PROCESSOR
Bila sejumlah besar dari perhitungan harus dilakukan, untuk mempercepat
waktu proses, dapat dipergunakan array
processor. Suatu array processor
atau co-processor adalah processor terpisah yang dapat ditambahkan
pada processor utamanya. Dengan array
processor, perhitungan arithmatika yang besar dan sulit dapat dilakukan
dengan memecah atau membagi perhitungan tersebut dan dilakukan bersama-sama
antara central processor dan array processor.
Kalau anda menggunakan komputer IBM PC XT, di sebelah kanan dari central processor-nya (processor utamanya menggunakan microprocessor Intel 8088) terdapat tempat kosong yang khusus
disediakan untuk co-processor, yaitu
Intel 8087, bilamana diperlukan. Untuk paket-paket program tertentu dituntut
adanya co-processor ini seperti
misalnya paket program statistic TSP.
Karena fungsi utama dari co-processor
atau array processor adalah untuk
perhitungan matematika yang rumit, maka disebut juga dengan nama math-processor atau numeric data processor.
2.3 MAIN MEMORY
CPU hanya dapat menyimpan data dan instruksi di register yang ukurannya kecil, sehingga tidak dapat menyimpan semua
informasi yang dibutuhkan untuk keseluruhan proses dari program. Untuk
mengatasi hal ini, maka di alat pemroses dilengkapi dengan simpanan yang
kapasitasnya lebih besar, yaitu main memory atau internal memory atau internal
storage atau primary storage atau
temporary storage atau immediate access storage.
Main memory dapat dibayangkan
sebagai sekumpulan kotak-kotak yang masing-masing kotak dapat menyimpan suatu
penggal informasi baik berupa data maupun instruksi. Tiap-tiap lokasi dari kotak ditunjukkan oleh
suatu alamat (address). Alamat memori
merupakan suatu nomor yang menunjukkan lokasi tertentu dari kotak memori.
Ukuran dari main memory ditunjukkan
oleh satuan Kilo Byte (KB) yaitu 1024 byte, Mega Byte (MB) yaitu 1024 KB
ataupun Giga Byte (GB) yaitu 1024 MB. Umumnya 1 byte memori terdiri dari 8 bit (binary digit). Tiap-tiap bit diwakili
oleh digit 1 atau 0. Kombinasi dari bit dalam 1 byte tersebut membentuk suatu
kode yang mewakili isi dari lokasi memori. Kode yang dipergunakan untuk
mewakilinya tergantung dari komputer yang dipergunakan, dapat berbentuk sistem
kode BCD, sistem kode SBCDIC, sistem kode EBCDIC atau sistem kode ASCII.
Misalnya suatu komputer mempunyai kapasitas memori sebesar 256 KB atau
262144 byte, yang berarti mempunyai 262144 lokasi memori. Alamat dari memori
ini adalah bernomor 000000 sampai dengan 262143. Bila nilai data karakter
"A" disimpan di alamat 000005 pada memori dan sistem kode yang
dipergunakan untuk mewakili karakter adalah kode ASCII 8-bit, maka isi dari
lokasi tersebut adalah 01000001 (bilangan binari 01000001 dalam sistem kode
ASCII 8-bit menunjukkan karakter "A").
Karakter "A" dalam kode ASCII |
Komponen-komponen peralatan proses |
2.3.1 RAM
Semua data dan program yang dimasukkan lewat peralatan input akan disimpan
terlebih dahulu di main memory, khususnya
di RAM (Random Access Memory). RAM merupakan memori yang dapat
dimasup (di akses) yaitu dapat diisi
dan diambil isinya oleh programmer.
Struktur dari RAM dibagi menjadi 4 bagian, yaitu sebagai berikut ini.
- Input storage, digunakan untuk menampung input yang dimasukkan lewat peralatan input.
- Program storage, digunakan untuk menyimpan semua instruksi-instruksi program yang akan diproses.
- Working storage, digunakan untuk menyimpan data yang akan diolah dan hasil dari pengolahan.
- Output storage, digunakan untuk menampung hasil akhir dari pengolahan data yang akan ditampilkan ke peralatan output.
Input yang dimasukkan lewat peralatan input, pertama kali ditampung
terlebih dahulu di input storage, bila
input tersebut berbentuk program, maka dipindahkan ke program storage dan bila berbentuk data, akan dipindahkan ke working storage. Hasil dari pengolahan
juga ditampung di working storage dan
hasil yang akan ditampilkan ke peralatan output dipindahkan ke output storage.
RAM mempunyai kemampuan untuk melakukan pengecekan dari data yang
disimpannya, yang disebut dengan istilah parity
check. Bila data hilang atau rusak,
dapat diketahui dari sebuah bit tambahan yang disebut dengan parity bit atau check bit.
Misalnya 1 byte memory di RAM
terdiri dari 8-bit, sebagai parity bit digunakan
sebuah bit tambahan, sehingga menjadi 9 bit.
Ada dua macam cara yang dilakukan oleh parity check, yaitu pengecekan pariti genap (even parity check) dan pengecekan pariti ganjil (odd parity check). Even parity check menunjukkan jumlah bit 1
untuk tiap-tiap bit dalam 1 byte beserta parity
bit harus berjumlah genap (even), kalau berjumlah ganjil, berarti ada
kerusakan data. Misalnya karakter "C" dalam sistem kode ASCII 8 bit
berbentuk:
Dengan cara even parity check,
pada waktu data ini direkam, parity bit
diisi bit 1 supaya jumlah bit 1 bernilai genap, sebagai berikut:
Pada waktu data tersebut diambil untuk dipergunakan, maka akan dilakukan
pengecekan terhadap bit-bitnya. Kalau ada kerusakan bit, misalnya salah satu
bit terganti dari bit 1 menjadi bit 0 atau dari bit 0 menjadi bit 1, maka
jumlah bit 1 dalam 1 byte tersebut tidak akan berjumlah genap dan akan
terdeteksi oleh CPU.
Odd parity check menunjukkan jumlah
bit 1 untuk tiap-tiap bit dalam 1 byte beserta parity bit harus berjumlah ganjil (odd), kalau berjumlah genap berarti ada kerusakan data. Misalnya karakter "C" dalam sistem
kode ASCII 8 bit tersebut dengan cara odd
parity check seharusnya terekam sebagai berikut:
2.3.2 ROM
ROM (Read Only Memory), dari
namanya, memori ini hanya dapat dibaca saja, programmer tidak bisa mengisi sesuatu ke dalam ROM. Isi ROM sudah
diisi oleh pabrik pembuatnya, berupa sistem operasi (Operating System) yang terdiri dari program-program pokok yang
diperlukan oleh sistem komputer, seperti misalnya program untuk mengatur
penampilan karakter di layar, pengisian tombol kunci di keyboard untuk keperluan kontrol tertentu dan bootstrap program. Beberapa
komputer, misalnya komputer mikro Apple dan IBM PC, ROM juga diisi dengan
program interpreter BASIC.
Bootstrap program diperlukan pada
waktu pertama kali sistem komputer diaktipkan, yang proses ini disebut dengan
istilah booting dapat berupa cold booting dan warm booting. Cold booting merupakan
proses mengaktipkan sistem komputer pertama kali untuk mengambil bootstrap program dari keadaan listrik
komputer mati (off) dengan cara
menghidupkannya, sedang warm booting merupakan
proses pengulangan pengambilan bootstrap
program dalam keadaan komputer masih hidup (on) dengan cara menekan beberapa tombol tertentu di keyboard (di komputer IBM PC dilakukan
dengan menekan tombol-tombol Ctrl, Alt dan Del (ketiga tombol Ctrl-Alt-Del
tersebut ditekan bersamaan) Warm booting
biasanya dilakukan bila sistem komputer macet, daripada harus mematikan
aliran listrik komputer dan menghidupkannya kembali (lebih lama dan membuat
komputer cepat rusak), lebih baik dilakukan warm
booting.
lnstruksi-instruksi yang tersimpan di ROM disebut dengan microinstructions atau microcode atau disebut juga dengan firmware, karena hardware dan software dijadikan
satu oleh pabrik pembuatnya. ROM itu sendiri adalah hardware sedang microinstructions
adalah software.
Isi dari ROM tidak boleh hilang
atau rusak, bila terjadi demikian, maka sistem komputer tidak akan bisa
berfungsi. Oleh karena itu, untuk mencegahnya, pabrik komputer merancang ROM sedemikian rupa sehingga hanya bisa
dibaca saja, tidak dapat diisi oleh programmer
supaya tidak terganti oleh isi yang lain yang dapat menyebabkan isi ROM
rusak. Selain itu ROM sifatnya adalah non
volatile, supaya isinya tidak hilang bila listrik komputer dimatikan.
Dalam kasus yang lain, memungkinkan untuk merubah isi dari ROM, yaitu
dengan cara memprogram kembali instruksi-instruksi yang ada di dalam ROM
tersebut. ROM yang bisa diprogram berbentuk chip
yang ditempatkan pada rumahnya yang mempunyai jendela diatasnya. ROM yang
dapat diprogram kembali adalah PROM (Programmable
Read Only Memory), yang dapat diprogram sekali saja oleh programmer yang selanjutnya tidak dapat
diubah kembali. Jenis lain adalah EPROM (Erasable
Programmable Read Only Memory) atau RPROM (Reprogrammable Read Only Memory) yang dapat dihapus dengan sinar
ultra violet (dapat juga dijemur di sinar matahari) serta dapat diprogram
kembali berulang-ulang. EEPROM (Electrically
Erasable Programmable Read Only Memory), dapat dihapus secara elektronik
dan dapat diprogram kembali.
2.4 HUBUNGAN ANTARA CPU DENGAN
MAIN MEMORY DAN PERALATAN I/O
Hubungan antara CPU dengan main
memory ataupun dengan peralatan input/output dilakukan dengan suatu jalur
yang disebut dengan bus. Hubungan
antara CPU dengan main memory melalui
jalur bus yang dilekatkan pada memory
data register, memory address register dan control unit di CPU. Sedang bus yang menghubungkan CPU dengan
peralatan input/output tidak dilekatkan langsung ke peralatan input/output
tersebut, tapi dapat melalui suatu alat I/O
port atau DMA controller atau I/O channel.
2.4.1 Bus
Bus atau disebut juga
dengan pathway merupakan suatu
sirkuit yang merupakan jalur transportasi informasi antara dua atau lebih
alat-alat dalam sistem komputer.
Bus yang
menghubungkan CPU antara dengan main
memory disebut dengan internal bus. Sedang bus yang menghubungkan CPU antara
dengan peralatan input/output disebut dengan external bus.
Data bus adalah
bus yang digunakan untuk jalur
transportasi data dan instruksi.
Address bus adalah
bus yang digunakan untuk jalur
transportasi alamat di main memory untuk
data atau instruksi yang akan diambil atau akan direkamkan.
Control bus adalah
bus yang digunakan untuk mengirimkan
sinyal sebagai pemberitahuan akan dikirimkan suatu informasi atau telah
diterimanya informasi yang dikirimkan dari satu alat ke alat yang lain. Didalam
internal bus, hubungan antara CPU
dengan main memory melalui data bus yang dihubungkan dengan memory data register (MDR), address bus yang dihubungkan dengan memory address register (MAR) dan control
bus yang dihubungkan dengan control
unit.
2.4.2 I/O Port
Alat-alat input/output tidak
dilekatkan langsung dengan bus,
tetapi melalui suatu I/O port atau I/O interface. Alat-alat input/output
dapat berkomunikasi dengan CPU dengan cara mengirimkan informasi yang akan
dikomunikasikan lewat bus. Informasi
yang dikirim dari alat input/output (peripheral
device) ke main memory atau ke register di CPU diletakkan di I/O port
dan dikirimkan lewat data bus.
Demikian juga bila informasi
dari main memory akan dikirimkan ke peripheral device juga melalui data bus, dan diterima di I/O port. Cara
pengiriman informasi ke alat-alat I/O seperti ini disebut dengan program-controlled I/O.
Program-controlled I/O |
Jika satu blok data yang besar (beberapa word sekaligus) dibutuhkan
untuk dikirimkan dari atau ke peripheral
device, cara yang lain harus digunakan, yaitu Direct Memory Access (DMA).
2.4.3 DMA Controller
Untuk peripheral device yang
mempunyai kecepatan tinggi, tidaklah ekonomis untuk pengiriman informasi byte per byte atau word per word, dan akan lebih ekonomis bila
pengiriman informasi dilakukan sekaligus per blok informasi. Bila informasi
dikirimkan sekaligus per blok, dan CPU dapat beroperasi lebih cepat
dibandingkan dengan proses peripheral
device, bila CPU harus selalu mengawasi pengiriman informasi, maka akan
terjadi suatu waktu yang terbuang (idle
time) di CPU.
Karena CPU banyak menghabiskan proporsi waktu yang cukup besar di dalam
proses membaca dan menuliskan informasi dari atau ke peripheral device, maka perlu dibuat cara agar proses ini tidak
terlalu banyak menyita waktu dari CPU.
DMA (Direct Memory Access) merupakan
suatu konsep yang akan membuat komunikasi informasi antara peripheral device dengan main
memory akan lebih efisien. Cara DMA ini dilakukan dengan melekatkan bus pada DMA controller yang dihubungkan dengan peripheral device.
DMA controller mempunyai suatu processor sendiri di dalamnya (berupa IC
khusus, misalnya Intel 8237 di komputer IBM PC) yang akan menangani operasi
baca dan tulis antara main memory dan
peripheral device. Bila dengan cara program-controlled I/O setiap kali
terjadi pengiriman informasi harus selalu diawasi oleh CPU, maka dengan cara
DMA ini, CPU cukup sekali saja memberi sinyal ke DMA controller untuk melakukan pengiriman sejumlah blok data antara
main memory dengan peripheral device, yang selanjutnya
urusan pengiriman data tersebut CPU akan dilakukan oleh processor di DMA tanpa turut campur dari CPU sehingga dapat
melakukan pekerjaan yang lain.
Cara DMA ini biasanya digunakan untuk peripheral device yang mempunyai kecepatan tinggi yang membutuhkan
pengiriman blok data yang besar, seperti misalnya hard disk drive.
2.4.4 I/O Channel
Telah dibahas dua cara untuk menerapkan pengiriman informasi ke peripheral device, yaitu program-controlled I/O dan DMA. Program-controlled I/O biasanya digunakan untuk peripheral device yang mempunyai
kecepatan rendah, sedang yang mempunyai kecepatan tinggi dilakukan dengan cara DMA.
Bila beberapa peripheral device yang
mempunyai kecepatan tinggi akan dihubungkan dengan CPU, maka tidaklah ekonomis
menyediakan beberapa DMA controller yang terpisah untuk
masing-masing peripheral device, yang
lebih ekonomis adalah menyediakan suatu DMA
controller yang digunakan untuk sejumlah peripheral device. Pemikiran
inilah yang menimbulkan konsep I/O
channel. Suatu 1/O channel adalah
suatu DMA controller yang
dipergunakan bersama-sama untuk sejumlah alat-alat I/O.
Masing-masing alat-alat I/O dihubungkan dengan suatu channel lewat suatu control unit (jangan dibingungkan dengan control unit di CPU) atau controller.
Sebuah controller dapat digunakan
untuk sejumlah alat-alat I/O yang sejenis, misalnya dua atau lebih disk drive akan digunakan, dapat
dipergunakan sebuah controller.
Controller ini fungsinya sama dengan I/O
port atau I/O interface untuk
cara program-controlled I/O.
I/O channel |
nah ini lengkap artikelnya. ijin share ya, terima kasih sudah berbagi. Salam.
ReplyDeletesilahkan... makasi kembali, sudah mampir...
ReplyDelete