From 8d0db9c098cc0417aae3715bcf067c2800fff17b Mon Sep 17 00:00:00 2001 From: Jens Ahrensfeld Date: Sat, 3 Apr 2021 13:51:41 +0000 Subject: [PATCH] - added git-svn-id: http://moon:8086/svn/vhdl/trunk@1629 cc03376c-175c-47c8-b038-4cd826a8556b --- lib/CPUs/JCpu/asm/hallo_welt_uart.jsm | 72 ++++ lib/CPUs/JCpu/asm/hallo_welt_uart.tcl | 496 ++++++++++++++++++++++++++ lib/CPUs/JCpu/asm/xregs.inc.jsm | 41 +++ 3 files changed, 609 insertions(+) create mode 100644 lib/CPUs/JCpu/asm/hallo_welt_uart.jsm create mode 100644 lib/CPUs/JCpu/asm/hallo_welt_uart.tcl create mode 100644 lib/CPUs/JCpu/asm/xregs.inc.jsm diff --git a/lib/CPUs/JCpu/asm/hallo_welt_uart.jsm b/lib/CPUs/JCpu/asm/hallo_welt_uart.jsm new file mode 100644 index 0000000..3d81ce8 --- /dev/null +++ b/lib/CPUs/JCpu/asm/hallo_welt_uart.jsm @@ -0,0 +1,72 @@ +; ------------------------------------------------- +; Constants +; ------------------------------------------------- +; 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, (cpu_status) + call bin2hex + + call uart_putchar + mov R0, R1 + call uart_putchar + mov R1, crlf + call uart_puts + +loop: + ; Print line 0 + mov R1, msg_txt1 + call uart_puts + cin R0, (cpu_revision) + add R0, 0x30 + call uart_putchar + mov R1, crlf + call uart_puts + + ; Print line 1 + mov R1, msg_txt2 + call uart_puts + + ; Print line 3 + mov R1, msg_txt3 + call uart_puts + + 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 uart_putchar + jmp ct_loop +ex_ct: jmp fill_lp +ex_fill: jmp loop + +; ------------------------------------------------- +include "./xregs.inc.jsm" +include "../../../../tools/jcpu/lib/cregs.inc.jsm" +include "../../../../tools/jcpu/lib/utils.inc.jsm" +include "../../../../tools/jcpu/lib/uart.inc.jsm" +include "../../../../tools/jcpu/lib/delays.inc.jsm" + + diff --git a/lib/CPUs/JCpu/asm/hallo_welt_uart.tcl b/lib/CPUs/JCpu/asm/hallo_welt_uart.tcl new file mode 100644 index 0000000..b6059c5 --- /dev/null +++ b/lib/CPUs/JCpu/asm/hallo_welt_uart.tcl @@ -0,0 +1,496 @@ +# ---------------------------------------------------------------------- +# Project: JCPU, a portable 8-bit RISC CPU written in VHDL +# This file: The ROM file for upload to target over JTAG +# +# Copyright (C) 2007 J. Ahrensfeld +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# For questions and ideas, please contact the author at jens@jayfield.org +# +# --------------------------------------------------------------------- + +# --------------------------------------------------------------------- +# For Chipscope 9.1 +# --------------------------------------------------------------------- +# Source JTAG/TCL frame work +cd $env(CHIPSCOPE)\\bin\\nt +source csejtag.tcl + +namespace import ::chipscope::* + +# Platform USB Cable +set PLATFORM_USB_CABLE_ARGS [list "port=USB2" "frequency=6000000"] +# frequency="24000000 | 12000000 | 6000000 | 3000000 | 1500000 | 750000" + +# Create session +set handle [::chipscope::csejtag_session create 0] + +# Open JTAG and lock +set open_result [::chipscope::csejtag_target open $handle $CSEJTAG_TARGET_PLATFORMUSB 0 $PLATFORM_USB_CABLE_ARGS] +set lock_result [::chipscope::csejtag_target lock $handle 1000] + +set devlist [::chipscope::csejtag_tap autodetect_chain $handle $CSEJTAG_SCAN_DEFAULT] + +# Get Device ID +set devtype "Virtex-4SX" +set devid 2 +set irlength [::chipscope::csejtag_tap get_irlength $handle $devid] +set idcode [::chipscope::csejtag_tap get_device_idcode $handle $devid] + +set CSE_OP $CSEJTAG_SHIFT_READWRITE +set CSE_ES $CSEJTAG_RUN_TEST_IDLE + +# Write Program +# JASM_ROM_INSERT_HERE +# Assembled from hallo_welt_uart.jsm +# --------------------------------------------------------------- +# Shift the USER1 Instruction (b1111000010) into the Instruction Register of FPGA +# User 1 +set result [::chipscope::csejtag_tap shift_device_ir $handle $devid $CSE_OP $CSE_ES 0 $irlength "3C2"] + +# 0x000: JMP 0x002 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "00030002" + +# 0x001: RETI +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0013F000" + +# 0x002: XIN R00, (0x02) +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "00228020" + +# 0x003: CALL 0x027 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0033B027" + +# 0x004: CALL 0x037 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0043B037" + +# 0x005: MOV R00, R01 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "00502010" + +# 0x006: CALL 0x037 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0063B037" + +# 0x007: MOV R01, 0x00 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "00703001" + +# 0x008: CALL 0x02E +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0083B02E" + +# 0x009: MOV R01, 0x03 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "00903031" + +# 0x00A: CALL 0x02E +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "00A3B02E" + +# 0x00B: CIN R00, (0x00) +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "00B29000" + +# 0x00C: ADD R00, 0x30 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "00C11300" + +# 0x00D: CALL 0x037 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "00D3B037" + +# 0x00E: MOV R01, 0x00 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "00E03001" + +# 0x00F: CALL 0x02E +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "00F3B02E" + +# 0x010: MOV R01, 0x0D +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "010030D1" + +# 0x011: CALL 0x02E +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0113B02E" + +# 0x012: MOV R01, 0x16 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "01203161" + +# 0x013: CALL 0x02E +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0133B02E" + +# 0x014: MOV R15, 0xA0 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "01403A0F" + +# 0x015: TST R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0150F00F" + +# 0x016: JZ 0x020 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "01631020" + +# 0x017: DEC R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0171501F" + +# 0x018: MOV R01, 0x30 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "01803301" + +# 0x019: CMP R01, 0x3A +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0190F3A1" + +# 0x01A: JEQ 0x01F +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "01A3901F" + +# 0x01B: MOV R00, R01 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "01B02010" + +# 0x01C: INC R01 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "01C11011" + +# 0x01D: CALL 0x037 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "01D3B037" + +# 0x01E: JMP 0x019 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "01E30019" + +# 0x01F: JMP 0x015 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "01F30015" + +# 0x020: JMP 0x009 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "02030009" + +# 0x021: AND R00, 0x0F +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "021190F0" + +# 0x022: CMP R00, 0x0A +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0220F0A0" + +# 0x023: JLT 0x025 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "02335025" + +# 0x024: ADD R00, 0x07 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "02411070" + +# 0x025: ADD R00, 0x30 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "02511300" + +# 0x026: RET +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0263E000" + +# 0x027: PUSH R00 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0273C000" + +# 0x028: CALL 0x021 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0283B021" + +# 0x029: MOV R01, R00 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "02902001" + +# 0x02A: POP R00 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "02A3D000" + +# 0x02B: SWAP R00 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "02B2A000" + +# 0x02C: CALL 0x021 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "02C3B021" + +# 0x02D: RET +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "02D3E000" + +# 0x02E: PUSH R00 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "02E3C000" + +# 0x02F: MOVX R00, (R01) +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "02F04010" + +# 0x030: INC R01 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "03011011" + +# 0x031: TST R00 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0310F000" + +# 0x032: JZ 0x035 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "03231035" + +# 0x033: CALL 0x037 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0333B037" + +# 0x034: JMP 0x02F +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0343002F" + +# 0x035: POP R00 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0353D000" + +# 0x036: RET +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0363E000" + +# 0x037: JMP 0x038 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "03730038" + +# 0x038: PUSH R01 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0383C001" + +# 0x039: XIN R01, (0x06) +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "03928061" + +# 0x03A: AND R01, 0x02 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "03A19021" + +# 0x03B: JNZ 0x039 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "03B32039" + +# 0x03C: XOUT (0x02), R00 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "03C24020" + +# 0x03D: POP R01 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "03D3D001" + +# 0x03E: RET +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "03E3E000" + +# 0x03F: PUSH R01 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "03F3C001" + +# 0x040: XIN R01, (0x06) +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "04028061" + +# 0x041: AND R01, 0x10 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "04119101" + +# 0x042: JNZ 0x040 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "04232040" + +# 0x043: XIN R00, (0x02) +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "04328020" + +# 0x044: POP R01 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0443D001" + +# 0x045: RET +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0453E000" + +# 0x046: PUSH R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0463C00F" + +# 0x047: MOV R15, 0x0A +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "047030AF" + +# 0x048: CALL 0x04D +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0483B04D" + +# 0x049: DEC R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0491501F" + +# 0x04A: JNZ 0x048 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "04A32048" + +# 0x04B: POP R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "04B3D00F" + +# 0x04C: RET +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "04C3E000" + +# 0x04D: PUSH R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "04D3C00F" + +# 0x04E: MOV R15, 0x0A +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "04E030AF" + +# 0x04F: CALL 0x054 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "04F3B054" + +# 0x050: DEC R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0501501F" + +# 0x051: JNZ 0x04F +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0513204F" + +# 0x052: POP R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0523D00F" + +# 0x053: RET +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0533E000" + +# 0x054: PUSH R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0543C00F" + +# 0x055: MOV R15, 0x0A +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "055030AF" + +# 0x056: CALL 0x05B +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0563B05B" + +# 0x057: DEC R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0571501F" + +# 0x058: JNZ 0x056 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "05832056" + +# 0x059: POP R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0593D00F" + +# 0x05A: RET +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "05A3E000" + +# 0x05B: PUSH R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "05B3C00F" + +# 0x05C: MOV R15, 0x0A +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "05C030AF" + +# 0x05D: CALL 0x062 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "05D3B062" + +# 0x05E: DEC R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "05E1501F" + +# 0x05F: JNZ 0x05D +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "05F3205D" + +# 0x060: POP R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0603D00F" + +# 0x061: RET +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0613E000" + +# 0x062: PUSH R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0623C00F" + +# 0x063: MOV R15, 0x0A +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "063030AF" + +# 0x064: CALL 0x069 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0643B069" + +# 0x065: DEC R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0651501F" + +# 0x066: JNZ 0x064 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "06632064" + +# 0x067: POP R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0673D00F" + +# 0x068: RET +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0683E000" + +# 0x069: PUSH R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0693C00F" + +# 0x06A: MOV R15, 0x63 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "06A0363F" + +# 0x06B: NOP +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "06B00000" + +# 0x06C: NOP +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "06C00000" + +# 0x06D: NOP +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "06D00000" + +# 0x06E: DEC R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "06E1501F" + +# 0x06F: JNZ 0x06B +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "06F3206B" + +# 0x070: POP R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0703D00F" + +# 0x071: RET +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0713E000" + +# 0x072: PUSH R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0723C00F" + +# 0x073: MOV R15, 0x09 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0730309F" + +# 0x074: NOP +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "07400000" + +# 0x075: NOP +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "07500000" + +# 0x076: NOP +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "07600000" + +# 0x077: DEC R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0771501F" + +# 0x078: JNZ 0x074 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "07832074" + +# 0x079: POP R15 +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "0793D00F" + +# 0x07A: RET +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 32 "07A3E000" + +# Assembled from hallo_welt_uart.jsm +# --------------------------------------------------------------- +# Shift the USER2 Instruction (b1111000011) into the Instruction Register of FPGA +# User 2 +set result [::chipscope::csejtag_tap shift_device_ir $handle $devid $CSE_OP $CSE_ES 0 $irlength "3C3"] + +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "000D" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "010A" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "0200" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "034A" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "042D" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "0543" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "0650" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "0755" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "0820" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "0956" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "0A31" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "0B2E" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "0C00" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "0D52" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "0E65" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "0F61" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "1064" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "1179" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "122E" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "130D" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "140A" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "1500" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "164D" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "1769" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "186D" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "1969" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "1A20" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "1B69" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "1C73" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "1D74" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "1E20" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "1F65" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "2069" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "216E" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "2265" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "2320" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "246C" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "2569" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "2665" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "2762" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "2865" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "2920" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "2A4B" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "2B61" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "2C74" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "2D7A" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "2E65" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "2F20" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "3021" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "3121" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "3221" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "330D" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "340A" +::chipscope::csejtag_tap shift_device_dr $handle $devid $CSE_OP $CSE_ES 0 16 "3500" + +::chipscope::csejtag_target unlock $handle +::chipscope::csejtag_target close $handle +::chipscope::csejtag_session destroy $handle +exit diff --git a/lib/CPUs/JCpu/asm/xregs.inc.jsm b/lib/CPUs/JCpu/asm/xregs.inc.jsm new file mode 100644 index 0000000..f258191 --- /dev/null +++ b/lib/CPUs/JCpu/asm/xregs.inc.jsm @@ -0,0 +1,41 @@ +; External registers +btn_port: equ 0x00 ; RO +led_port: equ 0x01 ; R/W +uart_data: equ 0x02 ; R/W +lcd_port: equ 0x03 ; R/W +ctrl_reg: equ 0x04 ; R/W +CTRL_VGA_ENABLE: equ 0x04 +CTRL_TIMER_ENABLE: equ 0x02 +dip_port: equ 0x05 ; RO +uart_status: equ 0x06 ; RO +sdram_reg: equ 0x07 ; R/W +FIFO_CTRL_IS_CMD: equ 0x04 +FIFO_CTRL_IS_WRITE: equ 0x10 +FIFO_CTRL_IS_READ: equ 0x20 +FIFO_STAT_CMD_FULL: equ 0x01 +FIFO_STAT_CMD_EMPTY: equ 0x02 +FIFO_STAT_WRITE_DATA_FULL: equ 0x04 +FIFO_STAT_WRITE_DATA_EMPTY: equ 0x08 +FIFO_STAT_READ_DATA_FULL: equ 0x10 +FIFO_STAT_READ_DATA_EMPTY: equ 0x20 +sdram_addr: equ 0x08 ; R/W +sdram_addr0: equ 0x08 ; R/W +sdram_addr1: equ 0x09 ; R/W +sdram_addr2: equ 0x0A ; R/W +reg_cg_char_addr: equ 0x0B ; RW +reg_cg_line_addr: equ 0x0C ; RW +reg_cg_data: equ 0x0D ; RW +reg_cg_ctrl: equ 0x0E ; WO +reg_hwstat: equ 0x0E ; RO +reg_color_red: equ 0x10 ; RW +reg_color_grn: equ 0x11 ; RW +reg_color_blu: equ 0x12 ; RW +uart_baudrate: equ 0x13 ; R/W +vga_read_addr: equ 0x14 ; R/W +vga_read_addr0: equ 0x14 ; R/W +vga_read_addr1: equ 0x15 ; R/W +vga_read_addr2: equ 0x16 ; R/W +timer_reload: equ 0x17 ; R/W +timer_reload0: equ 0x17 ; R/W +timer_reload1: equ 0x18 ; R/W +timer_reload2: equ 0x19 ; R/W