📄 a86_defines.v
字号:
// http://gforge.openchip.org/projects/a86
// defines.v
`ifdef a86_define_once
`else
`define a86_define_once
`define a86_d_romfetch #0
`define a86_d_ip_update #5
// Vendor Technology
`define a86_vendor_generic
//`define a86_vendor_xilinx
// a86 Bus
// Address width (16, 10, 8)
`define a86_io_awidth 16
// Data width (16, 8)
`define a86_io_dwidth 16
// how many devices on IO bus
`define a86_io_num_devices 3
// r/m constantns
`define rm_bx_si_disp 3'b000
`define rm_bx_di_disp 3'b001
`define rm_bp_si_disp 3'b010
`define rm_bp_di_disp 3'b011
`define rm_si_disp 3'b100
`define rm_di_disp 3'b101
`define rm_bp_disp 3'b110
`define rm_bx_disp 3'b111
// Processor Status Flags
`define psf_cf 4'b0000
`define psf_pf 4'b0010
`define psf_af 4'b0100
`define psf_zf 4'b0110
`define psf_sf 4'b0111
`define psf_tf 4'b1000
`define psf_if 4'b1001
`define psf_df 4'b1010
`define psf_of 4'b1011
// Condition Code select
`define cc_sel_zero 5'b00000
`define cc_sel_cx_zero 5'b10000
`define shift_op_rol 4'b0000
`define shift_op_ror 4'b0001
// ALU ops
`define alu_op_add 8'b00000000 // add, adc, inc
`define alu_op_sub 8'b00000010 // sub, sbc, dec
`define alu_op_and 8'b00000100 //
`define alu_op_or 8'b00000101 //
`define alu_op_xor 8'b00000110 //
`define alu_op_mul 8'b00001110 //
// IDecoder
`define a86_icode_width 192 // width of icode bus
// bit positions
`define icode_seg_override 1 // Segment override prefix is active
`define icode_rep_prefix 2
`define icode_lock_prefix 3
//`define a86_icode_ 4
`define icode_aluop_adsu 5 // ADD or SUB (ADC, SBB, INC, DEC)
`define icode_aluop_add 6 // ADD or INC
`define icode_aluop_incdec 7 // INC or DEC
`define icode_aluop_inc 8 //
`define icode_aluop_dec 9 //
//`define a86_icode_rm_start 8 // 7/m
//`define a86_icode_rm_size 3
`define a86_icode_mode_start 11 // mode bits
`define a86_icode_mode_size 2
// write enables for register block
`define a86_icode_we_reg 13 // enable write to register ax,bx,cx,dx
`define a86_icode_we_sp 14 // write Stack pointer
`define a86_icode_we_bp 15
//`define a86_icode_wr_ip 16
`define a86_icode_we_index 17
`define a86_icode_we_segment 18
`define a86_icode_ip_wr 19 // direct write to IP
`define a86_icode_ip_inc 20 // Increment
`define a86_icode_jr 21 // relative jump
`define a86_icode_1_byte_instr 22 // one byte instruction
`define a86_icode_2_byte_instr 23 // two byte instruction
`define a86_icode_3_byte_instr 24 // 3 byte instruction
`define a86_icode_4_byte_instr 25 // 4 byte instruction
`define a86_icode_5_byte_instr 26 // 5 byte instruction
//
`define a86_icode_instr_size 27 // instruction size (3 bits)
`define a86_icode_inout 30 // in out 1110 x1xxx
`define a86_icode_in 31 //
`define a86_icode_out 32 //
//
`define a86_icode_alu_adsu 33 //
`define a86_icode_alu_adsu_add 34 //
`define a86_icode_incdec 35 //
`define a86_icode_alu_and 37 //
`define a86_icode_alu_or 38 //
`define a86_icode_alu_xor 39 //
`define a86_icode_alu_sela 40 //
`define a86_icode_alu_selb 41 //
//`define a86_icode_wr_ax_bx_cx_dx 43
`define a86_icode_sel_ax_bx_cx_dx 44
`define a86_icode_wr_ax 45
`define a86_icode_wr_bx 46
`define a86_icode_wr_cx 47
`define a86_icode_wr_dx 48
`define a86_icode_sel_ax 49
`define a86_icode_sel_bx 50
`define a86_icode_sel_cx 51
`define a86_icode_sel_dx 52
`define a86_icode_alub_immed 53
`define a86_icode_alub_immed_3b 54
`define a86_icode_dec_cx 55
`define a86_icode_sahf 56
`define a86_icode_iobus_we 61
`define a86_icode_iobus_ce 62
`define a86_icode_i_start 64
// aux field
`define a86_icode_i_aux_start 64+8+3
//`define icode_
`endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -