Anda di halaman 1dari 5

LAB SHEET 8

PROGRAM PELAYANAN SUBROUTINE


PADA MPF Z-80 (II)
a. TUJUAN
Dapat menjalankan program dengan layanan subroutine guna membunyikan
nada dengan frekuensi yangberbeda-beda.

b. BAHAN DAN ALAT


1. Lembar tugas
2. Sebuah lagu lengkap dengan notasinya
3. MPF-1 Z-80 dan sumber catunya

c. TEORI DASAR
-

SUBROUTINE TONE dengan adddress awal 05E4H


Fungsi

: Memberikan nada di mana frekunsi dan lamanya dapat kita pilih.

Input

: Register C sebagai input untuk menentukan frekunsi nada dengan


rumusan pendekatan sebagai berikut:

f = 200/10{10+3(isi register C)}KHz

T = {44+13(isi register C)}x2x0.56 mikro detik

Register HL diisi dengan bilangan 16 bit dari 0000H sampai


maksimum 7FFFH dan isi HL menentukan lama suara yangtimbl
pada loudspeker.
Output
-

: Nada loudspeaker

SUBROUTINE TONE 1K dengan address awal 05DEH


Fungsi

: Memberikan nada pada frekunsi 1 KHz dengan lama suara dapat


kita pilih.

Input

: Register HL diisi dengan bilangan 0000H hingga 7FFFH untuk


menentukan lama suara.

Output

: Nada loudspeaker.

SUBROUTINE TONE 2K dengan address awal 05E2H


Untuk subroutine TONE 2K sebenarnya sama dengan subroutine TONE 1K
hanya berbeda pada frekuensi yang dihasilkan. Frekuensi yang dihasilkan oleh
subroutine TONE 2K dalah 2KHz.

SUBROUTINE RAMCHK dengan address awal 05F6H


Fungsi

: Untuk memeriksa adanya RAM pada suau address denganmenguji


pelaksanaan simpannya.

Output

: Jika RAM ada dan pelaksaaan simpannya baik bit zero flag akan
menjadi satu. Jika pada address tersebut pelaksanaan simpannya
jelek atau tudak ada RAM-nya maka bit zero flagnya menjadi nol.

Cara penggunaaan RAMCHK:


LD HL, address awal RAM yang akan diperiksa
LB BC, jumlah address RAM yang akan diperiksa
Check RAM : CALL RAMCHK; atau call 06F6H
JR Z, Check
HALT
Check

: CP 1
JP PE, Check RAM
RST

d. LANGKAH KERJA
PROGRAM I
ADDR
1800
1802
1803
1805
1808
180B
180D
1810

OP. CODE LABEL MNEMONIC OPERAND


ORG 1800H
06 0B
LD
B, 0BH
C5
LOOP PUSH
BC
0E D3
LD
C, D3H
21 08 00
LD
HL, 0008H
CD E4 05
CALL TONE
0E 8C
LD
C, 8CH
21 12 00
LD
HL, 0012H
CD E4 05
CALL TONE

KOMENTAR
B
SP
C
HL

0BH
BC
D3H
0008H

C 8CH
HL 0012H
SBR. TONE

1813
1814
1816
1818
181C
181F
1820
1822

C1
10 EC
16 FF
LD
DD 21 00 19
CD 24 06 TAMP
15
20
FA
C3 00 18

1900
1903

00 8F 23
A3 1F 00

POP
BC
DJNZ
LOOP
D, FFH
LD
IX, 1900H
CALL SCAN 1
DEC
D
JRNZ
TAMP
JP
1800H
ORG 1900H
DEFW
PONE

BC SP
D FFH
IX 1900H
SBR. Scan 1
D D1
KEMBALI KE AWAL

Pada program di atas frekuensi bunyi pertama adalah 320 Hz dan lamanya 25 msec,
sedangkan bunyi kedua frekuensinya 480 Hz dan lamanya 25 msec.

PROGRAM II
ADDR
1800
1803
1805
1808
180B
180F
1810
1811
1814
1818
181B
181E
181F
1820
1821
1823
1824
1826

182A
182C
182F

OP. CODE LABEL MNEMONIC OPERAND


ORG 1800H
CD 3A 18
CALL CLEAR
0E 06
LD
C, 0AH
11 00 00
LD
BC, 0000H
21 50 18
LD
HL, 1850H
DD 21 00 19 LD
LD
IX, 1900H
7E
LOOP1 LD
A, (HL)
E5
PUSH
HL
DD 77 00
LD
(IX+0), A
DD 21 00 19
LD
IX, 1900H
CD 2A 18
CALL TAMPILAN
CD 3A 18
CALL CLEAR
E1
POP
HL
23
INC
HL
13
INC
DEC
DE
DD 19
ADD
IX, DE
0D
DEC
C
20 E9
RNZ
LOOP1
C3 00 18
JP
1800H

06 24
CD 24 06
10 FB

SUBROUTINE TAMPILAN
ORG 122AH
LD
B, 64H
TAMP. CALL SCAN1
DJNZ TAMP.

KOMENTAR
SBR. CLEAR
C 0AH
BC 0000H
HL 1850H
IX 1900H
A (HL)
SP HL
(IX) A
IX 1900H
SBR. TAMPILAN
SBR. CLEAR
HL SP
HL HL + 1
DE + 1
IX IX + DE
C C1

B 64H
SBR. SCAN1

1813

C9

RET1

SUBROUTINE CLEAR
ORG. 183AH
LD
B, 10H
LD
HL, 1900H
XOR
A
CLEAR LD (HL), A
INC
HL
DJNZ CLEAR
RET

183A
183C
183F
1840
1841
1842
1844

06 10
21 00 19
AF
77
23
10 FC
C9

1850

A7 A7 A7 A7 A7 A7 DEFB

KEMBALI KE
PROGRAM INDUK

B
HL
A
(HL)
HL

10H
1900H
A XOR A
A
HL + 1

KEMBALI KE
PROGRAM INDUK
DATA

Program di atas adalah menampilkan karakter pada buffer yang address awalnya
adalah 1900H. Sebelum menampilkan maka pada address tersebut di-clear setelah
itu diisi data yang ada pada register HL ke register IX untuk menampilkan, lalu dari
address 1900H di clear, kemudian register IX dan register HL diincreament, begitu
seterusnya.

PROGRAM III
ADDR OP. CODE LABEL MNEMONIC OPERAND KOMENTAR
ORG 1800H
1800
DD 21 50 18
LD
IX, Not/Nada ; isi alamat untuk nada
1804
FD 21 00 19
LD
IY, Durasi
; isi alamat untuk durasi
1808
DD 4E 00 LOOP LD
C, (IX+00H) ; salin data nada pada IX ke C
180B FD 66 00
LD
H, (IY+00H) ; salin frek nada pada IY ke H
180E 2E 00
LD
L, 00H
; salin periode nada ke L
1810
CD E4 05 SBR
CALL TONE
; panggil SBR Tone
1813
0e 01
LD
C, 01H
; isikan data 01H ke C
1815
21 00 01
LD
HL, 0100H
; isikan frek & periode ke HL
1818
CD E4 05 SBR
CALL TONE
; panggil SBR Tone
181B AF
XOR A
; Xor-kan data di A
181C DD 23
INC IX
; tambah 1 pada IX untuk data
berikutnya
181E FD 23
INC IY
; tambah 1 pada IY untuk data
isi A
1823
C2 08 18
JPNZ bunyi nada
; ulangi program sampai habis
1826
76
HALT

Program di atas adalah untuk membunyikan suatu lagu dengan nada dan waktu
sesuai lagu yang dipilih. Sebelum membuat program lengkap terutama untuk
menyatakan nilai frekuensi nada maupun durasinya perlu terlebih dahulu mencatat
judul lagu, nada dasar yang dipakai beserta not dan ketukannya. Sesudah itu baru
ditulis pada kolom alamat yang ditentukan baik frekuensi nadanya maupun durasi
setiap nadanya. Setelah diketikkan semua ke MPF Z80 eksekusilah program Saudara
dan dengarkan vis speaker di MPF 80. Apabila belum cocok datanya dapat
diperbaiki sesuai yang benar. Selamat mencoba.

Anda mungkin juga menyukai