Files
vhdl/projects/vga_ctrl/asm/main_sim.jsm
T
jens c34cdf77ac - added main_sim
- added docs

git-svn-id: http://moon:8086/svn/vhdl/trunk@1575 cc03376c-175c-47c8-b038-4cd826a8556b
2021-03-29 14:11:00 +00:00

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"