; ------------------------------------------------- ; 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 call delay1s ; 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 call delay1s call delay1s ; Print line 1 mov R1, msg_txt2 call cg_clr_puts call delay100ms ; Print line 3 mov R0, 0 mov R1, 3 call cg_set_addr mov R1, msg_txt3 call cg_clr_puts call delay1s 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: call delay1s ; 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 call delay100ms ; Print line 1 mov R1, msg_txt2 call cg_clr_puts call delay100ms ; Print line 1 mov R1, msg_txt2 call cg_clr_puts call delay100ms ; Print line 1 mov R1, msg_txt2 call cg_clr_puts call delay100ms ; Print line 1 mov R1, msg_txt2 call cg_clr_puts call delay100ms ; Print line 1 mov R1, msg_txt2 call cg_clr_puts call delay100ms ; Print line 1 mov R1, msg_txt2 call cg_clr_puts call delay100ms ; Print line 1 mov R1, msg_txt2 call cg_clr_puts call delay1s jmp loop ; ------------------------------------------------- include "../../../lib/jasm/delays.inc.jsm" include "../../../lib/jasm/cg.inc.jsm"