- added docs git-svn-id: http://moon:8086/svn/vhdl/trunk@1575 cc03376c-175c-47c8-b038-4cd826a8556b
213 lines
3.8 KiB
JavaScript
213 lines
3.8 KiB
JavaScript
; -------------------------------------------------
|
|
; Constants
|
|
; -------------------------------------------------
|
|
|
|
; C-register
|
|
cpu_revision: equ 0x00 ; RO
|
|
cpu_control: equ 0x01 ; R/W
|
|
cpu_status: equ 0x02 ; RO
|
|
cpu_int_ctrl: equ 0x03 ; R/W
|
|
|
|
; X-registers
|
|
reg_btn: equ 0x00 ; RO
|
|
reg_led: equ 0x01 ; RW
|
|
reg_dip: equ 0x05 ; RO
|
|
reg_hwstat: equ 0x0B ; RO
|
|
|
|
reg_cred: equ 0x02 ; RW
|
|
reg_cgrn: equ 0x03 ; RW
|
|
reg_cblu: equ 0x04 ; RW
|
|
reg_cg_char_addr: equ 0x08 ; RW
|
|
reg_cg_line_addr: equ 0x09 ; RW
|
|
reg_cg_data: equ 0x0A ; RW
|
|
reg_cg_ctrl: equ 0x0B ; WO
|
|
|
|
; External RAM/ROM
|
|
xmem
|
|
crlf: dc 13, 10, 0
|
|
msg_txt1: dc "J-CPU V1.", 0
|
|
msg_txt2: dc "Ready.", 13, 10, 0
|
|
msg_txt3: dc "Mimi ist eine liebe Katze !!!", 13, 10, 0
|
|
|
|
; -------------------------------------------------
|
|
; Program
|
|
; -------------------------------------------------
|
|
code
|
|
reset: jmp init
|
|
|
|
org 0x001
|
|
; nop
|
|
reti
|
|
|
|
; -------------------------------------------------
|
|
; Main
|
|
; -------------------------------------------------
|
|
init: xin R0, (reg_hwstat)
|
|
xout (reg_led), R0
|
|
and R0, 0x01
|
|
jz init
|
|
|
|
xin R0, (reg_hwstat)
|
|
xout (reg_led), R0
|
|
|
|
loop: call cg_wait_rdy
|
|
call cg_clr_screen
|
|
|
|
mov R0, 0
|
|
mov R1, 0
|
|
call cg_set_addr
|
|
|
|
; Delay 1s
|
|
mov R0, 0xE8
|
|
mov R1, 0x03
|
|
call delay_ms
|
|
|
|
; Print line 0
|
|
mov R1, msg_txt1
|
|
call cg_clr_puts
|
|
cin R0, (cpu_revision)
|
|
add R0, 0x30
|
|
call cg_putchar
|
|
mov R1, crlf
|
|
call cg_puts
|
|
|
|
; Delay 2s
|
|
mov R0, 0xD0
|
|
mov R1, 0x07
|
|
call delay_ms
|
|
|
|
; Print line 1
|
|
mov R1, msg_txt2
|
|
call cg_clr_puts
|
|
|
|
; Delay 0.1s
|
|
mov R0, 0x64
|
|
mov R1, 0x00
|
|
call delay_ms
|
|
|
|
; Print line 3
|
|
mov R0, 0
|
|
mov R1, 3
|
|
call cg_set_addr
|
|
|
|
mov R1, msg_txt3
|
|
call cg_clr_puts
|
|
|
|
; Delay 1s
|
|
mov R0, 0xE8
|
|
mov R1, 0x03
|
|
call delay_ms
|
|
|
|
mov R0, 0
|
|
mov R1, 10
|
|
call cg_set_addr
|
|
|
|
mov R15, 160
|
|
fill_lp: tst R15
|
|
jz ex_fill
|
|
dec R15
|
|
mov R1, 48
|
|
ct_loop: cmp R1, 58
|
|
jeq ex_ct
|
|
mov R0, R1
|
|
inc R1
|
|
call cg_putchar
|
|
jmp ct_loop
|
|
ex_ct: jmp fill_lp
|
|
ex_fill:
|
|
; Delay 1s
|
|
mov R0, 0xE8
|
|
mov R1, 0x03
|
|
call delay_ms
|
|
|
|
; Clear line at (R1)
|
|
mov R0, 0
|
|
mov R1, 12
|
|
call cg_set_addr
|
|
call cg_clr_line
|
|
|
|
mov R0, 0
|
|
mov R1, 30
|
|
call cg_set_addr
|
|
|
|
; Print line 1
|
|
mov R1, msg_txt2
|
|
call cg_clr_puts
|
|
|
|
; Delay 0.1s
|
|
mov R0, 0x64
|
|
mov R1, 0x00
|
|
call delay_ms
|
|
|
|
; Print line 1
|
|
mov R1, msg_txt2
|
|
call cg_clr_puts
|
|
|
|
; Delay 0.1s
|
|
mov R0, 0x64
|
|
mov R1, 0x00
|
|
call delay_ms
|
|
|
|
; Print line 1
|
|
mov R1, msg_txt2
|
|
call cg_clr_puts
|
|
|
|
; Delay 0.1s
|
|
mov R0, 0x64
|
|
mov R1, 0x00
|
|
call delay_ms
|
|
|
|
; Print line 1
|
|
mov R1, msg_txt2
|
|
call cg_clr_puts
|
|
|
|
; Delay 0.1s
|
|
mov R0, 0x64
|
|
mov R1, 0x00
|
|
call delay_ms
|
|
|
|
; Print line 1
|
|
mov R1, msg_txt2
|
|
call cg_clr_puts
|
|
|
|
; Delay 0.1s
|
|
mov R0, 0x64
|
|
mov R1, 0x00
|
|
call delay_ms
|
|
|
|
; Print line 1
|
|
mov R1, msg_txt2
|
|
call cg_clr_puts
|
|
|
|
; Delay 0.1s
|
|
mov R0, 0x64
|
|
mov R1, 0x00
|
|
call delay_ms
|
|
|
|
; Print line 1
|
|
mov R1, msg_txt2
|
|
call cg_clr_puts
|
|
|
|
; Delay 0.1s
|
|
mov R0, 0x64
|
|
mov R1, 0x00
|
|
call delay_ms
|
|
|
|
; Print line 1
|
|
mov R1, msg_txt2
|
|
call cg_clr_puts
|
|
|
|
; Delay 1s
|
|
mov R0, 0xe8
|
|
mov R1, 0x03
|
|
call delay_ms
|
|
|
|
jmp loop
|
|
|
|
delay_ms: nop
|
|
ret
|
|
|
|
; -------------------------------------------------
|
|
include "../../../lib/jasm/delays.inc.jsm"
|
|
include "../../../lib/jasm/cg.inc.jsm"
|