; ------------------------------------------------- ; 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"