■■■README.TXT■■■ 「Java & AKI-80」付属FD について このFDには、本書の文中に登場するリストのうち、読者の実験に利用 できるもの(ソースプログラム、バッチファイル等)を納めてあります。 ファイル名は、本文中のファイル名と一致していますが、唯一の例外と して、  ・Javaソースプログラム(****.jav)  ・HTMLファイル(****.htm) の2種類だけは、拡張子の最後の1文字が省略されていますので、 Windowsなどの環境で利用する場合には、適当にリネームして 下さい。 ■■■ADDIN.ASM■■■ ;##### RAM Map ##### org 8000h ; ← RAM領域に変数を定義 data ds 4 ;##### I/O Map ##### sio_a equ 0018h ; ← 内蔵SIOのアドレス定義 sio_b equ 001ah ;##### RESET ##### org 0000h ; ← リセットするとここから始まる ld sp,09fffh ; ← スタックポインタをセット di ; ← 割り込みを禁止 jp main ; ← メインに飛ぶ ;##### NMI ##### org 0066h ; ← (NMIは来ないが一応入れておく) retn ;##### Main ##### main: ld a,00011000b ; ← SIO[A]チャンネルリセット out (sio_a+1),a ld a,00011000b ; ← SIO[B]チャンネルリセット out (sio_b+1),a ; (本来はここで各種の初期化) loop: call sw_check ; ← スイッチ入力を[data]に格納 jr loop sw_check: xor a ; ← データ領域をゼロクリア ld (data+0),a ld (data+1),a ld (data+2),a ld (data+3),a ld a,00000000b ; ← SIO[A]制御レジスタ[0]を選択 out (sio_a+1),a in a,(sio_a+1) ; ← 制御レジスタの状態を入力 ld b,a ld a,00000000b ; ← SIO[B]制御レジスタ[0]を選択 out (sio_b+1),a in a,(sio_b+1) ; ← 制御レジスタの状態を入力 ld c,a ld a,1 bit 3,b ; DCDA check jr z,_sw_1 ld (data+0),a ; pin 9 の状態が bit 0 に入る _sw_1: bit 5,b ; CTSA check jr z,_sw_2 ld (data+1),a ; pin 10 の状態が bit 0 に入る _sw_2: bit 3,c ; DCDB check jr z,_sw_3 ld (data+2),a ; pin 12 の状態が bit 0 に入る _sw_3: bit 5,c ; CTSB check jr z,_sw_4 ld (data+3),a ; pin 11 の状態が bit 0 に入る _sw_4: ret end ■■■ADDOUT.ASM■■■ ;##### RAM Map ##### org 8000h ; ← RAM領域に変数を定義 buffer ds 2 data ds 2 ;##### I/O Map ##### sio_a equ 0018h ; ← 内蔵SIOのアドレス定義 sio_b equ 001ah ;##### RESET ##### org 0000h ; ← リセットするとここから始まる ld sp,09fffh ; ← スタックポインタをセット di ; ← 割り込みを禁止 jp main ; ← メインに飛ぶ ;##### NMI ##### org 0066h ; ← (NMIは来ないが一応入れておく) retn ;##### Main ##### main: ld a,00011000b ; ← SIO[A]チャンネルリセット out (sio_a+1),a ld a,00011000b ; ← SIO[B]チャンネルリセット out (sio_b+1),a ; (本来はここで各種の初期化) ; 制御レジスタの設定は[buffer]へ loop: call port_out_a ; ← SIO[A]からのビット単位拡張出力 call port_out_b ; ← SIO[B]からのビット単位拡張出力 jr loop port_out_a: ld a,(data+0) ; bit0 に出力すべきデータがある rrca ; bit7 に移動 ld b,a ld a,(buffer+0) ; 制御レジスタの下7ビットの内容 and 01111111b ; に or b ; MSBの出力データを添える ld b,a ld a,00000101b ; ← SIO[A]制御レジスタ[5]を選択 out (sio_a+1),a ld a,b out (sio_a+1),a ; ← これで出力(CN2 pin8) ret port_out_b: ld a,(data+1) ; bit0 に出力すべきデータがある rrca ; bit7 に移動 ld b,a ld a,(buffer+1) ; 制御レジスタの下7ビットの内容 and 01111111b ; に or b ; MSBの出力データを添える ld b,a ld a,00000101b ; ← SIO[B]制御レジスタ[5]を選択 out (sio_b+1),a ld a,b out (sio_b+1),a ; ← これで出力(CN2 pin13) ret end ■■■ASM.BAT■■■ mifes test.asm rem ← 実験用ソースファイルの編集 xa80 test,,,; rem ← アセンブラ[XA80]で処理 copy test.hex transfer.hex rem ← 予約ファイル名にコピー trans rem ← ターゲットシステムにロード ■■■BOUND.JAV■■■ import java.awt.*; import java.applet.*; public class moving_gif extends Applet implements Runnable { int x, y, xx, yy; int d_x=1, d_y=1, d_xx=-1, d_yy=-1; int speed=4, speedd=2; Image image1,image2,image3,image4,image5,image6,image7,image8; private Thread flow; boolean done, pause; public void init() { image1 = getImage(getDocumentBase(), "image/s1.gif"); image2 = getImage(getDocumentBase(), "image/s2.gif"); image3 = getImage(getDocumentBase(), "image/s3.gif"); image4 = getImage(getDocumentBase(), "image/s4.gif"); image5 = getImage(getDocumentBase(), "image/s5.gif"); image6 = getImage(getDocumentBase(), "image/s6.gif"); image7 = getImage(getDocumentBase(), "image/s7.gif"); image8 = getImage(getDocumentBase(), "image/s8.gif"); setBackground(Color.black); } public void start() { done = false; pause = false; x = 0; y = 0; xx = 500; yy = 200; flow = new Thread(this); flow.start(); } public void run() { try { while (!done) { Thread.sleep(200); if (!pause) repaint(); } } catch (Exception e){}; } public void paint(Graphics g) { Dimension d = size(); if(d_x==1 && d_y==1) g.drawImage(image1, x, y, 50, 50, this); else if(d_x==-1 && d_y==1) g.drawImage(image2, x, y, 50, 50, this); else if(d_x==1 && d_y==-1) g.drawImage(image3, x, y, 50, 50, this); else if(d_x==-1 && d_y==-1) g.drawImage(image4, x, y, 50, 50, this); if(d_xx==1 && d_yy==1) g.drawImage(image5, xx, yy, 40, 40, this); else if(d_xx==-1 && d_yy==1) g.drawImage(image6, xx, yy, 40, 40, this); else if(d_xx==1 && d_yy==-1) g.drawImage(image7, xx, yy, 40, 40, this); else if(d_xx==-1 && d_yy==-1) g.drawImage(image8, xx, yy, 40, 40, this); x += d_x * (3+speed); y += d_y * (3+speed); xx += d_xx * (3+speedd); yy += d_yy * (3+speedd); if( (xx>x-40) && (xxy-40) && (yyx+35){ if(d_xx==-1) d_xx=1; if(d_x==1) d_x=-1; } else if(yy>y+35){ if(d_yy==-1) d_yy=1; if(d_y==1) d_y=-1; } } if(x<0) d_x = 1; if(y<0) d_y = 1; if(x>d.width-50) d_x = -1; if(y>d.height-50) d_y = -1; if(xx<0) d_xx = 1; if(yy<0) d_yy = 1; if(xx>d.width-40) d_xx = -1; if(yy>d.height-40) d_yy = -1; } public boolean mouseDown(java.awt.Event evt, int x, int y) { pause = !pause; if(pause == true){ speed = (speed+2)%7; speedd = (speedd+1)%6; } return(true); } public void stop() { done = true; flow.stop(); } } ■■■C.BAT■■■ mifes test.c rem ← 実験用ソースファイルの編集 mc -s test.c rem ← コンパイラ[MC]で処理 xa80 test,,,; rem ← アセンブラ[XA80]で処理 copy test.hex transfer.hex rem ← 予約ファイル名にコピー trans rem ← ターゲットシステムにロード ■■■CTEST.C■■■ #define pio_a 0x1c #define pio_b 0x1e int disp, sw, counter, table_0[11]; /* ← テーブルは配列で用意 */ void port_out( int port, int data ){ /* ← 汎用ポート出力 */ #asm ld hl,4 add hl,sp ld c,(hl) ld hl,2 add hl,sp ld a,(hl) out (c),a nop ret #endasm } int port_in( int port ){ /* ← 汎用ポート入力 */ #asm ld hl,2 add hl,sp ld c,(hl) in a,(c) ld l,a ld h,0 ret #endasm } void wait_short(){ int timer1; for(timer1=0;timer1<10;timer1++){ #asm nop ;← NOPを5回、それを10回ループ nop nop nop nop #endasm } } void sw_scan(){ sw = 0x07 & (port_in( pio_b ) / 32); /* ← スイッチ入力は簡潔 */ } void led_disp_0(){ port_out( pio_a+0, table_0[disp] ); /* ← テーブルから1の位を表示 */ port_out( pio_b+0, 0xfe ); port_out( pio_b+0, 0xff ); } void led_disp_1(){ port_out( pio_a+0, table_0[disp] ); /* ← テーブルから10の位を表示 */ port_out( pio_b+0, 0xfd ); port_out( pio_b+0, 0xff ); } void led_disp_2(){ port_out( pio_a+0, table_0[disp] ); /* ← テーブルから100の位を表示 */ port_out( pio_b+0, 0xfb ); port_out( pio_b+0, 0xff ); } void led_display(){ disp = counter % 10; led_disp_0(); if( counter > 9 ) disp = (counter/10) % 10; else disp = 10; led_disp_1(); if( counter > 99 ) disp = counter / 100; else disp = 10; led_disp_2(); } void wait_long(){ int timer0; for(timer0=0;timer0<50;timer0++){ sw_scan(); /* ← ウエイト中にスイッチを見る */ if( sw != 0x07 ) counter = 0; wait_short(); /* ← 足踏みルーチンを呼ぶ */ } } main(){ table_0[0] = 0xf5; /* ← テーブルの初期値をセット */ table_0[1] = 0x05; table_0[2] = 0xd3; table_0[3] = 0x57; table_0[4] = 0x27; table_0[5] = 0x76; table_0[6] = 0xf6; table_0[7] = 0x65; table_0[8] = 0xf7; table_0[9] = 0x77; table_0[10] = 0x00; port_out( pio_a+1, 0xcf ); /* Mode 3 */ port_out( pio_a+1, 0x00 ); /* 0:out / 1:in */ port_out( pio_a+0, 0x00 ); port_out( pio_b+1, 0xcf ); /* Mode 3 */ port_out( pio_b+1, 0xe0 ); /* 0:out / 1:in */ port_out( pio_b+0, 0xff ); port_out( pio_b+0, 0xf8 ); port_out( pio_b+0, 0xff ); counter = 0; while(1){ wait_long(); /* ← ソフトウェア・タイマ */ counter = (counter+1)%256; /* ← インクリルントして */ led_display(); /* ← 3桁のLEDで表示 */ } } ■■■GLOVE.SRC■■■ ;##### RAM Map ##### dseg org 0000h tx_fifo ds 256 tx_top ds 1 tx_end ds 1 timer_flag ds 4 glove_status ds 1 x_value ds 2 y_value ds 2 counts ds 4 channel ds 1 ;##### I/O Map ##### cseg ctc_0 equ 0010h s_gen equ 0017h sio_a equ 0018h sio_b equ 001ah pio_a equ 001ch pio_b equ 001eh led_up equ 0080h led_down equ 0081h led_left equ 0082h led_right equ 0083h ;##### MACRO ##### io_set macro @1,@2 ld a,@2 out (@1+1),a endm io_put macro @1,@2 ld a,@2 out (@1+0),a endm ;##### RESET ##### org 0000h ld sp,0ffffh di jp main ;##### INT / NMI ##### org 0020h dw _timer_ _timer_: ex af,af' ld a,1 ld (timer_flag+0),a ex af,af' ei reti org 0066h retn ;##### Data Table ##### org 0100h display_table_1: db 10h,10h,10h,10h,10h,10h,10h,10h ; 1 - 8 db 18h,18h,18h,18h,18h,18h,18h,18h ; 9 - 16 db 08h,08h,08h,08h,0ch,0ch,0ch,0ch ; 17 - 24 db 0ch,0ch,0ch,0ch,04h,04h,04h,04h ; 25 - 32 db 06h,06h,06h,06h,06h,06h,06h,06h ; 33 - 40 db 02h,02h,02h,02h,03h,03h,03h,03h ; 41 - 48 db 03h,03h,03h,03h,01h,01h,01h,01h ; 49 - 56 db 01h,01h,01h,01h,01h,01h,01h,01h ; 57 - 64 db 01h,01h,01h,01h,01h,01h,01h,01h ; 65 - 72 db 00h,00h,00h,00h,00h,00h,00h,00h ; 73 - 80 db 00h,00h,00h,00h,00h,00h,00h,00h ; 81 - 88 db 00h,00h,00h,00h,00h,00h,00h,00h ; 89 - 96 db 00h,00h,00h,00h,00h,00h,00h,00h ; 97 - 104 db 00h,00h,00h,00h,00h,00h,00h,00h ; 105 - 112 db 00h,00h,00h,00h,00h,00h,00h,00h ; 113 - 120 db 00h,00h,00h,00h,00h,00h,00h,00h ; 121 - 128 org 0200h display_table_2: db 10h,10h,10h,10h,10h,10h,10h,10h ; 1 - 8 db 10h,10h,10h,10h,08h,08h,08h,08h ; 9 - 16 db 08h,08h,08h,08h,08h,08h,08h,08h ; 17 - 24 db 04h,04h,04h,04h,04h,04h,04h,04h ; 25 - 32 db 04h,04h,04h,04h,02h,02h,02h,02h ; 33 - 40 db 02h,02h,02h,02h,02h,02h,02h,02h ; 41 - 48 db 01h,01h,01h,01h,01h,01h,01h,01h ; 49 - 56 db 01h,01h,01h,01h,01h,01h,01h,01h ; 57 - 64 db 01h,01h,01h,01h,00h,00h,00h,00h ; 65 - 72 db 00h,00h,00h,00h,00h,00h,00h,00h ; 73 - 80 db 00h,00h,00h,00h,00h,00h,00h,00h ; 81 - 88 db 00h,00h,00h,00h,00h,00h,00h,00h ; 89 - 96 db 00h,00h,00h,00h,00h,00h,00h,00h ; 97 - 104 db 00h,00h,00h,00h,00h,00h,00h,00h ; 105 - 112 db 00h,00h,00h,00h,00h,00h,00h,00h ; 113 - 120 db 00h,00h,00h,00h,00h,00h,00h,00h ; 121 - 128 org 0300h display_table_3: db 00h,00h,00h,00h,00h,00h,00h,00h ; 1 - 8 db 00h,00h,00h,00h,00h,00h,00h,00h ; 9 - 16 db 00h,00h,00h,00h,00h,00h,00h,00h ; 17 - 24 db 00h,00h,00h,00h,00h,00h,00h,00h ; 25 - 32 db 00h,00h,00h,00h,00h,00h,00h,00h ; 33 - 40 db 00h,00h,00h,00h,00h,00h,00h,00h ; 41 - 48 db 00h,00h,00h,00h,00h,00h,00h,00h ; 49 - 56 db 01h,01h,01h,01h,01h,01h,01h,01h ; 57 - 64 db 01h,01h,01h,01h,01h,01h,01h,01h ; 65 - 72 db 01h,01h,01h,01h,03h,03h,03h,03h ; 73 - 80 db 03h,03h,03h,03h,02h,02h,02h,02h ; 81 - 88 db 06h,06h,06h,06h,06h,06h,06h,06h ; 89 - 96 db 04h,04h,04h,04h,0ch,0ch,0ch,0ch ; 97 - 104 db 0ch,0ch,0ch,0ch,08h,08h,08h,08h ; 105 - 112 db 18h,18h,18h,18h,18h,18h,18h,18h ; 113 - 120 db 10h,10h,10h,10h,10h,10h,10h,10h ; 121 - 128 org 0400h display_table_4: db 00h,00h,00h,00h,00h,00h,00h,00h ; 1 - 8 db 00h,00h,00h,00h,00h,00h,00h,00h ; 9 - 16 db 00h,00h,00h,00h,00h,00h,00h,00h ; 17 - 24 db 00h,00h,00h,00h,00h,00h,00h,00h ; 25 - 32 db 00h,00h,00h,00h,00h,00h,00h,00h ; 33 - 40 db 00h,00h,00h,00h,00h,00h,00h,00h ; 41 - 48 db 00h,00h,00h,00h,00h,00h,00h,00h ; 49 - 56 db 00h,00h,00h,00h,01h,01h,01h,01h ; 57 - 64 db 01h,01h,01h,01h,01h,01h,01h,01h ; 65 - 72 db 01h,01h,01h,01h,01h,01h,01h,01h ; 73 - 80 db 02h,02h,02h,02h,02h,02h,02h,02h ; 81 - 88 db 02h,02h,02h,02h,04h,04h,04h,04h ; 89 - 96 db 04h,04h,04h,04h,04h,04h,04h,04h ; 97 - 104 db 08h,08h,08h,08h,08h,08h,08h,08h ; 105 - 112 db 08h,08h,08h,08h,10h,10h,10h,10h ; 113 - 120 db 10h,10h,10h,10h,10h,10h,10h,10h ; 121 - 128 ;##### Main ##### main: ld hl,08000h ld a,090h _ram_clear_loop: ld (hl),0 inc hl cp h jr nc,_ram_clear_loop io_put led_up,0ffh io_put led_down,0ffh io_put led_right,0ffh io_put led_left,0ffh io_set pio_a,0cfh ; Mode 3 io_set pio_a,00001111b ; 0:Out / 1:In io_set pio_a,007h ; Interrupt Disable io_set pio_b,0cfh ; Mode 3 io_set pio_b,00000000b ; 0:Out / 1:In io_set pio_b,007h ; Interrupt Disable io_put pio_a,10000000b io_put pio_b,0ffh io_put s_gen,00000000b ; Clock Generator io_set sio_a,00011000b ; Channel Reset A io_set sio_a,00000100b ; Resister Point = 4 io_set sio_a,10000100b ; Mode io_set sio_a,00000001b ; Resister Point = 1 io_set sio_a,00000000b ; Interrupt Mode io_set sio_a,00000101b ; Resister Point = 5 io_set sio_a,01101000b ; Transmit Start io_put ctc_0,20h ; Int. Address io_put ctc_0,10100101b io_put ctc_0,80 ; about 5msec ld a,0eh ld (channel),a call centering im 2 ei loop: call glove_scan call display_timer call tx_data_check jr loop ;##### Subroutines ##### x_value_set: ld a,(x_value+1) ld b,a ld a,(x_value) cp b ret z ld (x_value+1),a ld a,(channel) or 0b0h ld b,a call tx_data_set ld b,10 call tx_data_set ld a,(x_value) ld b,a call tx_data_set call x_value_disp ret y_value_set: ld a,(y_value+1) ld b,a ld a,(y_value) cp b ret z ld (y_value+1),a ld a,(channel) or 0b0h ld b,a call tx_data_set ld b,7 call tx_data_set ld a,(y_value) ld b,a call tx_data_set call y_value_disp ret tx_data_check: ld a,(tx_end) ld b,a ld a,(tx_top) cp b ret z io_set sio_a,00000000b ; Resister Point = 0 in a,(sio_a+1) bit 2,a ret z ld hl,tx_fifo ld l,b ld a,(hl) out (sio_a),a ld a,b inc a ld (tx_end),a ret tx_data_set: ld hl,tx_fifo ld a,(tx_top) ld l,a inc a ld (tx_top),a ld (hl),b ret centering: ld a,040h ld (x_value),a ld (y_value),a call x_value_set call y_value_set ret ;##### Panel LED Display ##### display_timer: ld a,(timer_flag+1) cp 50 ; about 250msec ret c xor a ld (timer_flag+1),a ld a,(timer_flag+2) inc a ld (timer_flag+2),a call x_value_disp call y_value_disp xor a ld (counts+0),a ld (counts+1),a ld (counts+2),a ld (counts+3),a ret x_value_disp: ld a,(timer_flag+2) bit 0,a jr nz,_x_disp_off ld hl,display_table_3 ld de,display_table_1 jr _x_disp_mix _x_disp_off: ld hl,display_table_4 ld de,display_table_2 _x_disp_mix: ld a,(x_value) ld l,a ld a,(hl) xor 0ffh out (led_right),a ld h,d ld a,(hl) xor 0ffh out (led_left),a ret y_value_disp: ld a,(timer_flag+2) bit 0,a jr z,_y_disp_off ld hl,display_table_3 ld de,display_table_1 jr _y_disp_mix _y_disp_off: ld hl,display_table_4 ld de,display_table_2 _y_disp_mix: ld a,(y_value) ld l,a ld a,(hl) xor 0ffh out (led_up),a ld h,d ld a,(hl) xor 0ffh out (led_down),a ret ;##### Power Glove Event Check ##### ;------------------------------------------------------------------------* ; Bit : 7 6 5 4 3 2 1 0 | ; right left down up start select first(B) thumb(A) | ;------------------------------------------------------------------------* glove_check: ld a,(glove_status) and 00001100b jr z,_glove_cont call centering ret _glove_cont: ld a,(glove_status) bit 1,a jp z,_glove_2 ld c,3 ; Fast Skip ld a,(glove_status) bit 4,a ; Up ? jr z,_glove_1 ld a,(counts+0) add a,c ld (counts+0),a bit 3,a jr z,_glove_1 ld a,(y_value) cp 7fh jr z,_glove_1 inc a ld (y_value),a call y_value_set xor a ld (counts+0),a ld (counts+1),a _glove_1: ld a,(glove_status) bit 5,a ; Down ? jr z,_glove_2 ld a,(counts+1) add a,c ld (counts+1),a bit 3,a jr z,_glove_2 ld a,(y_value) cp 0 jr z,_glove_2 dec a ld (y_value),a call y_value_set xor a ld (counts+0),a ld (counts+1),a _glove_2: ld a,(glove_status) bit 0,a ret z ld c,2 ; Slow Skip ld a,(glove_status) bit 6,a ; Left ? jr z,_glove_3 ld a,(counts+2) add a,c ld (counts+2),a bit 3,a jr z,_glove_3 ld a,(x_value) cp 0 jr z,_glove_3 dec a ld (x_value),a call x_value_set xor a ld (counts+2),a ld (counts+3),a _glove_3: ld a,(glove_status) bit 7,a ; Right ? ret z ld a,(counts+3) add a,c ld (counts+3),a bit 3,a ret z ld a,(x_value) cp 7fh ret z inc a ld (x_value),a call x_value_set xor a ld (counts+2),a ld (counts+3),a ret ;##### Power Glove Status Scan ##### glove_scan: ld a,(timer_flag+0) cp 0 ret z xor a ld (timer_flag+0),a ld a,(timer_flag+1) inc a ld (timer_flag+1),a ld b,0 call p_s_pulse in a,(pio_a) bit 0,a jr z,1$ set 0,b 1$: call clock_shift in a,(pio_a) bit 0,a jr z,2$ set 1,b 2$: call clock_shift in a,(pio_a) bit 0,a jr z,3$ set 2,b 3$: call clock_shift in a,(pio_a) bit 0,a jr z,4$ set 3,b 4$: call clock_shift in a,(pio_a) bit 0,a jr z,5$ set 4,b 5$: call clock_shift in a,(pio_a) bit 0,a jr z,6$ set 5,b 6$: call clock_shift in a,(pio_a) bit 0,a jr z,7$ set 6,b 7$: call clock_shift in a,(pio_a) bit 0,a jr z,8$ set 7,b 8$: call clock_shift ld a,b out (pio_b),a xor 0ffh ld (glove_status),a ; New Status call glove_check ret p_s_pulse: io_put pio_a,11000000b nop nop io_put pio_a,10000000b ret clock_shift: io_put pio_a,00000000b nop nop io_put pio_a,10000000b ret end ■■■HELLO.C■■■ #include "library.c" /* Common Tools for AKI-80 */ initial(){ lcd_module_setting(); /* using Port[A] */ timer_0_setting(); /* about 10msec */ midi_port_setting(); /* sio_a */ enable_interrupt(); /* EI */ sio_dummy_read(); /* omajinai */ } line_disp( int tt ){ int t; t = 14-(tt%15); switch(t){ case 0: disp_string( 0x40, "Hello World H"); break; case 1: disp_string( 0x40, " Hello World "); break; case 2: disp_string( 0x40, " Hello World "); break; case 3: disp_string( 0x40, " Hello World "); break; case 4: disp_string( 0x40, " Hello World "); break; case 5: disp_string( 0x40, "d Hello World"); break; case 6: disp_string( 0x40, "ld Hello Worl"); break; case 7: disp_string( 0x40, "rld Hello Wor"); break; case 8: disp_string( 0x40, "orld Hello Wo"); break; case 9: disp_string( 0x40, "World Hello W"); break; case 10: disp_string( 0x40, " World Hello "); break; case 11: disp_string( 0x40, "o World Hello"); break; case 12: disp_string( 0x40, "lo World Hell"); break; case 13: disp_string( 0x40, "llo World Hel"); break; case 14: disp_string( 0x40, "ello World He"); break; } } midi_display(){ if( midi > 127 ){ if( midi > 0xef ) rsb = 0; else{ rsb = midi & 0xf0; channel = midi & 0x0f; dcb = 0; } } else{ if( rsb == 0 ){} else if( (rsb == 0xc0) || (rsb == 0xc0) ){ disp_hex( 7, rsb+channel ); disp_hex( 10, midi ); disp_string( 13, " "); } else{ if( dcb == 0 ){ keyno = midi; dcb = 1; } else{ dcb = 0; if( (rsb==0x90) && (midi!=0) ){ disp_hex( 7, rsb+channel ); disp_hex( 10, keyno ); disp_hex( 13, midi ); } } } } } main(){ int timer,t; t = 0; initial(); disp_string( 0, "MIDI = "); while(1){ tx_midi_check(); lcd_disp_check(); midi = rx_midi_check(); if( midi < 256 ){ tx_midi_set( midi ); midi_display( midi ); } if( ram_get(timer_flag) != 0){ ram_put( timer_flag, 0 ); timer++; if( timer > 50 ){ timer = 0; line_disp(t++); } } } } ■■■IRCAM.SRC■■■ ;##### RAM Map ##### dseg org 0000h rx_fifo ds 2048 tx_fifo ds 2048 rx_top ds 2 rx_end ds 2 tx_top ds 2 tx_end ds 2 rsb ds 1 dcb ds 1 channel ds 1 keyno ds 1 timer_flag ds 1 timer ds 1 dac_no ds 1 dac_status ds 32 ; on=[0-254] , off=[255] sel_4051 ds 1 ad_no ds 1 ad_comm ds 1 ad_status ds 32 ; off=[0] , on=[1] , converting=[2] ad_old ds 32 eoc_mask ds 1 threshold ds 1 outstatus ds 1 led_mode ds 1 led_ch ds 1 led_data ds 1 led_phase ds 2 ;##### I/O Map ##### cseg ctc_0 equ 0010h sio_a equ 0018h sio_b equ 001ah pio_a equ 001ch pio_b equ 001eh ;##### MACRO ##### io_set macro @1,@2 ld a,@2 out (@1+1),a endm io_put macro @1,@2 ld a,@2 out (@1+0),a endm dtra_lp macro io_set sio_a,00000101b ; Resister Point = 5 io_set sio_a,11101000b ; Transmit Start, DTR = Low io_set sio_a,00000101b ; Resister Point = 5 io_set sio_a,01101000b ; Transmit Start, DTR = High endm dtrb_lp macro io_set sio_b,00000101b ; Resister Point = 5 io_set sio_b,11100000b ; Transmit Disable, DTR = Low io_set sio_b,00000101b ; Resister Point = 5 io_set sio_b,01100000b ; Transmit Disable, DTR = High endm pb_set macro @1 out (pio_b),a dtra_lp ld a,11111111b res @1,a out (pio_b),a dtrb_lp ld a,11111111b out (pio_b),a dtrb_lp endm pb_init macro xor a pb_set 0 xor a pb_set 1 xor a pb_set 2 xor a pb_set 3 endm led_out macro ld a,(led_data) xor 0ffh pb_set 4 endm led_set macro ld a,(led_mode) rrca rrca rrca and 11100000b ld b,a ld a,(led_ch) and 00011111b or b xor 0ffh pb_set 5 endm dac_out macro pb_set 6 ; input = [A] endm latch_7 macro ld a,(sel_4051) pb_set 7 endm ;##### RESET ##### org 0000h ld sp,09fffh di jp main ;##### INT / NMI ##### org 0020h dw _midi_ _midi_: ex af,af' exx ld de,(rx_top) ld a,10000000b or d ld h,a ld l,e in a,(sio_a+0) ld (hl),a inc de res 3,d ld (rx_top),de exx ex af,af' ei reti org 0066h retn org 0070h dw _timer_ _timer_: ex af,af' ld a,1 ld (timer_flag),a ex af,af' ei reti ;##### Main ##### org 0100h main: ld hl,08000h ld a,09fh _ram_clear_loop: ld (hl),0 inc hl cp h jr nc,_ram_clear_loop io_set pio_a,0cfh ; Mode 3 io_set pio_a,11111111b ; 0:Out / 1:In io_set pio_a,007h ; Interrupt Disable io_set pio_b,0cfh ; Mode 3 io_set pio_b,00000000b ; 0:Out / 1:In io_set pio_b,007h ; Interrupt Disable io_put ctc_0,70h ; Int. Address io_put ctc_0,10100101b ; Timer Mode io_put ctc_0,157 ; about 10msec io_set sio_b,00011000b ; Channel Reset B io_set sio_b,00000100b ; Resister Point = 4 io_set sio_b,11000100b ; Mode io_set sio_b,00000001b ; Resister Point = 1 io_set sio_b,00000000b ; Interrupt Mode io_set sio_b,00000101b ; Resister Point = 5 io_set sio_b,01100000b ; Transmit Disable, DTR = High io_set sio_b,00000010b ; Resister Point = 2 io_set sio_b,20h ; Vector Address io_set sio_a,00011000b ; Channel Reset A io_set sio_a,00000100b ; Resister Point = 4 io_set sio_a,11000100b ; Mode io_set sio_a,00000001b ; Resister Point = 1 io_set sio_a,00010000b ; Interrupt Mode io_set sio_a,00000101b ; Resister Point = 5 io_set sio_a,01101000b ; Transmit Start, DTR = High io_set sio_a,00000011b ; Resister Point = 3 io_set sio_a,11000001b ; Receive Start nop latch_7 ; Latch 7 normal waiting pb_init ld b,32 lp_001: push bc call dac_off ; all DAC off pop bc djnz lp_001 led_out ; Data LED 8bit led_set ; Mode/Channel LED 3+5bit ld a,4 ld (threshold),a ld a,0a0h ld (outstatus),a ld a,00000001b ld (led_phase+0),a xor a ld (led_phase+1),a im 2 ei in a,(sio_a+0) ; dummy read loop: call rx_data_check call tx_data_check call dac_trans ; DAC data re-new call ad_convert jr loop ;##### Timer Subroutines ##### timer_check: ld a,(timer_flag) cp 0 ret z xor a ld (timer_flag),a ld a,(timer) inc a ld (timer),a cp 100 ; about 1sec demo scan ret c xor a ld (timer),a ld a,(led_phase+0) cp 00000001b jp z,_timer_001 cp 00000010b jp z,_timer_010 cp 00000100b jp z,_timer_100 ld a,00000001b ld (led_phase+0),a xor a ld (led_phase+1),a ret _timer_001: ld (led_mode),a ld a,(led_phase+1) ld (led_ch),a ld c,a ld b,0 ld hl,ad_status add hl,bc ld a,(hl) ld (led_data),a xor a ld (timer),a led_set led_out ld a,(led_phase+1) inc a ld (led_phase+1),a bit 5,a ret z ld a,00000010b ld (led_phase+0),a ld a,00000001b ld (led_phase+1),a ret _timer_010: ld (led_mode),a ld a,(led_phase+1) ld (led_ch),a cp 00010000b jr nz,_timer_010_status ld a,(threshold) jr _timer_010_threshold _timer_010_status: ld a,(outstatus) _timer_010_threshold: ld (led_data),a xor a ld (timer),a led_set led_out ld a,(led_phase+1) sla a ld (led_phase+1),a bit 5,a ret z ld a,00000100b ld (led_phase+0),a xor a ld (led_phase+1),a ret _timer_100: ld (led_mode),a ld a,(led_phase+1) ld (led_ch),a ld c,a ld b,0 ld hl,dac_status add hl,bc ld a,(hl) cp 255 jr nz,_timer_dac_off xor a jr _timer_dac_mix _timer_dac_off: srl a _timer_dac_mix: ld (led_data),a xor a ld (timer),a led_set led_out ld a,(led_phase+1) inc a ld (led_phase+1),a bit 5,a ret z ld a,00000001b ld (led_phase+0),a xor a ld (led_phase+1),a ret ;##### A/D Subroutunes ##### ad_convert: call timer_check ld hl,ad_status ld a,(ad_no) ld c,a ld b,0 add hl,bc ld a,(hl) cp 0 jr nz,_ad_conv ld a,(ad_no) inc a and 00011111b ld (ad_no),a ret _ad_conv: cp 2 jp z,_ad_check _ad_new: cp 1 jr z,_ad_new_go xor a ld (hl),a ret _ad_new_go: ld a,2 ld (hl),a ld a,(ad_no) and 00000111b ld (ad_comm),a ld a,(ad_no) and 00011000b cp 00000000b jp z,_ad_0 cp 00001000b jp z,_ad_1 cp 00010000b jp z,_ad_2 jp _ad_3 _ad_0: ld a,(ad_comm) pb_set 0 ld a,(ad_comm) or 00001000b pb_set 0 ld a,(ad_comm) and 11110111b pb_set 0 ld a,00000001b ld (eoc_mask),a ret _ad_1: ld a,(ad_comm) pb_set 1 ld a,(ad_comm) or 00001000b pb_set 1 ld a,(ad_comm) and 11110111b pb_set 1 ld a,00000010b ld (eoc_mask),a ret _ad_2: ld a,(ad_comm) pb_set 2 ld a,(ad_comm) or 00001000b pb_set 2 ld a,(ad_comm) and 11110111b pb_set 2 ld a,00000100b ld (eoc_mask),a ret _ad_3: ld a,(ad_comm) pb_set 3 ld a,(ad_comm) or 00001000b pb_set 3 ld a,(ad_comm) and 11110111b pb_set 3 ld a,00001000b ld (eoc_mask),a ret _ad_check: ld a,(sel_4051) and 01111111b pb_set 7 in a,(pio_a) and 00001111b ld b,a ld a,(sel_4051) pb_set 7 ld a,(eoc_mask) and b ret z ld a,(ad_no) and 00011000b cp 00000000b jp z,_ad_d_0 cp 00001000b jp z,_ad_d_1 cp 00010000b jp z,_ad_d_2 jp _ad_d_3 _ad_d_0: ld a,00010000b pb_set 0 in a,(pio_a) ld d,a xor a pb_set 0 jp _ad_trsnsmit _ad_d_1: ld a,00010000b pb_set 1 in a,(pio_a) ld d,a xor a pb_set 1 jp _ad_trsnsmit _ad_d_2: ld a,00010000b pb_set 2 in a,(pio_a) ld d,a xor a pb_set 2 jp _ad_trsnsmit _ad_d_3: ld a,00010000b pb_set 3 in a,(pio_a) ld d,a xor a pb_set 3 _ad_trsnsmit: ld hl,ad_status ld a,(ad_no) ld c,a ld b,0 add hl,bc ld a,1 ld (hl),a ld hl,ad_old ld a,(ad_no) ld c,a ld b,0 add hl,bc srl d ; [d] = new 7bit data ld a,d ld b,(hl) ; [b] = old cp b ; a - b ? jr c,_ad_inv ; a < b sub b _ad_cmp: ld b,a ld a,(threshold) cp b ; (a-b)z-10) && (z+10>x) && (9y) ){ oy[i] = py[i]; py[i] = y; flag++; } } } void input_check(){ /* dummy */ } void midi_transmit(){ /* dummy */ } public void paint(Graphics g){ int z; flag = 0; for(int i=0;i | Box |-----------> to FAMICOM =====| @ + A B | | | 15pin ====|--||---------+ +--------+ connector ====+ | | +----+ 3 lines +-----+ | | 1 |------------| 2 | | +----+ +--+ | | | | | +--+ | | | 6 lines | | | | 7 lines +----+ | | 3 |----- +----+ ファミコンの15ピンコネクタにつながるケーブルはまず、タバコ箱大のBoxに 直接(コネクタなしで)つながっています。 ここからは、同様に直接ケーブルが出ていて、TVに取り付ける3つの 超音波センサBox(3−2−1)につながっています。 そしてこのBoxには別の9ピンコネクタがあって、ここにグローブ部分からの ケーブルのコネクタを挿すようになっています。 そこで今回の改造では、このBoxをバラして、グローブからの9ピンコネクタ のついた基板をそのまま使って、ここにマイコンボードを入れた箱として 装置を作りました。 ここには、表示用のLEDを並べて、さらにMIDI出力コネクタもついています。 ACアダプタもこの箱につなぎますから、ファミコンに行くためのケーブルは 不要となりました。 パワーグローブの動作としては、グローブ部分に内蔵されたマイコンが全体の 処理を実行しています。 手の甲の部分に、水平に並んだ2つの超音波振動子があって、たぶん左右に 時間差をもって超音波を出します。実際には、ビートなのか、ジリジリと 音が聴こえています。 これを、1−2−3の3つの超音波センサBoxによって検出します。これは 上図のような位置関係で、14インチテレビの3隅に両面テープで固定する ようになっています。僕は実際には、これを一辺1.5mほどに延長しましたが、 感度は大丈夫です。 2のBoxには、ABボタンと十字ボタンの位置に相当するLEDがついていて、 「いまパワーグローブがどの信号を出しているか」、つまり基準ポインティング のための情報を表示しています。これを見て、かなり頻繁に「センタリング」、 つまり「ここが指示空間の中央だよ」とパワーグローブに教えるための、センター ボタンも手の甲にあります。 このLEDを表示させる情報は、わざわざそのために発生しているのでなく、 ファミコンに返されるデータをそのまま表示していました。そこで、解析は この1−2−3のBoxをバラしてオシロを当てることから始まりました。 図に描いたように、1から2につながっているケーブルの中身は、信号線が 3本しかありません。2本は電源(+5V)とGNDですから、あとの1本は超音波センサ の出力そのままということになります。各センサの出力はそれぞれ、多重化 されずにグローブ内のCPUにいきます。 2から3にいくケーブルでは、センサが1本増えて、さらに6個のLEDを表示する ために、クロックとデータラインの2本が増えて6本となります。 当然、2のBoxの中にはシフトレジスタがあって、このシリアルデータをラッチ してLED表示しています。 そして3のBoxでもう1本のセンサ信号が加わって、ここから7本の信号ライン としてコントロールBoxに行っていました。 なお、パワーグローブは電源ラインを供給しただけでは、ファミコンからの 読み出しクロックが来ないために、超音波も出さないし、センサの検出も しないようです。CPUは当然ながら自分のクロックを持っていますが、センサ 検出の処理はファミコンからのクロックによって動作させているようでした。 そこでダミーでいろいろなスキャンクロックを与えてみると、通常のファミコン ではおそらく1msec程度よりも周期が長いらしく、それよりも頻繁にデータを 要求しても、十分にデータを返送できない、ロックしたような状態になりました。 だいたい5msecとか10msecとかのオーダでスキャンしてやると、けなげにデータ を返してくれました。 ...というところで、今回は「パワーグローブってどんなもの?」でした。 ============================================================================ 00491/00491 NBD03033 ★長嶋★ 本論の周辺ばかりですいませんが (19) 93/06/13 00:45 ★長嶋★です。 ◆そういえば、ファミコンもってないようなこと書かれてました ◆けど、どうやって電源ピンを当てたのでしょうか?クロックについても書かれて ◆ましたが、こんなもん実機なしでどうやって見つけたのでしょうか? 内部の信号線のカラーについては、メイドインチャイナということもあるし、 ロットによって違う可能性もあるので、記事にしても信頼性は保証できませんけど。 あくまで、僕の手元のものはそうなっている、という条件がつきます。 それからファミコンはもっていませんが、電源ピンはケースを開けて、ICの基板 パターンを追って、テスタで確かめればすぐわかります。 クロックとデータはなかなかのクイズでしたが、ファミコンのコントローラは 中にシフトレジスタの164が1個入っているだけ、というのは常識ですから (多くの解析本に書いてありますよね)、クロックとストローブとデータの 3本の信号しかありません。 そこで、超音波の受信ボックスを開けて、スイッチ出力と同じ状態を表示して いるLEDボックスの164からテスタで追って、判明しました。 つまり信号としては、グローブ内蔵のCPUがファミコンに返している信号を、 LEDボックスは横取りして表示していたわけです。なかなかやります。(^_^) ここまでの解析は、テスタしか使っていません。 そのクロック周波数ですが、まあファミコンのCPUクロックは2MHzぐらい ですから、どんなにソフトが頻繁にアクセスしてもこれくらいだろう、という 目算だけです。(^_^;) 実際には秋月ボードだと、その数倍から10倍ほどの頻度でアクセスできるので、 いろいろ試してみましたが、けっこう条件はファジイでした。 あまり速いと、さすがにパワーグローブのCPUがデータを返せない(おそらく、 データのスキャンが間に合わない)ためか、ウンともスンとも言わなくなります。 そしてもっとレートを下げると、ちゃんと返してきます。 もっともっと遅くするとどうなるのか知りませんが、電源だけでクロックを 与えないと、不審に思うのか(^_^;)、止まってしまいます。(^_^) ◆やっぱりCPUをつかったのですか。CPUを使うのでしたらいろいろなことが ◆できそうですね。 ◆でもCPUをつかうと大掛かりになりそうなので(もっとも8748を使うつもり ◆でしたが。Z80の方が楽かな?)、どうしたものかと思ってました。 パソコンでなにかをする、という人は、もちろんパソコンにつないでもできます。 ただ、パワーグローブをセンサとして使う、というだけのために、わざわざ パソコンを1台使う、というのは、僕にとっては、もったいない話だと思います。 名刺サイズの(秋月ボードはその2/3ほど)CPUカードで十分だと思うのです。 時間があったら、今度の改造では、ワイヤレス送信にして、さらにポータブル にしたいと思っています。ここにいちいちパソコンがぶら下がっていては、 どこにも持っていけませんよね。(^_^;) 8748でもなんでも、使い慣れたCPUでいいと思いますよ。 仕掛けはとっても簡単ですから。 プログラムにしても、ICEを使わずに、フローチャートもなにもナシで、 いきなりエディタで書いてアセンブルして、RAMエミュレータに転送して 「せーの」でリセットして、動いたらラッキー!という作り方でした。 ソフトはごくごく小さいものです。開発期間は1時間ぐらいかな。(^_^;) ============================================================================ 00579/00579 NBD03033 ★長嶋★ パワーグローブ改造希望者は何人いるのかな (19) 93/10/21 08:03 ★長嶋★です。 ◆2週間前にパワーグローブを3つも手にいれましたが、なんともちゃちいものなん ◆ですね。ファミコン用=おもちゃなのだから仕方ありませんか?見るところ、超音波 ◆で、センシングするようで赤外線でないのがなんともいえない虚脱感を与えてくれま ◆したが、実際には超音波のほうがいいんですか? 超音波であることは、耳をすましてみるとわかります。 超音波のはずなのに、「ジーッ」と聴こえます。(^_^;;) 赤外線よりもコストが安いのと、バースト状にパルス化して時間差を検出する のに、回路が簡単なのでしょうね。 そして最大の理由は、角度の指向性がキツくないところだと思います。 僕が最初に改造したグローブでは、14インチ程度のテレビをL字型に囲む 3個の超音波受信センサを結ぶケーブルを、切って延長して、1辺を1.5メートル ほどに大きくしていますが、ちゃんとセンシングしてくれます。 センサは、この送信左右2個、受信3個の超音波と、あとはグローブの指の曲がり を検出する歪ゲージ(といっても感圧プラスチック板)の2種類ですね。 どうも小指は入っていないらしくて、親指から薬指までの4本を、それぞれ 検出しています。 2台目に改造したワイヤレス版(実はまだ未完成)では、この指曲がりセンサ の情報を直接取り出してA/D変換しました。 結構、抵抗値は大きく変化した記憶があります。2倍以上あったかな。 ◆どうして、わたしに「パワーグローブMIDIコントローラー」に必然性があるかとい ◆えば、前々からミュージカルに出ていたりするもので、歌やダンスの下手なわたし ◆には、当然コンピューターの助けが必要なのです。 うーーーーむ。 これは改造とは別の問題として、なかなか厳しいですよ。 なんせパワーグローブは、   ・精度が悪い   ・レスポンスがやや悪い   ・ノイズ対策でデータを積分している関係で、センタリングを頻繁にして    やらないといけない   ・A/Dトリミングのために、頻繁に「にぎにぎ」をしないといけない などの問題点があります。 一言で言えば、「つかえねぇー」(^_^;)のです。 でなければ、定価15000円のものを300円で山積みにして売っているワケが ないでしょう。(^_^;) ですから、「そんな程度」と最初から割り切って、逆に言えば「できたものを なんとか使えるように、使い方の方を考える」というアプローチでないと、 ちょっと難しいと思います。 僕の作品でも、細かなコントロールはあきらめて、トリガ出しにしか使わない とか、他のセンサの補助として、といった使い方の限定しています。 ということで、まずはファミコンの普通のゲームのコントローラとして、グローブ を試しに使ってみて下さい。 いろいろなボタンとか連射キャンセルボタンなど、基本的な使い方はどうせ必要 になりますから。 その上で、「こんなもんだ」という事実認識をしてから、取り掛かったほうが いいと思います。 過剰な期待は絶対に禁物です。 なんせ、定価15000円が300円なのですから。理由がある筈でしょう。(^_^;) まずは、グローブからケーブルでつながっている「箱」を開けて、中の配線の 「色」をチェックしてみて下さい。 以前に僕が書いた記事で、色まであったかどうかわかりませんが、同じ色の コードであれば、話は簡単です。 もしロットによって配線が違うと、オシロで調べるとか、大変になります。 まず最初の改造としては、グローブ自体をバラさずに、 「ファミコンに代わってグローブを騙す」 というマシンを作りましょう。 それから、秋葉原の秋月電子通商の「AKI-80」ボードを入手して、キットを 完成して下さい。 このボードについては、トランジスタ技術の10月号に、MIDIマージャを 作った僕の製作記事がありますから、参考にして下さい。 ============================================================================ 00586/00586 NBD03033 ★長嶋★ パワーグローブ解析情報 つづき (19) 93/10/29 22:05 ★長嶋★です。 前回の記事では抜けていましたが、この「Box」からファミコンに行っている 15ピンコネクタは、実は5本しか線がない筈です。 これが、 ・「赤」---電源(+5V) ・「茶」---グランド ・「黄」---データライン(Box→ファミコン) ・「緑」---クロック(ファミコン→Box) ・「橙」---トリガパルス(ファミコン→Box) という配置になっていれば、僕のグローブと同じロットである確率が高く、 改造もうまく行く確率が高いというわけです。 バラしたのでしたら、チェックしてみて下さい。 ...ところで、上の情報は解析したときのノートに書いていたのですが、改造した 「MIDIパワーグローブ」については、回路図もなにもなくて、アドリブで ダイレクトに作っていたことが判明しました。(^_^;) トラ技の記事でもそうでしたが、あの程度の回路は何も書かずに考えながらハンダ 付けしていくと出来てしまって、そのまま勢いでCPUボードのソフトまで書いて 完成させると、あとで何がなんだかわからない(^_^;)ということになります。 やっていることは、上の5本の信号のうち電源はCPUボードと共通で、あとは 秋月のCPUボードから2本の信号出力を「緑」「橙」に与えてソフト的に クロックを作り、1本の「黄」入力を判定してパワーグローブがファミコンに 送っているつもりの情報を獲得したのです。 タイミングだけ調整しましたが、このCPUプログラムはほんのちょっとの ものです。ソースが残っていましたが、親指と人差指をそれぞれのON/OFFスイッチ に使用して、グローブの上下でボリュームを、左右でパンポットを送りつつ パネルに十字に並べたLED群を点滅させる、というプログラムで、I/Oの定義や マクロ定義まで全部を含めて482行でした。 再アセンブルしてみたら、512バイトの定数テーブルを含めて1848バイトの プログラムサイズでした。実体は1Kバイト程度のものです。(^_^;) ということで、秋月CPUボードの実験に進んで下さい。 ============================================================================ ■■■README.TXT■■■ 「Java & AKI-80」付属FD について このFDには、本書の文中に登場するリストのうち、読者の実験に利用 できるもの(ソースプログラム、バッチファイル等)を納めてあります。 ファイル名は、本文中のファイル名と一致していますが、唯一の例外と して、  ・Javaソースプログラム(****.jav)  ・HTMLファイル(****.htm) の2種類だけは、拡張子の最後の1文字が省略されていますので、 Windowsなどの環境で利用する場合には、適当にリネームして 下さい。 ■■■REJAVA.C■■■ #include #include FILE *fp; int ni[3000]; unsigned char m[1000000], n[3000][256]; void byte_code_printf( long address, long length ){ int k, l, p1, p2, p3, mm, m1, m2, m3, m4; long pp, p4, p5; pp = address; p1 = m[pp+1]+256*m[pp]; pp += 2; p2 = m[pp+1]+256*m[pp]; pp += 2; printf(" , max_stack = %d , max_locals = %d , ", p1, p2 ); p4 = m[pp+3]+256*(m[pp+2]+256*(m[pp+1]+256*m[pp])); pp += 4; printf("code_length = %d\n", p4); k = 0; while( k < p4 ){ printf("\n\t\t\t\t%06X\t", k ); mm = m[pp++]; switch(mm){ default : printf("?? %02X ??\t\t(..... not defined .....)", mm); break; case 16: m1 = m[pp++]; printf("bipush\t%02X\t(Push one-byte signed integer)", m1); k += 1; break; case 17: m1 = m[pp++]; m2 = m[pp++]; printf("sipush\t%04X\t(Push two-byte signed integer)", 256*m1+m2); k += 2; break; case 18: m1 = m[pp++]; printf("ldc1\t%02X\t(Push item from constant pool)", m1); k += 1; break; case 19: m1 = m[pp++]; m2 = m[pp++]; printf("ldc2\t%04X\t(Push item from constant pool)", 256*m1+m2); k += 2; break; case 20: m1 = m[pp++]; m2 = m[pp++]; printf("ldc2w\t%04X\t(Push long or double from constant pool)", 256*m1+m2); k += 2; break; case 1: printf("aconst_null\t\t(Push null object reference)"); break; case 2: printf("iconst_m1\t\t(Push integer constant -1)"); break; case 3: case 4: case 5: case 6: case 7: case 8: printf("iconst_%d\t\t(Push integer constant)", mm-3); break; case 9: case 10: printf("lconst_%d\t\t(Push long integer constant)", mm-9); break; case 11: case 12: case 13: printf("fconst_%d\t\t(Push single float)", mm-11); break; case 14: case 15: printf("dconst_%d\t\t(Push double float)", mm-14); break; case 21: m1 = m[pp++]; printf("iload\t%02X\t(Load integer from local variable)", m1); k += 1; break; case 26: case 27: case 28: case 29: printf("iload_%d\t\t(Load integer from local variable)", mm-26); break; case 22: m1 = m[pp++]; printf("lload\t%02X\t(Load long integer from local variable)", m1); k += 1; break; case 30: case 31: case 32: case 33: printf("lload_%d\t\t(Load long integer from local variable)", mm-30); break; case 23: m1 = m[pp++]; printf("fload\t%02X\t(Load single float from local variable)", m1); k += 1; break; case 34: case 35: case 36: case 37: printf("fload_%d\t\t(Load single float from local variable)", mm-34); break; case 24: m1 = m[pp++]; printf("dload\t%02X\t(Load double float from local variable)", m1); k += 1; break; case 38: case 39: case 40: case 41: printf("dload_%d\t\t(Load double float from local variable)", mm-38); break; case 25: m1 = m[pp++]; printf("aload\t%02X\t(Load object reference from local variable)", m1); k += 1; break; case 42: case 43: case 44: case 45: printf("aload_%d\t\t(Load object reference from local variable)", mm-42); break; case 54: m1 = m[pp++]; printf("istore\t%02X\t(Store integer into local variable)", m1); k += 1; break; case 59: case 60: case 61: case 62: printf("istore_%d\t\t(Store integer into local variable)", mm-59); break; case 55: m1 = m[pp++]; printf("lstore\t%02X\t(Store long integer into local variable)", m1); k += 1; break; case 63: case 64: case 65: case 66: printf("lstore_%d\t\t(Store long integer into local variable)", mm-63); break; case 56: m1 = m[pp++]; printf("fstore\t%02X\t(Store float into local variable)", m1); k += 1; break; case 67: case 68: case 69: case 70: printf("fstore_%d\t\t(Store float into local variable)", mm-67); break; case 57: m1 = m[pp++]; printf("dstore\t%02X\t(Store double float into local variable)", m1); k += 1; break; case 71: case 72: case 73: case 74: printf("dstore_%d\t\t(Store double float into local variable)", mm-71); break; case 58: m1 = m[pp++]; printf("astore\t%02X\t(Store object reference into local variable)", m1); k += 1; break; case 75: case 76: case 77: case 78: printf("astore_%d\t\t(Store object reference into local variable)", mm-75); break; case 132: m1 = m[pp++]; m2 = m[pp++]; printf("iinc\t%02X %02X\t(Increment local variable by constant)", m1, m2); k += 2; break; case 196: m1 = m[pp++]; printf("wide\t%02X\t(Wider index for accessing local variables in load, store and increment)", m1); k += 1; break; case 188: m1 = m[pp++]; printf("newarray\t%02X\t(Allocate new array) : ", m1); k += 1; switch(m1){ case 4: printf("array type = T_BOOLEAN"); break; case 5: printf("array type = T_CHAR"); break; case 6: printf("array type = T_FLOAT"); break; case 7: printf("array type = T_DOUBLE"); break; case 8: printf("array type = T_BYTE"); break; case 9: printf("array type = T_SHORT"); break; case 10: printf("array type = T_INT"); break; case 11: printf("array type = T_LONG"); break; } break; case 189: m1 = m[pp++]; m2 = m[pp++]; printf("anewarray\t%04X\t(Allocate new array of references to objects)", 256*m1+m2); k += 2; break; case 197: m1 = m[pp++]; m2 = m[pp++]; m3 = m[pp++]; printf("multianewarray\t%04X %02X\t(Allocate new multi-dimensional array)", 256*m1+m2, m3); k += 3; break; case 190: printf("arraylength\t\t(Get length of array)"); break; case 46: printf("iaload\t\t(Load integer from array)"); break; case 47: printf("laload\t\t(Load long integer from array)"); break; case 48: printf("faload\t\t(Load single float from array)"); break; case 49: printf("daload\t\t(Load double float from array)"); break; case 50: printf("aaload\t\t(Load object reference from array)"); break; case 51: printf("baload\t\t(Load signed byte from array)"); break; case 52: printf("caload\t\t(Load character from array)"); break; case 53: printf("saload\t\t(Load short from array)"); break; case 79: printf("iastore\t\t(Store into integer array)"); break; case 80: printf("lastore\t\t(Store into long integer array)"); break; case 81: printf("fastore\t\t(Store into single float array)"); break; case 82: printf("dastore\t\t(Store into double float array)"); break; case 83: printf("aastore\t\t(Store into object reference array)"); break; case 84: printf("bastore\t\t(Store into signed byte array)"); break; case 85: printf("castore\t\t(Store into character array)"); break; case 86: printf("sastore\t\t(Store into short array)"); break; case 0: printf("nop\t\t(Do nothing)"); break; case 87: printf("pop\t\t(Pop top stack word)"); break; case 88: printf("pop2\t\t(Pop top two stack words)"); break; case 89: printf("dup\t\t(Duplicate top stack word)"); break; case 92: printf("dup2\t\t(Duplicate top two stack words)"); break; case 90: printf("dup_x1\t\t(Duplicate top stack word and put two down)"); break; case 93: printf("dup2_x1\t\t(Duplicate top two stack words and put two down)"); break; case 91: printf("dup_x2\t\t(Duplicate top stack word and put three down)"); break; case 94: printf("dup2_x2\t\t(Duplicate top two stack words and put three down)"); break; case 95: printf("swap\t\t(Swap top two stack words)"); break; case 96: printf("iadd\t\t(Integer add)"); break; case 97: printf("ladd\t\t(Long integer add)"); break; case 98: printf("fadd\t\t(Single floats add)"); break; case 99: printf("dadd\t\t(Double floats add)"); break; case 100: printf("isub\t\t(Integer subtract)"); break; case 101: printf("lsub\t\t(Long integer subtract)"); break; case 102: printf("fsub\t\t(Single float subtract)"); break; case 103: printf("dsub\t\t(Double float subtract)"); break; case 104: printf("imul\t\t(Integer multiply)"); break; case 105: printf("imul\t\t(Long integer multiply)"); break; case 106: printf("fmul\t\t(Single float multiply)"); break; case 107: printf("dmul\t\t(Double float multiply)"); break; case 108: printf("idiv\t\t(Integer divide)"); break; case 109: printf("ldiv\t\t(Long integer divide)"); break; case 110: printf("fdiv\t\t(Single float divide)"); break; case 111: printf("ddiv\t\t(Double float divide)"); break; case 112: printf("irem\t\t(Integer remainder)"); break; case 113: printf("lrem\t\t(Long integer remainder)"); break; case 114: printf("frem\t\t(Single float remainder)"); break; case 115: printf("drem\t\t(Double float remainder)"); break; case 116: printf("ineg\t\t(Integer negate)"); break; case 117: printf("lneg\t\t(Long integer negate)"); break; case 118: printf("fneg\t\t(Single float negate)"); break; case 119: printf("dneg\t\t(Double float negate)"); break; case 120: printf("ishl\t\t(Integer shift left)"); break; case 122: printf("ishr\t\t(Integer arithmetic shift right)"); break; case 124: printf("iushr\t\t(Integer logical shift right)"); break; case 121: printf("lshl\t\t(Long integer shift left)"); break; case 123: printf("lshr\t\t(Long integer arithmetic shift right)"); break; case 125: printf("lushr\t\t(Long integer logical shift right)"); break; case 126: printf("iand\t\t(Integer boolean AND)"); break; case 127: printf("land\t\t(Long integer boolean AND)"); break; case 128: printf("ior\t\t(Integer boolean OR)"); break; case 129: printf("lor\t\t(Long integer boolean OR)"); break; case 130: printf("ixor\t\t(Integer boolean XOR)"); break; case 131: printf("lxor\t\t(Long integer boolean XOR)"); break; case 133: printf("i2l\t\t(Integer to long integer conversion)"); break; case 134: printf("i2f\t\t(Integer to single float)"); break; case 135: printf("i2d\t\t(Integer to double float)"); break; case 136: printf("l2i\t\t(Long integer to integer)"); break; case 137: printf("l2f\t\t(Long integer to single float)"); break; case 138: printf("l2d\t\t(Long integer to double float)"); break; case 139: printf("f2i\t\t(Single float to integer)"); break; case 140: printf("f2l\t\t(Single float to long integer)"); break; case 141: printf("f2d\t\t(Single float to double float)"); break; case 142: printf("d2i\t\t(Double float to integer)"); break; case 143: printf("d2l\t\t(Double float to long integer)"); break; case 144: printf("d2f\t\t(Double float to single float)"); break; case 145: printf("int2byte\t\t(Integer to signed byte)"); break; case 146: printf("int2char\t\t(Integer to char)"); break; case 147: printf("int2short\t\t(Integer to short)"); break; case 153: m1 = m[pp++]; m2 = m[pp++]; printf("ifeq\t%04X\t(Branch if equal to 0)", 256*m1+m2); k += 2; break; case 198: m1 = m[pp++]; m2 = m[pp++]; printf("ifnull\t%04X\t(Branch if null)", 256*m1+m2); k += 2; break; case 155: m1 = m[pp++]; m2 = m[pp++]; printf("iflt\t%04X\t(Branch if less than 0)", 256*m1+m2); k += 2; break; case 158: m1 = m[pp++]; m2 = m[pp++]; printf("ifle\t%04X\t(Branch if less than or equal to 0)", 256*m1+m2); k += 2; break; case 154: m1 = m[pp++]; m2 = m[pp++]; printf("ifne\t%04X\t(Branch if not equal to 0)", 256*m1+m2); k += 2; break; case 199: m1 = m[pp++]; m2 = m[pp++]; printf("ifnonnull\t%04X\t(Branch if not null)", 256*m1+m2); k += 2; break; case 157: m1 = m[pp++]; m2 = m[pp++]; printf("ifgt\t%04X\t(Branch if greater than 0)", 256*m1+m2); k += 2; break; case 156: m1 = m[pp++]; m2 = m[pp++]; printf("ifge\t%04X\t(Branch if greater than or equal to 0)", 256*m1+m2); k += 2; break; case 159: m1 = m[pp++]; m2 = m[pp++]; printf("if_icmpeq\t%04X\t(Branch if integers equal)", 256*m1+m2); k += 2; break; case 160: m1 = m[pp++]; m2 = m[pp++]; printf("if_icmpne\t%04X\t(Branch if integers not equal)", 256*m1+m2); k += 2; break; case 161: m1 = m[pp++]; m2 = m[pp++]; printf("if_icmplt\t%04X\t(Branch if integer less than)", 256*m1+m2); k += 2; break; case 163: m1 = m[pp++]; m2 = m[pp++]; printf("if_icmpgt\t%04X\t(Branch if integer greater than)", 256*m1+m2); k += 2; break; case 164: m1 = m[pp++]; m2 = m[pp++]; printf("if_icmple\t%04X\t(Branch if integer less than or equal to)", 256*m1+m2); k += 2; break; case 162: m1 = m[pp++]; m2 = m[pp++]; printf("if_icmpge\t%04X\t(Branch if integer greater than or equal to)", 256*m1+m2); k += 2; break; case 148: printf("lcmp\t\t(Long integer compare)"); break; case 149: printf("fcmpl\t\t(Single float compare (-1 on NaN))"); break; case 150: printf("fcmpg\t\t(Single float compare (1 on NaN))"); break; case 151: printf("dcmpl\t\t(Double float compare (-1 on NaN))"); break; case 152: printf("dcmpg\t\t(Double float compare (1 on NaN))"); break; case 165: m1 = m[pp++]; m2 = m[pp++]; printf("if_acmpeq\t%04X\t(Branch if object references are equal)", 256*m1+m2); k += 2; break; case 166: m1 = m[pp++]; m2 = m[pp++]; printf("if_acmpne\t%04X\t()Branch if object references not equal", 256*m1+m2); k += 2; case 167: m1 = m[pp++]; m2 = m[pp++]; printf("goto\t%04X\t(Branch)", 256*m1+m2); k += 2; break; case 200: m1 = m[pp++]; m2 = m[pp++]; m3 = m[pp++]; m4 = m[pp++]; printf("goto_w\t%04X %04X\t(Branch always (wide index))", 256*m1+m2, 256*m3+m4); k += 2; break; case 168: m1 = m[pp++]; m2 = m[pp++]; printf("jsr\t%04X\t(Jump subroutine)", 256*m1+m2); k += 2; break; case 201: m1 = m[pp++]; m2 = m[pp++]; m3 = m[pp++]; m4 = m[pp++]; printf("jsr_w\t%04X %04X\t(Jump subroutine (wide index))", 256*m1+m2, 256*m3+m4); k += 2; break; case 169: m1 = m[pp++]; printf("ret\t%02X\t(Return from subroutine)", m1); k += 1; break; case 209: m1 = m[pp++]; m2 = m[pp++]; printf("ret_w\t%04X\t(Return from subroutine (wide index))", 256*m1+m2); k += 2; break; case 172: printf("ireturn\t\t(Return integer from function)"); break; case 173: printf("lreturn\t\t(Return long integer from function)"); break; case 174: printf("freturn\t\t(Return single float from function)"); break; case 175: printf("dreturn\t\t(Return double float from function)"); break; case 176: printf("areturn\t\t(Return object reference from function)"); break; case 177: printf("return\t\t(Return (void) from procedure)"); break; case 202: printf("breakpoint\t\t(Stop and pass control to breakpoint handler)"); break; case 170: printf("tableswitch\t\t(Access jump table by index and jump)"); printf("\n\t\t\t\t\t\t**********************"); break; case 171: printf("lookupswitch\t\t(Access jump table by key match and jump)"); printf("\n\t\t\t\t\t\t**********************"); break; case 181: m1 = m[pp++]; m2 = m[pp++]; printf("putfield\t%04X\t(Set field in object)", 256*m1+m2); k += 2; break; case 180: m1 = m[pp++]; m2 = m[pp++]; printf("getfield\t%04X\t(Fetch field from object)", 256*m1+m2); k += 2; break; case 179: m1 = m[pp++]; m2 = m[pp++]; printf("putstatic\t%04X\t(Set static field in class)", 256*m1+m2); k += 2; break; case 178: m1 = m[pp++]; m2 = m[pp++]; printf("getstatic\t%04X\t(Get static field from class)", 256*m1+m2); k += 2; break; case 182: m1 = m[pp++]; m2 = m[pp++]; printf("invokevirtual\t%04X\t(Invoke instance method)", 256*m1+m2); k += 2; break; case 183: m1 = m[pp++]; m2 = m[pp++]; printf("invokenonvirt\t%04X\t(Invoke instance method, dispatching based on compile-time type)", 256*m1+m2); k += 2; break; case 184: m1 = m[pp++]; m2 = m[pp++]; printf("invokestatic\t%04X\t(Invoke a class (static) method)", 256*m1+m2); k += 2; break; case 185: m1 = m[pp++]; m2 = m[pp++]; m3 = m[pp++]; m4 = m[pp++]; printf("invokeinterf\t%04X %02X %02X\t(Invoke interface method)", 256*m1+m2, m3, m4); k += 2; break; case 191: printf("athrow\t\t(Throw exception or error)"); break; case 187: m1 = m[pp++]; m2 = m[pp++]; printf("new\t%04X\t(Create new object)", 256*m1+m2); k += 2; break; case 192: m1 = m[pp++]; m2 = m[pp++]; printf("checkcast\t%04X\t(Make sure object is of given type)", 256*m1+m2); k += 2; break; case 193: m1 = m[pp++]; m2 = m[pp++]; printf("instanceof\t%04X\t(Determine if an object is of given type)", 256*m1+m2); k += 2; break; case 194: printf("monitorenter\t\t(Enter monitored region of code)"); break; case 195: printf("monitorexit\t\t(Exit monitored region of code)"); break; } k++; } p1 = m[pp+1]+256*m[pp]; pp += 2; printf("\n\n\t\t\texception_table_length = %d", p1 ); if( p1 != 0 ){ printf("\n"); for(k=0;k= 0 ){ if( ( address % 16 ) == 0 ){ printf("\n\t%08X : ", address); ct = 0; } ss = d & 0xff; printf("%02X ",ss); m[count++] = ss; if( ( address % 16 ) == 7 ) printf("- "); if( ( ss > 0x1f ) && ( ss < 0x7f ) ) st[ct++] = ss; else st[ct++] = '.'; if( ( address++ % 16 ) == 15 ) printf(" %s", st); } fclose(fp); printf("\n\nTotal File Length = %d bytes.", count); p0 = m[pp+3]+256*(m[pp+2]+256*(m[pp+1]+256*m[pp])); printf("\n\n\t%08X Magic Code [CAFEBABE] = %08X", pp, p0 ); pp += 4; if( p0 != 0xcafebabe ){ printf("\n\n... target file is not Java (;_;) ...\n\n"); exit(1); } else printf(" --- OK (^_^)"); printf("\n\n\t%08X Version : major version %d , minor version %d", pp, m[pp+3]+256*m[pp+2], m[pp+1]+256*m[pp] ); pp += 4; p1 = m[pp+1]+256*m[pp]; printf("\n\n\t%08X Constant Pool : total number = %d\n", pp, p1 ); pp += 2; for(i=1;i ",d0); switch(d0){ case 7: p2 = m[pp+1]+256*m[pp]; pp += 2; ni[i] = p2; printf("CONSTANT_Class , name_index = %d", p2); break; case 9: p2 = m[pp+1]+256*m[pp]; pp += 2; p3 = m[pp+1]+256*m[pp]; pp += 2; printf("CONSTANT_Fieldref , class_index = %d", p2); printf(" , name_and_type_index = %d", p3); break; case 10: p2 = m[pp+1]+256*m[pp]; pp += 2; p3 = m[pp+1]+256*m[pp]; pp += 2; printf("CONSTANT_Methodref , class_index = %d", p2); printf(" , name_and_type_index = %d", p3); break; case 11: p2 = m[pp+1]+256*m[pp]; pp += 2; p3 = m[pp+1]+256*m[pp]; pp += 2; printf("CONSTANT_InterfaceMethodref , class_index = %d", p2); printf(" , name_and_type_index = %d", p3); break; case 8: p2 = m[pp+1]+256*m[pp]; pp += 2; ni[i] = p2; printf("CONSTANT_String , name_index = %d", p2); break; case 3: p4 = m[pp+3]+256*(m[pp+2]+256*(m[pp+1]+256*m[pp])); pp += 4; printf("CONSTANT_Integer , value = %d", p4); break; case 4: p4 = m[pp+3]+256*(m[pp+2]+256*(m[pp+1]+256*m[pp])); pp += 4; printf("CONSTANT_Float , value = %d", p4); break; case 5: p4 = m[pp+3]+256*(m[pp+2]+256*(m[pp+1]+256*m[pp])); pp += 4; p5 = m[pp+3]+256*(m[pp+2]+256*(m[pp+1]+256*m[pp])); pp += 4; printf("CONSTANT_Float , high = %d , low = %d", p4, p5); i++; break; case 6: p4 = m[pp+3]+256*(m[pp+2]+256*(m[pp+1]+256*m[pp])); pp += 4; p5 = m[pp+3]+256*(m[pp+2]+256*(m[pp+1]+256*m[pp])); pp += 4; printf("CONSTANT_Double , high = %d , low = %d", p4, p5); i++; break; case 12: p2 = m[pp+1]+256*m[pp]; pp += 2; p3 = m[pp+1]+256*m[pp]; pp += 2; printf("CONSTANT_NameAndType , name_index = %d", p2); ni[i] = p2; printf(" , signature_index = %d", p3); break; case 1: case 2: p2 = m[pp+1]+256*m[pp]; pp += 2; if(d0==1) printf("CONSTANT_Utf8 , "); else printf("CONSTANT_Unicode , "); k = 0; for(j=0;j #include #include FILE *fp; int ni[1000], m[15000], p[300][10]; char n[300][60]; static void access_flag_printf(int para); static void byte_code_printf(long address); static void display_information(int mode, int id); int main(int argc,char **argv){ int d, i, j, k, ct; unsigned int p0, p00, p1, p2, p3; int pp=0, count=0, p4, p5; unsigned char ss, st[20], d0, d1, d2, d3; st[16]=0; if( argc != 2 ){ printf("... target file name missing (;_;) ...\n\n"); exit(1); } else if( (fp=fopen( argv[1], "rb" ))==NULL ){ printf("... target file [ %s ] is not found (;_;) ...\n\n", argv[1]); exit(1); } printf("Target Java File Name = %s\n", argv[1]); while( (d = fgetc(fp)) >= 0 ){ m[count++] = d & 0xff; } fclose(fp); printf("\nTotal File Length = %d bytes.", count); p0 = m[pp+3]+256*m[pp+2]; p00 = m[pp+1]+256*m[pp]; printf("\n\n\t%06X Magic Code [CAFEBABE] = %04X%04X",pp,p00,p0); pp += 4; if(( p00 != 0xcafe )||( p0 != 0xbabe )){ printf("\n\n... target file is not Java (;_;) ...\n\n"); exit(1); } else printf(" --- OK (^_^)"); printf("\n\n\t%06X Version : major version %d , minor version %d", pp, m[pp+3]+256*m[pp+2], m[pp+1]+256*m[pp] ); pp += 4; p1 = m[pp+1]+256*m[pp]; printf("\n\n\t%06X Constant Pool : total number = %d\n", pp, p1 ); pp += 2; for(i=1;i ",d0); switch(d0){ case 7: p2 = m[pp+1]+256*m[pp]; pp += 2; ni[i] = p2; printf("CONSTANT_Class , name_index = %d", p2); p[i][2] = p2; break; case 9: p2 = m[pp+1]+256*m[pp]; pp += 2; p3 = m[pp+1]+256*m[pp]; pp += 2; printf("CONSTANT_Fieldref , class_index = %d", p2); printf(" , name_and_type_index = %d", p3); p[i][3] = p3; break; case 10: p2 = m[pp+1]+256*m[pp]; pp += 2; p3 = m[pp+1]+256*m[pp]; pp += 2; printf("CONSTANT_Methodref , class_index = %d", p2); printf(" , name_and_type_index = %d", p3); p[i][0] = p3; break; case 11: p2 = m[pp+1]+256*m[pp]; pp += 2; p3 = m[pp+1]+256*m[pp]; pp += 2; printf("CONSTANT_InterfaceMethodref , class_index = %d", p2); printf(" , name_and_type_index = %d", p3); break; case 8: p2 = m[pp+1]+256*m[pp]; pp += 2; ni[i] = p2; printf("CONSTANT_String , name_index = %d", p2); p[i][4] = p2; break; case 3: p4 = m[pp+3]+256*(m[pp+2]+256*(m[pp+1]+256*m[pp])); pp += 4; printf("CONSTANT_Integer , value = %d", p4); break; case 4: p4 = m[pp+3]+256*(m[pp+2]+256*(m[pp+1]+256*m[pp])); pp += 4; printf("CONSTANT_Float , value = %d", p4); break; case 5: p4 = m[pp+3]+256*(m[pp+2]+256*(m[pp+1]+256*m[pp])); pp += 4; p5 = m[pp+3]+256*(m[pp+2]+256*(m[pp+1]+256*m[pp])); pp += 4; printf("CONSTANT_Float , high = %d , low = %d", p4, p5); i++; break; case 6: p4 = m[pp+3]+256*(m[pp+2]+256*(m[pp+1]+256*m[pp])); pp += 4; p5 = m[pp+3]+256*(m[pp+2]+256*(m[pp+1]+256*m[pp])); pp += 4; printf("CONSTANT_Double , high = %d , low = %d", p4, p5); i++; break; case 12: p2 = m[pp+1]+256*m[pp]; pp += 2; p3 = m[pp+1]+256*m[pp]; pp += 2; printf("CONSTANT_NameAndType , name_index = %d", p2); ni[i] = p2; printf(" , signature_index = %d", p3); p[i][1] = p2; break; case 1: case 2: p2 = m[pp+1]+256*m[pp]; pp += 2; if(d0==1) printf("CONSTANT_Utf8 , "); else printf("CONSTANT_Unicode , "); k = 0; for(j=0;j....@....C. 000000C0 : 00 0D 00 3A 0A 00 0D 00 - 4F 09 00 0F 00 38 0A 00 ...:....O....8.. 000000D0 : 0A 00 51 09 00 0F 00 5D - 09 00 08 00 5C 0A 00 09 ..Q....]....\... 000000E0 : 00 4B 09 00 0F 00 58 0A - 00 11 00 54 09 00 0F 00 .K....X....T.... 000000F0 : 49 0A 00 07 00 54 09 00 - 10 00 4E 0C 00 9F 00 6C I....T....N....l 00000100 : 0C 00 AB 00 9B 0C 00 8A - 00 7D 0C 00 7B 00 8B 0C .........}..{... 00000110 : 00 93 00 8F 0C 00 AB 00 - 7E 0C 00 86 00 82 0C 00 ........~....... 00000120 : 79 00 AA 0C 00 80 00 7C - 0C 00 99 00 90 0C 00 87 y......|........ 00000130 : 00 6F 0C 00 9A 00 AA 0C - 00 98 00 8D 05 00 00 00 .o.............. 00000140 : 00 00 00 03 E8 06 40 8F - 38 00 00 00 00 00 0C 00 ......@.8....... 00000150 : A1 00 AA 0C 00 69 00 6D - 0C 00 94 00 B7 0C 00 6E .....i.m.......n 00000160 : 00 6F 0C 00 B8 00 B6 0C - 00 B0 00 AA 0C 00 85 00 .o.............. 00000170 : 78 0C 00 75 00 A7 0C 00 - 8E 00 68 0C 00 76 00 8B x..u......h..v.. 00000180 : 0C 00 97 00 90 0C 00 69 - 00 8B 0C 00 72 00 8B 0C .......i....r... 00000190 : 00 70 00 7F 0C 00 A4 00 - AA 0C 00 81 00 AA 0C 00 .p.............. 000001A0 : 6A 00 8D 0C 00 B3 00 8D - 0C 00 77 00 AA 0C 00 74 j.........w....t 000001B0 : 00 B5 0C 00 A6 00 AA 0C - 00 A3 00 AA 0C 00 A2 00 ................ 000001C0 : B2 06 40 12 00 00 00 00 - 00 00 06 3F F8 00 00 00 ..@........?.... 000001D0 : 00 00 00 06 3F ED C2 8F - 5C 28 F5 C3 01 00 16 28 ....?...\(.....( 000001E0 : 4C 6A 61 76 61 2F 61 77 - 74 2F 47 72 61 70 68 69 Ljava/awt/Graphi 000001F0 : 63 73 3B 29 56 01 00 0E - 6A 61 76 61 2F 61 77 74 cs;)V...java/awt 00000200 : 2F 43 6F 6C 6F 72 01 00 - 07 28 49 49 49 49 29 56 /Color...(IIII)V 00000210 : 01 00 06 3C 69 6E 69 74 - 3E 01 00 08 67 65 74 48 ......getH 00000220 : 6F 75 72 73 01 00 0A 53 - 6F 75 72 63 65 46 69 6C ours...SourceFil 00000230 : 65 01 00 04 5B 5B 5B 49 - 01 00 17 28 4C 6A 61 76 e...[[[I...(Ljav 00000240 : 61 2F 6C 61 6E 67 2F 52 - 75 6E 6E 61 62 6C 65 3B a/lang/Runnable; 00000250 : 29 56 01 00 08 64 6F 74 - 5F 64 72 61 77 01 00 18 )V...dot_draw... 00000260 : 28 4C 6A 61 76 61 2F 61 - 77 74 2F 47 72 61 70 68 (Ljava/awt/Graph 00000270 : 69 63 73 3B 49 49 29 56 - 01 00 08 74 6F 53 74 72 ics;II)V...toStr 00000280 : 69 6E 67 01 00 0A 45 78 - 63 65 70 74 69 6F 6E 73 ing...Exceptions 00000290 : 01 00 04 73 74 6F 70 01 - 00 0F 4C 69 6E 65 4E 75 ...stop...LineNu 000002A0 : 6D 62 65 72 54 61 62 6C - 65 01 00 05 62 6C 61 63 mberTable...blac 000002B0 : 6B 01 00 04 73 69 7A 65 - 01 00 07 72 65 70 61 69 k...size...repai 000002C0 : 6E 74 01 00 02 73 7A 01 - 00 32 28 4C 6A 61 76 61 nt...sz..2(Ljava 000002D0 : 2F 6E 65 74 2F 55 52 4C - 3B 4C 6A 61 76 61 2F 6C /net/URL;Ljava/l 000002E0 : 61 6E 67 2F 53 74 72 69 - 6E 67 3B 29 4C 6A 61 76 ang/String;)Ljav 000002F0 : 61 2F 61 77 74 2F 49 6D - 61 67 65 3B 01 00 02 73 a/awt/Image;...s 00000300 : 74 01 00 0E 6A 61 76 61 - 2F 75 74 69 6C 2F 44 61 t...java/util/Da 00000310 : 74 65 01 00 05 73 74 61 - 72 74 01 00 35 28 4C 6A te...start..5(Lj 00000320 : 61 76 61 2F 61 77 74 2F - 49 6D 61 67 65 3B 49 49 ava/awt/Image;II 00000330 : 49 49 4C 6A 61 76 61 2F - 61 77 74 2F 69 6D 61 67 IILjava/awt/imag 00000340 : 65 2F 49 6D 61 67 65 4F - 62 73 65 72 76 65 72 3B e/ImageObserver; 00000350 : 29 5A 01 00 10 28 29 4C - 6A 61 76 61 2F 6E 65 74 )Z...()Ljava/net 00000360 : 2F 55 52 4C 3B 01 00 2C - 28 4C 6A 61 76 61 2F 6C /URL;..,(Ljava/l 00000370 : 61 6E 67 2F 53 74 72 69 - 6E 67 3B 29 4C 6A 61 76 ang/String;)Ljav 00000380 : 61 2F 6C 61 6E 67 2F 53 - 74 72 69 6E 67 42 75 66 a/lang/StringBuf 00000390 : 66 65 72 3B 01 00 14 28 - 29 4C 6A 61 76 61 2F 6C fer;...()Ljava/l 000003A0 : 61 6E 67 2F 53 74 72 69 - 6E 67 3B 01 00 09 64 72 ang/String;...dr 000003B0 : 61 77 49 6D 61 67 65 01 - 00 09 63 6F 6C 6F 72 5F awImage...color_ 000003C0 : 73 65 6C 01 00 13 28 4C - 6A 61 76 61 2F 61 77 74 sel...(Ljava/awt 000003D0 : 2F 43 6F 6C 6F 72 3B 29 - 56 01 00 04 69 6E 69 74 /Color;)V...init 000003E0 : 01 00 03 5B 5B 49 01 00 - 08 67 65 74 49 6D 61 67 ...[[I...getImag 000003F0 : 65 01 00 0D 73 65 74 42 - 61 63 6B 67 72 6F 75 6E e...setBackgroun 00000400 : 64 01 00 08 63 68 61 72 - 5F 64 6F 74 01 00 12 6A d...char_dot...j 00000410 : 61 76 61 2F 61 77 74 2F - 43 6F 6D 70 6F 6E 65 6E ava/awt/Componen 00000420 : 74 01 00 16 6A 61 76 61 - 2F 6C 61 6E 67 2F 53 74 t...java/lang/St 00000430 : 72 69 6E 67 42 75 66 66 - 65 72 01 00 0F 67 65 74 ringBuffer...get 00000440 : 44 6F 63 75 6D 65 6E 74 - 42 61 73 65 01 00 03 28 DocumentBase...( 00000450 : 29 56 01 00 02 5B 49 01 - 00 03 28 29 49 01 00 09 )V...[I...()I... 00000460 : 63 6C 65 61 72 52 65 63 - 74 01 00 03 28 29 44 01 clearRect...()D. 00000470 : 00 19 28 4C 6A 61 76 61 - 2F 61 77 74 2F 47 72 61 ..(Ljava/awt/Gra 00000480 : 70 68 69 63 73 3B 49 49 - 49 29 56 01 00 10 6A 61 phics;III)V...ja 00000490 : 76 61 2F 6C 61 6E 67 2F - 54 68 72 65 61 64 01 00 va/lang/Thread.. 000004A0 : 12 6A 61 76 61 2F 61 77 - 74 2F 44 69 6D 65 6E 73 .java/awt/Dimens 000004B0 : 69 6F 6E 01 00 06 72 61 - 6E 64 6F 6D 01 00 05 73 ion...random...s 000004C0 : 6C 65 65 70 01 00 03 72 - 75 6E 01 00 13 6A 61 76 leep...run...jav 000004D0 : 61 2F 6C 61 6E 67 2F 45 - 78 63 65 70 74 69 6F 6E a/lang/Exception 000004E0 : 01 00 0A 63 6C 6F 63 6B - 5F 64 69 73 70 01 00 0A ...clock_disp... 000004F0 : 67 65 74 53 65 63 6F 6E - 64 73 01 00 09 63 68 61 getSeconds...cha 00000500 : 72 5F 64 69 73 70 01 00 - 02 79 79 01 00 1B 28 49 r_disp...yy...(I 00000510 : 29 4C 6A 61 76 61 2F 6C - 61 6E 67 2F 53 74 72 69 )Ljava/lang/Stri 00000520 : 6E 67 42 75 66 66 65 72 - 3B 01 00 0E 6A 61 76 61 ngBuffer;...java 00000530 : 2F 6C 61 6E 67 2F 4D 61 - 74 68 01 00 12 6A 61 76 /lang/Math...jav 00000540 : 61 2F 6C 61 6E 67 2F 52 - 75 6E 6E 61 62 6C 65 01 a/lang/Runnable. 00000550 : 00 11 6A 61 76 61 2F 61 - 77 74 2F 47 72 61 70 68 ..java/awt/Graph 00000560 : 69 63 73 01 00 01 6D 01 - 00 06 73 61 6D 70 6C 65 ics...m...sample 00000570 : 01 00 01 6A 01 00 01 69 - 01 00 05 77 69 64 74 68 ...j...i...width 00000580 : 01 00 04 6D 6F 64 65 01 - 00 0E 6A 61 76 61 2F 61 ...mode...java/a 00000590 : 77 74 2F 49 6D 61 67 65 - 01 00 02 78 78 01 00 16 wt/Image...xx... 000005A0 : 28 29 4C 6A 61 76 61 2F - 61 77 74 2F 44 69 6D 65 ()Ljava/awt/Dime 000005B0 : 6E 73 69 6F 6E 3B 01 00 - 05 70 61 69 6E 74 01 00 nsion;...paint.. 000005C0 : 0D 43 6F 6E 73 74 61 6E - 74 56 61 6C 75 65 01 00 .ConstantValue.. 000005D0 : 01 49 01 00 06 61 70 70 - 65 6E 64 01 00 04 2E 67 .I...append....g 000005E0 : 69 66 01 00 12 6A 61 76 - 61 2F 61 70 70 6C 65 74 if...java/applet 000005F0 : 2F 41 70 70 6C 65 74 01 - 00 04 43 6F 64 65 01 00 /Applet...Code.. 00000600 : 0B 73 61 6D 70 6C 65 2E - 6A 61 76 61 01 00 06 68 .sample.java...h 00000610 : 65 69 67 68 74 01 00 0E - 4C 6F 63 61 6C 56 61 72 eight...LocalVar 00000620 : 69 61 62 6C 65 73 01 00 - 11 5B 4C 6A 61 76 61 2F iables...[Ljava/ 00000630 : 61 77 74 2F 49 6D 61 67 - 65 3B 01 00 0A 67 65 74 awt/Image;...get 00000640 : 4D 69 6E 75 74 65 73 01 - 00 0A 6A 61 76 61 2F 67 Minutes...java/g 00000650 : 69 66 2F 62 01 00 10 4C - 6A 61 76 61 2F 61 77 74 if/b...Ljava/awt 00000660 : 2F 43 6F 6C 6F 72 3B 01 - 00 12 4C 6A 61 76 61 2F /Color;...Ljava/ 00000670 : 6C 61 6E 67 2F 54 68 72 - 65 61 64 3B 01 00 04 28 lang/Thread;...( 00000680 : 4A 29 56 01 00 04 66 6C - 6F 77 00 01 00 0F 00 0D J)V...flow...... 00000690 : 00 01 00 0C 00 0A 00 00 - 00 A1 00 AA 00 00 00 00 ................ 000006A0 : 00 81 00 AA 00 00 00 00 - 00 A6 00 AA 00 00 00 00 ................ 000006B0 : 00 9A 00 AA 00 00 00 00 - 00 77 00 AA 00 00 00 00 .........w...... 000006C0 : 00 79 00 AA 00 00 00 00 - 00 A4 00 AA 00 00 00 00 .y.............. 000006D0 : 00 A2 00 B2 00 00 00 02 - 00 B8 00 B6 00 00 00 00 ................ 000006E0 : 00 9F 00 6C 00 00 00 0A - 00 01 00 83 00 8B 00 01 ...l............ 000006F0 : 00 AE 00 00 00 6A 00 06 - 00 03 00 00 00 3E 2A B6 .....j.......>*. 00000700 : 00 2C 4C 04 3D A7 00 29 - 2A B4 00 25 1C 2A 2B BB .,L.=..)*..%.*+. 00000710 : 00 11 59 B7 00 34 12 02 - B6 00 22 1C B6 00 1B 12 ..Y..4...."..... 00000720 : 01 B6 00 22 B6 00 21 B6 - 00 2D 53 84 02 01 1C 10 ..."..!..-S..... 00000730 : 0E A4 FF D7 2A B2 00 31 - B6 00 29 B1 00 00 00 01 ....*..1..)..... 00000740 : 00 73 00 00 00 1A 00 06 - 00 00 00 19 00 05 00 1A .s.............. 00000750 : 00 0A 00 1B 00 2D 00 1A - 00 36 00 1D 00 3D 00 18 .....-...6...=.. 00000760 : 00 01 00 7B 00 8B 00 01 - 00 AE 00 00 00 34 00 04 ...{.........4.. 00000770 : 00 01 00 00 00 14 2A BB - 00 09 59 2A B7 00 17 B5 ......*...Y*.... 00000780 : 00 20 2A B4 00 20 B6 00 - 1F B1 00 00 00 01 00 73 . *.. .........s 00000790 : 00 00 00 0E 00 03 00 00 - 00 21 00 0C 00 22 00 13 .........!...".. 000007A0 : 00 20 00 01 00 95 00 8B - 00 01 00 AE 00 00 00 4D . .............M 000007B0 : 00 03 00 01 00 00 00 19 - 14 00 45 B8 00 32 2A B6 ..........E..2*. 000007C0 : 00 28 A7 FF F6 57 2A 59 - B4 00 35 04 60 B5 00 35 .(...W*Y..5.`..5 000007D0 : B1 00 01 00 00 00 0D 00 - 0D 00 03 00 01 00 73 00 ..............s. 000007E0 : 00 00 1A 00 06 00 00 00 - 26 00 00 00 28 00 06 00 ........&...(... 000007F0 : 29 00 0A 00 27 00 0D 00 - 2C 00 18 00 25 00 01 00 )...'...,...%... 00000800 : 72 00 8B 00 01 00 AE 00 - 00 00 24 00 01 00 01 00 r.........$..... 00000810 : 00 00 08 2A B4 00 20 B6 - 00 16 B1 00 00 00 01 00 ...*.. ......... 00000820 : 73 00 00 00 0A 00 02 00 - 00 00 30 00 07 00 2F 00 s.........0.../. 00000830 : 01 00 A8 00 66 00 01 00 - AE 00 00 00 6D 00 05 00 ....f.......m... 00000840 : 07 00 00 00 39 2A B6 00 - 1A 4D 2B 03 03 2C B4 00 ....9*...M+..,.. 00000850 : 13 2C B4 00 37 B6 00 2F - BB 00 07 59 B7 00 36 4E .,..7../...Y..6N 00000860 : 2D B6 00 1E 36 04 2D B6 - 00 18 36 05 2D B6 00 14 -...6.-...6.-... 00000870 : 36 06 2A 2B 15 04 15 05 - 15 06 B6 00 12 B1 00 00 6.*+............ 00000880 : 00 01 00 73 00 00 00 22 - 00 08 00 00 00 34 00 05 ...s...".....4.. 00000890 : 00 35 00 13 00 36 00 1B - 00 37 00 21 00 38 00 27 .5...6...7.!.8.' 000008A0 : 00 39 00 2D 00 3A 00 38 - 00 33 00 00 00 97 00 90 .9.-.:.8.3...... 000008B0 : 00 01 00 AE 00 00 01 F8 - 00 05 00 0A 00 00 01 8C ................ 000008C0 : 04 36 09 2A B4 00 2B 36 - 06 2A B4 00 15 99 00 32 .6.*..+6.*.....2 000008D0 : 2A B4 00 33 36 09 2A 59 - B4 00 23 06 60 B5 00 23 *..36.*Y..#.`..# 000008E0 : 2A 59 B4 00 1C 05 60 B5 - 00 1C 2A 59 B4 00 30 10 *Y....`...*Y..0. 000008F0 : 28 64 B5 00 30 2A 59 B4 - 00 2B 08 64 B5 00 2B 2A (d..0*Y..+.d..+* 00000900 : B4 00 30 2A B4 00 1C 10 - 1C 68 60 36 05 15 04 10 ..0*.....h`6.... 00000910 : 0A 6C 36 07 2A 2B 15 05 - 15 06 15 07 B6 00 1D 2A .l6.*+.........* 00000920 : B4 00 30 2A B4 00 1C 10 - 22 68 60 36 05 15 04 10 ..0*...."h`6.... 00000930 : 0A 70 36 08 2A 2B 15 05 - 15 06 15 08 B6 00 1D 2A .p6.*+.........* 00000940 : B4 00 30 2A B4 00 1C 10 - 0E 68 60 36 05 1D 10 0A ..0*.....h`6.... 00000950 : 6C 36 07 2A 2B 15 05 15 - 06 15 07 B6 00 1D 2A B4 l6.*+.........*. 00000960 : 00 30 2A B4 00 1C 10 14 - 68 60 36 05 1D 10 0A 70 .0*.....h`6....p 00000970 : 36 07 2A 2B 15 05 15 06 - 15 07 B6 00 1D 2A B4 00 6.*+.........*.. 00000980 : 30 36 05 1C 10 0A 6C 36 - 07 2A 2B 15 05 15 06 15 06....l6.*+..... 00000990 : 07 B6 00 1D 2A B4 00 30 - 2A B4 00 1C 10 06 68 60 ....*..0*.....h` 000009A0 : 36 05 1C 10 0A 70 36 07 - 2A 2B 15 05 15 06 15 07 6....p6.*+...... 000009B0 : B6 00 1D 2A B4 00 30 2A - B4 00 1C 10 0C 68 60 36 ...*..0*.....h`6 000009C0 : 05 2A 2B 15 05 15 06 B6 - 00 26 2A B4 00 30 2A B4 .*+......&*..0*. 000009D0 : 00 1C 10 1A 68 60 36 05 - 2A 2B 15 05 15 06 B6 00 ....h`6.*+...... 000009E0 : 26 2A B4 00 15 99 00 32 - 2A 15 09 B5 00 33 2A 59 &*.....2*....3*Y 000009F0 : B4 00 23 06 64 B5 00 23 - 2A 59 B4 00 1C 05 64 B5 ..#.d..#*Y....d. 00000A00 : 00 1C 2A 59 B4 00 30 10 - 28 60 B5 00 30 2A 59 B4 ..*Y..0.(`..0*Y. 00000A10 : 00 2B 08 60 B5 00 2B 15 - 08 10 09 A0 00 1B 2A 59 .+.`..+.......*Y 00000A20 : B4 00 33 04 60 B5 00 33 - 2A B4 00 33 10 0E A4 00 ..3.`..3*..3.... 00000A30 : 08 2A 04 B5 00 33 B8 00 - 24 14 00 64 97 9E 00 09 .*...3..$..d.... 00000A40 : 2A 04 B5 00 15 B1 2A 03 - B5 00 15 B1 00 00 00 01 *.....*......... 00000A50 : 00 73 00 00 00 5A 00 16 - 00 00 00 3E 00 03 00 3F .s...Z.....>...? 00000A60 : 00 09 00 40 00 10 00 41 - 00 16 00 42 00 3F 00 44 ...@...A...B.?.D 00000A70 : 00 5F 00 45 00 7F 00 46 - 00 9E 00 47 00 BD 00 48 ._.E...F...G...H 00000A80 : 00 D4 00 49 00 F3 00 4A - 01 0A 00 4B 01 21 00 4C ...I...J...K.!.L 00000A90 : 01 28 00 4D 01 2E 00 4E - 01 57 00 50 01 5E 00 51 .(.M...N.W.P.^.Q 00000AA0 : 01 68 00 52 01 76 00 54 - 01 86 00 55 01 8B 00 3D .h.R.v.T...U...= 00000AB0 : 00 00 00 87 00 6F 00 01 - 00 AE 00 00 00 45 00 08 .....o.......E.. 00000AC0 : 00 04 00 00 00 25 2A 2B - 1C 1D 2A B4 00 1C 87 14 .....%*+..*..... 00000AD0 : 00 62 6B 8E 60 B6 00 27 - 2A 2B 1C 1D 2A B4 00 1C .bk.`..'*+..*... 00000AE0 : 87 14 00 60 6B 8E 60 B6 - 00 27 B1 00 00 00 01 00 ...`k.`..'...... 00000AF0 : 73 00 00 00 0E 00 03 00 - 00 00 59 00 12 00 5A 00 s.........Y...Z. 00000B00 : 24 00 58 00 00 00 6E 00 - 6F 00 01 00 AE 00 00 00 $.X...n.o....... 00000B10 : 63 00 07 00 05 00 00 00 - 37 2A B4 00 15 9A 00 0C c.......7*...... 00000B20 : 2A B4 00 33 36 04 A7 00 - 12 04 B8 00 24 14 00 47 *..36.......$..G 00000B30 : 6B 8E 10 0E 70 60 36 04 - 2B 2A B4 00 25 15 04 32 k...p`6.+*..%..2 00000B40 : 1C 1D 2A B4 00 23 2A B4 - 00 23 2A B6 00 2A 57 B1 ..*..#*..#*..*W. 00000B50 : 00 00 00 01 00 73 00 00 - 00 1A 00 06 00 00 00 5F .....s........._ 00000B60 : 00 07 00 60 00 0D 00 5F - 00 10 00 63 00 1F 00 65 ...`..._...c...e 00000B70 : 00 36 00 5D 00 00 00 99 - 00 90 00 01 00 AE 00 00 .6.]............ 00000B80 : 00 78 00 06 00 07 00 00 - 00 48 03 36 05 A7 00 3E .x.......H.6...> 00000B90 : 03 36 06 A7 00 2E 2A B4 - 00 2E 15 04 32 15 06 32 .6....*.....2..2 00000BA0 : 15 05 2E 04 A0 00 1A 2A - 2B 1C 2A B4 00 1C 15 05 .......*+.*..... 00000BB0 : 68 60 1D 2A B4 00 1C 15 - 06 68 60 B6 00 27 84 06 h`.*.....h`..'.. 00000BC0 : 01 15 06 10 07 A1 FF D1 - 84 05 01 15 05 08 A1 FF ................ 00000BD0 : C2 B1 00 00 00 01 00 73 - 00 00 00 1E 00 07 00 00 .......s........ 00000BE0 : 00 69 00 06 00 6A 00 0C - 00 6B 00 1D 00 6C 00 34 .i...j...k...l.4 00000BF0 : 00 6A 00 3E 00 69 00 47 - 00 68 00 01 00 69 00 8B .j.>.i.G.h...i.. 00000C00 : 00 01 00 AE 00 00 08 2B - 00 0B 00 01 00 00 07 B3 .......+........ 00000C10 : 2A B7 00 19 2A 04 B5 00 - 33 2A 10 46 B5 00 30 2A *...*...3*.F..0* 00000C20 : 10 19 B5 00 2B 2A 10 0A - B5 00 23 2A 10 0C B5 00 ....+*....#*.... 00000C30 : 1C 2A 04 B5 00 15 2A 10 - 0F BD 00 0B B5 00 25 2A .*....*.......%* 00000C40 : 10 0A BD 00 0E 59 03 10 - 07 BD 00 04 59 03 08 BC .....Y......Y... 00000C50 : 0A 59 03 03 4F 59 04 04 - 4F 59 05 04 4F 59 06 04 .Y..OY..OY..OY.. 00000C60 : 4F 59 07 03 4F 53 59 04 - 08 BC 0A 59 03 04 4F 59 OY..OSY....Y..OY 00000C70 : 04 03 4F 59 05 03 4F 59 - 06 03 4F 59 07 04 4F 53 ..OY..OY..OY..OS 00000C80 : 59 05 08 BC 0A 59 03 04 - 4F 59 04 03 4F 59 05 03 Y....Y..OY..OY.. 00000C90 : 4F 59 06 03 4F 59 07 04 - 4F 53 59 06 08 BC 0A 59 OY..OY..OSY....Y 00000CA0 : 03 04 4F 59 04 03 4F 59 - 05 03 4F 59 06 03 4F 59 ..OY..OY..OY..OY 00000CB0 : 07 04 4F 53 59 07 08 BC - 0A 59 03 04 4F 59 04 03 ..OSY....Y..OY.. 00000CC0 : 4F 59 05 03 4F 59 06 03 - 4F 59 07 04 4F 53 59 08 OY..OY..OY..OSY. 00000CD0 : 08 BC 0A 59 03 04 4F 59 - 04 03 4F 59 05 03 4F 59 ...Y..OY..OY..OY 00000CE0 : 06 03 4F 59 07 04 4F 53 - 59 10 06 08 BC 0A 59 03 ..OY..OSY.....Y. 00000CF0 : 03 4F 59 04 04 4F 59 05 - 04 4F 59 06 04 4F 59 07 .OY..OY..OY..OY. 00000D00 : 03 4F 53 53 59 04 10 07 - BD 00 04 59 03 08 BC 0A .OSSY......Y.... 00000D10 : 59 03 03 4F 59 04 03 4F - 59 05 04 4F 59 06 03 4F Y..OY..OY..OY..O 00000D20 : 59 07 03 4F 53 59 04 08 - BC 0A 59 03 03 4F 59 04 Y..OSY....Y..OY. 00000D30 : 04 4F 59 05 04 4F 59 06 - 03 4F 59 07 03 4F 53 59 .OY..OY..OY..OSY 00000D40 : 05 08 BC 0A 59 03 03 4F - 59 04 03 4F 59 05 04 4F ....Y..OY..OY..O 00000D50 : 59 06 03 4F 59 07 03 4F - 53 59 06 08 BC 0A 59 03 Y..OY..OSY....Y. 00000D60 : 03 4F 59 04 03 4F 59 05 - 04 4F 59 06 03 4F 59 07 .OY..OY..OY..OY. 00000D70 : 03 4F 53 59 07 08 BC 0A - 59 03 03 4F 59 04 03 4F .OSY....Y..OY..O 00000D80 : 59 05 04 4F 59 06 03 4F - 59 07 03 4F 53 59 08 08 Y..OY..OY..OSY.. 00000D90 : BC 0A 59 03 03 4F 59 04 - 03 4F 59 05 04 4F 59 06 ..Y..OY..OY..OY. 00000DA0 : 03 4F 59 07 03 4F 53 59 - 10 06 08 BC 0A 59 03 03 .OY..OSY.....Y.. 00000DB0 : 4F 59 04 04 4F 59 05 04 - 4F 59 06 04 4F 59 07 03 OY..OY..OY..OY.. 00000DC0 : 4F 53 53 59 05 10 07 BD - 00 04 59 03 08 BC 0A 59 OSSY......Y....Y 00000DD0 : 03 03 4F 59 04 04 4F 59 - 05 04 4F 59 06 04 4F 59 ..OY..OY..OY..OY 00000DE0 : 07 03 4F 53 59 04 08 BC - 0A 59 03 04 4F 59 04 03 ..OSY....Y..OY.. 00000DF0 : 4F 59 05 03 4F 59 06 03 - 4F 59 07 04 4F 53 59 05 OY..OY..OY..OSY. 00000E00 : 08 BC 0A 59 03 04 4F 59 - 04 03 4F 59 05 03 4F 59 ...Y..OY..OY..OY 00000E10 : 06 03 4F 59 07 04 4F 53 - 59 06 08 BC 0A 59 03 03 ..OY..OSY....Y.. 00000E20 : 4F 59 04 03 4F 59 05 03 - 4F 59 06 04 4F 59 07 03 OY..OY..OY..OY.. 00000E30 : 4F 53 59 07 08 BC 0A 59 - 03 03 4F 59 04 03 4F 59 OSY....Y..OY..OY 00000E40 : 05 04 4F 59 06 03 4F 59 - 07 03 4F 53 59 08 08 BC ..OY..OY..OSY... 00000E50 : 0A 59 03 03 4F 59 04 04 - 4F 59 05 03 4F 59 06 03 .Y..OY..OY..OY.. 00000E60 : 4F 59 07 03 4F 53 59 10 - 06 08 BC 0A 59 03 04 4F OY..OSY.....Y..O 00000E70 : 59 04 04 4F 59 05 04 4F - 59 06 04 4F 59 07 04 4F Y..OY..OY..OY..O 00000E80 : 53 53 59 06 10 07 BD 00 - 04 59 03 08 BC 0A 59 03 SSY......Y....Y. 00000E90 : 03 4F 59 04 04 4F 59 05 - 04 4F 59 06 04 4F 59 07 .OY..OY..OY..OY. 00000EA0 : 03 4F 53 59 04 08 BC 0A - 59 03 04 4F 59 04 03 4F .OSY....Y..OY..O 00000EB0 : 59 05 03 4F 59 06 03 4F - 59 07 04 4F 53 59 05 08 Y..OY..OY..OSY.. 00000EC0 : BC 0A 59 03 03 4F 59 04 - 03 4F 59 05 03 4F 59 06 ..Y..OY..OY..OY. 00000ED0 : 03 4F 59 07 04 4F 53 59 - 06 08 BC 0A 59 03 03 4F .OY..OSY....Y..O 00000EE0 : 59 04 03 4F 59 05 04 4F - 59 06 04 4F 59 07 03 4F Y..OY..OY..OY..O 00000EF0 : 53 59 07 08 BC 0A 59 03 - 03 4F 59 04 03 4F 59 05 SY....Y..OY..OY. 00000F00 : 03 4F 59 06 03 4F 59 07 - 04 4F 53 59 08 08 BC 0A .OY..OY..OSY.... 00000F10 : 59 03 04 4F 59 04 03 4F - 59 05 03 4F 59 06 03 4F Y..OY..OY..OY..O 00000F20 : 59 07 04 4F 53 59 10 06 - 08 BC 0A 59 03 03 4F 59 Y..OSY.....Y..OY 00000F30 : 04 04 4F 59 05 04 4F 59 - 06 04 4F 59 07 03 4F 53 ..OY..OY..OY..OS 00000F40 : 53 59 07 10 07 BD 00 04 - 59 03 08 BC 0A 59 03 03 SY......Y....Y.. 00000F50 : 4F 59 04 03 4F 59 05 03 - 4F 59 06 04 4F 59 07 03 OY..OY..OY..OY.. 00000F60 : 4F 53 59 04 08 BC 0A 59 - 03 03 4F 59 04 03 4F 59 OSY....Y..OY..OY 00000F70 : 05 04 4F 59 06 04 4F 59 - 07 03 4F 53 59 05 08 BC ..OY..OY..OSY... 00000F80 : 0A 59 03 03 4F 59 04 04 - 4F 59 05 03 4F 59 06 04 .Y..OY..OY..OY.. 00000F90 : 4F 59 07 03 4F 53 59 06 - 08 BC 0A 59 03 04 4F 59 OY..OSY....Y..OY 00000FA0 : 04 03 4F 59 05 03 4F 59 - 06 04 4F 59 07 03 4F 53 ..OY..OY..OY..OS 00000FB0 : 59 07 08 BC 0A 59 03 04 - 4F 59 04 04 4F 59 05 04 Y....Y..OY..OY.. 00000FC0 : 4F 59 06 04 4F 59 07 04 - 4F 53 59 08 08 BC 0A 59 OY..OY..OSY....Y 00000FD0 : 03 03 4F 59 04 03 4F 59 - 05 03 4F 59 06 04 4F 59 ..OY..OY..OY..OY 00000FE0 : 07 03 4F 53 59 10 06 08 - BC 0A 59 03 03 4F 59 04 ..OSY.....Y..OY. 00000FF0 : 03 4F 59 05 03 4F 59 06 - 04 4F 59 07 03 4F 53 53 .OY..OY..OY..OSS 00001000 : 59 08 10 07 BD 00 04 59 - 03 08 BC 0A 59 03 04 4F Y......Y....Y..O 00001010 : 59 04 04 4F 59 05 04 4F - 59 06 04 4F 59 07 04 4F Y..OY..OY..OY..O 00001020 : 53 59 04 08 BC 0A 59 03 - 04 4F 59 04 03 4F 59 05 SY....Y..OY..OY. 00001030 : 03 4F 59 06 03 4F 59 07 - 03 4F 53 59 05 08 BC 0A .OY..OY..OSY.... 00001040 : 59 03 04 4F 59 04 03 4F - 59 05 03 4F 59 06 03 4F Y..OY..OY..OY..O 00001050 : 59 07 03 4F 53 59 06 08 - BC 0A 59 03 04 4F 59 04 Y..OSY....Y..OY. 00001060 : 04 4F 59 05 04 4F 59 06 - 04 4F 59 07 03 4F 53 59 .OY..OY..OY..OSY 00001070 : 07 08 BC 0A 59 03 03 4F - 59 04 03 4F 59 05 03 4F ....Y..OY..OY..O 00001080 : 59 06 03 4F 59 07 04 4F - 53 59 08 08 BC 0A 59 03 Y..OY..OSY....Y. 00001090 : 04 4F 59 04 03 4F 59 05 - 03 4F 59 06 03 4F 59 07 .OY..OY..OY..OY. 000010A0 : 04 4F 53 59 10 06 08 BC - 0A 59 03 03 4F 59 04 04 .OSY.....Y..OY.. 000010B0 : 4F 59 05 04 4F 59 06 04 - 4F 59 07 03 4F 53 53 59 OY..OY..OY..OSSY 000010C0 : 10 06 10 07 BD 00 04 59 - 03 08 BC 0A 59 03 03 4F .......Y....Y..O 000010D0 : 59 04 04 4F 59 05 04 4F - 59 06 04 4F 59 07 03 4F Y..OY..OY..OY..O 000010E0 : 53 59 04 08 BC 0A 59 03 - 04 4F 59 04 03 4F 59 05 SY....Y..OY..OY. 000010F0 : 03 4F 59 06 03 4F 59 07 - 04 4F 53 59 05 08 BC 0A .OY..OY..OSY.... 00001100 : 59 03 04 4F 59 04 03 4F - 59 05 03 4F 59 06 03 4F Y..OY..OY..OY..O 00001110 : 59 07 03 4F 53 59 06 08 - BC 0A 59 03 04 4F 59 04 Y..OSY....Y..OY. 00001120 : 04 4F 59 05 04 4F 59 06 - 04 4F 59 07 03 4F 53 59 .OY..OY..OY..OSY 00001130 : 07 08 BC 0A 59 03 04 4F - 59 04 03 4F 59 05 03 4F ....Y..OY..OY..O 00001140 : 59 06 03 4F 59 07 04 4F - 53 59 08 08 BC 0A 59 03 Y..OY..OSY....Y. 00001150 : 04 4F 59 04 03 4F 59 05 - 03 4F 59 06 03 4F 59 07 .OY..OY..OY..OY. 00001160 : 04 4F 53 59 10 06 08 BC - 0A 59 03 03 4F 59 04 04 .OSY.....Y..OY.. 00001170 : 4F 59 05 04 4F 59 06 04 - 4F 59 07 03 4F 53 53 59 OY..OY..OY..OSSY 00001180 : 10 07 10 07 BD 00 04 59 - 03 08 BC 0A 59 03 04 4F .......Y....Y..O 00001190 : 59 04 04 4F 59 05 04 4F - 59 06 04 4F 59 07 04 4F Y..OY..OY..OY..O 000011A0 : 53 59 04 08 BC 0A 59 03 - 04 4F 59 04 03 4F 59 05 SY....Y..OY..OY. 000011B0 : 03 4F 59 06 03 4F 59 07 - 04 4F 53 59 05 08 BC 0A .OY..OY..OSY.... 000011C0 : 59 03 03 4F 59 04 03 4F - 59 05 03 4F 59 06 03 4F Y..OY..OY..OY..O 000011D0 : 59 07 04 4F 53 59 06 08 - BC 0A 59 03 03 4F 59 04 Y..OSY....Y..OY. 000011E0 : 03 4F 59 05 03 4F 59 06 - 04 4F 59 07 03 4F 53 59 .OY..OY..OY..OSY 000011F0 : 07 08 BC 0A 59 03 03 4F - 59 04 03 4F 59 05 04 4F ....Y..OY..OY..O 00001200 : 59 06 03 4F 59 07 03 4F - 53 59 08 08 BC 0A 59 03 Y..OY..OSY....Y. 00001210 : 03 4F 59 04 04 4F 59 05 - 03 4F 59 06 03 4F 59 07 .OY..OY..OY..OY. 00001220 : 03 4F 53 59 10 06 08 BC - 0A 59 03 04 4F 59 04 03 .OSY.....Y..OY.. 00001230 : 4F 59 05 03 4F 59 06 03 - 4F 59 07 03 4F 53 53 59 OY..OY..OY..OSSY 00001240 : 10 08 10 07 BD 00 04 59 - 03 08 BC 0A 59 03 03 4F .......Y....Y..O 00001250 : 59 04 04 4F 59 05 04 4F - 59 06 04 4F 59 07 03 4F Y..OY..OY..OY..O 00001260 : 53 59 04 08 BC 0A 59 03 - 04 4F 59 04 03 4F 59 05 SY....Y..OY..OY. 00001270 : 03 4F 59 06 03 4F 59 07 - 04 4F 53 59 05 08 BC 0A .OY..OY..OSY.... 00001280 : 59 03 04 4F 59 04 03 4F - 59 05 03 4F 59 06 03 4F Y..OY..OY..OY..O 00001290 : 59 07 04 4F 53 59 06 08 - BC 0A 59 03 03 4F 59 04 Y..OSY....Y..OY. 000012A0 : 04 4F 59 05 04 4F 59 06 - 04 4F 59 07 03 4F 53 59 .OY..OY..OY..OSY 000012B0 : 07 08 BC 0A 59 03 04 4F - 59 04 03 4F 59 05 03 4F ....Y..OY..OY..O 000012C0 : 59 06 03 4F 59 07 04 4F - 53 59 08 08 BC 0A 59 03 Y..OY..OSY....Y. 000012D0 : 04 4F 59 04 03 4F 59 05 - 03 4F 59 06 03 4F 59 07 .OY..OY..OY..OY. 000012E0 : 04 4F 53 59 10 06 08 BC - 0A 59 03 03 4F 59 04 04 .OSY.....Y..OY.. 000012F0 : 4F 59 05 04 4F 59 06 04 - 4F 59 07 03 4F 53 53 59 OY..OY..OY..OSSY 00001300 : 10 09 10 07 BD 00 04 59 - 03 08 BC 0A 59 03 03 4F .......Y....Y..O 00001310 : 59 04 04 4F 59 05 04 4F - 59 06 04 4F 59 07 03 4F Y..OY..OY..OY..O 00001320 : 53 59 04 08 BC 0A 59 03 - 04 4F 59 04 03 4F 59 05 SY....Y..OY..OY. 00001330 : 03 4F 59 06 03 4F 59 07 - 04 4F 53 59 05 08 BC 0A .OY..OY..OSY.... 00001340 : 59 03 04 4F 59 04 03 4F - 59 05 03 4F 59 06 03 4F Y..OY..OY..OY..O 00001350 : 59 07 04 4F 53 59 06 08 - BC 0A 59 03 03 4F 59 04 Y..OSY....Y..OY. 00001360 : 04 4F 59 05 04 4F 59 06 - 04 4F 59 07 04 4F 53 59 .OY..OY..OY..OSY 00001370 : 07 08 BC 0A 59 03 03 4F - 59 04 03 4F 59 05 03 4F ....Y..OY..OY..O 00001380 : 59 06 03 4F 59 07 04 4F - 53 59 08 08 BC 0A 59 03 Y..OY..OSY....Y. 00001390 : 04 4F 59 04 03 4F 59 05 - 03 4F 59 06 03 4F 59 07 .OY..OY..OY..OY. 000013A0 : 04 4F 53 59 10 06 08 BC - 0A 59 03 03 4F 59 04 04 .OSY.....Y..OY.. 000013B0 : 4F 59 05 04 4F 59 06 04 - 4F 59 07 03 4F 53 53 B5 OY..OY..OY..OSS. 000013C0 : 00 2E B1 00 00 00 01 00 - 73 00 00 00 66 00 19 00 ........s...f... 000013D0 : 00 00 06 00 04 00 08 00 - 26 00 09 00 2F 00 0B 00 ........&.../... 000013E0 : 37 00 0C 00 F3 00 0B 00 - F6 00 0D 01 B2 00 0B 01 7............... 000013F0 : B5 00 0E 02 71 00 0B 02 - 74 00 0F 03 30 00 0B 03 ....q...t...0... 00001400 : 33 00 10 03 EF 00 0B 03 - F2 00 11 04 AE 00 0B 04 3............... 00001410 : B2 00 12 05 6E 00 0B 05 - 72 00 13 06 2E 00 0B 06 ....n...r....... 00001420 : 32 00 14 06 EE 00 0B 06 - F2 00 15 07 AE 00 0B 07 2............... 00001430 : B2 00 06 00 01 00 6B 00 - 00 00 02 00 AF Total File Length = 5181 bytes. 00000000 Magic Code [CAFEBABE] = CAFEBABE --- OK (^_^) 00000004 Version : major version 45 , minor version 3 00000008 Constant Pool : total number = 185 0000000A constant_pool[1] = <8> CONSTANT_String , name_index = 172 0000000D constant_pool[2] = <8> CONSTANT_String , name_index = 180 00000010 constant_pool[3] = <7> CONSTANT_Class , name_index = 150 00000013 constant_pool[4] = <7> CONSTANT_Class , name_index = 140 00000016 constant_pool[5] = <7> CONSTANT_Class , name_index = 136 00000019 constant_pool[6] = <7> CONSTANT_Class , name_index = 156 0000001C constant_pool[7] = <7> CONSTANT_Class , name_index = 122 0000001F constant_pool[8] = <7> CONSTANT_Class , name_index = 103 00000022 constant_pool[9] = <7> CONSTANT_Class , name_index = 145 00000025 constant_pool[10] = <7> CONSTANT_Class , name_index = 158 00000028 constant_pool[11] = <7> CONSTANT_Class , name_index = 165 0000002B constant_pool[12] = <7> CONSTANT_Class , name_index = 157 0000002E constant_pool[13] = <7> CONSTANT_Class , name_index = 173 00000031 constant_pool[14] = <7> CONSTANT_Class , name_index = 132 00000034 constant_pool[15] = <7> CONSTANT_Class , name_index = 160 00000037 constant_pool[16] = <7> CONSTANT_Class , name_index = 146 0000003A constant_pool[17] = <7> CONSTANT_Class , name_index = 137 0000003D constant_pool[18] = CONSTANT_Methodref , class_index = 15 , name_and_type_index = 83 00000042 constant_pool[19] = <9> CONSTANT_Fieldref , class_index = 16 , name_and_type_index = 94 00000047 constant_pool[20] = CONSTANT_Methodref , class_index = 7 , name_and_type_index = 68 0000004C constant_pool[21] = <9> CONSTANT_Fieldref , class_index = 15 , name_and_type_index = 87 00000051 constant_pool[22] = CONSTANT_Methodref , class_index = 9 , name_and_type_index = 85 00000056 constant_pool[23] = CONSTANT_Methodref , class_index = 9 , name_and_type_index = 74 0000005B constant_pool[24] = CONSTANT_Methodref , class_index = 7 , name_and_type_index = 90 00000060 constant_pool[25] = CONSTANT_Methodref , class_index = 13 , name_and_type_index = 84 00000065 constant_pool[26] = CONSTANT_Methodref , class_index = 5 , name_and_type_index = 80 0000006A constant_pool[27] = CONSTANT_Methodref , class_index = 17 , name_and_type_index = 57 0000006F constant_pool[28] = <9> CONSTANT_Fieldref , class_index = 15 , name_and_type_index = 63 00000074 constant_pool[29] = CONSTANT_Methodref , class_index = 15 , name_and_type_index = 65 00000079 constant_pool[30] = CONSTANT_Methodref , class_index = 7 , name_and_type_index = 89 0000007E constant_pool[31] = CONSTANT_Methodref , class_index = 9 , name_and_type_index = 59 00000083 constant_pool[32] = <9> CONSTANT_Fieldref , class_index = 15 , name_and_type_index = 77 00000088 constant_pool[33] = CONSTANT_Methodref , class_index = 17 , name_and_type_index = 86 0000008D constant_pool[34] = CONSTANT_Methodref , class_index = 17 , name_and_type_index = 61 00000092 constant_pool[35] = <9> CONSTANT_Fieldref , class_index = 15 , name_and_type_index = 91 00000097 constant_pool[36] = CONSTANT_Methodref , class_index = 6 , name_and_type_index = 60 0000009C constant_pool[37] = <9> CONSTANT_Fieldref , class_index = 15 , name_and_type_index = 95 000000A1 constant_pool[38] = CONSTANT_Methodref , class_index = 15 , name_and_type_index = 66 000000A6 constant_pool[39] = CONSTANT_Methodref , class_index = 15 , name_and_type_index = 76 000000AB constant_pool[40] = CONSTANT_Methodref , class_index = 5 , name_and_type_index = 82 000000B0 constant_pool[41] = CONSTANT_Methodref , class_index = 5 , name_and_type_index = 62 000000B5 constant_pool[42] = CONSTANT_Methodref , class_index = 10 , name_and_type_index = 64 000000BA constant_pool[43] = <9> CONSTANT_Fieldref , class_index = 15 , name_and_type_index = 67 000000BF constant_pool[44] = CONSTANT_Methodref , class_index = 13 , name_and_type_index = 58 000000C4 constant_pool[45] = CONSTANT_Methodref , class_index = 13 , name_and_type_index = 79 000000C9 constant_pool[46] = <9> CONSTANT_Fieldref , class_index = 15 , name_and_type_index = 56 000000CE constant_pool[47] = CONSTANT_Methodref , class_index = 10 , name_and_type_index = 81 000000D3 constant_pool[48] = <9> CONSTANT_Fieldref , class_index = 15 , name_and_type_index = 93 000000D8 constant_pool[49] = <9> CONSTANT_Fieldref , class_index = 8 , name_and_type_index = 92 000000DD constant_pool[50] = CONSTANT_Methodref , class_index = 9 , name_and_type_index = 75 000000E2 constant_pool[51] = <9> CONSTANT_Fieldref , class_index = 15 , name_and_type_index = 88 000000E7 constant_pool[52] = CONSTANT_Methodref , class_index = 17 , name_and_type_index = 84 000000EC constant_pool[53] = <9> CONSTANT_Fieldref , class_index = 15 , name_and_type_index = 73 000000F1 constant_pool[54] = CONSTANT_Methodref , class_index = 7 , name_and_type_index = 84 000000F6 constant_pool[55] = <9> CONSTANT_Fieldref , class_index = 16 , name_and_type_index = 78 000000FB constant_pool[56] = CONSTANT_NameAndType , name_index = 159 , signature_index = 108 00000100 constant_pool[57] = CONSTANT_NameAndType , name_index = 171 , signature_index = 155 00000105 constant_pool[58] = CONSTANT_NameAndType , name_index = 138 , signature_index = 125 0000010A constant_pool[59] = CONSTANT_NameAndType , name_index = 123 , signature_index = 139 0000010F constant_pool[60] = CONSTANT_NameAndType , name_index = 147 , signature_index = 143 00000114 constant_pool[61] = CONSTANT_NameAndType , name_index = 171 , signature_index = 126 00000119 constant_pool[62] = CONSTANT_NameAndType , name_index = 134 , signature_index = 130 0000011E constant_pool[63] = CONSTANT_NameAndType , name_index = 121 , signature_index = 170 00000123 constant_pool[64] = CONSTANT_NameAndType , name_index = 128 , signature_index = 124 00000128 constant_pool[65] = CONSTANT_NameAndType , name_index = 153 , signature_index = 144 0000012D constant_pool[66] = CONSTANT_NameAndType , name_index = 135 , signature_index = 111 00000132 constant_pool[67] = CONSTANT_NameAndType , name_index = 154 , signature_index = 170 00000137 constant_pool[68] = CONSTANT_NameAndType , name_index = 152 , signature_index = 141 0000013C constant_pool[69] = <5> CONSTANT_Float , high = 0 , low = 1000 00000145 constant_pool[71] = <6> CONSTANT_Double , high = 1083127808 , low = 0 0000014E constant_pool[73] = CONSTANT_NameAndType , name_index = 161 , signature_index = 170 00000153 constant_pool[74] = CONSTANT_NameAndType , name_index = 105 , signature_index = 109 00000158 constant_pool[75] = CONSTANT_NameAndType , name_index = 148 , signature_index = 183 0000015D constant_pool[76] = CONSTANT_NameAndType , name_index = 110 , signature_index = 111 00000162 constant_pool[77] = CONSTANT_NameAndType , name_index = 184 , signature_index = 182 00000167 constant_pool[78] = CONSTANT_NameAndType , name_index = 176 , signature_index = 170 0000016C constant_pool[79] = CONSTANT_NameAndType , name_index = 133 , signature_index = 120 00000171 constant_pool[80] = CONSTANT_NameAndType , name_index = 117 , signature_index = 167 00000176 constant_pool[81] = CONSTANT_NameAndType , name_index = 142 , signature_index = 104 0000017B constant_pool[82] = CONSTANT_NameAndType , name_index = 118 , signature_index = 139 00000180 constant_pool[83] = CONSTANT_NameAndType , name_index = 151 , signature_index = 144 00000185 constant_pool[84] = CONSTANT_NameAndType , name_index = 105 , signature_index = 139 0000018A constant_pool[85] = CONSTANT_NameAndType , name_index = 114 , signature_index = 139 0000018F constant_pool[86] = CONSTANT_NameAndType , name_index = 112 , signature_index = 127 00000194 constant_pool[87] = CONSTANT_NameAndType , name_index = 164 , signature_index = 170 00000199 constant_pool[88] = CONSTANT_NameAndType , name_index = 129 , signature_index = 170 0000019E constant_pool[89] = CONSTANT_NameAndType , name_index = 106 , signature_index = 141 000001A3 constant_pool[90] = CONSTANT_NameAndType , name_index = 179 , signature_index = 141 000001A8 constant_pool[91] = CONSTANT_NameAndType , name_index = 119 , signature_index = 170 000001AD constant_pool[92] = CONSTANT_NameAndType , name_index = 116 , signature_index = 181 000001B2 constant_pool[93] = CONSTANT_NameAndType , name_index = 166 , signature_index = 170 000001B7 constant_pool[94] = CONSTANT_NameAndType , name_index = 163 , signature_index = 170 000001BC constant_pool[95] = CONSTANT_NameAndType , name_index = 162 , signature_index = 178 000001C1 constant_pool[96] = <6> CONSTANT_Double , high = 1074921472 , low = 0 000001CA constant_pool[98] = <6> CONSTANT_Double , high = 1073217536 , low = 0 000001D3 constant_pool[100] = <6> CONSTANT_Double , high = 1072546447 , low = 1546188227 000001DC constant_pool[102] = <1> CONSTANT_Utf8 , Data = (Ljava/awt/Graphics;)V 000001F5 constant_pool[103] = <1> CONSTANT_Utf8 , Data = java/awt/Color 00000206 constant_pool[104] = <1> CONSTANT_Utf8 , Data = (IIII)V 00000210 constant_pool[105] = <1> CONSTANT_Utf8 , Data = 00000219 constant_pool[106] = <1> CONSTANT_Utf8 , Data = getHours 00000224 constant_pool[107] = <1> CONSTANT_Utf8 , Data = SourceFile 00000231 constant_pool[108] = <1> CONSTANT_Utf8 , Data = [[[I 00000238 constant_pool[109] = <1> CONSTANT_Utf8 , Data = (Ljava/lang/Runnable;)V 00000252 constant_pool[110] = <1> CONSTANT_Utf8 , Data = dot_draw 0000025D constant_pool[111] = <1> CONSTANT_Utf8 , Data = (Ljava/awt/Graphics;II)V 00000278 constant_pool[112] = <1> CONSTANT_Utf8 , Data = toString 00000283 constant_pool[113] = <1> CONSTANT_Utf8 , Data = Exceptions 00000290 constant_pool[114] = <1> CONSTANT_Utf8 , Data = stop 00000297 constant_pool[115] = <1> CONSTANT_Utf8 , Data = LineNumberTable 000002A9 constant_pool[116] = <1> CONSTANT_Utf8 , Data = black 000002B1 constant_pool[117] = <1> CONSTANT_Utf8 , Data = size 000002B8 constant_pool[118] = <1> CONSTANT_Utf8 , Data = repaint 000002C2 constant_pool[119] = <1> CONSTANT_Utf8 , Data = sz 000002C7 constant_pool[120] = <1> CONSTANT_Utf8 , Data = (Ljava/net/URL;Ljava/lang/String;)Ljava/awt/Image; 000002FC constant_pool[121] = <1> CONSTANT_Utf8 , Data = st 00000301 constant_pool[122] = <1> CONSTANT_Utf8 , Data = java/util/Date 00000312 constant_pool[123] = <1> CONSTANT_Utf8 , Data = start 0000031A constant_pool[124] = <1> CONSTANT_Utf8 , Data = (Ljava/awt/Image;IIIILjava/awt/image/ImageObserver;)Z 00000352 constant_pool[125] = <1> CONSTANT_Utf8 , Data = ()Ljava/net/URL; 00000365 constant_pool[126] = <1> CONSTANT_Utf8 , Data = (Ljava/lang/String;)Ljava/lang/StringBuffer; 00000394 constant_pool[127] = <1> CONSTANT_Utf8 , Data = ()Ljava/lang/String; 000003AB constant_pool[128] = <1> CONSTANT_Utf8 , Data = drawImage 000003B7 constant_pool[129] = <1> CONSTANT_Utf8 , Data = color_sel 000003C3 constant_pool[130] = <1> CONSTANT_Utf8 , Data = (Ljava/awt/Color;)V 000003D9 constant_pool[131] = <1> CONSTANT_Utf8 , Data = init 000003E0 constant_pool[132] = <1> CONSTANT_Utf8 , Data = [[I 000003E6 constant_pool[133] = <1> CONSTANT_Utf8 , Data = getImage 000003F1 constant_pool[134] = <1> CONSTANT_Utf8 , Data = setBackground 00000401 constant_pool[135] = <1> CONSTANT_Utf8 , Data = char_dot 0000040C constant_pool[136] = <1> CONSTANT_Utf8 , Data = java/awt/Component 00000421 constant_pool[137] = <1> CONSTANT_Utf8 , Data = java/lang/StringBuffer 0000043A constant_pool[138] = <1> CONSTANT_Utf8 , Data = getDocumentBase 0000044C constant_pool[139] = <1> CONSTANT_Utf8 , Data = ()V 00000452 constant_pool[140] = <1> CONSTANT_Utf8 , Data = [I 00000457 constant_pool[141] = <1> CONSTANT_Utf8 , Data = ()I 0000045D constant_pool[142] = <1> CONSTANT_Utf8 , Data = clearRect 00000469 constant_pool[143] = <1> CONSTANT_Utf8 , Data = ()D 0000046F constant_pool[144] = <1> CONSTANT_Utf8 , Data = (Ljava/awt/Graphics;III)V 0000048B constant_pool[145] = <1> CONSTANT_Utf8 , Data = java/lang/Thread 0000049E constant_pool[146] = <1> CONSTANT_Utf8 , Data = java/awt/Dimension 000004B3 constant_pool[147] = <1> CONSTANT_Utf8 , Data = random 000004BC constant_pool[148] = <1> CONSTANT_Utf8 , Data = sleep 000004C4 constant_pool[149] = <1> CONSTANT_Utf8 , Data = run 000004CA constant_pool[150] = <1> CONSTANT_Utf8 , Data = java/lang/Exception 000004E0 constant_pool[151] = <1> CONSTANT_Utf8 , Data = clock_disp 000004ED constant_pool[152] = <1> CONSTANT_Utf8 , Data = getSeconds 000004FA constant_pool[153] = <1> CONSTANT_Utf8 , Data = char_disp 00000506 constant_pool[154] = <1> CONSTANT_Utf8 , Data = yy 0000050B constant_pool[155] = <1> CONSTANT_Utf8 , Data = (I)Ljava/lang/StringBuffer; 00000529 constant_pool[156] = <1> CONSTANT_Utf8 , Data = java/lang/Math 0000053A constant_pool[157] = <1> CONSTANT_Utf8 , Data = java/lang/Runnable 0000054F constant_pool[158] = <1> CONSTANT_Utf8 , Data = java/awt/Graphics 00000563 constant_pool[159] = <1> CONSTANT_Utf8 , Data = m 00000567 constant_pool[160] = <1> CONSTANT_Utf8 , Data = sample 00000570 constant_pool[161] = <1> CONSTANT_Utf8 , Data = j 00000574 constant_pool[162] = <1> CONSTANT_Utf8 , Data = i 00000578 constant_pool[163] = <1> CONSTANT_Utf8 , Data = width 00000580 constant_pool[164] = <1> CONSTANT_Utf8 , Data = mode 00000587 constant_pool[165] = <1> CONSTANT_Utf8 , Data = java/awt/Image 00000598 constant_pool[166] = <1> CONSTANT_Utf8 , Data = xx 0000059D constant_pool[167] = <1> CONSTANT_Utf8 , Data = ()Ljava/awt/Dimension; 000005B6 constant_pool[168] = <1> CONSTANT_Utf8 , Data = paint 000005BE constant_pool[169] = <1> CONSTANT_Utf8 , Data = ConstantValue 000005CE constant_pool[170] = <1> CONSTANT_Utf8 , Data = I 000005D2 constant_pool[171] = <1> CONSTANT_Utf8 , Data = append 000005DB constant_pool[172] = <1> CONSTANT_Utf8 , Data = .gif 000005E2 constant_pool[173] = <1> CONSTANT_Utf8 , Data = java/applet/Applet 000005F7 constant_pool[174] = <1> CONSTANT_Utf8 , Data = Code 000005FE constant_pool[175] = <1> CONSTANT_Utf8 , Data = sample.java 0000060C constant_pool[176] = <1> CONSTANT_Utf8 , Data = height 00000615 constant_pool[177] = <1> CONSTANT_Utf8 , Data = LocalVariables 00000626 constant_pool[178] = <1> CONSTANT_Utf8 , Data = [Ljava/awt/Image; 0000063A constant_pool[179] = <1> CONSTANT_Utf8 , Data = getMinutes 00000647 constant_pool[180] = <1> CONSTANT_Utf8 , Data = java/gif/b 00000654 constant_pool[181] = <1> CONSTANT_Utf8 , Data = Ljava/awt/Color; 00000667 constant_pool[182] = <1> CONSTANT_Utf8 , Data = Ljava/lang/Thread; 0000067C constant_pool[183] = <1> CONSTANT_Utf8 , Data = (J)V 00000683 constant_pool[184] = <1> CONSTANT_Utf8 , Data = flow 0000068A Access Flag = 0001 --- ACC_PUBLIC 0000068C This Class = sample 0000068E Super Class = java/applet/Applet 00000690 Interface Count = 1 00000692 interface[0] : Name = java/lang/Runnable 00000694 Fields Count = 10 00000696 field[0] : ( no flag ) , Name = j , Signature = I , Attribute = 0 0000069E field[1] : ( no flag ) , Name = color_sel , Signature = I , Attribute = 0 000006A6 field[2] : ( no flag ) , Name = xx , Signature = I , Attribute = 0 000006AE field[3] : ( no flag ) , Name = yy , Signature = I , Attribute = 0 000006B6 field[4] : ( no flag ) , Name = sz , Signature = I , Attribute = 0 000006BE field[5] : ( no flag ) , Name = st , Signature = I , Attribute = 0 000006C6 field[6] : ( no flag ) , Name = mode , Signature = I , Attribute = 0 000006CE field[7] : ( no flag ) , Name = i , Signature = [Ljava/awt/Image; , Attribute = 0 000006D6 field[8] : ACC_PRIVATE , Name = flow , Signature = Ljava/lang/Thread; , Attribute = 0 000006DE field[9] : ( no flag ) , Name = m , Signature = [[[I , Attribute = 0 000006E6 Methods Count = 10 000006E8 method[0] : ACC_PUBLIC , Name = init , Signature = ()V , Attribute = 1 type = Code , length = 106 , max_stack = 6 , max_locals = 3 , code_length = 62 000000 aload_0 (Load object reference from local variable) 000001 invokevirtual 002C (Invoke instance method) 000004 astore_1 (Store object reference into local variable) 000005 iconst_1 (Push integer constant) 000006 istore_2 (Store integer into local variable) 000007 goto 0029 (Branch) 00000A aload_0 (Load object reference from local variable) 00000B getfield 0025 (Fetch field from object) 00000E iload_2 (Load integer from local variable) 00000F aload_0 (Load object reference from local variable) 000010 aload_1 (Load object reference from local variable) 000011 new 0011 (Create new object) 000014 dup (Duplicate top stack word) 000015 invokenonvirt 0034 (Invoke instance method, dispatching based on compile-time type) 000018 ldc1 02 (Push item from constant pool) 00001A invokevirtual 0022 (Invoke instance method) 00001D iload_2 (Load integer from local variable) 00001E invokevirtual 001B (Invoke instance method) 000021 ldc1 01 (Push item from constant pool) 000023 invokevirtual 0022 (Invoke instance method) 000026 invokevirtual 0021 (Invoke instance method) 000029 invokevirtual 002D (Invoke instance method) 00002C aastore (Store into object reference array) 00002D iinc 02 01 (Increment local variable by constant) 000030 iload_2 (Load integer from local variable) 000031 bipush 0E (Push one-byte signed integer) 000033 if_icmple FFD7 (Branch if integer less than or equal to) 000036 aload_0 (Load object reference from local variable) 000037 getstatic 0031 (Get static field from class) 00003A invokevirtual 0029 (Invoke instance method) 00003D return (Return (void) from procedure) exception_table_length = 0 attributes_count = 1 00000742 type = LineNumberTable , attribute_length = 26 00 06 00 00 00 19 00 05 00 1A 00 0A 00 1B 00 2D 00 1A 00 36 00 1D 00 3D 00 18 00000760 method[1] : ACC_PUBLIC , Name = start , Signature = ()V , Attribute = 1 type = Code , length = 52 , max_stack = 4 , max_locals = 1 , code_length = 20 000000 aload_0 (Load object reference from local variable) 000001 new 0009 (Create new object) 000004 dup (Duplicate top stack word) 000005 aload_0 (Load object reference from local variable) 000006 invokenonvirt 0017 (Invoke instance method, dispatching based on compile-time type) 000009 putfield 0020 (Set field in object) 00000C aload_0 (Load object reference from local variable) 00000D getfield 0020 (Fetch field from object) 000010 invokevirtual 001F (Invoke instance method) 000013 return (Return (void) from procedure) exception_table_length = 0 attributes_count = 1 00000790 type = LineNumberTable , attribute_length = 14 00 03 00 00 00 21 00 0C 00 22 00 13 00 20 000007A2 method[2] : ACC_PUBLIC , Name = run , Signature = ()V , Attribute = 1 type = Code , length = 77 , max_stack = 3 , max_locals = 1 , code_length = 25 000000 ldc2w 0045 (Push long or double from constant pool) 000003 invokestatic 0032 (Invoke a class (static) method) 000006 aload_0 (Load object reference from local variable) 000007 invokevirtual 0028 (Invoke instance method) 00000A goto FFF6 (Branch) 00000D pop (Pop top stack word) 00000E aload_0 (Load object reference from local variable) 00000F dup (Duplicate top stack word) 000010 getfield 0035 (Fetch field from object) 000013 iconst_1 (Push integer constant) 000014 iadd (Integer add) 000015 putfield 0035 (Set field in object) 000018 return (Return (void) from procedure) exception_table_length = 1 000007D5 start_pc = 0 , end_pc = 13 , handler_pc = 13 , catch_type = java/lang/Exception attributes_count = 1 000007DF type = LineNumberTable , attribute_length = 26 00 06 00 00 00 26 00 00 00 28 00 06 00 29 00 0A 00 27 00 0D 00 2C 00 18 00 25 000007FD method[3] : ACC_PUBLIC , Name = stop , Signature = ()V , Attribute = 1 type = Code , length = 36 , max_stack = 1 , max_locals = 1 , code_length = 8 000000 aload_0 (Load object reference from local variable) 000001 getfield 0020 (Fetch field from object) 000004 invokevirtual 0016 (Invoke instance method) 000007 return (Return (void) from procedure) exception_table_length = 0 attributes_count = 1 00000821 type = LineNumberTable , attribute_length = 10 00 02 00 00 00 30 00 07 00 2F 0000082F method[4] : ACC_PUBLIC , Name = paint , Signature = (Ljava/awt/Graphics;)V , Attribute = 1 type = Code , length = 109 , max_stack = 5 , max_locals = 7 , code_length = 57 000000 aload_0 (Load object reference from local variable) 000001 invokevirtual 001A (Invoke instance method) 000004 astore_2 (Store object reference into local variable) 000005 aload_1 (Load object reference from local variable) 000006 iconst_0 (Push integer constant) 000007 iconst_0 (Push integer constant) 000008 aload_2 (Load object reference from local variable) 000009 getfield 0013 (Fetch field from object) 00000C aload_2 (Load object reference from local variable) 00000D getfield 0037 (Fetch field from object) 000010 invokevirtual 002F (Invoke instance method) 000013 new 0007 (Create new object) 000016 dup (Duplicate top stack word) 000017 invokenonvirt 0036 (Invoke instance method, dispatching based on compile-time type) 00001A astore_3 (Store object reference into local variable) 00001B aload_3 (Load object reference from local variable) 00001C invokevirtual 001E (Invoke instance method) 00001F istore 04 (Store integer into local variable) 000021 aload_3 (Load object reference from local variable) 000022 invokevirtual 0018 (Invoke instance method) 000025 istore 05 (Store integer into local variable) 000027 aload_3 (Load object reference from local variable) 000028 invokevirtual 0014 (Invoke instance method) 00002B istore 06 (Store integer into local variable) 00002D aload_0 (Load object reference from local variable) 00002E aload_1 (Load object reference from local variable) 00002F iload 04 (Load integer from local variable) 000031 iload 05 (Load integer from local variable) 000033 iload 06 (Load integer from local variable) 000035 invokevirtual 0012 (Invoke instance method) 000038 return (Return (void) from procedure) exception_table_length = 0 attributes_count = 1 00000884 type = LineNumberTable , attribute_length = 34 00 08 00 00 00 34 00 05 00 35 00 13 00 36 00 1B 00 37 00 21 00 38 00 27 00 39 00 2D 00 3A 00 38 00 33 000008AA method[5] : ( no flag ) , Name = clock_disp , Signature = (Ljava/awt/Graphics;III)V , Attribute = 1 type = Code , length = 504 , max_stack = 5 , max_locals = 10 , code_length = 396 000000 iconst_1 (Push integer constant) 000001 istore 09 (Store integer into local variable) 000003 aload_0 (Load object reference from local variable) 000004 getfield 002B (Fetch field from object) 000007 istore 06 (Store integer into local variable) 000009 aload_0 (Load object reference from local variable) 00000A getfield 0015 (Fetch field from object) 00000D ifeq 0032 (Branch if equal to 0) 000010 aload_0 (Load object reference from local variable) 000011 getfield 0033 (Fetch field from object) 000014 istore 09 (Store integer into local variable) 000016 aload_0 (Load object reference from local variable) 000017 dup (Duplicate top stack word) 000018 getfield 0023 (Fetch field from object) 00001B iconst_3 (Push integer constant) 00001C iadd (Integer add) 00001D putfield 0023 (Set field in object) 000020 aload_0 (Load object reference from local variable) 000021 dup (Duplicate top stack word) 000022 getfield 001C (Fetch field from object) 000025 iconst_2 (Push integer constant) 000026 iadd (Integer add) 000027 putfield 001C (Set field in object) 00002A aload_0 (Load object reference from local variable) 00002B dup (Duplicate top stack word) 00002C getfield 0030 (Fetch field from object) 00002F bipush 28 (Push one-byte signed integer) 000031 isub (Integer subtract) 000032 putfield 0030 (Set field in object) 000035 aload_0 (Load object reference from local variable) 000036 dup (Duplicate top stack word) 000037 getfield 002B (Fetch field from object) 00003A iconst_5 (Push integer constant) 00003B isub (Integer subtract) 00003C putfield 002B (Set field in object) 00003F aload_0 (Load object reference from local variable) 000040 getfield 0030 (Fetch field from object) 000043 aload_0 (Load object reference from local variable) 000044 getfield 001C (Fetch field from object) 000047 bipush 1C (Push one-byte signed integer) 000049 imul (Integer multiply) 00004A iadd (Integer add) 00004B istore 05 (Store integer into local variable) 00004D iload 04 (Load integer from local variable) 00004F bipush 0A (Push one-byte signed integer) 000051 idiv (Integer divide) 000052 istore 07 (Store integer into local variable) 000054 aload_0 (Load object reference from local variable) 000055 aload_1 (Load object reference from local variable) 000056 iload 05 (Load integer from local variable) 000058 iload 06 (Load integer from local variable) 00005A iload 07 (Load integer from local variable) 00005C invokevirtual 001D (Invoke instance method) 00005F aload_0 (Load object reference from local variable) 000060 getfield 0030 (Fetch field from object) 000063 aload_0 (Load object reference from local variable) 000064 getfield 001C (Fetch field from object) 000067 bipush 22 (Push one-byte signed integer) 000069 imul (Integer multiply) 00006A iadd (Integer add) 00006B istore 05 (Store integer into local variable) 00006D iload 04 (Load integer from local variable) 00006F bipush 0A (Push one-byte signed integer) 000071 irem (Integer remainder) 000072 istore 08 (Store integer into local variable) 000074 aload_0 (Load object reference from local variable) 000075 aload_1 (Load object reference from local variable) 000076 iload 05 (Load integer from local variable) 000078 iload 06 (Load integer from local variable) 00007A iload 08 (Load integer from local variable) 00007C invokevirtual 001D (Invoke instance method) 00007F aload_0 (Load object reference from local variable) 000080 getfield 0030 (Fetch field from object) 000083 aload_0 (Load object reference from local variable) 000084 getfield 001C (Fetch field from object) 000087 bipush 0E (Push one-byte signed integer) 000089 imul (Integer multiply) 00008A iadd (Integer add) 00008B istore 05 (Store integer into local variable) 00008D iload_3 (Load integer from local variable) 00008E bipush 0A (Push one-byte signed integer) 000090 idiv (Integer divide) 000091 istore 07 (Store integer into local variable) 000093 aload_0 (Load object reference from local variable) 000094 aload_1 (Load object reference from local variable) 000095 iload 05 (Load integer from local variable) 000097 iload 06 (Load integer from local variable) 000099 iload 07 (Load integer from local variable) 00009B invokevirtual 001D (Invoke instance method) 00009E aload_0 (Load object reference from local variable) 00009F getfield 0030 (Fetch field from object) 0000A2 aload_0 (Load object reference from local variable) 0000A3 getfield 001C (Fetch field from object) 0000A6 bipush 14 (Push one-byte signed integer) 0000A8 imul (Integer multiply) 0000A9 iadd (Integer add) 0000AA istore 05 (Store integer into local variable) 0000AC iload_3 (Load integer from local variable) 0000AD bipush 0A (Push one-byte signed integer) 0000AF irem (Integer remainder) 0000B0 istore 07 (Store integer into local variable) 0000B2 aload_0 (Load object reference from local variable) 0000B3 aload_1 (Load object reference from local variable) 0000B4 iload 05 (Load integer from local variable) 0000B6 iload 06 (Load integer from local variable) 0000B8 iload 07 (Load integer from local variable) 0000BA invokevirtual 001D (Invoke instance method) 0000BD aload_0 (Load object reference from local variable) 0000BE getfield 0030 (Fetch field from object) 0000C1 istore 05 (Store integer into local variable) 0000C3 iload_2 (Load integer from local variable) 0000C4 bipush 0A (Push one-byte signed integer) 0000C6 idiv (Integer divide) 0000C7 istore 07 (Store integer into local variable) 0000C9 aload_0 (Load object reference from local variable) 0000CA aload_1 (Load object reference from local variable) 0000CB iload 05 (Load integer from local variable) 0000CD iload 06 (Load integer from local variable) 0000CF iload 07 (Load integer from local variable) 0000D1 invokevirtual 001D (Invoke instance method) 0000D4 aload_0 (Load object reference from local variable) 0000D5 getfield 0030 (Fetch field from object) 0000D8 aload_0 (Load object reference from local variable) 0000D9 getfield 001C (Fetch field from object) 0000DC bipush 06 (Push one-byte signed integer) 0000DE imul (Integer multiply) 0000DF iadd (Integer add) 0000E0 istore 05 (Store integer into local variable) 0000E2 iload_2 (Load integer from local variable) 0000E3 bipush 0A (Push one-byte signed integer) 0000E5 irem (Integer remainder) 0000E6 istore 07 (Store integer into local variable) 0000E8 aload_0 (Load object reference from local variable) 0000E9 aload_1 (Load object reference from local variable) 0000EA iload 05 (Load integer from local variable) 0000EC iload 06 (Load integer from local variable) 0000EE iload 07 (Load integer from local variable) 0000F0 invokevirtual 001D (Invoke instance method) 0000F3 aload_0 (Load object reference from local variable) 0000F4 getfield 0030 (Fetch field from object) 0000F7 aload_0 (Load object reference from local variable) 0000F8 getfield 001C (Fetch field from object) 0000FB bipush 0C (Push one-byte signed integer) 0000FD imul (Integer multiply) 0000FE iadd (Integer add) 0000FF istore 05 (Store integer into local variable) 000101 aload_0 (Load object reference from local variable) 000102 aload_1 (Load object reference from local variable) 000103 iload 05 (Load integer from local variable) 000105 iload 06 (Load integer from local variable) 000107 invokevirtual 0026 (Invoke instance method) 00010A aload_0 (Load object reference from local variable) 00010B getfield 0030 (Fetch field from object) 00010E aload_0 (Load object reference from local variable) 00010F getfield 001C (Fetch field from object) 000112 bipush 1A (Push one-byte signed integer) 000114 imul (Integer multiply) 000115 iadd (Integer add) 000116 istore 05 (Store integer into local variable) 000118 aload_0 (Load object reference from local variable) 000119 aload_1 (Load object reference from local variable) 00011A iload 05 (Load integer from local variable) 00011C iload 06 (Load integer from local variable) 00011E invokevirtual 0026 (Invoke instance method) 000121 aload_0 (Load object reference from local variable) 000122 getfield 0015 (Fetch field from object) 000125 ifeq 0032 (Branch if equal to 0) 000128 aload_0 (Load object reference from local variable) 000129 iload 09 (Load integer from local variable) 00012B putfield 0033 (Set field in object) 00012E aload_0 (Load object reference from local variable) 00012F dup (Duplicate top stack word) 000130 getfield 0023 (Fetch field from object) 000133 iconst_3 (Push integer constant) 000134 isub (Integer subtract) 000135 putfield 0023 (Set field in object) 000138 aload_0 (Load object reference from local variable) 000139 dup (Duplicate top stack word) 00013A getfield 001C (Fetch field from object) 00013D iconst_2 (Push integer constant) 00013E isub (Integer subtract) 00013F putfield 001C (Set field in object) 000142 aload_0 (Load object reference from local variable) 000143 dup (Duplicate top stack word) 000144 getfield 0030 (Fetch field from object) 000147 bipush 28 (Push one-byte signed integer) 000149 iadd (Integer add) 00014A putfield 0030 (Set field in object) 00014D aload_0 (Load object reference from local variable) 00014E dup (Duplicate top stack word) 00014F getfield 002B (Fetch field from object) 000152 iconst_5 (Push integer constant) 000153 iadd (Integer add) 000154 putfield 002B (Set field in object) 000157 iload 08 (Load integer from local variable) 000159 bipush 09 (Push one-byte signed integer) 00015B if_icmpne 001B (Branch if integers not equal) 00015E aload_0 (Load object reference from local variable) 00015F dup (Duplicate top stack word) 000160 getfield 0033 (Fetch field from object) 000163 iconst_1 (Push integer constant) 000164 iadd (Integer add) 000165 putfield 0033 (Set field in object) 000168 aload_0 (Load object reference from local variable) 000169 getfield 0033 (Fetch field from object) 00016C bipush 0E (Push one-byte signed integer) 00016E if_icmple 0008 (Branch if integer less than or equal to) 000171 aload_0 (Load object reference from local variable) 000172 iconst_1 (Push integer constant) 000173 putfield 0033 (Set field in object) 000176 invokestatic 0024 (Invoke a class (static) method) 000179 ldc2w 0064 (Push long or double from constant pool) 00017C dcmpl (Double float compare (-1 on NaN)) 00017D ifle 0009 (Branch if less than or equal to 0) 000180 aload_0 (Load object reference from local variable) 000181 iconst_1 (Push integer constant) 000182 putfield 0015 (Set field in object) 000185 return (Return (void) from procedure) 000186 aload_0 (Load object reference from local variable) 000187 iconst_0 (Push integer constant) 000188 putfield 0015 (Set field in object) 00018B return (Return (void) from procedure) exception_table_length = 0 attributes_count = 1 00000A52 type = LineNumberTable , attribute_length = 90 00 16 00 00 00 3E 00 03 00 3F 00 09 00 40 00 10 00 41 00 16 00 42 00 3F 00 44 00 5F 00 45 00 7F 00 46 00 9E 00 47 00 BD 00 48 00 D4 00 49 00 F3 00 4A 01 0A 00 4B 01 21 00 4C 01 28 00 4D 01 2E 00 4E 01 57 00 50 01 5E 00 51 01 68 00 52 01 76 00 54 01 86 00 55 01 8B 00 3D 00000AB0 method[6] : ( no flag ) , Name = char_dot , Signature = (Ljava/awt/Graphics;II)V , Attribute = 1 type = Code , length = 69 , max_stack = 8 , max_locals = 4 , code_length = 37 000000 aload_0 (Load object reference from local variable) 000001 aload_1 (Load object reference from local variable) 000002 iload_2 (Load integer from local variable) 000003 iload_3 (Load integer from local variable) 000004 aload_0 (Load object reference from local variable) 000005 getfield 001C (Fetch field from object) 000008 i2d (Integer to double float) 000009 ldc2w 0062 (Push long or double from constant pool) 00000C dmul (Double float multiply) 00000D d2i (Double float to integer) 00000E iadd (Integer add) 00000F invokevirtual 0027 (Invoke instance method) 000012 aload_0 (Load object reference from local variable) 000013 aload_1 (Load object reference from local variable) 000014 iload_2 (Load integer from local variable) 000015 iload_3 (Load integer from local variable) 000016 aload_0 (Load object reference from local variable) 000017 getfield 001C (Fetch field from object) 00001A i2d (Integer to double float) 00001B ldc2w 0060 (Push long or double from constant pool) 00001E dmul (Double float multiply) 00001F d2i (Double float to integer) 000020 iadd (Integer add) 000021 invokevirtual 0027 (Invoke instance method) 000024 return (Return (void) from procedure) exception_table_length = 0 attributes_count = 1 00000AF1 type = LineNumberTable , attribute_length = 14 00 03 00 00 00 59 00 12 00 5A 00 24 00 58 00000B03 method[7] : ( no flag ) , Name = dot_draw , Signature = (Ljava/awt/Graphics;II)V , Attribute = 1 type = Code , length = 99 , max_stack = 7 , max_locals = 5 , code_length = 55 000000 aload_0 (Load object reference from local variable) 000001 getfield 0015 (Fetch field from object) 000004 ifne 000C (Branch if not equal to 0) 000007 aload_0 (Load object reference from local variable) 000008 getfield 0033 (Fetch field from object) 00000B istore 04 (Store integer into local variable) 00000D goto 0012 (Branch) 000010 iconst_1 (Push integer constant) 000011 invokestatic 0024 (Invoke a class (static) method) 000014 ldc2w 0047 (Push long or double from constant pool) 000017 dmul (Double float multiply) 000018 d2i (Double float to integer) 000019 bipush 0E (Push one-byte signed integer) 00001B irem (Integer remainder) 00001C iadd (Integer add) 00001D istore 04 (Store integer into local variable) 00001F aload_1 (Load object reference from local variable) 000020 aload_0 (Load object reference from local variable) 000021 getfield 0025 (Fetch field from object) 000024 iload 04 (Load integer from local variable) 000026 aaload (Load object reference from array) 000027 iload_2 (Load integer from local variable) 000028 iload_3 (Load integer from local variable) 000029 aload_0 (Load object reference from local variable) 00002A getfield 0023 (Fetch field from object) 00002D aload_0 (Load object reference from local variable) 00002E getfield 0023 (Fetch field from object) 000031 aload_0 (Load object reference from local variable) 000032 invokevirtual 002A (Invoke instance method) 000035 pop (Pop top stack word) 000036 return (Return (void) from procedure) exception_table_length = 0 attributes_count = 1 00000B56 type = LineNumberTable , attribute_length = 26 00 06 00 00 00 5F 00 07 00 60 00 0D 00 5F 00 10 00 63 00 1F 00 65 00 36 00 5D 00000B74 method[8] : ( no flag ) , Name = char_disp , Signature = (Ljava/awt/Graphics;III)V , Attribute = 1 type = Code , length = 120 , max_stack = 6 , max_locals = 7 , code_length = 72 000000 iconst_0 (Push integer constant) 000001 istore 05 (Store integer into local variable) 000003 goto 003E (Branch) 000006 iconst_0 (Push integer constant) 000007 istore 06 (Store integer into local variable) 000009 goto 002E (Branch) 00000C aload_0 (Load object reference from local variable) 00000D getfield 002E (Fetch field from object) 000010 iload 04 (Load integer from local variable) 000012 aaload (Load object reference from array) 000013 iload 06 (Load integer from local variable) 000015 aaload (Load object reference from array) 000016 iload 05 (Load integer from local variable) 000018 iaload (Load integer from array) 000019 iconst_1 (Push integer constant) 00001A if_icmpne 001A (Branch if integers not equal) 00001D aload_0 (Load object reference from local variable) 00001E aload_1 (Load object reference from local variable) 00001F iload_2 (Load integer from local variable) 000020 aload_0 (Load object reference from local variable) 000021 getfield 001C (Fetch field from object) 000024 iload 05 (Load integer from local variable) 000026 imul (Integer multiply) 000027 iadd (Integer add) 000028 iload_3 (Load integer from local variable) 000029 aload_0 (Load object reference from local variable) 00002A getfield 001C (Fetch field from object) 00002D iload 06 (Load integer from local variable) 00002F imul (Integer multiply) 000030 iadd (Integer add) 000031 invokevirtual 0027 (Invoke instance method) 000034 iinc 06 01 (Increment local variable by constant) 000037 iload 06 (Load integer from local variable) 000039 bipush 07 (Push one-byte signed integer) 00003B if_icmplt FFD1 (Branch if integer less than) 00003E iinc 05 01 (Increment local variable by constant) 000041 iload 05 (Load integer from local variable) 000043 iconst_5 (Push integer constant) 000044 if_icmplt FFC2 (Branch if integer less than) 000047 return (Return (void) from procedure) exception_table_length = 0 attributes_count = 1 00000BD8 type = LineNumberTable , attribute_length = 30 00 07 00 00 00 69 00 06 00 6A 00 0C 00 6B 00 1D 00 6C 00 34 00 6A 00 3E 00 69 00 47 00 68 00000BFA method[9] : ACC_PUBLIC , Name = , Signature = ()V , Attribute = 1 type = Code , length = 2091 , max_stack = 11 , max_locals = 1 , code_length = 1971 000000 aload_0 (Load object reference from local variable) 000001 invokenonvirt 0019 (Invoke instance method, dispatching based on compile-time type) 000004 aload_0 (Load object reference from local variable) 000005 iconst_1 (Push integer constant) 000006 putfield 0033 (Set field in object) 000009 aload_0 (Load object reference from local variable) 00000A bipush 46 (Push one-byte signed integer) 00000C putfield 0030 (Set field in object) 00000F aload_0 (Load object reference from local variable) 000010 bipush 19 (Push one-byte signed integer) 000012 putfield 002B (Set field in object) 000015 aload_0 (Load object reference from local variable) 000016 bipush 0A (Push one-byte signed integer) 000018 putfield 0023 (Set field in object) 00001B aload_0 (Load object reference from local variable) 00001C bipush 0C (Push one-byte signed integer) 00001E putfield 001C (Set field in object) 000021 aload_0 (Load object reference from local variable) 000022 iconst_1 (Push integer constant) 000023 putfield 0015 (Set field in object) 000026 aload_0 (Load object reference from local variable) 000027 bipush 0F (Push one-byte signed integer) 000029 anewarray 000B (Allocate new array of references to objects) 00002C putfield 0025 (Set field in object) 00002F aload_0 (Load object reference from local variable) 000030 bipush 0A (Push one-byte signed integer) 000032 anewarray 000E (Allocate new array of references to objects) 000035 dup (Duplicate top stack word) 000036 iconst_0 (Push integer constant) 000037 bipush 07 (Push one-byte signed integer) 000039 anewarray 0004 (Allocate new array of references to objects) 00003C dup (Duplicate top stack word) 00003D iconst_0 (Push integer constant) 00003E iconst_5 (Push integer constant) 00003F newarray 0A (Allocate new array) : array type = T_INT 000041 dup (Duplicate top stack word) 000042 iconst_0 (Push integer constant) 000043 iconst_0 (Push integer constant) 000044 iastore (Store into integer array) 000045 dup (Duplicate top stack word) 000046 iconst_1 (Push integer constant) 000047 iconst_1 (Push integer constant) 000048 iastore (Store into integer array) 000049 dup (Duplicate top stack word) 00004A iconst_2 (Push integer constant) 00004B iconst_1 (Push integer constant) 00004C iastore (Store into integer array) 00004D dup (Duplicate top stack word) 00004E iconst_3 (Push integer constant) 00004F iconst_1 (Push integer constant) 000050 iastore (Store into integer array) 000051 dup (Duplicate top stack word) 000052 iconst_4 (Push integer constant) 000053 iconst_0 (Push integer constant) 000054 iastore (Store into integer array) 000055 aastore (Store into object reference array) 000056 dup (Duplicate top stack word) 000057 iconst_1 (Push integer constant) 000058 iconst_5 (Push integer constant) 000059 newarray 0A (Allocate new array) : array type = T_INT 00005B dup (Duplicate top stack word) 00005C iconst_0 (Push integer constant) 00005D iconst_1 (Push integer constant) 00005E iastore (Store into integer array) 00005F dup (Duplicate top stack word) 000060 iconst_1 (Push integer constant) 000061 iconst_0 (Push integer constant) 000062 iastore (Store into integer array) 000063 dup (Duplicate top stack word) 000064 iconst_2 (Push integer constant) 000065 iconst_0 (Push integer constant) 000066 iastore (Store into integer array) 000067 dup (Duplicate top stack word) 000068 iconst_3 (Push integer constant) 000069 iconst_0 (Push integer constant) 00006A iastore (Store into integer array) 00006B dup (Duplicate top stack word) 00006C iconst_4 (Push integer constant) 00006D iconst_1 (Push integer constant) 00006E iastore (Store into integer array) 00006F aastore (Store into object reference array) 000070 dup (Duplicate top stack word) 000071 iconst_2 (Push integer constant) 000072 iconst_5 (Push integer constant) 000073 newarray 0A (Allocate new array) : array type = T_INT 000075 dup (Duplicate top stack word) 000076 iconst_0 (Push integer constant) 000077 iconst_1 (Push integer constant) 000078 iastore (Store into integer array) 000079 dup (Duplicate top stack word) 00007A iconst_1 (Push integer constant) 00007B iconst_0 (Push integer constant) 00007C iastore (Store into integer array) 00007D dup (Duplicate top stack word) 00007E iconst_2 (Push integer constant) 00007F iconst_0 (Push integer constant) 000080 iastore (Store into integer array) 000081 dup (Duplicate top stack word) 000082 iconst_3 (Push integer constant) 000083 iconst_0 (Push integer constant) 000084 iastore (Store into integer array) 000085 dup (Duplicate top stack word) 000086 iconst_4 (Push integer constant) 000087 iconst_1 (Push integer constant) 000088 iastore (Store into integer array) 000089 aastore (Store into object reference array) 00008A dup (Duplicate top stack word) 00008B iconst_3 (Push integer constant) 00008C iconst_5 (Push integer constant) 00008D newarray 0A (Allocate new array) : array type = T_INT 00008F dup (Duplicate top stack word) 000090 iconst_0 (Push integer constant) 000091 iconst_1 (Push integer constant) 000092 iastore (Store into integer array) 000093 dup (Duplicate top stack word) 000094 iconst_1 (Push integer constant) 000095 iconst_0 (Push integer constant) 000096 iastore (Store into integer array) 000097 dup (Duplicate top stack word) 000098 iconst_2 (Push integer constant) 000099 iconst_0 (Push integer constant) 00009A iastore (Store into integer array) 00009B dup (Duplicate top stack word) 00009C iconst_3 (Push integer constant) 00009D iconst_0 (Push integer constant) 00009E iastore (Store into integer array) 00009F dup (Duplicate top stack word) 0000A0 iconst_4 (Push integer constant) 0000A1 iconst_1 (Push integer constant) 0000A2 iastore (Store into integer array) 0000A3 aastore (Store into object reference array) 0000A4 dup (Duplicate top stack word) 0000A5 iconst_4 (Push integer constant) 0000A6 iconst_5 (Push integer constant) 0000A7 newarray 0A (Allocate new array) : array type = T_INT 0000A9 dup (Duplicate top stack word) 0000AA iconst_0 (Push integer constant) 0000AB iconst_1 (Push integer constant) 0000AC iastore (Store into integer array) 0000AD dup (Duplicate top stack word) 0000AE iconst_1 (Push integer constant) 0000AF iconst_0 (Push integer constant) 0000B0 iastore (Store into integer array) 0000B1 dup (Duplicate top stack word) 0000B2 iconst_2 (Push integer constant) 0000B3 iconst_0 (Push integer constant) 0000B4 iastore (Store into integer array) 0000B5 dup (Duplicate top stack word) 0000B6 iconst_3 (Push integer constant) 0000B7 iconst_0 (Push integer constant) 0000B8 iastore (Store into integer array) 0000B9 dup (Duplicate top stack word) 0000BA iconst_4 (Push integer constant) 0000BB iconst_1 (Push integer constant) 0000BC iastore (Store into integer array) 0000BD aastore (Store into object reference array) 0000BE dup (Duplicate top stack word) 0000BF iconst_5 (Push integer constant) 0000C0 iconst_5 (Push integer constant) 0000C1 newarray 0A (Allocate new array) : array type = T_INT 0000C3 dup (Duplicate top stack word) 0000C4 iconst_0 (Push integer constant) 0000C5 iconst_1 (Push integer constant) 0000C6 iastore (Store into integer array) 0000C7 dup (Duplicate top stack word) 0000C8 iconst_1 (Push integer constant) 0000C9 iconst_0 (Push integer constant) 0000CA iastore (Store into integer array) 0000CB dup (Duplicate top stack word) 0000CC iconst_2 (Push integer constant) 0000CD iconst_0 (Push integer constant) 0000CE iastore (Store into integer array) 0000CF dup (Duplicate top stack word) 0000D0 iconst_3 (Push integer constant) 0000D1 iconst_0 (Push integer constant) 0000D2 iastore (Store into integer array) 0000D3 dup (Duplicate top stack word) 0000D4 iconst_4 (Push integer constant) 0000D5 iconst_1 (Push integer constant) 0000D6 iastore (Store into integer array) 0000D7 aastore (Store into object reference array) 0000D8 dup (Duplicate top stack word) 0000D9 bipush 06 (Push one-byte signed integer) 0000DB iconst_5 (Push integer constant) 0000DC newarray 0A (Allocate new array) : array type = T_INT 0000DE dup (Duplicate top stack word) 0000DF iconst_0 (Push integer constant) 0000E0 iconst_0 (Push integer constant) 0000E1 iastore (Store into integer array) 0000E2 dup (Duplicate top stack word) 0000E3 iconst_1 (Push integer constant) 0000E4 iconst_1 (Push integer constant) 0000E5 iastore (Store into integer array) 0000E6 dup (Duplicate top stack word) 0000E7 iconst_2 (Push integer constant) 0000E8 iconst_1 (Push integer constant) 0000E9 iastore (Store into integer array) 0000EA dup (Duplicate top stack word) 0000EB iconst_3 (Push integer constant) 0000EC iconst_1 (Push integer constant) 0000ED iastore (Store into integer array) 0000EE dup (Duplicate top stack word) 0000EF iconst_4 (Push integer constant) 0000F0 iconst_0 (Push integer constant) 0000F1 iastore (Store into integer array) 0000F2 aastore (Store into object reference array) 0000F3 aastore (Store into object reference array) 0000F4 dup (Duplicate top stack word) 0000F5 iconst_1 (Push integer constant) 0000F6 bipush 07 (Push one-byte signed integer) 0000F8 anewarray 0004 (Allocate new array of references to objects) 0000FB dup (Duplicate top stack word) 0000FC iconst_0 (Push integer constant) 0000FD iconst_5 (Push integer constant) 0000FE newarray 0A (Allocate new array) : array type = T_INT 000100 dup (Duplicate top stack word) 000101 iconst_0 (Push integer constant) 000102 iconst_0 (Push integer constant) 000103 iastore (Store into integer array) 000104 dup (Duplicate top stack word) 000105 iconst_1 (Push integer constant) 000106 iconst_0 (Push integer constant) 000107 iastore (Store into integer array) 000108 dup (Duplicate top stack word) 000109 iconst_2 (Push integer constant) 00010A iconst_1 (Push integer constant) 00010B iastore (Store into integer array) 00010C dup (Duplicate top stack word) 00010D iconst_3 (Push integer constant) 00010E iconst_0 (Push integer constant) 00010F iastore (Store into integer array) 000110 dup (Duplicate top stack word) 000111 iconst_4 (Push integer constant) 000112 iconst_0 (Push integer constant) 000113 iastore (Store into integer array) 000114 aastore (Store into object reference array) 000115 dup (Duplicate top stack word) 000116 iconst_1 (Push integer constant) 000117 iconst_5 (Push integer constant) 000118 newarray 0A (Allocate new array) : array type = T_INT 00011A dup (Duplicate top stack word) 00011B iconst_0 (Push integer constant) 00011C iconst_0 (Push integer constant) 00011D iastore (Store into integer array) 00011E dup (Duplicate top stack word) 00011F iconst_1 (Push integer constant) 000120 iconst_1 (Push integer constant) 000121 iastore (Store into integer array) 000122 dup (Duplicate top stack word) 000123 iconst_2 (Push integer constant) 000124 iconst_1 (Push integer constant) 000125 iastore (Store into integer array) 000126 dup (Duplicate top stack word) 000127 iconst_3 (Push integer constant) 000128 iconst_0 (Push integer constant) 000129 iastore (Store into integer array) 00012A dup (Duplicate top stack word) 00012B iconst_4 (Push integer constant) 00012C iconst_0 (Push integer constant) 00012D iastore (Store into integer array) 00012E aastore (Store into object reference array) 00012F dup (Duplicate top stack word) 000130 iconst_2 (Push integer constant) 000131 iconst_5 (Push integer constant) 000132 newarray 0A (Allocate new array) : array type = T_INT 000134 dup (Duplicate top stack word) 000135 iconst_0 (Push integer constant) 000136 iconst_0 (Push integer constant) 000137 iastore (Store into integer array) 000138 dup (Duplicate top stack word) 000139 iconst_1 (Push integer constant) 00013A iconst_0 (Push integer constant) 00013B iastore (Store into integer array) 00013C dup (Duplicate top stack word) 00013D iconst_2 (Push integer constant) 00013E iconst_1 (Push integer constant) 00013F iastore (Store into integer array) 000140 dup (Duplicate top stack word) 000141 iconst_3 (Push integer constant) 000142 iconst_0 (Push integer constant) 000143 iastore (Store into integer array) 000144 dup (Duplicate top stack word) 000145 iconst_4 (Push integer constant) 000146 iconst_0 (Push integer constant) 000147 iastore (Store into integer array) 000148 aastore (Store into object reference array) 000149 dup (Duplicate top stack word) 00014A iconst_3 (Push integer constant) 00014B iconst_5 (Push integer constant) 00014C newarray 0A (Allocate new array) : array type = T_INT 00014E dup (Duplicate top stack word) 00014F iconst_0 (Push integer constant) 000150 iconst_0 (Push integer constant) 000151 iastore (Store into integer array) 000152 dup (Duplicate top stack word) 000153 iconst_1 (Push integer constant) 000154 iconst_0 (Push integer constant) 000155 iastore (Store into integer array) 000156 dup (Duplicate top stack word) 000157 iconst_2 (Push integer constant) 000158 iconst_1 (Push integer constant) 000159 iastore (Store into integer array) 00015A dup (Duplicate top stack word) 00015B iconst_3 (Push integer constant) 00015C iconst_0 (Push integer constant) 00015D iastore (Store into integer array) 00015E dup (Duplicate top stack word) 00015F iconst_4 (Push integer constant) 000160 iconst_0 (Push integer constant) 000161 iastore (Store into integer array) 000162 aastore (Store into object reference array) 000163 dup (Duplicate top stack word) 000164 iconst_4 (Push integer constant) 000165 iconst_5 (Push integer constant) 000166 newarray 0A (Allocate new array) : array type = T_INT 000168 dup (Duplicate top stack word) 000169 iconst_0 (Push integer constant) 00016A iconst_0 (Push integer constant) 00016B iastore (Store into integer array) 00016C dup (Duplicate top stack word) 00016D iconst_1 (Push integer constant) 00016E iconst_0 (Push integer constant) 00016F iastore (Store into integer array) 000170 dup (Duplicate top stack word) 000171 iconst_2 (Push integer constant) 000172 iconst_1 (Push integer constant) 000173 iastore (Store into integer array) 000174 dup (Duplicate top stack word) 000175 iconst_3 (Push integer constant) 000176 iconst_0 (Push integer constant) 000177 iastore (Store into integer array) 000178 dup (Duplicate top stack word) 000179 iconst_4 (Push integer constant) 00017A iconst_0 (Push integer constant) 00017B iastore (Store into integer array) 00017C aastore (Store into object reference array) 00017D dup (Duplicate top stack word) 00017E iconst_5 (Push integer constant) 00017F iconst_5 (Push integer constant) 000180 newarray 0A (Allocate new array) : array type = T_INT 000182 dup (Duplicate top stack word) 000183 iconst_0 (Push integer constant) 000184 iconst_0 (Push integer constant) 000185 iastore (Store into integer array) 000186 dup (Duplicate top stack word) 000187 iconst_1 (Push integer constant) 000188 iconst_0 (Push integer constant) 000189 iastore (Store into integer array) 00018A dup (Duplicate top stack word) 00018B iconst_2 (Push integer constant) 00018C iconst_1 (Push integer constant) 00018D iastore (Store into integer array) 00018E dup (Duplicate top stack word) 00018F iconst_3 (Push integer constant) 000190 iconst_0 (Push integer constant) 000191 iastore (Store into integer array) 000192 dup (Duplicate top stack word) 000193 iconst_4 (Push integer constant) 000194 iconst_0 (Push integer constant) 000195 iastore (Store into integer array) 000196 aastore (Store into object reference array) 000197 dup (Duplicate top stack word) 000198 bipush 06 (Push one-byte signed integer) 00019A iconst_5 (Push integer constant) 00019B newarray 0A (Allocate new array) : array type = T_INT 00019D dup (Duplicate top stack word) 00019E iconst_0 (Push integer constant) 00019F iconst_0 (Push integer constant) 0001A0 iastore (Store into integer array) 0001A1 dup (Duplicate top stack word) 0001A2 iconst_1 (Push integer constant) 0001A3 iconst_1 (Push integer constant) 0001A4 iastore (Store into integer array) 0001A5 dup (Duplicate top stack word) 0001A6 iconst_2 (Push integer constant) 0001A7 iconst_1 (Push integer constant) 0001A8 iastore (Store into integer array) 0001A9 dup (Duplicate top stack word) 0001AA iconst_3 (Push integer constant) 0001AB iconst_1 (Push integer constant) 0001AC iastore (Store into integer array) 0001AD dup (Duplicate top stack word) 0001AE iconst_4 (Push integer constant) 0001AF iconst_0 (Push integer constant) 0001B0 iastore (Store into integer array) 0001B1 aastore (Store into object reference array) 0001B2 aastore (Store into object reference array) 0001B3 dup (Duplicate top stack word) 0001B4 iconst_2 (Push integer constant) 0001B5 bipush 07 (Push one-byte signed integer) 0001B7 anewarray 0004 (Allocate new array of references to objects) 0001BA dup (Duplicate top stack word) 0001BB iconst_0 (Push integer constant) 0001BC iconst_5 (Push integer constant) 0001BD newarray 0A (Allocate new array) : array type = T_INT 0001BF dup (Duplicate top stack word) 0001C0 iconst_0 (Push integer constant) 0001C1 iconst_0 (Push integer constant) 0001C2 iastore (Store into integer array) 0001C3 dup (Duplicate top stack word) 0001C4 iconst_1 (Push integer constant) 0001C5 iconst_1 (Push integer constant) 0001C6 iastore (Store into integer array) 0001C7 dup (Duplicate top stack word) 0001C8 iconst_2 (Push integer constant) 0001C9 iconst_1 (Push integer constant) 0001CA iastore (Store into integer array) 0001CB dup (Duplicate top stack word) 0001CC iconst_3 (Push integer constant) 0001CD iconst_1 (Push integer constant) 0001CE iastore (Store into integer array) 0001CF dup (Duplicate top stack word) 0001D0 iconst_4 (Push integer constant) 0001D1 iconst_0 (Push integer constant) 0001D2 iastore (Store into integer array) 0001D3 aastore (Store into object reference array) 0001D4 dup (Duplicate top stack word) 0001D5 iconst_1 (Push integer constant) 0001D6 iconst_5 (Push integer constant) 0001D7 newarray 0A (Allocate new array) : array type = T_INT 0001D9 dup (Duplicate top stack word) 0001DA iconst_0 (Push integer constant) 0001DB iconst_1 (Push integer constant) 0001DC iastore (Store into integer array) 0001DD dup (Duplicate top stack word) 0001DE iconst_1 (Push integer constant) 0001DF iconst_0 (Push integer constant) 0001E0 iastore (Store into integer array) 0001E1 dup (Duplicate top stack word) 0001E2 iconst_2 (Push integer constant) 0001E3 iconst_0 (Push integer constant) 0001E4 iastore (Store into integer array) 0001E5 dup (Duplicate top stack word) 0001E6 iconst_3 (Push integer constant) 0001E7 iconst_0 (Push integer constant) 0001E8 iastore (Store into integer array) 0001E9 dup (Duplicate top stack word) 0001EA iconst_4 (Push integer constant) 0001EB iconst_1 (Push integer constant) 0001EC iastore (Store into integer array) 0001ED aastore (Store into object reference array) 0001EE dup (Duplicate top stack word) 0001EF iconst_2 (Push integer constant) 0001F0 iconst_5 (Push integer constant) 0001F1 newarray 0A (Allocate new array) : array type = T_INT 0001F3 dup (Duplicate top stack word) 0001F4 iconst_0 (Push integer constant) 0001F5 iconst_1 (Push integer constant) 0001F6 iastore (Store into integer array) 0001F7 dup (Duplicate top stack word) 0001F8 iconst_1 (Push integer constant) 0001F9 iconst_0 (Push integer constant) 0001FA iastore (Store into integer array) 0001FB dup (Duplicate top stack word) 0001FC iconst_2 (Push integer constant) 0001FD iconst_0 (Push integer constant) 0001FE iastore (Store into integer array) 0001FF dup (Duplicate top stack word) 000200 iconst_3 (Push integer constant) 000201 iconst_0 (Push integer constant) 000202 iastore (Store into integer array) 000203 dup (Duplicate top stack word) 000204 iconst_4 (Push integer constant) 000205 iconst_1 (Push integer constant) 000206 iastore (Store into integer array) 000207 aastore (Store into object reference array) 000208 dup (Duplicate top stack word) 000209 iconst_3 (Push integer constant) 00020A iconst_5 (Push integer constant) 00020B newarray 0A (Allocate new array) : array type = T_INT 00020D dup (Duplicate top stack word) 00020E iconst_0 (Push integer constant) 00020F iconst_0 (Push integer constant) 000210 iastore (Store into integer array) 000211 dup (Duplicate top stack word) 000212 iconst_1 (Push integer constant) 000213 iconst_0 (Push integer constant) 000214 iastore (Store into integer array) 000215 dup (Duplicate top stack word) 000216 iconst_2 (Push integer constant) 000217 iconst_0 (Push integer constant) 000218 iastore (Store into integer array) 000219 dup (Duplicate top stack word) 00021A iconst_3 (Push integer constant) 00021B iconst_1 (Push integer constant) 00021C iastore (Store into integer array) 00021D dup (Duplicate top stack word) 00021E iconst_4 (Push integer constant) 00021F iconst_0 (Push integer constant) 000220 iastore (Store into integer array) 000221 aastore (Store into object reference array) 000222 dup (Duplicate top stack word) 000223 iconst_4 (Push integer constant) 000224 iconst_5 (Push integer constant) 000225 newarray 0A (Allocate new array) : array type = T_INT 000227 dup (Duplicate top stack word) 000228 iconst_0 (Push integer constant) 000229 iconst_0 (Push integer constant) 00022A iastore (Store into integer array) 00022B dup (Duplicate top stack word) 00022C iconst_1 (Push integer constant) 00022D iconst_0 (Push integer constant) 00022E iastore (Store into integer array) 00022F dup (Duplicate top stack word) 000230 iconst_2 (Push integer constant) 000231 iconst_1 (Push integer constant) 000232 iastore (Store into integer array) 000233 dup (Duplicate top stack word) 000234 iconst_3 (Push integer constant) 000235 iconst_0 (Push integer constant) 000236 iastore (Store into integer array) 000237 dup (Duplicate top stack word) 000238 iconst_4 (Push integer constant) 000239 iconst_0 (Push integer constant) 00023A iastore (Store into integer array) 00023B aastore (Store into object reference array) 00023C dup (Duplicate top stack word) 00023D iconst_5 (Push integer constant) 00023E iconst_5 (Push integer constant) 00023F newarray 0A (Allocate new array) : array type = T_INT 000241 dup (Duplicate top stack word) 000242 iconst_0 (Push integer constant) 000243 iconst_0 (Push integer constant) 000244 iastore (Store into integer array) 000245 dup (Duplicate top stack word) 000246 iconst_1 (Push integer constant) 000247 iconst_1 (Push integer constant) 000248 iastore (Store into integer array) 000249 dup (Duplicate top stack word) 00024A iconst_2 (Push integer constant) 00024B iconst_0 (Push integer constant) 00024C iastore (Store into integer array) 00024D dup (Duplicate top stack word) 00024E iconst_3 (Push integer constant) 00024F iconst_0 (Push integer constant) 000250 iastore (Store into integer array) 000251 dup (Duplicate top stack word) 000252 iconst_4 (Push integer constant) 000253 iconst_0 (Push integer constant) 000254 iastore (Store into integer array) 000255 aastore (Store into object reference array) 000256 dup (Duplicate top stack word) 000257 bipush 06 (Push one-byte signed integer) 000259 iconst_5 (Push integer constant) 00025A newarray 0A (Allocate new array) : array type = T_INT 00025C dup (Duplicate top stack word) 00025D iconst_0 (Push integer constant) 00025E iconst_1 (Push integer constant) 00025F iastore (Store into integer array) 000260 dup (Duplicate top stack word) 000261 iconst_1 (Push integer constant) 000262 iconst_1 (Push integer constant) 000263 iastore (Store into integer array) 000264 dup (Duplicate top stack word) 000265 iconst_2 (Push integer constant) 000266 iconst_1 (Push integer constant) 000267 iastore (Store into integer array) 000268 dup (Duplicate top stack word) 000269 iconst_3 (Push integer constant) 00026A iconst_1 (Push integer constant) 00026B iastore (Store into integer array) 00026C dup (Duplicate top stack word) 00026D iconst_4 (Push integer constant) 00026E iconst_1 (Push integer constant) 00026F iastore (Store into integer array) 000270 aastore (Store into object reference array) 000271 aastore (Store into object reference array) 000272 dup (Duplicate top stack word) 000273 iconst_3 (Push integer constant) 000274 bipush 07 (Push one-byte signed integer) 000276 anewarray 0004 (Allocate new array of references to objects) 000279 dup (Duplicate top stack word) 00027A iconst_0 (Push integer constant) 00027B iconst_5 (Push integer constant) 00027C newarray 0A (Allocate new array) : array type = T_INT 00027E dup (Duplicate top stack word) 00027F iconst_0 (Push integer constant) 000280 iconst_0 (Push integer constant) 000281 iastore (Store into integer array) 000282 dup (Duplicate top stack word) 000283 iconst_1 (Push integer constant) 000284 iconst_1 (Push integer constant) 000285 iastore (Store into integer array) 000286 dup (Duplicate top stack word) 000287 iconst_2 (Push integer constant) 000288 iconst_1 (Push integer constant) 000289 iastore (Store into integer array) 00028A dup (Duplicate top stack word) 00028B iconst_3 (Push integer constant) 00028C iconst_1 (Push integer constant) 00028D iastore (Store into integer array) 00028E dup (Duplicate top stack word) 00028F iconst_4 (Push integer constant) 000290 iconst_0 (Push integer constant) 000291 iastore (Store into integer array) 000292 aastore (Store into object reference array) 000293 dup (Duplicate top stack word) 000294 iconst_1 (Push integer constant) 000295 iconst_5 (Push integer constant) 000296 newarray 0A (Allocate new array) : array type = T_INT 000298 dup (Duplicate top stack word) 000299 iconst_0 (Push integer constant) 00029A iconst_1 (Push integer constant) 00029B iastore (Store into integer array) 00029C dup (Duplicate top stack word) 00029D iconst_1 (Push integer constant) 00029E iconst_0 (Push integer constant) 00029F iastore (Store into integer array) 0002A0 dup (Duplicate top stack word) 0002A1 iconst_2 (Push integer constant) 0002A2 iconst_0 (Push integer constant) 0002A3 iastore (Store into integer array) 0002A4 dup (Duplicate top stack word) 0002A5 iconst_3 (Push integer constant) 0002A6 iconst_0 (Push integer constant) 0002A7 iastore (Store into integer array) 0002A8 dup (Duplicate top stack word) 0002A9 iconst_4 (Push integer constant) 0002AA iconst_1 (Push integer constant) 0002AB iastore (Store into integer array) 0002AC aastore (Store into object reference array) 0002AD dup (Duplicate top stack word) 0002AE iconst_2 (Push integer constant) 0002AF iconst_5 (Push integer constant) 0002B0 newarray 0A (Allocate new array) : array type = T_INT 0002B2 dup (Duplicate top stack word) 0002B3 iconst_0 (Push integer constant) 0002B4 iconst_0 (Push integer constant) 0002B5 iastore (Store into integer array) 0002B6 dup (Duplicate top stack word) 0002B7 iconst_1 (Push integer constant) 0002B8 iconst_0 (Push integer constant) 0002B9 iastore (Store into integer array) 0002BA dup (Duplicate top stack word) 0002BB iconst_2 (Push integer constant) 0002BC iconst_0 (Push integer constant) 0002BD iastore (Store into integer array) 0002BE dup (Duplicate top stack word) 0002BF iconst_3 (Push integer constant) 0002C0 iconst_0 (Push integer constant) 0002C1 iastore (Store into integer array) 0002C2 dup (Duplicate top stack word) 0002C3 iconst_4 (Push integer constant) 0002C4 iconst_1 (Push integer constant) 0002C5 iastore (Store into integer array) 0002C6 aastore (Store into object reference array) 0002C7 dup (Duplicate top stack word) 0002C8 iconst_3 (Push integer constant) 0002C9 iconst_5 (Push integer constant) 0002CA newarray 0A (Allocate new array) : array type = T_INT 0002CC dup (Duplicate top stack word) 0002CD iconst_0 (Push integer constant) 0002CE iconst_0 (Push integer constant) 0002CF iastore (Store into integer array) 0002D0 dup (Duplicate top stack word) 0002D1 iconst_1 (Push integer constant) 0002D2 iconst_0 (Push integer constant) 0002D3 iastore (Store into integer array) 0002D4 dup (Duplicate top stack word) 0002D5 iconst_2 (Push integer constant) 0002D6 iconst_1 (Push integer constant) 0002D7 iastore (Store into integer array) 0002D8 dup (Duplicate top stack word) 0002D9 iconst_3 (Push integer constant) 0002DA iconst_1 (Push integer constant) 0002DB iastore (Store into integer array) 0002DC dup (Duplicate top stack word) 0002DD iconst_4 (Push integer constant) 0002DE iconst_0 (Push integer constant) 0002DF iastore (Store into integer array) 0002E0 aastore (Store into object reference array) 0002E1 dup (Duplicate top stack word) 0002E2 iconst_4 (Push integer constant) 0002E3 iconst_5 (Push integer constant) 0002E4 newarray 0A (Allocate new array) : array type = T_INT 0002E6 dup (Duplicate top stack word) 0002E7 iconst_0 (Push integer constant) 0002E8 iconst_0 (Push integer constant) 0002E9 iastore (Store into integer array) 0002EA dup (Duplicate top stack word) 0002EB iconst_1 (Push integer constant) 0002EC iconst_0 (Push integer constant) 0002ED iastore (Store into integer array) 0002EE dup (Duplicate top stack word) 0002EF iconst_2 (Push integer constant) 0002F0 iconst_0 (Push integer constant) 0002F1 iastore (Store into integer array) 0002F2 dup (Duplicate top stack word) 0002F3 iconst_3 (Push integer constant) 0002F4 iconst_0 (Push integer constant) 0002F5 iastore (Store into integer array) 0002F6 dup (Duplicate top stack word) 0002F7 iconst_4 (Push integer constant) 0002F8 iconst_1 (Push integer constant) 0002F9 iastore (Store into integer array) 0002FA aastore (Store into object reference array) 0002FB dup (Duplicate top stack word) 0002FC iconst_5 (Push integer constant) 0002FD iconst_5 (Push integer constant) 0002FE newarray 0A (Allocate new array) : array type = T_INT 000300 dup (Duplicate top stack word) 000301 iconst_0 (Push integer constant) 000302 iconst_1 (Push integer constant) 000303 iastore (Store into integer array) 000304 dup (Duplicate top stack word) 000305 iconst_1 (Push integer constant) 000306 iconst_0 (Push integer constant) 000307 iastore (Store into integer array) 000308 dup (Duplicate top stack word) 000309 iconst_2 (Push integer constant) 00030A iconst_0 (Push integer constant) 00030B iastore (Store into integer array) 00030C dup (Duplicate top stack word) 00030D iconst_3 (Push integer constant) 00030E iconst_0 (Push integer constant) 00030F iastore (Store into integer array) 000310 dup (Duplicate top stack word) 000311 iconst_4 (Push integer constant) 000312 iconst_1 (Push integer constant) 000313 iastore (Store into integer array) 000314 aastore (Store into object reference array) 000315 dup (Duplicate top stack word) 000316 bipush 06 (Push one-byte signed integer) 000318 iconst_5 (Push integer constant) 000319 newarray 0A (Allocate new array) : array type = T_INT 00031B dup (Duplicate top stack word) 00031C iconst_0 (Push integer constant) 00031D iconst_0 (Push integer constant) 00031E iastore (Store into integer array) 00031F dup (Duplicate top stack word) 000320 iconst_1 (Push integer constant) 000321 iconst_1 (Push integer constant) 000322 iastore (Store into integer array) 000323 dup (Duplicate top stack word) 000324 iconst_2 (Push integer constant) 000325 iconst_1 (Push integer constant) 000326 iastore (Store into integer array) 000327 dup (Duplicate top stack word) 000328 iconst_3 (Push integer constant) 000329 iconst_1 (Push integer constant) 00032A iastore (Store into integer array) 00032B dup (Duplicate top stack word) 00032C iconst_4 (Push integer constant) 00032D iconst_0 (Push integer constant) 00032E iastore (Store into integer array) 00032F aastore (Store into object reference array) 000330 aastore (Store into object reference array) 000331 dup (Duplicate top stack word) 000332 iconst_4 (Push integer constant) 000333 bipush 07 (Push one-byte signed integer) 000335 anewarray 0004 (Allocate new array of references to objects) 000338 dup (Duplicate top stack word) 000339 iconst_0 (Push integer constant) 00033A iconst_5 (Push integer constant) 00033B newarray 0A (Allocate new array) : array type = T_INT 00033D dup (Duplicate top stack word) 00033E iconst_0 (Push integer constant) 00033F iconst_0 (Push integer constant) 000340 iastore (Store into integer array) 000341 dup (Duplicate top stack word) 000342 iconst_1 (Push integer constant) 000343 iconst_0 (Push integer constant) 000344 iastore (Store into integer array) 000345 dup (Duplicate top stack word) 000346 iconst_2 (Push integer constant) 000347 iconst_0 (Push integer constant) 000348 iastore (Store into integer array) 000349 dup (Duplicate top stack word) 00034A iconst_3 (Push integer constant) 00034B iconst_1 (Push integer constant) 00034C iastore (Store into integer array) 00034D dup (Duplicate top stack word) 00034E iconst_4 (Push integer constant) 00034F iconst_0 (Push integer constant) 000350 iastore (Store into integer array) 000351 aastore (Store into object reference array) 000352 dup (Duplicate top stack word) 000353 iconst_1 (Push integer constant) 000354 iconst_5 (Push integer constant) 000355 newarray 0A (Allocate new array) : array type = T_INT 000357 dup (Duplicate top stack word) 000358 iconst_0 (Push integer constant) 000359 iconst_0 (Push integer constant) 00035A iastore (Store into integer array) 00035B dup (Duplicate top stack word) 00035C iconst_1 (Push integer constant) 00035D iconst_0 (Push integer constant) 00035E iastore (Store into integer array) 00035F dup (Duplicate top stack word) 000360 iconst_2 (Push integer constant) 000361 iconst_1 (Push integer constant) 000362 iastore (Store into integer array) 000363 dup (Duplicate top stack word) 000364 iconst_3 (Push integer constant) 000365 iconst_1 (Push integer constant) 000366 iastore (Store into integer array) 000367 dup (Duplicate top stack word) 000368 iconst_4 (Push integer constant) 000369 iconst_0 (Push integer constant) 00036A iastore (Store into integer array) 00036B aastore (Store into object reference array) 00036C dup (Duplicate top stack word) 00036D iconst_2 (Push integer constant) 00036E iconst_5 (Push integer constant) 00036F newarray 0A (Allocate new array) : array type = T_INT 000371 dup (Duplicate top stack word) 000372 iconst_0 (Push integer constant) 000373 iconst_0 (Push integer constant) 000374 iastore (Store into integer array) 000375 dup (Duplicate top stack word) 000376 iconst_1 (Push integer constant) 000377 iconst_1 (Push integer constant) 000378 iastore (Store into integer array) 000379 dup (Duplicate top stack word) 00037A iconst_2 (Push integer constant) 00037B iconst_0 (Push integer constant) 00037C iastore (Store into integer array) 00037D dup (Duplicate top stack word) 00037E iconst_3 (Push integer constant) 00037F iconst_1 (Push integer constant) 000380 iastore (Store into integer array) 000381 dup (Duplicate top stack word) 000382 iconst_4 (Push integer constant) 000383 iconst_0 (Push integer constant) 000384 iastore (Store into integer array) 000385 aastore (Store into object reference array) 000386 dup (Duplicate top stack word) 000387 iconst_3 (Push integer constant) 000388 iconst_5 (Push integer constant) 000389 newarray 0A (Allocate new array) : array type = T_INT 00038B dup (Duplicate top stack word) 00038C iconst_0 (Push integer constant) 00038D iconst_1 (Push integer constant) 00038E iastore (Store into integer array) 00038F dup (Duplicate top stack word) 000390 iconst_1 (Push integer constant) 000391 iconst_0 (Push integer constant) 000392 iastore (Store into integer array) 000393 dup (Duplicate top stack word) 000394 iconst_2 (Push integer constant) 000395 iconst_0 (Push integer constant) 000396 iastore (Store into integer array) 000397 dup (Duplicate top stack word) 000398 iconst_3 (Push integer constant) 000399 iconst_1 (Push integer constant) 00039A iastore (Store into integer array) 00039B dup (Duplicate top stack word) 00039C iconst_4 (Push integer constant) 00039D iconst_0 (Push integer constant) 00039E iastore (Store into integer array) 00039F aastore (Store into object reference array) 0003A0 dup (Duplicate top stack word) 0003A1 iconst_4 (Push integer constant) 0003A2 iconst_5 (Push integer constant) 0003A3 newarray 0A (Allocate new array) : array type = T_INT 0003A5 dup (Duplicate top stack word) 0003A6 iconst_0 (Push integer constant) 0003A7 iconst_1 (Push integer constant) 0003A8 iastore (Store into integer array) 0003A9 dup (Duplicate top stack word) 0003AA iconst_1 (Push integer constant) 0003AB iconst_1 (Push integer constant) 0003AC iastore (Store into integer array) 0003AD dup (Duplicate top stack word) 0003AE iconst_2 (Push integer constant) 0003AF iconst_1 (Push integer constant) 0003B0 iastore (Store into integer array) 0003B1 dup (Duplicate top stack word) 0003B2 iconst_3 (Push integer constant) 0003B3 iconst_1 (Push integer constant) 0003B4 iastore (Store into integer array) 0003B5 dup (Duplicate top stack word) 0003B6 iconst_4 (Push integer constant) 0003B7 iconst_1 (Push integer constant) 0003B8 iastore (Store into integer array) 0003B9 aastore (Store into object reference array) 0003BA dup (Duplicate top stack word) 0003BB iconst_5 (Push integer constant) 0003BC iconst_5 (Push integer constant) 0003BD newarray 0A (Allocate new array) : array type = T_INT 0003BF dup (Duplicate top stack word) 0003C0 iconst_0 (Push integer constant) 0003C1 iconst_0 (Push integer constant) 0003C2 iastore (Store into integer array) 0003C3 dup (Duplicate top stack word) 0003C4 iconst_1 (Push integer constant) 0003C5 iconst_0 (Push integer constant) 0003C6 iastore (Store into integer array) 0003C7 dup (Duplicate top stack word) 0003C8 iconst_2 (Push integer constant) 0003C9 iconst_0 (Push integer constant) 0003CA iastore (Store into integer array) 0003CB dup (Duplicate top stack word) 0003CC iconst_3 (Push integer constant) 0003CD iconst_1 (Push integer constant) 0003CE iastore (Store into integer array) 0003CF dup (Duplicate top stack word) 0003D0 iconst_4 (Push integer constant) 0003D1 iconst_0 (Push integer constant) 0003D2 iastore (Store into integer array) 0003D3 aastore (Store into object reference array) 0003D4 dup (Duplicate top stack word) 0003D5 bipush 06 (Push one-byte signed integer) 0003D7 iconst_5 (Push integer constant) 0003D8 newarray 0A (Allocate new array) : array type = T_INT 0003DA dup (Duplicate top stack word) 0003DB iconst_0 (Push integer constant) 0003DC iconst_0 (Push integer constant) 0003DD iastore (Store into integer array) 0003DE dup (Duplicate top stack word) 0003DF iconst_1 (Push integer constant) 0003E0 iconst_0 (Push integer constant) 0003E1 iastore (Store into integer array) 0003E2 dup (Duplicate top stack word) 0003E3 iconst_2 (Push integer constant) 0003E4 iconst_0 (Push integer constant) 0003E5 iastore (Store into integer array) 0003E6 dup (Duplicate top stack word) 0003E7 iconst_3 (Push integer constant) 0003E8 iconst_1 (Push integer constant) 0003E9 iastore (Store into integer array) 0003EA dup (Duplicate top stack word) 0003EB iconst_4 (Push integer constant) 0003EC iconst_0 (Push integer constant) 0003ED iastore (Store into integer array) 0003EE aastore (Store into object reference array) 0003EF aastore (Store into object reference array) 0003F0 dup (Duplicate top stack word) 0003F1 iconst_5 (Push integer constant) 0003F2 bipush 07 (Push one-byte signed integer) 0003F4 anewarray 0004 (Allocate new array of references to objects) 0003F7 dup (Duplicate top stack word) 0003F8 iconst_0 (Push integer constant) 0003F9 iconst_5 (Push integer constant) 0003FA newarray 0A (Allocate new array) : array type = T_INT 0003FC dup (Duplicate top stack word) 0003FD iconst_0 (Push integer constant) 0003FE iconst_1 (Push integer constant) 0003FF iastore (Store into integer array) 000400 dup (Duplicate top stack word) 000401 iconst_1 (Push integer constant) 000402 iconst_1 (Push integer constant) 000403 iastore (Store into integer array) 000404 dup (Duplicate top stack word) 000405 iconst_2 (Push integer constant) 000406 iconst_1 (Push integer constant) 000407 iastore (Store into integer array) 000408 dup (Duplicate top stack word) 000409 iconst_3 (Push integer constant) 00040A iconst_1 (Push integer constant) 00040B iastore (Store into integer array) 00040C dup (Duplicate top stack word) 00040D iconst_4 (Push integer constant) 00040E iconst_1 (Push integer constant) 00040F iastore (Store into integer array) 000410 aastore (Store into object reference array) 000411 dup (Duplicate top stack word) 000412 iconst_1 (Push integer constant) 000413 iconst_5 (Push integer constant) 000414 newarray 0A (Allocate new array) : array type = T_INT 000416 dup (Duplicate top stack word) 000417 iconst_0 (Push integer constant) 000418 iconst_1 (Push integer constant) 000419 iastore (Store into integer array) 00041A dup (Duplicate top stack word) 00041B iconst_1 (Push integer constant) 00041C iconst_0 (Push integer constant) 00041D iastore (Store into integer array) 00041E dup (Duplicate top stack word) 00041F iconst_2 (Push integer constant) 000420 iconst_0 (Push integer constant) 000421 iastore (Store into integer array) 000422 dup (Duplicate top stack word) 000423 iconst_3 (Push integer constant) 000424 iconst_0 (Push integer constant) 000425 iastore (Store into integer array) 000426 dup (Duplicate top stack word) 000427 iconst_4 (Push integer constant) 000428 iconst_0 (Push integer constant) 000429 iastore (Store into integer array) 00042A aastore (Store into object reference array) 00042B dup (Duplicate top stack word) 00042C iconst_2 (Push integer constant) 00042D iconst_5 (Push integer constant) 00042E newarray 0A (Allocate new array) : array type = T_INT 000430 dup (Duplicate top stack word) 000431 iconst_0 (Push integer constant) 000432 iconst_1 (Push integer constant) 000433 iastore (Store into integer array) 000434 dup (Duplicate top stack word) 000435 iconst_1 (Push integer constant) 000436 iconst_0 (Push integer constant) 000437 iastore (Store into integer array) 000438 dup (Duplicate top stack word) 000439 iconst_2 (Push integer constant) 00043A iconst_0 (Push integer constant) 00043B iastore (Store into integer array) 00043C dup (Duplicate top stack word) 00043D iconst_3 (Push integer constant) 00043E iconst_0 (Push integer constant) 00043F iastore (Store into integer array) 000440 dup (Duplicate top stack word) 000441 iconst_4 (Push integer constant) 000442 iconst_0 (Push integer constant) 000443 iastore (Store into integer array) 000444 aastore (Store into object reference array) 000445 dup (Duplicate top stack word) 000446 iconst_3 (Push integer constant) 000447 iconst_5 (Push integer constant) 000448 newarray 0A (Allocate new array) : array type = T_INT 00044A dup (Duplicate top stack word) 00044B iconst_0 (Push integer constant) 00044C iconst_1 (Push integer constant) 00044D iastore (Store into integer array) 00044E dup (Duplicate top stack word) 00044F iconst_1 (Push integer constant) 000450 iconst_1 (Push integer constant) 000451 iastore (Store into integer array) 000452 dup (Duplicate top stack word) 000453 iconst_2 (Push integer constant) 000454 iconst_1 (Push integer constant) 000455 iastore (Store into integer array) 000456 dup (Duplicate top stack word) 000457 iconst_3 (Push integer constant) 000458 iconst_1 (Push integer constant) 000459 iastore (Store into integer array) 00045A dup (Duplicate top stack word) 00045B iconst_4 (Push integer constant) 00045C iconst_0 (Push integer constant) 00045D iastore (Store into integer array) 00045E aastore (Store into object reference array) 00045F dup (Duplicate top stack word) 000460 iconst_4 (Push integer constant) 000461 iconst_5 (Push integer constant) 000462 newarray 0A (Allocate new array) : array type = T_INT 000464 dup (Duplicate top stack word) 000465 iconst_0 (Push integer constant) 000466 iconst_0 (Push integer constant) 000467 iastore (Store into integer array) 000468 dup (Duplicate top stack word) 000469 iconst_1 (Push integer constant) 00046A iconst_0 (Push integer constant) 00046B iastore (Store into integer array) 00046C dup (Duplicate top stack word) 00046D iconst_2 (Push integer constant) 00046E iconst_0 (Push integer constant) 00046F iastore (Store into integer array) 000470 dup (Duplicate top stack word) 000471 iconst_3 (Push integer constant) 000472 iconst_0 (Push integer constant) 000473 iastore (Store into integer array) 000474 dup (Duplicate top stack word) 000475 iconst_4 (Push integer constant) 000476 iconst_1 (Push integer constant) 000477 iastore (Store into integer array) 000478 aastore (Store into object reference array) 000479 dup (Duplicate top stack word) 00047A iconst_5 (Push integer constant) 00047B iconst_5 (Push integer constant) 00047C newarray 0A (Allocate new array) : array type = T_INT 00047E dup (Duplicate top stack word) 00047F iconst_0 (Push integer constant) 000480 iconst_1 (Push integer constant) 000481 iastore (Store into integer array) 000482 dup (Duplicate top stack word) 000483 iconst_1 (Push integer constant) 000484 iconst_0 (Push integer constant) 000485 iastore (Store into integer array) 000486 dup (Duplicate top stack word) 000487 iconst_2 (Push integer constant) 000488 iconst_0 (Push integer constant) 000489 iastore (Store into integer array) 00048A dup (Duplicate top stack word) 00048B iconst_3 (Push integer constant) 00048C iconst_0 (Push integer constant) 00048D iastore (Store into integer array) 00048E dup (Duplicate top stack word) 00048F iconst_4 (Push integer constant) 000490 iconst_1 (Push integer constant) 000491 iastore (Store into integer array) 000492 aastore (Store into object reference array) 000493 dup (Duplicate top stack word) 000494 bipush 06 (Push one-byte signed integer) 000496 iconst_5 (Push integer constant) 000497 newarray 0A (Allocate new array) : array type = T_INT 000499 dup (Duplicate top stack word) 00049A iconst_0 (Push integer constant) 00049B iconst_0 (Push integer constant) 00049C iastore (Store into integer array) 00049D dup (Duplicate top stack word) 00049E iconst_1 (Push integer constant) 00049F iconst_1 (Push integer constant) 0004A0 iastore (Store into integer array) 0004A1 dup (Duplicate top stack word) 0004A2 iconst_2 (Push integer constant) 0004A3 iconst_1 (Push integer constant) 0004A4 iastore (Store into integer array) 0004A5 dup (Duplicate top stack word) 0004A6 iconst_3 (Push integer constant) 0004A7 iconst_1 (Push integer constant) 0004A8 iastore (Store into integer array) 0004A9 dup (Duplicate top stack word) 0004AA iconst_4 (Push integer constant) 0004AB iconst_0 (Push integer constant) 0004AC iastore (Store into integer array) 0004AD aastore (Store into object reference array) 0004AE aastore (Store into object reference array) 0004AF dup (Duplicate top stack word) 0004B0 bipush 06 (Push one-byte signed integer) 0004B2 bipush 07 (Push one-byte signed integer) 0004B4 anewarray 0004 (Allocate new array of references to objects) 0004B7 dup (Duplicate top stack word) 0004B8 iconst_0 (Push integer constant) 0004B9 iconst_5 (Push integer constant) 0004BA newarray 0A (Allocate new array) : array type = T_INT 0004BC dup (Duplicate top stack word) 0004BD iconst_0 (Push integer constant) 0004BE iconst_0 (Push integer constant) 0004BF iastore (Store into integer array) 0004C0 dup (Duplicate top stack word) 0004C1 iconst_1 (Push integer constant) 0004C2 iconst_1 (Push integer constant) 0004C3 iastore (Store into integer array) 0004C4 dup (Duplicate top stack word) 0004C5 iconst_2 (Push integer constant) 0004C6 iconst_1 (Push integer constant) 0004C7 iastore (Store into integer array) 0004C8 dup (Duplicate top stack word) 0004C9 iconst_3 (Push integer constant) 0004CA iconst_1 (Push integer constant) 0004CB iastore (Store into integer array) 0004CC dup (Duplicate top stack word) 0004CD iconst_4 (Push integer constant) 0004CE iconst_0 (Push integer constant) 0004CF iastore (Store into integer array) 0004D0 aastore (Store into object reference array) 0004D1 dup (Duplicate top stack word) 0004D2 iconst_1 (Push integer constant) 0004D3 iconst_5 (Push integer constant) 0004D4 newarray 0A (Allocate new array) : array type = T_INT 0004D6 dup (Duplicate top stack word) 0004D7 iconst_0 (Push integer constant) 0004D8 iconst_1 (Push integer constant) 0004D9 iastore (Store into integer array) 0004DA dup (Duplicate top stack word) 0004DB iconst_1 (Push integer constant) 0004DC iconst_0 (Push integer constant) 0004DD iastore (Store into integer array) 0004DE dup (Duplicate top stack word) 0004DF iconst_2 (Push integer constant) 0004E0 iconst_0 (Push integer constant) 0004E1 iastore (Store into integer array) 0004E2 dup (Duplicate top stack word) 0004E3 iconst_3 (Push integer constant) 0004E4 iconst_0 (Push integer constant) 0004E5 iastore (Store into integer array) 0004E6 dup (Duplicate top stack word) 0004E7 iconst_4 (Push integer constant) 0004E8 iconst_1 (Push integer constant) 0004E9 iastore (Store into integer array) 0004EA aastore (Store into object reference array) 0004EB dup (Duplicate top stack word) 0004EC iconst_2 (Push integer constant) 0004ED iconst_5 (Push integer constant) 0004EE newarray 0A (Allocate new array) : array type = T_INT 0004F0 dup (Duplicate top stack word) 0004F1 iconst_0 (Push integer constant) 0004F2 iconst_1 (Push integer constant) 0004F3 iastore (Store into integer array) 0004F4 dup (Duplicate top stack word) 0004F5 iconst_1 (Push integer constant) 0004F6 iconst_0 (Push integer constant) 0004F7 iastore (Store into integer array) 0004F8 dup (Duplicate top stack word) 0004F9 iconst_2 (Push integer constant) 0004FA iconst_0 (Push integer constant) 0004FB iastore (Store into integer array) 0004FC dup (Duplicate top stack word) 0004FD iconst_3 (Push integer constant) 0004FE iconst_0 (Push integer constant) 0004FF iastore (Store into integer array) 000500 dup (Duplicate top stack word) 000501 iconst_4 (Push integer constant) 000502 iconst_0 (Push integer constant) 000503 iastore (Store into integer array) 000504 aastore (Store into object reference array) 000505 dup (Duplicate top stack word) 000506 iconst_3 (Push integer constant) 000507 iconst_5 (Push integer constant) 000508 newarray 0A (Allocate new array) : array type = T_INT 00050A dup (Duplicate top stack word) 00050B iconst_0 (Push integer constant) 00050C iconst_1 (Push integer constant) 00050D iastore (Store into integer array) 00050E dup (Duplicate top stack word) 00050F iconst_1 (Push integer constant) 000510 iconst_1 (Push integer constant) 000511 iastore (Store into integer array) 000512 dup (Duplicate top stack word) 000513 iconst_2 (Push integer constant) 000514 iconst_1 (Push integer constant) 000515 iastore (Store into integer array) 000516 dup (Duplicate top stack word) 000517 iconst_3 (Push integer constant) 000518 iconst_1 (Push integer constant) 000519 iastore (Store into integer array) 00051A dup (Duplicate top stack word) 00051B iconst_4 (Push integer constant) 00051C iconst_0 (Push integer constant) 00051D iastore (Store into integer array) 00051E aastore (Store into object reference array) 00051F dup (Duplicate top stack word) 000520 iconst_4 (Push integer constant) 000521 iconst_5 (Push integer constant) 000522 newarray 0A (Allocate new array) : array type = T_INT 000524 dup (Duplicate top stack word) 000525 iconst_0 (Push integer constant) 000526 iconst_1 (Push integer constant) 000527 iastore (Store into integer array) 000528 dup (Duplicate top stack word) 000529 iconst_1 (Push integer constant) 00052A iconst_0 (Push integer constant) 00052B iastore (Store into integer array) 00052C dup (Duplicate top stack word) 00052D iconst_2 (Push integer constant) 00052E iconst_0 (Push integer constant) 00052F iastore (Store into integer array) 000530 dup (Duplicate top stack word) 000531 iconst_3 (Push integer constant) 000532 iconst_0 (Push integer constant) 000533 iastore (Store into integer array) 000534 dup (Duplicate top stack word) 000535 iconst_4 (Push integer constant) 000536 iconst_1 (Push integer constant) 000537 iastore (Store into integer array) 000538 aastore (Store into object reference array) 000539 dup (Duplicate top stack word) 00053A iconst_5 (Push integer constant) 00053B iconst_5 (Push integer constant) 00053C newarray 0A (Allocate new array) : array type = T_INT 00053E dup (Duplicate top stack word) 00053F iconst_0 (Push integer constant) 000540 iconst_1 (Push integer constant) 000541 iastore (Store into integer array) 000542 dup (Duplicate top stack word) 000543 iconst_1 (Push integer constant) 000544 iconst_0 (Push integer constant) 000545 iastore (Store into integer array) 000546 dup (Duplicate top stack word) 000547 iconst_2 (Push integer constant) 000548 iconst_0 (Push integer constant) 000549 iastore (Store into integer array) 00054A dup (Duplicate top stack word) 00054B iconst_3 (Push integer constant) 00054C iconst_0 (Push integer constant) 00054D iastore (Store into integer array) 00054E dup (Duplicate top stack word) 00054F iconst_4 (Push integer constant) 000550 iconst_1 (Push integer constant) 000551 iastore (Store into integer array) 000552 aastore (Store into object reference array) 000553 dup (Duplicate top stack word) 000554 bipush 06 (Push one-byte signed integer) 000556 iconst_5 (Push integer constant) 000557 newarray 0A (Allocate new array) : array type = T_INT 000559 dup (Duplicate top stack word) 00055A iconst_0 (Push integer constant) 00055B iconst_0 (Push integer constant) 00055C iastore (Store into integer array) 00055D dup (Duplicate top stack word) 00055E iconst_1 (Push integer constant) 00055F iconst_1 (Push integer constant) 000560 iastore (Store into integer array) 000561 dup (Duplicate top stack word) 000562 iconst_2 (Push integer constant) 000563 iconst_1 (Push integer constant) 000564 iastore (Store into integer array) 000565 dup (Duplicate top stack word) 000566 iconst_3 (Push integer constant) 000567 iconst_1 (Push integer constant) 000568 iastore (Store into integer array) 000569 dup (Duplicate top stack word) 00056A iconst_4 (Push integer constant) 00056B iconst_0 (Push integer constant) 00056C iastore (Store into integer array) 00056D aastore (Store into object reference array) 00056E aastore (Store into object reference array) 00056F dup (Duplicate top stack word) 000570 bipush 07 (Push one-byte signed integer) 000572 bipush 07 (Push one-byte signed integer) 000574 anewarray 0004 (Allocate new array of references to objects) 000577 dup (Duplicate top stack word) 000578 iconst_0 (Push integer constant) 000579 iconst_5 (Push integer constant) 00057A newarray 0A (Allocate new array) : array type = T_INT 00057C dup (Duplicate top stack word) 00057D iconst_0 (Push integer constant) 00057E iconst_1 (Push integer constant) 00057F iastore (Store into integer array) 000580 dup (Duplicate top stack word) 000581 iconst_1 (Push integer constant) 000582 iconst_1 (Push integer constant) 000583 iastore (Store into integer array) 000584 dup (Duplicate top stack word) 000585 iconst_2 (Push integer constant) 000586 iconst_1 (Push integer constant) 000587 iastore (Store into integer array) 000588 dup (Duplicate top stack word) 000589 iconst_3 (Push integer constant) 00058A iconst_1 (Push integer constant) 00058B iastore (Store into integer array) 00058C dup (Duplicate top stack word) 00058D iconst_4 (Push integer constant) 00058E iconst_1 (Push integer constant) 00058F iastore (Store into integer array) 000590 aastore (Store into object reference array) 000591 dup (Duplicate top stack word) 000592 iconst_1 (Push integer constant) 000593 iconst_5 (Push integer constant) 000594 newarray 0A (Allocate new array) : array type = T_INT 000596 dup (Duplicate top stack word) 000597 iconst_0 (Push integer constant) 000598 iconst_1 (Push integer constant) 000599 iastore (Store into integer array) 00059A dup (Duplicate top stack word) 00059B iconst_1 (Push integer constant) 00059C iconst_0 (Push integer constant) 00059D iastore (Store into integer array) 00059E dup (Duplicate top stack word) 00059F iconst_2 (Push integer constant) 0005A0 iconst_0 (Push integer constant) 0005A1 iastore (Store into integer array) 0005A2 dup (Duplicate top stack word) 0005A3 iconst_3 (Push integer constant) 0005A4 iconst_0 (Push integer constant) 0005A5 iastore (Store into integer array) 0005A6 dup (Duplicate top stack word) 0005A7 iconst_4 (Push integer constant) 0005A8 iconst_1 (Push integer constant) 0005A9 iastore (Store into integer array) 0005AA aastore (Store into object reference array) 0005AB dup (Duplicate top stack word) 0005AC iconst_2 (Push integer constant) 0005AD iconst_5 (Push integer constant) 0005AE newarray 0A (Allocate new array) : array type = T_INT 0005B0 dup (Duplicate top stack word) 0005B1 iconst_0 (Push integer constant) 0005B2 iconst_0 (Push integer constant) 0005B3 iastore (Store into integer array) 0005B4 dup (Duplicate top stack word) 0005B5 iconst_1 (Push integer constant) 0005B6 iconst_0 (Push integer constant) 0005B7 iastore (Store into integer array) 0005B8 dup (Duplicate top stack word) 0005B9 iconst_2 (Push integer constant) 0005BA iconst_0 (Push integer constant) 0005BB iastore (Store into integer array) 0005BC dup (Duplicate top stack word) 0005BD iconst_3 (Push integer constant) 0005BE iconst_0 (Push integer constant) 0005BF iastore (Store into integer array) 0005C0 dup (Duplicate top stack word) 0005C1 iconst_4 (Push integer constant) 0005C2 iconst_1 (Push integer constant) 0005C3 iastore (Store into integer array) 0005C4 aastore (Store into object reference array) 0005C5 dup (Duplicate top stack word) 0005C6 iconst_3 (Push integer constant) 0005C7 iconst_5 (Push integer constant) 0005C8 newarray 0A (Allocate new array) : array type = T_INT 0005CA dup (Duplicate top stack word) 0005CB iconst_0 (Push integer constant) 0005CC iconst_0 (Push integer constant) 0005CD iastore (Store into integer array) 0005CE dup (Duplicate top stack word) 0005CF iconst_1 (Push integer constant) 0005D0 iconst_0 (Push integer constant) 0005D1 iastore (Store into integer array) 0005D2 dup (Duplicate top stack word) 0005D3 iconst_2 (Push integer constant) 0005D4 iconst_0 (Push integer constant) 0005D5 iastore (Store into integer array) 0005D6 dup (Duplicate top stack word) 0005D7 iconst_3 (Push integer constant) 0005D8 iconst_1 (Push integer constant) 0005D9 iastore (Store into integer array) 0005DA dup (Duplicate top stack word) 0005DB iconst_4 (Push integer constant) 0005DC iconst_0 (Push integer constant) 0005DD iastore (Store into integer array) 0005DE aastore (Store into object reference array) 0005DF dup (Duplicate top stack word) 0005E0 iconst_4 (Push integer constant) 0005E1 iconst_5 (Push integer constant) 0005E2 newarray 0A (Allocate new array) : array type = T_INT 0005E4 dup (Duplicate top stack word) 0005E5 iconst_0 (Push integer constant) 0005E6 iconst_0 (Push integer constant) 0005E7 iastore (Store into integer array) 0005E8 dup (Duplicate top stack word) 0005E9 iconst_1 (Push integer constant) 0005EA iconst_0 (Push integer constant) 0005EB iastore (Store into integer array) 0005EC dup (Duplicate top stack word) 0005ED iconst_2 (Push integer constant) 0005EE iconst_1 (Push integer constant) 0005EF iastore (Store into integer array) 0005F0 dup (Duplicate top stack word) 0005F1 iconst_3 (Push integer constant) 0005F2 iconst_0 (Push integer constant) 0005F3 iastore (Store into integer array) 0005F4 dup (Duplicate top stack word) 0005F5 iconst_4 (Push integer constant) 0005F6 iconst_0 (Push integer constant) 0005F7 iastore (Store into integer array) 0005F8 aastore (Store into object reference array) 0005F9 dup (Duplicate top stack word) 0005FA iconst_5 (Push integer constant) 0005FB iconst_5 (Push integer constant) 0005FC newarray 0A (Allocate new array) : array type = T_INT 0005FE dup (Duplicate top stack word) 0005FF iconst_0 (Push integer constant) 000600 iconst_0 (Push integer constant) 000601 iastore (Store into integer array) 000602 dup (Duplicate top stack word) 000603 iconst_1 (Push integer constant) 000604 iconst_1 (Push integer constant) 000605 iastore (Store into integer array) 000606 dup (Duplicate top stack word) 000607 iconst_2 (Push integer constant) 000608 iconst_0 (Push integer constant) 000609 iastore (Store into integer array) 00060A dup (Duplicate top stack word) 00060B iconst_3 (Push integer constant) 00060C iconst_0 (Push integer constant) 00060D iastore (Store into integer array) 00060E dup (Duplicate top stack word) 00060F iconst_4 (Push integer constant) 000610 iconst_0 (Push integer constant) 000611 iastore (Store into integer array) 000612 aastore (Store into object reference array) 000613 dup (Duplicate top stack word) 000614 bipush 06 (Push one-byte signed integer) 000616 iconst_5 (Push integer constant) 000617 newarray 0A (Allocate new array) : array type = T_INT 000619 dup (Duplicate top stack word) 00061A iconst_0 (Push integer constant) 00061B iconst_1 (Push integer constant) 00061C iastore (Store into integer array) 00061D dup (Duplicate top stack word) 00061E iconst_1 (Push integer constant) 00061F iconst_0 (Push integer constant) 000620 iastore (Store into integer array) 000621 dup (Duplicate top stack word) 000622 iconst_2 (Push integer constant) 000623 iconst_0 (Push integer constant) 000624 iastore (Store into integer array) 000625 dup (Duplicate top stack word) 000626 iconst_3 (Push integer constant) 000627 iconst_0 (Push integer constant) 000628 iastore (Store into integer array) 000629 dup (Duplicate top stack word) 00062A iconst_4 (Push integer constant) 00062B iconst_0 (Push integer constant) 00062C iastore (Store into integer array) 00062D aastore (Store into object reference array) 00062E aastore (Store into object reference array) 00062F dup (Duplicate top stack word) 000630 bipush 08 (Push one-byte signed integer) 000632 bipush 07 (Push one-byte signed integer) 000634 anewarray 0004 (Allocate new array of references to objects) 000637 dup (Duplicate top stack word) 000638 iconst_0 (Push integer constant) 000639 iconst_5 (Push integer constant) 00063A newarray 0A (Allocate new array) : array type = T_INT 00063C dup (Duplicate top stack word) 00063D iconst_0 (Push integer constant) 00063E iconst_0 (Push integer constant) 00063F iastore (Store into integer array) 000640 dup (Duplicate top stack word) 000641 iconst_1 (Push integer constant) 000642 iconst_1 (Push integer constant) 000643 iastore (Store into integer array) 000644 dup (Duplicate top stack word) 000645 iconst_2 (Push integer constant) 000646 iconst_1 (Push integer constant) 000647 iastore (Store into integer array) 000648 dup (Duplicate top stack word) 000649 iconst_3 (Push integer constant) 00064A iconst_1 (Push integer constant) 00064B iastore (Store into integer array) 00064C dup (Duplicate top stack word) 00064D iconst_4 (Push integer constant) 00064E iconst_0 (Push integer constant) 00064F iastore (Store into integer array) 000650 aastore (Store into object reference array) 000651 dup (Duplicate top stack word) 000652 iconst_1 (Push integer constant) 000653 iconst_5 (Push integer constant) 000654 newarray 0A (Allocate new array) : array type = T_INT 000656 dup (Duplicate top stack word) 000657 iconst_0 (Push integer constant) 000658 iconst_1 (Push integer constant) 000659 iastore (Store into integer array) 00065A dup (Duplicate top stack word) 00065B iconst_1 (Push integer constant) 00065C iconst_0 (Push integer constant) 00065D iastore (Store into integer array) 00065E dup (Duplicate top stack word) 00065F iconst_2 (Push integer constant) 000660 iconst_0 (Push integer constant) 000661 iastore (Store into integer array) 000662 dup (Duplicate top stack word) 000663 iconst_3 (Push integer constant) 000664 iconst_0 (Push integer constant) 000665 iastore (Store into integer array) 000666 dup (Duplicate top stack word) 000667 iconst_4 (Push integer constant) 000668 iconst_1 (Push integer constant) 000669 iastore (Store into integer array) 00066A aastore (Store into object reference array) 00066B dup (Duplicate top stack word) 00066C iconst_2 (Push integer constant) 00066D iconst_5 (Push integer constant) 00066E newarray 0A (Allocate new array) : array type = T_INT 000670 dup (Duplicate top stack word) 000671 iconst_0 (Push integer constant) 000672 iconst_1 (Push integer constant) 000673 iastore (Store into integer array) 000674 dup (Duplicate top stack word) 000675 iconst_1 (Push integer constant) 000676 iconst_0 (Push integer constant) 000677 iastore (Store into integer array) 000678 dup (Duplicate top stack word) 000679 iconst_2 (Push integer constant) 00067A iconst_0 (Push integer constant) 00067B iastore (Store into integer array) 00067C dup (Duplicate top stack word) 00067D iconst_3 (Push integer constant) 00067E iconst_0 (Push integer constant) 00067F iastore (Store into integer array) 000680 dup (Duplicate top stack word) 000681 iconst_4 (Push integer constant) 000682 iconst_1 (Push integer constant) 000683 iastore (Store into integer array) 000684 aastore (Store into object reference array) 000685 dup (Duplicate top stack word) 000686 iconst_3 (Push integer constant) 000687 iconst_5 (Push integer constant) 000688 newarray 0A (Allocate new array) : array type = T_INT 00068A dup (Duplicate top stack word) 00068B iconst_0 (Push integer constant) 00068C iconst_0 (Push integer constant) 00068D iastore (Store into integer array) 00068E dup (Duplicate top stack word) 00068F iconst_1 (Push integer constant) 000690 iconst_1 (Push integer constant) 000691 iastore (Store into integer array) 000692 dup (Duplicate top stack word) 000693 iconst_2 (Push integer constant) 000694 iconst_1 (Push integer constant) 000695 iastore (Store into integer array) 000696 dup (Duplicate top stack word) 000697 iconst_3 (Push integer constant) 000698 iconst_1 (Push integer constant) 000699 iastore (Store into integer array) 00069A dup (Duplicate top stack word) 00069B iconst_4 (Push integer constant) 00069C iconst_0 (Push integer constant) 00069D iastore (Store into integer array) 00069E aastore (Store into object reference array) 00069F dup (Duplicate top stack word) 0006A0 iconst_4 (Push integer constant) 0006A1 iconst_5 (Push integer constant) 0006A2 newarray 0A (Allocate new array) : array type = T_INT 0006A4 dup (Duplicate top stack word) 0006A5 iconst_0 (Push integer constant) 0006A6 iconst_1 (Push integer constant) 0006A7 iastore (Store into integer array) 0006A8 dup (Duplicate top stack word) 0006A9 iconst_1 (Push integer constant) 0006AA iconst_0 (Push integer constant) 0006AB iastore (Store into integer array) 0006AC dup (Duplicate top stack word) 0006AD iconst_2 (Push integer constant) 0006AE iconst_0 (Push integer constant) 0006AF iastore (Store into integer array) 0006B0 dup (Duplicate top stack word) 0006B1 iconst_3 (Push integer constant) 0006B2 iconst_0 (Push integer constant) 0006B3 iastore (Store into integer array) 0006B4 dup (Duplicate top stack word) 0006B5 iconst_4 (Push integer constant) 0006B6 iconst_1 (Push integer constant) 0006B7 iastore (Store into integer array) 0006B8 aastore (Store into object reference array) 0006B9 dup (Duplicate top stack word) 0006BA iconst_5 (Push integer constant) 0006BB iconst_5 (Push integer constant) 0006BC newarray 0A (Allocate new array) : array type = T_INT 0006BE dup (Duplicate top stack word) 0006BF iconst_0 (Push integer constant) 0006C0 iconst_1 (Push integer constant) 0006C1 iastore (Store into integer array) 0006C2 dup (Duplicate top stack word) 0006C3 iconst_1 (Push integer constant) 0006C4 iconst_0 (Push integer constant) 0006C5 iastore (Store into integer array) 0006C6 dup (Duplicate top stack word) 0006C7 iconst_2 (Push integer constant) 0006C8 iconst_0 (Push integer constant) 0006C9 iastore (Store into integer array) 0006CA dup (Duplicate top stack word) 0006CB iconst_3 (Push integer constant) 0006CC iconst_0 (Push integer constant) 0006CD iastore (Store into integer array) 0006CE dup (Duplicate top stack word) 0006CF iconst_4 (Push integer constant) 0006D0 iconst_1 (Push integer constant) 0006D1 iastore (Store into integer array) 0006D2 aastore (Store into object reference array) 0006D3 dup (Duplicate top stack word) 0006D4 bipush 06 (Push one-byte signed integer) 0006D6 iconst_5 (Push integer constant) 0006D7 newarray 0A (Allocate new array) : array type = T_INT 0006D9 dup (Duplicate top stack word) 0006DA iconst_0 (Push integer constant) 0006DB iconst_0 (Push integer constant) 0006DC iastore (Store into integer array) 0006DD dup (Duplicate top stack word) 0006DE iconst_1 (Push integer constant) 0006DF iconst_1 (Push integer constant) 0006E0 iastore (Store into integer array) 0006E1 dup (Duplicate top stack word) 0006E2 iconst_2 (Push integer constant) 0006E3 iconst_1 (Push integer constant) 0006E4 iastore (Store into integer array) 0006E5 dup (Duplicate top stack word) 0006E6 iconst_3 (Push integer constant) 0006E7 iconst_1 (Push integer constant) 0006E8 iastore (Store into integer array) 0006E9 dup (Duplicate top stack word) 0006EA iconst_4 (Push integer constant) 0006EB iconst_0 (Push integer constant) 0006EC iastore (Store into integer array) 0006ED aastore (Store into object reference array) 0006EE aastore (Store into object reference array) 0006EF dup (Duplicate top stack word) 0006F0 bipush 09 (Push one-byte signed integer) 0006F2 bipush 07 (Push one-byte signed integer) 0006F4 anewarray 0004 (Allocate new array of references to objects) 0006F7 dup (Duplicate top stack word) 0006F8 iconst_0 (Push integer constant) 0006F9 iconst_5 (Push integer constant) 0006FA newarray 0A (Allocate new array) : array type = T_INT 0006FC dup (Duplicate top stack word) 0006FD iconst_0 (Push integer constant) 0006FE iconst_0 (Push integer constant) 0006FF iastore (Store into integer array) 000700 dup (Duplicate top stack word) 000701 iconst_1 (Push integer constant) 000702 iconst_1 (Push integer constant) 000703 iastore (Store into integer array) 000704 dup (Duplicate top stack word) 000705 iconst_2 (Push integer constant) 000706 iconst_1 (Push integer constant) 000707 iastore (Store into integer array) 000708 dup (Duplicate top stack word) 000709 iconst_3 (Push integer constant) 00070A iconst_1 (Push integer constant) 00070B iastore (Store into integer array) 00070C dup (Duplicate top stack word) 00070D iconst_4 (Push integer constant) 00070E iconst_0 (Push integer constant) 00070F iastore (Store into integer array) 000710 aastore (Store into object reference array) 000711 dup (Duplicate top stack word) 000712 iconst_1 (Push integer constant) 000713 iconst_5 (Push integer constant) 000714 newarray 0A (Allocate new array) : array type = T_INT 000716 dup (Duplicate top stack word) 000717 iconst_0 (Push integer constant) 000718 iconst_1 (Push integer constant) 000719 iastore (Store into integer array) 00071A dup (Duplicate top stack word) 00071B iconst_1 (Push integer constant) 00071C iconst_0 (Push integer constant) 00071D iastore (Store into integer array) 00071E dup (Duplicate top stack word) 00071F iconst_2 (Push integer constant) 000720 iconst_0 (Push integer constant) 000721 iastore (Store into integer array) 000722 dup (Duplicate top stack word) 000723 iconst_3 (Push integer constant) 000724 iconst_0 (Push integer constant) 000725 iastore (Store into integer array) 000726 dup (Duplicate top stack word) 000727 iconst_4 (Push integer constant) 000728 iconst_1 (Push integer constant) 000729 iastore (Store into integer array) 00072A aastore (Store into object reference array) 00072B dup (Duplicate top stack word) 00072C iconst_2 (Push integer constant) 00072D iconst_5 (Push integer constant) 00072E newarray 0A (Allocate new array) : array type = T_INT 000730 dup (Duplicate top stack word) 000731 iconst_0 (Push integer constant) 000732 iconst_1 (Push integer constant) 000733 iastore (Store into integer array) 000734 dup (Duplicate top stack word) 000735 iconst_1 (Push integer constant) 000736 iconst_0 (Push integer constant) 000737 iastore (Store into integer array) 000738 dup (Duplicate top stack word) 000739 iconst_2 (Push integer constant) 00073A iconst_0 (Push integer constant) 00073B iastore (Store into integer array) 00073C dup (Duplicate top stack word) 00073D iconst_3 (Push integer constant) 00073E iconst_0 (Push integer constant) 00073F iastore (Store into integer array) 000740 dup (Duplicate top stack word) 000741 iconst_4 (Push integer constant) 000742 iconst_1 (Push integer constant) 000743 iastore (Store into integer array) 000744 aastore (Store into object reference array) 000745 dup (Duplicate top stack word) 000746 iconst_3 (Push integer constant) 000747 iconst_5 (Push integer constant) 000748 newarray 0A (Allocate new array) : array type = T_INT 00074A dup (Duplicate top stack word) 00074B iconst_0 (Push integer constant) 00074C iconst_0 (Push integer constant) 00074D iastore (Store into integer array) 00074E dup (Duplicate top stack word) 00074F iconst_1 (Push integer constant) 000750 iconst_1 (Push integer constant) 000751 iastore (Store into integer array) 000752 dup (Duplicate top stack word) 000753 iconst_2 (Push integer constant) 000754 iconst_1 (Push integer constant) 000755 iastore (Store into integer array) 000756 dup (Duplicate top stack word) 000757 iconst_3 (Push integer constant) 000758 iconst_1 (Push integer constant) 000759 iastore (Store into integer array) 00075A dup (Duplicate top stack word) 00075B iconst_4 (Push integer constant) 00075C iconst_1 (Push integer constant) 00075D iastore (Store into integer array) 00075E aastore (Store into object reference array) 00075F dup (Duplicate top stack word) 000760 iconst_4 (Push integer constant) 000761 iconst_5 (Push integer constant) 000762 newarray 0A (Allocate new array) : array type = T_INT 000764 dup (Duplicate top stack word) 000765 iconst_0 (Push integer constant) 000766 iconst_0 (Push integer constant) 000767 iastore (Store into integer array) 000768 dup (Duplicate top stack word) 000769 iconst_1 (Push integer constant) 00076A iconst_0 (Push integer constant) 00076B iastore (Store into integer array) 00076C dup (Duplicate top stack word) 00076D iconst_2 (Push integer constant) 00076E iconst_0 (Push integer constant) 00076F iastore (Store into integer array) 000770 dup (Duplicate top stack word) 000771 iconst_3 (Push integer constant) 000772 iconst_0 (Push integer constant) 000773 iastore (Store into integer array) 000774 dup (Duplicate top stack word) 000775 iconst_4 (Push integer constant) 000776 iconst_1 (Push integer constant) 000777 iastore (Store into integer array) 000778 aastore (Store into object reference array) 000779 dup (Duplicate top stack word) 00077A iconst_5 (Push integer constant) 00077B iconst_5 (Push integer constant) 00077C newarray 0A (Allocate new array) : array type = T_INT 00077E dup (Duplicate top stack word) 00077F iconst_0 (Push integer constant) 000780 iconst_1 (Push integer constant) 000781 iastore (Store into integer array) 000782 dup (Duplicate top stack word) 000783 iconst_1 (Push integer constant) 000784 iconst_0 (Push integer constant) 000785 iastore (Store into integer array) 000786 dup (Duplicate top stack word) 000787 iconst_2 (Push integer constant) 000788 iconst_0 (Push integer constant) 000789 iastore (Store into integer array) 00078A dup (Duplicate top stack word) 00078B iconst_3 (Push integer constant) 00078C iconst_0 (Push integer constant) 00078D iastore (Store into integer array) 00078E dup (Duplicate top stack word) 00078F iconst_4 (Push integer constant) 000790 iconst_1 (Push integer constant) 000791 iastore (Store into integer array) 000792 aastore (Store into object reference array) 000793 dup (Duplicate top stack word) 000794 bipush 06 (Push one-byte signed integer) 000796 iconst_5 (Push integer constant) 000797 newarray 0A (Allocate new array) : array type = T_INT 000799 dup (Duplicate top stack word) 00079A iconst_0 (Push integer constant) 00079B iconst_0 (Push integer constant) 00079C iastore (Store into integer array) 00079D dup (Duplicate top stack word) 00079E iconst_1 (Push integer constant) 00079F iconst_1 (Push integer constant) 0007A0 iastore (Store into integer array) 0007A1 dup (Duplicate top stack word) 0007A2 iconst_2 (Push integer constant) 0007A3 iconst_1 (Push integer constant) 0007A4 iastore (Store into integer array) 0007A5 dup (Duplicate top stack word) 0007A6 iconst_3 (Push integer constant) 0007A7 iconst_1 (Push integer constant) 0007A8 iastore (Store into integer array) 0007A9 dup (Duplicate top stack word) 0007AA iconst_4 (Push integer constant) 0007AB iconst_0 (Push integer constant) 0007AC iastore (Store into integer array) 0007AD aastore (Store into object reference array) 0007AE aastore (Store into object reference array) 0007AF putfield 002E (Set field in object) 0007B2 return (Return (void) from procedure) exception_table_length = 0 attributes_count = 1 000013C9 type = LineNumberTable , attribute_length = 102 00 19 00 00 00 06 00 04 00 08 00 26 00 09 00 2F 00 0B 00 37 00 0C 00 F3 00 0B 00 F6 00 0D 01 B2 00 0B 01 B5 00 0E 02 71 00 0B 02 74 00 0F 03 30 00 0B 03 33 00 10 03 EF 00 0B 03 F2 00 11 04 AE 00 0B 04 B2 00 12 05 6E 00 0B 05 72 00 13 06 2E 00 0B 06 32 00 14 06 EE 00 0B 06 F2 00 15 07 AE 00 0B 07 B2 00 06 00001433 Attributes Count = 1 00001435 attribute[0] : type = SourceFile , length = 2 00 AF Source File Name = sample.java ..... (^_^) Java analyze completely finished. (^_^) ■■■SAMPLE.JAV■■■ import java.awt.*; import java.applet.*; import java.util.*; import java.net.*; public class sample sample Applet implements Runnable { int j=0, color_sel=1, xx=70, yy=25, sz=10, st=12, mode=1; Image i[] = new Image[15]; private Thread flow; int m[][][] = { { {0,1,1,1,0}, {1,0,0,0,1}, {1,0,0,0,1}, {1,0,0,0,1}, {1,0,0,0,1}, {1,0,0,0,1}, {0,1,1,1,0} }, // 0 { {0,0,1,0,0}, {0,1,1,0,0}, {0,0,1,0,0}, {0,0,1,0,0}, {0,0,1,0,0}, {0,0,1,0,0}, {0,1,1,1,0} }, // 1 { {0,1,1,1,0}, {1,0,0,0,1}, {1,0,0,0,1}, {0,0,0,1,0}, {0,0,1,0,0}, {0,1,0,0,0}, {1,1,1,1,1} }, // 2 { {0,1,1,1,0}, {1,0,0,0,1}, {0,0,0,0,1}, {0,0,1,1,0}, {0,0,0,0,1}, {1,0,0,0,1}, {0,1,1,1,0} }, // 3 { {0,0,0,1,0}, {0,0,1,1,0}, {0,1,0,1,0}, {1,0,0,1,0}, {1,1,1,1,1}, {0,0,0,1,0}, {0,0,0,1,0} }, // 4 { {1,1,1,1,1}, {1,0,0,0,0}, {1,0,0,0,0}, {1,1,1,1,0}, {0,0,0,0,1}, {1,0,0,0,1}, {0,1,1,1,0} }, // 5 { {0,1,1,1,0}, {1,0,0,0,1}, {1,0,0,0,0}, {1,1,1,1,0}, {1,0,0,0,1}, {1,0,0,0,1}, {0,1,1,1,0} }, // 6 { {1,1,1,1,1}, {1,0,0,0,1}, {0,0,0,0,1}, {0,0,0,1,0}, {0,0,1,0,0}, {0,1,0,0,0}, {1,0,0,0,0} }, // 7 { {0,1,1,1,0}, {1,0,0,0,1}, {1,0,0,0,1}, {0,1,1,1,0}, {1,0,0,0,1}, {1,0,0,0,1}, {0,1,1,1,0} }, // 8 { {0,1,1,1,0}, {1,0,0,0,1}, {1,0,0,0,1}, {0,1,1,1,1}, {0,0,0,0,1}, {1,0,0,0,1}, {0,1,1,1,0} }, // 9 }; public void init(){ URL docBase = getDocumentBase(); for(int n=1;n<=14;n++){ i[n] = getImage( docBase, "java/gif/b"+n+".gif"); } setBackground(Color.black); } public void start(){ flow = new Thread(this); flow.start(); } public void run() { try { while (true) { flow.sleep(1000); repaint(); } } catch (Exception e){ j++; }; } public void stop() { flow.stop(); } public void paint(Graphics g) { Dimension dd = size(); g.clearRect(0, 0, dd.width, dd.height); Date d = new Date(); int u1 = d.getHours(); int u2 = d.getMinutes(); int u3 = d.getSeconds(); clock_disp(g,u1,u2,u3); } void clock_disp(Graphics g, int u1, int u2, int u3){ int addx, addy, dat, datt, color_buf=1; addy = yy; if(mode != 0){ color_buf = color_sel; sz += 3; st += 2; xx -= 40; yy -= 5; } addx = xx + st * 28; dat = u3 / 10; char_disp(g,addx,addy,dat); addx = xx + st * 34; datt = u3 % 10; char_disp(g,addx,addy,datt); addx = xx + st * 14; dat = u2 / 10; char_disp(g,addx,addy,dat); addx = xx + st * 20; dat = u2 % 10; char_disp(g,addx,addy,dat); addx = xx; dat = u1 / 10; char_disp(g,addx,addy,dat); addx = xx + st * 6; dat = u1 % 10; char_disp(g,addx,addy,dat); addx = xx + st * 12; char_dot(g,addx,addy); addx = xx + st * 26; char_dot(g,addx,addy); if(mode != 0){ color_sel = color_buf; sz -= 3; st -= 2; xx += 40; yy += 5; } if(datt ==9){ color_sel++; if(color_sel>14) color_sel=1; } if(Math.random() > 0.93) mode=1; else mode=0; } void char_dot(Graphics g, int addx, int addy){ dot_draw(g, addx, addy + (int)((double)st * 1.5)); dot_draw(g, addx, addy + (int)((double)st * 4.5)); } void dot_draw(Graphics g, int adx, int ady){ int color_res; if(mode == 0){ color_res = color_sel; } else{ color_res = 1 + ((int)(Math.random() * 999.0)) % 14; } g.drawImage(i[color_res], adx, ady, sz, sz, this); } void char_disp(Graphics g, int addx, int addy, int dat){ for( int i=0; i<5; i++){ for (int j=0; j<7; j++){ if( m[dat][j][i] ==1 ){ dot_draw(g, addx + st * i, addy + st * j); } } } } } ■■■SNAKE.SRC■■■ ;##### RAM Map ##### dseg org 0000h tx_fifo ds 256 tx_top ds 1 tx_end ds 1 status ds 2 counter ds 3 ;##### I/O Map ##### cseg sio_a equ 0018h pio_a equ 001ch pio_b equ 001eh ;##### MACRO ##### io_set macro @1,@2 ld a,@2 out (@1+1),a endm io_put macro @1,@2 ld a,@2 out (@1+0),a endm ;##### RESET ##### org 0000h ld sp,09fffh di jp main ;##### INT / NMI ##### org 0066h retn ;##### Main ##### main: ld hl,08000h ld a,090h _ram_clear_loop: ld (hl),0 inc hl cp h jr nc,_ram_clear_loop io_set pio_a,0cfh ; Mode 3 io_set pio_a,00001010b ; 0:Out / 1:In io_set pio_a,007h ; Interrupt Disable io_set pio_b,0cfh ; Mode 3 io_set pio_b,11111110b ; 0:Out / 1:In io_set pio_b,007h ; Interrupt Disable io_set sio_a,00011000b ; Channel Reset A io_set sio_a,00000100b ; Resister Point = 4 io_set sio_a,11000100b ; Mode io_set sio_a,00000001b ; Resister Point = 1 io_set sio_a,00000000b ; Interrupt Mode io_set sio_a,00000101b ; Resister Point = 5 io_set sio_a,01101000b ; Transmit Start io_put pio_b,1 call check ld (status+1),a loop: call sw_check call tx_data_check jr loop ;##### Subroutines ##### tx_data_check: ld a,(tx_end) ld b,a ld a,(tx_top) cp b ret z io_set sio_a,00000000b ; Resister Point = 0 in a,(sio_a+1) bit 2,a ret z ld hl,tx_fifo ld l,b ld a,(hl) out (sio_a),a ld a,b inc a ld (tx_end),a ret tx_data_set: ld hl,tx_fifo ld a,(tx_top) ld l,a inc a ld (tx_top),a ld (hl),b ret ;##### Sw Check ##### check: in a,(pio_a) and 00000010b cp 0 jr z,_check_zero ld a,1 ret _check_zero: xor a ret sw_check: call check ld (status+0),a ld b,a ld a,(status+1) cp b jp z,not_event new_event: ld a,b ld (status+1),a cp 1 jp z,new_on new_off: ld a,(counter+2) cp 0 jr z,_count_1 bit 6,a jr z,_2_5 ld c,1 jp midi_tx _2_5: bit 5,a jr z,_2_4 ld c,2 jp midi_tx _2_4: bit 4,a jr z,_2_3 ld c,3 jp midi_tx _2_3: bit 3,a jr z,_2_2 ld c,4 jp midi_tx _2_2: bit 2,a jr z,_2_1 ld c,5 jp midi_tx _2_1: bit 1,a jr z,_2_0 ld c,6 jp midi_tx _2_0: ld c,7 jp midi_tx _count_1: ld a,(counter+1) cp 0 jp z,_count_0 cp 120 jr c,_linear ld c,8 jp midi_tx _linear: xor 07fh ld c,a jp midi_tx _count_0: ld c,07fh midi_tx: ld b,0d6h call tx_data_set ld a,c ld b,a call tx_data_set ret new_on: xor a ld (counter+0),a ld (counter+1),a ld (counter+2),a ret not_event: ld a,(status+1) cp 0 ret z ld a,(counter+0) inc a ld (counter+0),a bit 7,a ret z xor a ld (counter+0),a ld a,(counter+1) inc a ld (counter+1),a bit 7,a ret z xor a ld (counter+1),a ld a,(counter+2) inc a ld (counter+2),a bit 7,a ret z ld a,01000000b ld (counter+2),a ret ■■■STARTUP.H■■■ ctc_0 equ 010h ctc_1 equ 011h ctc_2 equ 012h ctc_3 equ 013h sio_a equ 018h sio_b equ 01ah pio_a equ 01ch pio_b equ 01eh rx_fifo equ 08000h ; MIDI Receive tx_fifo equ 08800h ; MIDI Transmit lcd_fifo equ 09000h rx_top equ 09100h + 2 * 0 rx_end equ 09100h + 2 * 1 tx_top equ 09100h + 2 * 2 tx_end equ 09100h + 2 * 3 timer_flag equ 09100h + 2 * 4 lcd_top equ 09100h + 2 * 5 lcd_end equ 09100h + 2 * 6 lcd equ 09100h + 2 * 7 work equ 09200h ; universal use ram_top equ 09300h ; [C] constant org 0000h ld sp,9fffh di ld hl,08000h ld a,09fh __ram_clear__: ld (hl),0 inc hl cp h jr nc,__ram_clear__ im 2 call __main __st_loop__: di nop jr __st_loop__ org 0020h dw __midi__ __midi__: ex af,af' exx ld de,(rx_top) ld a,10000000b or d ld h,a ld l,e in a,(sio_a+0) ld (hl),a inc de res 3,d ld (rx_top),de exx ex af,af' ei reti org 0066h retn org 0070h dw _timer_ _timer_: ex af,af' ld a,1 ld (timer_flag),a ex af,af' ei reti ■■■SW.ASM■■■ ;##### I/O Map ##### pio_a equ 001ch ; ← 内蔵PIOのアドレス定義 pio_b equ 001eh ;##### RESET ##### org 0000h ; ← リセットするとここから始まる ld sp,09fffh ; ← スタックポインタをセット di ; ← 割り込みを禁止 jp main ; ← メインに飛ぶ ;##### NMI ##### org 0066h ; ← (NMIは来ないが一応入れておく) retn ;##### Main ##### main: ld a,0cfh ; Mode 3 out (pio_a+1),a ld a,00000000b ; 0:Out / 1:In out (pio_a+1),a ld a,0cfh ; Mode 3 out (pio_b+1),a ld a,11111111b ; 0:Out / 1:In out (pio_b+1),a loop: call sw_check ; ← スイッチ入力をLED表示 jr loop sw_check: in a,(pio_b) ; ← PBポートの状態を入力 out (pio_a),a ; ← PAポートから出力する ret ; (共に負論理なので反転が不要) end ■■■T1.BAT■■■ echo off echo ◆[T1.BAT]:XA80での実験を行います◆ >result timer >>result xa80 test,,,; >>result timer >>result ■■■T2.BAT■■■ echo off echo ◆[T2.BAT]:BASM80での実験を行います◆ >result timer >>result basm80 test -z -l -sI >>result blink test -p:0 -d:8000 -htest >>result timer >>result ■■■T3.BAT■■■ echo off echo ◆[T3.BAT]:自作ROMエミュレータに転送します◆ >result timer >>result copy test.hex transfer.hex >>result trans2 >>result timer >>result ■■■T4.BAT■■■ echo off echo ◆[T4.BAT]:KUROKU2に転送します◆ >result timer >>result rome Rtest.hex E0000,0fff >>result timer >>result ■■■TEST.ASM■■■ ;##### RAM Map ##### org 8000h ;← RAM領域に変数を定義 disp ds 1 sw ds 1 timer ds 2 counter ds 1 ;##### I/O Map ##### pio_a equ 001ch ;← 内蔵PIOのアドレス定義 pio_b equ 001eh ;##### RESET ##### org 0000h ;← リセットするとここから始まる ld sp,09fffh ;← スタックポインタをセット di ;← 割り込みを禁止 jp main ;← メインに飛ぶ ;##### INT / NMI ##### org 0066h retn ;##### Main ##### main: ld a,0cfh ; Mode 3 out (pio_a+1),a ld a,00000000b ; 0:Out / 1:In out (pio_a+1),a ld a,0cfh ; Mode 3 out (pio_b+1),a ld a,11100000b ; 0:Out / 1:In out (pio_b+1),a ld a,11111111b out (pio_b+0),a   ld a,11111000b ;← 3個のLEDにデータをセット out (pio_b+0),a ld a,11111111b out (pio_b+0),a xor a ld (counter),a loop: call wait_long ;← ソフトウェア・タイマ ld a,(counter) inc a ;← インクリメントしたデータを ld (counter),a call led_display ;← 3桁のLEDで表示 jr loop ;##### Subroutines ##### wait_long: ld a,50 ld (timer+0),a _w_loop_1: call sw_scan ;← ウエイト中にスイッチを見る ld a,(sw) cp 0 jr z,_pass xor a ld (counter),a ;← スイッチがONなら表示をクリア _pass: call wait_short ;← 足踏みルーチンを呼ぶ ld a,(timer+0) dec a ld (timer+0),a cp 0 jr nz,_w_loop_1 ret wait_short: ld a,10 ld (timer+1),a _w_loop_2: nop ;← NOPを5回、それを10回ループ nop nop nop nop ld a,(timer+1) dec a ld (timer+1),a cp 0 jr nz,_w_loop_2 ret sw_scan: in a,(pio_b) ;← ポートから入力 and 11100000b srl a srl a srl a srl a srl a xor 11111111b and 00000111b ld (sw),a ;← スイッチ状態を記憶する ret led_disp_0: ld a,(disp) ld c,a ld b,0 ld hl,table_0 ;← 7セグメントの配置テーブル add hl,bc ld a,(hl) out (pio_a),a ld a,11111110b out (pio_b+0),a ;← [1]の位のデータをラッチする ld a,11111111b out (pio_b+0),a ret led_disp_1: ld a,(disp) ld c,a ld b,0 ld hl,table_0 add hl,bc ld a,(hl) out (pio_a),a ld a,11111101b out (pio_b+0),a ;← [10]の位のデータをラッチする ld a,11111111b out (pio_b+0),a ret led_disp_2: ld a,(disp) ld c,a ld b,0 ld hl,table_0 add hl,bc ld a,(hl) out (pio_a),a ld a,11111011b out (pio_b+0),a ;← [100]の位のデータをラッチする ld a,11111111b out (pio_b+0),a ret table_0: db 11110101b,00000101b,11010011b,01010111b ; db 00100111b,01110110b,11110110b,01100101b ; db 11110111b,01110111b,00000000b led_display: ld a,(counter) ld c,a ld b,0 ld hl,table_1 ;← (data%10)を求めるテーブル add hl,bc ld a,(hl) ld (disp),a call led_disp_0 ;← 1の位を表示 ld a,(counter) ld c,a ld b,0 ld hl,table_2 ;← ((data/10)%10)を求めるテーブル add hl,bc ld a,(hl) ld (disp),a call led_disp_1 ;← 10の位を表示 ld a,(counter) ld c,a ld b,0 ld hl,table_3 ;← (data/100)を求めるテーブル add hl,bc ld a,(hl) ld (disp),a call led_disp_2 ;← 100の位を表示 ret table_1: db 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 ; 0 - 19 db 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 ; 20 - 39 db 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 ; 40 - 59 db 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 ; 60 - 79 db 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 ; 80 - 99 db 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 ; 100 - 119 db 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 ; 120 - 139 db 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 ; 140 - 159 db 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 ; 160 - 179 db 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 ; 180 - 199 db 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 ; 200 - 219 db 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 ; 220 - 239 db 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5 ; 240 - 255 table_2: db 10,10,10,10,10,10,10,10,10,10,1,1,1,1,1,1,1,1,1,1 ; 0 - 19 db 2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3 ; 20 - 39 db 4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5 ; 40 - 59 db 6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7 ; 60 - 79 db 8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9 ; 80 - 99 db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1 ; 100 - 119 db 2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3 ; 120 - 139 db 4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5,5,5,5,5 ; 140 - 159 db 6,6,6,6,6,6,6,6,6,6,7,7,7,7,7,7,7,7,7,7 ; 160 - 179 db 8,8,8,8,8,8,8,8,8,8,9,9,9,9,9,9,9,9,9,9 ; 180 - 199 db 0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1 ; 200 - 219 db 2,2,2,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3,3,3 ; 220 - 239 db 4,4,4,4,4,4,4,4,4,4,5,5,5,5,5,5 ; 240 - 255 table_3: db 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 db 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 db 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 db 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 db 10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10,10 db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; 100 - 119 db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; 120 - 139 db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; 140 - 159 db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; 160 - 179 db 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1 ; 180 - 199 db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ; 200 - 219 db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ; 220 - 239 db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 ; 240 - 255 end ■■■TEST.HEX■■■ :0700000031FF9FF3C368000C :20006600ED453ECFD31D3E00D31D3ECFD31F3EE0D31F3EFFD31E3EF8D31E3EFFD31EAF32AA :200086000480CD97003A04803C320480CD320118F13E32320280CDCF003A0180FE00280414 :2000A600AF320480CDB9003A02803D320280FE0020E4C93E0A320C8000000000003A038014 :2000C6003D320380FE0020F0C9DB1EE6E0CB3FCB3FCB3FCB3FCB3FEEFFE607320180C93AD0 :2000E60000804F0600212701097ED31C3EFED31E3EFFD31EC93A00804F0600212701097E63 :20010600D31C3EFDD31E3EFFD31EC93A00804F0600212701097ED31C3EFBD31E3EFFD31EA1 :20012600C9F505D3572776F665F777003A04804F0600216601097E320080CDE5003A048022 :200146004F0600216602097E320080CDFB003A04804F0600216603097E320080CD1101C93C :200166000001020304050607080900010203040506070809000102030405060708090001F1 :200186000203040506070809000102030405060708090001020304050607080900010203CD :2001A6000405060708090001020304050607080900010203040506070809000102030405A9 :2001C600060708090001020304050607080900010203040506070809000102030405060785 :2001E600080900010203040506070809000102030405060708090001020304050607080961 :20020600000102030405060708090001020304050607080900010203040506070809000150 :2002260002030405060708090001020304050607080900010203040506070809000102032C :20024600040506070809000102030405060708090001020304050607080900010203040508 :200266000A0A0A0A0A0A0A0A0A0A01010101010101010101020202020202020202020303F0 :200286000303030303030303040404040404040404040505050505050505050506060606CE :2002A600060606060606070707070707070707070808080808080808080809090909090948 :2002C6000909090900000000000000000000010101010101010101010202020202020202DA :2002E60002020303030303030303030304040404040404040404050505050505050505057C :200306000606060606060606060607070707070707070707080808080808080808080909F3 :2003260009090909090909090000000000000000000001010101010101010101020202025D :20034600020202020202030303030303030303030404040404040404040405050505050527 :200366000A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A37 :200386000A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A17 :2003A6000A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0A0AF7 :2003C6000A0A0A0A01010101010101010101010101010101010101010101010101010101D3 :2003E6000101010101010101010101010101010101010101010101010101010101010101D7 :200406000101010101010101010101010101010101010101010101010101010101010101B6 :2004260001010101010101010202020202020202020202020202020202020202020202027E :20044600020202020202020202020202020202020202020202020202020202020202020256 :00000001FF ■■■TEST.LST■■■ ;##### RAM Map ##### 8000 org 8000h 8000 disp ds 1 8001 sw ds 1 8002 timer ds 2 8004 counter ds 1 ;##### I/O Map ##### 001C pio_a equ 001ch 001E pio_b equ 001eh ;##### RESET ##### 0000 org 0000h 0000 31 FF 9F ld sp,09fffh 0003 F3 di 0004 C3 68 00 jp main ;##### INT / NMI ##### 0066 org 0066h 0066 ED 45 retn ;##### Main ##### 0068 main: 0068 3E CF ld a,0cfh ; Mode 3 006A D3 1D out (pio_a+1),a 006C 3E 00 ld a,00000000b ; 0:Out / 1:In 006E D3 1D out (pio_a+1),a 0070 3E CF ld a,0cfh ; Mode 3 0072 D3 1F out (pio_b+1),a 0074 3E E0 ld a,11100000b ; 0:Out / 1:In 0076 D3 1F out (pio_b+1),a 0078 3E FF ld a,11111111b 007A D3 1E out (pio_b+0),a 007C 3E F8 ld a,11111000b 007E D3 1E out (pio_b+0),a 0080 3E FF ld a,11111111b 0082 D3 1E out (pio_b+0),a 0084 AF xor a 0085 32 04 80 ld (counter),a 0088 loop: 0088 CD 97 00 call wait_long 008B 3A 04 80 ld a,(counter) 008E 3C inc a 008F 32 04 80 ld (counter),a 0092 CD 32 01 call led_display 0095 18 F1 jr loop ;##### Subroutines ##### 0097 wait_long: 0097 3E 32 ld a,50 0099 32 02 80 ld (timer+0),a 009C _w_loop_1: 009C CD CF 00 call sw_scan 009F 3A 01 80 ld a,(sw) 00A2 FE 00 cp 0 00A4 28 04 jr z,_pass 00A6 AF xor a 00A7 32 04 80 ld (counter),a 00AA _pass: 00AA CD B9 00 call wait_short 00AD 3A 02 80 ld a,(timer+0) 00B0 3D dec a 00B1 32 02 80 ld (timer+0),a 00B4 FE 00 cp 0 00B6 20 E4 jr nz,_w_loop_1 00B8 C9 ret 00B9 wait_short: 00B9 3E 0A ld a,10 00BB 32 03 80 ld (timer+1),a 00BE _w_loop_2: 00BE 00 nop 00BF 00 nop 00C0 00 nop 00C1 00 nop 00C2 00 nop 00C3 3A 03 80 ld a,(timer+1) 00C6 3D dec a 00C7 32 03 80 ld (timer+1),a 00CA FE 00 cp 0 00CC 20 F0 jr nz,_w_loop_2 00CE C9 ret 00CF sw_scan: 00CF DB 1E in a,(pio_b) 00D1 E6 E0 and 11100000b 00D3 CB 3F srl a 00D5 CB 3F srl a 00D7 CB 3F srl a 00D9 CB 3F srl a 00DB CB 3F srl a 00DD EE FF xor 11111111b 00DF E6 07 and 00000111b 00E1 32 01 80 ld (sw),a 00E4 C9 ret 00E5 led_disp_0: 00E5 3A 00 80 ld a,(disp) 00E8 4F ld c,a 00E9 06 00 ld b,0 00EB 21 27 01 ld hl,table_0 00EE 09 add hl,bc 00EF 7E ld a,(hl) 00F0 D3 1C out (pio_a),a 00F2 3E FE ld a,11111110b 00F4 D3 1E out (pio_b+0),a 00F6 3E FF ld a,11111111b 00F8 D3 1E out (pio_b+0),a 00FA C9 ret 00FB led_disp_1: 00FB 3A 00 80 ld a,(disp) 00FE 4F ld c,a 00FF 06 00 ld b,0 0101 21 27 01 ld hl,table_0 0104 09 add hl,bc 0105 7E ld a,(hl) 0106 D3 1C out (pio_a),a 0108 3E FD ld a,11111101b 010A D3 1E out (pio_b+0),a 010C 3E FF ld a,11111111b 010E D3 1E out (pio_b+0),a 0110 C9 ret 0111 led_disp_2: 0111 3A 00 80 ld a,(disp) 0114 4F ld c,a 0115 06 00 ld b,0 0117 21 27 01 ld hl,table_0 011A 09 add hl,bc 011B 7E ld a,(hl) 011C D3 1C out (pio_a),a 011E 3E FB ld a,11111011b 0120 D3 1E out (pio_b+0),a 0122 3E FF ld a,11111111b 0124 D3 1E out (pio_b+0),a 0126 C9 ret 0127 table_0: 0127 F5 05 D3 57 db 11110101b,00000101b,11010011b,01010111b 012B 27 76 F6 65 db 00100111b,01110110b,11110110b,01100101b 012F F7 77 00 db 11110111b,01110111b,00000000b 0132 led_display: 0132 3A 04 80 ld a,(counter) 0135 4F ld c,a 0136 06 00 ld b,0 0138 21 66 01 ld hl,table_1 013B 09 add hl,bc 013C 7E ld a,(hl) 013D 32 00 80 ld (disp),a 0140 CD E5 00 call led_disp_0 0143 3A 04 80 ld a,(counter) 0146 4F ld c,a 0147 06 00 ld b,0 0149 21 66 02 ld hl,table_2 014C 09 add hl,bc 014D 7E ld a,(hl) 014E 32 00 80 ld (disp),a 0151 CD FB 00 call led_disp_1 0154 3A 04 80 ld a,(counter) 0157 4F ld c,a 0158 06 00 ld b,0 015A 21 66 03 ld hl,table_3 015D 09 add hl,bc 015E 7E ld a,(hl) 015F 32 00 80 ld (disp),a 0162 CD 11 01 call led_disp_2 0165 C9 ret 0166 table_1: 0166 00 01 02 03 db 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 016A 04 05 06 07 016E 08 09 00 01 0172 02 03 04 05 0176 06 07 08 09 017A 00 01 02 03 db 0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9 017E 04 05 06 07 0182 08 09 00 01 0186 02 03 04 05 018A 06 07 08 09   (...中略...) 0456 02 02 02 02 db 2,2,2,2,2,2,2,2,2,2,2,2,2,2,2,2 045A 02 02 02 02 045E 02 02 02 02 0462 02 02 02 02 0466 end ■■■TEST.SYM■■■ 00AA _pass 009C _w_loop_1 00BE _w_loop_2 8004 counter 8000 disp 00E5 led_disp_0 00FB led_disp_1 0111 led_disp_2 0132 led_display 0088 loop 0068 main 001C pio_a 001E pio_b 8001 sw 00CF sw_scan 0127 table_0 0166 table_1 0266 table_2 0366 table_3 8002 timer 0097 wait_long 00B9 wait_short ■■■TEST0.C■■■ main(){ #asm nop #endasm } int sub_1(int a){ int c; c = a * 2; /* ← 呼び出し元から引き数をもらう */ return(c); /* ← リターンで値を返す */ } void sub_2(int b){ return; /* ← ただ戻るだけのリターン */ } ■■■TEST1.C■■■ main(){ int a,b; a = 1; b = sub_1(a); /* ← 引き数を与え、値を返させる */ sub_2(b); /* ← 引き数を与えてただ呼び出す */ } char a[10]; /* ← char型配列を広域変数として定義 */ int b[10]; /* ← int型配列も定義 */ ■■■TEST2.C■■■ main(){ char c1, c2[5]; /* ← char型変数定義 */ int d1, d2[5]; /* ← int型変数定義 */ c1 = 1; d1 = 1; c2[0] = 1; d2[0] = 1; } ■■■THRU.ASM■■■ ;##### RAM Map ##### org 8000h ; ← RAM領域に変数を定義 rx_fifo ds 2048 tx_fifo ds 2048 rx_top ds 2 rx_end ds 2 tx_top ds 2 tx_end ds 2 rsb ds 1 dcb ds 1 channel ds 1 keyno ds 1 ;##### I/O Map ##### sio_a equ 0018h sio_b equ 001ah ; ← 内蔵SIOのアドレス定義 ;##### RESET ##### org 0000h ; ← リセットするとここから始まる ld sp,09fffh ; ← スタックポインタをセット di ; ← 割り込みを禁止 jp main ; ← メインに飛ぶ ;##### INT / NMI ##### org 0020h ; ← MIDI受信割り込みルーチン dw _midi_ _midi_: ex af,af' exx ld de,(rx_top) ld a,10000000b or d ld h,a ld l,e in a,(sio_a+0) ; ← シリアルポートからデータ入力 ld (hl),a ; ← これを受信FIFOに積む inc de res 3,d ld (rx_top),de exx ex af,af' ei reti org 0066h retn ;##### Main ##### main: ld hl,08000h ld a,0a0h _ram_clear_loop: ld (hl),0 ; ← RAM領域をゼロクリア inc hl cp h jr nc,_ram_clear_loop ld a,00011000b ; Channel Reset B out (sio_b+1),a ld a,00000100b ; Resister Point = 4 out (sio_b+1),a ld a,11000100b ; Mode out (sio_b+1),a ld a,00000001b ; Resister Point = 1 out (sio_b+1),a ld a,00000000b ; Interrupt Mode out (sio_b+1),a ld a,00000010b ; Resister Point = 2 out (sio_b+1),a ld a,20h ; Vector Address out (sio_b+1),a ld a,00011000b ; Channel Reset A out (sio_a+1),a ld a,00000100b ; Resister Point = 4 out (sio_a+1),a ld a,11000100b ; Mode out (sio_a+1),a ld a,00000001b ; Resister Point = 1 out (sio_a+1),a ld a,00010000b ; Interrupt Mode out (sio_a+1),a ld a,00000101b ; Resister Point = 5 out (sio_a+1),a ld a,01101000b ; Transmit Start out (sio_a+1),a ld a,00000011b ; Resister Point = 3 out (sio_a+1),a ld a,11000001b ; Receive Start out (sio_a+1),a im 2 ei in a,(sio_a+0) ; dummy read im 2 ; 内部I/O割り込みモード ei ; 割り込み許可 loop: call tx_data_check call rx_data_check jr loop tx_data_check: ld de,(tx_end) ld hl,(tx_top) and a ; CY <-- 0 sbc hl,de ret z ; ← 新しい送信データがなければパス ld a,00000000b ; Resister Point = 0 out (sio_a+1),a in a,(sio_a+1) bit 2,a ret z ; ← 送信OKでなければパス ld a,10001000b or d ld h,a ld l,e ld a,(hl) ; 送信FIFOからデータを取り出して out (sio_a),a ; MIDIより送信する inc de res 3,d ld (tx_end),de ret tx_fifo_set: ld de,(tx_top) ld a,10001000b or d ld h,a ld l,e ld (hl),b ; [B]のデータを送信FIFOに積む inc de res 3,d ld (tx_top),de ret rx_data_check: ld de,(rx_end) ld hl,(rx_top) and a ; CY <-- 0 sbc hl,de ret z ; ← 受信FIFOが空ならパス ld a,10000000b or d ld h,a ld l,e ld b,(hl) inc de res 3,d ld (rx_end),de bit 7,b ; MSB=0 ならデータバイト jr z,running ; running ld a,b cp 0f8h ret nc cp 0f0h jr c,statusbyte xor a ld (rsb),a ; RSB = running status buffer ret statusbyte: ld a,b ; ステータスバイトは and 00001111b ld (channel),a ; チャンネルと ld a,b and 11110000b ld (rsb),a ; RSBに分離しておく xor a ld (dcb),a ; DCB = data count buffer ret running: ld a,(rsb) cp 0 ret z ; 無効ステータスの時のデータは無視 cp 0c0h jr z,_2byte cp 0d0h jr z,_2byte ; 2byte形式は[C*]と[D*]だけ ld a,(dcb) cp 0 jr nz,_3byte ; 3byte目なら処理に飛ぶ inc a ld (dcb),a ; 3byte形式の2byte目の場合はここ ld a,b ld (keyno),a ret _2byte: ld c,b ld a,(rsb) ld b,a ld a,(channel) or b call tx_fifo_set ; Status Byteを復元して送信FIFOに ld b,c call tx_fifo_set ; Data Byteを送信FIFOに積む ret _3byte: xor a ld (dcb),a ld c,b ld a,(rsb) ld b,a ld a,(channel) or b call tx_fifo_set ; Status Byteを復元して送信FIFOに ld a,(keyno) ld b,a call tx_fifo_set ; 2byte目のData Byteを送信FIFOに積む ld b,c call tx_fifo_set ; 3byte目のData Byteを送信FIFOに積む ret end ■■■TIMER.C■■■ #include time_t ltime; main(){ time(<ime); printf("\n\tTime = %ld (sec)\n",ltime); } ■■■TIMER1.ASM■■■ ;##### RAM Map ##### org 8000h ; ← RAM領域に変数を定義 led ds 1 ;##### I/O Map ##### pio_a equ 001ch ; ← 内蔵PIOのアドレス定義 ;##### RESET ##### org 0000h ; ← リセットするとここから始まる ld sp,09fffh ; ← スタックポインタをセット di ; ← 割り込みを禁止 jp main ; ← メインに飛ぶ ;##### NMI ##### org 0066h ; ← (NMIは来ないが一応入れておく) retn ;##### Main ##### main: ld a,0cfh ; Mode 3 out (pio_a+1),a ld a,00000000b ; 0:Out / 1:In out (pio_a+1),a xor a ld (led),a loop: call led_display ; ← ほぼ1秒たたないと帰ってこない jr loop led_display: ld a,(led) xor 11111111b ; ← LEDデータを反転して ld (led),a out (pio_a),a ; ← ポートから出力 call nop_1sec ; ← ここでほぼ1秒、ひたすら待つ ret nop_1sec: call nop_100msec ; [nop_100msec]を10回コールするので、 call nop_100msec ; およそ1secかかる call nop_100msec call nop_100msec ; (正確にはリターン等が余分にかかる) call nop_100msec call nop_100msec call nop_100msec call nop_100msec call nop_100msec call nop_100msec ret nop_100msec: call nop_10msec ; [nop_10msec]を10回コールするので、 call nop_10msec ; およそ100msecかかる call nop_10msec call nop_10msec ; (正確にはリターン等が余分にかかる) call nop_10msec call nop_10msec call nop_10msec call nop_10msec call nop_10msec call nop_10msec ret nop_10msec: call nop_1msec ; [nop_1msec]を10回コールするので、 call nop_1msec ; およそ10msecかかる call nop_1msec call nop_1msec ; (正確にはリターン等が余分にかかる) call nop_1msec call nop_1msec call nop_1msec call nop_1msec call nop_1msec call nop_1msec ret nop_1msec: call nop_100 ; [nop_100]を10回コールするので、 call nop_100 ; およそ1msecかかる call nop_100 call nop_100 ; (正確にはリターン等が余分にかかる) call nop_100 call nop_100 call nop_100 call nop_100 call nop_100 call nop_100 ret nop_100: db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; NOP = 1μsec db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; 100発で db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; およそ0.1msec ret end ■■■TIMER2.ASM■■■ ;##### RAM Map ##### org 8000h ; ← RAM領域に変数を定義 led ds 1 timer ds 1 ;##### I/O Map ##### ctc_0 equ 0010h ; ← タイマのアドレス定義 pio_a equ 001ch ; ← 内蔵PIOのアドレス定義 ;##### RESET ##### org 0000h ; ← リセットするとここから始まる ld sp,09fffh ; ← スタックポインタをセット di ; ← 割り込みを禁止 jp main ; ← メインに飛ぶ ;##### NMI ##### org 0066h ; ← (NMIは来ないが一応入れておく) retn ;##### TIMER ##### org 0070h dw _timer_ ; ← タイマ割り込み処理 _timer_: ex af,af' ; ← レジスタを待避 ld a,(timer) inc a ld (timer),a cp 100 ; 10msec * 100 = 1sec jr c,_timer_pass xor a ld (timer),a ld a,(led) xor 11111111b ; ← LEDデータを反転して ld (led),a out (pio_a),a ; ← ポートから出力 _timer_pass: ex af,af' ; ← レジスタを復旧 ei ; ← 次の割り込みを許可 reti ;##### Main ##### main: ld a,70h ; ← 割り込みアドレスの設定 out (ctc_0),a ld a,10100101b ; Timer Mode out (ctc_0),a ld a,157 ; about 10msec out (ctc_0),a ld a,0cfh ; Mode 3 out (pio_a+1),a ld a,00000000b ; 0:Out / 1:In out (pio_a+1),a xor a ld (led),a ld (timer),a im 2 ; 内部I/O割り込みモード ei ; 割り込み許可 loop: jr loop ; ← メインルーチンは何もない!! end ■■■TIMER3.ASM■■■ ;##### RAM Map ##### org 8000h ; ← RAM領域に変数を定義 led ds 1 timer ds 1 flag ds 1 ;##### I/O Map ##### ctc_0 equ 0010h ; ← タイマのアドレス定義 pio_a equ 001ch ; ← 内蔵PIOのアドレス定義 ;##### RESET ##### org 0000h ; ← リセットするとここから始まる ld sp,09fffh ; ← スタックポインタをセット di ; ← 割り込みを禁止 jp main ; ← メインに飛ぶ ;##### NMI ##### org 0066h ; ← (NMIは来ないが一応入れておく) retn ;##### TIMER ##### org 0070h dw _timer_ ; ← タイマ割り込み処理 _timer_: ex af,af' ld a,1 ld (flag),a ; ← フラグを立てるだけ!!! ex af,af' ei ; ← 次の割り込みを許可 reti ;##### Main ##### main: ld a,70h ; ← 割り込みアドレスの設定 out (ctc_0),a ld a,10100101b ; Timer Mode out (ctc_0),a ld a,157 ; about 10msec out (ctc_0),a ld a,0cfh ; Mode 3 out (pio_a+1),a ld a,00000000b ; 0:Out / 1:In out (pio_a+1),a xor a ld (led),a ld (timer),a ld (flag),a im 2 ; 内部I/O割り込みモード ei ; 割り込み許可 loop: call timer_check jr loop timer_check: ld a,(flag) cp 0 ret z ; ← 割り込みフラグOFFならスグ帰る xor a ld (flag),a ld a,(timer) inc a ld (timer),a cp 100 ; 10msec * 100 = 1sec ret c ; ← 1sec未満ならスグ帰る xor a ld (timer),a ld a,(led) xor 11111111b ; ← LEDデータを反転して ld (led),a out (pio_a),a ; ← ポートから出力 ret end ■■■TRANS.C■■■ #include #include #include main(){ int d; printf("\n\t########## [transfer.hex] --> ROM Emulator ##########\n"); system_init(); /* システムの初期設定 */ if(hex_file_send()==1){ /* ターゲットファイルをロード */ printf("\n\n\t !!! Target File Missing !!!\n"); exit(0); } system_start(); /* システムをスタート */ printf("\n\n\t########## Let's Start ([r]eset/[s]end) ##########\n"); while(1){ /* 無限ループ */ if(kbhit()!=0){ d=getch(); /* キー入力をチェック */ if(d==0x1b) break; else if(d=='r'){ /* [r]ならリセット */ system_init(); system_reset(); printf("\n\n\t !!! Reset !!!\n"); } else if(d=='s'){ /* [s]なら再ロード */ system_init(); hex_file_send(); system_start(); printf("\n\n\t !!! Re-Send !!!\n"); } } } } system_init(){ set_4bit(6,0x02); /* 010 */ /* Bus Disable */ } system_start(){ int i,j=0; set_4bit(6,0x06); /* 110 */ /* Bus Enable */ for(i=0;i<10000;i++) j++; set_4bit(6,0x07); /* 111 */ /* Go ! */ } system_reset(){ int i,j=0; set_4bit(6,0x06); /* 110 */ /* Reset ! */ for(i=0;i<30000;i++) j++; set_4bit(6,0x07); /* 111 */ /* Go ! */ } setting_1byte(unsigned int address, int data, int head){ set_address(address); set_data(data); set_4bit(6,0x00); /* 000 */ /* Write Pulse */ set_4bit(6,0x02); /* 010 */ /* Bus Disable */ if(head!=0){ printf("\n\t\tAddress = %04X , Data = %02X ",address,data); } else if(address%16==0) putchar('.'); return(0); } set_address(unsigned int address){ unsigned int add; add=address; set_4bit(2,add%16); /* アドレスA3-A0のセット */ add=add/16; set_4bit(3,add%16); /* A7-A4 */ add=add/16; set_4bit(4,add%16); /* A11-A8 */ add=add/16; set_4bit(5,add%16); /* A15-A12 */ } set_data(int data){ set_4bit(0,data%16); /* データD0-D3のセット */ set_4bit(1,data/16); /* D4-D7 */ } set_4bit(int add, int data){ outport(0x0040,16*add+data); /* 7ビットのデータをセットして */ outport(0x0046,0x0e); /* ラッチパルスを下げて */ outport(0x0046,0x0f); /* 上げる。このエッジで書き込み */ } conv(int a){ if(a<'9'+1) return(a-'0'); else return(a-'A'+10); } hex_file_send(){ /* インテルHEXファイルを読み込んでロードする */ FILE *fds; unsigned int address,head=0; int data,d,a,dd[10],i,count; if((fds=fopen("transfer.hex","rb"))==NULL) return(1); while(1){ d=fgetc(fds); if(d!=':') break; dd[0]=fgetc(fds); dd[1]=fgetc(fds); dd[2]=fgetc(fds); dd[3]=fgetc(fds); dd[4]=fgetc(fds); dd[5]=fgetc(fds); fgetc(fds); d=fgetc(fds); if(d=='1') break; a=dd[0]; count=16*conv(a); a=dd[1]; count=count+conv(a); a=dd[2]; address=4096*conv(a); a=dd[3]; address=address+256*conv(a); a=dd[4]; address=address+16*conv(a); a=dd[5]; address=address+conv(a); head=1; for(i=0;i main(){ int d; printf("\n\t########## [transfer.hex] --> ROM Emulator ##########\n"); system_init(); if(hex_file_send()==1){ printf("\n\n\t !!! Target File Missing !!!\n"); exit(0); } system_start(); printf("\n\n\t########## Let's Start ([r]eset/[s]end) ##########\n"); while(1){ d=csts(); if(d==0x1b) break; else if(d=='r'){ system_init(); system_reset(); printf("\n\n\t !!! Reset !!!\n"); } else if(d=='s'){ system_init(); hex_file_send(); system_start(); printf("\n\n\t !!! Re-Send !!!\n"); } } } system_init(){ set_4bit(6,0x02); /* 010 */ /* Bus Disable */ } system_start(){ long i,j=0; set_4bit(6,0x06); /* 110 */ /* Bus Enable */ for(i=0;i<100000;i++) j++; set_4bit(6,0x07); /* 111 */ /* Go ! */ } system_reset(){ long i,j=0; set_4bit(6,0x06); /* 110 */ /* Reset ! */ for(i=0;i<300000;i++) j++; set_4bit(6,0x07); /* 111 */ /* Go ! */ } setting_1byte(address,data) unsigned int address; int data; { set_address(address); set_data(data); set_4bit(6,0x00); /* 000 */ /* Write Pulse */ set_4bit(6,0x02); /* 010 */ /* Bus Disable */ putchar('.'); return(0); } set_address(address) unsigned int address; { unsigned int add; add=address; set_4bit(2,add%16); add=add/16; set_4bit(3,add%16); add=add/16; set_4bit(4,add%16); add=add/16; set_4bit(5,add%16); } set_data(data) int data; { set_4bit(0,data%16); set_4bit(1,data/16); } set_4bit(add,data) int add; int data; { _outb(16*add+data+128,0x378); _outb(16*add+data+0,0x378); _outb(16*add+data+128,0x378); } conv(a) int a; { if(a<'9'+1) return(a-'0'); else return(a-'A'+10); } hex_file_send(){ unsigned int address; int data,d,a,dd[10],i,count,fds; fds=fopen("transfer.hex","rb"); if(fds==NULL) return(1); while(1){ d=fgetc(fds); if(d!=':') break; dd[0]=fgetc(fds); dd[1]=fgetc(fds); dd[2]=fgetc(fds); dd[3]=fgetc(fds); dd[4]=fgetc(fds); dd[5]=fgetc(fds); fgetc(fds); d=fgetc(fds); if(d=='1') break; a=dd[0]; count=16*conv(a); a=dd[1]; count=count+conv(a); a=dd[2]; address=4096*conv(a); a=dd[3]; address=address+256*conv(a); a=dd[4]; address=address+16*conv(a); a=dd[5]; address=address+conv(a); for(i=0;i